{"version":3,"file":"vim-webgl-component.mjs","sources":["../node_modules/react-dom/client.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/bytesToUuid.js","../node_modules/uuid/dist/esm-browser/v4.js","../node_modules/react-tooltip/dist/index.es.js","../node_modules/vim-webgl-viewer/dist/vim-webgl-viewer.mjs","../src/package/panels/icons.tsx","../src/package/settings/settings.ts","../src/package/helpers/utils.ts","../src/package/panels/axesPanel.tsx","../src/package/controlbar/controlBarButton.tsx","../src/package/controlbar/controlBarSection.tsx","../src/package/controlbar/pointerState.ts","../src/package/helpers/fullScreenObserver.ts","../src/package/controlbar/fullScreenState.ts","../src/package/controlbar/sectionBoxState.ts","../src/package/helpers/cursor.ts","../src/package/controlbar/measureState.tsx","../src/package/controlbar/controlBar.tsx","../src/package/controlbar/restOfScreen.tsx","../node_modules/react-complex-tree/lib/esm/types.js","../node_modules/react-complex-tree/lib/esm/controlledEnvironment/mergeInteractionManagers.js","../node_modules/react-complex-tree/lib/esm/isControlKey.js","../node_modules/react-complex-tree/lib/esm/interactionMode/DoubleClickItemToExpandInteractionManager.js","../node_modules/react-complex-tree/lib/esm/interactionMode/ClickItemToExpandInteractionManager.js","../node_modules/react-complex-tree/lib/esm/interactionMode/ClickArrowToExpandInteractionManager.js","../node_modules/react-complex-tree/lib/esm/controlledEnvironment/buildInteractionMode.js","../node_modules/react-complex-tree/lib/esm/controlledEnvironment/InteractionManagerProvider.js","../node_modules/react-complex-tree/lib/esm/controlledEnvironment/useGetParentOfLinearItem.js","../node_modules/react-complex-tree/lib/esm/controlledEnvironment/layoutUtils.js","../node_modules/react-complex-tree/lib/esm/useRefCopy.js","../node_modules/react-complex-tree/lib/esm/use-stable-handler.js","../node_modules/react-complex-tree/lib/esm/controlledEnvironment/useOnDragOverTreeHandler.js","../node_modules/react-complex-tree/lib/esm/controlledEnvironment/useCanDropAt.js","../node_modules/react-complex-tree/lib/esm/controlledEnvironment/useGetViableDragPositions.js","../node_modules/react-complex-tree/lib/esm/useSideEffect.js","../node_modules/react-complex-tree/lib/esm/utils.js","../node_modules/react-complex-tree/lib/esm/useCallSoon.js","../node_modules/react-complex-tree/lib/esm/controlledEnvironment/DragAndDropProvider.js","../node_modules/react-complex-tree/lib/esm/environmentActions/useCreatedEnvironmentRef.js","../node_modules/react-complex-tree/lib/esm/waitFor.js","../node_modules/react-complex-tree/lib/esm/environmentActions/EnvironmentActionsProvider.js","../node_modules/react-complex-tree/lib/esm/tree/scrollIntoView.js","../node_modules/react-complex-tree/lib/esm/renderers/createDefaultRenderers.js","../node_modules/react-complex-tree/lib/esm/renderers/useRenderers.js","../node_modules/react-complex-tree/lib/esm/tree/getItemsLinearly.js","../node_modules/react-complex-tree/lib/esm/controlledEnvironment/useControlledTreeEnvironmentProps.js","../node_modules/react-complex-tree/lib/esm/controlledEnvironment/ControlledTreeEnvironment.js","../node_modules/react-complex-tree/lib/esm/tree/useViewState.js","../node_modules/react-complex-tree/lib/esm/search/defaultMatcher.js","../node_modules/react-complex-tree/lib/esm/controlledEnvironment/useLinearItems.js","../node_modules/react-complex-tree/lib/esm/tree/useSelectUpTo.js","../node_modules/react-complex-tree/lib/esm/treeItem/useTreeItemRenderContext.js","../node_modules/react-complex-tree/lib/esm/useHtmlElementEventListener.js","../node_modules/react-complex-tree/lib/esm/hotkeys/defaultKeyboardBindings.js","../node_modules/react-complex-tree/lib/esm/hotkeys/useKeyboardBindings.js","../node_modules/react-complex-tree/lib/esm/hotkeys/useHotkey.js","../node_modules/react-complex-tree/lib/esm/treeItem/TreeItemRenamingInput.js","../node_modules/react-complex-tree/lib/esm/treeItem/TreeItem.js","../node_modules/react-complex-tree/lib/esm/treeItem/TreeItemChildren.js","../node_modules/react-complex-tree/lib/esm/tree/DragBetweenLine.js","../node_modules/react-complex-tree/lib/esm/tree/useFocusWithin.js","../node_modules/react-complex-tree/lib/esm/hotkeys/useKey.js","../node_modules/react-complex-tree/lib/esm/tree/useMoveFocusToIndex.js","../node_modules/react-complex-tree/lib/esm/tree/useTreeKeyboardBindings.js","../node_modules/react-complex-tree/lib/esm/search/useSearchMatchFocus.js","../node_modules/react-complex-tree/lib/esm/search/SearchInput.js","../node_modules/react-complex-tree/lib/esm/tree/defaultLiveDescriptors.js","../node_modules/react-complex-tree/lib/esm/tree/resolveLiveDescriptor.js","../node_modules/react-complex-tree/lib/esm/tree/LiveDescription.js","../node_modules/react-complex-tree/lib/esm/tree/MaybeLiveDescription.js","../node_modules/react-complex-tree/lib/esm/tree/TreeManager.js","../node_modules/react-complex-tree/lib/esm/tree/useCreatedTreeInformation.js","../node_modules/react-complex-tree/lib/esm/treeActions/useCreatedTreeRef.js","../node_modules/react-complex-tree/lib/esm/treeActions/TreeActionsProvider.js","../node_modules/react-complex-tree/lib/esm/tree/Tree.js","../node_modules/classnames/index.js","../node_modules/@firefox-devtools/react-contextmenu/es6/helpers.js","../node_modules/@firefox-devtools/react-contextmenu/es6/actions.js","../node_modules/@firefox-devtools/react-contextmenu/es6/globalEventListener.js","../node_modules/@firefox-devtools/react-contextmenu/es6/MenuItem.js","../node_modules/@firefox-devtools/react-contextmenu/es6/AbstractMenu.js","../node_modules/@firefox-devtools/react-contextmenu/es6/SubMenu.js","../node_modules/@firefox-devtools/react-contextmenu/es6/ContextMenu.js","../node_modules/@firefox-devtools/react-contextmenu/es6/ContextMenuTrigger.js","../node_modules/@firefox-devtools/react-contextmenu/es6/connectMenu.js","../src/package/helpers/data.ts","../src/package/panels/contextMenu.tsx","../src/package/bim/bimTree.tsx","../src/package/bim/bimSearch.tsx","../src/package/bim/bimTreeData.ts","../src/package/bim/openState.ts","../src/package/bim/bimInfoBody.tsx","../src/package/bim/bimInfoHeader.tsx","../src/package/bim/bimUtils.ts","../src/package/bim/bimInfoObject.ts","../src/package/bim/bimInfoVim.ts","../src/package/bim/bimInfoPanel.tsx","../src/package/bim/bimPanel.tsx","../node_modules/re-resizable/lib/resizer.js","../node_modules/re-resizable/lib/index.js","../src/package/sidePanel/sidePanel.tsx","../src/package/sidePanel/sideState.ts","../src/package/settings/menuSettings.tsx","../src/package/panels/toast.tsx","../src/package/panels/overlay.tsx","../node_modules/stats-js/build/stats.min.js","../src/package/panels/performance.ts","../src/package/helpers/inputs.ts","../node_modules/deepmerge/dist/cjs.js","../src/package/settings/settingsStorage.ts","../src/package/settings/settingsState.ts","../node_modules/ste-core/dist/dispatching/DispatcherWrapper.js","../node_modules/ste-core/dist/events/Subscription.js","../node_modules/ste-core/dist/management/EventManagement.js","../node_modules/ste-core/dist/dispatching/DispatcherBase.js","../node_modules/ste-core/dist/dispatching/DispatchError.js","../node_modules/ste-core/dist/dispatching/EventListBase.js","../node_modules/ste-core/dist/handling/HandlingBase.js","../node_modules/ste-core/dist/events/PromiseSubscription.js","../node_modules/ste-core/dist/dispatching/PromiseDispatcherBase.js","../node_modules/ste-core/dist/index.js","../node_modules/ste-simple-events/dist/SimpleEventDispatcher.js","../node_modules/ste-simple-events/dist/SimpleEventList.js","../node_modules/ste-simple-events/dist/SimpleEventHandlingBase.js","../node_modules/ste-simple-events/dist/NonUniformSimpleEventList.js","../node_modules/ste-simple-events/dist/index.js","../src/package/helpers/isolation.ts","../src/package/helpers/camera.ts","../src/package/container.tsx","../src/package/helpers/element.ts","../src/package/webgl/viewerState.ts","../src/package/assets/logo.png","../src/package/panels/logo.tsx","../src/package/bim/bimInfoData.ts","../src/package/helpers/deferredPromise.ts","../src/package/helpers/loadRequest.ts","../src/package/webgl/webglLoading.ts","../src/package/panels/messageBox.tsx","../src/package/panels/loadingBox.tsx","../src/package/assets/quick-controls.svg","../src/package/panels/help.tsx","../src/package/panels/modal.tsx","../src/package/webgl/webglComponent.tsx","../node_modules/vim-ultra-viewer/dist/vim-ultra-viewer.js","../src/package/errors/errorStyle.tsx","../src/urls.ts","../src/package/errors/fileOpeningError.tsx","../src/package/errors/errorUtils.ts","../src/package/errors/fileDownloadingError.tsx","../src/package/errors/fileLoadingError.tsx","../src/package/errors/serverConnectionError.tsx","../src/package/errors/serverCompatibilityError.tsx","../src/package/ultra/ultraErrors.ts","../src/package/ultra/ultraComponent.tsx"],"sourcesContent":["'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n  exports.createRoot = m.createRoot;\n  exports.hydrateRoot = m.hydrateRoot;\n} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  exports.createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n  exports.hydrateRoot = function(c, h, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.hydrateRoot(c, h, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n  var loggedTypeFailures = {};\n  var has = require('./lib/has');\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) { /**/ }\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n              'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pass an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          );\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n  if (process.env.NODE_ENV !== 'production') {\n    loggedTypeFailures = {};\n  }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bigint: createPrimitiveTypeChecker('bigint'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    elementType: createElementTypeTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message, data) {\n    this.message = message;\n    this.data = data && typeof data === 'object' ? data: {};\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== 'production') {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError(\n          'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n          {expectedType: expectedType}\n        );\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!ReactIs.isValidElementType(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (arguments.length > 1) {\n          printWarning(\n            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n          );\n        } else {\n          printWarning('Invalid argument supplied to oneOf, expected an array.');\n        }\n      }\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n        var type = getPreciseType(value);\n        if (type === 'symbol') {\n          return String(value);\n        }\n        return value;\n      });\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (has(propValue, key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var expectedTypes = [];\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n        if (checkerResult == null) {\n          return null;\n        }\n        if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n          expectedTypes.push(checkerResult.data.expectedType);\n        }\n      }\n      var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function invalidValidatorError(componentName, location, propFullName, key, type) {\n    return new PropTypeError(\n      (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n      'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n    );\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (has(shapeTypes, key) && typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // falsy value can't be a Symbol\n    if (!propValue) {\n      return false;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nexport default function rng() {\n  if (!getRandomValues) {\n    throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n  }\n\n  return getRandomValues(rnds8);\n}","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n  byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n  var i = offset || 0;\n  var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n  return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nexport default bytesToUuid;","import rng from './rng.js';\nimport bytesToUuid from './bytesToUuid.js';\n\nfunction v4(options, buf, offset) {\n  var i = buf && offset || 0;\n\n  if (typeof options == 'string') {\n    buf = options === 'binary' ? new Array(16) : null;\n    options = null;\n  }\n\n  options = options || {};\n  var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    for (var ii = 0; ii < 16; ++ii) {\n      buf[i + ii] = rnds[ii];\n    }\n  }\n\n  return buf || bytesToUuid(rnds);\n}\n\nexport default v4;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { v4 } from 'uuid';\n\nfunction ownKeys$2(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$2(Object(source), !0).forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\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 _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\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 _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n  return _assertThisInitialized(self);\n}\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n      result;\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n    return _possibleConstructorReturn(this, result);\n  };\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 _createForOfIteratorHelper(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n  if (!it) {\n    if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n      var F = function () {};\n      return {\n        s: F,\n        n: function () {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function (e) {\n          throw e;\n        },\n        f: F\n      };\n    }\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n  var normalCompletion = true,\n    didErr = false,\n    err;\n  return {\n    s: function () {\n      it = it.call(o);\n    },\n    n: function () {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function (e) {\n      didErr = true;\n      err = e;\n    },\n    f: function () {\n      try {\n        if (!normalCompletion && it.return != null) it.return();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global$a =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof commonjsGlobal == 'object' && commonjsGlobal) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n\nvar objectGetOwnPropertyDescriptor = {};\n\nvar fails$9 = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\nvar fails$8 = fails$9;\n\n// Detect IE8's incomplete defineProperty implementation\nvar descriptors = !fails$8(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\nvar fails$7 = fails$9;\n\nvar functionBindNative = !fails$7(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\nvar NATIVE_BIND$2 = functionBindNative;\n\nvar call$4 = Function.prototype.call;\n\nvar functionCall = NATIVE_BIND$2 ? call$4.bind(call$4) : function () {\n  return call$4.apply(call$4, arguments);\n};\n\nvar objectPropertyIsEnumerable = {};\n\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor$1 && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nobjectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor$1(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\nvar createPropertyDescriptor$2 = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\nvar NATIVE_BIND$1 = functionBindNative;\n\nvar FunctionPrototype$1 = Function.prototype;\nvar call$3 = FunctionPrototype$1.call;\nvar uncurryThisWithBind = NATIVE_BIND$1 && FunctionPrototype$1.bind.bind(call$3, call$3);\n\nvar functionUncurryThisRaw = function (fn) {\n  return NATIVE_BIND$1 ? uncurryThisWithBind(fn) : function () {\n    return call$3.apply(fn, arguments);\n  };\n};\n\nvar uncurryThisRaw$1 = functionUncurryThisRaw;\n\nvar toString$1 = uncurryThisRaw$1({}.toString);\nvar stringSlice = uncurryThisRaw$1(''.slice);\n\nvar classofRaw$2 = function (it) {\n  return stringSlice(toString$1(it), 8, -1);\n};\n\nvar classofRaw$1 = classofRaw$2;\nvar uncurryThisRaw = functionUncurryThisRaw;\n\nvar functionUncurryThis = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw$1(fn) === 'Function') return uncurryThisRaw(fn);\n};\n\nvar uncurryThis$9 = functionUncurryThis;\nvar fails$6 = fails$9;\nvar classof$3 = classofRaw$2;\n\nvar $Object$3 = Object;\nvar split = uncurryThis$9(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar indexedObject = fails$6(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object$3('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof$3(it) == 'String' ? split(it, '') : $Object$3(it);\n} : $Object$3;\n\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nvar isNullOrUndefined$2 = function (it) {\n  return it === null || it === undefined;\n};\n\nvar isNullOrUndefined$1 = isNullOrUndefined$2;\n\nvar $TypeError$5 = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nvar requireObjectCoercible$2 = function (it) {\n  if (isNullOrUndefined$1(it)) throw $TypeError$5(\"Can't call method on \" + it);\n  return it;\n};\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject$1 = indexedObject;\nvar requireObjectCoercible$1 = requireObjectCoercible$2;\n\nvar toIndexedObject$4 = function (it) {\n  return IndexedObject$1(requireObjectCoercible$1(it));\n};\n\nvar documentAll$2 = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar IS_HTMLDDA = typeof documentAll$2 == 'undefined' && documentAll$2 !== undefined;\n\nvar documentAll_1 = {\n  all: documentAll$2,\n  IS_HTMLDDA: IS_HTMLDDA\n};\n\nvar $documentAll$1 = documentAll_1;\n\nvar documentAll$1 = $documentAll$1.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nvar isCallable$c = $documentAll$1.IS_HTMLDDA ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll$1;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n\nvar isCallable$b = isCallable$c;\nvar $documentAll = documentAll_1;\n\nvar documentAll = $documentAll.all;\n\nvar isObject$6 = $documentAll.IS_HTMLDDA ? function (it) {\n  return typeof it == 'object' ? it !== null : isCallable$b(it) || it === documentAll;\n} : function (it) {\n  return typeof it == 'object' ? it !== null : isCallable$b(it);\n};\n\nvar global$9 = global$a;\nvar isCallable$a = isCallable$c;\n\nvar aFunction = function (argument) {\n  return isCallable$a(argument) ? argument : undefined;\n};\n\nvar getBuiltIn$5 = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global$9[namespace]) : global$9[namespace] && global$9[namespace][method];\n};\n\nvar uncurryThis$8 = functionUncurryThis;\n\nvar objectIsPrototypeOf = uncurryThis$8({}.isPrototypeOf);\n\nvar getBuiltIn$4 = getBuiltIn$5;\n\nvar engineUserAgent = getBuiltIn$4('navigator', 'userAgent') || '';\n\nvar global$8 = global$a;\nvar userAgent = engineUserAgent;\n\nvar process = global$8.process;\nvar Deno = global$8.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nvar engineV8Version = version;\n\n/* eslint-disable es/no-symbol -- required for testing */\n\nvar V8_VERSION = engineV8Version;\nvar fails$5 = fails$9;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nvar symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$5(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n/* eslint-disable es/no-symbol -- required for testing */\n\nvar NATIVE_SYMBOL$1 = symbolConstructorDetection;\n\nvar useSymbolAsUid = NATIVE_SYMBOL$1\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n\nvar getBuiltIn$3 = getBuiltIn$5;\nvar isCallable$9 = isCallable$c;\nvar isPrototypeOf = objectIsPrototypeOf;\nvar USE_SYMBOL_AS_UID$1 = useSymbolAsUid;\n\nvar $Object$2 = Object;\n\nvar isSymbol$2 = USE_SYMBOL_AS_UID$1 ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn$3('Symbol');\n  return isCallable$9($Symbol) && isPrototypeOf($Symbol.prototype, $Object$2(it));\n};\n\nvar $String$1 = String;\n\nvar tryToString$1 = function (argument) {\n  try {\n    return $String$1(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n\nvar isCallable$8 = isCallable$c;\nvar tryToString = tryToString$1;\n\nvar $TypeError$4 = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nvar aCallable$2 = function (argument) {\n  if (isCallable$8(argument)) return argument;\n  throw $TypeError$4(tryToString(argument) + ' is not a function');\n};\n\nvar aCallable$1 = aCallable$2;\nvar isNullOrUndefined = isNullOrUndefined$2;\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nvar getMethod$1 = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable$1(func);\n};\n\nvar call$2 = functionCall;\nvar isCallable$7 = isCallable$c;\nvar isObject$5 = isObject$6;\n\nvar $TypeError$3 = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nvar ordinaryToPrimitive$1 = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable$7(fn = input.toString) && !isObject$5(val = call$2(fn, input))) return val;\n  if (isCallable$7(fn = input.valueOf) && !isObject$5(val = call$2(fn, input))) return val;\n  if (pref !== 'string' && isCallable$7(fn = input.toString) && !isObject$5(val = call$2(fn, input))) return val;\n  throw $TypeError$3(\"Can't convert object to primitive value\");\n};\n\nvar shared$3 = {exports: {}};\n\nvar global$7 = global$a;\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty$2 = Object.defineProperty;\n\nvar defineGlobalProperty$3 = function (key, value) {\n  try {\n    defineProperty$2(global$7, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global$7[key] = value;\n  } return value;\n};\n\nvar global$6 = global$a;\nvar defineGlobalProperty$2 = defineGlobalProperty$3;\n\nvar SHARED = '__core-js_shared__';\nvar store$3 = global$6[SHARED] || defineGlobalProperty$2(SHARED, {});\n\nvar sharedStore = store$3;\n\nvar store$2 = sharedStore;\n\n(shared$3.exports = function (key, value) {\n  return store$2[key] || (store$2[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.25.5',\n  mode: 'global',\n  copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.25.5/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n\nvar requireObjectCoercible = requireObjectCoercible$2;\n\nvar $Object$1 = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nvar toObject$2 = function (argument) {\n  return $Object$1(requireObjectCoercible(argument));\n};\n\nvar uncurryThis$7 = functionUncurryThis;\nvar toObject$1 = toObject$2;\n\nvar hasOwnProperty = uncurryThis$7({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nvar hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject$1(it), key);\n};\n\nvar uncurryThis$6 = functionUncurryThis;\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis$6(1.0.toString);\n\nvar uid$2 = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\nvar global$5 = global$a;\nvar shared$2 = shared$3.exports;\nvar hasOwn$6 = hasOwnProperty_1;\nvar uid$1 = uid$2;\nvar NATIVE_SYMBOL = symbolConstructorDetection;\nvar USE_SYMBOL_AS_UID = useSymbolAsUid;\n\nvar WellKnownSymbolsStore = shared$2('wks');\nvar Symbol$1 = global$5.Symbol;\nvar symbolFor = Symbol$1 && Symbol$1['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$1;\n\nvar wellKnownSymbol$5 = function (name) {\n  if (!hasOwn$6(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    var description = 'Symbol.' + name;\n    if (NATIVE_SYMBOL && hasOwn$6(Symbol$1, name)) {\n      WellKnownSymbolsStore[name] = Symbol$1[name];\n    } else if (USE_SYMBOL_AS_UID && symbolFor) {\n      WellKnownSymbolsStore[name] = symbolFor(description);\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n\nvar call$1 = functionCall;\nvar isObject$4 = isObject$6;\nvar isSymbol$1 = isSymbol$2;\nvar getMethod = getMethod$1;\nvar ordinaryToPrimitive = ordinaryToPrimitive$1;\nvar wellKnownSymbol$4 = wellKnownSymbol$5;\n\nvar $TypeError$2 = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol$4('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nvar toPrimitive$1 = function (input, pref) {\n  if (!isObject$4(input) || isSymbol$1(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call$1(exoticToPrim, input, pref);\n    if (!isObject$4(result) || isSymbol$1(result)) return result;\n    throw $TypeError$2(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n\nvar toPrimitive = toPrimitive$1;\nvar isSymbol = isSymbol$2;\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nvar toPropertyKey$2 = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n\nvar global$4 = global$a;\nvar isObject$3 = isObject$6;\n\nvar document$1 = global$4.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS$1 = isObject$3(document$1) && isObject$3(document$1.createElement);\n\nvar documentCreateElement$1 = function (it) {\n  return EXISTS$1 ? document$1.createElement(it) : {};\n};\n\nvar DESCRIPTORS$7 = descriptors;\nvar fails$4 = fails$9;\nvar createElement = documentCreateElement$1;\n\n// Thanks to IE8 for its funny defineProperty\nvar ie8DomDefine = !DESCRIPTORS$7 && !fails$4(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n\nvar DESCRIPTORS$6 = descriptors;\nvar call = functionCall;\nvar propertyIsEnumerableModule = objectPropertyIsEnumerable;\nvar createPropertyDescriptor$1 = createPropertyDescriptor$2;\nvar toIndexedObject$3 = toIndexedObject$4;\nvar toPropertyKey$1 = toPropertyKey$2;\nvar hasOwn$5 = hasOwnProperty_1;\nvar IE8_DOM_DEFINE$1 = ie8DomDefine;\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nobjectGetOwnPropertyDescriptor.f = DESCRIPTORS$6 ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject$3(O);\n  P = toPropertyKey$1(P);\n  if (IE8_DOM_DEFINE$1) try {\n    return $getOwnPropertyDescriptor$1(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn$5(O, P)) return createPropertyDescriptor$1(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\nvar objectDefineProperty = {};\n\nvar DESCRIPTORS$5 = descriptors;\nvar fails$3 = fails$9;\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nvar v8PrototypeDefineBug = DESCRIPTORS$5 && fails$3(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype != 42;\n});\n\nvar isObject$2 = isObject$6;\n\nvar $String = String;\nvar $TypeError$1 = TypeError;\n\n// `Assert: Type(argument) is Object`\nvar anObject$4 = function (argument) {\n  if (isObject$2(argument)) return argument;\n  throw $TypeError$1($String(argument) + ' is not an object');\n};\n\nvar DESCRIPTORS$4 = descriptors;\nvar IE8_DOM_DEFINE = ie8DomDefine;\nvar V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug;\nvar anObject$3 = anObject$4;\nvar toPropertyKey = toPropertyKey$2;\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE$1 = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nobjectDefineProperty.f = DESCRIPTORS$4 ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O, P, Attributes) {\n  anObject$3(O);\n  P = toPropertyKey(P);\n  anObject$3(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject$3(O);\n  P = toPropertyKey(P);\n  anObject$3(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\nvar DESCRIPTORS$3 = descriptors;\nvar definePropertyModule$3 = objectDefineProperty;\nvar createPropertyDescriptor = createPropertyDescriptor$2;\n\nvar createNonEnumerableProperty$2 = DESCRIPTORS$3 ? function (object, key, value) {\n  return definePropertyModule$3.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\nvar makeBuiltIn$2 = {exports: {}};\n\nvar DESCRIPTORS$2 = descriptors;\nvar hasOwn$4 = hasOwnProperty_1;\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS$2 && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn$4(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS$2 || (DESCRIPTORS$2 && getDescriptor(FunctionPrototype, 'name').configurable));\n\nvar functionName = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n\nvar uncurryThis$5 = functionUncurryThis;\nvar isCallable$6 = isCallable$c;\nvar store$1 = sharedStore;\n\nvar functionToString = uncurryThis$5(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable$6(store$1.inspectSource)) {\n  store$1.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nvar inspectSource$2 = store$1.inspectSource;\n\nvar global$3 = global$a;\nvar isCallable$5 = isCallable$c;\n\nvar WeakMap$1 = global$3.WeakMap;\n\nvar weakMapBasicDetection = isCallable$5(WeakMap$1) && /native code/.test(String(WeakMap$1));\n\nvar shared$1 = shared$3.exports;\nvar uid = uid$2;\n\nvar keys = shared$1('keys');\n\nvar sharedKey$2 = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\nvar hiddenKeys$4 = {};\n\nvar NATIVE_WEAK_MAP = weakMapBasicDetection;\nvar global$2 = global$a;\nvar isObject$1 = isObject$6;\nvar createNonEnumerableProperty$1 = createNonEnumerableProperty$2;\nvar hasOwn$3 = hasOwnProperty_1;\nvar shared = sharedStore;\nvar sharedKey$1 = sharedKey$2;\nvar hiddenKeys$3 = hiddenKeys$4;\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError$1 = global$2.TypeError;\nvar WeakMap = global$2.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject$1(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError$1('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw TypeError$1(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey$1('state');\n  hiddenKeys$3[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn$3(it, STATE)) throw TypeError$1(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty$1(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn$3(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn$3(it, STATE);\n  };\n}\n\nvar internalState = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n\nvar fails$2 = fails$9;\nvar isCallable$4 = isCallable$c;\nvar hasOwn$2 = hasOwnProperty_1;\nvar DESCRIPTORS$1 = descriptors;\nvar CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE;\nvar inspectSource$1 = inspectSource$2;\nvar InternalStateModule = internalState;\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty$1 = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS$1 && !fails$2(function () {\n  return defineProperty$1(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn$1 = makeBuiltIn$2.exports = function (value, name, options) {\n  if (String(name).slice(0, 7) === 'Symbol(') {\n    name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn$2(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS$1) defineProperty$1(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn$2(options, 'arity') && value.length !== options.arity) {\n    defineProperty$1(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn$2(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS$1) defineProperty$1(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn$2(state, 'source')) {\n    state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn$1(function toString() {\n  return isCallable$4(this) && getInternalState(this).source || inspectSource$1(this);\n}, 'toString');\n\nvar isCallable$3 = isCallable$c;\nvar definePropertyModule$2 = objectDefineProperty;\nvar makeBuiltIn = makeBuiltIn$2.exports;\nvar defineGlobalProperty$1 = defineGlobalProperty$3;\n\nvar defineBuiltIn$1 = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable$3(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty$1(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule$2.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n\nvar objectGetOwnPropertyNames = {};\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nvar mathTrunc = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n\nvar trunc = mathTrunc;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nvar toIntegerOrInfinity$2 = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n\nvar toIntegerOrInfinity$1 = toIntegerOrInfinity$2;\n\nvar max = Math.max;\nvar min$1 = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nvar toAbsoluteIndex$1 = function (index, length) {\n  var integer = toIntegerOrInfinity$1(index);\n  return integer < 0 ? max(integer + length, 0) : min$1(integer, length);\n};\n\nvar toIntegerOrInfinity = toIntegerOrInfinity$2;\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nvar toLength$1 = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\nvar toLength = toLength$1;\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nvar lengthOfArrayLike$2 = function (obj) {\n  return toLength(obj.length);\n};\n\nvar toIndexedObject$2 = toIndexedObject$4;\nvar toAbsoluteIndex = toAbsoluteIndex$1;\nvar lengthOfArrayLike$1 = lengthOfArrayLike$2;\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod$1 = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject$2($this);\n    var length = lengthOfArrayLike$1(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nvar arrayIncludes = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod$1(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod$1(false)\n};\n\nvar uncurryThis$4 = functionUncurryThis;\nvar hasOwn$1 = hasOwnProperty_1;\nvar toIndexedObject$1 = toIndexedObject$4;\nvar indexOf = arrayIncludes.indexOf;\nvar hiddenKeys$2 = hiddenKeys$4;\n\nvar push$1 = uncurryThis$4([].push);\n\nvar objectKeysInternal = function (object, names) {\n  var O = toIndexedObject$1(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn$1(hiddenKeys$2, key) && hasOwn$1(O, key) && push$1(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn$1(O, key = names[i++])) {\n    ~indexOf(result, key) || push$1(result, key);\n  }\n  return result;\n};\n\n// IE8- don't enum bug keys\nvar enumBugKeys$3 = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n\nvar internalObjectKeys$1 = objectKeysInternal;\nvar enumBugKeys$2 = enumBugKeys$3;\n\nvar hiddenKeys$1 = enumBugKeys$2.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nobjectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys$1(O, hiddenKeys$1);\n};\n\nvar objectGetOwnPropertySymbols = {};\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nobjectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols;\n\nvar getBuiltIn$2 = getBuiltIn$5;\nvar uncurryThis$3 = functionUncurryThis;\nvar getOwnPropertyNamesModule = objectGetOwnPropertyNames;\nvar getOwnPropertySymbolsModule = objectGetOwnPropertySymbols;\nvar anObject$2 = anObject$4;\n\nvar concat = uncurryThis$3([].concat);\n\n// all object keys, includes non-enumerable and symbols\nvar ownKeys$1 = getBuiltIn$2('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject$2(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\nvar hasOwn = hasOwnProperty_1;\nvar ownKeys = ownKeys$1;\nvar getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor;\nvar definePropertyModule$1 = objectDefineProperty;\n\nvar copyConstructorProperties$1 = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule$1.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n\nvar fails$1 = fails$9;\nvar isCallable$2 = isCallable$c;\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced$1 = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : isCallable$2(detection) ? fails$1(detection)\n    : !!detection;\n};\n\nvar normalize = isForced$1.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced$1.data = {};\nvar NATIVE = isForced$1.NATIVE = 'N';\nvar POLYFILL = isForced$1.POLYFILL = 'P';\n\nvar isForced_1 = isForced$1;\n\nvar global$1 = global$a;\nvar getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;\nvar createNonEnumerableProperty = createNonEnumerableProperty$2;\nvar defineBuiltIn = defineBuiltIn$1;\nvar defineGlobalProperty = defineGlobalProperty$3;\nvar copyConstructorProperties = copyConstructorProperties$1;\nvar isForced = isForced_1;\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nvar _export = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global$1;\n  } else if (STATIC) {\n    target = global$1[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = (global$1[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n\nvar uncurryThis$2 = functionUncurryThis;\nvar aCallable = aCallable$2;\nvar NATIVE_BIND = functionBindNative;\n\nvar bind$1 = uncurryThis$2(uncurryThis$2.bind);\n\n// optional / simple context binding\nvar functionBindContext = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind$1(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\nvar classof$2 = classofRaw$2;\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nvar isArray$1 = Array.isArray || function isArray(argument) {\n  return classof$2(argument) == 'Array';\n};\n\nvar wellKnownSymbol$3 = wellKnownSymbol$5;\n\nvar TO_STRING_TAG$1 = wellKnownSymbol$3('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG$1] = 'z';\n\nvar toStringTagSupport = String(test) === '[object z]';\n\nvar TO_STRING_TAG_SUPPORT = toStringTagSupport;\nvar isCallable$1 = isCallable$c;\nvar classofRaw = classofRaw$2;\nvar wellKnownSymbol$2 = wellKnownSymbol$5;\n\nvar TO_STRING_TAG = wellKnownSymbol$2('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nvar classof$1 = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && isCallable$1(O.callee) ? 'Arguments' : result;\n};\n\nvar uncurryThis$1 = functionUncurryThis;\nvar fails = fails$9;\nvar isCallable = isCallable$c;\nvar classof = classof$1;\nvar getBuiltIn$1 = getBuiltIn$5;\nvar inspectSource = inspectSource$2;\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn$1('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis$1(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nvar isConstructor$1 = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\nvar isArray = isArray$1;\nvar isConstructor = isConstructor$1;\nvar isObject = isObject$6;\nvar wellKnownSymbol$1 = wellKnownSymbol$5;\n\nvar SPECIES = wellKnownSymbol$1('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nvar arraySpeciesConstructor$1 = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? $Array : C;\n};\n\nvar arraySpeciesConstructor = arraySpeciesConstructor$1;\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nvar arraySpeciesCreate$1 = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n\nvar bind = functionBindContext;\nvar uncurryThis = functionUncurryThis;\nvar IndexedObject = indexedObject;\nvar toObject = toObject$2;\nvar lengthOfArrayLike = lengthOfArrayLike$2;\nvar arraySpeciesCreate = arraySpeciesCreate$1;\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_REJECT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var length = lengthOfArrayLike(self);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nvar arrayIteration = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n\nvar objectDefineProperties = {};\n\nvar internalObjectKeys = objectKeysInternal;\nvar enumBugKeys$1 = enumBugKeys$3;\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nvar objectKeys$1 = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys$1);\n};\n\nvar DESCRIPTORS = descriptors;\nvar V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug;\nvar definePropertyModule = objectDefineProperty;\nvar anObject$1 = anObject$4;\nvar toIndexedObject = toIndexedObject$4;\nvar objectKeys = objectKeys$1;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nobjectDefineProperties.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject$1(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n\nvar getBuiltIn = getBuiltIn$5;\n\nvar html$1 = getBuiltIn('document', 'documentElement');\n\n/* global ActiveXObject -- old IE, WSH */\n\nvar anObject = anObject$4;\nvar definePropertiesModule = objectDefineProperties;\nvar enumBugKeys = enumBugKeys$3;\nvar hiddenKeys = hiddenKeys$4;\nvar html = html$1;\nvar documentCreateElement = documentCreateElement$1;\nvar sharedKey = sharedKey$2;\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nvar objectCreate = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\nvar wellKnownSymbol = wellKnownSymbol$5;\nvar create = objectCreate;\nvar defineProperty = objectDefineProperty.f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  defineProperty(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nvar addToUnscopables$1 = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\nvar $ = _export;\nvar $find = arrayIteration.find;\nvar addToUnscopables = addToUnscopables$1;\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n\nvar CONSTANT = {\n  GLOBAL: {\n    HIDE: '__react_tooltip_hide_event',\n    REBUILD: '__react_tooltip_rebuild_event',\n    SHOW: '__react_tooltip_show_event'\n  }\n};\n\n/**\n * Static methods for react-tooltip\n */\nvar dispatchGlobalEvent = function dispatchGlobalEvent(eventName, opts) {\n  // Compatible with IE\n  // @see http://stackoverflow.com/questions/26596123/internet-explorer-9-10-11-event-constructor-doesnt-work\n  // @see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n  var event;\n  if (typeof window.CustomEvent === 'function') {\n    event = new window.CustomEvent(eventName, {\n      detail: opts\n    });\n  } else {\n    event = document.createEvent('Event');\n    event.initEvent(eventName, false, true, opts);\n  }\n  window.dispatchEvent(event);\n};\nfunction staticMethods (target) {\n  /**\n   * Hide all tooltip\n   * @trigger ReactTooltip.hide()\n   */\n  target.hide = function (target) {\n    dispatchGlobalEvent(CONSTANT.GLOBAL.HIDE, {\n      target: target\n    });\n  };\n\n  /**\n   * Rebuild all tooltip\n   * @trigger ReactTooltip.rebuild()\n   */\n  target.rebuild = function () {\n    dispatchGlobalEvent(CONSTANT.GLOBAL.REBUILD);\n  };\n\n  /**\n   * Show specific tooltip\n   * @trigger ReactTooltip.show()\n   */\n  target.show = function (target) {\n    dispatchGlobalEvent(CONSTANT.GLOBAL.SHOW, {\n      target: target\n    });\n  };\n  target.prototype.globalRebuild = function () {\n    if (this.mount) {\n      this.unbindListener();\n      this.bindListener();\n    }\n  };\n  target.prototype.globalShow = function (event) {\n    if (this.mount) {\n      var hasTarget = event && event.detail && event.detail.target && true || false;\n      // Create a fake event, specific show will limit the type to `solid`\n      // only `float` type cares e.clientX e.clientY\n      this.showTooltip({\n        currentTarget: hasTarget && event.detail.target\n      }, true);\n    }\n  };\n  target.prototype.globalHide = function (event) {\n    if (this.mount) {\n      var hasTarget = event && event.detail && event.detail.target && true || false;\n      this.hideTooltip({\n        currentTarget: hasTarget && event.detail.target\n      }, hasTarget);\n    }\n  };\n}\n\n/**\n * Events that should be bound to the window\n */\nfunction windowListener (target) {\n  target.prototype.bindWindowEvents = function (resizeHide) {\n    // ReactTooltip.hide\n    window.removeEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide);\n    window.addEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide, false);\n\n    // ReactTooltip.rebuild\n    window.removeEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild);\n    window.addEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild, false);\n\n    // ReactTooltip.show\n    window.removeEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow);\n    window.addEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow, false);\n\n    // Resize\n    if (resizeHide) {\n      window.removeEventListener('resize', this.onWindowResize);\n      window.addEventListener('resize', this.onWindowResize, false);\n    }\n  };\n  target.prototype.unbindWindowEvents = function () {\n    window.removeEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide);\n    window.removeEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild);\n    window.removeEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow);\n    window.removeEventListener('resize', this.onWindowResize);\n  };\n\n  /**\n   * invoked by resize event of window\n   */\n  target.prototype.onWindowResize = function () {\n    if (!this.mount) return;\n    this.hideTooltip();\n  };\n}\n\n/**\n * Custom events to control showing and hiding of tooltip\n *\n * @attributes\n * - `event` {String}\n * - `eventOff` {String}\n */\n\nvar checkStatus = function checkStatus(dataEventOff, e) {\n  var show = this.state.show;\n  var id = this.props.id;\n  var isCapture = this.isCapture(e.currentTarget);\n  var currentItem = e.currentTarget.getAttribute('currentItem');\n  if (!isCapture) e.stopPropagation();\n  if (show && currentItem === 'true') {\n    if (!dataEventOff) this.hideTooltip(e);\n  } else {\n    e.currentTarget.setAttribute('currentItem', 'true');\n    setUntargetItems(e.currentTarget, this.getTargetArray(id));\n    this.showTooltip(e);\n  }\n};\nvar setUntargetItems = function setUntargetItems(currentTarget, targetArray) {\n  for (var i = 0; i < targetArray.length; i++) {\n    if (currentTarget !== targetArray[i]) {\n      targetArray[i].setAttribute('currentItem', 'false');\n    } else {\n      targetArray[i].setAttribute('currentItem', 'true');\n    }\n  }\n};\nvar customListeners = {\n  id: '9b69f92e-d3fe-498b-b1b4-c5e63a51b0cf',\n  set: function set(target, event, listener) {\n    if (this.id in target) {\n      var map = target[this.id];\n      map[event] = listener;\n    } else {\n      // this is workaround for WeakMap, which is not supported in older browsers, such as IE\n      Object.defineProperty(target, this.id, {\n        configurable: true,\n        value: _defineProperty({}, event, listener)\n      });\n    }\n  },\n  get: function get(target, event) {\n    var map = target[this.id];\n    if (map !== undefined) {\n      return map[event];\n    }\n  }\n};\nfunction customEvent (target) {\n  target.prototype.isCustomEvent = function (ele) {\n    var event = this.state.event;\n    return event || !!ele.getAttribute('data-event');\n  };\n\n  /* Bind listener for custom event */\n  target.prototype.customBindListener = function (ele) {\n    var _this = this;\n    var _this$state = this.state,\n      event = _this$state.event,\n      eventOff = _this$state.eventOff;\n    var dataEvent = ele.getAttribute('data-event') || event;\n    var dataEventOff = ele.getAttribute('data-event-off') || eventOff;\n    dataEvent.split(' ').forEach(function (event) {\n      ele.removeEventListener(event, customListeners.get(ele, event));\n      var customListener = checkStatus.bind(_this, dataEventOff);\n      customListeners.set(ele, event, customListener);\n      ele.addEventListener(event, customListener, false);\n    });\n    if (dataEventOff) {\n      dataEventOff.split(' ').forEach(function (event) {\n        ele.removeEventListener(event, _this.hideTooltip);\n        ele.addEventListener(event, _this.hideTooltip, false);\n      });\n    }\n  };\n\n  /* Unbind listener for custom event */\n  target.prototype.customUnbindListener = function (ele) {\n    var _this$state2 = this.state,\n      event = _this$state2.event,\n      eventOff = _this$state2.eventOff;\n    var dataEvent = event || ele.getAttribute('data-event');\n    var dataEventOff = eventOff || ele.getAttribute('data-event-off');\n    ele.removeEventListener(dataEvent, customListeners.get(ele, event));\n    if (dataEventOff) ele.removeEventListener(dataEventOff, this.hideTooltip);\n  };\n}\n\n/**\n * Util method to judge if it should follow capture model\n */\n\nfunction isCapture (target) {\n  target.prototype.isCapture = function (currentTarget) {\n    return currentTarget && currentTarget.getAttribute('data-iscapture') === 'true' || this.props.isCapture || false;\n  };\n}\n\n/**\n * Util method to get effect\n */\n\nfunction getEffect (target) {\n  target.prototype.getEffect = function (currentTarget) {\n    var dataEffect = currentTarget.getAttribute('data-effect');\n    return dataEffect || this.props.effect || 'float';\n  };\n}\n\n/**\n * Util method to get effect\n */\nvar makeProxy = function makeProxy(e) {\n  var proxy = {};\n  for (var key in e) {\n    if (typeof e[key] === 'function') {\n      proxy[key] = e[key].bind(e);\n    } else {\n      proxy[key] = e[key];\n    }\n  }\n  return proxy;\n};\nvar bodyListener = function bodyListener(callback, options, e) {\n  var _options$respectEffec = options.respectEffect,\n    respectEffect = _options$respectEffec === void 0 ? false : _options$respectEffec,\n    _options$customEvent = options.customEvent,\n    customEvent = _options$customEvent === void 0 ? false : _options$customEvent;\n  var id = this.props.id;\n  var tip = null;\n  var forId;\n  var target = e.target;\n  var lastTarget;\n  // walk up parent chain until tip is found\n  // there is no match if parent visible area is matched by mouse position, so some corner cases might not work as expected\n  while (tip === null && target !== null) {\n    lastTarget = target;\n    tip = target.getAttribute('data-tip') || null;\n    forId = target.getAttribute('data-for') || null;\n    target = target.parentElement;\n  }\n  target = lastTarget || e.target;\n  if (this.isCustomEvent(target) && !customEvent) {\n    return;\n  }\n  var isTargetBelongsToTooltip = id == null && forId == null || forId === id;\n  if (tip != null && (!respectEffect || this.getEffect(target) === 'float') && isTargetBelongsToTooltip) {\n    var proxy = makeProxy(e);\n    proxy.currentTarget = target;\n    callback(proxy);\n  }\n};\nvar findCustomEvents = function findCustomEvents(targetArray, dataAttribute) {\n  var events = {};\n  targetArray.forEach(function (target) {\n    var event = target.getAttribute(dataAttribute);\n    if (event) event.split(' ').forEach(function (event) {\n      return events[event] = true;\n    });\n  });\n  return events;\n};\nvar getBody = function getBody() {\n  return document.getElementsByTagName('body')[0];\n};\nfunction bodyMode (target) {\n  target.prototype.isBodyMode = function () {\n    return !!this.props.bodyMode;\n  };\n  target.prototype.bindBodyListener = function (targetArray) {\n    var _this = this;\n    var _this$state = this.state,\n      event = _this$state.event,\n      eventOff = _this$state.eventOff,\n      possibleCustomEvents = _this$state.possibleCustomEvents,\n      possibleCustomEventsOff = _this$state.possibleCustomEventsOff;\n    var body = getBody();\n    var customEvents = findCustomEvents(targetArray, 'data-event');\n    var customEventsOff = findCustomEvents(targetArray, 'data-event-off');\n    if (event != null) customEvents[event] = true;\n    if (eventOff != null) customEventsOff[eventOff] = true;\n    possibleCustomEvents.split(' ').forEach(function (event) {\n      return customEvents[event] = true;\n    });\n    possibleCustomEventsOff.split(' ').forEach(function (event) {\n      return customEventsOff[event] = true;\n    });\n    this.unbindBodyListener(body);\n    var listeners = this.bodyModeListeners = {};\n    if (event == null) {\n      listeners.mouseover = bodyListener.bind(this, this.showTooltip, {});\n      listeners.mousemove = bodyListener.bind(this, this.updateTooltip, {\n        respectEffect: true\n      });\n      listeners.mouseout = bodyListener.bind(this, this.hideTooltip, {});\n    }\n    for (var _event in customEvents) {\n      listeners[_event] = bodyListener.bind(this, function (e) {\n        var targetEventOff = e.currentTarget.getAttribute('data-event-off') || eventOff;\n        checkStatus.call(_this, targetEventOff, e);\n      }, {\n        customEvent: true\n      });\n    }\n    for (var _event2 in customEventsOff) {\n      listeners[_event2] = bodyListener.bind(this, this.hideTooltip, {\n        customEvent: true\n      });\n    }\n    for (var _event3 in listeners) {\n      body.addEventListener(_event3, listeners[_event3]);\n    }\n  };\n  target.prototype.unbindBodyListener = function (body) {\n    body = body || getBody();\n    var listeners = this.bodyModeListeners;\n    for (var event in listeners) {\n      body.removeEventListener(event, listeners[event]);\n    }\n  };\n}\n\n/**\n * Tracking target removing from DOM.\n * It's necessary to hide tooltip when it's target disappears.\n * Otherwise, the tooltip would be shown forever until another target\n * is triggered.\n *\n * If MutationObserver is not available, this feature just doesn't work.\n */\n\n// https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/\nvar getMutationObserverClass = function getMutationObserverClass() {\n  return window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;\n};\nfunction trackRemoval (target) {\n  target.prototype.bindRemovalTracker = function () {\n    var _this = this;\n    var MutationObserver = getMutationObserverClass();\n    if (MutationObserver == null) return;\n    var observer = new MutationObserver(function (mutations) {\n      for (var m1 = 0; m1 < mutations.length; m1++) {\n        var mutation = mutations[m1];\n        for (var m2 = 0; m2 < mutation.removedNodes.length; m2++) {\n          var element = mutation.removedNodes[m2];\n          if (element === _this.state.currentTarget) {\n            _this.hideTooltip();\n            return;\n          }\n        }\n      }\n    });\n    observer.observe(window.document, {\n      childList: true,\n      subtree: true\n    });\n    this.removalTracker = observer;\n  };\n  target.prototype.unbindRemovalTracker = function () {\n    if (this.removalTracker) {\n      this.removalTracker.disconnect();\n      this.removalTracker = null;\n    }\n  };\n}\n\n/**\n * Calculate the position of tooltip\n *\n * @params\n * - `e` {Event} the event of current mouse\n * - `target` {Element} the currentTarget of the event\n * - `node` {DOM} the react-tooltip object\n * - `place` {String} top / right / bottom / left\n * - `effect` {String} float / solid\n * - `offset` {Object} the offset to default position\n *\n * @return {Object}\n * - `isNewState` {Bool} required\n * - `newState` {Object}\n * - `position` {Object} {left: {Number}, top: {Number}}\n */\nfunction getPosition (e, target, node, place, desiredPlace, effect, offset) {\n  var _getDimensions = getDimensions(node),\n    tipWidth = _getDimensions.width,\n    tipHeight = _getDimensions.height;\n  var _getDimensions2 = getDimensions(target),\n    targetWidth = _getDimensions2.width,\n    targetHeight = _getDimensions2.height;\n  var _getCurrentOffset = getCurrentOffset(e, target, effect),\n    mouseX = _getCurrentOffset.mouseX,\n    mouseY = _getCurrentOffset.mouseY;\n  var defaultOffset = getDefaultPosition(effect, targetWidth, targetHeight, tipWidth, tipHeight);\n  var _calculateOffset = calculateOffset(offset),\n    extraOffsetX = _calculateOffset.extraOffsetX,\n    extraOffsetY = _calculateOffset.extraOffsetY;\n  var windowWidth = window.innerWidth;\n  var windowHeight = window.innerHeight;\n  var _getParent = getParent(node),\n    parentTop = _getParent.parentTop,\n    parentLeft = _getParent.parentLeft;\n\n  // Get the edge offset of the tooltip\n  var getTipOffsetLeft = function getTipOffsetLeft(place) {\n    var offsetX = defaultOffset[place].l;\n    return mouseX + offsetX + extraOffsetX;\n  };\n  var getTipOffsetRight = function getTipOffsetRight(place) {\n    var offsetX = defaultOffset[place].r;\n    return mouseX + offsetX + extraOffsetX;\n  };\n  var getTipOffsetTop = function getTipOffsetTop(place) {\n    var offsetY = defaultOffset[place].t;\n    return mouseY + offsetY + extraOffsetY;\n  };\n  var getTipOffsetBottom = function getTipOffsetBottom(place) {\n    var offsetY = defaultOffset[place].b;\n    return mouseY + offsetY + extraOffsetY;\n  };\n\n  //\n  // Functions to test whether the tooltip's sides are inside\n  // the client window for a given orientation p\n  //\n  //  _____________\n  // |             | <-- Right side\n  // | p = 'left'  |\\\n  // |             |/  |\\\n  // |_____________|   |_\\  <-- Mouse\n  //      / \\           |\n  //       |\n  //       |\n  //  Bottom side\n  //\n  var outsideLeft = function outsideLeft(p) {\n    return getTipOffsetLeft(p) < 0;\n  };\n  var outsideRight = function outsideRight(p) {\n    return getTipOffsetRight(p) > windowWidth;\n  };\n  var outsideTop = function outsideTop(p) {\n    return getTipOffsetTop(p) < 0;\n  };\n  var outsideBottom = function outsideBottom(p) {\n    return getTipOffsetBottom(p) > windowHeight;\n  };\n\n  // Check whether the tooltip with orientation p is completely inside the client window\n  var outside = function outside(p) {\n    return outsideLeft(p) || outsideRight(p) || outsideTop(p) || outsideBottom(p);\n  };\n  var inside = function inside(p) {\n    return !outside(p);\n  };\n  var placeIsInside = {\n    top: inside('top'),\n    bottom: inside('bottom'),\n    left: inside('left'),\n    right: inside('right')\n  };\n  function choose() {\n    var allPlaces = desiredPlace.split(',').concat(place, ['top', 'bottom', 'left', 'right']);\n    var _iterator = _createForOfIteratorHelper(allPlaces),\n      _step;\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var d = _step.value;\n        if (placeIsInside[d]) return d;\n      }\n      // if nothing is inside, just use the old place.\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n    return place;\n  }\n  var chosen = choose();\n  var isNewState = false;\n  var newPlace;\n  if (chosen && chosen !== place) {\n    isNewState = true;\n    newPlace = chosen;\n  }\n  if (isNewState) {\n    return {\n      isNewState: true,\n      newState: {\n        place: newPlace\n      }\n    };\n  }\n  return {\n    isNewState: false,\n    position: {\n      left: parseInt(getTipOffsetLeft(place) - parentLeft, 10),\n      top: parseInt(getTipOffsetTop(place) - parentTop, 10)\n    }\n  };\n}\nvar getDimensions = function getDimensions(node) {\n  var _node$getBoundingClie = node.getBoundingClientRect(),\n    height = _node$getBoundingClie.height,\n    width = _node$getBoundingClie.width;\n  return {\n    height: parseInt(height, 10),\n    width: parseInt(width, 10)\n  };\n};\n\n// Get current mouse offset\nvar getCurrentOffset = function getCurrentOffset(e, currentTarget, effect) {\n  var boundingClientRect = currentTarget.getBoundingClientRect();\n  var targetTop = boundingClientRect.top;\n  var targetLeft = boundingClientRect.left;\n  var _getDimensions3 = getDimensions(currentTarget),\n    targetWidth = _getDimensions3.width,\n    targetHeight = _getDimensions3.height;\n  if (effect === 'float') {\n    return {\n      mouseX: e.clientX,\n      mouseY: e.clientY\n    };\n  }\n  return {\n    mouseX: targetLeft + targetWidth / 2,\n    mouseY: targetTop + targetHeight / 2\n  };\n};\n\n// List all possibility of tooltip final offset\n// This is useful in judging if it is necessary for tooltip to switch position when out of window\nvar getDefaultPosition = function getDefaultPosition(effect, targetWidth, targetHeight, tipWidth, tipHeight) {\n  var top;\n  var right;\n  var bottom;\n  var left;\n  var disToMouse = 3;\n  var triangleHeight = 2;\n  var cursorHeight = 12; // Optimize for float bottom only, cause the cursor will hide the tooltip\n\n  if (effect === 'float') {\n    top = {\n      l: -(tipWidth / 2),\n      r: tipWidth / 2,\n      t: -(tipHeight + disToMouse + triangleHeight),\n      b: -disToMouse\n    };\n    bottom = {\n      l: -(tipWidth / 2),\n      r: tipWidth / 2,\n      t: disToMouse + cursorHeight,\n      b: tipHeight + disToMouse + triangleHeight + cursorHeight\n    };\n    left = {\n      l: -(tipWidth + disToMouse + triangleHeight),\n      r: -disToMouse,\n      t: -(tipHeight / 2),\n      b: tipHeight / 2\n    };\n    right = {\n      l: disToMouse,\n      r: tipWidth + disToMouse + triangleHeight,\n      t: -(tipHeight / 2),\n      b: tipHeight / 2\n    };\n  } else if (effect === 'solid') {\n    top = {\n      l: -(tipWidth / 2),\n      r: tipWidth / 2,\n      t: -(targetHeight / 2 + tipHeight + triangleHeight),\n      b: -(targetHeight / 2)\n    };\n    bottom = {\n      l: -(tipWidth / 2),\n      r: tipWidth / 2,\n      t: targetHeight / 2,\n      b: targetHeight / 2 + tipHeight + triangleHeight\n    };\n    left = {\n      l: -(tipWidth + targetWidth / 2 + triangleHeight),\n      r: -(targetWidth / 2),\n      t: -(tipHeight / 2),\n      b: tipHeight / 2\n    };\n    right = {\n      l: targetWidth / 2,\n      r: tipWidth + targetWidth / 2 + triangleHeight,\n      t: -(tipHeight / 2),\n      b: tipHeight / 2\n    };\n  }\n  return {\n    top: top,\n    bottom: bottom,\n    left: left,\n    right: right\n  };\n};\n\n// Consider additional offset into position calculation\nvar calculateOffset = function calculateOffset(offset) {\n  var extraOffsetX = 0;\n  var extraOffsetY = 0;\n  if (Object.prototype.toString.apply(offset) === '[object String]') {\n    offset = JSON.parse(offset.toString().replace(/'/g, '\"'));\n  }\n  for (var key in offset) {\n    if (key === 'top') {\n      extraOffsetY -= parseInt(offset[key], 10);\n    } else if (key === 'bottom') {\n      extraOffsetY += parseInt(offset[key], 10);\n    } else if (key === 'left') {\n      extraOffsetX -= parseInt(offset[key], 10);\n    } else if (key === 'right') {\n      extraOffsetX += parseInt(offset[key], 10);\n    }\n  }\n  return {\n    extraOffsetX: extraOffsetX,\n    extraOffsetY: extraOffsetY\n  };\n};\n\n// Get the offset of the parent elements\nvar getParent = function getParent(currentTarget) {\n  var currentParent = currentTarget;\n  while (currentParent) {\n    var computedStyle = window.getComputedStyle(currentParent);\n    // transform and will-change: transform change the containing block\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_Block\n    if (computedStyle.getPropertyValue('transform') !== 'none' || computedStyle.getPropertyValue('will-change') === 'transform') break;\n    currentParent = currentParent.parentElement;\n  }\n  var parentTop = currentParent && currentParent.getBoundingClientRect().top || 0;\n  var parentLeft = currentParent && currentParent.getBoundingClientRect().left || 0;\n  return {\n    parentTop: parentTop,\n    parentLeft: parentLeft\n  };\n};\n\n/**\n * To get the tooltip content\n * it may comes from data-tip or this.props.children\n * it should support multiline\n *\n * @params\n * - `tip` {String} value of data-tip\n * - `children` {ReactElement} this.props.children\n * - `multiline` {Any} could be Bool(true/false) or String('true'/'false')\n *\n * @return\n * - String or react component\n */\nfunction TipContent(tip, children, getContent, multiline) {\n  if (children) return children;\n  if (getContent !== undefined && getContent !== null) return getContent; // getContent can be 0, '', etc.\n  if (getContent === null) return null; // Tip not exist and children is null or undefined\n\n  var regexp = /<br\\s*\\/?>/;\n  if (!multiline || multiline === 'false' || !regexp.test(tip)) {\n    // No trim(), so that user can keep their input\n    return tip;\n  }\n\n  // Multiline tooltip content\n  return tip.split(regexp).map(function (d, i) {\n    return /*#__PURE__*/React.createElement(\"span\", {\n      key: i,\n      className: \"multi-line\"\n    }, d);\n  });\n}\n\n/**\n * Support aria- and role in ReactTooltip\n *\n * @params props {Object}\n * @return {Object}\n */\nfunction parseAria(props) {\n  var ariaObj = {};\n  Object.keys(props).filter(function (prop) {\n    // aria-xxx and role is acceptable\n    return /(^aria-\\w+$|^role$)/.test(prop);\n  }).forEach(function (prop) {\n    ariaObj[prop] = props[prop];\n  });\n  return ariaObj;\n}\n\n/**\n * Convert nodelist to array\n * @see https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/core/createArrayFromMixed.js#L24\n * NodeLists are functions in Safari\n */\n\nfunction nodeListToArray (nodeList) {\n  var length = nodeList.length;\n  if (nodeList.hasOwnProperty) {\n    return Array.prototype.slice.call(nodeList);\n  }\n  return new Array(length).fill().map(function (index) {\n    return nodeList[index];\n  });\n}\n\nfunction generateUUID() {\n  return 't' + v4();\n}\n\nvar baseCss = \".__react_component_tooltip {\\n  border-radius: 3px;\\n  display: inline-block;\\n  font-size: 13px;\\n  left: -999em;\\n  opacity: 0;\\n  position: fixed;\\n  pointer-events: none;\\n  transition: opacity 0.3s ease-out;\\n  top: -999em;\\n  visibility: hidden;\\n  z-index: 999;\\n}\\n.__react_component_tooltip.allow_hover, .__react_component_tooltip.allow_click {\\n  pointer-events: auto;\\n}\\n.__react_component_tooltip::before, .__react_component_tooltip::after {\\n  content: \\\"\\\";\\n  width: 0;\\n  height: 0;\\n  position: absolute;\\n}\\n.__react_component_tooltip.show {\\n  opacity: 0.9;\\n  margin-top: 0;\\n  margin-left: 0;\\n  visibility: visible;\\n}\\n.__react_component_tooltip.place-top::before {\\n  bottom: 0;\\n  left: 50%;\\n  margin-left: -11px;\\n}\\n.__react_component_tooltip.place-bottom::before {\\n  top: 0;\\n  left: 50%;\\n  margin-left: -11px;\\n}\\n.__react_component_tooltip.place-left::before {\\n  right: 0;\\n  top: 50%;\\n  margin-top: -9px;\\n}\\n.__react_component_tooltip.place-right::before {\\n  left: 0;\\n  top: 50%;\\n  margin-top: -9px;\\n}\\n.__react_component_tooltip .multi-line {\\n  display: block;\\n  padding: 2px 0;\\n  text-align: center;\\n}\";\n\n/**\n * Default pop-up style values (text color, background color).\n */\nvar defaultColors = {\n  dark: {\n    text: '#fff',\n    background: '#222',\n    border: 'transparent',\n    arrow: '#222'\n  },\n  success: {\n    text: '#fff',\n    background: '#8DC572',\n    border: 'transparent',\n    arrow: '#8DC572'\n  },\n  warning: {\n    text: '#fff',\n    background: '#F0AD4E',\n    border: 'transparent',\n    arrow: '#F0AD4E'\n  },\n  error: {\n    text: '#fff',\n    background: '#BE6464',\n    border: 'transparent',\n    arrow: '#BE6464'\n  },\n  info: {\n    text: '#fff',\n    background: '#337AB7',\n    border: 'transparent',\n    arrow: '#337AB7'\n  },\n  light: {\n    text: '#222',\n    background: '#fff',\n    border: 'transparent',\n    arrow: '#fff'\n  }\n};\nfunction getDefaultPopupColors(type) {\n  return defaultColors[type] ? _objectSpread2({}, defaultColors[type]) : undefined;\n}\nvar DEFAULT_PADDING = '8px 21px';\nvar DEFAULT_RADIUS = {\n  tooltip: 3,\n  arrow: 0\n};\n\n/**\n * Generates the specific tooltip style for use on render.\n */\nfunction generateTooltipStyle(uuid, customColors, type, hasBorder, padding, radius) {\n  return generateStyle(uuid, getPopupColors(customColors, type, hasBorder), padding, radius);\n}\n\n/**\n * Generates the tooltip style rules based on the element-specified \"data-type\" property.\n */\nfunction generateStyle(uuid, colors) {\n  var padding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_PADDING;\n  var radius = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_RADIUS;\n  var textColor = colors.text;\n  var backgroundColor = colors.background;\n  var borderColor = colors.border;\n  var arrowColor = colors.arrow;\n  var arrowRadius = radius.arrow;\n  var tooltipRadius = radius.tooltip;\n  return \"\\n  \\t.\".concat(uuid, \" {\\n\\t    color: \").concat(textColor, \";\\n\\t    background: \").concat(backgroundColor, \";\\n\\t    border: 1px solid \").concat(borderColor, \";\\n\\t    border-radius: \").concat(tooltipRadius, \"px;\\n\\t    padding: \").concat(padding, \";\\n  \\t}\\n\\n  \\t.\").concat(uuid, \".place-top {\\n        margin-top: -10px;\\n    }\\n    .\").concat(uuid, \".place-top::before {\\n        content: \\\"\\\";\\n        background-color: inherit;\\n        position: absolute;\\n        z-index: 2;\\n        width: 20px;\\n        height: 12px;\\n    }\\n    .\").concat(uuid, \".place-top::after {\\n        content: \\\"\\\";\\n        position: absolute;\\n        width: 10px;\\n        height: 10px;\\n        border-top-right-radius: \").concat(arrowRadius, \"px;\\n        border: 1px solid \").concat(borderColor, \";\\n        background-color: \").concat(arrowColor, \";\\n        z-index: -2;\\n        bottom: -6px;\\n        left: 50%;\\n        margin-left: -6px;\\n        transform: rotate(135deg);\\n    }\\n\\n    .\").concat(uuid, \".place-bottom {\\n        margin-top: 10px;\\n    }\\n    .\").concat(uuid, \".place-bottom::before {\\n        content: \\\"\\\";\\n        background-color: inherit;\\n        position: absolute;\\n        z-index: -1;\\n        width: 18px;\\n        height: 10px;\\n    }\\n    .\").concat(uuid, \".place-bottom::after {\\n        content: \\\"\\\";\\n        position: absolute;\\n        width: 10px;\\n        height: 10px;\\n        border-top-right-radius: \").concat(arrowRadius, \"px;\\n        border: 1px solid \").concat(borderColor, \";\\n        background-color: \").concat(arrowColor, \";\\n        z-index: -2;\\n        top: -6px;\\n        left: 50%;\\n        margin-left: -6px;\\n        transform: rotate(45deg);\\n    }\\n\\n    .\").concat(uuid, \".place-left {\\n        margin-left: -10px;\\n    }\\n    .\").concat(uuid, \".place-left::before {\\n        content: \\\"\\\";\\n        background-color: inherit;\\n        position: absolute;\\n        z-index: -1;\\n        width: 10px;\\n        height: 18px;\\n    }\\n    .\").concat(uuid, \".place-left::after {\\n        content: \\\"\\\";\\n        position: absolute;\\n        width: 10px;\\n        height: 10px;\\n        border-top-right-radius: \").concat(arrowRadius, \"px;\\n        border: 1px solid \").concat(borderColor, \";\\n        background-color: \").concat(arrowColor, \";\\n        z-index: -2;\\n        right: -6px;\\n        top: 50%;\\n        margin-top: -6px;\\n        transform: rotate(45deg);\\n    }\\n\\n    .\").concat(uuid, \".place-right {\\n        margin-left: 10px;\\n    }\\n    .\").concat(uuid, \".place-right::before {\\n        content: \\\"\\\";\\n        background-color: inherit;\\n        position: absolute;\\n        z-index: -1;\\n        width: 10px;\\n        height: 18px;\\n    }\\n    .\").concat(uuid, \".place-right::after {\\n        content: \\\"\\\";\\n        position: absolute;\\n        width: 10px;\\n        height: 10px;\\n        border-top-right-radius: \").concat(arrowRadius, \"px;\\n        border: 1px solid \").concat(borderColor, \";\\n        background-color: \").concat(arrowColor, \";\\n        z-index: -2;\\n        left: -6px;\\n        top: 50%;\\n        margin-top: -6px;\\n        transform: rotate(-135deg);\\n    }\\n  \");\n}\nfunction getPopupColors(customColors, type, hasBorder) {\n  var textColor = customColors.text;\n  var backgroundColor = customColors.background;\n  var borderColor = customColors.border;\n  var arrowColor = customColors.arrow ? customColors.arrow : customColors.background;\n  var colors = getDefaultPopupColors(type);\n  if (textColor) {\n    colors.text = textColor;\n  }\n  if (backgroundColor) {\n    colors.background = backgroundColor;\n  }\n  if (hasBorder) {\n    if (borderColor) {\n      colors.border = borderColor;\n    } else {\n      colors.border = type === 'light' ? 'black' : 'white';\n    }\n  }\n  if (arrowColor) {\n    colors.arrow = arrowColor;\n  }\n  return colors;\n}\n\nvar _class, _class2;\n\n/* Polyfill */\nvar ReactTooltip = staticMethods(_class = windowListener(_class = customEvent(_class = isCapture(_class = getEffect(_class = bodyMode(_class = trackRemoval(_class = (_class2 = /*#__PURE__*/function (_React$Component) {\n  _inherits(ReactTooltip, _React$Component);\n  var _super = _createSuper(ReactTooltip);\n  function ReactTooltip(props) {\n    var _this;\n    _classCallCheck(this, ReactTooltip);\n    _this = _super.call(this, props);\n    _this.state = {\n      uuid: props.uuid || generateUUID(),\n      place: props.place || 'top',\n      // Direction of tooltip\n      desiredPlace: props.place || 'top',\n      type: props.type || 'dark',\n      // Color theme of tooltip\n      effect: props.effect || 'float',\n      // float or fixed\n      show: false,\n      border: false,\n      borderClass: 'border',\n      customColors: {},\n      customRadius: {},\n      offset: {},\n      padding: props.padding,\n      extraClass: '',\n      html: false,\n      delayHide: 0,\n      delayShow: 0,\n      event: props.event || null,\n      eventOff: props.eventOff || null,\n      currentEvent: null,\n      // Current mouse event\n      currentTarget: null,\n      // Current target of mouse event\n      ariaProps: parseAria(props),\n      // aria- and role attributes\n      isEmptyTip: false,\n      disable: false,\n      possibleCustomEvents: props.possibleCustomEvents || '',\n      possibleCustomEventsOff: props.possibleCustomEventsOff || '',\n      originTooltip: null,\n      isMultiline: false\n    };\n    _this.bind(['showTooltip', 'updateTooltip', 'hideTooltip', 'hideTooltipOnScroll', 'getTooltipContent', 'globalRebuild', 'globalShow', 'globalHide', 'onWindowResize', 'mouseOnToolTip']);\n    _this.mount = true;\n    _this.delayShowLoop = null;\n    _this.delayHideLoop = null;\n    _this.delayReshow = null;\n    _this.intervalUpdateContent = null;\n    return _this;\n  }\n\n  /**\n   * For unify the bind and unbind listener\n   */\n  _createClass(ReactTooltip, [{\n    key: \"bind\",\n    value: function bind(methodArray) {\n      var _this2 = this;\n      methodArray.forEach(function (method) {\n        _this2[method] = _this2[method].bind(_this2);\n      });\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props = this.props;\n        _this$props.insecure;\n        var resizeHide = _this$props.resizeHide,\n        disableInternalStyle = _this$props.disableInternalStyle;\n      this.mount = true;\n      this.bindListener(); // Bind listener for tooltip\n      this.bindWindowEvents(resizeHide); // Bind global event for static method\n\n      if (!disableInternalStyle) {\n        this.injectStyles(); // Inject styles for each DOM root having tooltip.\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.mount = false;\n      this.clearTimer();\n      this.unbindListener();\n      this.removeScrollListener(this.state.currentTarget);\n      this.unbindWindowEvents();\n    }\n\n    /* Look for the closest DOM root having tooltip and inject styles. */\n  }, {\n    key: \"injectStyles\",\n    value: function injectStyles() {\n      var tooltipRef = this.tooltipRef;\n      if (!tooltipRef) {\n        return;\n      }\n      var parentNode = tooltipRef.parentNode;\n      while (parentNode.parentNode) {\n        parentNode = parentNode.parentNode;\n      }\n      var domRoot;\n      switch (parentNode.constructor.name) {\n        case 'Document':\n        case 'HTMLDocument':\n        case undefined:\n          domRoot = parentNode.head;\n          break;\n        case 'ShadowRoot':\n        default:\n          domRoot = parentNode;\n          break;\n      }\n\n      // Prevent styles duplication.\n      if (!domRoot.querySelector('style[data-react-tooltip]')) {\n        var style = document.createElement('style');\n        style.textContent = baseCss;\n        style.setAttribute('data-react-tooltip', 'true');\n        domRoot.appendChild(style);\n      }\n    }\n\n    /**\n     * Return if the mouse is on the tooltip.\n     * @returns {boolean} true - mouse is on the tooltip\n     */\n  }, {\n    key: \"mouseOnToolTip\",\n    value: function mouseOnToolTip() {\n      var show = this.state.show;\n      if (show && this.tooltipRef) {\n        /* old IE or Firefox work around */\n        if (!this.tooltipRef.matches) {\n          /* old IE work around */\n          if (this.tooltipRef.msMatchesSelector) {\n            this.tooltipRef.matches = this.tooltipRef.msMatchesSelector;\n          } else {\n            /* old Firefox work around */\n            this.tooltipRef.matches = this.tooltipRef.mozMatchesSelector;\n          }\n        }\n        return this.tooltipRef.matches(':hover');\n      }\n      return false;\n    }\n\n    /**\n     * Pick out corresponded target elements\n     */\n  }, {\n    key: \"getTargetArray\",\n    value: function getTargetArray(id) {\n      var targetArray = [];\n      var selector;\n      if (!id) {\n        selector = '[data-tip]:not([data-for])';\n      } else {\n        var escaped = id.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n        selector = \"[data-tip][data-for=\\\"\".concat(escaped, \"\\\"]\");\n      }\n\n      // Scan document for shadow DOM elements\n      nodeListToArray(document.getElementsByTagName('*')).filter(function (element) {\n        return element.shadowRoot;\n      }).forEach(function (element) {\n        targetArray = targetArray.concat(nodeListToArray(element.shadowRoot.querySelectorAll(selector)));\n      });\n      return targetArray.concat(nodeListToArray(document.querySelectorAll(selector)));\n    }\n\n    /**\n     * Bind listener to the target elements\n     * These listeners used to trigger showing or hiding the tooltip\n     */\n  }, {\n    key: \"bindListener\",\n    value: function bindListener() {\n      var _this3 = this;\n      var _this$props2 = this.props,\n        id = _this$props2.id,\n        globalEventOff = _this$props2.globalEventOff,\n        isCapture = _this$props2.isCapture;\n      var targetArray = this.getTargetArray(id);\n      targetArray.forEach(function (target) {\n        if (target.getAttribute('currentItem') === null) {\n          target.setAttribute('currentItem', 'false');\n        }\n        _this3.unbindBasicListener(target);\n        if (_this3.isCustomEvent(target)) {\n          _this3.customUnbindListener(target);\n        }\n      });\n      if (this.isBodyMode()) {\n        this.bindBodyListener(targetArray);\n      } else {\n        targetArray.forEach(function (target) {\n          var isCaptureMode = _this3.isCapture(target);\n          var effect = _this3.getEffect(target);\n          if (_this3.isCustomEvent(target)) {\n            _this3.customBindListener(target);\n            return;\n          }\n          target.addEventListener('mouseenter', _this3.showTooltip, isCaptureMode);\n          target.addEventListener('focus', _this3.showTooltip, isCaptureMode);\n          if (effect === 'float') {\n            target.addEventListener('mousemove', _this3.updateTooltip, isCaptureMode);\n          }\n          target.addEventListener('mouseleave', _this3.hideTooltip, isCaptureMode);\n          target.addEventListener('blur', _this3.hideTooltip, isCaptureMode);\n        });\n      }\n\n      // Global event to hide tooltip\n      if (globalEventOff) {\n        window.removeEventListener(globalEventOff, this.hideTooltip);\n        window.addEventListener(globalEventOff, this.hideTooltip, isCapture);\n      }\n\n      // Track removal of targetArray elements from DOM\n      this.bindRemovalTracker();\n    }\n\n    /**\n     * Unbind listeners on target elements\n     */\n  }, {\n    key: \"unbindListener\",\n    value: function unbindListener() {\n      var _this4 = this;\n      var _this$props3 = this.props,\n        id = _this$props3.id,\n        globalEventOff = _this$props3.globalEventOff;\n      if (this.isBodyMode()) {\n        this.unbindBodyListener();\n      } else {\n        var targetArray = this.getTargetArray(id);\n        targetArray.forEach(function (target) {\n          _this4.unbindBasicListener(target);\n          if (_this4.isCustomEvent(target)) _this4.customUnbindListener(target);\n        });\n      }\n      if (globalEventOff) window.removeEventListener(globalEventOff, this.hideTooltip);\n      this.unbindRemovalTracker();\n    }\n\n    /**\n     * Invoke this before bind listener and unmount the component\n     * it is necessary to invoke this even when binding custom event\n     * so that the tooltip can switch between custom and default listener\n     */\n  }, {\n    key: \"unbindBasicListener\",\n    value: function unbindBasicListener(target) {\n      var isCaptureMode = this.isCapture(target);\n      target.removeEventListener('mouseenter', this.showTooltip, isCaptureMode);\n      target.removeEventListener('mousemove', this.updateTooltip, isCaptureMode);\n      target.removeEventListener('mouseleave', this.hideTooltip, isCaptureMode);\n    }\n  }, {\n    key: \"getTooltipContent\",\n    value: function getTooltipContent() {\n      var _this$props4 = this.props,\n        getContent = _this$props4.getContent,\n        children = _this$props4.children;\n\n      // Generate tooltip content\n      var content;\n      if (getContent) {\n        if (Array.isArray(getContent)) {\n          content = getContent[0] && getContent[0](this.state.originTooltip);\n        } else {\n          content = getContent(this.state.originTooltip);\n        }\n      }\n      return TipContent(this.state.originTooltip, children, content, this.state.isMultiline);\n    }\n  }, {\n    key: \"isEmptyTip\",\n    value: function isEmptyTip(placeholder) {\n      return typeof placeholder === 'string' && placeholder === '' || placeholder === null;\n    }\n\n    /**\n     * When mouse enter, show the tooltip\n     */\n  }, {\n    key: \"showTooltip\",\n    value: function showTooltip(e, isGlobalCall) {\n      if (!this.tooltipRef) {\n        return;\n      }\n      if (isGlobalCall) {\n        // Don't trigger other elements belongs to other ReactTooltip\n        var targetArray = this.getTargetArray(this.props.id);\n        var isMyElement = targetArray.some(function (ele) {\n          return ele === e.currentTarget;\n        });\n        if (!isMyElement) return;\n      }\n      // Get the tooltip content\n      // calculate in this phrase so that tip width height can be detected\n      var _this$props5 = this.props,\n        multiline = _this$props5.multiline,\n        getContent = _this$props5.getContent;\n      var originTooltip = e.currentTarget.getAttribute('data-tip');\n      var isMultiline = e.currentTarget.getAttribute('data-multiline') || multiline || false;\n\n      // If it is focus event or called by ReactTooltip.show, switch to `solid` effect\n      var switchToSolid = e instanceof window.FocusEvent || isGlobalCall;\n\n      // if it needs to skip adding hide listener to scroll\n      var scrollHide = true;\n      if (e.currentTarget.getAttribute('data-scroll-hide')) {\n        scrollHide = e.currentTarget.getAttribute('data-scroll-hide') === 'true';\n      } else if (this.props.scrollHide != null) {\n        scrollHide = this.props.scrollHide;\n      }\n\n      // adding aria-describedby to target to make tooltips read by screen readers\n      if (e && e.currentTarget && e.currentTarget.setAttribute) {\n        e.currentTarget.setAttribute('aria-describedby', this.props.id || this.state.uuid);\n      }\n\n      // Make sure the correct place is set\n      var desiredPlace = e.currentTarget.getAttribute('data-place') || this.props.place || 'top';\n      var effect = switchToSolid && 'solid' || this.getEffect(e.currentTarget);\n      var offset = e.currentTarget.getAttribute('data-offset') || this.props.offset || {};\n      var result = getPosition(e, e.currentTarget, this.tooltipRef, desiredPlace.split(',')[0], desiredPlace, effect, offset);\n      if (result.position && this.props.overridePosition) {\n        result.position = this.props.overridePosition(result.position, e, e.currentTarget, this.tooltipRef, desiredPlace, desiredPlace, effect, offset);\n      }\n      var place = result.isNewState ? result.newState.place : desiredPlace.split(',')[0];\n\n      // To prevent previously created timers from triggering\n      this.clearTimer();\n      var target = e.currentTarget;\n      var reshowDelay = this.state.show ? target.getAttribute('data-delay-update') || this.props.delayUpdate : 0;\n      var self = this;\n      var updateState = function updateState() {\n        self.setState({\n          originTooltip: originTooltip,\n          isMultiline: isMultiline,\n          desiredPlace: desiredPlace,\n          place: place,\n          type: target.getAttribute('data-type') || self.props.type || 'dark',\n          customColors: {\n            text: target.getAttribute('data-text-color') || self.props.textColor || null,\n            background: target.getAttribute('data-background-color') || self.props.backgroundColor || null,\n            border: target.getAttribute('data-border-color') || self.props.borderColor || null,\n            arrow: target.getAttribute('data-arrow-color') || self.props.arrowColor || null\n          },\n          customRadius: {\n            tooltip: target.getAttribute('data-tooltip-radius') || self.props.tooltipRadius || '3',\n            arrow: target.getAttribute('data-arrow-radius') || self.props.arrowRadius || '0'\n          },\n          effect: effect,\n          offset: offset,\n          padding: target.getAttribute('data-padding') || self.props.padding,\n          html: (target.getAttribute('data-html') ? target.getAttribute('data-html') === 'true' : self.props.html) || false,\n          delayShow: target.getAttribute('data-delay-show') || self.props.delayShow || 0,\n          delayHide: target.getAttribute('data-delay-hide') || self.props.delayHide || 0,\n          delayUpdate: target.getAttribute('data-delay-update') || self.props.delayUpdate || 0,\n          border: (target.getAttribute('data-border') ? target.getAttribute('data-border') === 'true' : self.props.border) || false,\n          borderClass: target.getAttribute('data-border-class') || self.props.borderClass || 'border',\n          extraClass: target.getAttribute('data-class') || self.props[\"class\"] || self.props.className || '',\n          disable: (target.getAttribute('data-tip-disable') ? target.getAttribute('data-tip-disable') === 'true' : self.props.disable) || false,\n          currentTarget: target\n        }, function () {\n          if (scrollHide) {\n            self.addScrollListener(self.state.currentTarget);\n          }\n          self.updateTooltip(e);\n          if (getContent && Array.isArray(getContent)) {\n            self.intervalUpdateContent = setInterval(function () {\n              if (self.mount) {\n                var _getContent = self.props.getContent;\n                var placeholder = TipContent(originTooltip, '', _getContent[0](), isMultiline);\n                var isEmptyTip = self.isEmptyTip(placeholder);\n                self.setState({\n                  isEmptyTip: isEmptyTip\n                });\n                self.updatePosition();\n              }\n            }, getContent[1]);\n          }\n        });\n      };\n\n      // If there is no delay call immediately, don't allow events to get in first.\n      if (reshowDelay) {\n        this.delayReshow = setTimeout(updateState, reshowDelay);\n      } else {\n        updateState();\n      }\n    }\n\n    /**\n     * When mouse hover, update tool tip\n     */\n  }, {\n    key: \"updateTooltip\",\n    value: function updateTooltip(e) {\n      var _this5 = this;\n      var _this$state = this.state,\n        delayShow = _this$state.delayShow,\n        disable = _this$state.disable;\n      var _this$props6 = this.props,\n        afterShow = _this$props6.afterShow,\n        disableProp = _this$props6.disable;\n      var placeholder = this.getTooltipContent();\n      var eventTarget = e.currentTarget || e.target;\n\n      // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n      if (this.mouseOnToolTip()) {\n        return;\n      }\n\n      // if the tooltip is empty, disable the tooltip\n      if (this.isEmptyTip(placeholder) || disable || disableProp) {\n        return;\n      }\n      var delayTime = !this.state.show ? parseInt(delayShow, 10) : 0;\n      var updateState = function updateState() {\n        if (Array.isArray(placeholder) && placeholder.length > 0 || placeholder) {\n          var isInvisible = !_this5.state.show;\n          _this5.setState({\n            currentEvent: e,\n            currentTarget: eventTarget,\n            show: true\n          }, function () {\n            _this5.updatePosition(function () {\n              if (isInvisible && afterShow) {\n                afterShow(e);\n              }\n            });\n          });\n        }\n      };\n      if (this.delayShowLoop) {\n        clearTimeout(this.delayShowLoop);\n      }\n      if (delayTime) {\n        this.delayShowLoop = setTimeout(updateState, delayTime);\n      } else {\n        this.delayShowLoop = null;\n        updateState();\n      }\n    }\n\n    /*\n     * If we're mousing over the tooltip remove it when we leave.\n     */\n  }, {\n    key: \"listenForTooltipExit\",\n    value: function listenForTooltipExit() {\n      var show = this.state.show;\n      if (show && this.tooltipRef) {\n        this.tooltipRef.addEventListener('mouseleave', this.hideTooltip);\n      }\n    }\n  }, {\n    key: \"removeListenerForTooltipExit\",\n    value: function removeListenerForTooltipExit() {\n      var show = this.state.show;\n      if (show && this.tooltipRef) {\n        this.tooltipRef.removeEventListener('mouseleave', this.hideTooltip);\n      }\n    }\n\n    /**\n     * When mouse leave, hide tooltip\n     */\n  }, {\n    key: \"hideTooltip\",\n    value: function hideTooltip(e, hasTarget) {\n      var _this6 = this;\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n        isScroll: false\n      };\n      var disable = this.state.disable;\n      var isScroll = options.isScroll;\n      var delayHide = isScroll ? 0 : this.state.delayHide;\n      var _this$props7 = this.props,\n        afterHide = _this$props7.afterHide,\n        disableProp = _this$props7.disable;\n      var placeholder = this.getTooltipContent();\n      if (!this.mount) return;\n      if (this.isEmptyTip(placeholder) || disable || disableProp) return; // if the tooltip is empty, disable the tooltip\n      if (hasTarget) {\n        // Don't trigger other elements belongs to other ReactTooltip\n        var targetArray = this.getTargetArray(this.props.id);\n        var isMyElement = targetArray.some(function (ele) {\n          return ele === e.currentTarget;\n        });\n        if (!isMyElement || !this.state.show) return;\n      }\n\n      // clean up aria-describedby when hiding tooltip\n      if (e && e.currentTarget && e.currentTarget.removeAttribute) {\n        e.currentTarget.removeAttribute('aria-describedby');\n      }\n      var resetState = function resetState() {\n        var isVisible = _this6.state.show;\n        // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n        if (_this6.mouseOnToolTip()) {\n          _this6.listenForTooltipExit();\n          return;\n        }\n        _this6.removeListenerForTooltipExit();\n        _this6.setState({\n          show: false\n        }, function () {\n          _this6.removeScrollListener(_this6.state.currentTarget);\n          if (isVisible && afterHide) {\n            afterHide(e);\n          }\n        });\n      };\n      this.clearTimer();\n      if (delayHide) {\n        this.delayHideLoop = setTimeout(resetState, parseInt(delayHide, 10));\n      } else {\n        resetState();\n      }\n    }\n\n    /**\n     * When scroll, hide tooltip\n     */\n  }, {\n    key: \"hideTooltipOnScroll\",\n    value: function hideTooltipOnScroll(event, hasTarget) {\n      this.hideTooltip(event, hasTarget, {\n        isScroll: true\n      });\n    }\n\n    /**\n     * Add scroll event listener when tooltip show\n     * automatically hide the tooltip when scrolling\n     */\n  }, {\n    key: \"addScrollListener\",\n    value: function addScrollListener(currentTarget) {\n      var isCaptureMode = this.isCapture(currentTarget);\n      window.addEventListener('scroll', this.hideTooltipOnScroll, isCaptureMode);\n    }\n  }, {\n    key: \"removeScrollListener\",\n    value: function removeScrollListener(currentTarget) {\n      var isCaptureMode = this.isCapture(currentTarget);\n      window.removeEventListener('scroll', this.hideTooltipOnScroll, isCaptureMode);\n    }\n\n    // Calculation the position\n  }, {\n    key: \"updatePosition\",\n    value: function updatePosition(callbackAfter) {\n      var _this7 = this;\n      var _this$state2 = this.state,\n        currentEvent = _this$state2.currentEvent,\n        currentTarget = _this$state2.currentTarget,\n        place = _this$state2.place,\n        desiredPlace = _this$state2.desiredPlace,\n        effect = _this$state2.effect,\n        offset = _this$state2.offset;\n      var node = this.tooltipRef;\n      var result = getPosition(currentEvent, currentTarget, node, place, desiredPlace, effect, offset);\n      if (result.position && this.props.overridePosition) {\n        result.position = this.props.overridePosition(result.position, currentEvent, currentTarget, node, place, desiredPlace, effect, offset);\n      }\n      if (result.isNewState) {\n        // Switch to reverse placement\n        return this.setState(result.newState, function () {\n          _this7.updatePosition(callbackAfter);\n        });\n      }\n      if (callbackAfter && typeof callbackAfter === 'function') {\n        callbackAfter();\n      }\n\n      // Set tooltip position\n      node.style.left = result.position.left + 'px';\n      node.style.top = result.position.top + 'px';\n    }\n\n    /**\n     * CLear all kinds of timeout of interval\n     */\n  }, {\n    key: \"clearTimer\",\n    value: function clearTimer() {\n      if (this.delayShowLoop) {\n        clearTimeout(this.delayShowLoop);\n        this.delayShowLoop = null;\n      }\n      if (this.delayHideLoop) {\n        clearTimeout(this.delayHideLoop);\n        this.delayHideLoop = null;\n      }\n      if (this.delayReshow) {\n        clearTimeout(this.delayReshow);\n        this.delayReshow = null;\n      }\n      if (this.intervalUpdateContent) {\n        clearInterval(this.intervalUpdateContent);\n        this.intervalUpdateContent = null;\n      }\n    }\n  }, {\n    key: \"hasCustomColors\",\n    value: function hasCustomColors() {\n      var _this8 = this;\n      return Boolean(Object.keys(this.state.customColors).find(function (color) {\n        return color !== 'border' && _this8.state.customColors[color];\n      }) || this.state.border && this.state.customColors['border']);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this9 = this;\n      var _this$state3 = this.state,\n        extraClass = _this$state3.extraClass,\n        html = _this$state3.html,\n        ariaProps = _this$state3.ariaProps,\n        disable = _this$state3.disable,\n        uuid = _this$state3.uuid;\n      var content = this.getTooltipContent();\n      var isEmptyTip = this.isEmptyTip(content);\n      var style = this.props.disableInternalStyle ? '' : generateTooltipStyle(this.state.uuid, this.state.customColors, this.state.type, this.state.border, this.state.padding, this.state.customRadius);\n      var tooltipClass = '__react_component_tooltip' + \" \".concat(this.state.uuid) + (this.state.show && !disable && !isEmptyTip ? ' show' : '') + (this.state.border ? ' ' + this.state.borderClass : '') + \" place-\".concat(this.state.place) + // top, bottom, left, right\n      \" type-\".concat(this.hasCustomColors() ? 'custom' : this.state.type) + (\n      // dark, success, warning, error, info, light, custom\n      this.props.delayUpdate ? ' allow_hover' : '') + (this.props.clickable ? ' allow_click' : '');\n      var Wrapper = this.props.wrapper;\n      if (ReactTooltip.supportedWrappers.indexOf(Wrapper) < 0) {\n        Wrapper = ReactTooltip.defaultProps.wrapper;\n      }\n      var wrapperClassName = [tooltipClass, extraClass].filter(Boolean).join(' ');\n      if (html) {\n        var htmlContent = \"\".concat(content).concat(style ? \"\\n<style aria-hidden=\\\"true\\\">\".concat(style, \"</style>\") : '');\n        return /*#__PURE__*/React.createElement(Wrapper, _extends({\n          className: \"\".concat(wrapperClassName),\n          id: this.props.id || uuid,\n          ref: function ref(_ref) {\n            return _this9.tooltipRef = _ref;\n          }\n        }, ariaProps, {\n          \"data-id\": \"tooltip\",\n          dangerouslySetInnerHTML: {\n            __html: htmlContent\n          }\n        }));\n      } else {\n        return /*#__PURE__*/React.createElement(Wrapper, _extends({\n          className: \"\".concat(wrapperClassName),\n          id: this.props.id || uuid\n        }, ariaProps, {\n          ref: function ref(_ref2) {\n            return _this9.tooltipRef = _ref2;\n          },\n          \"data-id\": \"tooltip\"\n        }), style && /*#__PURE__*/React.createElement(\"style\", {\n          dangerouslySetInnerHTML: {\n            __html: style\n          },\n          \"aria-hidden\": \"true\"\n        }), content);\n      }\n    }\n  }], [{\n    key: \"propTypes\",\n    get: function get() {\n      return {\n        uuid: PropTypes.string,\n        children: PropTypes.any,\n        place: PropTypes.string,\n        type: PropTypes.string,\n        effect: PropTypes.string,\n        offset: PropTypes.object,\n        padding: PropTypes.string,\n        multiline: PropTypes.bool,\n        border: PropTypes.bool,\n        borderClass: PropTypes.string,\n        textColor: PropTypes.string,\n        backgroundColor: PropTypes.string,\n        borderColor: PropTypes.string,\n        arrowColor: PropTypes.string,\n        arrowRadius: PropTypes.string,\n        tooltipRadius: PropTypes.string,\n        insecure: PropTypes.bool,\n        \"class\": PropTypes.string,\n        className: PropTypes.string,\n        id: PropTypes.string,\n        html: PropTypes.bool,\n        delayHide: PropTypes.number,\n        delayUpdate: PropTypes.number,\n        delayShow: PropTypes.number,\n        event: PropTypes.string,\n        eventOff: PropTypes.string,\n        isCapture: PropTypes.bool,\n        globalEventOff: PropTypes.string,\n        getContent: PropTypes.any,\n        afterShow: PropTypes.func,\n        afterHide: PropTypes.func,\n        overridePosition: PropTypes.func,\n        disable: PropTypes.bool,\n        scrollHide: PropTypes.bool,\n        resizeHide: PropTypes.bool,\n        wrapper: PropTypes.string,\n        bodyMode: PropTypes.bool,\n        possibleCustomEvents: PropTypes.string,\n        possibleCustomEventsOff: PropTypes.string,\n        clickable: PropTypes.bool,\n        disableInternalStyle: PropTypes.bool\n      };\n    }\n  }, {\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var ariaProps = prevState.ariaProps;\n      var newAriaProps = parseAria(nextProps);\n      var isChanged = Object.keys(newAriaProps).some(function (props) {\n        return newAriaProps[props] !== ariaProps[props];\n      });\n      if (!isChanged) {\n        return null;\n      }\n      return _objectSpread2(_objectSpread2({}, prevState), {}, {\n        ariaProps: newAriaProps\n      });\n    }\n  }]);\n  return ReactTooltip;\n}(React.Component), _defineProperty(_class2, \"defaultProps\", {\n  insecure: true,\n  resizeHide: true,\n  wrapper: 'div',\n  clickable: false\n}), _defineProperty(_class2, \"supportedWrappers\", ['div', 'span']), _defineProperty(_class2, \"displayName\", 'ReactTooltip'), _class2)) || _class) || _class) || _class) || _class) || _class) || _class) || _class;\n\nexport { ReactTooltip as default };\n//# sourceMappingURL=index.es.js.map\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n  __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nconst style = \"\";\n/**\n * @license\n * Copyright 2010-2022 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = \"143\";\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1e3;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3e3;\nconst sRGBEncoding = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\nconst NoColorSpace = \"\";\nconst SRGBColorSpace = \"srgb\";\nconst LinearSRGBColorSpace = \"srgb-linear\";\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\nconst GLSL1 = \"100\";\nconst GLSL3 = \"300 es\";\nconst _SRGBAFormat = 1035;\nclass EventDispatcher {\n  addEventListener(type, listener) {\n    if (this._listeners === void 0)\n      this._listeners = {};\n    const listeners = this._listeners;\n    if (listeners[type] === void 0) {\n      listeners[type] = [];\n    }\n    if (listeners[type].indexOf(listener) === -1) {\n      listeners[type].push(listener);\n    }\n  }\n  hasEventListener(type, listener) {\n    if (this._listeners === void 0)\n      return false;\n    const listeners = this._listeners;\n    return listeners[type] !== void 0 && listeners[type].indexOf(listener) !== -1;\n  }\n  removeEventListener(type, listener) {\n    if (this._listeners === void 0)\n      return;\n    const listeners = this._listeners;\n    const listenerArray = listeners[type];\n    if (listenerArray !== void 0) {\n      const index = listenerArray.indexOf(listener);\n      if (index !== -1) {\n        listenerArray.splice(index, 1);\n      }\n    }\n  }\n  dispatchEvent(event) {\n    if (this._listeners === void 0)\n      return;\n    const listeners = this._listeners;\n    const listenerArray = listeners[event.type];\n    if (listenerArray !== void 0) {\n      event.target = this;\n      const array = listenerArray.slice(0);\n      for (let i = 0, l = array.length; i < l; i++) {\n        array[i].call(this, event);\n      }\n      event.target = null;\n    }\n  }\n}\nconst _lut = [\"00\", \"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"0a\", \"0b\", \"0c\", \"0d\", \"0e\", \"0f\", \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\", \"1a\", \"1b\", \"1c\", \"1d\", \"1e\", \"1f\", \"20\", \"21\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\", \"28\", \"29\", \"2a\", \"2b\", \"2c\", \"2d\", \"2e\", \"2f\", \"30\", \"31\", \"32\", \"33\", \"34\", \"35\", \"36\", \"37\", \"38\", \"39\", \"3a\", \"3b\", \"3c\", \"3d\", \"3e\", \"3f\", \"40\", \"41\", \"42\", \"43\", \"44\", \"45\", \"46\", \"47\", \"48\", \"49\", \"4a\", \"4b\", \"4c\", \"4d\", \"4e\", \"4f\", \"50\", \"51\", \"52\", \"53\", \"54\", \"55\", \"56\", \"57\", \"58\", \"59\", \"5a\", \"5b\", \"5c\", \"5d\", \"5e\", \"5f\", \"60\", \"61\", \"62\", \"63\", \"64\", \"65\", \"66\", \"67\", \"68\", \"69\", \"6a\", \"6b\", \"6c\", \"6d\", \"6e\", \"6f\", \"70\", \"71\", \"72\", \"73\", \"74\", \"75\", \"76\", \"77\", \"78\", \"79\", \"7a\", \"7b\", \"7c\", \"7d\", \"7e\", \"7f\", \"80\", \"81\", \"82\", \"83\", \"84\", \"85\", \"86\", \"87\", \"88\", \"89\", \"8a\", \"8b\", \"8c\", \"8d\", \"8e\", \"8f\", \"90\", \"91\", \"92\", \"93\", \"94\", \"95\", \"96\", \"97\", \"98\", \"99\", \"9a\", \"9b\", \"9c\", \"9d\", \"9e\", \"9f\", \"a0\", \"a1\", \"a2\", \"a3\", \"a4\", \"a5\", \"a6\", \"a7\", \"a8\", \"a9\", \"aa\", \"ab\", \"ac\", \"ad\", \"ae\", \"af\", \"b0\", \"b1\", \"b2\", \"b3\", \"b4\", \"b5\", \"b6\", \"b7\", \"b8\", \"b9\", \"ba\", \"bb\", \"bc\", \"bd\", \"be\", \"bf\", \"c0\", \"c1\", \"c2\", \"c3\", \"c4\", \"c5\", \"c6\", \"c7\", \"c8\", \"c9\", \"ca\", \"cb\", \"cc\", \"cd\", \"ce\", \"cf\", \"d0\", \"d1\", \"d2\", \"d3\", \"d4\", \"d5\", \"d6\", \"d7\", \"d8\", \"d9\", \"da\", \"db\", \"dc\", \"dd\", \"de\", \"df\", \"e0\", \"e1\", \"e2\", \"e3\", \"e4\", \"e5\", \"e6\", \"e7\", \"e8\", \"e9\", \"ea\", \"eb\", \"ec\", \"ed\", \"ee\", \"ef\", \"f0\", \"f1\", \"f2\", \"f3\", \"f4\", \"f5\", \"f6\", \"f7\", \"f8\", \"f9\", \"fa\", \"fb\", \"fc\", \"fd\", \"fe\", \"ff\"];\nlet _seed = 1234567;\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\nfunction generateUUID() {\n  const d0 = Math.random() * 4294967295 | 0;\n  const d1 = Math.random() * 4294967295 | 0;\n  const d2 = Math.random() * 4294967295 | 0;\n  const d3 = Math.random() * 4294967295 | 0;\n  const uuid = _lut[d0 & 255] + _lut[d0 >> 8 & 255] + _lut[d0 >> 16 & 255] + _lut[d0 >> 24 & 255] + \"-\" + _lut[d1 & 255] + _lut[d1 >> 8 & 255] + \"-\" + _lut[d1 >> 16 & 15 | 64] + _lut[d1 >> 24 & 255] + \"-\" + _lut[d2 & 63 | 128] + _lut[d2 >> 8 & 255] + \"-\" + _lut[d2 >> 16 & 255] + _lut[d2 >> 24 & 255] + _lut[d3 & 255] + _lut[d3 >> 8 & 255] + _lut[d3 >> 16 & 255] + _lut[d3 >> 24 & 255];\n  return uuid.toLowerCase();\n}\nfunction clamp$1(value, min, max) {\n  return Math.max(min, Math.min(max, value));\n}\nfunction euclideanModulo(n, m) {\n  return (n % m + m) % m;\n}\nfunction mapLinear(x, a1, a2, b1, b2) {\n  return b1 + (x - a1) * (b2 - b1) / (a2 - a1);\n}\nfunction inverseLerp(x, y, value) {\n  if (x !== y) {\n    return (value - x) / (y - x);\n  } else {\n    return 0;\n  }\n}\nfunction lerp(x, y, t) {\n  return (1 - t) * x + t * y;\n}\nfunction damp(x, y, lambda, dt) {\n  return lerp(x, y, 1 - Math.exp(-lambda * dt));\n}\nfunction pingpong(x, length = 1) {\n  return length - Math.abs(euclideanModulo(x, length * 2) - length);\n}\nfunction smoothstep(x, min, max) {\n  if (x <= min)\n    return 0;\n  if (x >= max)\n    return 1;\n  x = (x - min) / (max - min);\n  return x * x * (3 - 2 * x);\n}\nfunction smootherstep(x, min, max) {\n  if (x <= min)\n    return 0;\n  if (x >= max)\n    return 1;\n  x = (x - min) / (max - min);\n  return x * x * x * (x * (x * 6 - 15) + 10);\n}\nfunction randInt(low, high) {\n  return low + Math.floor(Math.random() * (high - low + 1));\n}\nfunction randFloat(low, high) {\n  return low + Math.random() * (high - low);\n}\nfunction randFloatSpread(range) {\n  return range * (0.5 - Math.random());\n}\nfunction seededRandom(s) {\n  if (s !== void 0)\n    _seed = s;\n  let t = _seed += 1831565813;\n  t = Math.imul(t ^ t >>> 15, t | 1);\n  t ^= t + Math.imul(t ^ t >>> 7, t | 61);\n  return ((t ^ t >>> 14) >>> 0) / 4294967296;\n}\nfunction degToRad(degrees) {\n  return degrees * DEG2RAD;\n}\nfunction radToDeg(radians) {\n  return radians * RAD2DEG;\n}\nfunction isPowerOfTwo(value) {\n  return (value & value - 1) === 0 && value !== 0;\n}\nfunction ceilPowerOfTwo(value) {\n  return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));\n}\nfunction floorPowerOfTwo(value) {\n  return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));\n}\nfunction setQuaternionFromProperEuler(q, a, b, c, order) {\n  const cos = Math.cos;\n  const sin = Math.sin;\n  const c2 = cos(b / 2);\n  const s2 = sin(b / 2);\n  const c13 = cos((a + c) / 2);\n  const s13 = sin((a + c) / 2);\n  const c1_3 = cos((a - c) / 2);\n  const s1_3 = sin((a - c) / 2);\n  const c3_1 = cos((c - a) / 2);\n  const s3_1 = sin((c - a) / 2);\n  switch (order) {\n    case \"XYX\":\n      q.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13);\n      break;\n    case \"YZY\":\n      q.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13);\n      break;\n    case \"ZXZ\":\n      q.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13);\n      break;\n    case \"XZX\":\n      q.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13);\n      break;\n    case \"YXY\":\n      q.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13);\n      break;\n    case \"ZYZ\":\n      q.set(s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13);\n      break;\n    default:\n      console.warn(\"THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: \" + order);\n  }\n}\nfunction denormalize$1(value, array) {\n  switch (array.constructor) {\n    case Float32Array:\n      return value;\n    case Uint16Array:\n      return value / 65535;\n    case Uint8Array:\n      return value / 255;\n    case Int16Array:\n      return Math.max(value / 32767, -1);\n    case Int8Array:\n      return Math.max(value / 127, -1);\n    default:\n      throw new Error(\"Invalid component type.\");\n  }\n}\nfunction normalize(value, array) {\n  switch (array.constructor) {\n    case Float32Array:\n      return value;\n    case Uint16Array:\n      return Math.round(value * 65535);\n    case Uint8Array:\n      return Math.round(value * 255);\n    case Int16Array:\n      return Math.round(value * 32767);\n    case Int8Array:\n      return Math.round(value * 127);\n    default:\n      throw new Error(\"Invalid component type.\");\n  }\n}\nvar MathUtils = /* @__PURE__ */ Object.freeze({\n  __proto__: null,\n  DEG2RAD,\n  RAD2DEG,\n  generateUUID,\n  clamp: clamp$1,\n  euclideanModulo,\n  mapLinear,\n  inverseLerp,\n  lerp,\n  damp,\n  pingpong,\n  smoothstep,\n  smootherstep,\n  randInt,\n  randFloat,\n  randFloatSpread,\n  seededRandom,\n  degToRad,\n  radToDeg,\n  isPowerOfTwo,\n  ceilPowerOfTwo,\n  floorPowerOfTwo,\n  setQuaternionFromProperEuler,\n  normalize,\n  denormalize: denormalize$1\n});\nclass Vector2 {\n  constructor(x = 0, y = 0) {\n    Vector2.prototype.isVector2 = true;\n    this.x = x;\n    this.y = y;\n  }\n  get width() {\n    return this.x;\n  }\n  set width(value) {\n    this.x = value;\n  }\n  get height() {\n    return this.y;\n  }\n  set height(value) {\n    this.y = value;\n  }\n  set(x, y) {\n    this.x = x;\n    this.y = y;\n    return this;\n  }\n  setScalar(scalar) {\n    this.x = scalar;\n    this.y = scalar;\n    return this;\n  }\n  setX(x) {\n    this.x = x;\n    return this;\n  }\n  setY(y) {\n    this.y = y;\n    return this;\n  }\n  setComponent(index, value) {\n    switch (index) {\n      case 0:\n        this.x = value;\n        break;\n      case 1:\n        this.y = value;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n    return this;\n  }\n  getComponent(index) {\n    switch (index) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n  }\n  clone() {\n    return new this.constructor(this.x, this.y);\n  }\n  copy(v) {\n    this.x = v.x;\n    this.y = v.y;\n    return this;\n  }\n  add(v) {\n    this.x += v.x;\n    this.y += v.y;\n    return this;\n  }\n  addScalar(s) {\n    this.x += s;\n    this.y += s;\n    return this;\n  }\n  addVectors(a, b) {\n    this.x = a.x + b.x;\n    this.y = a.y + b.y;\n    return this;\n  }\n  addScaledVector(v, s) {\n    this.x += v.x * s;\n    this.y += v.y * s;\n    return this;\n  }\n  sub(v) {\n    this.x -= v.x;\n    this.y -= v.y;\n    return this;\n  }\n  subScalar(s) {\n    this.x -= s;\n    this.y -= s;\n    return this;\n  }\n  subVectors(a, b) {\n    this.x = a.x - b.x;\n    this.y = a.y - b.y;\n    return this;\n  }\n  multiply(v) {\n    this.x *= v.x;\n    this.y *= v.y;\n    return this;\n  }\n  multiplyScalar(scalar) {\n    this.x *= scalar;\n    this.y *= scalar;\n    return this;\n  }\n  divide(v) {\n    this.x /= v.x;\n    this.y /= v.y;\n    return this;\n  }\n  divideScalar(scalar) {\n    return this.multiplyScalar(1 / scalar);\n  }\n  applyMatrix3(m) {\n    const x = this.x, y = this.y;\n    const e = m.elements;\n    this.x = e[0] * x + e[3] * y + e[6];\n    this.y = e[1] * x + e[4] * y + e[7];\n    return this;\n  }\n  min(v) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    return this;\n  }\n  max(v) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    return this;\n  }\n  clamp(min, max) {\n    this.x = Math.max(min.x, Math.min(max.x, this.x));\n    this.y = Math.max(min.y, Math.min(max.y, this.y));\n    return this;\n  }\n  clampScalar(minVal, maxVal) {\n    this.x = Math.max(minVal, Math.min(maxVal, this.x));\n    this.y = Math.max(minVal, Math.min(maxVal, this.y));\n    return this;\n  }\n  clampLength(min, max) {\n    const length = this.length();\n    return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n  }\n  floor() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n    return this;\n  }\n  ceil() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n    return this;\n  }\n  round() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n    return this;\n  }\n  roundToZero() {\n    this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n    this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n    return this;\n  }\n  negate() {\n    this.x = -this.x;\n    this.y = -this.y;\n    return this;\n  }\n  dot(v) {\n    return this.x * v.x + this.y * v.y;\n  }\n  cross(v) {\n    return this.x * v.y - this.y * v.x;\n  }\n  lengthSq() {\n    return this.x * this.x + this.y * this.y;\n  }\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y);\n  }\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n  angle() {\n    const angle = Math.atan2(-this.y, -this.x) + Math.PI;\n    return angle;\n  }\n  distanceTo(v) {\n    return Math.sqrt(this.distanceToSquared(v));\n  }\n  distanceToSquared(v) {\n    const dx = this.x - v.x, dy = this.y - v.y;\n    return dx * dx + dy * dy;\n  }\n  manhattanDistanceTo(v) {\n    return Math.abs(this.x - v.x) + Math.abs(this.y - v.y);\n  }\n  setLength(length) {\n    return this.normalize().multiplyScalar(length);\n  }\n  lerp(v, alpha) {\n    this.x += (v.x - this.x) * alpha;\n    this.y += (v.y - this.y) * alpha;\n    return this;\n  }\n  lerpVectors(v1, v2, alpha) {\n    this.x = v1.x + (v2.x - v1.x) * alpha;\n    this.y = v1.y + (v2.y - v1.y) * alpha;\n    return this;\n  }\n  equals(v) {\n    return v.x === this.x && v.y === this.y;\n  }\n  fromArray(array, offset = 0) {\n    this.x = array[offset];\n    this.y = array[offset + 1];\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this.x;\n    array[offset + 1] = this.y;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this.x = attribute.getX(index);\n    this.y = attribute.getY(index);\n    return this;\n  }\n  rotateAround(center, angle) {\n    const c = Math.cos(angle), s = Math.sin(angle);\n    const x = this.x - center.x;\n    const y = this.y - center.y;\n    this.x = x * c - y * s + center.x;\n    this.y = x * s + y * c + center.y;\n    return this;\n  }\n  random() {\n    this.x = Math.random();\n    this.y = Math.random();\n    return this;\n  }\n  *[Symbol.iterator]() {\n    yield this.x;\n    yield this.y;\n  }\n}\nclass Matrix3 {\n  constructor() {\n    Matrix3.prototype.isMatrix3 = true;\n    this.elements = [\n      1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      1\n    ];\n  }\n  set(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n    const te = this.elements;\n    te[0] = n11;\n    te[1] = n21;\n    te[2] = n31;\n    te[3] = n12;\n    te[4] = n22;\n    te[5] = n32;\n    te[6] = n13;\n    te[7] = n23;\n    te[8] = n33;\n    return this;\n  }\n  identity() {\n    this.set(\n      1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  copy(m) {\n    const te = this.elements;\n    const me = m.elements;\n    te[0] = me[0];\n    te[1] = me[1];\n    te[2] = me[2];\n    te[3] = me[3];\n    te[4] = me[4];\n    te[5] = me[5];\n    te[6] = me[6];\n    te[7] = me[7];\n    te[8] = me[8];\n    return this;\n  }\n  extractBasis(xAxis, yAxis, zAxis) {\n    xAxis.setFromMatrix3Column(this, 0);\n    yAxis.setFromMatrix3Column(this, 1);\n    zAxis.setFromMatrix3Column(this, 2);\n    return this;\n  }\n  setFromMatrix4(m) {\n    const me = m.elements;\n    this.set(\n      me[0],\n      me[4],\n      me[8],\n      me[1],\n      me[5],\n      me[9],\n      me[2],\n      me[6],\n      me[10]\n    );\n    return this;\n  }\n  multiply(m) {\n    return this.multiplyMatrices(this, m);\n  }\n  premultiply(m) {\n    return this.multiplyMatrices(m, this);\n  }\n  multiplyMatrices(a, b) {\n    const ae = a.elements;\n    const be = b.elements;\n    const te = this.elements;\n    const a11 = ae[0], a12 = ae[3], a13 = ae[6];\n    const a21 = ae[1], a22 = ae[4], a23 = ae[7];\n    const a31 = ae[2], a32 = ae[5], a33 = ae[8];\n    const b11 = be[0], b12 = be[3], b13 = be[6];\n    const b21 = be[1], b22 = be[4], b23 = be[7];\n    const b31 = be[2], b32 = be[5], b33 = be[8];\n    te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n    te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n    te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n    te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n    te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n    te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n    te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n    te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n    te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n    return this;\n  }\n  multiplyScalar(s) {\n    const te = this.elements;\n    te[0] *= s;\n    te[3] *= s;\n    te[6] *= s;\n    te[1] *= s;\n    te[4] *= s;\n    te[7] *= s;\n    te[2] *= s;\n    te[5] *= s;\n    te[8] *= s;\n    return this;\n  }\n  determinant() {\n    const te = this.elements;\n    const a = te[0], b = te[1], c = te[2], d = te[3], e = te[4], f = te[5], g = te[6], h = te[7], i = te[8];\n    return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n  }\n  invert() {\n    const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n12 = te[3], n22 = te[4], n32 = te[5], n13 = te[6], n23 = te[7], n33 = te[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, t13 = n23 * n12 - n22 * n13, det = n11 * t11 + n21 * t12 + n31 * t13;\n    if (det === 0)\n      return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n    const detInv = 1 / det;\n    te[0] = t11 * detInv;\n    te[1] = (n31 * n23 - n33 * n21) * detInv;\n    te[2] = (n32 * n21 - n31 * n22) * detInv;\n    te[3] = t12 * detInv;\n    te[4] = (n33 * n11 - n31 * n13) * detInv;\n    te[5] = (n31 * n12 - n32 * n11) * detInv;\n    te[6] = t13 * detInv;\n    te[7] = (n21 * n13 - n23 * n11) * detInv;\n    te[8] = (n22 * n11 - n21 * n12) * detInv;\n    return this;\n  }\n  transpose() {\n    let tmp2;\n    const m = this.elements;\n    tmp2 = m[1];\n    m[1] = m[3];\n    m[3] = tmp2;\n    tmp2 = m[2];\n    m[2] = m[6];\n    m[6] = tmp2;\n    tmp2 = m[5];\n    m[5] = m[7];\n    m[7] = tmp2;\n    return this;\n  }\n  getNormalMatrix(matrix4) {\n    return this.setFromMatrix4(matrix4).invert().transpose();\n  }\n  transposeIntoArray(r) {\n    const m = this.elements;\n    r[0] = m[0];\n    r[1] = m[3];\n    r[2] = m[6];\n    r[3] = m[1];\n    r[4] = m[4];\n    r[5] = m[7];\n    r[6] = m[2];\n    r[7] = m[5];\n    r[8] = m[8];\n    return this;\n  }\n  setUvTransform(tx, ty, sx, sy, rotation, cx, cy) {\n    const c = Math.cos(rotation);\n    const s = Math.sin(rotation);\n    this.set(\n      sx * c,\n      sx * s,\n      -sx * (c * cx + s * cy) + cx + tx,\n      -sy * s,\n      sy * c,\n      -sy * (-s * cx + c * cy) + cy + ty,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  scale(sx, sy) {\n    const te = this.elements;\n    te[0] *= sx;\n    te[3] *= sx;\n    te[6] *= sx;\n    te[1] *= sy;\n    te[4] *= sy;\n    te[7] *= sy;\n    return this;\n  }\n  rotate(theta) {\n    const c = Math.cos(theta);\n    const s = Math.sin(theta);\n    const te = this.elements;\n    const a11 = te[0], a12 = te[3], a13 = te[6];\n    const a21 = te[1], a22 = te[4], a23 = te[7];\n    te[0] = c * a11 + s * a21;\n    te[3] = c * a12 + s * a22;\n    te[6] = c * a13 + s * a23;\n    te[1] = -s * a11 + c * a21;\n    te[4] = -s * a12 + c * a22;\n    te[7] = -s * a13 + c * a23;\n    return this;\n  }\n  translate(tx, ty) {\n    const te = this.elements;\n    te[0] += tx * te[2];\n    te[3] += tx * te[5];\n    te[6] += tx * te[8];\n    te[1] += ty * te[2];\n    te[4] += ty * te[5];\n    te[7] += ty * te[8];\n    return this;\n  }\n  equals(matrix) {\n    const te = this.elements;\n    const me = matrix.elements;\n    for (let i = 0; i < 9; i++) {\n      if (te[i] !== me[i])\n        return false;\n    }\n    return true;\n  }\n  fromArray(array, offset = 0) {\n    for (let i = 0; i < 9; i++) {\n      this.elements[i] = array[i + offset];\n    }\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    const te = this.elements;\n    array[offset] = te[0];\n    array[offset + 1] = te[1];\n    array[offset + 2] = te[2];\n    array[offset + 3] = te[3];\n    array[offset + 4] = te[4];\n    array[offset + 5] = te[5];\n    array[offset + 6] = te[6];\n    array[offset + 7] = te[7];\n    array[offset + 8] = te[8];\n    return array;\n  }\n  clone() {\n    return new this.constructor().fromArray(this.elements);\n  }\n}\nfunction arrayNeedsUint32(array) {\n  for (let i = array.length - 1; i >= 0; --i) {\n    if (array[i] > 65535)\n      return true;\n  }\n  return false;\n}\nconst TYPED_ARRAYS = {\n  Int8Array,\n  Uint8Array,\n  Uint8ClampedArray,\n  Int16Array,\n  Uint16Array,\n  Int32Array,\n  Uint32Array,\n  Float32Array,\n  Float64Array\n};\nfunction getTypedArray(type, buffer) {\n  return new TYPED_ARRAYS[type](buffer);\n}\nfunction createElementNS(name) {\n  return document.createElementNS(\"http://www.w3.org/1999/xhtml\", name);\n}\nfunction SRGBToLinear(c) {\n  return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4);\n}\nfunction LinearToSRGB(c) {\n  return c < 31308e-7 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055;\n}\nconst FN = {\n  [SRGBColorSpace]: { [LinearSRGBColorSpace]: SRGBToLinear },\n  [LinearSRGBColorSpace]: { [SRGBColorSpace]: LinearToSRGB }\n};\nconst ColorManagement = {\n  legacyMode: true,\n  get workingColorSpace() {\n    return LinearSRGBColorSpace;\n  },\n  set workingColorSpace(colorSpace) {\n    console.warn(\"THREE.ColorManagement: .workingColorSpace is readonly.\");\n  },\n  convert: function(color, sourceColorSpace, targetColorSpace) {\n    if (this.legacyMode || sourceColorSpace === targetColorSpace || !sourceColorSpace || !targetColorSpace) {\n      return color;\n    }\n    if (FN[sourceColorSpace] && FN[sourceColorSpace][targetColorSpace] !== void 0) {\n      const fn = FN[sourceColorSpace][targetColorSpace];\n      color.r = fn(color.r);\n      color.g = fn(color.g);\n      color.b = fn(color.b);\n      return color;\n    }\n    throw new Error(\"Unsupported color space conversion.\");\n  },\n  fromWorkingColorSpace: function(color, targetColorSpace) {\n    return this.convert(color, this.workingColorSpace, targetColorSpace);\n  },\n  toWorkingColorSpace: function(color, sourceColorSpace) {\n    return this.convert(color, sourceColorSpace, this.workingColorSpace);\n  }\n};\nconst _colorKeywords = {\n  \"aliceblue\": 15792383,\n  \"antiquewhite\": 16444375,\n  \"aqua\": 65535,\n  \"aquamarine\": 8388564,\n  \"azure\": 15794175,\n  \"beige\": 16119260,\n  \"bisque\": 16770244,\n  \"black\": 0,\n  \"blanchedalmond\": 16772045,\n  \"blue\": 255,\n  \"blueviolet\": 9055202,\n  \"brown\": 10824234,\n  \"burlywood\": 14596231,\n  \"cadetblue\": 6266528,\n  \"chartreuse\": 8388352,\n  \"chocolate\": 13789470,\n  \"coral\": 16744272,\n  \"cornflowerblue\": 6591981,\n  \"cornsilk\": 16775388,\n  \"crimson\": 14423100,\n  \"cyan\": 65535,\n  \"darkblue\": 139,\n  \"darkcyan\": 35723,\n  \"darkgoldenrod\": 12092939,\n  \"darkgray\": 11119017,\n  \"darkgreen\": 25600,\n  \"darkgrey\": 11119017,\n  \"darkkhaki\": 12433259,\n  \"darkmagenta\": 9109643,\n  \"darkolivegreen\": 5597999,\n  \"darkorange\": 16747520,\n  \"darkorchid\": 10040012,\n  \"darkred\": 9109504,\n  \"darksalmon\": 15308410,\n  \"darkseagreen\": 9419919,\n  \"darkslateblue\": 4734347,\n  \"darkslategray\": 3100495,\n  \"darkslategrey\": 3100495,\n  \"darkturquoise\": 52945,\n  \"darkviolet\": 9699539,\n  \"deeppink\": 16716947,\n  \"deepskyblue\": 49151,\n  \"dimgray\": 6908265,\n  \"dimgrey\": 6908265,\n  \"dodgerblue\": 2003199,\n  \"firebrick\": 11674146,\n  \"floralwhite\": 16775920,\n  \"forestgreen\": 2263842,\n  \"fuchsia\": 16711935,\n  \"gainsboro\": 14474460,\n  \"ghostwhite\": 16316671,\n  \"gold\": 16766720,\n  \"goldenrod\": 14329120,\n  \"gray\": 8421504,\n  \"green\": 32768,\n  \"greenyellow\": 11403055,\n  \"grey\": 8421504,\n  \"honeydew\": 15794160,\n  \"hotpink\": 16738740,\n  \"indianred\": 13458524,\n  \"indigo\": 4915330,\n  \"ivory\": 16777200,\n  \"khaki\": 15787660,\n  \"lavender\": 15132410,\n  \"lavenderblush\": 16773365,\n  \"lawngreen\": 8190976,\n  \"lemonchiffon\": 16775885,\n  \"lightblue\": 11393254,\n  \"lightcoral\": 15761536,\n  \"lightcyan\": 14745599,\n  \"lightgoldenrodyellow\": 16448210,\n  \"lightgray\": 13882323,\n  \"lightgreen\": 9498256,\n  \"lightgrey\": 13882323,\n  \"lightpink\": 16758465,\n  \"lightsalmon\": 16752762,\n  \"lightseagreen\": 2142890,\n  \"lightskyblue\": 8900346,\n  \"lightslategray\": 7833753,\n  \"lightslategrey\": 7833753,\n  \"lightsteelblue\": 11584734,\n  \"lightyellow\": 16777184,\n  \"lime\": 65280,\n  \"limegreen\": 3329330,\n  \"linen\": 16445670,\n  \"magenta\": 16711935,\n  \"maroon\": 8388608,\n  \"mediumaquamarine\": 6737322,\n  \"mediumblue\": 205,\n  \"mediumorchid\": 12211667,\n  \"mediumpurple\": 9662683,\n  \"mediumseagreen\": 3978097,\n  \"mediumslateblue\": 8087790,\n  \"mediumspringgreen\": 64154,\n  \"mediumturquoise\": 4772300,\n  \"mediumvioletred\": 13047173,\n  \"midnightblue\": 1644912,\n  \"mintcream\": 16121850,\n  \"mistyrose\": 16770273,\n  \"moccasin\": 16770229,\n  \"navajowhite\": 16768685,\n  \"navy\": 128,\n  \"oldlace\": 16643558,\n  \"olive\": 8421376,\n  \"olivedrab\": 7048739,\n  \"orange\": 16753920,\n  \"orangered\": 16729344,\n  \"orchid\": 14315734,\n  \"palegoldenrod\": 15657130,\n  \"palegreen\": 10025880,\n  \"paleturquoise\": 11529966,\n  \"palevioletred\": 14381203,\n  \"papayawhip\": 16773077,\n  \"peachpuff\": 16767673,\n  \"peru\": 13468991,\n  \"pink\": 16761035,\n  \"plum\": 14524637,\n  \"powderblue\": 11591910,\n  \"purple\": 8388736,\n  \"rebeccapurple\": 6697881,\n  \"red\": 16711680,\n  \"rosybrown\": 12357519,\n  \"royalblue\": 4286945,\n  \"saddlebrown\": 9127187,\n  \"salmon\": 16416882,\n  \"sandybrown\": 16032864,\n  \"seagreen\": 3050327,\n  \"seashell\": 16774638,\n  \"sienna\": 10506797,\n  \"silver\": 12632256,\n  \"skyblue\": 8900331,\n  \"slateblue\": 6970061,\n  \"slategray\": 7372944,\n  \"slategrey\": 7372944,\n  \"snow\": 16775930,\n  \"springgreen\": 65407,\n  \"steelblue\": 4620980,\n  \"tan\": 13808780,\n  \"teal\": 32896,\n  \"thistle\": 14204888,\n  \"tomato\": 16737095,\n  \"turquoise\": 4251856,\n  \"violet\": 15631086,\n  \"wheat\": 16113331,\n  \"white\": 16777215,\n  \"whitesmoke\": 16119285,\n  \"yellow\": 16776960,\n  \"yellowgreen\": 10145074\n};\nconst _rgb = { r: 0, g: 0, b: 0 };\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\nfunction hue2rgb(p, q, t) {\n  if (t < 0)\n    t += 1;\n  if (t > 1)\n    t -= 1;\n  if (t < 1 / 6)\n    return p + (q - p) * 6 * t;\n  if (t < 1 / 2)\n    return q;\n  if (t < 2 / 3)\n    return p + (q - p) * 6 * (2 / 3 - t);\n  return p;\n}\nfunction toComponents(source, target) {\n  target.r = source.r;\n  target.g = source.g;\n  target.b = source.b;\n  return target;\n}\nclass Color {\n  constructor(r, g, b) {\n    this.isColor = true;\n    this.r = 1;\n    this.g = 1;\n    this.b = 1;\n    if (g === void 0 && b === void 0) {\n      return this.set(r);\n    }\n    return this.setRGB(r, g, b);\n  }\n  set(value) {\n    if (value && value.isColor) {\n      this.copy(value);\n    } else if (typeof value === \"number\") {\n      this.setHex(value);\n    } else if (typeof value === \"string\") {\n      this.setStyle(value);\n    }\n    return this;\n  }\n  setScalar(scalar) {\n    this.r = scalar;\n    this.g = scalar;\n    this.b = scalar;\n    return this;\n  }\n  setHex(hex, colorSpace = SRGBColorSpace) {\n    hex = Math.floor(hex);\n    this.r = (hex >> 16 & 255) / 255;\n    this.g = (hex >> 8 & 255) / 255;\n    this.b = (hex & 255) / 255;\n    ColorManagement.toWorkingColorSpace(this, colorSpace);\n    return this;\n  }\n  setRGB(r, g, b, colorSpace = LinearSRGBColorSpace) {\n    this.r = r;\n    this.g = g;\n    this.b = b;\n    ColorManagement.toWorkingColorSpace(this, colorSpace);\n    return this;\n  }\n  setHSL(h, s, l, colorSpace = LinearSRGBColorSpace) {\n    h = euclideanModulo(h, 1);\n    s = clamp$1(s, 0, 1);\n    l = clamp$1(l, 0, 1);\n    if (s === 0) {\n      this.r = this.g = this.b = l;\n    } else {\n      const p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n      const q = 2 * l - p;\n      this.r = hue2rgb(q, p, h + 1 / 3);\n      this.g = hue2rgb(q, p, h);\n      this.b = hue2rgb(q, p, h - 1 / 3);\n    }\n    ColorManagement.toWorkingColorSpace(this, colorSpace);\n    return this;\n  }\n  setStyle(style2, colorSpace = SRGBColorSpace) {\n    function handleAlpha(string) {\n      if (string === void 0)\n        return;\n      if (parseFloat(string) < 1) {\n        console.warn(\"THREE.Color: Alpha component of \" + style2 + \" will be ignored.\");\n      }\n    }\n    let m;\n    if (m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(style2)) {\n      let color;\n      const name = m[1];\n      const components = m[2];\n      switch (name) {\n        case \"rgb\":\n        case \"rgba\":\n          if (color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n            this.r = Math.min(255, parseInt(color[1], 10)) / 255;\n            this.g = Math.min(255, parseInt(color[2], 10)) / 255;\n            this.b = Math.min(255, parseInt(color[3], 10)) / 255;\n            ColorManagement.toWorkingColorSpace(this, colorSpace);\n            handleAlpha(color[4]);\n            return this;\n          }\n          if (color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n            this.r = Math.min(100, parseInt(color[1], 10)) / 100;\n            this.g = Math.min(100, parseInt(color[2], 10)) / 100;\n            this.b = Math.min(100, parseInt(color[3], 10)) / 100;\n            ColorManagement.toWorkingColorSpace(this, colorSpace);\n            handleAlpha(color[4]);\n            return this;\n          }\n          break;\n        case \"hsl\":\n        case \"hsla\":\n          if (color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n            const h = parseFloat(color[1]) / 360;\n            const s = parseInt(color[2], 10) / 100;\n            const l = parseInt(color[3], 10) / 100;\n            handleAlpha(color[4]);\n            return this.setHSL(h, s, l, colorSpace);\n          }\n          break;\n      }\n    } else if (m = /^\\#([A-Fa-f\\d]+)$/.exec(style2)) {\n      const hex = m[1];\n      const size = hex.length;\n      if (size === 3) {\n        this.r = parseInt(hex.charAt(0) + hex.charAt(0), 16) / 255;\n        this.g = parseInt(hex.charAt(1) + hex.charAt(1), 16) / 255;\n        this.b = parseInt(hex.charAt(2) + hex.charAt(2), 16) / 255;\n        ColorManagement.toWorkingColorSpace(this, colorSpace);\n        return this;\n      } else if (size === 6) {\n        this.r = parseInt(hex.charAt(0) + hex.charAt(1), 16) / 255;\n        this.g = parseInt(hex.charAt(2) + hex.charAt(3), 16) / 255;\n        this.b = parseInt(hex.charAt(4) + hex.charAt(5), 16) / 255;\n        ColorManagement.toWorkingColorSpace(this, colorSpace);\n        return this;\n      }\n    }\n    if (style2 && style2.length > 0) {\n      return this.setColorName(style2, colorSpace);\n    }\n    return this;\n  }\n  setColorName(style2, colorSpace = SRGBColorSpace) {\n    const hex = _colorKeywords[style2.toLowerCase()];\n    if (hex !== void 0) {\n      this.setHex(hex, colorSpace);\n    } else {\n      console.warn(\"THREE.Color: Unknown color \" + style2);\n    }\n    return this;\n  }\n  clone() {\n    return new this.constructor(this.r, this.g, this.b);\n  }\n  copy(color) {\n    this.r = color.r;\n    this.g = color.g;\n    this.b = color.b;\n    return this;\n  }\n  copySRGBToLinear(color) {\n    this.r = SRGBToLinear(color.r);\n    this.g = SRGBToLinear(color.g);\n    this.b = SRGBToLinear(color.b);\n    return this;\n  }\n  copyLinearToSRGB(color) {\n    this.r = LinearToSRGB(color.r);\n    this.g = LinearToSRGB(color.g);\n    this.b = LinearToSRGB(color.b);\n    return this;\n  }\n  convertSRGBToLinear() {\n    this.copySRGBToLinear(this);\n    return this;\n  }\n  convertLinearToSRGB() {\n    this.copyLinearToSRGB(this);\n    return this;\n  }\n  getHex(colorSpace = SRGBColorSpace) {\n    ColorManagement.fromWorkingColorSpace(toComponents(this, _rgb), colorSpace);\n    return clamp$1(_rgb.r * 255, 0, 255) << 16 ^ clamp$1(_rgb.g * 255, 0, 255) << 8 ^ clamp$1(_rgb.b * 255, 0, 255) << 0;\n  }\n  getHexString(colorSpace = SRGBColorSpace) {\n    return (\"000000\" + this.getHex(colorSpace).toString(16)).slice(-6);\n  }\n  getHSL(target, colorSpace = LinearSRGBColorSpace) {\n    ColorManagement.fromWorkingColorSpace(toComponents(this, _rgb), colorSpace);\n    const r = _rgb.r, g = _rgb.g, b = _rgb.b;\n    const max = Math.max(r, g, b);\n    const min = Math.min(r, g, b);\n    let hue, saturation;\n    const lightness = (min + max) / 2;\n    if (min === max) {\n      hue = 0;\n      saturation = 0;\n    } else {\n      const delta = max - min;\n      saturation = lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min);\n      switch (max) {\n        case r:\n          hue = (g - b) / delta + (g < b ? 6 : 0);\n          break;\n        case g:\n          hue = (b - r) / delta + 2;\n          break;\n        case b:\n          hue = (r - g) / delta + 4;\n          break;\n      }\n      hue /= 6;\n    }\n    target.h = hue;\n    target.s = saturation;\n    target.l = lightness;\n    return target;\n  }\n  getRGB(target, colorSpace = LinearSRGBColorSpace) {\n    ColorManagement.fromWorkingColorSpace(toComponents(this, _rgb), colorSpace);\n    target.r = _rgb.r;\n    target.g = _rgb.g;\n    target.b = _rgb.b;\n    return target;\n  }\n  getStyle(colorSpace = SRGBColorSpace) {\n    ColorManagement.fromWorkingColorSpace(toComponents(this, _rgb), colorSpace);\n    if (colorSpace !== SRGBColorSpace) {\n      return `color(${colorSpace} ${_rgb.r} ${_rgb.g} ${_rgb.b})`;\n    }\n    return `rgb(${_rgb.r * 255 | 0},${_rgb.g * 255 | 0},${_rgb.b * 255 | 0})`;\n  }\n  offsetHSL(h, s, l) {\n    this.getHSL(_hslA);\n    _hslA.h += h;\n    _hslA.s += s;\n    _hslA.l += l;\n    this.setHSL(_hslA.h, _hslA.s, _hslA.l);\n    return this;\n  }\n  add(color) {\n    this.r += color.r;\n    this.g += color.g;\n    this.b += color.b;\n    return this;\n  }\n  addColors(color1, color2) {\n    this.r = color1.r + color2.r;\n    this.g = color1.g + color2.g;\n    this.b = color1.b + color2.b;\n    return this;\n  }\n  addScalar(s) {\n    this.r += s;\n    this.g += s;\n    this.b += s;\n    return this;\n  }\n  sub(color) {\n    this.r = Math.max(0, this.r - color.r);\n    this.g = Math.max(0, this.g - color.g);\n    this.b = Math.max(0, this.b - color.b);\n    return this;\n  }\n  multiply(color) {\n    this.r *= color.r;\n    this.g *= color.g;\n    this.b *= color.b;\n    return this;\n  }\n  multiplyScalar(s) {\n    this.r *= s;\n    this.g *= s;\n    this.b *= s;\n    return this;\n  }\n  lerp(color, alpha) {\n    this.r += (color.r - this.r) * alpha;\n    this.g += (color.g - this.g) * alpha;\n    this.b += (color.b - this.b) * alpha;\n    return this;\n  }\n  lerpColors(color1, color2, alpha) {\n    this.r = color1.r + (color2.r - color1.r) * alpha;\n    this.g = color1.g + (color2.g - color1.g) * alpha;\n    this.b = color1.b + (color2.b - color1.b) * alpha;\n    return this;\n  }\n  lerpHSL(color, alpha) {\n    this.getHSL(_hslA);\n    color.getHSL(_hslB);\n    const h = lerp(_hslA.h, _hslB.h, alpha);\n    const s = lerp(_hslA.s, _hslB.s, alpha);\n    const l = lerp(_hslA.l, _hslB.l, alpha);\n    this.setHSL(h, s, l);\n    return this;\n  }\n  equals(c) {\n    return c.r === this.r && c.g === this.g && c.b === this.b;\n  }\n  fromArray(array, offset = 0) {\n    this.r = array[offset];\n    this.g = array[offset + 1];\n    this.b = array[offset + 2];\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this.r;\n    array[offset + 1] = this.g;\n    array[offset + 2] = this.b;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this.r = attribute.getX(index);\n    this.g = attribute.getY(index);\n    this.b = attribute.getZ(index);\n    if (attribute.normalized === true) {\n      this.r /= 255;\n      this.g /= 255;\n      this.b /= 255;\n    }\n    return this;\n  }\n  toJSON() {\n    return this.getHex();\n  }\n  *[Symbol.iterator]() {\n    yield this.r;\n    yield this.g;\n    yield this.b;\n  }\n}\nColor.NAMES = _colorKeywords;\nlet _canvas;\nclass ImageUtils {\n  static getDataURL(image) {\n    if (/^data:/i.test(image.src)) {\n      return image.src;\n    }\n    if (typeof HTMLCanvasElement == \"undefined\") {\n      return image.src;\n    }\n    let canvas;\n    if (image instanceof HTMLCanvasElement) {\n      canvas = image;\n    } else {\n      if (_canvas === void 0)\n        _canvas = createElementNS(\"canvas\");\n      _canvas.width = image.width;\n      _canvas.height = image.height;\n      const context = _canvas.getContext(\"2d\");\n      if (image instanceof ImageData) {\n        context.putImageData(image, 0, 0);\n      } else {\n        context.drawImage(image, 0, 0, image.width, image.height);\n      }\n      canvas = _canvas;\n    }\n    if (canvas.width > 2048 || canvas.height > 2048) {\n      console.warn(\"THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons\", image);\n      return canvas.toDataURL(\"image/jpeg\", 0.6);\n    } else {\n      return canvas.toDataURL(\"image/png\");\n    }\n  }\n  static sRGBToLinear(image) {\n    if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n      const canvas = createElementNS(\"canvas\");\n      canvas.width = image.width;\n      canvas.height = image.height;\n      const context = canvas.getContext(\"2d\");\n      context.drawImage(image, 0, 0, image.width, image.height);\n      const imageData = context.getImageData(0, 0, image.width, image.height);\n      const data = imageData.data;\n      for (let i = 0; i < data.length; i++) {\n        data[i] = SRGBToLinear(data[i] / 255) * 255;\n      }\n      context.putImageData(imageData, 0, 0);\n      return canvas;\n    } else if (image.data) {\n      const data = image.data.slice(0);\n      for (let i = 0; i < data.length; i++) {\n        if (data instanceof Uint8Array || data instanceof Uint8ClampedArray) {\n          data[i] = Math.floor(SRGBToLinear(data[i] / 255) * 255);\n        } else {\n          data[i] = SRGBToLinear(data[i]);\n        }\n      }\n      return {\n        data,\n        width: image.width,\n        height: image.height\n      };\n    } else {\n      console.warn(\"THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.\");\n      return image;\n    }\n  }\n}\nclass Source {\n  constructor(data = null) {\n    this.isSource = true;\n    this.uuid = generateUUID();\n    this.data = data;\n    this.version = 0;\n  }\n  set needsUpdate(value) {\n    if (value === true)\n      this.version++;\n  }\n  toJSON(meta) {\n    const isRootObject = meta === void 0 || typeof meta === \"string\";\n    if (!isRootObject && meta.images[this.uuid] !== void 0) {\n      return meta.images[this.uuid];\n    }\n    const output = {\n      uuid: this.uuid,\n      url: \"\"\n    };\n    const data = this.data;\n    if (data !== null) {\n      let url;\n      if (Array.isArray(data)) {\n        url = [];\n        for (let i = 0, l = data.length; i < l; i++) {\n          if (data[i].isDataTexture) {\n            url.push(serializeImage(data[i].image));\n          } else {\n            url.push(serializeImage(data[i]));\n          }\n        }\n      } else {\n        url = serializeImage(data);\n      }\n      output.url = url;\n    }\n    if (!isRootObject) {\n      meta.images[this.uuid] = output;\n    }\n    return output;\n  }\n}\nfunction serializeImage(image) {\n  if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n    return ImageUtils.getDataURL(image);\n  } else {\n    if (image.data) {\n      return {\n        data: Array.from(image.data),\n        width: image.width,\n        height: image.height,\n        type: image.data.constructor.name\n      };\n    } else {\n      console.warn(\"THREE.Texture: Unable to serialize Texture.\");\n      return {};\n    }\n  }\n}\nlet textureId = 0;\nclass Texture extends EventDispatcher {\n  constructor(image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding) {\n    super();\n    this.isTexture = true;\n    Object.defineProperty(this, \"id\", { value: textureId++ });\n    this.uuid = generateUUID();\n    this.name = \"\";\n    this.source = new Source(image);\n    this.mipmaps = [];\n    this.mapping = mapping;\n    this.wrapS = wrapS;\n    this.wrapT = wrapT;\n    this.magFilter = magFilter;\n    this.minFilter = minFilter;\n    this.anisotropy = anisotropy;\n    this.format = format;\n    this.internalFormat = null;\n    this.type = type;\n    this.offset = new Vector2(0, 0);\n    this.repeat = new Vector2(1, 1);\n    this.center = new Vector2(0, 0);\n    this.rotation = 0;\n    this.matrixAutoUpdate = true;\n    this.matrix = new Matrix3();\n    this.generateMipmaps = true;\n    this.premultiplyAlpha = false;\n    this.flipY = true;\n    this.unpackAlignment = 4;\n    this.encoding = encoding;\n    this.userData = {};\n    this.version = 0;\n    this.onUpdate = null;\n    this.isRenderTargetTexture = false;\n    this.needsPMREMUpdate = false;\n  }\n  get image() {\n    return this.source.data;\n  }\n  set image(value) {\n    this.source.data = value;\n  }\n  updateMatrix() {\n    this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.name = source.name;\n    this.source = source.source;\n    this.mipmaps = source.mipmaps.slice(0);\n    this.mapping = source.mapping;\n    this.wrapS = source.wrapS;\n    this.wrapT = source.wrapT;\n    this.magFilter = source.magFilter;\n    this.minFilter = source.minFilter;\n    this.anisotropy = source.anisotropy;\n    this.format = source.format;\n    this.internalFormat = source.internalFormat;\n    this.type = source.type;\n    this.offset.copy(source.offset);\n    this.repeat.copy(source.repeat);\n    this.center.copy(source.center);\n    this.rotation = source.rotation;\n    this.matrixAutoUpdate = source.matrixAutoUpdate;\n    this.matrix.copy(source.matrix);\n    this.generateMipmaps = source.generateMipmaps;\n    this.premultiplyAlpha = source.premultiplyAlpha;\n    this.flipY = source.flipY;\n    this.unpackAlignment = source.unpackAlignment;\n    this.encoding = source.encoding;\n    this.userData = JSON.parse(JSON.stringify(source.userData));\n    this.needsUpdate = true;\n    return this;\n  }\n  toJSON(meta) {\n    const isRootObject = meta === void 0 || typeof meta === \"string\";\n    if (!isRootObject && meta.textures[this.uuid] !== void 0) {\n      return meta.textures[this.uuid];\n    }\n    const output = {\n      metadata: {\n        version: 4.5,\n        type: \"Texture\",\n        generator: \"Texture.toJSON\"\n      },\n      uuid: this.uuid,\n      name: this.name,\n      image: this.source.toJSON(meta).uuid,\n      mapping: this.mapping,\n      repeat: [this.repeat.x, this.repeat.y],\n      offset: [this.offset.x, this.offset.y],\n      center: [this.center.x, this.center.y],\n      rotation: this.rotation,\n      wrap: [this.wrapS, this.wrapT],\n      format: this.format,\n      type: this.type,\n      encoding: this.encoding,\n      minFilter: this.minFilter,\n      magFilter: this.magFilter,\n      anisotropy: this.anisotropy,\n      flipY: this.flipY,\n      premultiplyAlpha: this.premultiplyAlpha,\n      unpackAlignment: this.unpackAlignment\n    };\n    if (JSON.stringify(this.userData) !== \"{}\")\n      output.userData = this.userData;\n    if (!isRootObject) {\n      meta.textures[this.uuid] = output;\n    }\n    return output;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n  transformUv(uv) {\n    if (this.mapping !== UVMapping)\n      return uv;\n    uv.applyMatrix3(this.matrix);\n    if (uv.x < 0 || uv.x > 1) {\n      switch (this.wrapS) {\n        case RepeatWrapping:\n          uv.x = uv.x - Math.floor(uv.x);\n          break;\n        case ClampToEdgeWrapping:\n          uv.x = uv.x < 0 ? 0 : 1;\n          break;\n        case MirroredRepeatWrapping:\n          if (Math.abs(Math.floor(uv.x) % 2) === 1) {\n            uv.x = Math.ceil(uv.x) - uv.x;\n          } else {\n            uv.x = uv.x - Math.floor(uv.x);\n          }\n          break;\n      }\n    }\n    if (uv.y < 0 || uv.y > 1) {\n      switch (this.wrapT) {\n        case RepeatWrapping:\n          uv.y = uv.y - Math.floor(uv.y);\n          break;\n        case ClampToEdgeWrapping:\n          uv.y = uv.y < 0 ? 0 : 1;\n          break;\n        case MirroredRepeatWrapping:\n          if (Math.abs(Math.floor(uv.y) % 2) === 1) {\n            uv.y = Math.ceil(uv.y) - uv.y;\n          } else {\n            uv.y = uv.y - Math.floor(uv.y);\n          }\n          break;\n      }\n    }\n    if (this.flipY) {\n      uv.y = 1 - uv.y;\n    }\n    return uv;\n  }\n  set needsUpdate(value) {\n    if (value === true) {\n      this.version++;\n      this.source.needsUpdate = true;\n    }\n  }\n}\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nclass Vector4 {\n  constructor(x = 0, y = 0, z = 0, w = 1) {\n    Vector4.prototype.isVector4 = true;\n    this.x = x;\n    this.y = y;\n    this.z = z;\n    this.w = w;\n  }\n  get width() {\n    return this.z;\n  }\n  set width(value) {\n    this.z = value;\n  }\n  get height() {\n    return this.w;\n  }\n  set height(value) {\n    this.w = value;\n  }\n  set(x, y, z, w) {\n    this.x = x;\n    this.y = y;\n    this.z = z;\n    this.w = w;\n    return this;\n  }\n  setScalar(scalar) {\n    this.x = scalar;\n    this.y = scalar;\n    this.z = scalar;\n    this.w = scalar;\n    return this;\n  }\n  setX(x) {\n    this.x = x;\n    return this;\n  }\n  setY(y) {\n    this.y = y;\n    return this;\n  }\n  setZ(z) {\n    this.z = z;\n    return this;\n  }\n  setW(w) {\n    this.w = w;\n    return this;\n  }\n  setComponent(index, value) {\n    switch (index) {\n      case 0:\n        this.x = value;\n        break;\n      case 1:\n        this.y = value;\n        break;\n      case 2:\n        this.z = value;\n        break;\n      case 3:\n        this.w = value;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n    return this;\n  }\n  getComponent(index) {\n    switch (index) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      case 2:\n        return this.z;\n      case 3:\n        return this.w;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n  }\n  clone() {\n    return new this.constructor(this.x, this.y, this.z, this.w);\n  }\n  copy(v) {\n    this.x = v.x;\n    this.y = v.y;\n    this.z = v.z;\n    this.w = v.w !== void 0 ? v.w : 1;\n    return this;\n  }\n  add(v) {\n    this.x += v.x;\n    this.y += v.y;\n    this.z += v.z;\n    this.w += v.w;\n    return this;\n  }\n  addScalar(s) {\n    this.x += s;\n    this.y += s;\n    this.z += s;\n    this.w += s;\n    return this;\n  }\n  addVectors(a, b) {\n    this.x = a.x + b.x;\n    this.y = a.y + b.y;\n    this.z = a.z + b.z;\n    this.w = a.w + b.w;\n    return this;\n  }\n  addScaledVector(v, s) {\n    this.x += v.x * s;\n    this.y += v.y * s;\n    this.z += v.z * s;\n    this.w += v.w * s;\n    return this;\n  }\n  sub(v) {\n    this.x -= v.x;\n    this.y -= v.y;\n    this.z -= v.z;\n    this.w -= v.w;\n    return this;\n  }\n  subScalar(s) {\n    this.x -= s;\n    this.y -= s;\n    this.z -= s;\n    this.w -= s;\n    return this;\n  }\n  subVectors(a, b) {\n    this.x = a.x - b.x;\n    this.y = a.y - b.y;\n    this.z = a.z - b.z;\n    this.w = a.w - b.w;\n    return this;\n  }\n  multiply(v) {\n    this.x *= v.x;\n    this.y *= v.y;\n    this.z *= v.z;\n    this.w *= v.w;\n    return this;\n  }\n  multiplyScalar(scalar) {\n    this.x *= scalar;\n    this.y *= scalar;\n    this.z *= scalar;\n    this.w *= scalar;\n    return this;\n  }\n  applyMatrix4(m) {\n    const x = this.x, y = this.y, z = this.z, w = this.w;\n    const e = m.elements;\n    this.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n    this.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n    this.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n    this.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n    return this;\n  }\n  divideScalar(scalar) {\n    return this.multiplyScalar(1 / scalar);\n  }\n  setAxisAngleFromQuaternion(q) {\n    this.w = 2 * Math.acos(q.w);\n    const s = Math.sqrt(1 - q.w * q.w);\n    if (s < 1e-4) {\n      this.x = 1;\n      this.y = 0;\n      this.z = 0;\n    } else {\n      this.x = q.x / s;\n      this.y = q.y / s;\n      this.z = q.z / s;\n    }\n    return this;\n  }\n  setAxisAngleFromRotationMatrix(m) {\n    let angle, x, y, z;\n    const epsilon = 0.01, epsilon2 = 0.1, te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10];\n    if (Math.abs(m12 - m21) < epsilon && Math.abs(m13 - m31) < epsilon && Math.abs(m23 - m32) < epsilon) {\n      if (Math.abs(m12 + m21) < epsilon2 && Math.abs(m13 + m31) < epsilon2 && Math.abs(m23 + m32) < epsilon2 && Math.abs(m11 + m22 + m33 - 3) < epsilon2) {\n        this.set(1, 0, 0, 0);\n        return this;\n      }\n      angle = Math.PI;\n      const xx = (m11 + 1) / 2;\n      const yy = (m22 + 1) / 2;\n      const zz = (m33 + 1) / 2;\n      const xy = (m12 + m21) / 4;\n      const xz = (m13 + m31) / 4;\n      const yz = (m23 + m32) / 4;\n      if (xx > yy && xx > zz) {\n        if (xx < epsilon) {\n          x = 0;\n          y = 0.707106781;\n          z = 0.707106781;\n        } else {\n          x = Math.sqrt(xx);\n          y = xy / x;\n          z = xz / x;\n        }\n      } else if (yy > zz) {\n        if (yy < epsilon) {\n          x = 0.707106781;\n          y = 0;\n          z = 0.707106781;\n        } else {\n          y = Math.sqrt(yy);\n          x = xy / y;\n          z = yz / y;\n        }\n      } else {\n        if (zz < epsilon) {\n          x = 0.707106781;\n          y = 0.707106781;\n          z = 0;\n        } else {\n          z = Math.sqrt(zz);\n          x = xz / z;\n          y = yz / z;\n        }\n      }\n      this.set(x, y, z, angle);\n      return this;\n    }\n    let s = Math.sqrt((m32 - m23) * (m32 - m23) + (m13 - m31) * (m13 - m31) + (m21 - m12) * (m21 - m12));\n    if (Math.abs(s) < 1e-3)\n      s = 1;\n    this.x = (m32 - m23) / s;\n    this.y = (m13 - m31) / s;\n    this.z = (m21 - m12) / s;\n    this.w = Math.acos((m11 + m22 + m33 - 1) / 2);\n    return this;\n  }\n  min(v) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    this.z = Math.min(this.z, v.z);\n    this.w = Math.min(this.w, v.w);\n    return this;\n  }\n  max(v) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    this.z = Math.max(this.z, v.z);\n    this.w = Math.max(this.w, v.w);\n    return this;\n  }\n  clamp(min, max) {\n    this.x = Math.max(min.x, Math.min(max.x, this.x));\n    this.y = Math.max(min.y, Math.min(max.y, this.y));\n    this.z = Math.max(min.z, Math.min(max.z, this.z));\n    this.w = Math.max(min.w, Math.min(max.w, this.w));\n    return this;\n  }\n  clampScalar(minVal, maxVal) {\n    this.x = Math.max(minVal, Math.min(maxVal, this.x));\n    this.y = Math.max(minVal, Math.min(maxVal, this.y));\n    this.z = Math.max(minVal, Math.min(maxVal, this.z));\n    this.w = Math.max(minVal, Math.min(maxVal, this.w));\n    return this;\n  }\n  clampLength(min, max) {\n    const length = this.length();\n    return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n  }\n  floor() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n    this.z = Math.floor(this.z);\n    this.w = Math.floor(this.w);\n    return this;\n  }\n  ceil() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n    this.z = Math.ceil(this.z);\n    this.w = Math.ceil(this.w);\n    return this;\n  }\n  round() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n    this.z = Math.round(this.z);\n    this.w = Math.round(this.w);\n    return this;\n  }\n  roundToZero() {\n    this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n    this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n    this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z);\n    this.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w);\n    return this;\n  }\n  negate() {\n    this.x = -this.x;\n    this.y = -this.y;\n    this.z = -this.z;\n    this.w = -this.w;\n    return this;\n  }\n  dot(v) {\n    return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n  }\n  lengthSq() {\n    return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n  }\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w);\n  }\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n  setLength(length) {\n    return this.normalize().multiplyScalar(length);\n  }\n  lerp(v, alpha) {\n    this.x += (v.x - this.x) * alpha;\n    this.y += (v.y - this.y) * alpha;\n    this.z += (v.z - this.z) * alpha;\n    this.w += (v.w - this.w) * alpha;\n    return this;\n  }\n  lerpVectors(v1, v2, alpha) {\n    this.x = v1.x + (v2.x - v1.x) * alpha;\n    this.y = v1.y + (v2.y - v1.y) * alpha;\n    this.z = v1.z + (v2.z - v1.z) * alpha;\n    this.w = v1.w + (v2.w - v1.w) * alpha;\n    return this;\n  }\n  equals(v) {\n    return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n  }\n  fromArray(array, offset = 0) {\n    this.x = array[offset];\n    this.y = array[offset + 1];\n    this.z = array[offset + 2];\n    this.w = array[offset + 3];\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this.x;\n    array[offset + 1] = this.y;\n    array[offset + 2] = this.z;\n    array[offset + 3] = this.w;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this.x = attribute.getX(index);\n    this.y = attribute.getY(index);\n    this.z = attribute.getZ(index);\n    this.w = attribute.getW(index);\n    return this;\n  }\n  random() {\n    this.x = Math.random();\n    this.y = Math.random();\n    this.z = Math.random();\n    this.w = Math.random();\n    return this;\n  }\n  *[Symbol.iterator]() {\n    yield this.x;\n    yield this.y;\n    yield this.z;\n    yield this.w;\n  }\n}\nclass WebGLRenderTarget extends EventDispatcher {\n  constructor(width, height, options = {}) {\n    super();\n    this.isWebGLRenderTarget = true;\n    this.width = width;\n    this.height = height;\n    this.depth = 1;\n    this.scissor = new Vector4(0, 0, width, height);\n    this.scissorTest = false;\n    this.viewport = new Vector4(0, 0, width, height);\n    const image = { width, height, depth: 1 };\n    this.texture = new Texture(image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding);\n    this.texture.isRenderTargetTexture = true;\n    this.texture.flipY = false;\n    this.texture.generateMipmaps = options.generateMipmaps !== void 0 ? options.generateMipmaps : false;\n    this.texture.internalFormat = options.internalFormat !== void 0 ? options.internalFormat : null;\n    this.texture.minFilter = options.minFilter !== void 0 ? options.minFilter : LinearFilter;\n    this.depthBuffer = options.depthBuffer !== void 0 ? options.depthBuffer : true;\n    this.stencilBuffer = options.stencilBuffer !== void 0 ? options.stencilBuffer : false;\n    this.depthTexture = options.depthTexture !== void 0 ? options.depthTexture : null;\n    this.samples = options.samples !== void 0 ? options.samples : 0;\n  }\n  setSize(width, height, depth = 1) {\n    if (this.width !== width || this.height !== height || this.depth !== depth) {\n      this.width = width;\n      this.height = height;\n      this.depth = depth;\n      this.texture.image.width = width;\n      this.texture.image.height = height;\n      this.texture.image.depth = depth;\n      this.dispose();\n    }\n    this.viewport.set(0, 0, width, height);\n    this.scissor.set(0, 0, width, height);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.width = source.width;\n    this.height = source.height;\n    this.depth = source.depth;\n    this.viewport.copy(source.viewport);\n    this.texture = source.texture.clone();\n    this.texture.isRenderTargetTexture = true;\n    const image = Object.assign({}, source.texture.image);\n    this.texture.source = new Source(image);\n    this.depthBuffer = source.depthBuffer;\n    this.stencilBuffer = source.stencilBuffer;\n    if (source.depthTexture !== null)\n      this.depthTexture = source.depthTexture.clone();\n    this.samples = source.samples;\n    return this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n}\nclass DataArrayTexture extends Texture {\n  constructor(data = null, width = 1, height = 1, depth = 1) {\n    super(null);\n    this.isDataArrayTexture = true;\n    this.image = { data, width, height, depth };\n    this.magFilter = NearestFilter;\n    this.minFilter = NearestFilter;\n    this.wrapR = ClampToEdgeWrapping;\n    this.generateMipmaps = false;\n    this.flipY = false;\n    this.unpackAlignment = 1;\n  }\n}\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n  constructor(width, height, depth) {\n    super(width, height);\n    this.isWebGLArrayRenderTarget = true;\n    this.depth = depth;\n    this.texture = new DataArrayTexture(null, width, height, depth);\n    this.texture.isRenderTargetTexture = true;\n  }\n}\nclass Data3DTexture extends Texture {\n  constructor(data = null, width = 1, height = 1, depth = 1) {\n    super(null);\n    this.isData3DTexture = true;\n    this.image = { data, width, height, depth };\n    this.magFilter = NearestFilter;\n    this.minFilter = NearestFilter;\n    this.wrapR = ClampToEdgeWrapping;\n    this.generateMipmaps = false;\n    this.flipY = false;\n    this.unpackAlignment = 1;\n  }\n}\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n  constructor(width, height, depth) {\n    super(width, height);\n    this.isWebGL3DRenderTarget = true;\n    this.depth = depth;\n    this.texture = new Data3DTexture(null, width, height, depth);\n    this.texture.isRenderTargetTexture = true;\n  }\n}\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n  constructor(width, height, count, options = {}) {\n    super(width, height, options);\n    this.isWebGLMultipleRenderTargets = true;\n    const texture = this.texture;\n    this.texture = [];\n    for (let i = 0; i < count; i++) {\n      this.texture[i] = texture.clone();\n      this.texture[i].isRenderTargetTexture = true;\n    }\n  }\n  setSize(width, height, depth = 1) {\n    if (this.width !== width || this.height !== height || this.depth !== depth) {\n      this.width = width;\n      this.height = height;\n      this.depth = depth;\n      for (let i = 0, il = this.texture.length; i < il; i++) {\n        this.texture[i].image.width = width;\n        this.texture[i].image.height = height;\n        this.texture[i].image.depth = depth;\n      }\n      this.dispose();\n    }\n    this.viewport.set(0, 0, width, height);\n    this.scissor.set(0, 0, width, height);\n    return this;\n  }\n  copy(source) {\n    this.dispose();\n    this.width = source.width;\n    this.height = source.height;\n    this.depth = source.depth;\n    this.viewport.set(0, 0, this.width, this.height);\n    this.scissor.set(0, 0, this.width, this.height);\n    this.depthBuffer = source.depthBuffer;\n    this.stencilBuffer = source.stencilBuffer;\n    if (source.depthTexture !== null)\n      this.depthTexture = source.depthTexture.clone();\n    this.texture.length = 0;\n    for (let i = 0, il = source.texture.length; i < il; i++) {\n      this.texture[i] = source.texture[i].clone();\n      this.texture[i].isRenderTargetTexture = true;\n    }\n    return this;\n  }\n}\nclass Quaternion {\n  constructor(x = 0, y = 0, z = 0, w = 1) {\n    this.isQuaternion = true;\n    this._x = x;\n    this._y = y;\n    this._z = z;\n    this._w = w;\n  }\n  static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) {\n    let x0 = src0[srcOffset0 + 0], y0 = src0[srcOffset0 + 1], z0 = src0[srcOffset0 + 2], w0 = src0[srcOffset0 + 3];\n    const x1 = src1[srcOffset1 + 0], y1 = src1[srcOffset1 + 1], z1 = src1[srcOffset1 + 2], w1 = src1[srcOffset1 + 3];\n    if (t === 0) {\n      dst[dstOffset + 0] = x0;\n      dst[dstOffset + 1] = y0;\n      dst[dstOffset + 2] = z0;\n      dst[dstOffset + 3] = w0;\n      return;\n    }\n    if (t === 1) {\n      dst[dstOffset + 0] = x1;\n      dst[dstOffset + 1] = y1;\n      dst[dstOffset + 2] = z1;\n      dst[dstOffset + 3] = w1;\n      return;\n    }\n    if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n      let s = 1 - t;\n      const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, dir = cos >= 0 ? 1 : -1, sqrSin = 1 - cos * cos;\n      if (sqrSin > Number.EPSILON) {\n        const sin = Math.sqrt(sqrSin), len = Math.atan2(sin, cos * dir);\n        s = Math.sin(s * len) / sin;\n        t = Math.sin(t * len) / sin;\n      }\n      const tDir = t * dir;\n      x0 = x0 * s + x1 * tDir;\n      y0 = y0 * s + y1 * tDir;\n      z0 = z0 * s + z1 * tDir;\n      w0 = w0 * s + w1 * tDir;\n      if (s === 1 - t) {\n        const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n        x0 *= f;\n        y0 *= f;\n        z0 *= f;\n        w0 *= f;\n      }\n    }\n    dst[dstOffset] = x0;\n    dst[dstOffset + 1] = y0;\n    dst[dstOffset + 2] = z0;\n    dst[dstOffset + 3] = w0;\n  }\n  static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) {\n    const x0 = src0[srcOffset0];\n    const y0 = src0[srcOffset0 + 1];\n    const z0 = src0[srcOffset0 + 2];\n    const w0 = src0[srcOffset0 + 3];\n    const x1 = src1[srcOffset1];\n    const y1 = src1[srcOffset1 + 1];\n    const z1 = src1[srcOffset1 + 2];\n    const w1 = src1[srcOffset1 + 3];\n    dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n    dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n    dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n    dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n    return dst;\n  }\n  get x() {\n    return this._x;\n  }\n  set x(value) {\n    this._x = value;\n    this._onChangeCallback();\n  }\n  get y() {\n    return this._y;\n  }\n  set y(value) {\n    this._y = value;\n    this._onChangeCallback();\n  }\n  get z() {\n    return this._z;\n  }\n  set z(value) {\n    this._z = value;\n    this._onChangeCallback();\n  }\n  get w() {\n    return this._w;\n  }\n  set w(value) {\n    this._w = value;\n    this._onChangeCallback();\n  }\n  set(x, y, z, w) {\n    this._x = x;\n    this._y = y;\n    this._z = z;\n    this._w = w;\n    this._onChangeCallback();\n    return this;\n  }\n  clone() {\n    return new this.constructor(this._x, this._y, this._z, this._w);\n  }\n  copy(quaternion) {\n    this._x = quaternion.x;\n    this._y = quaternion.y;\n    this._z = quaternion.z;\n    this._w = quaternion.w;\n    this._onChangeCallback();\n    return this;\n  }\n  setFromEuler(euler, update) {\n    if (!(euler && euler.isEuler)) {\n      throw new Error(\"THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.\");\n    }\n    const x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n    const cos = Math.cos;\n    const sin = Math.sin;\n    const c1 = cos(x / 2);\n    const c2 = cos(y / 2);\n    const c3 = cos(z / 2);\n    const s1 = sin(x / 2);\n    const s2 = sin(y / 2);\n    const s3 = sin(z / 2);\n    switch (order) {\n      case \"XYZ\":\n        this._x = s1 * c2 * c3 + c1 * s2 * s3;\n        this._y = c1 * s2 * c3 - s1 * c2 * s3;\n        this._z = c1 * c2 * s3 + s1 * s2 * c3;\n        this._w = c1 * c2 * c3 - s1 * s2 * s3;\n        break;\n      case \"YXZ\":\n        this._x = s1 * c2 * c3 + c1 * s2 * s3;\n        this._y = c1 * s2 * c3 - s1 * c2 * s3;\n        this._z = c1 * c2 * s3 - s1 * s2 * c3;\n        this._w = c1 * c2 * c3 + s1 * s2 * s3;\n        break;\n      case \"ZXY\":\n        this._x = s1 * c2 * c3 - c1 * s2 * s3;\n        this._y = c1 * s2 * c3 + s1 * c2 * s3;\n        this._z = c1 * c2 * s3 + s1 * s2 * c3;\n        this._w = c1 * c2 * c3 - s1 * s2 * s3;\n        break;\n      case \"ZYX\":\n        this._x = s1 * c2 * c3 - c1 * s2 * s3;\n        this._y = c1 * s2 * c3 + s1 * c2 * s3;\n        this._z = c1 * c2 * s3 - s1 * s2 * c3;\n        this._w = c1 * c2 * c3 + s1 * s2 * s3;\n        break;\n      case \"YZX\":\n        this._x = s1 * c2 * c3 + c1 * s2 * s3;\n        this._y = c1 * s2 * c3 + s1 * c2 * s3;\n        this._z = c1 * c2 * s3 - s1 * s2 * c3;\n        this._w = c1 * c2 * c3 - s1 * s2 * s3;\n        break;\n      case \"XZY\":\n        this._x = s1 * c2 * c3 - c1 * s2 * s3;\n        this._y = c1 * s2 * c3 - s1 * c2 * s3;\n        this._z = c1 * c2 * s3 + s1 * s2 * c3;\n        this._w = c1 * c2 * c3 + s1 * s2 * s3;\n        break;\n      default:\n        console.warn(\"THREE.Quaternion: .setFromEuler() encountered an unknown order: \" + order);\n    }\n    if (update !== false)\n      this._onChangeCallback();\n    return this;\n  }\n  setFromAxisAngle(axis, angle) {\n    const halfAngle = angle / 2, s = Math.sin(halfAngle);\n    this._x = axis.x * s;\n    this._y = axis.y * s;\n    this._z = axis.z * s;\n    this._w = Math.cos(halfAngle);\n    this._onChangeCallback();\n    return this;\n  }\n  setFromRotationMatrix(m) {\n    const te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10], trace = m11 + m22 + m33;\n    if (trace > 0) {\n      const s = 0.5 / Math.sqrt(trace + 1);\n      this._w = 0.25 / s;\n      this._x = (m32 - m23) * s;\n      this._y = (m13 - m31) * s;\n      this._z = (m21 - m12) * s;\n    } else if (m11 > m22 && m11 > m33) {\n      const s = 2 * Math.sqrt(1 + m11 - m22 - m33);\n      this._w = (m32 - m23) / s;\n      this._x = 0.25 * s;\n      this._y = (m12 + m21) / s;\n      this._z = (m13 + m31) / s;\n    } else if (m22 > m33) {\n      const s = 2 * Math.sqrt(1 + m22 - m11 - m33);\n      this._w = (m13 - m31) / s;\n      this._x = (m12 + m21) / s;\n      this._y = 0.25 * s;\n      this._z = (m23 + m32) / s;\n    } else {\n      const s = 2 * Math.sqrt(1 + m33 - m11 - m22);\n      this._w = (m21 - m12) / s;\n      this._x = (m13 + m31) / s;\n      this._y = (m23 + m32) / s;\n      this._z = 0.25 * s;\n    }\n    this._onChangeCallback();\n    return this;\n  }\n  setFromUnitVectors(vFrom, vTo) {\n    let r = vFrom.dot(vTo) + 1;\n    if (r < Number.EPSILON) {\n      r = 0;\n      if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n        this._x = -vFrom.y;\n        this._y = vFrom.x;\n        this._z = 0;\n        this._w = r;\n      } else {\n        this._x = 0;\n        this._y = -vFrom.z;\n        this._z = vFrom.y;\n        this._w = r;\n      }\n    } else {\n      this._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n      this._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n      this._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n      this._w = r;\n    }\n    return this.normalize();\n  }\n  angleTo(q) {\n    return 2 * Math.acos(Math.abs(clamp$1(this.dot(q), -1, 1)));\n  }\n  rotateTowards(q, step) {\n    const angle = this.angleTo(q);\n    if (angle === 0)\n      return this;\n    const t = Math.min(1, step / angle);\n    this.slerp(q, t);\n    return this;\n  }\n  identity() {\n    return this.set(0, 0, 0, 1);\n  }\n  invert() {\n    return this.conjugate();\n  }\n  conjugate() {\n    this._x *= -1;\n    this._y *= -1;\n    this._z *= -1;\n    this._onChangeCallback();\n    return this;\n  }\n  dot(v) {\n    return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n  }\n  lengthSq() {\n    return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n  }\n  length() {\n    return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\n  }\n  normalize() {\n    let l = this.length();\n    if (l === 0) {\n      this._x = 0;\n      this._y = 0;\n      this._z = 0;\n      this._w = 1;\n    } else {\n      l = 1 / l;\n      this._x = this._x * l;\n      this._y = this._y * l;\n      this._z = this._z * l;\n      this._w = this._w * l;\n    }\n    this._onChangeCallback();\n    return this;\n  }\n  multiply(q) {\n    return this.multiplyQuaternions(this, q);\n  }\n  premultiply(q) {\n    return this.multiplyQuaternions(q, this);\n  }\n  multiplyQuaternions(a, b) {\n    const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n    const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n    this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n    this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n    this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n    this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n    this._onChangeCallback();\n    return this;\n  }\n  slerp(qb, t) {\n    if (t === 0)\n      return this;\n    if (t === 1)\n      return this.copy(qb);\n    const x = this._x, y = this._y, z = this._z, w = this._w;\n    let cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n    if (cosHalfTheta < 0) {\n      this._w = -qb._w;\n      this._x = -qb._x;\n      this._y = -qb._y;\n      this._z = -qb._z;\n      cosHalfTheta = -cosHalfTheta;\n    } else {\n      this.copy(qb);\n    }\n    if (cosHalfTheta >= 1) {\n      this._w = w;\n      this._x = x;\n      this._y = y;\n      this._z = z;\n      return this;\n    }\n    const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n    if (sqrSinHalfTheta <= Number.EPSILON) {\n      const s = 1 - t;\n      this._w = s * w + t * this._w;\n      this._x = s * x + t * this._x;\n      this._y = s * y + t * this._y;\n      this._z = s * z + t * this._z;\n      this.normalize();\n      this._onChangeCallback();\n      return this;\n    }\n    const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n    const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n    const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta, ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n    this._w = w * ratioA + this._w * ratioB;\n    this._x = x * ratioA + this._x * ratioB;\n    this._y = y * ratioA + this._y * ratioB;\n    this._z = z * ratioA + this._z * ratioB;\n    this._onChangeCallback();\n    return this;\n  }\n  slerpQuaternions(qa, qb, t) {\n    return this.copy(qa).slerp(qb, t);\n  }\n  random() {\n    const u1 = Math.random();\n    const sqrt1u1 = Math.sqrt(1 - u1);\n    const sqrtu1 = Math.sqrt(u1);\n    const u2 = 2 * Math.PI * Math.random();\n    const u3 = 2 * Math.PI * Math.random();\n    return this.set(\n      sqrt1u1 * Math.cos(u2),\n      sqrtu1 * Math.sin(u3),\n      sqrtu1 * Math.cos(u3),\n      sqrt1u1 * Math.sin(u2)\n    );\n  }\n  equals(quaternion) {\n    return quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w;\n  }\n  fromArray(array, offset = 0) {\n    this._x = array[offset];\n    this._y = array[offset + 1];\n    this._z = array[offset + 2];\n    this._w = array[offset + 3];\n    this._onChangeCallback();\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this._x;\n    array[offset + 1] = this._y;\n    array[offset + 2] = this._z;\n    array[offset + 3] = this._w;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this._x = attribute.getX(index);\n    this._y = attribute.getY(index);\n    this._z = attribute.getZ(index);\n    this._w = attribute.getW(index);\n    return this;\n  }\n  _onChange(callback) {\n    this._onChangeCallback = callback;\n    return this;\n  }\n  _onChangeCallback() {\n  }\n  *[Symbol.iterator]() {\n    yield this._x;\n    yield this._y;\n    yield this._z;\n    yield this._w;\n  }\n}\nclass Vector3 {\n  constructor(x = 0, y = 0, z = 0) {\n    Vector3.prototype.isVector3 = true;\n    this.x = x;\n    this.y = y;\n    this.z = z;\n  }\n  set(x, y, z) {\n    if (z === void 0)\n      z = this.z;\n    this.x = x;\n    this.y = y;\n    this.z = z;\n    return this;\n  }\n  setScalar(scalar) {\n    this.x = scalar;\n    this.y = scalar;\n    this.z = scalar;\n    return this;\n  }\n  setX(x) {\n    this.x = x;\n    return this;\n  }\n  setY(y) {\n    this.y = y;\n    return this;\n  }\n  setZ(z) {\n    this.z = z;\n    return this;\n  }\n  setComponent(index, value) {\n    switch (index) {\n      case 0:\n        this.x = value;\n        break;\n      case 1:\n        this.y = value;\n        break;\n      case 2:\n        this.z = value;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n    return this;\n  }\n  getComponent(index) {\n    switch (index) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      case 2:\n        return this.z;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n  }\n  clone() {\n    return new this.constructor(this.x, this.y, this.z);\n  }\n  copy(v) {\n    this.x = v.x;\n    this.y = v.y;\n    this.z = v.z;\n    return this;\n  }\n  add(v) {\n    this.x += v.x;\n    this.y += v.y;\n    this.z += v.z;\n    return this;\n  }\n  addScalar(s) {\n    this.x += s;\n    this.y += s;\n    this.z += s;\n    return this;\n  }\n  addVectors(a, b) {\n    this.x = a.x + b.x;\n    this.y = a.y + b.y;\n    this.z = a.z + b.z;\n    return this;\n  }\n  addScaledVector(v, s) {\n    this.x += v.x * s;\n    this.y += v.y * s;\n    this.z += v.z * s;\n    return this;\n  }\n  sub(v) {\n    this.x -= v.x;\n    this.y -= v.y;\n    this.z -= v.z;\n    return this;\n  }\n  subScalar(s) {\n    this.x -= s;\n    this.y -= s;\n    this.z -= s;\n    return this;\n  }\n  subVectors(a, b) {\n    this.x = a.x - b.x;\n    this.y = a.y - b.y;\n    this.z = a.z - b.z;\n    return this;\n  }\n  multiply(v) {\n    this.x *= v.x;\n    this.y *= v.y;\n    this.z *= v.z;\n    return this;\n  }\n  multiplyScalar(scalar) {\n    this.x *= scalar;\n    this.y *= scalar;\n    this.z *= scalar;\n    return this;\n  }\n  multiplyVectors(a, b) {\n    this.x = a.x * b.x;\n    this.y = a.y * b.y;\n    this.z = a.z * b.z;\n    return this;\n  }\n  applyEuler(euler) {\n    return this.applyQuaternion(_quaternion$4.setFromEuler(euler));\n  }\n  applyAxisAngle(axis, angle) {\n    return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle));\n  }\n  applyMatrix3(m) {\n    const x = this.x, y = this.y, z = this.z;\n    const e = m.elements;\n    this.x = e[0] * x + e[3] * y + e[6] * z;\n    this.y = e[1] * x + e[4] * y + e[7] * z;\n    this.z = e[2] * x + e[5] * y + e[8] * z;\n    return this;\n  }\n  applyNormalMatrix(m) {\n    return this.applyMatrix3(m).normalize();\n  }\n  applyMatrix4(m) {\n    const x = this.x, y = this.y, z = this.z;\n    const e = m.elements;\n    const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\n    this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\n    this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\n    this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\n    return this;\n  }\n  applyQuaternion(q) {\n    const x = this.x, y = this.y, z = this.z;\n    const qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n    const ix = qw * x + qy * z - qz * y;\n    const iy = qw * y + qz * x - qx * z;\n    const iz = qw * z + qx * y - qy * x;\n    const iw = -qx * x - qy * y - qz * z;\n    this.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n    this.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n    this.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n    return this;\n  }\n  project(camera) {\n    return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix);\n  }\n  unproject(camera) {\n    return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld);\n  }\n  transformDirection(m) {\n    const x = this.x, y = this.y, z = this.z;\n    const e = m.elements;\n    this.x = e[0] * x + e[4] * y + e[8] * z;\n    this.y = e[1] * x + e[5] * y + e[9] * z;\n    this.z = e[2] * x + e[6] * y + e[10] * z;\n    return this.normalize();\n  }\n  divide(v) {\n    this.x /= v.x;\n    this.y /= v.y;\n    this.z /= v.z;\n    return this;\n  }\n  divideScalar(scalar) {\n    return this.multiplyScalar(1 / scalar);\n  }\n  min(v) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    this.z = Math.min(this.z, v.z);\n    return this;\n  }\n  max(v) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    this.z = Math.max(this.z, v.z);\n    return this;\n  }\n  clamp(min, max) {\n    this.x = Math.max(min.x, Math.min(max.x, this.x));\n    this.y = Math.max(min.y, Math.min(max.y, this.y));\n    this.z = Math.max(min.z, Math.min(max.z, this.z));\n    return this;\n  }\n  clampScalar(minVal, maxVal) {\n    this.x = Math.max(minVal, Math.min(maxVal, this.x));\n    this.y = Math.max(minVal, Math.min(maxVal, this.y));\n    this.z = Math.max(minVal, Math.min(maxVal, this.z));\n    return this;\n  }\n  clampLength(min, max) {\n    const length = this.length();\n    return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n  }\n  floor() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n    this.z = Math.floor(this.z);\n    return this;\n  }\n  ceil() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n    this.z = Math.ceil(this.z);\n    return this;\n  }\n  round() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n    this.z = Math.round(this.z);\n    return this;\n  }\n  roundToZero() {\n    this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n    this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n    this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z);\n    return this;\n  }\n  negate() {\n    this.x = -this.x;\n    this.y = -this.y;\n    this.z = -this.z;\n    return this;\n  }\n  dot(v) {\n    return this.x * v.x + this.y * v.y + this.z * v.z;\n  }\n  lengthSq() {\n    return this.x * this.x + this.y * this.y + this.z * this.z;\n  }\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n  }\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n  setLength(length) {\n    return this.normalize().multiplyScalar(length);\n  }\n  lerp(v, alpha) {\n    this.x += (v.x - this.x) * alpha;\n    this.y += (v.y - this.y) * alpha;\n    this.z += (v.z - this.z) * alpha;\n    return this;\n  }\n  lerpVectors(v1, v2, alpha) {\n    this.x = v1.x + (v2.x - v1.x) * alpha;\n    this.y = v1.y + (v2.y - v1.y) * alpha;\n    this.z = v1.z + (v2.z - v1.z) * alpha;\n    return this;\n  }\n  cross(v) {\n    return this.crossVectors(this, v);\n  }\n  crossVectors(a, b) {\n    const ax = a.x, ay = a.y, az = a.z;\n    const bx = b.x, by = b.y, bz = b.z;\n    this.x = ay * bz - az * by;\n    this.y = az * bx - ax * bz;\n    this.z = ax * by - ay * bx;\n    return this;\n  }\n  projectOnVector(v) {\n    const denominator = v.lengthSq();\n    if (denominator === 0)\n      return this.set(0, 0, 0);\n    const scalar = v.dot(this) / denominator;\n    return this.copy(v).multiplyScalar(scalar);\n  }\n  projectOnPlane(planeNormal) {\n    _vector$c.copy(this).projectOnVector(planeNormal);\n    return this.sub(_vector$c);\n  }\n  reflect(normal) {\n    return this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal)));\n  }\n  angleTo(v) {\n    const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\n    if (denominator === 0)\n      return Math.PI / 2;\n    const theta = this.dot(v) / denominator;\n    return Math.acos(clamp$1(theta, -1, 1));\n  }\n  distanceTo(v) {\n    return Math.sqrt(this.distanceToSquared(v));\n  }\n  distanceToSquared(v) {\n    const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n    return dx * dx + dy * dy + dz * dz;\n  }\n  manhattanDistanceTo(v) {\n    return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z);\n  }\n  setFromSpherical(s) {\n    return this.setFromSphericalCoords(s.radius, s.phi, s.theta);\n  }\n  setFromSphericalCoords(radius, phi, theta) {\n    const sinPhiRadius = Math.sin(phi) * radius;\n    this.x = sinPhiRadius * Math.sin(theta);\n    this.y = Math.cos(phi) * radius;\n    this.z = sinPhiRadius * Math.cos(theta);\n    return this;\n  }\n  setFromCylindrical(c) {\n    return this.setFromCylindricalCoords(c.radius, c.theta, c.y);\n  }\n  setFromCylindricalCoords(radius, theta, y) {\n    this.x = radius * Math.sin(theta);\n    this.y = y;\n    this.z = radius * Math.cos(theta);\n    return this;\n  }\n  setFromMatrixPosition(m) {\n    const e = m.elements;\n    this.x = e[12];\n    this.y = e[13];\n    this.z = e[14];\n    return this;\n  }\n  setFromMatrixScale(m) {\n    const sx = this.setFromMatrixColumn(m, 0).length();\n    const sy = this.setFromMatrixColumn(m, 1).length();\n    const sz = this.setFromMatrixColumn(m, 2).length();\n    this.x = sx;\n    this.y = sy;\n    this.z = sz;\n    return this;\n  }\n  setFromMatrixColumn(m, index) {\n    return this.fromArray(m.elements, index * 4);\n  }\n  setFromMatrix3Column(m, index) {\n    return this.fromArray(m.elements, index * 3);\n  }\n  setFromEuler(e) {\n    this.x = e._x;\n    this.y = e._y;\n    this.z = e._z;\n    return this;\n  }\n  equals(v) {\n    return v.x === this.x && v.y === this.y && v.z === this.z;\n  }\n  fromArray(array, offset = 0) {\n    this.x = array[offset];\n    this.y = array[offset + 1];\n    this.z = array[offset + 2];\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this.x;\n    array[offset + 1] = this.y;\n    array[offset + 2] = this.z;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this.x = attribute.getX(index);\n    this.y = attribute.getY(index);\n    this.z = attribute.getZ(index);\n    return this;\n  }\n  random() {\n    this.x = Math.random();\n    this.y = Math.random();\n    this.z = Math.random();\n    return this;\n  }\n  randomDirection() {\n    const u = (Math.random() - 0.5) * 2;\n    const t = Math.random() * Math.PI * 2;\n    const f = Math.sqrt(1 - u ** 2);\n    this.x = f * Math.cos(t);\n    this.y = f * Math.sin(t);\n    this.z = u;\n    return this;\n  }\n  *[Symbol.iterator]() {\n    yield this.x;\n    yield this.y;\n    yield this.z;\n  }\n}\nconst _vector$c = /* @__PURE__ */ new Vector3();\nconst _quaternion$4 = /* @__PURE__ */ new Quaternion();\nclass Box3 {\n  constructor(min = new Vector3(Infinity, Infinity, Infinity), max = new Vector3(-Infinity, -Infinity, -Infinity)) {\n    this.isBox3 = true;\n    this.min = min;\n    this.max = max;\n  }\n  set(min, max) {\n    this.min.copy(min);\n    this.max.copy(max);\n    return this;\n  }\n  setFromArray(array) {\n    let minX = Infinity;\n    let minY = Infinity;\n    let minZ = Infinity;\n    let maxX = -Infinity;\n    let maxY = -Infinity;\n    let maxZ = -Infinity;\n    for (let i = 0, l = array.length; i < l; i += 3) {\n      const x = array[i];\n      const y = array[i + 1];\n      const z = array[i + 2];\n      if (x < minX)\n        minX = x;\n      if (y < minY)\n        minY = y;\n      if (z < minZ)\n        minZ = z;\n      if (x > maxX)\n        maxX = x;\n      if (y > maxY)\n        maxY = y;\n      if (z > maxZ)\n        maxZ = z;\n    }\n    this.min.set(minX, minY, minZ);\n    this.max.set(maxX, maxY, maxZ);\n    return this;\n  }\n  setFromBufferAttribute(attribute) {\n    let minX = Infinity;\n    let minY = Infinity;\n    let minZ = Infinity;\n    let maxX = -Infinity;\n    let maxY = -Infinity;\n    let maxZ = -Infinity;\n    for (let i = 0, l = attribute.count; i < l; i++) {\n      const x = attribute.getX(i);\n      const y = attribute.getY(i);\n      const z = attribute.getZ(i);\n      if (x < minX)\n        minX = x;\n      if (y < minY)\n        minY = y;\n      if (z < minZ)\n        minZ = z;\n      if (x > maxX)\n        maxX = x;\n      if (y > maxY)\n        maxY = y;\n      if (z > maxZ)\n        maxZ = z;\n    }\n    this.min.set(minX, minY, minZ);\n    this.max.set(maxX, maxY, maxZ);\n    return this;\n  }\n  setFromPoints(points) {\n    this.makeEmpty();\n    for (let i = 0, il = points.length; i < il; i++) {\n      this.expandByPoint(points[i]);\n    }\n    return this;\n  }\n  setFromCenterAndSize(center, size) {\n    const halfSize = _vector$b.copy(size).multiplyScalar(0.5);\n    this.min.copy(center).sub(halfSize);\n    this.max.copy(center).add(halfSize);\n    return this;\n  }\n  setFromObject(object, precise = false) {\n    this.makeEmpty();\n    return this.expandByObject(object, precise);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(box) {\n    this.min.copy(box.min);\n    this.max.copy(box.max);\n    return this;\n  }\n  makeEmpty() {\n    this.min.x = this.min.y = this.min.z = Infinity;\n    this.max.x = this.max.y = this.max.z = -Infinity;\n    return this;\n  }\n  isEmpty() {\n    return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;\n  }\n  getCenter(target) {\n    return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n  }\n  getSize(target) {\n    return this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min);\n  }\n  expandByPoint(point) {\n    this.min.min(point);\n    this.max.max(point);\n    return this;\n  }\n  expandByVector(vector) {\n    this.min.sub(vector);\n    this.max.add(vector);\n    return this;\n  }\n  expandByScalar(scalar) {\n    this.min.addScalar(-scalar);\n    this.max.addScalar(scalar);\n    return this;\n  }\n  expandByObject(object, precise = false) {\n    object.updateWorldMatrix(false, false);\n    const geometry = object.geometry;\n    if (geometry !== void 0) {\n      if (precise && geometry.attributes != void 0 && geometry.attributes.position !== void 0) {\n        const position = geometry.attributes.position;\n        for (let i = 0, l = position.count; i < l; i++) {\n          _vector$b.fromBufferAttribute(position, i).applyMatrix4(object.matrixWorld);\n          this.expandByPoint(_vector$b);\n        }\n      } else {\n        if (geometry.boundingBox === null) {\n          geometry.computeBoundingBox();\n        }\n        _box$3.copy(geometry.boundingBox);\n        _box$3.applyMatrix4(object.matrixWorld);\n        this.union(_box$3);\n      }\n    }\n    const children = object.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      this.expandByObject(children[i], precise);\n    }\n    return this;\n  }\n  containsPoint(point) {\n    return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y || point.z < this.min.z || point.z > this.max.z ? false : true;\n  }\n  containsBox(box) {\n    return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z;\n  }\n  getParameter(point, target) {\n    return target.set(\n      (point.x - this.min.x) / (this.max.x - this.min.x),\n      (point.y - this.min.y) / (this.max.y - this.min.y),\n      (point.z - this.min.z) / (this.max.z - this.min.z)\n    );\n  }\n  intersectsBox(box) {\n    return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y || box.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n  }\n  intersectsSphere(sphere) {\n    this.clampPoint(sphere.center, _vector$b);\n    return _vector$b.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius;\n  }\n  intersectsPlane(plane) {\n    let min, max;\n    if (plane.normal.x > 0) {\n      min = plane.normal.x * this.min.x;\n      max = plane.normal.x * this.max.x;\n    } else {\n      min = plane.normal.x * this.max.x;\n      max = plane.normal.x * this.min.x;\n    }\n    if (plane.normal.y > 0) {\n      min += plane.normal.y * this.min.y;\n      max += plane.normal.y * this.max.y;\n    } else {\n      min += plane.normal.y * this.max.y;\n      max += plane.normal.y * this.min.y;\n    }\n    if (plane.normal.z > 0) {\n      min += plane.normal.z * this.min.z;\n      max += plane.normal.z * this.max.z;\n    } else {\n      min += plane.normal.z * this.max.z;\n      max += plane.normal.z * this.min.z;\n    }\n    return min <= -plane.constant && max >= -plane.constant;\n  }\n  intersectsTriangle(triangle) {\n    if (this.isEmpty()) {\n      return false;\n    }\n    this.getCenter(_center);\n    _extents.subVectors(this.max, _center);\n    _v0$2.subVectors(triangle.a, _center);\n    _v1$7.subVectors(triangle.b, _center);\n    _v2$3.subVectors(triangle.c, _center);\n    _f0.subVectors(_v1$7, _v0$2);\n    _f1.subVectors(_v2$3, _v1$7);\n    _f2.subVectors(_v0$2, _v2$3);\n    let axes = [\n      0,\n      -_f0.z,\n      _f0.y,\n      0,\n      -_f1.z,\n      _f1.y,\n      0,\n      -_f2.z,\n      _f2.y,\n      _f0.z,\n      0,\n      -_f0.x,\n      _f1.z,\n      0,\n      -_f1.x,\n      _f2.z,\n      0,\n      -_f2.x,\n      -_f0.y,\n      _f0.x,\n      0,\n      -_f1.y,\n      _f1.x,\n      0,\n      -_f2.y,\n      _f2.x,\n      0\n    ];\n    if (!satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents)) {\n      return false;\n    }\n    axes = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n    if (!satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents)) {\n      return false;\n    }\n    _triangleNormal.crossVectors(_f0, _f1);\n    axes = [_triangleNormal.x, _triangleNormal.y, _triangleNormal.z];\n    return satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents);\n  }\n  clampPoint(point, target) {\n    return target.copy(point).clamp(this.min, this.max);\n  }\n  distanceToPoint(point) {\n    const clampedPoint = _vector$b.copy(point).clamp(this.min, this.max);\n    return clampedPoint.sub(point).length();\n  }\n  getBoundingSphere(target) {\n    this.getCenter(target.center);\n    target.radius = this.getSize(_vector$b).length() * 0.5;\n    return target;\n  }\n  intersect(box) {\n    this.min.max(box.min);\n    this.max.min(box.max);\n    if (this.isEmpty())\n      this.makeEmpty();\n    return this;\n  }\n  union(box) {\n    this.min.min(box.min);\n    this.max.max(box.max);\n    return this;\n  }\n  applyMatrix4(matrix) {\n    if (this.isEmpty())\n      return this;\n    _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix);\n    _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix);\n    _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix);\n    _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix);\n    _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix);\n    _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix);\n    _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix);\n    _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix);\n    this.setFromPoints(_points);\n    return this;\n  }\n  translate(offset) {\n    this.min.add(offset);\n    this.max.add(offset);\n    return this;\n  }\n  equals(box) {\n    return box.min.equals(this.min) && box.max.equals(this.max);\n  }\n}\nconst _points = [\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3()\n];\nconst _vector$b = /* @__PURE__ */ new Vector3();\nconst _box$3 = /* @__PURE__ */ new Box3();\nconst _v0$2 = /* @__PURE__ */ new Vector3();\nconst _v1$7 = /* @__PURE__ */ new Vector3();\nconst _v2$3 = /* @__PURE__ */ new Vector3();\nconst _f0 = /* @__PURE__ */ new Vector3();\nconst _f1 = /* @__PURE__ */ new Vector3();\nconst _f2 = /* @__PURE__ */ new Vector3();\nconst _center = /* @__PURE__ */ new Vector3();\nconst _extents = /* @__PURE__ */ new Vector3();\nconst _triangleNormal = /* @__PURE__ */ new Vector3();\nconst _testAxis = /* @__PURE__ */ new Vector3();\nfunction satForAxes(axes, v0, v1, v2, extents) {\n  for (let i = 0, j = axes.length - 3; i <= j; i += 3) {\n    _testAxis.fromArray(axes, i);\n    const r = extents.x * Math.abs(_testAxis.x) + extents.y * Math.abs(_testAxis.y) + extents.z * Math.abs(_testAxis.z);\n    const p0 = v0.dot(_testAxis);\n    const p1 = v1.dot(_testAxis);\n    const p2 = v2.dot(_testAxis);\n    if (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) {\n      return false;\n    }\n  }\n  return true;\n}\nconst _box$2 = /* @__PURE__ */ new Box3();\nconst _v1$6 = /* @__PURE__ */ new Vector3();\nconst _toFarthestPoint = /* @__PURE__ */ new Vector3();\nconst _toPoint = /* @__PURE__ */ new Vector3();\nclass Sphere {\n  constructor(center = new Vector3(), radius = -1) {\n    this.center = center;\n    this.radius = radius;\n  }\n  set(center, radius) {\n    this.center.copy(center);\n    this.radius = radius;\n    return this;\n  }\n  setFromPoints(points, optionalCenter) {\n    const center = this.center;\n    if (optionalCenter !== void 0) {\n      center.copy(optionalCenter);\n    } else {\n      _box$2.setFromPoints(points).getCenter(center);\n    }\n    let maxRadiusSq = 0;\n    for (let i = 0, il = points.length; i < il; i++) {\n      maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i]));\n    }\n    this.radius = Math.sqrt(maxRadiusSq);\n    return this;\n  }\n  copy(sphere) {\n    this.center.copy(sphere.center);\n    this.radius = sphere.radius;\n    return this;\n  }\n  isEmpty() {\n    return this.radius < 0;\n  }\n  makeEmpty() {\n    this.center.set(0, 0, 0);\n    this.radius = -1;\n    return this;\n  }\n  containsPoint(point) {\n    return point.distanceToSquared(this.center) <= this.radius * this.radius;\n  }\n  distanceToPoint(point) {\n    return point.distanceTo(this.center) - this.radius;\n  }\n  intersectsSphere(sphere) {\n    const radiusSum = this.radius + sphere.radius;\n    return sphere.center.distanceToSquared(this.center) <= radiusSum * radiusSum;\n  }\n  intersectsBox(box) {\n    return box.intersectsSphere(this);\n  }\n  intersectsPlane(plane) {\n    return Math.abs(plane.distanceToPoint(this.center)) <= this.radius;\n  }\n  clampPoint(point, target) {\n    const deltaLengthSq = this.center.distanceToSquared(point);\n    target.copy(point);\n    if (deltaLengthSq > this.radius * this.radius) {\n      target.sub(this.center).normalize();\n      target.multiplyScalar(this.radius).add(this.center);\n    }\n    return target;\n  }\n  getBoundingBox(target) {\n    if (this.isEmpty()) {\n      target.makeEmpty();\n      return target;\n    }\n    target.set(this.center, this.center);\n    target.expandByScalar(this.radius);\n    return target;\n  }\n  applyMatrix4(matrix) {\n    this.center.applyMatrix4(matrix);\n    this.radius = this.radius * matrix.getMaxScaleOnAxis();\n    return this;\n  }\n  translate(offset) {\n    this.center.add(offset);\n    return this;\n  }\n  expandByPoint(point) {\n    _toPoint.subVectors(point, this.center);\n    const lengthSq = _toPoint.lengthSq();\n    if (lengthSq > this.radius * this.radius) {\n      const length = Math.sqrt(lengthSq);\n      const missingRadiusHalf = (length - this.radius) * 0.5;\n      this.center.add(_toPoint.multiplyScalar(missingRadiusHalf / length));\n      this.radius += missingRadiusHalf;\n    }\n    return this;\n  }\n  union(sphere) {\n    if (this.center.equals(sphere.center) === true) {\n      _toFarthestPoint.set(0, 0, 1).multiplyScalar(sphere.radius);\n    } else {\n      _toFarthestPoint.subVectors(sphere.center, this.center).normalize().multiplyScalar(sphere.radius);\n    }\n    this.expandByPoint(_v1$6.copy(sphere.center).add(_toFarthestPoint));\n    this.expandByPoint(_v1$6.copy(sphere.center).sub(_toFarthestPoint));\n    return this;\n  }\n  equals(sphere) {\n    return sphere.center.equals(this.center) && sphere.radius === this.radius;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nconst _vector$a = /* @__PURE__ */ new Vector3();\nconst _segCenter = /* @__PURE__ */ new Vector3();\nconst _segDir = /* @__PURE__ */ new Vector3();\nconst _diff = /* @__PURE__ */ new Vector3();\nconst _edge1 = /* @__PURE__ */ new Vector3();\nconst _edge2 = /* @__PURE__ */ new Vector3();\nconst _normal$1 = /* @__PURE__ */ new Vector3();\nclass Ray {\n  constructor(origin = new Vector3(), direction = new Vector3(0, 0, -1)) {\n    this.origin = origin;\n    this.direction = direction;\n  }\n  set(origin, direction) {\n    this.origin.copy(origin);\n    this.direction.copy(direction);\n    return this;\n  }\n  copy(ray) {\n    this.origin.copy(ray.origin);\n    this.direction.copy(ray.direction);\n    return this;\n  }\n  at(t, target) {\n    return target.copy(this.direction).multiplyScalar(t).add(this.origin);\n  }\n  lookAt(v) {\n    this.direction.copy(v).sub(this.origin).normalize();\n    return this;\n  }\n  recast(t) {\n    this.origin.copy(this.at(t, _vector$a));\n    return this;\n  }\n  closestPointToPoint(point, target) {\n    target.subVectors(point, this.origin);\n    const directionDistance = target.dot(this.direction);\n    if (directionDistance < 0) {\n      return target.copy(this.origin);\n    }\n    return target.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);\n  }\n  distanceToPoint(point) {\n    return Math.sqrt(this.distanceSqToPoint(point));\n  }\n  distanceSqToPoint(point) {\n    const directionDistance = _vector$a.subVectors(point, this.origin).dot(this.direction);\n    if (directionDistance < 0) {\n      return this.origin.distanceToSquared(point);\n    }\n    _vector$a.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);\n    return _vector$a.distanceToSquared(point);\n  }\n  distanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) {\n    _segCenter.copy(v0).add(v1).multiplyScalar(0.5);\n    _segDir.copy(v1).sub(v0).normalize();\n    _diff.copy(this.origin).sub(_segCenter);\n    const segExtent = v0.distanceTo(v1) * 0.5;\n    const a01 = -this.direction.dot(_segDir);\n    const b0 = _diff.dot(this.direction);\n    const b1 = -_diff.dot(_segDir);\n    const c = _diff.lengthSq();\n    const det = Math.abs(1 - a01 * a01);\n    let s0, s1, sqrDist, extDet;\n    if (det > 0) {\n      s0 = a01 * b1 - b0;\n      s1 = a01 * b0 - b1;\n      extDet = segExtent * det;\n      if (s0 >= 0) {\n        if (s1 >= -extDet) {\n          if (s1 <= extDet) {\n            const invDet = 1 / det;\n            s0 *= invDet;\n            s1 *= invDet;\n            sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c;\n          } else {\n            s1 = segExtent;\n            s0 = Math.max(0, -(a01 * s1 + b0));\n            sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n          }\n        } else {\n          s1 = -segExtent;\n          s0 = Math.max(0, -(a01 * s1 + b0));\n          sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n        }\n      } else {\n        if (s1 <= -extDet) {\n          s0 = Math.max(0, -(-a01 * segExtent + b0));\n          s1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n          sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n        } else if (s1 <= extDet) {\n          s0 = 0;\n          s1 = Math.min(Math.max(-segExtent, -b1), segExtent);\n          sqrDist = s1 * (s1 + 2 * b1) + c;\n        } else {\n          s0 = Math.max(0, -(a01 * segExtent + b0));\n          s1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n          sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n        }\n      }\n    } else {\n      s1 = a01 > 0 ? -segExtent : segExtent;\n      s0 = Math.max(0, -(a01 * s1 + b0));\n      sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n    }\n    if (optionalPointOnRay) {\n      optionalPointOnRay.copy(this.direction).multiplyScalar(s0).add(this.origin);\n    }\n    if (optionalPointOnSegment) {\n      optionalPointOnSegment.copy(_segDir).multiplyScalar(s1).add(_segCenter);\n    }\n    return sqrDist;\n  }\n  intersectSphere(sphere, target) {\n    _vector$a.subVectors(sphere.center, this.origin);\n    const tca = _vector$a.dot(this.direction);\n    const d2 = _vector$a.dot(_vector$a) - tca * tca;\n    const radius2 = sphere.radius * sphere.radius;\n    if (d2 > radius2)\n      return null;\n    const thc = Math.sqrt(radius2 - d2);\n    const t0 = tca - thc;\n    const t1 = tca + thc;\n    if (t0 < 0 && t1 < 0)\n      return null;\n    if (t0 < 0)\n      return this.at(t1, target);\n    return this.at(t0, target);\n  }\n  intersectsSphere(sphere) {\n    return this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius;\n  }\n  distanceToPlane(plane) {\n    const denominator = plane.normal.dot(this.direction);\n    if (denominator === 0) {\n      if (plane.distanceToPoint(this.origin) === 0) {\n        return 0;\n      }\n      return null;\n    }\n    const t = -(this.origin.dot(plane.normal) + plane.constant) / denominator;\n    return t >= 0 ? t : null;\n  }\n  intersectPlane(plane, target) {\n    const t = this.distanceToPlane(plane);\n    if (t === null) {\n      return null;\n    }\n    return this.at(t, target);\n  }\n  intersectsPlane(plane) {\n    const distToPoint = plane.distanceToPoint(this.origin);\n    if (distToPoint === 0) {\n      return true;\n    }\n    const denominator = plane.normal.dot(this.direction);\n    if (denominator * distToPoint < 0) {\n      return true;\n    }\n    return false;\n  }\n  intersectBox(box, target) {\n    let tmin, tmax, tymin, tymax, tzmin, tzmax;\n    const invdirx = 1 / this.direction.x, invdiry = 1 / this.direction.y, invdirz = 1 / this.direction.z;\n    const origin = this.origin;\n    if (invdirx >= 0) {\n      tmin = (box.min.x - origin.x) * invdirx;\n      tmax = (box.max.x - origin.x) * invdirx;\n    } else {\n      tmin = (box.max.x - origin.x) * invdirx;\n      tmax = (box.min.x - origin.x) * invdirx;\n    }\n    if (invdiry >= 0) {\n      tymin = (box.min.y - origin.y) * invdiry;\n      tymax = (box.max.y - origin.y) * invdiry;\n    } else {\n      tymin = (box.max.y - origin.y) * invdiry;\n      tymax = (box.min.y - origin.y) * invdiry;\n    }\n    if (tmin > tymax || tymin > tmax)\n      return null;\n    if (tymin > tmin || tmin !== tmin)\n      tmin = tymin;\n    if (tymax < tmax || tmax !== tmax)\n      tmax = tymax;\n    if (invdirz >= 0) {\n      tzmin = (box.min.z - origin.z) * invdirz;\n      tzmax = (box.max.z - origin.z) * invdirz;\n    } else {\n      tzmin = (box.max.z - origin.z) * invdirz;\n      tzmax = (box.min.z - origin.z) * invdirz;\n    }\n    if (tmin > tzmax || tzmin > tmax)\n      return null;\n    if (tzmin > tmin || tmin !== tmin)\n      tmin = tzmin;\n    if (tzmax < tmax || tmax !== tmax)\n      tmax = tzmax;\n    if (tmax < 0)\n      return null;\n    return this.at(tmin >= 0 ? tmin : tmax, target);\n  }\n  intersectsBox(box) {\n    return this.intersectBox(box, _vector$a) !== null;\n  }\n  intersectTriangle(a, b, c, backfaceCulling, target) {\n    _edge1.subVectors(b, a);\n    _edge2.subVectors(c, a);\n    _normal$1.crossVectors(_edge1, _edge2);\n    let DdN = this.direction.dot(_normal$1);\n    let sign2;\n    if (DdN > 0) {\n      if (backfaceCulling)\n        return null;\n      sign2 = 1;\n    } else if (DdN < 0) {\n      sign2 = -1;\n      DdN = -DdN;\n    } else {\n      return null;\n    }\n    _diff.subVectors(this.origin, a);\n    const DdQxE2 = sign2 * this.direction.dot(_edge2.crossVectors(_diff, _edge2));\n    if (DdQxE2 < 0) {\n      return null;\n    }\n    const DdE1xQ = sign2 * this.direction.dot(_edge1.cross(_diff));\n    if (DdE1xQ < 0) {\n      return null;\n    }\n    if (DdQxE2 + DdE1xQ > DdN) {\n      return null;\n    }\n    const QdN = -sign2 * _diff.dot(_normal$1);\n    if (QdN < 0) {\n      return null;\n    }\n    return this.at(QdN / DdN, target);\n  }\n  applyMatrix4(matrix4) {\n    this.origin.applyMatrix4(matrix4);\n    this.direction.transformDirection(matrix4);\n    return this;\n  }\n  equals(ray) {\n    return ray.origin.equals(this.origin) && ray.direction.equals(this.direction);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nclass Matrix4 {\n  constructor() {\n    Matrix4.prototype.isMatrix4 = true;\n    this.elements = [\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    ];\n  }\n  set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\n    const te = this.elements;\n    te[0] = n11;\n    te[4] = n12;\n    te[8] = n13;\n    te[12] = n14;\n    te[1] = n21;\n    te[5] = n22;\n    te[9] = n23;\n    te[13] = n24;\n    te[2] = n31;\n    te[6] = n32;\n    te[10] = n33;\n    te[14] = n34;\n    te[3] = n41;\n    te[7] = n42;\n    te[11] = n43;\n    te[15] = n44;\n    return this;\n  }\n  identity() {\n    this.set(\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  clone() {\n    return new Matrix4().fromArray(this.elements);\n  }\n  copy(m) {\n    const te = this.elements;\n    const me = m.elements;\n    te[0] = me[0];\n    te[1] = me[1];\n    te[2] = me[2];\n    te[3] = me[3];\n    te[4] = me[4];\n    te[5] = me[5];\n    te[6] = me[6];\n    te[7] = me[7];\n    te[8] = me[8];\n    te[9] = me[9];\n    te[10] = me[10];\n    te[11] = me[11];\n    te[12] = me[12];\n    te[13] = me[13];\n    te[14] = me[14];\n    te[15] = me[15];\n    return this;\n  }\n  copyPosition(m) {\n    const te = this.elements, me = m.elements;\n    te[12] = me[12];\n    te[13] = me[13];\n    te[14] = me[14];\n    return this;\n  }\n  setFromMatrix3(m) {\n    const me = m.elements;\n    this.set(\n      me[0],\n      me[3],\n      me[6],\n      0,\n      me[1],\n      me[4],\n      me[7],\n      0,\n      me[2],\n      me[5],\n      me[8],\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  extractBasis(xAxis, yAxis, zAxis) {\n    xAxis.setFromMatrixColumn(this, 0);\n    yAxis.setFromMatrixColumn(this, 1);\n    zAxis.setFromMatrixColumn(this, 2);\n    return this;\n  }\n  makeBasis(xAxis, yAxis, zAxis) {\n    this.set(\n      xAxis.x,\n      yAxis.x,\n      zAxis.x,\n      0,\n      xAxis.y,\n      yAxis.y,\n      zAxis.y,\n      0,\n      xAxis.z,\n      yAxis.z,\n      zAxis.z,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  extractRotation(m) {\n    const te = this.elements;\n    const me = m.elements;\n    const scaleX = 1 / _v1$5.setFromMatrixColumn(m, 0).length();\n    const scaleY = 1 / _v1$5.setFromMatrixColumn(m, 1).length();\n    const scaleZ = 1 / _v1$5.setFromMatrixColumn(m, 2).length();\n    te[0] = me[0] * scaleX;\n    te[1] = me[1] * scaleX;\n    te[2] = me[2] * scaleX;\n    te[3] = 0;\n    te[4] = me[4] * scaleY;\n    te[5] = me[5] * scaleY;\n    te[6] = me[6] * scaleY;\n    te[7] = 0;\n    te[8] = me[8] * scaleZ;\n    te[9] = me[9] * scaleZ;\n    te[10] = me[10] * scaleZ;\n    te[11] = 0;\n    te[12] = 0;\n    te[13] = 0;\n    te[14] = 0;\n    te[15] = 1;\n    return this;\n  }\n  makeRotationFromEuler(euler) {\n    const te = this.elements;\n    const x = euler.x, y = euler.y, z = euler.z;\n    const a = Math.cos(x), b = Math.sin(x);\n    const c = Math.cos(y), d = Math.sin(y);\n    const e = Math.cos(z), f = Math.sin(z);\n    if (euler.order === \"XYZ\") {\n      const ae = a * e, af = a * f, be = b * e, bf = b * f;\n      te[0] = c * e;\n      te[4] = -c * f;\n      te[8] = d;\n      te[1] = af + be * d;\n      te[5] = ae - bf * d;\n      te[9] = -b * c;\n      te[2] = bf - ae * d;\n      te[6] = be + af * d;\n      te[10] = a * c;\n    } else if (euler.order === \"YXZ\") {\n      const ce = c * e, cf = c * f, de = d * e, df = d * f;\n      te[0] = ce + df * b;\n      te[4] = de * b - cf;\n      te[8] = a * d;\n      te[1] = a * f;\n      te[5] = a * e;\n      te[9] = -b;\n      te[2] = cf * b - de;\n      te[6] = df + ce * b;\n      te[10] = a * c;\n    } else if (euler.order === \"ZXY\") {\n      const ce = c * e, cf = c * f, de = d * e, df = d * f;\n      te[0] = ce - df * b;\n      te[4] = -a * f;\n      te[8] = de + cf * b;\n      te[1] = cf + de * b;\n      te[5] = a * e;\n      te[9] = df - ce * b;\n      te[2] = -a * d;\n      te[6] = b;\n      te[10] = a * c;\n    } else if (euler.order === \"ZYX\") {\n      const ae = a * e, af = a * f, be = b * e, bf = b * f;\n      te[0] = c * e;\n      te[4] = be * d - af;\n      te[8] = ae * d + bf;\n      te[1] = c * f;\n      te[5] = bf * d + ae;\n      te[9] = af * d - be;\n      te[2] = -d;\n      te[6] = b * c;\n      te[10] = a * c;\n    } else if (euler.order === \"YZX\") {\n      const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n      te[0] = c * e;\n      te[4] = bd - ac * f;\n      te[8] = bc * f + ad;\n      te[1] = f;\n      te[5] = a * e;\n      te[9] = -b * e;\n      te[2] = -d * e;\n      te[6] = ad * f + bc;\n      te[10] = ac - bd * f;\n    } else if (euler.order === \"XZY\") {\n      const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n      te[0] = c * e;\n      te[4] = -f;\n      te[8] = d * e;\n      te[1] = ac * f + bd;\n      te[5] = a * e;\n      te[9] = ad * f - bc;\n      te[2] = bc * f - ad;\n      te[6] = b * e;\n      te[10] = bd * f + ac;\n    }\n    te[3] = 0;\n    te[7] = 0;\n    te[11] = 0;\n    te[12] = 0;\n    te[13] = 0;\n    te[14] = 0;\n    te[15] = 1;\n    return this;\n  }\n  makeRotationFromQuaternion(q) {\n    return this.compose(_zero, q, _one);\n  }\n  lookAt(eye, target, up) {\n    const te = this.elements;\n    _z.subVectors(eye, target);\n    if (_z.lengthSq() === 0) {\n      _z.z = 1;\n    }\n    _z.normalize();\n    _x.crossVectors(up, _z);\n    if (_x.lengthSq() === 0) {\n      if (Math.abs(up.z) === 1) {\n        _z.x += 1e-4;\n      } else {\n        _z.z += 1e-4;\n      }\n      _z.normalize();\n      _x.crossVectors(up, _z);\n    }\n    _x.normalize();\n    _y.crossVectors(_z, _x);\n    te[0] = _x.x;\n    te[4] = _y.x;\n    te[8] = _z.x;\n    te[1] = _x.y;\n    te[5] = _y.y;\n    te[9] = _z.y;\n    te[2] = _x.z;\n    te[6] = _y.z;\n    te[10] = _z.z;\n    return this;\n  }\n  multiply(m) {\n    return this.multiplyMatrices(this, m);\n  }\n  premultiply(m) {\n    return this.multiplyMatrices(m, this);\n  }\n  multiplyMatrices(a, b) {\n    const ae = a.elements;\n    const be = b.elements;\n    const te = this.elements;\n    const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\n    const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\n    const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\n    const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\n    const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\n    const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\n    const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\n    const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\n    te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n    te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n    te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n    te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n    te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n    te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n    te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n    te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n    te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n    te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n    te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n    te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n    te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n    te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n    te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n    te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n    return this;\n  }\n  multiplyScalar(s) {\n    const te = this.elements;\n    te[0] *= s;\n    te[4] *= s;\n    te[8] *= s;\n    te[12] *= s;\n    te[1] *= s;\n    te[5] *= s;\n    te[9] *= s;\n    te[13] *= s;\n    te[2] *= s;\n    te[6] *= s;\n    te[10] *= s;\n    te[14] *= s;\n    te[3] *= s;\n    te[7] *= s;\n    te[11] *= s;\n    te[15] *= s;\n    return this;\n  }\n  determinant() {\n    const te = this.elements;\n    const n11 = te[0], n12 = te[4], n13 = te[8], n14 = te[12];\n    const n21 = te[1], n22 = te[5], n23 = te[9], n24 = te[13];\n    const n31 = te[2], n32 = te[6], n33 = te[10], n34 = te[14];\n    const n41 = te[3], n42 = te[7], n43 = te[11], n44 = te[15];\n    return n41 * (+n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34) + n42 * (+n11 * n23 * n34 - n11 * n24 * n33 + n14 * n21 * n33 - n13 * n21 * n34 + n13 * n24 * n31 - n14 * n23 * n31) + n43 * (+n11 * n24 * n32 - n11 * n22 * n34 - n14 * n21 * n32 + n12 * n21 * n34 + n14 * n22 * n31 - n12 * n24 * n31) + n44 * (-n13 * n22 * n31 - n11 * n23 * n32 + n11 * n22 * n33 + n13 * n21 * n32 - n12 * n21 * n33 + n12 * n23 * n31);\n  }\n  transpose() {\n    const te = this.elements;\n    let tmp2;\n    tmp2 = te[1];\n    te[1] = te[4];\n    te[4] = tmp2;\n    tmp2 = te[2];\n    te[2] = te[8];\n    te[8] = tmp2;\n    tmp2 = te[6];\n    te[6] = te[9];\n    te[9] = tmp2;\n    tmp2 = te[3];\n    te[3] = te[12];\n    te[12] = tmp2;\n    tmp2 = te[7];\n    te[7] = te[13];\n    te[13] = tmp2;\n    tmp2 = te[11];\n    te[11] = te[14];\n    te[14] = tmp2;\n    return this;\n  }\n  setPosition(x, y, z) {\n    const te = this.elements;\n    if (x.isVector3) {\n      te[12] = x.x;\n      te[13] = x.y;\n      te[14] = x.z;\n    } else {\n      te[12] = x;\n      te[13] = y;\n      te[14] = z;\n    }\n    return this;\n  }\n  invert() {\n    const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n41 = te[3], n12 = te[4], n22 = te[5], n32 = te[6], n42 = te[7], n13 = te[8], n23 = te[9], n33 = te[10], n43 = te[11], n14 = te[12], n24 = te[13], n34 = te[14], n44 = te[15], t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n    const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n    if (det === 0)\n      return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    const detInv = 1 / det;\n    te[0] = t11 * detInv;\n    te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv;\n    te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv;\n    te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv;\n    te[4] = t12 * detInv;\n    te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv;\n    te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv;\n    te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv;\n    te[8] = t13 * detInv;\n    te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv;\n    te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv;\n    te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv;\n    te[12] = t14 * detInv;\n    te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv;\n    te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv;\n    te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv;\n    return this;\n  }\n  scale(v) {\n    const te = this.elements;\n    const x = v.x, y = v.y, z = v.z;\n    te[0] *= x;\n    te[4] *= y;\n    te[8] *= z;\n    te[1] *= x;\n    te[5] *= y;\n    te[9] *= z;\n    te[2] *= x;\n    te[6] *= y;\n    te[10] *= z;\n    te[3] *= x;\n    te[7] *= y;\n    te[11] *= z;\n    return this;\n  }\n  getMaxScaleOnAxis() {\n    const te = this.elements;\n    const scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2];\n    const scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6];\n    const scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10];\n    return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n  }\n  makeTranslation(x, y, z) {\n    this.set(\n      1,\n      0,\n      0,\n      x,\n      0,\n      1,\n      0,\n      y,\n      0,\n      0,\n      1,\n      z,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeRotationX(theta) {\n    const c = Math.cos(theta), s = Math.sin(theta);\n    this.set(\n      1,\n      0,\n      0,\n      0,\n      0,\n      c,\n      -s,\n      0,\n      0,\n      s,\n      c,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeRotationY(theta) {\n    const c = Math.cos(theta), s = Math.sin(theta);\n    this.set(\n      c,\n      0,\n      s,\n      0,\n      0,\n      1,\n      0,\n      0,\n      -s,\n      0,\n      c,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeRotationZ(theta) {\n    const c = Math.cos(theta), s = Math.sin(theta);\n    this.set(\n      c,\n      -s,\n      0,\n      0,\n      s,\n      c,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeRotationAxis(axis, angle) {\n    const c = Math.cos(angle);\n    const s = Math.sin(angle);\n    const t = 1 - c;\n    const x = axis.x, y = axis.y, z = axis.z;\n    const tx = t * x, ty = t * y;\n    this.set(\n      tx * x + c,\n      tx * y - s * z,\n      tx * z + s * y,\n      0,\n      tx * y + s * z,\n      ty * y + c,\n      ty * z - s * x,\n      0,\n      tx * z - s * y,\n      ty * z + s * x,\n      t * z * z + c,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeScale(x, y, z) {\n    this.set(\n      x,\n      0,\n      0,\n      0,\n      0,\n      y,\n      0,\n      0,\n      0,\n      0,\n      z,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeShear(xy, xz, yx, yz, zx, zy) {\n    this.set(\n      1,\n      yx,\n      zx,\n      0,\n      xy,\n      1,\n      zy,\n      0,\n      xz,\n      yz,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  compose(position, quaternion, scale) {\n    const te = this.elements;\n    const x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n    const x2 = x + x, y2 = y + y, z2 = z + z;\n    const xx = x * x2, xy = x * y2, xz = x * z2;\n    const yy = y * y2, yz = y * z2, zz = z * z2;\n    const wx = w * x2, wy = w * y2, wz = w * z2;\n    const sx = scale.x, sy = scale.y, sz = scale.z;\n    te[0] = (1 - (yy + zz)) * sx;\n    te[1] = (xy + wz) * sx;\n    te[2] = (xz - wy) * sx;\n    te[3] = 0;\n    te[4] = (xy - wz) * sy;\n    te[5] = (1 - (xx + zz)) * sy;\n    te[6] = (yz + wx) * sy;\n    te[7] = 0;\n    te[8] = (xz + wy) * sz;\n    te[9] = (yz - wx) * sz;\n    te[10] = (1 - (xx + yy)) * sz;\n    te[11] = 0;\n    te[12] = position.x;\n    te[13] = position.y;\n    te[14] = position.z;\n    te[15] = 1;\n    return this;\n  }\n  decompose(position, quaternion, scale) {\n    const te = this.elements;\n    let sx = _v1$5.set(te[0], te[1], te[2]).length();\n    const sy = _v1$5.set(te[4], te[5], te[6]).length();\n    const sz = _v1$5.set(te[8], te[9], te[10]).length();\n    const det = this.determinant();\n    if (det < 0)\n      sx = -sx;\n    position.x = te[12];\n    position.y = te[13];\n    position.z = te[14];\n    _m1$2.copy(this);\n    const invSX = 1 / sx;\n    const invSY = 1 / sy;\n    const invSZ = 1 / sz;\n    _m1$2.elements[0] *= invSX;\n    _m1$2.elements[1] *= invSX;\n    _m1$2.elements[2] *= invSX;\n    _m1$2.elements[4] *= invSY;\n    _m1$2.elements[5] *= invSY;\n    _m1$2.elements[6] *= invSY;\n    _m1$2.elements[8] *= invSZ;\n    _m1$2.elements[9] *= invSZ;\n    _m1$2.elements[10] *= invSZ;\n    quaternion.setFromRotationMatrix(_m1$2);\n    scale.x = sx;\n    scale.y = sy;\n    scale.z = sz;\n    return this;\n  }\n  makePerspective(left, right, top, bottom, near, far) {\n    const te = this.elements;\n    const x = 2 * near / (right - left);\n    const y = 2 * near / (top - bottom);\n    const a = (right + left) / (right - left);\n    const b = (top + bottom) / (top - bottom);\n    const c = -(far + near) / (far - near);\n    const d = -2 * far * near / (far - near);\n    te[0] = x;\n    te[4] = 0;\n    te[8] = a;\n    te[12] = 0;\n    te[1] = 0;\n    te[5] = y;\n    te[9] = b;\n    te[13] = 0;\n    te[2] = 0;\n    te[6] = 0;\n    te[10] = c;\n    te[14] = d;\n    te[3] = 0;\n    te[7] = 0;\n    te[11] = -1;\n    te[15] = 0;\n    return this;\n  }\n  makeOrthographic(left, right, top, bottom, near, far) {\n    const te = this.elements;\n    const w = 1 / (right - left);\n    const h = 1 / (top - bottom);\n    const p = 1 / (far - near);\n    const x = (right + left) * w;\n    const y = (top + bottom) * h;\n    const z = (far + near) * p;\n    te[0] = 2 * w;\n    te[4] = 0;\n    te[8] = 0;\n    te[12] = -x;\n    te[1] = 0;\n    te[5] = 2 * h;\n    te[9] = 0;\n    te[13] = -y;\n    te[2] = 0;\n    te[6] = 0;\n    te[10] = -2 * p;\n    te[14] = -z;\n    te[3] = 0;\n    te[7] = 0;\n    te[11] = 0;\n    te[15] = 1;\n    return this;\n  }\n  equals(matrix) {\n    const te = this.elements;\n    const me = matrix.elements;\n    for (let i = 0; i < 16; i++) {\n      if (te[i] !== me[i])\n        return false;\n    }\n    return true;\n  }\n  fromArray(array, offset = 0) {\n    for (let i = 0; i < 16; i++) {\n      this.elements[i] = array[i + offset];\n    }\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    const te = this.elements;\n    array[offset] = te[0];\n    array[offset + 1] = te[1];\n    array[offset + 2] = te[2];\n    array[offset + 3] = te[3];\n    array[offset + 4] = te[4];\n    array[offset + 5] = te[5];\n    array[offset + 6] = te[6];\n    array[offset + 7] = te[7];\n    array[offset + 8] = te[8];\n    array[offset + 9] = te[9];\n    array[offset + 10] = te[10];\n    array[offset + 11] = te[11];\n    array[offset + 12] = te[12];\n    array[offset + 13] = te[13];\n    array[offset + 14] = te[14];\n    array[offset + 15] = te[15];\n    return array;\n  }\n}\nconst _v1$5 = /* @__PURE__ */ new Vector3();\nconst _m1$2 = /* @__PURE__ */ new Matrix4();\nconst _zero = /* @__PURE__ */ new Vector3(0, 0, 0);\nconst _one = /* @__PURE__ */ new Vector3(1, 1, 1);\nconst _x = /* @__PURE__ */ new Vector3();\nconst _y = /* @__PURE__ */ new Vector3();\nconst _z = /* @__PURE__ */ new Vector3();\nconst _matrix$1 = /* @__PURE__ */ new Matrix4();\nconst _quaternion$3 = /* @__PURE__ */ new Quaternion();\nclass Euler {\n  constructor(x = 0, y = 0, z = 0, order = Euler.DefaultOrder) {\n    this.isEuler = true;\n    this._x = x;\n    this._y = y;\n    this._z = z;\n    this._order = order;\n  }\n  get x() {\n    return this._x;\n  }\n  set x(value) {\n    this._x = value;\n    this._onChangeCallback();\n  }\n  get y() {\n    return this._y;\n  }\n  set y(value) {\n    this._y = value;\n    this._onChangeCallback();\n  }\n  get z() {\n    return this._z;\n  }\n  set z(value) {\n    this._z = value;\n    this._onChangeCallback();\n  }\n  get order() {\n    return this._order;\n  }\n  set order(value) {\n    this._order = value;\n    this._onChangeCallback();\n  }\n  set(x, y, z, order = this._order) {\n    this._x = x;\n    this._y = y;\n    this._z = z;\n    this._order = order;\n    this._onChangeCallback();\n    return this;\n  }\n  clone() {\n    return new this.constructor(this._x, this._y, this._z, this._order);\n  }\n  copy(euler) {\n    this._x = euler._x;\n    this._y = euler._y;\n    this._z = euler._z;\n    this._order = euler._order;\n    this._onChangeCallback();\n    return this;\n  }\n  setFromRotationMatrix(m, order = this._order, update = true) {\n    const te = m.elements;\n    const m11 = te[0], m12 = te[4], m13 = te[8];\n    const m21 = te[1], m22 = te[5], m23 = te[9];\n    const m31 = te[2], m32 = te[6], m33 = te[10];\n    switch (order) {\n      case \"XYZ\":\n        this._y = Math.asin(clamp$1(m13, -1, 1));\n        if (Math.abs(m13) < 0.9999999) {\n          this._x = Math.atan2(-m23, m33);\n          this._z = Math.atan2(-m12, m11);\n        } else {\n          this._x = Math.atan2(m32, m22);\n          this._z = 0;\n        }\n        break;\n      case \"YXZ\":\n        this._x = Math.asin(-clamp$1(m23, -1, 1));\n        if (Math.abs(m23) < 0.9999999) {\n          this._y = Math.atan2(m13, m33);\n          this._z = Math.atan2(m21, m22);\n        } else {\n          this._y = Math.atan2(-m31, m11);\n          this._z = 0;\n        }\n        break;\n      case \"ZXY\":\n        this._x = Math.asin(clamp$1(m32, -1, 1));\n        if (Math.abs(m32) < 0.9999999) {\n          this._y = Math.atan2(-m31, m33);\n          this._z = Math.atan2(-m12, m22);\n        } else {\n          this._y = 0;\n          this._z = Math.atan2(m21, m11);\n        }\n        break;\n      case \"ZYX\":\n        this._y = Math.asin(-clamp$1(m31, -1, 1));\n        if (Math.abs(m31) < 0.9999999) {\n          this._x = Math.atan2(m32, m33);\n          this._z = Math.atan2(m21, m11);\n        } else {\n          this._x = 0;\n          this._z = Math.atan2(-m12, m22);\n        }\n        break;\n      case \"YZX\":\n        this._z = Math.asin(clamp$1(m21, -1, 1));\n        if (Math.abs(m21) < 0.9999999) {\n          this._x = Math.atan2(-m23, m22);\n          this._y = Math.atan2(-m31, m11);\n        } else {\n          this._x = 0;\n          this._y = Math.atan2(m13, m33);\n        }\n        break;\n      case \"XZY\":\n        this._z = Math.asin(-clamp$1(m12, -1, 1));\n        if (Math.abs(m12) < 0.9999999) {\n          this._x = Math.atan2(m32, m22);\n          this._y = Math.atan2(m13, m11);\n        } else {\n          this._x = Math.atan2(-m23, m33);\n          this._y = 0;\n        }\n        break;\n      default:\n        console.warn(\"THREE.Euler: .setFromRotationMatrix() encountered an unknown order: \" + order);\n    }\n    this._order = order;\n    if (update === true)\n      this._onChangeCallback();\n    return this;\n  }\n  setFromQuaternion(q, order, update) {\n    _matrix$1.makeRotationFromQuaternion(q);\n    return this.setFromRotationMatrix(_matrix$1, order, update);\n  }\n  setFromVector3(v, order = this._order) {\n    return this.set(v.x, v.y, v.z, order);\n  }\n  reorder(newOrder) {\n    _quaternion$3.setFromEuler(this);\n    return this.setFromQuaternion(_quaternion$3, newOrder);\n  }\n  equals(euler) {\n    return euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order;\n  }\n  fromArray(array) {\n    this._x = array[0];\n    this._y = array[1];\n    this._z = array[2];\n    if (array[3] !== void 0)\n      this._order = array[3];\n    this._onChangeCallback();\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this._x;\n    array[offset + 1] = this._y;\n    array[offset + 2] = this._z;\n    array[offset + 3] = this._order;\n    return array;\n  }\n  _onChange(callback) {\n    this._onChangeCallback = callback;\n    return this;\n  }\n  _onChangeCallback() {\n  }\n  *[Symbol.iterator]() {\n    yield this._x;\n    yield this._y;\n    yield this._z;\n    yield this._order;\n  }\n  toVector3() {\n    console.error(\"THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead\");\n  }\n}\nEuler.DefaultOrder = \"XYZ\";\nEuler.RotationOrders = [\"XYZ\", \"YZX\", \"ZXY\", \"XZY\", \"YXZ\", \"ZYX\"];\nclass Layers {\n  constructor() {\n    this.mask = 1 | 0;\n  }\n  set(channel) {\n    this.mask = (1 << channel | 0) >>> 0;\n  }\n  enable(channel) {\n    this.mask |= 1 << channel | 0;\n  }\n  enableAll() {\n    this.mask = 4294967295 | 0;\n  }\n  toggle(channel) {\n    this.mask ^= 1 << channel | 0;\n  }\n  disable(channel) {\n    this.mask &= ~(1 << channel | 0);\n  }\n  disableAll() {\n    this.mask = 0;\n  }\n  test(layers) {\n    return (this.mask & layers.mask) !== 0;\n  }\n  isEnabled(channel) {\n    return (this.mask & (1 << channel | 0)) !== 0;\n  }\n}\nlet _object3DId = 0;\nconst _v1$4 = /* @__PURE__ */ new Vector3();\nconst _q1 = /* @__PURE__ */ new Quaternion();\nconst _m1$1 = /* @__PURE__ */ new Matrix4();\nconst _target = /* @__PURE__ */ new Vector3();\nconst _position$3 = /* @__PURE__ */ new Vector3();\nconst _scale$2 = /* @__PURE__ */ new Vector3();\nconst _quaternion$2 = /* @__PURE__ */ new Quaternion();\nconst _xAxis = /* @__PURE__ */ new Vector3(1, 0, 0);\nconst _yAxis = /* @__PURE__ */ new Vector3(0, 1, 0);\nconst _zAxis = /* @__PURE__ */ new Vector3(0, 0, 1);\nconst _addedEvent = { type: \"added\" };\nconst _removedEvent = { type: \"removed\" };\nclass Object3D$1 extends EventDispatcher {\n  constructor() {\n    super();\n    this.isObject3D = true;\n    Object.defineProperty(this, \"id\", { value: _object3DId++ });\n    this.uuid = generateUUID();\n    this.name = \"\";\n    this.type = \"Object3D\";\n    this.parent = null;\n    this.children = [];\n    this.up = Object3D$1.DefaultUp.clone();\n    const position = new Vector3();\n    const rotation = new Euler();\n    const quaternion = new Quaternion();\n    const scale = new Vector3(1, 1, 1);\n    function onRotationChange() {\n      quaternion.setFromEuler(rotation, false);\n    }\n    function onQuaternionChange() {\n      rotation.setFromQuaternion(quaternion, void 0, false);\n    }\n    rotation._onChange(onRotationChange);\n    quaternion._onChange(onQuaternionChange);\n    Object.defineProperties(this, {\n      position: {\n        configurable: true,\n        enumerable: true,\n        value: position\n      },\n      rotation: {\n        configurable: true,\n        enumerable: true,\n        value: rotation\n      },\n      quaternion: {\n        configurable: true,\n        enumerable: true,\n        value: quaternion\n      },\n      scale: {\n        configurable: true,\n        enumerable: true,\n        value: scale\n      },\n      modelViewMatrix: {\n        value: new Matrix4()\n      },\n      normalMatrix: {\n        value: new Matrix3()\n      }\n    });\n    this.matrix = new Matrix4();\n    this.matrixWorld = new Matrix4();\n    this.matrixAutoUpdate = Object3D$1.DefaultMatrixAutoUpdate;\n    this.matrixWorldNeedsUpdate = false;\n    this.layers = new Layers();\n    this.visible = true;\n    this.castShadow = false;\n    this.receiveShadow = false;\n    this.frustumCulled = true;\n    this.renderOrder = 0;\n    this.animations = [];\n    this.userData = {};\n  }\n  onBeforeRender() {\n  }\n  onAfterRender() {\n  }\n  applyMatrix4(matrix) {\n    if (this.matrixAutoUpdate)\n      this.updateMatrix();\n    this.matrix.premultiply(matrix);\n    this.matrix.decompose(this.position, this.quaternion, this.scale);\n  }\n  applyQuaternion(q) {\n    this.quaternion.premultiply(q);\n    return this;\n  }\n  setRotationFromAxisAngle(axis, angle) {\n    this.quaternion.setFromAxisAngle(axis, angle);\n  }\n  setRotationFromEuler(euler) {\n    this.quaternion.setFromEuler(euler, true);\n  }\n  setRotationFromMatrix(m) {\n    this.quaternion.setFromRotationMatrix(m);\n  }\n  setRotationFromQuaternion(q) {\n    this.quaternion.copy(q);\n  }\n  rotateOnAxis(axis, angle) {\n    _q1.setFromAxisAngle(axis, angle);\n    this.quaternion.multiply(_q1);\n    return this;\n  }\n  rotateOnWorldAxis(axis, angle) {\n    _q1.setFromAxisAngle(axis, angle);\n    this.quaternion.premultiply(_q1);\n    return this;\n  }\n  rotateX(angle) {\n    return this.rotateOnAxis(_xAxis, angle);\n  }\n  rotateY(angle) {\n    return this.rotateOnAxis(_yAxis, angle);\n  }\n  rotateZ(angle) {\n    return this.rotateOnAxis(_zAxis, angle);\n  }\n  translateOnAxis(axis, distance) {\n    _v1$4.copy(axis).applyQuaternion(this.quaternion);\n    this.position.add(_v1$4.multiplyScalar(distance));\n    return this;\n  }\n  translateX(distance) {\n    return this.translateOnAxis(_xAxis, distance);\n  }\n  translateY(distance) {\n    return this.translateOnAxis(_yAxis, distance);\n  }\n  translateZ(distance) {\n    return this.translateOnAxis(_zAxis, distance);\n  }\n  localToWorld(vector) {\n    return vector.applyMatrix4(this.matrixWorld);\n  }\n  worldToLocal(vector) {\n    return vector.applyMatrix4(_m1$1.copy(this.matrixWorld).invert());\n  }\n  lookAt(x, y, z) {\n    if (x.isVector3) {\n      _target.copy(x);\n    } else {\n      _target.set(x, y, z);\n    }\n    const parent = this.parent;\n    this.updateWorldMatrix(true, false);\n    _position$3.setFromMatrixPosition(this.matrixWorld);\n    if (this.isCamera || this.isLight) {\n      _m1$1.lookAt(_position$3, _target, this.up);\n    } else {\n      _m1$1.lookAt(_target, _position$3, this.up);\n    }\n    this.quaternion.setFromRotationMatrix(_m1$1);\n    if (parent) {\n      _m1$1.extractRotation(parent.matrixWorld);\n      _q1.setFromRotationMatrix(_m1$1);\n      this.quaternion.premultiply(_q1.invert());\n    }\n  }\n  add(object) {\n    if (arguments.length > 1) {\n      for (let i = 0; i < arguments.length; i++) {\n        this.add(arguments[i]);\n      }\n      return this;\n    }\n    if (object === this) {\n      console.error(\"THREE.Object3D.add: object can't be added as a child of itself.\", object);\n      return this;\n    }\n    if (object && object.isObject3D) {\n      if (object.parent !== null) {\n        object.parent.remove(object);\n      }\n      object.parent = this;\n      this.children.push(object);\n      object.dispatchEvent(_addedEvent);\n    } else {\n      console.error(\"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object);\n    }\n    return this;\n  }\n  remove(object) {\n    if (arguments.length > 1) {\n      for (let i = 0; i < arguments.length; i++) {\n        this.remove(arguments[i]);\n      }\n      return this;\n    }\n    const index = this.children.indexOf(object);\n    if (index !== -1) {\n      object.parent = null;\n      this.children.splice(index, 1);\n      object.dispatchEvent(_removedEvent);\n    }\n    return this;\n  }\n  removeFromParent() {\n    const parent = this.parent;\n    if (parent !== null) {\n      parent.remove(this);\n    }\n    return this;\n  }\n  clear() {\n    for (let i = 0; i < this.children.length; i++) {\n      const object = this.children[i];\n      object.parent = null;\n      object.dispatchEvent(_removedEvent);\n    }\n    this.children.length = 0;\n    return this;\n  }\n  attach(object) {\n    this.updateWorldMatrix(true, false);\n    _m1$1.copy(this.matrixWorld).invert();\n    if (object.parent !== null) {\n      object.parent.updateWorldMatrix(true, false);\n      _m1$1.multiply(object.parent.matrixWorld);\n    }\n    object.applyMatrix4(_m1$1);\n    this.add(object);\n    object.updateWorldMatrix(false, true);\n    return this;\n  }\n  getObjectById(id2) {\n    return this.getObjectByProperty(\"id\", id2);\n  }\n  getObjectByName(name) {\n    return this.getObjectByProperty(\"name\", name);\n  }\n  getObjectByProperty(name, value) {\n    if (this[name] === value)\n      return this;\n    for (let i = 0, l = this.children.length; i < l; i++) {\n      const child = this.children[i];\n      const object = child.getObjectByProperty(name, value);\n      if (object !== void 0) {\n        return object;\n      }\n    }\n    return void 0;\n  }\n  getWorldPosition(target) {\n    this.updateWorldMatrix(true, false);\n    return target.setFromMatrixPosition(this.matrixWorld);\n  }\n  getWorldQuaternion(target) {\n    this.updateWorldMatrix(true, false);\n    this.matrixWorld.decompose(_position$3, target, _scale$2);\n    return target;\n  }\n  getWorldScale(target) {\n    this.updateWorldMatrix(true, false);\n    this.matrixWorld.decompose(_position$3, _quaternion$2, target);\n    return target;\n  }\n  getWorldDirection(target) {\n    this.updateWorldMatrix(true, false);\n    const e = this.matrixWorld.elements;\n    return target.set(e[8], e[9], e[10]).normalize();\n  }\n  raycast() {\n  }\n  traverse(callback) {\n    callback(this);\n    const children = this.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      children[i].traverse(callback);\n    }\n  }\n  traverseVisible(callback) {\n    if (this.visible === false)\n      return;\n    callback(this);\n    const children = this.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      children[i].traverseVisible(callback);\n    }\n  }\n  traverseAncestors(callback) {\n    const parent = this.parent;\n    if (parent !== null) {\n      callback(parent);\n      parent.traverseAncestors(callback);\n    }\n  }\n  updateMatrix() {\n    this.matrix.compose(this.position, this.quaternion, this.scale);\n    this.matrixWorldNeedsUpdate = true;\n  }\n  updateMatrixWorld(force) {\n    if (this.matrixAutoUpdate)\n      this.updateMatrix();\n    if (this.matrixWorldNeedsUpdate || force) {\n      if (this.parent === null) {\n        this.matrixWorld.copy(this.matrix);\n      } else {\n        this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n      }\n      this.matrixWorldNeedsUpdate = false;\n      force = true;\n    }\n    const children = this.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      children[i].updateMatrixWorld(force);\n    }\n  }\n  updateWorldMatrix(updateParents, updateChildren) {\n    const parent = this.parent;\n    if (updateParents === true && parent !== null) {\n      parent.updateWorldMatrix(true, false);\n    }\n    if (this.matrixAutoUpdate)\n      this.updateMatrix();\n    if (this.parent === null) {\n      this.matrixWorld.copy(this.matrix);\n    } else {\n      this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n    }\n    if (updateChildren === true) {\n      const children = this.children;\n      for (let i = 0, l = children.length; i < l; i++) {\n        children[i].updateWorldMatrix(false, true);\n      }\n    }\n  }\n  toJSON(meta) {\n    const isRootObject = meta === void 0 || typeof meta === \"string\";\n    const output = {};\n    if (isRootObject) {\n      meta = {\n        geometries: {},\n        materials: {},\n        textures: {},\n        images: {},\n        shapes: {},\n        skeletons: {},\n        animations: {},\n        nodes: {}\n      };\n      output.metadata = {\n        version: 4.5,\n        type: \"Object\",\n        generator: \"Object3D.toJSON\"\n      };\n    }\n    const object = {};\n    object.uuid = this.uuid;\n    object.type = this.type;\n    if (this.name !== \"\")\n      object.name = this.name;\n    if (this.castShadow === true)\n      object.castShadow = true;\n    if (this.receiveShadow === true)\n      object.receiveShadow = true;\n    if (this.visible === false)\n      object.visible = false;\n    if (this.frustumCulled === false)\n      object.frustumCulled = false;\n    if (this.renderOrder !== 0)\n      object.renderOrder = this.renderOrder;\n    if (JSON.stringify(this.userData) !== \"{}\")\n      object.userData = this.userData;\n    object.layers = this.layers.mask;\n    object.matrix = this.matrix.toArray();\n    if (this.matrixAutoUpdate === false)\n      object.matrixAutoUpdate = false;\n    if (this.isInstancedMesh) {\n      object.type = \"InstancedMesh\";\n      object.count = this.count;\n      object.instanceMatrix = this.instanceMatrix.toJSON();\n      if (this.instanceColor !== null)\n        object.instanceColor = this.instanceColor.toJSON();\n    }\n    function serialize(library, element) {\n      if (library[element.uuid] === void 0) {\n        library[element.uuid] = element.toJSON(meta);\n      }\n      return element.uuid;\n    }\n    if (this.isScene) {\n      if (this.background) {\n        if (this.background.isColor) {\n          object.background = this.background.toJSON();\n        } else if (this.background.isTexture) {\n          object.background = this.background.toJSON(meta).uuid;\n        }\n      }\n      if (this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true) {\n        object.environment = this.environment.toJSON(meta).uuid;\n      }\n    } else if (this.isMesh || this.isLine || this.isPoints) {\n      object.geometry = serialize(meta.geometries, this.geometry);\n      const parameters = this.geometry.parameters;\n      if (parameters !== void 0 && parameters.shapes !== void 0) {\n        const shapes = parameters.shapes;\n        if (Array.isArray(shapes)) {\n          for (let i = 0, l = shapes.length; i < l; i++) {\n            const shape = shapes[i];\n            serialize(meta.shapes, shape);\n          }\n        } else {\n          serialize(meta.shapes, shapes);\n        }\n      }\n    }\n    if (this.isSkinnedMesh) {\n      object.bindMode = this.bindMode;\n      object.bindMatrix = this.bindMatrix.toArray();\n      if (this.skeleton !== void 0) {\n        serialize(meta.skeletons, this.skeleton);\n        object.skeleton = this.skeleton.uuid;\n      }\n    }\n    if (this.material !== void 0) {\n      if (Array.isArray(this.material)) {\n        const uuids = [];\n        for (let i = 0, l = this.material.length; i < l; i++) {\n          uuids.push(serialize(meta.materials, this.material[i]));\n        }\n        object.material = uuids;\n      } else {\n        object.material = serialize(meta.materials, this.material);\n      }\n    }\n    if (this.children.length > 0) {\n      object.children = [];\n      for (let i = 0; i < this.children.length; i++) {\n        object.children.push(this.children[i].toJSON(meta).object);\n      }\n    }\n    if (this.animations.length > 0) {\n      object.animations = [];\n      for (let i = 0; i < this.animations.length; i++) {\n        const animation = this.animations[i];\n        object.animations.push(serialize(meta.animations, animation));\n      }\n    }\n    if (isRootObject) {\n      const geometries = extractFromCache(meta.geometries);\n      const materials = extractFromCache(meta.materials);\n      const textures = extractFromCache(meta.textures);\n      const images = extractFromCache(meta.images);\n      const shapes = extractFromCache(meta.shapes);\n      const skeletons = extractFromCache(meta.skeletons);\n      const animations = extractFromCache(meta.animations);\n      const nodes = extractFromCache(meta.nodes);\n      if (geometries.length > 0)\n        output.geometries = geometries;\n      if (materials.length > 0)\n        output.materials = materials;\n      if (textures.length > 0)\n        output.textures = textures;\n      if (images.length > 0)\n        output.images = images;\n      if (shapes.length > 0)\n        output.shapes = shapes;\n      if (skeletons.length > 0)\n        output.skeletons = skeletons;\n      if (animations.length > 0)\n        output.animations = animations;\n      if (nodes.length > 0)\n        output.nodes = nodes;\n    }\n    output.object = object;\n    return output;\n    function extractFromCache(cache) {\n      const values = [];\n      for (const key in cache) {\n        const data = cache[key];\n        delete data.metadata;\n        values.push(data);\n      }\n      return values;\n    }\n  }\n  clone(recursive) {\n    return new this.constructor().copy(this, recursive);\n  }\n  copy(source, recursive = true) {\n    this.name = source.name;\n    this.up.copy(source.up);\n    this.position.copy(source.position);\n    this.rotation.order = source.rotation.order;\n    this.quaternion.copy(source.quaternion);\n    this.scale.copy(source.scale);\n    this.matrix.copy(source.matrix);\n    this.matrixWorld.copy(source.matrixWorld);\n    this.matrixAutoUpdate = source.matrixAutoUpdate;\n    this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n    this.layers.mask = source.layers.mask;\n    this.visible = source.visible;\n    this.castShadow = source.castShadow;\n    this.receiveShadow = source.receiveShadow;\n    this.frustumCulled = source.frustumCulled;\n    this.renderOrder = source.renderOrder;\n    this.userData = JSON.parse(JSON.stringify(source.userData));\n    if (recursive === true) {\n      for (let i = 0; i < source.children.length; i++) {\n        const child = source.children[i];\n        this.add(child.clone());\n      }\n    }\n    return this;\n  }\n}\nObject3D$1.DefaultUp = /* @__PURE__ */ new Vector3(0, 1, 0);\nObject3D$1.DefaultMatrixAutoUpdate = true;\nconst _v0$1 = /* @__PURE__ */ new Vector3();\nconst _v1$3 = /* @__PURE__ */ new Vector3();\nconst _v2$2 = /* @__PURE__ */ new Vector3();\nconst _v3$1 = /* @__PURE__ */ new Vector3();\nconst _vab = /* @__PURE__ */ new Vector3();\nconst _vac = /* @__PURE__ */ new Vector3();\nconst _vbc = /* @__PURE__ */ new Vector3();\nconst _vap = /* @__PURE__ */ new Vector3();\nconst _vbp = /* @__PURE__ */ new Vector3();\nconst _vcp = /* @__PURE__ */ new Vector3();\nclass Triangle {\n  constructor(a = new Vector3(), b = new Vector3(), c = new Vector3()) {\n    this.a = a;\n    this.b = b;\n    this.c = c;\n  }\n  static getNormal(a, b, c, target) {\n    target.subVectors(c, b);\n    _v0$1.subVectors(a, b);\n    target.cross(_v0$1);\n    const targetLengthSq = target.lengthSq();\n    if (targetLengthSq > 0) {\n      return target.multiplyScalar(1 / Math.sqrt(targetLengthSq));\n    }\n    return target.set(0, 0, 0);\n  }\n  static getBarycoord(point, a, b, c, target) {\n    _v0$1.subVectors(c, a);\n    _v1$3.subVectors(b, a);\n    _v2$2.subVectors(point, a);\n    const dot00 = _v0$1.dot(_v0$1);\n    const dot01 = _v0$1.dot(_v1$3);\n    const dot02 = _v0$1.dot(_v2$2);\n    const dot11 = _v1$3.dot(_v1$3);\n    const dot12 = _v1$3.dot(_v2$2);\n    const denom = dot00 * dot11 - dot01 * dot01;\n    if (denom === 0) {\n      return target.set(-2, -1, -1);\n    }\n    const invDenom = 1 / denom;\n    const u = (dot11 * dot02 - dot01 * dot12) * invDenom;\n    const v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n    return target.set(1 - u - v, v, u);\n  }\n  static containsPoint(point, a, b, c) {\n    this.getBarycoord(point, a, b, c, _v3$1);\n    return _v3$1.x >= 0 && _v3$1.y >= 0 && _v3$1.x + _v3$1.y <= 1;\n  }\n  static getUV(point, p1, p2, p3, uv1, uv2, uv3, target) {\n    this.getBarycoord(point, p1, p2, p3, _v3$1);\n    target.set(0, 0);\n    target.addScaledVector(uv1, _v3$1.x);\n    target.addScaledVector(uv2, _v3$1.y);\n    target.addScaledVector(uv3, _v3$1.z);\n    return target;\n  }\n  static isFrontFacing(a, b, c, direction) {\n    _v0$1.subVectors(c, b);\n    _v1$3.subVectors(a, b);\n    return _v0$1.cross(_v1$3).dot(direction) < 0 ? true : false;\n  }\n  set(a, b, c) {\n    this.a.copy(a);\n    this.b.copy(b);\n    this.c.copy(c);\n    return this;\n  }\n  setFromPointsAndIndices(points, i0, i1, i2) {\n    this.a.copy(points[i0]);\n    this.b.copy(points[i1]);\n    this.c.copy(points[i2]);\n    return this;\n  }\n  setFromAttributeAndIndices(attribute, i0, i1, i2) {\n    this.a.fromBufferAttribute(attribute, i0);\n    this.b.fromBufferAttribute(attribute, i1);\n    this.c.fromBufferAttribute(attribute, i2);\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(triangle) {\n    this.a.copy(triangle.a);\n    this.b.copy(triangle.b);\n    this.c.copy(triangle.c);\n    return this;\n  }\n  getArea() {\n    _v0$1.subVectors(this.c, this.b);\n    _v1$3.subVectors(this.a, this.b);\n    return _v0$1.cross(_v1$3).length() * 0.5;\n  }\n  getMidpoint(target) {\n    return target.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3);\n  }\n  getNormal(target) {\n    return Triangle.getNormal(this.a, this.b, this.c, target);\n  }\n  getPlane(target) {\n    return target.setFromCoplanarPoints(this.a, this.b, this.c);\n  }\n  getBarycoord(point, target) {\n    return Triangle.getBarycoord(point, this.a, this.b, this.c, target);\n  }\n  getUV(point, uv1, uv2, uv3, target) {\n    return Triangle.getUV(point, this.a, this.b, this.c, uv1, uv2, uv3, target);\n  }\n  containsPoint(point) {\n    return Triangle.containsPoint(point, this.a, this.b, this.c);\n  }\n  isFrontFacing(direction) {\n    return Triangle.isFrontFacing(this.a, this.b, this.c, direction);\n  }\n  intersectsBox(box) {\n    return box.intersectsTriangle(this);\n  }\n  closestPointToPoint(p, target) {\n    const a = this.a, b = this.b, c = this.c;\n    let v, w;\n    _vab.subVectors(b, a);\n    _vac.subVectors(c, a);\n    _vap.subVectors(p, a);\n    const d1 = _vab.dot(_vap);\n    const d2 = _vac.dot(_vap);\n    if (d1 <= 0 && d2 <= 0) {\n      return target.copy(a);\n    }\n    _vbp.subVectors(p, b);\n    const d3 = _vab.dot(_vbp);\n    const d4 = _vac.dot(_vbp);\n    if (d3 >= 0 && d4 <= d3) {\n      return target.copy(b);\n    }\n    const vc = d1 * d4 - d3 * d2;\n    if (vc <= 0 && d1 >= 0 && d3 <= 0) {\n      v = d1 / (d1 - d3);\n      return target.copy(a).addScaledVector(_vab, v);\n    }\n    _vcp.subVectors(p, c);\n    const d5 = _vab.dot(_vcp);\n    const d6 = _vac.dot(_vcp);\n    if (d6 >= 0 && d5 <= d6) {\n      return target.copy(c);\n    }\n    const vb = d5 * d2 - d1 * d6;\n    if (vb <= 0 && d2 >= 0 && d6 <= 0) {\n      w = d2 / (d2 - d6);\n      return target.copy(a).addScaledVector(_vac, w);\n    }\n    const va = d3 * d6 - d5 * d4;\n    if (va <= 0 && d4 - d3 >= 0 && d5 - d6 >= 0) {\n      _vbc.subVectors(c, b);\n      w = (d4 - d3) / (d4 - d3 + (d5 - d6));\n      return target.copy(b).addScaledVector(_vbc, w);\n    }\n    const denom = 1 / (va + vb + vc);\n    v = vb * denom;\n    w = vc * denom;\n    return target.copy(a).addScaledVector(_vab, v).addScaledVector(_vac, w);\n  }\n  equals(triangle) {\n    return triangle.a.equals(this.a) && triangle.b.equals(this.b) && triangle.c.equals(this.c);\n  }\n}\nlet materialId = 0;\nclass Material$1 extends EventDispatcher {\n  constructor() {\n    super();\n    this.isMaterial = true;\n    Object.defineProperty(this, \"id\", { value: materialId++ });\n    this.uuid = generateUUID();\n    this.name = \"\";\n    this.type = \"Material\";\n    this.blending = NormalBlending;\n    this.side = FrontSide;\n    this.vertexColors = false;\n    this.opacity = 1;\n    this.transparent = false;\n    this.blendSrc = SrcAlphaFactor;\n    this.blendDst = OneMinusSrcAlphaFactor;\n    this.blendEquation = AddEquation;\n    this.blendSrcAlpha = null;\n    this.blendDstAlpha = null;\n    this.blendEquationAlpha = null;\n    this.depthFunc = LessEqualDepth;\n    this.depthTest = true;\n    this.depthWrite = true;\n    this.stencilWriteMask = 255;\n    this.stencilFunc = AlwaysStencilFunc;\n    this.stencilRef = 0;\n    this.stencilFuncMask = 255;\n    this.stencilFail = KeepStencilOp;\n    this.stencilZFail = KeepStencilOp;\n    this.stencilZPass = KeepStencilOp;\n    this.stencilWrite = false;\n    this.clippingPlanes = null;\n    this.clipIntersection = false;\n    this.clipShadows = false;\n    this.shadowSide = null;\n    this.colorWrite = true;\n    this.precision = null;\n    this.polygonOffset = false;\n    this.polygonOffsetFactor = 0;\n    this.polygonOffsetUnits = 0;\n    this.dithering = false;\n    this.alphaToCoverage = false;\n    this.premultipliedAlpha = false;\n    this.visible = true;\n    this.toneMapped = true;\n    this.userData = {};\n    this.version = 0;\n    this._alphaTest = 0;\n  }\n  get alphaTest() {\n    return this._alphaTest;\n  }\n  set alphaTest(value) {\n    if (this._alphaTest > 0 !== value > 0) {\n      this.version++;\n    }\n    this._alphaTest = value;\n  }\n  onBuild() {\n  }\n  onBeforeRender() {\n  }\n  onBeforeCompile() {\n  }\n  customProgramCacheKey() {\n    return this.onBeforeCompile.toString();\n  }\n  setValues(values) {\n    if (values === void 0)\n      return;\n    for (const key in values) {\n      const newValue = values[key];\n      if (newValue === void 0) {\n        console.warn(\"THREE.Material: '\" + key + \"' parameter is undefined.\");\n        continue;\n      }\n      if (key === \"shading\") {\n        console.warn(\"THREE.\" + this.type + \": .shading has been removed. Use the boolean .flatShading instead.\");\n        this.flatShading = newValue === FlatShading ? true : false;\n        continue;\n      }\n      const currentValue = this[key];\n      if (currentValue === void 0) {\n        console.warn(\"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\");\n        continue;\n      }\n      if (currentValue && currentValue.isColor) {\n        currentValue.set(newValue);\n      } else if (currentValue && currentValue.isVector3 && (newValue && newValue.isVector3)) {\n        currentValue.copy(newValue);\n      } else {\n        this[key] = newValue;\n      }\n    }\n  }\n  toJSON(meta) {\n    const isRootObject = meta === void 0 || typeof meta === \"string\";\n    if (isRootObject) {\n      meta = {\n        textures: {},\n        images: {}\n      };\n    }\n    const data = {\n      metadata: {\n        version: 4.5,\n        type: \"Material\",\n        generator: \"Material.toJSON\"\n      }\n    };\n    data.uuid = this.uuid;\n    data.type = this.type;\n    if (this.name !== \"\")\n      data.name = this.name;\n    if (this.color && this.color.isColor)\n      data.color = this.color.getHex();\n    if (this.roughness !== void 0)\n      data.roughness = this.roughness;\n    if (this.metalness !== void 0)\n      data.metalness = this.metalness;\n    if (this.sheen !== void 0)\n      data.sheen = this.sheen;\n    if (this.sheenColor && this.sheenColor.isColor)\n      data.sheenColor = this.sheenColor.getHex();\n    if (this.sheenRoughness !== void 0)\n      data.sheenRoughness = this.sheenRoughness;\n    if (this.emissive && this.emissive.isColor)\n      data.emissive = this.emissive.getHex();\n    if (this.emissiveIntensity && this.emissiveIntensity !== 1)\n      data.emissiveIntensity = this.emissiveIntensity;\n    if (this.specular && this.specular.isColor)\n      data.specular = this.specular.getHex();\n    if (this.specularIntensity !== void 0)\n      data.specularIntensity = this.specularIntensity;\n    if (this.specularColor && this.specularColor.isColor)\n      data.specularColor = this.specularColor.getHex();\n    if (this.shininess !== void 0)\n      data.shininess = this.shininess;\n    if (this.clearcoat !== void 0)\n      data.clearcoat = this.clearcoat;\n    if (this.clearcoatRoughness !== void 0)\n      data.clearcoatRoughness = this.clearcoatRoughness;\n    if (this.clearcoatMap && this.clearcoatMap.isTexture) {\n      data.clearcoatMap = this.clearcoatMap.toJSON(meta).uuid;\n    }\n    if (this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture) {\n      data.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(meta).uuid;\n    }\n    if (this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture) {\n      data.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(meta).uuid;\n      data.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n    }\n    if (this.iridescence !== void 0)\n      data.iridescence = this.iridescence;\n    if (this.iridescenceIOR !== void 0)\n      data.iridescenceIOR = this.iridescenceIOR;\n    if (this.iridescenceThicknessRange !== void 0)\n      data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n    if (this.iridescenceMap && this.iridescenceMap.isTexture) {\n      data.iridescenceMap = this.iridescenceMap.toJSON(meta).uuid;\n    }\n    if (this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture) {\n      data.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON(meta).uuid;\n    }\n    if (this.map && this.map.isTexture)\n      data.map = this.map.toJSON(meta).uuid;\n    if (this.matcap && this.matcap.isTexture)\n      data.matcap = this.matcap.toJSON(meta).uuid;\n    if (this.alphaMap && this.alphaMap.isTexture)\n      data.alphaMap = this.alphaMap.toJSON(meta).uuid;\n    if (this.lightMap && this.lightMap.isTexture) {\n      data.lightMap = this.lightMap.toJSON(meta).uuid;\n      data.lightMapIntensity = this.lightMapIntensity;\n    }\n    if (this.aoMap && this.aoMap.isTexture) {\n      data.aoMap = this.aoMap.toJSON(meta).uuid;\n      data.aoMapIntensity = this.aoMapIntensity;\n    }\n    if (this.bumpMap && this.bumpMap.isTexture) {\n      data.bumpMap = this.bumpMap.toJSON(meta).uuid;\n      data.bumpScale = this.bumpScale;\n    }\n    if (this.normalMap && this.normalMap.isTexture) {\n      data.normalMap = this.normalMap.toJSON(meta).uuid;\n      data.normalMapType = this.normalMapType;\n      data.normalScale = this.normalScale.toArray();\n    }\n    if (this.displacementMap && this.displacementMap.isTexture) {\n      data.displacementMap = this.displacementMap.toJSON(meta).uuid;\n      data.displacementScale = this.displacementScale;\n      data.displacementBias = this.displacementBias;\n    }\n    if (this.roughnessMap && this.roughnessMap.isTexture)\n      data.roughnessMap = this.roughnessMap.toJSON(meta).uuid;\n    if (this.metalnessMap && this.metalnessMap.isTexture)\n      data.metalnessMap = this.metalnessMap.toJSON(meta).uuid;\n    if (this.emissiveMap && this.emissiveMap.isTexture)\n      data.emissiveMap = this.emissiveMap.toJSON(meta).uuid;\n    if (this.specularMap && this.specularMap.isTexture)\n      data.specularMap = this.specularMap.toJSON(meta).uuid;\n    if (this.specularIntensityMap && this.specularIntensityMap.isTexture)\n      data.specularIntensityMap = this.specularIntensityMap.toJSON(meta).uuid;\n    if (this.specularColorMap && this.specularColorMap.isTexture)\n      data.specularColorMap = this.specularColorMap.toJSON(meta).uuid;\n    if (this.envMap && this.envMap.isTexture) {\n      data.envMap = this.envMap.toJSON(meta).uuid;\n      if (this.combine !== void 0)\n        data.combine = this.combine;\n    }\n    if (this.envMapIntensity !== void 0)\n      data.envMapIntensity = this.envMapIntensity;\n    if (this.reflectivity !== void 0)\n      data.reflectivity = this.reflectivity;\n    if (this.refractionRatio !== void 0)\n      data.refractionRatio = this.refractionRatio;\n    if (this.gradientMap && this.gradientMap.isTexture) {\n      data.gradientMap = this.gradientMap.toJSON(meta).uuid;\n    }\n    if (this.transmission !== void 0)\n      data.transmission = this.transmission;\n    if (this.transmissionMap && this.transmissionMap.isTexture)\n      data.transmissionMap = this.transmissionMap.toJSON(meta).uuid;\n    if (this.thickness !== void 0)\n      data.thickness = this.thickness;\n    if (this.thicknessMap && this.thicknessMap.isTexture)\n      data.thicknessMap = this.thicknessMap.toJSON(meta).uuid;\n    if (this.attenuationDistance !== void 0)\n      data.attenuationDistance = this.attenuationDistance;\n    if (this.attenuationColor !== void 0)\n      data.attenuationColor = this.attenuationColor.getHex();\n    if (this.size !== void 0)\n      data.size = this.size;\n    if (this.shadowSide !== null)\n      data.shadowSide = this.shadowSide;\n    if (this.sizeAttenuation !== void 0)\n      data.sizeAttenuation = this.sizeAttenuation;\n    if (this.blending !== NormalBlending)\n      data.blending = this.blending;\n    if (this.side !== FrontSide)\n      data.side = this.side;\n    if (this.vertexColors)\n      data.vertexColors = true;\n    if (this.opacity < 1)\n      data.opacity = this.opacity;\n    if (this.transparent === true)\n      data.transparent = this.transparent;\n    data.depthFunc = this.depthFunc;\n    data.depthTest = this.depthTest;\n    data.depthWrite = this.depthWrite;\n    data.colorWrite = this.colorWrite;\n    data.stencilWrite = this.stencilWrite;\n    data.stencilWriteMask = this.stencilWriteMask;\n    data.stencilFunc = this.stencilFunc;\n    data.stencilRef = this.stencilRef;\n    data.stencilFuncMask = this.stencilFuncMask;\n    data.stencilFail = this.stencilFail;\n    data.stencilZFail = this.stencilZFail;\n    data.stencilZPass = this.stencilZPass;\n    if (this.rotation !== void 0 && this.rotation !== 0)\n      data.rotation = this.rotation;\n    if (this.polygonOffset === true)\n      data.polygonOffset = true;\n    if (this.polygonOffsetFactor !== 0)\n      data.polygonOffsetFactor = this.polygonOffsetFactor;\n    if (this.polygonOffsetUnits !== 0)\n      data.polygonOffsetUnits = this.polygonOffsetUnits;\n    if (this.linewidth !== void 0 && this.linewidth !== 1)\n      data.linewidth = this.linewidth;\n    if (this.dashSize !== void 0)\n      data.dashSize = this.dashSize;\n    if (this.gapSize !== void 0)\n      data.gapSize = this.gapSize;\n    if (this.scale !== void 0)\n      data.scale = this.scale;\n    if (this.dithering === true)\n      data.dithering = true;\n    if (this.alphaTest > 0)\n      data.alphaTest = this.alphaTest;\n    if (this.alphaToCoverage === true)\n      data.alphaToCoverage = this.alphaToCoverage;\n    if (this.premultipliedAlpha === true)\n      data.premultipliedAlpha = this.premultipliedAlpha;\n    if (this.wireframe === true)\n      data.wireframe = this.wireframe;\n    if (this.wireframeLinewidth > 1)\n      data.wireframeLinewidth = this.wireframeLinewidth;\n    if (this.wireframeLinecap !== \"round\")\n      data.wireframeLinecap = this.wireframeLinecap;\n    if (this.wireframeLinejoin !== \"round\")\n      data.wireframeLinejoin = this.wireframeLinejoin;\n    if (this.flatShading === true)\n      data.flatShading = this.flatShading;\n    if (this.visible === false)\n      data.visible = false;\n    if (this.toneMapped === false)\n      data.toneMapped = false;\n    if (this.fog === false)\n      data.fog = false;\n    if (JSON.stringify(this.userData) !== \"{}\")\n      data.userData = this.userData;\n    function extractFromCache(cache) {\n      const values = [];\n      for (const key in cache) {\n        const data2 = cache[key];\n        delete data2.metadata;\n        values.push(data2);\n      }\n      return values;\n    }\n    if (isRootObject) {\n      const textures = extractFromCache(meta.textures);\n      const images = extractFromCache(meta.images);\n      if (textures.length > 0)\n        data.textures = textures;\n      if (images.length > 0)\n        data.images = images;\n    }\n    return data;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.name = source.name;\n    this.blending = source.blending;\n    this.side = source.side;\n    this.vertexColors = source.vertexColors;\n    this.opacity = source.opacity;\n    this.transparent = source.transparent;\n    this.blendSrc = source.blendSrc;\n    this.blendDst = source.blendDst;\n    this.blendEquation = source.blendEquation;\n    this.blendSrcAlpha = source.blendSrcAlpha;\n    this.blendDstAlpha = source.blendDstAlpha;\n    this.blendEquationAlpha = source.blendEquationAlpha;\n    this.depthFunc = source.depthFunc;\n    this.depthTest = source.depthTest;\n    this.depthWrite = source.depthWrite;\n    this.stencilWriteMask = source.stencilWriteMask;\n    this.stencilFunc = source.stencilFunc;\n    this.stencilRef = source.stencilRef;\n    this.stencilFuncMask = source.stencilFuncMask;\n    this.stencilFail = source.stencilFail;\n    this.stencilZFail = source.stencilZFail;\n    this.stencilZPass = source.stencilZPass;\n    this.stencilWrite = source.stencilWrite;\n    const srcPlanes = source.clippingPlanes;\n    let dstPlanes = null;\n    if (srcPlanes !== null) {\n      const n = srcPlanes.length;\n      dstPlanes = new Array(n);\n      for (let i = 0; i !== n; ++i) {\n        dstPlanes[i] = srcPlanes[i].clone();\n      }\n    }\n    this.clippingPlanes = dstPlanes;\n    this.clipIntersection = source.clipIntersection;\n    this.clipShadows = source.clipShadows;\n    this.shadowSide = source.shadowSide;\n    this.colorWrite = source.colorWrite;\n    this.precision = source.precision;\n    this.polygonOffset = source.polygonOffset;\n    this.polygonOffsetFactor = source.polygonOffsetFactor;\n    this.polygonOffsetUnits = source.polygonOffsetUnits;\n    this.dithering = source.dithering;\n    this.alphaTest = source.alphaTest;\n    this.alphaToCoverage = source.alphaToCoverage;\n    this.premultipliedAlpha = source.premultipliedAlpha;\n    this.visible = source.visible;\n    this.toneMapped = source.toneMapped;\n    this.userData = JSON.parse(JSON.stringify(source.userData));\n    return this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n  set needsUpdate(value) {\n    if (value === true)\n      this.version++;\n  }\n}\nclass MeshBasicMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isMeshBasicMaterial = true;\n    this.type = \"MeshBasicMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.lightMap = null;\n    this.lightMapIntensity = 1;\n    this.aoMap = null;\n    this.aoMapIntensity = 1;\n    this.specularMap = null;\n    this.alphaMap = null;\n    this.envMap = null;\n    this.combine = MultiplyOperation;\n    this.reflectivity = 1;\n    this.refractionRatio = 0.98;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.wireframeLinecap = \"round\";\n    this.wireframeLinejoin = \"round\";\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.lightMap = source.lightMap;\n    this.lightMapIntensity = source.lightMapIntensity;\n    this.aoMap = source.aoMap;\n    this.aoMapIntensity = source.aoMapIntensity;\n    this.specularMap = source.specularMap;\n    this.alphaMap = source.alphaMap;\n    this.envMap = source.envMap;\n    this.combine = source.combine;\n    this.reflectivity = source.reflectivity;\n    this.refractionRatio = source.refractionRatio;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.wireframeLinecap = source.wireframeLinecap;\n    this.wireframeLinejoin = source.wireframeLinejoin;\n    this.fog = source.fog;\n    return this;\n  }\n}\nconst _vector$9 = /* @__PURE__ */ new Vector3();\nconst _vector2$1 = /* @__PURE__ */ new Vector2();\nclass BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    if (Array.isArray(array)) {\n      throw new TypeError(\"THREE.BufferAttribute: array should be a Typed Array.\");\n    }\n    this.isBufferAttribute = true;\n    this.name = \"\";\n    this.array = array;\n    this.itemSize = itemSize;\n    this.count = array !== void 0 ? array.length / itemSize : 0;\n    this.normalized = normalized === true;\n    this.usage = StaticDrawUsage;\n    this.updateRange = { offset: 0, count: -1 };\n    this.version = 0;\n  }\n  onUploadCallback() {\n  }\n  set needsUpdate(value) {\n    if (value === true)\n      this.version++;\n  }\n  setUsage(value) {\n    this.usage = value;\n    return this;\n  }\n  copy(source) {\n    this.name = source.name;\n    this.array = new source.array.constructor(source.array);\n    this.itemSize = source.itemSize;\n    this.count = source.count;\n    this.normalized = source.normalized;\n    this.usage = source.usage;\n    return this;\n  }\n  copyAt(index1, attribute, index2) {\n    index1 *= this.itemSize;\n    index2 *= attribute.itemSize;\n    for (let i = 0, l = this.itemSize; i < l; i++) {\n      this.array[index1 + i] = attribute.array[index2 + i];\n    }\n    return this;\n  }\n  copyArray(array) {\n    this.array.set(array);\n    return this;\n  }\n  copyColorsArray(colors) {\n    const array = this.array;\n    let offset = 0;\n    for (let i = 0, l = colors.length; i < l; i++) {\n      let color = colors[i];\n      if (color === void 0) {\n        console.warn(\"THREE.BufferAttribute.copyColorsArray(): color is undefined\", i);\n        color = new Color();\n      }\n      array[offset++] = color.r;\n      array[offset++] = color.g;\n      array[offset++] = color.b;\n    }\n    return this;\n  }\n  copyVector2sArray(vectors) {\n    const array = this.array;\n    let offset = 0;\n    for (let i = 0, l = vectors.length; i < l; i++) {\n      let vector = vectors[i];\n      if (vector === void 0) {\n        console.warn(\"THREE.BufferAttribute.copyVector2sArray(): vector is undefined\", i);\n        vector = new Vector2();\n      }\n      array[offset++] = vector.x;\n      array[offset++] = vector.y;\n    }\n    return this;\n  }\n  copyVector3sArray(vectors) {\n    const array = this.array;\n    let offset = 0;\n    for (let i = 0, l = vectors.length; i < l; i++) {\n      let vector = vectors[i];\n      if (vector === void 0) {\n        console.warn(\"THREE.BufferAttribute.copyVector3sArray(): vector is undefined\", i);\n        vector = new Vector3();\n      }\n      array[offset++] = vector.x;\n      array[offset++] = vector.y;\n      array[offset++] = vector.z;\n    }\n    return this;\n  }\n  copyVector4sArray(vectors) {\n    const array = this.array;\n    let offset = 0;\n    for (let i = 0, l = vectors.length; i < l; i++) {\n      let vector = vectors[i];\n      if (vector === void 0) {\n        console.warn(\"THREE.BufferAttribute.copyVector4sArray(): vector is undefined\", i);\n        vector = new Vector4();\n      }\n      array[offset++] = vector.x;\n      array[offset++] = vector.y;\n      array[offset++] = vector.z;\n      array[offset++] = vector.w;\n    }\n    return this;\n  }\n  applyMatrix3(m) {\n    if (this.itemSize === 2) {\n      for (let i = 0, l = this.count; i < l; i++) {\n        _vector2$1.fromBufferAttribute(this, i);\n        _vector2$1.applyMatrix3(m);\n        this.setXY(i, _vector2$1.x, _vector2$1.y);\n      }\n    } else if (this.itemSize === 3) {\n      for (let i = 0, l = this.count; i < l; i++) {\n        _vector$9.fromBufferAttribute(this, i);\n        _vector$9.applyMatrix3(m);\n        this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n      }\n    }\n    return this;\n  }\n  applyMatrix4(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$9.fromBufferAttribute(this, i);\n      _vector$9.applyMatrix4(m);\n      this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n    }\n    return this;\n  }\n  applyNormalMatrix(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$9.fromBufferAttribute(this, i);\n      _vector$9.applyNormalMatrix(m);\n      this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n    }\n    return this;\n  }\n  transformDirection(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$9.fromBufferAttribute(this, i);\n      _vector$9.transformDirection(m);\n      this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n    }\n    return this;\n  }\n  set(value, offset = 0) {\n    this.array.set(value, offset);\n    return this;\n  }\n  getX(index) {\n    return this.array[index * this.itemSize];\n  }\n  setX(index, x) {\n    this.array[index * this.itemSize] = x;\n    return this;\n  }\n  getY(index) {\n    return this.array[index * this.itemSize + 1];\n  }\n  setY(index, y) {\n    this.array[index * this.itemSize + 1] = y;\n    return this;\n  }\n  getZ(index) {\n    return this.array[index * this.itemSize + 2];\n  }\n  setZ(index, z) {\n    this.array[index * this.itemSize + 2] = z;\n    return this;\n  }\n  getW(index) {\n    return this.array[index * this.itemSize + 3];\n  }\n  setW(index, w) {\n    this.array[index * this.itemSize + 3] = w;\n    return this;\n  }\n  setXY(index, x, y) {\n    index *= this.itemSize;\n    this.array[index + 0] = x;\n    this.array[index + 1] = y;\n    return this;\n  }\n  setXYZ(index, x, y, z) {\n    index *= this.itemSize;\n    this.array[index + 0] = x;\n    this.array[index + 1] = y;\n    this.array[index + 2] = z;\n    return this;\n  }\n  setXYZW(index, x, y, z, w) {\n    index *= this.itemSize;\n    this.array[index + 0] = x;\n    this.array[index + 1] = y;\n    this.array[index + 2] = z;\n    this.array[index + 3] = w;\n    return this;\n  }\n  onUpload(callback) {\n    this.onUploadCallback = callback;\n    return this;\n  }\n  clone() {\n    return new this.constructor(this.array, this.itemSize).copy(this);\n  }\n  toJSON() {\n    const data = {\n      itemSize: this.itemSize,\n      type: this.array.constructor.name,\n      array: Array.from(this.array),\n      normalized: this.normalized\n    };\n    if (this.name !== \"\")\n      data.name = this.name;\n    if (this.usage !== StaticDrawUsage)\n      data.usage = this.usage;\n    if (this.updateRange.offset !== 0 || this.updateRange.count !== -1)\n      data.updateRange = this.updateRange;\n    return data;\n  }\n}\nclass Int8BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Int8Array(array), itemSize, normalized);\n  }\n}\nclass Uint8BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint8Array(array), itemSize, normalized);\n  }\n}\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint8ClampedArray(array), itemSize, normalized);\n  }\n}\nclass Int16BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Int16Array(array), itemSize, normalized);\n  }\n}\nclass Uint16BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint16Array(array), itemSize, normalized);\n  }\n}\nclass Int32BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Int32Array(array), itemSize, normalized);\n  }\n}\nclass Uint32BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint32Array(array), itemSize, normalized);\n  }\n}\nclass Float16BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint16Array(array), itemSize, normalized);\n    this.isFloat16BufferAttribute = true;\n  }\n}\nclass Float32BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Float32Array(array), itemSize, normalized);\n  }\n}\nclass Float64BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Float64Array(array), itemSize, normalized);\n  }\n}\nlet _id$1 = 0;\nconst _m1 = /* @__PURE__ */ new Matrix4();\nconst _obj = /* @__PURE__ */ new Object3D$1();\nconst _offset = /* @__PURE__ */ new Vector3();\nconst _box$1 = /* @__PURE__ */ new Box3();\nconst _boxMorphTargets = /* @__PURE__ */ new Box3();\nconst _vector$8 = /* @__PURE__ */ new Vector3();\nclass BufferGeometry extends EventDispatcher {\n  constructor() {\n    super();\n    this.isBufferGeometry = true;\n    Object.defineProperty(this, \"id\", { value: _id$1++ });\n    this.uuid = generateUUID();\n    this.name = \"\";\n    this.type = \"BufferGeometry\";\n    this.index = null;\n    this.attributes = {};\n    this.morphAttributes = {};\n    this.morphTargetsRelative = false;\n    this.groups = [];\n    this.boundingBox = null;\n    this.boundingSphere = null;\n    this.drawRange = { start: 0, count: Infinity };\n    this.userData = {};\n  }\n  getIndex() {\n    return this.index;\n  }\n  setIndex(index) {\n    if (Array.isArray(index)) {\n      this.index = new (arrayNeedsUint32(index) ? Uint32BufferAttribute : Uint16BufferAttribute)(index, 1);\n    } else {\n      this.index = index;\n    }\n    return this;\n  }\n  getAttribute(name) {\n    return this.attributes[name];\n  }\n  setAttribute(name, attribute) {\n    this.attributes[name] = attribute;\n    return this;\n  }\n  deleteAttribute(name) {\n    delete this.attributes[name];\n    return this;\n  }\n  hasAttribute(name) {\n    return this.attributes[name] !== void 0;\n  }\n  addGroup(start, count, materialIndex = 0) {\n    this.groups.push({\n      start,\n      count,\n      materialIndex\n    });\n  }\n  clearGroups() {\n    this.groups = [];\n  }\n  setDrawRange(start, count) {\n    this.drawRange.start = start;\n    this.drawRange.count = count;\n  }\n  applyMatrix4(matrix) {\n    const position = this.attributes.position;\n    if (position !== void 0) {\n      position.applyMatrix4(matrix);\n      position.needsUpdate = true;\n    }\n    const normal = this.attributes.normal;\n    if (normal !== void 0) {\n      const normalMatrix = new Matrix3().getNormalMatrix(matrix);\n      normal.applyNormalMatrix(normalMatrix);\n      normal.needsUpdate = true;\n    }\n    const tangent = this.attributes.tangent;\n    if (tangent !== void 0) {\n      tangent.transformDirection(matrix);\n      tangent.needsUpdate = true;\n    }\n    if (this.boundingBox !== null) {\n      this.computeBoundingBox();\n    }\n    if (this.boundingSphere !== null) {\n      this.computeBoundingSphere();\n    }\n    return this;\n  }\n  applyQuaternion(q) {\n    _m1.makeRotationFromQuaternion(q);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  rotateX(angle) {\n    _m1.makeRotationX(angle);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  rotateY(angle) {\n    _m1.makeRotationY(angle);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  rotateZ(angle) {\n    _m1.makeRotationZ(angle);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  translate(x, y, z) {\n    _m1.makeTranslation(x, y, z);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  scale(x, y, z) {\n    _m1.makeScale(x, y, z);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  lookAt(vector) {\n    _obj.lookAt(vector);\n    _obj.updateMatrix();\n    this.applyMatrix4(_obj.matrix);\n    return this;\n  }\n  center() {\n    this.computeBoundingBox();\n    this.boundingBox.getCenter(_offset).negate();\n    this.translate(_offset.x, _offset.y, _offset.z);\n    return this;\n  }\n  setFromPoints(points) {\n    const position = [];\n    for (let i = 0, l = points.length; i < l; i++) {\n      const point = points[i];\n      position.push(point.x, point.y, point.z || 0);\n    }\n    this.setAttribute(\"position\", new Float32BufferAttribute(position, 3));\n    return this;\n  }\n  computeBoundingBox() {\n    if (this.boundingBox === null) {\n      this.boundingBox = new Box3();\n    }\n    const position = this.attributes.position;\n    const morphAttributesPosition = this.morphAttributes.position;\n    if (position && position.isGLBufferAttribute) {\n      console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this);\n      this.boundingBox.set(\n        new Vector3(-Infinity, -Infinity, -Infinity),\n        new Vector3(Infinity, Infinity, Infinity)\n      );\n      return;\n    }\n    if (position !== void 0) {\n      this.boundingBox.setFromBufferAttribute(position);\n      if (morphAttributesPosition) {\n        for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n          const morphAttribute = morphAttributesPosition[i];\n          _box$1.setFromBufferAttribute(morphAttribute);\n          if (this.morphTargetsRelative) {\n            _vector$8.addVectors(this.boundingBox.min, _box$1.min);\n            this.boundingBox.expandByPoint(_vector$8);\n            _vector$8.addVectors(this.boundingBox.max, _box$1.max);\n            this.boundingBox.expandByPoint(_vector$8);\n          } else {\n            this.boundingBox.expandByPoint(_box$1.min);\n            this.boundingBox.expandByPoint(_box$1.max);\n          }\n        }\n      }\n    } else {\n      this.boundingBox.makeEmpty();\n    }\n    if (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) {\n      console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this);\n    }\n  }\n  computeBoundingSphere() {\n    if (this.boundingSphere === null) {\n      this.boundingSphere = new Sphere();\n    }\n    const position = this.attributes.position;\n    const morphAttributesPosition = this.morphAttributes.position;\n    if (position && position.isGLBufferAttribute) {\n      console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this);\n      this.boundingSphere.set(new Vector3(), Infinity);\n      return;\n    }\n    if (position) {\n      const center = this.boundingSphere.center;\n      _box$1.setFromBufferAttribute(position);\n      if (morphAttributesPosition) {\n        for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n          const morphAttribute = morphAttributesPosition[i];\n          _boxMorphTargets.setFromBufferAttribute(morphAttribute);\n          if (this.morphTargetsRelative) {\n            _vector$8.addVectors(_box$1.min, _boxMorphTargets.min);\n            _box$1.expandByPoint(_vector$8);\n            _vector$8.addVectors(_box$1.max, _boxMorphTargets.max);\n            _box$1.expandByPoint(_vector$8);\n          } else {\n            _box$1.expandByPoint(_boxMorphTargets.min);\n            _box$1.expandByPoint(_boxMorphTargets.max);\n          }\n        }\n      }\n      _box$1.getCenter(center);\n      let maxRadiusSq = 0;\n      for (let i = 0, il = position.count; i < il; i++) {\n        _vector$8.fromBufferAttribute(position, i);\n        maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n      }\n      if (morphAttributesPosition) {\n        for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n          const morphAttribute = morphAttributesPosition[i];\n          const morphTargetsRelative = this.morphTargetsRelative;\n          for (let j = 0, jl = morphAttribute.count; j < jl; j++) {\n            _vector$8.fromBufferAttribute(morphAttribute, j);\n            if (morphTargetsRelative) {\n              _offset.fromBufferAttribute(position, j);\n              _vector$8.add(_offset);\n            }\n            maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n          }\n        }\n      }\n      this.boundingSphere.radius = Math.sqrt(maxRadiusSq);\n      if (isNaN(this.boundingSphere.radius)) {\n        console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this);\n      }\n    }\n  }\n  computeTangents() {\n    const index = this.index;\n    const attributes = this.attributes;\n    if (index === null || attributes.position === void 0 || attributes.normal === void 0 || attributes.uv === void 0) {\n      console.error(\"THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)\");\n      return;\n    }\n    const indices = index.array;\n    const positions = attributes.position.array;\n    const normals = attributes.normal.array;\n    const uvs = attributes.uv.array;\n    const nVertices = positions.length / 3;\n    if (this.hasAttribute(\"tangent\") === false) {\n      this.setAttribute(\"tangent\", new BufferAttribute(new Float32Array(4 * nVertices), 4));\n    }\n    const tangents = this.getAttribute(\"tangent\").array;\n    const tan1 = [], tan2 = [];\n    for (let i = 0; i < nVertices; i++) {\n      tan1[i] = new Vector3();\n      tan2[i] = new Vector3();\n    }\n    const vA = new Vector3(), vB = new Vector3(), vC = new Vector3(), uvA = new Vector2(), uvB = new Vector2(), uvC = new Vector2(), sdir = new Vector3(), tdir = new Vector3();\n    function handleTriangle(a, b, c) {\n      vA.fromArray(positions, a * 3);\n      vB.fromArray(positions, b * 3);\n      vC.fromArray(positions, c * 3);\n      uvA.fromArray(uvs, a * 2);\n      uvB.fromArray(uvs, b * 2);\n      uvC.fromArray(uvs, c * 2);\n      vB.sub(vA);\n      vC.sub(vA);\n      uvB.sub(uvA);\n      uvC.sub(uvA);\n      const r = 1 / (uvB.x * uvC.y - uvC.x * uvB.y);\n      if (!isFinite(r))\n        return;\n      sdir.copy(vB).multiplyScalar(uvC.y).addScaledVector(vC, -uvB.y).multiplyScalar(r);\n      tdir.copy(vC).multiplyScalar(uvB.x).addScaledVector(vB, -uvC.x).multiplyScalar(r);\n      tan1[a].add(sdir);\n      tan1[b].add(sdir);\n      tan1[c].add(sdir);\n      tan2[a].add(tdir);\n      tan2[b].add(tdir);\n      tan2[c].add(tdir);\n    }\n    let groups = this.groups;\n    if (groups.length === 0) {\n      groups = [{\n        start: 0,\n        count: indices.length\n      }];\n    }\n    for (let i = 0, il = groups.length; i < il; ++i) {\n      const group = groups[i];\n      const start = group.start;\n      const count = group.count;\n      for (let j = start, jl = start + count; j < jl; j += 3) {\n        handleTriangle(\n          indices[j + 0],\n          indices[j + 1],\n          indices[j + 2]\n        );\n      }\n    }\n    const tmp2 = new Vector3(), tmp22 = new Vector3();\n    const n = new Vector3(), n2 = new Vector3();\n    function handleVertex(v) {\n      n.fromArray(normals, v * 3);\n      n2.copy(n);\n      const t = tan1[v];\n      tmp2.copy(t);\n      tmp2.sub(n.multiplyScalar(n.dot(t))).normalize();\n      tmp22.crossVectors(n2, t);\n      const test = tmp22.dot(tan2[v]);\n      const w = test < 0 ? -1 : 1;\n      tangents[v * 4] = tmp2.x;\n      tangents[v * 4 + 1] = tmp2.y;\n      tangents[v * 4 + 2] = tmp2.z;\n      tangents[v * 4 + 3] = w;\n    }\n    for (let i = 0, il = groups.length; i < il; ++i) {\n      const group = groups[i];\n      const start = group.start;\n      const count = group.count;\n      for (let j = start, jl = start + count; j < jl; j += 3) {\n        handleVertex(indices[j + 0]);\n        handleVertex(indices[j + 1]);\n        handleVertex(indices[j + 2]);\n      }\n    }\n  }\n  computeVertexNormals() {\n    const index = this.index;\n    const positionAttribute = this.getAttribute(\"position\");\n    if (positionAttribute !== void 0) {\n      let normalAttribute = this.getAttribute(\"normal\");\n      if (normalAttribute === void 0) {\n        normalAttribute = new BufferAttribute(new Float32Array(positionAttribute.count * 3), 3);\n        this.setAttribute(\"normal\", normalAttribute);\n      } else {\n        for (let i = 0, il = normalAttribute.count; i < il; i++) {\n          normalAttribute.setXYZ(i, 0, 0, 0);\n        }\n      }\n      const pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n      const nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n      const cb = new Vector3(), ab = new Vector3();\n      if (index) {\n        for (let i = 0, il = index.count; i < il; i += 3) {\n          const vA = index.getX(i + 0);\n          const vB = index.getX(i + 1);\n          const vC = index.getX(i + 2);\n          pA.fromBufferAttribute(positionAttribute, vA);\n          pB.fromBufferAttribute(positionAttribute, vB);\n          pC.fromBufferAttribute(positionAttribute, vC);\n          cb.subVectors(pC, pB);\n          ab.subVectors(pA, pB);\n          cb.cross(ab);\n          nA.fromBufferAttribute(normalAttribute, vA);\n          nB.fromBufferAttribute(normalAttribute, vB);\n          nC.fromBufferAttribute(normalAttribute, vC);\n          nA.add(cb);\n          nB.add(cb);\n          nC.add(cb);\n          normalAttribute.setXYZ(vA, nA.x, nA.y, nA.z);\n          normalAttribute.setXYZ(vB, nB.x, nB.y, nB.z);\n          normalAttribute.setXYZ(vC, nC.x, nC.y, nC.z);\n        }\n      } else {\n        for (let i = 0, il = positionAttribute.count; i < il; i += 3) {\n          pA.fromBufferAttribute(positionAttribute, i + 0);\n          pB.fromBufferAttribute(positionAttribute, i + 1);\n          pC.fromBufferAttribute(positionAttribute, i + 2);\n          cb.subVectors(pC, pB);\n          ab.subVectors(pA, pB);\n          cb.cross(ab);\n          normalAttribute.setXYZ(i + 0, cb.x, cb.y, cb.z);\n          normalAttribute.setXYZ(i + 1, cb.x, cb.y, cb.z);\n          normalAttribute.setXYZ(i + 2, cb.x, cb.y, cb.z);\n        }\n      }\n      this.normalizeNormals();\n      normalAttribute.needsUpdate = true;\n    }\n  }\n  merge(geometry, offset) {\n    if (!(geometry && geometry.isBufferGeometry)) {\n      console.error(\"THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.\", geometry);\n      return;\n    }\n    if (offset === void 0) {\n      offset = 0;\n      console.warn(\n        \"THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.\"\n      );\n    }\n    const attributes = this.attributes;\n    for (const key in attributes) {\n      if (geometry.attributes[key] === void 0)\n        continue;\n      const attribute1 = attributes[key];\n      const attributeArray1 = attribute1.array;\n      const attribute2 = geometry.attributes[key];\n      const attributeArray2 = attribute2.array;\n      const attributeOffset = attribute2.itemSize * offset;\n      const length = Math.min(attributeArray2.length, attributeArray1.length - attributeOffset);\n      for (let i = 0, j = attributeOffset; i < length; i++, j++) {\n        attributeArray1[j] = attributeArray2[i];\n      }\n    }\n    return this;\n  }\n  normalizeNormals() {\n    const normals = this.attributes.normal;\n    for (let i = 0, il = normals.count; i < il; i++) {\n      _vector$8.fromBufferAttribute(normals, i);\n      _vector$8.normalize();\n      normals.setXYZ(i, _vector$8.x, _vector$8.y, _vector$8.z);\n    }\n  }\n  toNonIndexed() {\n    function convertBufferAttribute(attribute, indices2) {\n      const array = attribute.array;\n      const itemSize = attribute.itemSize;\n      const normalized = attribute.normalized;\n      const array2 = new array.constructor(indices2.length * itemSize);\n      let index = 0, index2 = 0;\n      for (let i = 0, l = indices2.length; i < l; i++) {\n        if (attribute.isInterleavedBufferAttribute) {\n          index = indices2[i] * attribute.data.stride + attribute.offset;\n        } else {\n          index = indices2[i] * itemSize;\n        }\n        for (let j = 0; j < itemSize; j++) {\n          array2[index2++] = array[index++];\n        }\n      }\n      return new BufferAttribute(array2, itemSize, normalized);\n    }\n    if (this.index === null) {\n      console.warn(\"THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.\");\n      return this;\n    }\n    const geometry2 = new BufferGeometry();\n    const indices = this.index.array;\n    const attributes = this.attributes;\n    for (const name in attributes) {\n      const attribute = attributes[name];\n      const newAttribute = convertBufferAttribute(attribute, indices);\n      geometry2.setAttribute(name, newAttribute);\n    }\n    const morphAttributes = this.morphAttributes;\n    for (const name in morphAttributes) {\n      const morphArray = [];\n      const morphAttribute = morphAttributes[name];\n      for (let i = 0, il = morphAttribute.length; i < il; i++) {\n        const attribute = morphAttribute[i];\n        const newAttribute = convertBufferAttribute(attribute, indices);\n        morphArray.push(newAttribute);\n      }\n      geometry2.morphAttributes[name] = morphArray;\n    }\n    geometry2.morphTargetsRelative = this.morphTargetsRelative;\n    const groups = this.groups;\n    for (let i = 0, l = groups.length; i < l; i++) {\n      const group = groups[i];\n      geometry2.addGroup(group.start, group.count, group.materialIndex);\n    }\n    return geometry2;\n  }\n  toJSON() {\n    const data = {\n      metadata: {\n        version: 4.5,\n        type: \"BufferGeometry\",\n        generator: \"BufferGeometry.toJSON\"\n      }\n    };\n    data.uuid = this.uuid;\n    data.type = this.type;\n    if (this.name !== \"\")\n      data.name = this.name;\n    if (Object.keys(this.userData).length > 0)\n      data.userData = this.userData;\n    if (this.parameters !== void 0) {\n      const parameters = this.parameters;\n      for (const key in parameters) {\n        if (parameters[key] !== void 0)\n          data[key] = parameters[key];\n      }\n      return data;\n    }\n    data.data = { attributes: {} };\n    const index = this.index;\n    if (index !== null) {\n      data.data.index = {\n        type: index.array.constructor.name,\n        array: Array.prototype.slice.call(index.array)\n      };\n    }\n    const attributes = this.attributes;\n    for (const key in attributes) {\n      const attribute = attributes[key];\n      data.data.attributes[key] = attribute.toJSON(data.data);\n    }\n    const morphAttributes = {};\n    let hasMorphAttributes = false;\n    for (const key in this.morphAttributes) {\n      const attributeArray = this.morphAttributes[key];\n      const array = [];\n      for (let i = 0, il = attributeArray.length; i < il; i++) {\n        const attribute = attributeArray[i];\n        array.push(attribute.toJSON(data.data));\n      }\n      if (array.length > 0) {\n        morphAttributes[key] = array;\n        hasMorphAttributes = true;\n      }\n    }\n    if (hasMorphAttributes) {\n      data.data.morphAttributes = morphAttributes;\n      data.data.morphTargetsRelative = this.morphTargetsRelative;\n    }\n    const groups = this.groups;\n    if (groups.length > 0) {\n      data.data.groups = JSON.parse(JSON.stringify(groups));\n    }\n    const boundingSphere = this.boundingSphere;\n    if (boundingSphere !== null) {\n      data.data.boundingSphere = {\n        center: boundingSphere.center.toArray(),\n        radius: boundingSphere.radius\n      };\n    }\n    return data;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.index = null;\n    this.attributes = {};\n    this.morphAttributes = {};\n    this.groups = [];\n    this.boundingBox = null;\n    this.boundingSphere = null;\n    const data = {};\n    this.name = source.name;\n    const index = source.index;\n    if (index !== null) {\n      this.setIndex(index.clone(data));\n    }\n    const attributes = source.attributes;\n    for (const name in attributes) {\n      const attribute = attributes[name];\n      this.setAttribute(name, attribute.clone(data));\n    }\n    const morphAttributes = source.morphAttributes;\n    for (const name in morphAttributes) {\n      const array = [];\n      const morphAttribute = morphAttributes[name];\n      for (let i = 0, l = morphAttribute.length; i < l; i++) {\n        array.push(morphAttribute[i].clone(data));\n      }\n      this.morphAttributes[name] = array;\n    }\n    this.morphTargetsRelative = source.morphTargetsRelative;\n    const groups = source.groups;\n    for (let i = 0, l = groups.length; i < l; i++) {\n      const group = groups[i];\n      this.addGroup(group.start, group.count, group.materialIndex);\n    }\n    const boundingBox = source.boundingBox;\n    if (boundingBox !== null) {\n      this.boundingBox = boundingBox.clone();\n    }\n    const boundingSphere = source.boundingSphere;\n    if (boundingSphere !== null) {\n      this.boundingSphere = boundingSphere.clone();\n    }\n    this.drawRange.start = source.drawRange.start;\n    this.drawRange.count = source.drawRange.count;\n    this.userData = source.userData;\n    if (source.parameters !== void 0)\n      this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n}\nconst _inverseMatrix$2 = /* @__PURE__ */ new Matrix4();\nconst _ray$2 = /* @__PURE__ */ new Ray();\nconst _sphere$3 = /* @__PURE__ */ new Sphere();\nconst _vA$1 = /* @__PURE__ */ new Vector3();\nconst _vB$1 = /* @__PURE__ */ new Vector3();\nconst _vC$1 = /* @__PURE__ */ new Vector3();\nconst _tempA = /* @__PURE__ */ new Vector3();\nconst _tempB = /* @__PURE__ */ new Vector3();\nconst _tempC = /* @__PURE__ */ new Vector3();\nconst _morphA = /* @__PURE__ */ new Vector3();\nconst _morphB = /* @__PURE__ */ new Vector3();\nconst _morphC = /* @__PURE__ */ new Vector3();\nconst _uvA$1 = /* @__PURE__ */ new Vector2();\nconst _uvB$1 = /* @__PURE__ */ new Vector2();\nconst _uvC$1 = /* @__PURE__ */ new Vector2();\nconst _intersectionPoint = /* @__PURE__ */ new Vector3();\nconst _intersectionPointWorld = /* @__PURE__ */ new Vector3();\nclass Mesh extends Object3D$1 {\n  constructor(geometry = new BufferGeometry(), material = new MeshBasicMaterial()) {\n    super();\n    this.isMesh = true;\n    this.type = \"Mesh\";\n    this.geometry = geometry;\n    this.material = material;\n    this.updateMorphTargets();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    if (source.morphTargetInfluences !== void 0) {\n      this.morphTargetInfluences = source.morphTargetInfluences.slice();\n    }\n    if (source.morphTargetDictionary !== void 0) {\n      this.morphTargetDictionary = Object.assign({}, source.morphTargetDictionary);\n    }\n    this.material = source.material;\n    this.geometry = source.geometry;\n    return this;\n  }\n  updateMorphTargets() {\n    const geometry = this.geometry;\n    const morphAttributes = geometry.morphAttributes;\n    const keys = Object.keys(morphAttributes);\n    if (keys.length > 0) {\n      const morphAttribute = morphAttributes[keys[0]];\n      if (morphAttribute !== void 0) {\n        this.morphTargetInfluences = [];\n        this.morphTargetDictionary = {};\n        for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n          const name = morphAttribute[m].name || String(m);\n          this.morphTargetInfluences.push(0);\n          this.morphTargetDictionary[name] = m;\n        }\n      }\n    }\n  }\n  raycast(raycaster, intersects2) {\n    const geometry = this.geometry;\n    const material = this.material;\n    const matrixWorld = this.matrixWorld;\n    if (material === void 0)\n      return;\n    if (geometry.boundingSphere === null)\n      geometry.computeBoundingSphere();\n    _sphere$3.copy(geometry.boundingSphere);\n    _sphere$3.applyMatrix4(matrixWorld);\n    if (raycaster.ray.intersectsSphere(_sphere$3) === false)\n      return;\n    _inverseMatrix$2.copy(matrixWorld).invert();\n    _ray$2.copy(raycaster.ray).applyMatrix4(_inverseMatrix$2);\n    if (geometry.boundingBox !== null) {\n      if (_ray$2.intersectsBox(geometry.boundingBox) === false)\n        return;\n    }\n    let intersection;\n    const index = geometry.index;\n    const position = geometry.attributes.position;\n    const morphPosition = geometry.morphAttributes.position;\n    const morphTargetsRelative = geometry.morphTargetsRelative;\n    const uv = geometry.attributes.uv;\n    const uv2 = geometry.attributes.uv2;\n    const groups = geometry.groups;\n    const drawRange = geometry.drawRange;\n    if (index !== null) {\n      if (Array.isArray(material)) {\n        for (let i = 0, il = groups.length; i < il; i++) {\n          const group = groups[i];\n          const groupMaterial = material[group.materialIndex];\n          const start = Math.max(group.start, drawRange.start);\n          const end = Math.min(index.count, Math.min(group.start + group.count, drawRange.start + drawRange.count));\n          for (let j = start, jl = end; j < jl; j += 3) {\n            const a = index.getX(j);\n            const b = index.getX(j + 1);\n            const c = index.getX(j + 2);\n            intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n            if (intersection) {\n              intersection.faceIndex = Math.floor(j / 3);\n              intersection.face.materialIndex = group.materialIndex;\n              intersects2.push(intersection);\n            }\n          }\n        }\n      } else {\n        const start = Math.max(0, drawRange.start);\n        const end = Math.min(index.count, drawRange.start + drawRange.count);\n        for (let i = start, il = end; i < il; i += 3) {\n          const a = index.getX(i);\n          const b = index.getX(i + 1);\n          const c = index.getX(i + 2);\n          intersection = checkBufferGeometryIntersection(this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n          if (intersection) {\n            intersection.faceIndex = Math.floor(i / 3);\n            intersects2.push(intersection);\n          }\n        }\n      }\n    } else if (position !== void 0) {\n      if (Array.isArray(material)) {\n        for (let i = 0, il = groups.length; i < il; i++) {\n          const group = groups[i];\n          const groupMaterial = material[group.materialIndex];\n          const start = Math.max(group.start, drawRange.start);\n          const end = Math.min(position.count, Math.min(group.start + group.count, drawRange.start + drawRange.count));\n          for (let j = start, jl = end; j < jl; j += 3) {\n            const a = j;\n            const b = j + 1;\n            const c = j + 2;\n            intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n            if (intersection) {\n              intersection.faceIndex = Math.floor(j / 3);\n              intersection.face.materialIndex = group.materialIndex;\n              intersects2.push(intersection);\n            }\n          }\n        }\n      } else {\n        const start = Math.max(0, drawRange.start);\n        const end = Math.min(position.count, drawRange.start + drawRange.count);\n        for (let i = start, il = end; i < il; i += 3) {\n          const a = i;\n          const b = i + 1;\n          const c = i + 2;\n          intersection = checkBufferGeometryIntersection(this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n          if (intersection) {\n            intersection.faceIndex = Math.floor(i / 3);\n            intersects2.push(intersection);\n          }\n        }\n      }\n    }\n  }\n}\nfunction checkIntersection(object, material, raycaster, ray, pA, pB, pC, point) {\n  let intersect;\n  if (material.side === BackSide) {\n    intersect = ray.intersectTriangle(pC, pB, pA, true, point);\n  } else {\n    intersect = ray.intersectTriangle(pA, pB, pC, material.side !== DoubleSide, point);\n  }\n  if (intersect === null)\n    return null;\n  _intersectionPointWorld.copy(point);\n  _intersectionPointWorld.applyMatrix4(object.matrixWorld);\n  const distance = raycaster.ray.origin.distanceTo(_intersectionPointWorld);\n  if (distance < raycaster.near || distance > raycaster.far)\n    return null;\n  return {\n    distance,\n    point: _intersectionPointWorld.clone(),\n    object\n  };\n}\nfunction checkBufferGeometryIntersection(object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c) {\n  _vA$1.fromBufferAttribute(position, a);\n  _vB$1.fromBufferAttribute(position, b);\n  _vC$1.fromBufferAttribute(position, c);\n  const morphInfluences = object.morphTargetInfluences;\n  if (morphPosition && morphInfluences) {\n    _morphA.set(0, 0, 0);\n    _morphB.set(0, 0, 0);\n    _morphC.set(0, 0, 0);\n    for (let i = 0, il = morphPosition.length; i < il; i++) {\n      const influence = morphInfluences[i];\n      const morphAttribute = morphPosition[i];\n      if (influence === 0)\n        continue;\n      _tempA.fromBufferAttribute(morphAttribute, a);\n      _tempB.fromBufferAttribute(morphAttribute, b);\n      _tempC.fromBufferAttribute(morphAttribute, c);\n      if (morphTargetsRelative) {\n        _morphA.addScaledVector(_tempA, influence);\n        _morphB.addScaledVector(_tempB, influence);\n        _morphC.addScaledVector(_tempC, influence);\n      } else {\n        _morphA.addScaledVector(_tempA.sub(_vA$1), influence);\n        _morphB.addScaledVector(_tempB.sub(_vB$1), influence);\n        _morphC.addScaledVector(_tempC.sub(_vC$1), influence);\n      }\n    }\n    _vA$1.add(_morphA);\n    _vB$1.add(_morphB);\n    _vC$1.add(_morphC);\n  }\n  if (object.isSkinnedMesh) {\n    object.boneTransform(a, _vA$1);\n    object.boneTransform(b, _vB$1);\n    object.boneTransform(c, _vC$1);\n  }\n  const intersection = checkIntersection(object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint);\n  if (intersection) {\n    if (uv) {\n      _uvA$1.fromBufferAttribute(uv, a);\n      _uvB$1.fromBufferAttribute(uv, b);\n      _uvC$1.fromBufferAttribute(uv, c);\n      intersection.uv = Triangle.getUV(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2());\n    }\n    if (uv2) {\n      _uvA$1.fromBufferAttribute(uv2, a);\n      _uvB$1.fromBufferAttribute(uv2, b);\n      _uvC$1.fromBufferAttribute(uv2, c);\n      intersection.uv2 = Triangle.getUV(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2());\n    }\n    const face = {\n      a,\n      b,\n      c,\n      normal: new Vector3(),\n      materialIndex: 0\n    };\n    Triangle.getNormal(_vA$1, _vB$1, _vC$1, face.normal);\n    intersection.face = face;\n  }\n  return intersection;\n}\nclass BoxGeometry extends BufferGeometry {\n  constructor(width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1) {\n    super();\n    this.type = \"BoxGeometry\";\n    this.parameters = {\n      width,\n      height,\n      depth,\n      widthSegments,\n      heightSegments,\n      depthSegments\n    };\n    const scope = this;\n    widthSegments = Math.floor(widthSegments);\n    heightSegments = Math.floor(heightSegments);\n    depthSegments = Math.floor(depthSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    let numberOfVertices = 0;\n    let groupStart = 0;\n    buildPlane(\"z\", \"y\", \"x\", -1, -1, depth, height, width, depthSegments, heightSegments, 0);\n    buildPlane(\"z\", \"y\", \"x\", 1, -1, depth, height, -width, depthSegments, heightSegments, 1);\n    buildPlane(\"x\", \"z\", \"y\", 1, 1, width, depth, height, widthSegments, depthSegments, 2);\n    buildPlane(\"x\", \"z\", \"y\", 1, -1, width, depth, -height, widthSegments, depthSegments, 3);\n    buildPlane(\"x\", \"y\", \"z\", 1, -1, width, height, depth, widthSegments, heightSegments, 4);\n    buildPlane(\"x\", \"y\", \"z\", -1, -1, width, height, -depth, widthSegments, heightSegments, 5);\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function buildPlane(u, v, w, udir, vdir, width2, height2, depth2, gridX, gridY, materialIndex) {\n      const segmentWidth = width2 / gridX;\n      const segmentHeight = height2 / gridY;\n      const widthHalf = width2 / 2;\n      const heightHalf = height2 / 2;\n      const depthHalf = depth2 / 2;\n      const gridX1 = gridX + 1;\n      const gridY1 = gridY + 1;\n      let vertexCounter = 0;\n      let groupCount = 0;\n      const vector = new Vector3();\n      for (let iy = 0; iy < gridY1; iy++) {\n        const y = iy * segmentHeight - heightHalf;\n        for (let ix = 0; ix < gridX1; ix++) {\n          const x = ix * segmentWidth - widthHalf;\n          vector[u] = x * udir;\n          vector[v] = y * vdir;\n          vector[w] = depthHalf;\n          vertices.push(vector.x, vector.y, vector.z);\n          vector[u] = 0;\n          vector[v] = 0;\n          vector[w] = depth2 > 0 ? 1 : -1;\n          normals.push(vector.x, vector.y, vector.z);\n          uvs.push(ix / gridX);\n          uvs.push(1 - iy / gridY);\n          vertexCounter += 1;\n        }\n      }\n      for (let iy = 0; iy < gridY; iy++) {\n        for (let ix = 0; ix < gridX; ix++) {\n          const a = numberOfVertices + ix + gridX1 * iy;\n          const b = numberOfVertices + ix + gridX1 * (iy + 1);\n          const c = numberOfVertices + (ix + 1) + gridX1 * (iy + 1);\n          const d = numberOfVertices + (ix + 1) + gridX1 * iy;\n          indices.push(a, b, d);\n          indices.push(b, c, d);\n          groupCount += 6;\n        }\n      }\n      scope.addGroup(groupStart, groupCount, materialIndex);\n      groupStart += groupCount;\n      numberOfVertices += vertexCounter;\n    }\n  }\n  static fromJSON(data) {\n    return new BoxGeometry(data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments);\n  }\n}\nfunction cloneUniforms(src) {\n  const dst = {};\n  for (const u in src) {\n    dst[u] = {};\n    for (const p in src[u]) {\n      const property = src[u][p];\n      if (property && (property.isColor || property.isMatrix3 || property.isMatrix4 || property.isVector2 || property.isVector3 || property.isVector4 || property.isTexture || property.isQuaternion)) {\n        dst[u][p] = property.clone();\n      } else if (Array.isArray(property)) {\n        dst[u][p] = property.slice();\n      } else {\n        dst[u][p] = property;\n      }\n    }\n  }\n  return dst;\n}\nfunction mergeUniforms(uniforms) {\n  const merged = {};\n  for (let u = 0; u < uniforms.length; u++) {\n    const tmp2 = cloneUniforms(uniforms[u]);\n    for (const p in tmp2) {\n      merged[p] = tmp2[p];\n    }\n  }\n  return merged;\n}\nfunction cloneUniformsGroups(src) {\n  const dst = [];\n  for (let u = 0; u < src.length; u++) {\n    dst.push(src[u].clone());\n  }\n  return dst;\n}\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\nvar default_vertex = \"void main() {\\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\nvar default_fragment = \"void main() {\\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\nclass ShaderMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isShaderMaterial = true;\n    this.type = \"ShaderMaterial\";\n    this.defines = {};\n    this.uniforms = {};\n    this.uniformsGroups = [];\n    this.vertexShader = default_vertex;\n    this.fragmentShader = default_fragment;\n    this.linewidth = 1;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.fog = false;\n    this.lights = false;\n    this.clipping = false;\n    this.extensions = {\n      derivatives: false,\n      fragDepth: false,\n      drawBuffers: false,\n      shaderTextureLOD: false\n    };\n    this.defaultAttributeValues = {\n      \"color\": [1, 1, 1],\n      \"uv\": [0, 0],\n      \"uv2\": [0, 0]\n    };\n    this.index0AttributeName = void 0;\n    this.uniformsNeedUpdate = false;\n    this.glslVersion = null;\n    if (parameters !== void 0) {\n      if (parameters.attributes !== void 0) {\n        console.error(\"THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.\");\n      }\n      this.setValues(parameters);\n    }\n  }\n  copy(source) {\n    super.copy(source);\n    this.fragmentShader = source.fragmentShader;\n    this.vertexShader = source.vertexShader;\n    this.uniforms = cloneUniforms(source.uniforms);\n    this.uniformsGroups = cloneUniformsGroups(source.uniformsGroups);\n    this.defines = Object.assign({}, source.defines);\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.fog = source.fog;\n    this.lights = source.lights;\n    this.clipping = source.clipping;\n    this.extensions = Object.assign({}, source.extensions);\n    this.glslVersion = source.glslVersion;\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.glslVersion = this.glslVersion;\n    data.uniforms = {};\n    for (const name in this.uniforms) {\n      const uniform = this.uniforms[name];\n      const value = uniform.value;\n      if (value && value.isTexture) {\n        data.uniforms[name] = {\n          type: \"t\",\n          value: value.toJSON(meta).uuid\n        };\n      } else if (value && value.isColor) {\n        data.uniforms[name] = {\n          type: \"c\",\n          value: value.getHex()\n        };\n      } else if (value && value.isVector2) {\n        data.uniforms[name] = {\n          type: \"v2\",\n          value: value.toArray()\n        };\n      } else if (value && value.isVector3) {\n        data.uniforms[name] = {\n          type: \"v3\",\n          value: value.toArray()\n        };\n      } else if (value && value.isVector4) {\n        data.uniforms[name] = {\n          type: \"v4\",\n          value: value.toArray()\n        };\n      } else if (value && value.isMatrix3) {\n        data.uniforms[name] = {\n          type: \"m3\",\n          value: value.toArray()\n        };\n      } else if (value && value.isMatrix4) {\n        data.uniforms[name] = {\n          type: \"m4\",\n          value: value.toArray()\n        };\n      } else {\n        data.uniforms[name] = {\n          value\n        };\n      }\n    }\n    if (Object.keys(this.defines).length > 0)\n      data.defines = this.defines;\n    data.vertexShader = this.vertexShader;\n    data.fragmentShader = this.fragmentShader;\n    const extensions = {};\n    for (const key in this.extensions) {\n      if (this.extensions[key] === true)\n        extensions[key] = true;\n    }\n    if (Object.keys(extensions).length > 0)\n      data.extensions = extensions;\n    return data;\n  }\n}\nclass Camera$2 extends Object3D$1 {\n  constructor() {\n    super();\n    this.isCamera = true;\n    this.type = \"Camera\";\n    this.matrixWorldInverse = new Matrix4();\n    this.projectionMatrix = new Matrix4();\n    this.projectionMatrixInverse = new Matrix4();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.matrixWorldInverse.copy(source.matrixWorldInverse);\n    this.projectionMatrix.copy(source.projectionMatrix);\n    this.projectionMatrixInverse.copy(source.projectionMatrixInverse);\n    return this;\n  }\n  getWorldDirection(target) {\n    this.updateWorldMatrix(true, false);\n    const e = this.matrixWorld.elements;\n    return target.set(-e[8], -e[9], -e[10]).normalize();\n  }\n  updateMatrixWorld(force) {\n    super.updateMatrixWorld(force);\n    this.matrixWorldInverse.copy(this.matrixWorld).invert();\n  }\n  updateWorldMatrix(updateParents, updateChildren) {\n    super.updateWorldMatrix(updateParents, updateChildren);\n    this.matrixWorldInverse.copy(this.matrixWorld).invert();\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nclass PerspectiveCamera extends Camera$2 {\n  constructor(fov2 = 50, aspect2 = 1, near = 0.1, far = 2e3) {\n    super();\n    this.isPerspectiveCamera = true;\n    this.type = \"PerspectiveCamera\";\n    this.fov = fov2;\n    this.zoom = 1;\n    this.near = near;\n    this.far = far;\n    this.focus = 10;\n    this.aspect = aspect2;\n    this.view = null;\n    this.filmGauge = 35;\n    this.filmOffset = 0;\n    this.updateProjectionMatrix();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.fov = source.fov;\n    this.zoom = source.zoom;\n    this.near = source.near;\n    this.far = source.far;\n    this.focus = source.focus;\n    this.aspect = source.aspect;\n    this.view = source.view === null ? null : Object.assign({}, source.view);\n    this.filmGauge = source.filmGauge;\n    this.filmOffset = source.filmOffset;\n    return this;\n  }\n  setFocalLength(focalLength) {\n    const vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n    this.fov = RAD2DEG * 2 * Math.atan(vExtentSlope);\n    this.updateProjectionMatrix();\n  }\n  getFocalLength() {\n    const vExtentSlope = Math.tan(DEG2RAD * 0.5 * this.fov);\n    return 0.5 * this.getFilmHeight() / vExtentSlope;\n  }\n  getEffectiveFOV() {\n    return RAD2DEG * 2 * Math.atan(\n      Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom\n    );\n  }\n  getFilmWidth() {\n    return this.filmGauge * Math.min(this.aspect, 1);\n  }\n  getFilmHeight() {\n    return this.filmGauge / Math.max(this.aspect, 1);\n  }\n  setViewOffset(fullWidth, fullHeight, x, y, width, height) {\n    this.aspect = fullWidth / fullHeight;\n    if (this.view === null) {\n      this.view = {\n        enabled: true,\n        fullWidth: 1,\n        fullHeight: 1,\n        offsetX: 0,\n        offsetY: 0,\n        width: 1,\n        height: 1\n      };\n    }\n    this.view.enabled = true;\n    this.view.fullWidth = fullWidth;\n    this.view.fullHeight = fullHeight;\n    this.view.offsetX = x;\n    this.view.offsetY = y;\n    this.view.width = width;\n    this.view.height = height;\n    this.updateProjectionMatrix();\n  }\n  clearViewOffset() {\n    if (this.view !== null) {\n      this.view.enabled = false;\n    }\n    this.updateProjectionMatrix();\n  }\n  updateProjectionMatrix() {\n    const near = this.near;\n    let top = near * Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom;\n    let height = 2 * top;\n    let width = this.aspect * height;\n    let left = -0.5 * width;\n    const view = this.view;\n    if (this.view !== null && this.view.enabled) {\n      const fullWidth = view.fullWidth, fullHeight = view.fullHeight;\n      left += view.offsetX * width / fullWidth;\n      top -= view.offsetY * height / fullHeight;\n      width *= view.width / fullWidth;\n      height *= view.height / fullHeight;\n    }\n    const skew = this.filmOffset;\n    if (skew !== 0)\n      left += near * skew / this.getFilmWidth();\n    this.projectionMatrix.makePerspective(left, left + width, top, top - height, near, this.far);\n    this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.fov = this.fov;\n    data.object.zoom = this.zoom;\n    data.object.near = this.near;\n    data.object.far = this.far;\n    data.object.focus = this.focus;\n    data.object.aspect = this.aspect;\n    if (this.view !== null)\n      data.object.view = Object.assign({}, this.view);\n    data.object.filmGauge = this.filmGauge;\n    data.object.filmOffset = this.filmOffset;\n    return data;\n  }\n}\nconst fov = 90, aspect = 1;\nclass CubeCamera extends Object3D$1 {\n  constructor(near, far, renderTarget) {\n    super();\n    this.type = \"CubeCamera\";\n    if (renderTarget.isWebGLCubeRenderTarget !== true) {\n      console.error(\"THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.\");\n      return;\n    }\n    this.renderTarget = renderTarget;\n    const cameraPX = new PerspectiveCamera(fov, aspect, near, far);\n    cameraPX.layers = this.layers;\n    cameraPX.up.set(0, -1, 0);\n    cameraPX.lookAt(new Vector3(1, 0, 0));\n    this.add(cameraPX);\n    const cameraNX = new PerspectiveCamera(fov, aspect, near, far);\n    cameraNX.layers = this.layers;\n    cameraNX.up.set(0, -1, 0);\n    cameraNX.lookAt(new Vector3(-1, 0, 0));\n    this.add(cameraNX);\n    const cameraPY = new PerspectiveCamera(fov, aspect, near, far);\n    cameraPY.layers = this.layers;\n    cameraPY.up.set(0, 0, 1);\n    cameraPY.lookAt(new Vector3(0, 1, 0));\n    this.add(cameraPY);\n    const cameraNY = new PerspectiveCamera(fov, aspect, near, far);\n    cameraNY.layers = this.layers;\n    cameraNY.up.set(0, 0, -1);\n    cameraNY.lookAt(new Vector3(0, -1, 0));\n    this.add(cameraNY);\n    const cameraPZ = new PerspectiveCamera(fov, aspect, near, far);\n    cameraPZ.layers = this.layers;\n    cameraPZ.up.set(0, -1, 0);\n    cameraPZ.lookAt(new Vector3(0, 0, 1));\n    this.add(cameraPZ);\n    const cameraNZ = new PerspectiveCamera(fov, aspect, near, far);\n    cameraNZ.layers = this.layers;\n    cameraNZ.up.set(0, -1, 0);\n    cameraNZ.lookAt(new Vector3(0, 0, -1));\n    this.add(cameraNZ);\n  }\n  update(renderer, scene) {\n    if (this.parent === null)\n      this.updateMatrixWorld();\n    const renderTarget = this.renderTarget;\n    const [cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ] = this.children;\n    const currentRenderTarget = renderer.getRenderTarget();\n    const currentToneMapping = renderer.toneMapping;\n    const currentXrEnabled = renderer.xr.enabled;\n    renderer.toneMapping = NoToneMapping;\n    renderer.xr.enabled = false;\n    const generateMipmaps = renderTarget.texture.generateMipmaps;\n    renderTarget.texture.generateMipmaps = false;\n    renderer.setRenderTarget(renderTarget, 0);\n    renderer.render(scene, cameraPX);\n    renderer.setRenderTarget(renderTarget, 1);\n    renderer.render(scene, cameraNX);\n    renderer.setRenderTarget(renderTarget, 2);\n    renderer.render(scene, cameraPY);\n    renderer.setRenderTarget(renderTarget, 3);\n    renderer.render(scene, cameraNY);\n    renderer.setRenderTarget(renderTarget, 4);\n    renderer.render(scene, cameraPZ);\n    renderTarget.texture.generateMipmaps = generateMipmaps;\n    renderer.setRenderTarget(renderTarget, 5);\n    renderer.render(scene, cameraNZ);\n    renderer.setRenderTarget(currentRenderTarget);\n    renderer.toneMapping = currentToneMapping;\n    renderer.xr.enabled = currentXrEnabled;\n    renderTarget.texture.needsPMREMUpdate = true;\n  }\n}\nclass CubeTexture extends Texture {\n  constructor(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding) {\n    images = images !== void 0 ? images : [];\n    mapping = mapping !== void 0 ? mapping : CubeReflectionMapping;\n    super(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n    this.isCubeTexture = true;\n    this.flipY = false;\n  }\n  get images() {\n    return this.image;\n  }\n  set images(value) {\n    this.image = value;\n  }\n}\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n  constructor(size, options = {}) {\n    super(size, size, options);\n    this.isWebGLCubeRenderTarget = true;\n    const image = { width: size, height: size, depth: 1 };\n    const images = [image, image, image, image, image, image];\n    this.texture = new CubeTexture(images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding);\n    this.texture.isRenderTargetTexture = true;\n    this.texture.generateMipmaps = options.generateMipmaps !== void 0 ? options.generateMipmaps : false;\n    this.texture.minFilter = options.minFilter !== void 0 ? options.minFilter : LinearFilter;\n  }\n  fromEquirectangularTexture(renderer, texture) {\n    this.texture.type = texture.type;\n    this.texture.encoding = texture.encoding;\n    this.texture.generateMipmaps = texture.generateMipmaps;\n    this.texture.minFilter = texture.minFilter;\n    this.texture.magFilter = texture.magFilter;\n    const shader = {\n      uniforms: {\n        tEquirect: { value: null }\n      },\n      vertexShader: `\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include <begin_vertex>\n\t\t\t\t\t#include <project_vertex>\n\n\t\t\t\t}\n\t\t\t`,\n      fragmentShader: `\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include <common>\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n    };\n    const geometry = new BoxGeometry(5, 5, 5);\n    const material = new ShaderMaterial({\n      name: \"CubemapFromEquirect\",\n      uniforms: cloneUniforms(shader.uniforms),\n      vertexShader: shader.vertexShader,\n      fragmentShader: shader.fragmentShader,\n      side: BackSide,\n      blending: NoBlending\n    });\n    material.uniforms.tEquirect.value = texture;\n    const mesh = new Mesh(geometry, material);\n    const currentMinFilter = texture.minFilter;\n    if (texture.minFilter === LinearMipmapLinearFilter)\n      texture.minFilter = LinearFilter;\n    const camera = new CubeCamera(1, 10, this);\n    camera.update(renderer, mesh);\n    texture.minFilter = currentMinFilter;\n    mesh.geometry.dispose();\n    mesh.material.dispose();\n    return this;\n  }\n  clear(renderer, color, depth, stencil) {\n    const currentRenderTarget = renderer.getRenderTarget();\n    for (let i = 0; i < 6; i++) {\n      renderer.setRenderTarget(this, i);\n      renderer.clear(color, depth, stencil);\n    }\n    renderer.setRenderTarget(currentRenderTarget);\n  }\n}\nconst _vector1 = /* @__PURE__ */ new Vector3();\nconst _vector2 = /* @__PURE__ */ new Vector3();\nconst _normalMatrix = /* @__PURE__ */ new Matrix3();\nclass Plane {\n  constructor(normal = new Vector3(1, 0, 0), constant = 0) {\n    this.isPlane = true;\n    this.normal = normal;\n    this.constant = constant;\n  }\n  set(normal, constant) {\n    this.normal.copy(normal);\n    this.constant = constant;\n    return this;\n  }\n  setComponents(x, y, z, w) {\n    this.normal.set(x, y, z);\n    this.constant = w;\n    return this;\n  }\n  setFromNormalAndCoplanarPoint(normal, point) {\n    this.normal.copy(normal);\n    this.constant = -point.dot(this.normal);\n    return this;\n  }\n  setFromCoplanarPoints(a, b, c) {\n    const normal = _vector1.subVectors(c, b).cross(_vector2.subVectors(a, b)).normalize();\n    this.setFromNormalAndCoplanarPoint(normal, a);\n    return this;\n  }\n  copy(plane) {\n    this.normal.copy(plane.normal);\n    this.constant = plane.constant;\n    return this;\n  }\n  normalize() {\n    const inverseNormalLength = 1 / this.normal.length();\n    this.normal.multiplyScalar(inverseNormalLength);\n    this.constant *= inverseNormalLength;\n    return this;\n  }\n  negate() {\n    this.constant *= -1;\n    this.normal.negate();\n    return this;\n  }\n  distanceToPoint(point) {\n    return this.normal.dot(point) + this.constant;\n  }\n  distanceToSphere(sphere) {\n    return this.distanceToPoint(sphere.center) - sphere.radius;\n  }\n  projectPoint(point, target) {\n    return target.copy(this.normal).multiplyScalar(-this.distanceToPoint(point)).add(point);\n  }\n  intersectLine(line, target) {\n    const direction = line.delta(_vector1);\n    const denominator = this.normal.dot(direction);\n    if (denominator === 0) {\n      if (this.distanceToPoint(line.start) === 0) {\n        return target.copy(line.start);\n      }\n      return null;\n    }\n    const t = -(line.start.dot(this.normal) + this.constant) / denominator;\n    if (t < 0 || t > 1) {\n      return null;\n    }\n    return target.copy(direction).multiplyScalar(t).add(line.start);\n  }\n  intersectsLine(line) {\n    const startSign = this.distanceToPoint(line.start);\n    const endSign = this.distanceToPoint(line.end);\n    return startSign < 0 && endSign > 0 || endSign < 0 && startSign > 0;\n  }\n  intersectsBox(box) {\n    return box.intersectsPlane(this);\n  }\n  intersectsSphere(sphere) {\n    return sphere.intersectsPlane(this);\n  }\n  coplanarPoint(target) {\n    return target.copy(this.normal).multiplyScalar(-this.constant);\n  }\n  applyMatrix4(matrix, optionalNormalMatrix) {\n    const normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix(matrix);\n    const referencePoint = this.coplanarPoint(_vector1).applyMatrix4(matrix);\n    const normal = this.normal.applyMatrix3(normalMatrix).normalize();\n    this.constant = -referencePoint.dot(normal);\n    return this;\n  }\n  translate(offset) {\n    this.constant -= offset.dot(this.normal);\n    return this;\n  }\n  equals(plane) {\n    return plane.normal.equals(this.normal) && plane.constant === this.constant;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nconst _sphere$2 = /* @__PURE__ */ new Sphere();\nconst _vector$7 = /* @__PURE__ */ new Vector3();\nclass Frustum {\n  constructor(p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane()) {\n    this.planes = [p0, p1, p2, p3, p4, p5];\n  }\n  set(p0, p1, p2, p3, p4, p5) {\n    const planes = this.planes;\n    planes[0].copy(p0);\n    planes[1].copy(p1);\n    planes[2].copy(p2);\n    planes[3].copy(p3);\n    planes[4].copy(p4);\n    planes[5].copy(p5);\n    return this;\n  }\n  copy(frustum) {\n    const planes = this.planes;\n    for (let i = 0; i < 6; i++) {\n      planes[i].copy(frustum.planes[i]);\n    }\n    return this;\n  }\n  setFromProjectionMatrix(m) {\n    const planes = this.planes;\n    const me = m.elements;\n    const me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3];\n    const me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7];\n    const me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11];\n    const me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15];\n    planes[0].setComponents(me3 - me0, me7 - me4, me11 - me8, me15 - me12).normalize();\n    planes[1].setComponents(me3 + me0, me7 + me4, me11 + me8, me15 + me12).normalize();\n    planes[2].setComponents(me3 + me1, me7 + me5, me11 + me9, me15 + me13).normalize();\n    planes[3].setComponents(me3 - me1, me7 - me5, me11 - me9, me15 - me13).normalize();\n    planes[4].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize();\n    planes[5].setComponents(me3 + me2, me7 + me6, me11 + me10, me15 + me14).normalize();\n    return this;\n  }\n  intersectsObject(object) {\n    const geometry = object.geometry;\n    if (geometry.boundingSphere === null)\n      geometry.computeBoundingSphere();\n    _sphere$2.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld);\n    return this.intersectsSphere(_sphere$2);\n  }\n  intersectsSprite(sprite) {\n    _sphere$2.center.set(0, 0, 0);\n    _sphere$2.radius = 0.7071067811865476;\n    _sphere$2.applyMatrix4(sprite.matrixWorld);\n    return this.intersectsSphere(_sphere$2);\n  }\n  intersectsSphere(sphere) {\n    const planes = this.planes;\n    const center = sphere.center;\n    const negRadius = -sphere.radius;\n    for (let i = 0; i < 6; i++) {\n      const distance = planes[i].distanceToPoint(center);\n      if (distance < negRadius) {\n        return false;\n      }\n    }\n    return true;\n  }\n  intersectsBox(box) {\n    const planes = this.planes;\n    for (let i = 0; i < 6; i++) {\n      const plane = planes[i];\n      _vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n      _vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n      _vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n      if (plane.distanceToPoint(_vector$7) < 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n  containsPoint(point) {\n    const planes = this.planes;\n    for (let i = 0; i < 6; i++) {\n      if (planes[i].distanceToPoint(point) < 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nfunction WebGLAnimation() {\n  let context = null;\n  let isAnimating = false;\n  let animationLoop = null;\n  let requestId = null;\n  function onAnimationFrame(time, frame) {\n    animationLoop(time, frame);\n    requestId = context.requestAnimationFrame(onAnimationFrame);\n  }\n  return {\n    start: function() {\n      if (isAnimating === true)\n        return;\n      if (animationLoop === null)\n        return;\n      requestId = context.requestAnimationFrame(onAnimationFrame);\n      isAnimating = true;\n    },\n    stop: function() {\n      context.cancelAnimationFrame(requestId);\n      isAnimating = false;\n    },\n    setAnimationLoop: function(callback) {\n      animationLoop = callback;\n    },\n    setContext: function(value) {\n      context = value;\n    }\n  };\n}\nfunction WebGLAttributes(gl, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  const buffers = /* @__PURE__ */ new WeakMap();\n  function createBuffer(attribute, bufferType) {\n    const array = attribute.array;\n    const usage = attribute.usage;\n    const buffer = gl.createBuffer();\n    gl.bindBuffer(bufferType, buffer);\n    gl.bufferData(bufferType, array, usage);\n    attribute.onUploadCallback();\n    let type;\n    if (array instanceof Float32Array) {\n      type = 5126;\n    } else if (array instanceof Uint16Array) {\n      if (attribute.isFloat16BufferAttribute) {\n        if (isWebGL2) {\n          type = 5131;\n        } else {\n          throw new Error(\"THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.\");\n        }\n      } else {\n        type = 5123;\n      }\n    } else if (array instanceof Int16Array) {\n      type = 5122;\n    } else if (array instanceof Uint32Array) {\n      type = 5125;\n    } else if (array instanceof Int32Array) {\n      type = 5124;\n    } else if (array instanceof Int8Array) {\n      type = 5120;\n    } else if (array instanceof Uint8Array) {\n      type = 5121;\n    } else if (array instanceof Uint8ClampedArray) {\n      type = 5121;\n    } else {\n      throw new Error(\"THREE.WebGLAttributes: Unsupported buffer data format: \" + array);\n    }\n    return {\n      buffer,\n      type,\n      bytesPerElement: array.BYTES_PER_ELEMENT,\n      version: attribute.version\n    };\n  }\n  function updateBuffer(buffer, attribute, bufferType) {\n    const array = attribute.array;\n    const updateRange = attribute.updateRange;\n    gl.bindBuffer(bufferType, buffer);\n    if (updateRange.count === -1) {\n      gl.bufferSubData(bufferType, 0, array);\n    } else {\n      if (isWebGL2) {\n        gl.bufferSubData(\n          bufferType,\n          updateRange.offset * array.BYTES_PER_ELEMENT,\n          array,\n          updateRange.offset,\n          updateRange.count\n        );\n      } else {\n        gl.bufferSubData(\n          bufferType,\n          updateRange.offset * array.BYTES_PER_ELEMENT,\n          array.subarray(updateRange.offset, updateRange.offset + updateRange.count)\n        );\n      }\n      updateRange.count = -1;\n    }\n  }\n  function get(attribute) {\n    if (attribute.isInterleavedBufferAttribute)\n      attribute = attribute.data;\n    return buffers.get(attribute);\n  }\n  function remove(attribute) {\n    if (attribute.isInterleavedBufferAttribute)\n      attribute = attribute.data;\n    const data = buffers.get(attribute);\n    if (data) {\n      gl.deleteBuffer(data.buffer);\n      buffers.delete(attribute);\n    }\n  }\n  function update(attribute, bufferType) {\n    if (attribute.isGLBufferAttribute) {\n      const cached = buffers.get(attribute);\n      if (!cached || cached.version < attribute.version) {\n        buffers.set(attribute, {\n          buffer: attribute.buffer,\n          type: attribute.type,\n          bytesPerElement: attribute.elementSize,\n          version: attribute.version\n        });\n      }\n      return;\n    }\n    if (attribute.isInterleavedBufferAttribute)\n      attribute = attribute.data;\n    const data = buffers.get(attribute);\n    if (data === void 0) {\n      buffers.set(attribute, createBuffer(attribute, bufferType));\n    } else if (data.version < attribute.version) {\n      updateBuffer(data.buffer, attribute, bufferType);\n      data.version = attribute.version;\n    }\n  }\n  return {\n    get,\n    remove,\n    update\n  };\n}\nclass PlaneGeometry extends BufferGeometry {\n  constructor(width = 1, height = 1, widthSegments = 1, heightSegments = 1) {\n    super();\n    this.type = \"PlaneGeometry\";\n    this.parameters = {\n      width,\n      height,\n      widthSegments,\n      heightSegments\n    };\n    const width_half = width / 2;\n    const height_half = height / 2;\n    const gridX = Math.floor(widthSegments);\n    const gridY = Math.floor(heightSegments);\n    const gridX1 = gridX + 1;\n    const gridY1 = gridY + 1;\n    const segment_width = width / gridX;\n    const segment_height = height / gridY;\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    for (let iy = 0; iy < gridY1; iy++) {\n      const y = iy * segment_height - height_half;\n      for (let ix = 0; ix < gridX1; ix++) {\n        const x = ix * segment_width - width_half;\n        vertices.push(x, -y, 0);\n        normals.push(0, 0, 1);\n        uvs.push(ix / gridX);\n        uvs.push(1 - iy / gridY);\n      }\n    }\n    for (let iy = 0; iy < gridY; iy++) {\n      for (let ix = 0; ix < gridX; ix++) {\n        const a = ix + gridX1 * iy;\n        const b = ix + gridX1 * (iy + 1);\n        const c = ix + 1 + gridX1 * (iy + 1);\n        const d = ix + 1 + gridX1 * iy;\n        indices.push(a, b, d);\n        indices.push(b, c, d);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  static fromJSON(data) {\n    return new PlaneGeometry(data.width, data.height, data.widthSegments, data.heightSegments);\n  }\n}\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\tuniform float alphaTest;\\n#endif\";\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\t#endif\\n#endif\";\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\tuniform sampler2D aoMap;\\n\tuniform float aoMapIntensity;\\n#endif\";\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n    float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n    float x2 = x * x;\\n    float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n    return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\tfloat a2 = pow2( alpha );\\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\tfloat a2 = pow2( alpha );\\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\tfloat alpha = pow2( roughness );\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\tfloat D = D_GGX( alpha, dotNH );\\n\treturn F * ( V * D );\\n}\\n#ifdef USE_IRIDESCENCE\\n\tvec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {\\n\t\tfloat alpha = pow2( roughness );\\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\t\tvec3 F = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );\\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\t\tfloat D = D_GGX( alpha, dotNH );\\n\t\treturn F * ( V * D );\\n\t}\\n#endif\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\tconst float LUT_SIZE = 64.0;\\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\tfloat dotNV = saturate( dot( N, V ) );\\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\tfloat l = length( f );\\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\tfloat x = dot( v1, v2 );\\n\tfloat y = abs( x );\\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\tfloat v = a / b;\\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\tvec3 lightNormal = cross( v1, v2 );\\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\tvec3 T1, T2;\\n\tT1 = normalize( V - N * dot( V, N ) );\\n\tT2 = - cross( N, T1 );\\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\tvec3 coords[ 4 ];\\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\tvec3 vectorFormFactor = vec3( 0.0 );\\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\tfloat G = G_BlinnPhong_Implicit( );\\n\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\tfloat alpha = pow2( roughness );\\n\tfloat invAlpha = 1.0 / alpha;\\n\tfloat cos2h = dotNH * dotNH;\\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\tfloat V = V_Neubelt( dotNV, dotNL );\\n\treturn sheenColor * ( D * V );\\n}\\n#endif\";\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\tconst mat3 XYZ_TO_REC709 = mat3(\\n\t\t 3.2404542, -0.9692660,  0.0556434,\\n\t\t-1.5371385,  1.8760108, -0.2040259,\\n\t\t-0.4985314,  0.0415560,  1.0572252\\n\t);\\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\t}\\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\t}\\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\t}\\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\t\txyz /= 1.0685e-7;\\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\t\treturn rgb;\\n\t}\\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\t\tvec3 I;\\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\t\tif ( cosTheta2Sq < 0.0 ) {\\n\t\t\t return vec3( 1.0 );\\n\t\t}\\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\t\tfloat R21 = R12;\\n\t\tfloat T121 = 1.0 - R12;\\n\t\tfloat phi12 = 0.0;\\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\t\tfloat phi21 = PI - phi12;\\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\t\tvec3 phi23 = vec3( 0.0 );\\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\t\tvec3 phi = vec3( phi21 ) + phi23;\\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\t\tvec3 r123 = sqrt( R123 );\\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\t\tvec3 C0 = R12 + Rs;\\n\t\tI = C0;\\n\t\tvec3 Cm = Rs - T121;\\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\\n\t\t\tCm *= r123;\\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\t\t\tI += Cm * Sm;\\n\t\t}\\n\t\treturn max( I, vec3( 0.0 ) );\\n\t}\\n#endif\";\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\tuniform sampler2D bumpMap;\\n\tuniform float bumpScale;\\n\tvec2 dHdxy_fwd() {\\n\t\tvec2 dSTdx = dFdx( vUv );\\n\t\tvec2 dSTdy = dFdy( vUv );\\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\t\treturn vec2( dBx, dBy );\\n\t}\\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\t\tvec3 vSigmaX = dFdx( surf_pos.xyz );\\n\t\tvec3 vSigmaY = dFdy( surf_pos.xyz );\\n\t\tvec3 vN = surf_norm;\\n\t\tvec3 R1 = cross( vSigmaY, vN );\\n\t\tvec3 R2 = cross( vN, vSigmaX );\\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\t}\\n#endif\";\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvec4 plane;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\t\tplane = clippingPlanes[ i ];\\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\t\tbool clipped = true;\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\t\t\tplane = clippingPlanes[ i ];\\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t\tif ( clipped ) discard;\\n\t#endif\\n#endif\";\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n#endif\";\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvClipPosition = - mvPosition.xyz;\\n#endif\";\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\tdiffuseColor.rgb *= vColor;\\n#endif\";\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\tvarying vec3 vColor;\\n#endif\";\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\tvarying vec3 vColor;\\n#endif\";\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\nvar common$1 = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\tfloat precisionSafeLength( vec3 v ) {\\n\t\tfloat maxComponent = max3( abs( v ) );\\n\t\treturn length( v / maxComponent ) * maxComponent;\\n\t}\\n#endif\\nstruct IncidentLight {\\n\tvec3 color;\\n\tvec3 direction;\\n\tbool visible;\\n};\\nstruct ReflectedLight {\\n\tvec3 directDiffuse;\\n\tvec3 directSpecular;\\n\tvec3 indirectDiffuse;\\n\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\tvec3 position;\\n\tvec3 normal;\\n\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\tmat3 tmp;\\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\treturn vec2( u, v );\\n}\";\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\t#define cubeUV_minMipLevel 4.0\\n\t#define cubeUV_minTileSize 16.0\\n\tfloat getFace( vec3 direction ) {\\n\t\tvec3 absDirection = abs( direction );\\n\t\tfloat face = - 1.0;\\n\t\tif ( absDirection.x > absDirection.z ) {\\n\t\t\tif ( absDirection.x > absDirection.y )\\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\t\t\telse\\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\t\t} else {\\n\t\t\tif ( absDirection.z > absDirection.y )\\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\t\t\telse\\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\t\t}\\n\t\treturn face;\\n\t}\\n\tvec2 getUV( vec3 direction, float face ) {\\n\t\tvec2 uv;\\n\t\tif ( face == 0.0 ) {\\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\t\t} else if ( face == 1.0 ) {\\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\t\t} else if ( face == 2.0 ) {\\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\t\t} else if ( face == 3.0 ) {\\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\t\t} else if ( face == 4.0 ) {\\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\t\t} else {\\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\t\t}\\n\t\treturn 0.5 * ( uv + 1.0 );\\n\t}\\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\t\tfloat face = getFace( direction );\\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\t\tfloat faceSize = exp2( mipInt );\\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\t\tif ( face > 2.0 ) {\\n\t\t\tuv.y += faceSize;\\n\t\t\tface -= 3.0;\\n\t\t}\\n\t\tuv.x += face * faceSize;\\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\t\t#ifdef texture2DGradEXT\\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\t\t#else\\n\t\t\treturn texture2D( envMap, uv ).rgb;\\n\t\t#endif\\n\t}\\n\t#define r0 1.0\\n\t#define v0 0.339\\n\t#define m0 - 2.0\\n\t#define r1 0.8\\n\t#define v1 0.276\\n\t#define m1 - 1.0\\n\t#define r4 0.4\\n\t#define v4 0.046\\n\t#define m4 2.0\\n\t#define r5 0.305\\n\t#define v5 0.016\\n\t#define m5 3.0\\n\t#define r6 0.21\\n\t#define v6 0.0038\\n\t#define m6 4.0\\n\tfloat roughnessToMip( float roughness ) {\\n\t\tfloat mip = 0.0;\\n\t\tif ( roughness >= r1 ) {\\n\t\t\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\t\t} else if ( roughness >= r4 ) {\\n\t\t\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\t\t} else if ( roughness >= r5 ) {\\n\t\t\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\t\t} else if ( roughness >= r6 ) {\\n\t\t\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\t\t} else {\\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\\n\t\treturn mip;\\n\t}\\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\t\tfloat mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP );\\n\t\tfloat mipF = fract( mip );\\n\t\tfloat mipInt = floor( mip );\\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\t\tif ( mipF == 0.0 ) {\\n\t\t\treturn vec4( color0, 1.0 );\\n\t\t} else {\\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\t\t}\\n\t}\\n#endif\";\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\tmat3 m = mat3( instanceMatrix );\\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\t#ifdef FLIP_SIDED\\n\t\ttransformedTangent = - transformedTangent;\\n\t#endif\\n#endif\";\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\tuniform sampler2D displacementMap;\\n\tuniform float displacementScale;\\n\tuniform float displacementBias;\\n#endif\";\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tuniform sampler2D emissiveMap;\\n#endif\";\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\nvar encodings_pars_fragment = \"vec4 LinearToLinear( in vec4 value ) {\\n\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\";\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\t#ifdef ENV_WORLDPOS\\n\t\tvec3 cameraToFrag;\\n\t\tif ( isOrthographic ) {\\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\t\t} else {\\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\t\t}\\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\t\t#else\\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\t\t#endif\\n\t#else\\n\t\tvec3 reflectVec = vReflect;\\n\t#endif\\n\t#ifdef ENVMAP_TYPE_CUBE\\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\t#else\\n\t\tvec4 envColor = vec4( 0.0 );\\n\t#endif\\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\t#elif defined( ENVMAP_BLENDING_MIX )\\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\t#elif defined( ENVMAP_BLENDING_ADD )\\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\t#endif\\n#endif\";\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\tuniform float envMapIntensity;\\n\tuniform float flipEnvMap;\\n\t#ifdef ENVMAP_TYPE_CUBE\\n\t\tuniform samplerCube envMap;\\n\t#else\\n\t\tuniform sampler2D envMap;\\n\t#endif\\n\t\\n#endif\";\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\tuniform float reflectivity;\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\t\t#define ENV_WORLDPOS\\n\t#endif\\n\t#ifdef ENV_WORLDPOS\\n\t\tvarying vec3 vWorldPosition;\\n\t\tuniform float refractionRatio;\\n\t#else\\n\t\tvarying vec3 vReflect;\\n\t#endif\\n#endif\";\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\t\t#define ENV_WORLDPOS\\n\t#endif\\n\t#ifdef ENV_WORLDPOS\\n\t\t\\n\t\tvarying vec3 vWorldPosition;\\n\t#else\\n\t\tvarying vec3 vReflect;\\n\t\tuniform float refractionRatio;\\n\t#endif\\n#endif\";\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\t#ifdef ENV_WORLDPOS\\n\t\tvWorldPosition = worldPosition.xyz;\\n\t#else\\n\t\tvec3 cameraToVertex;\\n\t\tif ( isOrthographic ) {\\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\t\t} else {\\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\t\t}\\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\\n\t\t#else\\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\t\t#endif\\n\t#endif\\n#endif\";\nvar fog_vertex = \"#ifdef USE_FOG\\n\tvFogDepth = - mvPosition.z;\\n#endif\";\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\tvarying float vFogDepth;\\n#endif\";\nvar fog_fragment = \"#ifdef USE_FOG\\n\t#ifdef FOG_EXP2\\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\t#else\\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\t#endif\\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\tuniform vec3 fogColor;\\n\tvarying float vFogDepth;\\n\t#ifdef FOG_EXP2\\n\t\tuniform float fogDensity;\\n\t#else\\n\t\tuniform float fogNear;\\n\t\tuniform float fogFar;\\n\t#endif\\n#endif\";\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\tfloat dotNL = dot( normal, lightDirection );\\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\t#ifdef USE_GRADIENTMAP\\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\\n\t#else\\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\t#endif\\n}\";\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\tuniform sampler2D lightMap;\\n\tuniform float lightMapIntensity;\\n#endif\";\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\tvLightBack = vec3( 0.0 );\\n\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );\\n#ifdef DOUBLE_SIDED\\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\t\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\\n\t\tdotNL = dot( geometry.normal, directLight.direction );\\n\t\tdirectLightColor_Diffuse = directLight.color;\\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\t\t#ifdef DOUBLE_SIDED\\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\t\t#endif\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\t\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\\n\t\tdotNL = dot( geometry.normal, directLight.direction );\\n\t\tdirectLightColor_Diffuse = directLight.color;\\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\t\t#ifdef DOUBLE_SIDED\\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\t\t#endif\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\t\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\\n\t\tdotNL = dot( geometry.normal, directLight.direction );\\n\t\tdirectLightColor_Diffuse = directLight.color;\\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\t\t#ifdef DOUBLE_SIDED\\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\t\t#endif\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\t\t#ifdef DOUBLE_SIDED\\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\\n\t\t#endif\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\";\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\tvec3 irradiance = ambientLightColor;\\n\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\t\tif ( cutoffDistance > 0.0 ) {\\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\t\t}\\n\t\treturn distanceFalloff;\\n\t#else\\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\t\t}\\n\t\treturn 1.0;\\n\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\tstruct DirectionalLight {\\n\t\tvec3 direction;\\n\t\tvec3 color;\\n\t};\\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\t\tlight.color = directionalLight.color;\\n\t\tlight.direction = directionalLight.direction;\\n\t\tlight.visible = true;\\n\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\tstruct PointLight {\\n\t\tvec3 position;\\n\t\tvec3 color;\\n\t\tfloat distance;\\n\t\tfloat decay;\\n\t};\\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\t\tvec3 lVector = pointLight.position - geometry.position;\\n\t\tlight.direction = normalize( lVector );\\n\t\tfloat lightDistance = length( lVector );\\n\t\tlight.color = pointLight.color;\\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\tstruct SpotLight {\\n\t\tvec3 position;\\n\t\tvec3 direction;\\n\t\tvec3 color;\\n\t\tfloat distance;\\n\t\tfloat decay;\\n\t\tfloat coneCos;\\n\t\tfloat penumbraCos;\\n\t};\\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\t\tvec3 lVector = spotLight.position - geometry.position;\\n\t\tlight.direction = normalize( lVector );\\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\t\tif ( spotAttenuation > 0.0 ) {\\n\t\t\tfloat lightDistance = length( lVector );\\n\t\t\tlight.color = spotLight.color * spotAttenuation;\\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\t\t} else {\\n\t\t\tlight.color = vec3( 0.0 );\\n\t\t\tlight.visible = false;\\n\t\t}\\n\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\tstruct RectAreaLight {\\n\t\tvec3 color;\\n\t\tvec3 position;\\n\t\tvec3 halfWidth;\\n\t\tvec3 halfHeight;\\n\t};\\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\tstruct HemisphereLight {\\n\t\tvec3 direction;\\n\t\tvec3 skyColor;\\n\t\tvec3 groundColor;\\n\t};\\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\t\treturn irradiance;\\n\t}\\n#endif\";\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\\n\t\t#else\\n\t\t\treturn vec3( 0.0 );\\n\t\t#endif\\n\t}\\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\t\t\treturn envMapColor.rgb * envMapIntensity;\\n\t\t#else\\n\t\t\treturn vec3( 0.0 );\\n\t\t#endif\\n\t}\\n#endif\";\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\t(0)\";\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\tvec3 diffuseColor;\\n\tvec3 specularColor;\\n\tfloat specularShininess;\\n\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\t(0)\";\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\t#ifdef SPECULAR\\n\t\tfloat specularIntensityFactor = specularIntensity;\\n\t\tvec3 specularColorFactor = specularColor;\\n\t\t#ifdef USE_SPECULARINTENSITYMAP\\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\t\t#endif\\n\t\t#ifdef USE_SPECULARCOLORMAP\\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\\n\t\t#endif\\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\t#else\\n\t\tfloat specularIntensityFactor = 1.0;\\n\t\tvec3 specularColorFactor = vec3( 1.0 );\\n\t\tmaterial.specularF90 = 1.0;\\n\t#endif\\n\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\tmaterial.clearcoat = clearcoat;\\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\tmaterial.clearcoatF90 = 1.0;\\n\t#ifdef USE_CLEARCOATMAP\\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\t#endif\\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\t#endif\\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\tmaterial.clearcoatRoughness += geometryRoughness;\\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\tmaterial.iridescence = iridescence;\\n\tmaterial.iridescenceIOR = iridescenceIOR;\\n\t#ifdef USE_IRIDESCENCEMAP\\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\\n\t#endif\\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\\n\t#else\\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\tmaterial.sheenColor = sheenColor;\\n\t#ifdef USE_SHEENCOLORMAP\\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\\n\t#endif\\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\t#ifdef USE_SHEENROUGHNESSMAP\\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\t#endif\\n#endif\";\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\tvec3 diffuseColor;\\n\tfloat roughness;\\n\tvec3 specularColor;\\n\tfloat specularF90;\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat clearcoat;\\n\t\tfloat clearcoatRoughness;\\n\t\tvec3 clearcoatF0;\\n\t\tfloat clearcoatF90;\\n\t#endif\\n\t#ifdef USE_IRIDESCENCE\\n\t\tfloat iridescence;\\n\t\tfloat iridescenceIOR;\\n\t\tfloat iridescenceThickness;\\n\t\tvec3 iridescenceFresnel;\\n\t\tvec3 iridescenceF0;\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tvec3 sheenColor;\\n\t\tfloat sheenRoughness;\\n\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec3 sheenSpecular = vec3( 0.0 );\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) {\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat r2 = roughness * roughness;\\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\tvec4 r = roughness * c0 + c1;\\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\t#ifdef USE_IRIDESCENCE\\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\t#else\\n\t\tvec3 Fr = specularColor;\\n\t#endif\\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\tfloat Ess = fab.x + fab.y;\\n\tfloat Ems = 1.0 - Ess;\\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\tsingleScatter += FssEss;\\n\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\t\tvec3 normal = geometry.normal;\\n\t\tvec3 viewDir = geometry.viewDir;\\n\t\tvec3 position = geometry.position;\\n\t\tvec3 lightPos = rectAreaLight.position;\\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\t\tvec3 lightColor = rectAreaLight.color;\\n\t\tfloat roughness = material.roughness;\\n\t\tvec3 rectCoords[ 4 ];\\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\t\tvec4 t1 = texture2D( ltc_1, uv );\\n\t\tvec4 t2 = texture2D( ltc_2, uv );\\n\t\tmat3 mInv = mat3(\\n\t\t\tvec3( t1.x, 0, t1.y ),\\n\t\t\tvec3(    0, 1,    0 ),\\n\t\t\tvec3( t1.z, 0, t1.w )\\n\t\t);\\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\t#endif\\n\t#ifdef USE_IRIDESCENCE\\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\\n\t#else\\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\t#endif\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\t#ifdef USE_CLEARCOAT\\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\\n\t#endif\\n\tvec3 singleScattering = vec3( 0.0 );\\n\tvec3 multiScattering = vec3( 0.0 );\\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\t#ifdef USE_IRIDESCENCE\\n\t\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\t#else\\n\t\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\t#endif\\n\tvec3 totalScattering = singleScattering + multiScattering;\\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_Physical\\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\\n\tif ( material.iridescenceThickness == 0.0 ) {\\n\t\tmaterial.iridescence = 0.0;\\n\t} else {\\n\t\tmaterial.iridescence = saturate( material.iridescence );\\n\t}\\n\tif ( material.iridescence > 0.0 ) {\\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\tPointLight pointLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\tPointLightShadow pointLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\t\tpointLight = pointLights[ i ];\\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\t\tpointLightShadow = pointLightShadows[ i ];\\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\tSpotLight spotLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\tSpotLightShadow spotLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\t\tspotLight = spotLights[ i ];\\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\t\tspotLightShadow = spotLightShadows[ i ];\\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\tDirectionalLight directionalLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\tDirectionalLightShadow directionalLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\t\tdirectionalLight = directionalLights[ i ];\\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\tRectAreaLight rectAreaLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\t\trectAreaLight = rectAreaLights[ i ];\\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\tvec3 iblIrradiance = vec3( 0.0 );\\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\tvec3 radiance = vec3( 0.0 );\\n\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\t#ifdef USE_LIGHTMAP\\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\t\tirradiance += lightMapIrradiance;\\n\t#endif\\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\t#ifdef USE_CLEARCOAT\\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\t#endif\\n#endif\";\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\tuniform float logDepthBufFC;\\n\tvarying float vFragDepth;\\n\tvarying float vIsPerspective;\\n#endif\";\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\t#ifdef USE_LOGDEPTHBUF_EXT\\n\t\tvarying float vFragDepth;\\n\t\tvarying float vIsPerspective;\\n\t#else\\n\t\tuniform float logDepthBufFC;\\n\t#endif\\n#endif\";\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\t#ifdef USE_LOGDEPTHBUF_EXT\\n\t\tvFragDepth = 1.0 + gl_Position.w;\\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\t#else\\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\t\t\tgl_Position.z *= gl_Position.w;\\n\t\t}\\n\t#endif\\n#endif\";\nvar map_fragment = \"#ifdef USE_MAP\\n\tvec4 sampledDiffuseColor = texture2D( map, vUv );\\n\t#ifdef DECODE_VIDEO_TEXTURE\\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\t#endif\\n\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\";\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\tuniform sampler2D metalnessMap;\\n#endif\";\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\tvColor *= morphTargetBaseInfluence;\\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\t#if defined( USE_COLOR_ALPHA )\\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\t\t#elif defined( USE_COLOR )\\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\t\t#endif\\n\t}\\n#endif\";\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\tobjectNormal *= morphTargetBaseInfluence;\\n\t#ifdef MORPHTARGETS_TEXTURE\\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\t\t}\\n\t#else\\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\t#endif\\n#endif\";\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\tuniform float morphTargetBaseInfluence;\\n\t#ifdef MORPHTARGETS_TEXTURE\\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\t\tuniform sampler2DArray morphTargetsTexture;\\n\t\tuniform ivec2 morphTargetsTextureSize;\\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\t\t}\\n\t#else\\n\t\t#ifndef USE_MORPHNORMALS\\n\t\t\tuniform float morphTargetInfluences[ 8 ];\\n\t\t#else\\n\t\t\tuniform float morphTargetInfluences[ 4 ];\\n\t\t#endif\\n\t#endif\\n#endif\";\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\ttransformed *= morphTargetBaseInfluence;\\n\t#ifdef MORPHTARGETS_TEXTURE\\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\t\t}\\n\t#else\\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\t\t#ifndef USE_MORPHNORMALS\\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\t\t#endif\\n\t#endif\\n#endif\";\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\tvec3 normal = normalize( vNormal );\\n\t#ifdef DOUBLE_SIDED\\n\t\tnormal = normal * faceDirection;\\n\t#endif\\n\t#ifdef USE_TANGENT\\n\t\tvec3 tangent = normalize( vTangent );\\n\t\tvec3 bitangent = normalize( vBitangent );\\n\t\t#ifdef DOUBLE_SIDED\\n\t\t\ttangent = tangent * faceDirection;\\n\t\t\tbitangent = bitangent * faceDirection;\\n\t\t#endif\\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\t\t#endif\\n\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\t#ifdef FLIP_SIDED\\n\t\tnormal = - normal;\\n\t#endif\\n\t#ifdef DOUBLE_SIDED\\n\t\tnormal = normal * faceDirection;\\n\t#endif\\n\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\tmapN.xy *= normalScale;\\n\t#ifdef USE_TANGENT\\n\t\tnormal = normalize( vTBN * mapN );\\n\t#else\\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\t#endif\\n#elif defined( USE_BUMPMAP )\\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n\t#ifdef USE_TANGENT\\n\t\tvarying vec3 vTangent;\\n\t\tvarying vec3 vBitangent;\\n\t#endif\\n#endif\";\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n\t#ifdef USE_TANGENT\\n\t\tvarying vec3 vTangent;\\n\t\tvarying vec3 vBitangent;\\n\t#endif\\n#endif\";\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\tvNormal = normalize( transformedNormal );\\n\t#ifdef USE_TANGENT\\n\t\tvTangent = normalize( transformedTangent );\\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\t#endif\\n#endif\";\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\tuniform sampler2D normalMap;\\n\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\\n\t\tvec2 st0 = dFdx( vUv.st );\\n\t\tvec2 st1 = dFdy( vUv.st );\\n\t\tvec3 N = surf_norm;\\n\t\tvec3 q1perp = cross( q1, N );\\n\t\tvec3 q0perp = cross( N, q0 );\\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\t}\\n#endif\";\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\t#ifdef USE_TANGENT\\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\t#else\\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\t#endif\\n#endif\";\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\tuniform sampler2D clearcoatNormalMap;\\n\tuniform vec2 clearcoatNormalScale;\\n#endif\";\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\nvar dithering_fragment = \"#ifdef DITHERING\\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\tvec3 dithering( vec3 color ) {\\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\t\treturn color + dither_shift_RGB;\\n\t}\\n#endif\";\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\troughnessFactor *= texelRoughness.g;\\n#endif\";\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\tuniform sampler2D roughnessMap;\\n#endif\";\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tstruct DirectionalLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tstruct SpotLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tstruct PointLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t\tfloat shadowCameraNear;\\n\t\t\tfloat shadowCameraFar;\\n\t\t};\\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\t#endif\\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\t}\\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\t}\\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\t\tfloat occlusion = 1.0;\\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\t\tfloat hard_shadow = step( compare , distribution.x );\\n\t\tif (hard_shadow != 1.0 ) {\\n\t\t\tfloat distance = compare - distribution.x ;\\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\t\t}\\n\t\treturn occlusion;\\n\t}\\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\t\tfloat shadow = 1.0;\\n\t\tshadowCoord.xyz /= shadowCoord.w;\\n\t\tshadowCoord.z += shadowBias;\\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\t\tbool inFrustum = all( inFrustumVec );\\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\t\tbool frustumTest = all( frustumTestVec );\\n\t\tif ( frustumTest ) {\\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\\n\t\t\tfloat dx2 = dx0 / 2.0;\\n\t\t\tfloat dy2 = dy0 / 2.0;\\n\t\t\tfloat dx3 = dx1 / 2.0;\\n\t\t\tfloat dy3 = dy1 / 2.0;\\n\t\t\tshadow = (\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\t\t\t) * ( 1.0 / 17.0 );\\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\t\t\tfloat dx = texelSize.x;\\n\t\t\tfloat dy = texelSize.y;\\n\t\t\tvec2 uv = shadowCoord.xy;\\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\t\t\tuv -= f * texelSize;\\n\t\t\tshadow = (\\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\t\t\t\t\t f.x ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\t\t\t\t\t f.x ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t f.y ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t f.y ) +\\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\t\t\t\t\t\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\t\t\t\t\t\t  f.x ),\\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\t\t\t\t\t\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t\t  f.x ),\\n\t\t\t\t\t f.y )\\n\t\t\t) * ( 1.0 / 9.0 );\\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\t\t#else\\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\t\t#endif\\n\t\t}\\n\t\treturn shadow;\\n\t}\\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\t\tvec3 absV = abs( v );\\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\t\tabsV *= scaleToCube;\\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\t\tvec2 planar = v.xy;\\n\t\tfloat almostATexel = 1.5 * texelSizeY;\\n\t\tfloat almostOne = 1.0 - almostATexel;\\n\t\tif ( absV.z >= almostOne ) {\\n\t\t\tif ( v.z > 0.0 )\\n\t\t\t\tplanar.x = 4.0 - v.x;\\n\t\t} else if ( absV.x >= almostOne ) {\\n\t\t\tfloat signX = sign( v.x );\\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\\n\t\t} else if ( absV.y >= almostOne ) {\\n\t\t\tfloat signY = sign( v.y );\\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\t\t\tplanar.y = v.z * signY - 2.0;\\n\t\t}\\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\t}\\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\t\tvec3 lightToPosition = shadowCoord.xyz;\\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\\n\t\tvec3 bd3D = normalize( lightToPosition );\\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\t\t\treturn (\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\t\t\t) * ( 1.0 / 9.0 );\\n\t\t#else\\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\t\t#endif\\n\t}\\n#endif\";\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tstruct DirectionalLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tstruct SpotLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tstruct PointLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t\tfloat shadowCameraNear;\\n\t\t\tfloat shadowCameraFar;\\n\t\t};\\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\t#endif\\n#endif\";\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\t\tvec4 shadowWorldPosition;\\n\t#endif\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n#endif\";\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\tfloat shadow = 1.0;\\n\t#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\tDirectionalLightShadow directionalLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\t\tdirectionalLight = directionalLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\tSpotLightShadow spotLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\t\tspotLight = spotLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\tPointLightShadow pointLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\t\tpointLight = pointLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#endif\\n\treturn shadow;\\n}\";\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\tuniform mat4 bindMatrix;\\n\tuniform mat4 bindMatrixInverse;\\n\tuniform highp sampler2D boneTexture;\\n\tuniform int boneTextureSize;\\n\tmat4 getBoneMatrix( const in float i ) {\\n\t\tfloat j = i * 4.0;\\n\t\tfloat x = mod( j, float( boneTextureSize ) );\\n\t\tfloat y = floor( j / float( boneTextureSize ) );\\n\t\tfloat dx = 1.0 / float( boneTextureSize );\\n\t\tfloat dy = 1.0 / float( boneTextureSize );\\n\t\ty = dy * ( y + 0.5 );\\n\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\t\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\t\treturn bone;\\n\t}\\n#endif\";\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\tvec4 skinned = vec4( 0.0 );\\n\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\tmat4 skinMatrix = mat4( 0.0 );\\n\tskinMatrix += skinWeight.x * boneMatX;\\n\tskinMatrix += skinWeight.y * boneMatY;\\n\tskinMatrix += skinWeight.z * boneMatZ;\\n\tskinMatrix += skinWeight.w * boneMatW;\\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\t#ifdef USE_TANGENT\\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\t#endif\\n#endif\";\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\tspecularStrength = texelSpecular.r;\\n#else\\n\tspecularStrength = 1.0;\\n#endif\";\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\tuniform sampler2D specularMap;\\n#endif\";\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\tcolor *= toneMappingExposure;\\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\tcolor *= toneMappingExposure;\\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\tconst mat3 ACESInputMat = mat3(\\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\\n\t);\\n\tconst mat3 ACESOutputMat = mat3(\\n\t\tvec3(  1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108,  1.10813, -0.07276 ),\\n\t\tvec3( -0.07367, -0.00605,  1.07602 )\\n\t);\\n\tcolor *= toneMappingExposure / 0.6;\\n\tcolor = ACESInputMat * color;\\n\tcolor = RRTAndODTFit( color );\\n\tcolor = ACESOutputMat * color;\\n\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\tfloat transmissionAlpha = 1.0;\\n\tfloat transmissionFactor = transmission;\\n\tfloat thicknessFactor = thickness;\\n\t#ifdef USE_TRANSMISSIONMAP\\n\t\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\\n\t#endif\\n\t#ifdef USE_THICKNESSMAP\\n\t\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\\n\t#endif\\n\tvec3 pos = vWorldPosition;\\n\tvec3 v = normalize( cameraPosition - pos );\\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\tvec4 transmission = getIBLVolumeRefraction(\\n\t\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\\n\t\tattenuationColor, attenuationDistance );\\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\\n\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\\n#endif\";\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\tuniform float transmission;\\n\tuniform float thickness;\\n\tuniform float attenuationDistance;\\n\tuniform vec3 attenuationColor;\\n\t#ifdef USE_TRANSMISSIONMAP\\n\t\tuniform sampler2D transmissionMap;\\n\t#endif\\n\t#ifdef USE_THICKNESSMAP\\n\t\tuniform sampler2D thicknessMap;\\n\t#endif\\n\tuniform vec2 transmissionSamplerSize;\\n\tuniform sampler2D transmissionSamplerMap;\\n\tuniform mat4 modelMatrix;\\n\tuniform mat4 projectionMatrix;\\n\tvarying vec3 vWorldPosition;\\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\t\tvec3 modelScale;\\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\\n\t}\\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\t}\\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\t\t#ifdef texture2DLodEXT\\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\t\t#else\\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\t\t#endif\\n\t}\\n\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\t\tif ( attenuationDistance == 0.0 ) {\\n\t\t\treturn radiance;\\n\t\t} else {\\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\\n\t\t}\\n\t}\\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\t\tvec3 refractedRayExit = position + transmissionRay;\\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\t\trefractionCoords += 1.0;\\n\t\trefractionCoords /= 2.0;\\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\t}\\n#endif\";\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\tvarying vec2 vUv;\\n#endif\";\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\t#ifdef UVS_VERTEX_ONLY\\n\t\tvec2 vUv;\\n\t#else\\n\t\tvarying vec2 vUv;\\n\t#endif\\n\tuniform mat3 uvTransform;\\n#endif\";\nvar uv_vertex = \"#ifdef USE_UV\\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tvarying vec2 vUv2;\\n#endif\";\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tattribute vec2 uv2;\\n\tvarying vec2 vUv2;\\n\tuniform mat3 uv2Transform;\\n#endif\";\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\\n\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\t#ifdef USE_INSTANCING\\n\t\tworldPosition = instanceMatrix * worldPosition;\\n\t#endif\\n\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\nconst vertex$g = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\nconst fragment$g = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\tgl_FragColor = texture2D( t2D, vUv );\\n\t#ifdef DECODE_VIDEO_TEXTURE\\n\t\tgl_FragColor = vec4( mix( pow( gl_FragColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), gl_FragColor.rgb * 0.0773993808, vec3( lessThanEqual( gl_FragColor.rgb, vec3( 0.04045 ) ) ) ), gl_FragColor.w );\\n\t#endif\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n}\";\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\tvWorldDirection = transformDirection( position, modelMatrix );\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n\tgl_Position.z = gl_Position.w;\\n}\";\nconst fragment$f = \"#include <envmap_common_pars_fragment>\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include <cube_uv_reflection_fragment>\\nvoid main() {\\n\tvec3 vReflect = vWorldDirection;\\n\t#include <envmap_fragment>\\n\tgl_FragColor = envColor;\\n\tgl_FragColor.a *= opacity;\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n}\";\nconst vertex$e = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <skinbase_vertex>\\n\t#ifdef USE_DISPLACEMENTMAP\\n\t\t#include <beginnormal_vertex>\\n\t\t#include <morphnormal_vertex>\\n\t\t#include <skinnormal_vertex>\\n\t#endif\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvHighPrecisionZW = gl_Position.zw;\\n}\";\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\tuniform float opacity;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( 1.0 );\\n\t#if DEPTH_PACKING == 3200\\n\t\tdiffuseColor.a = opacity;\\n\t#endif\\n\t#include <map_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <logdepthbuf_fragment>\\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\t#if DEPTH_PACKING == 3200\\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\t#elif DEPTH_PACKING == 3201\\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\t#endif\\n}\";\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <skinbase_vertex>\\n\t#ifdef USE_DISPLACEMENTMAP\\n\t\t#include <beginnormal_vertex>\\n\t\t#include <morphnormal_vertex>\\n\t\t#include <skinnormal_vertex>\\n\t#endif\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvWorldPosition = worldPosition.xyz;\\n}\";\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( 1.0 );\\n\t#include <map_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\tfloat dist = length( vWorldPosition - referencePosition );\\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\tdist = saturate( dist );\\n\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\tvWorldDirection = transformDirection( position, modelMatrix );\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n}\";\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\tvec3 direction = normalize( vWorldDirection );\\n\tvec2 sampleUV = equirectUv( direction );\\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n}\";\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\tvLineDistance = scale * lineDistance;\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <fog_vertex>\\n}\";\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\t\tdiscard;\\n\t}\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <color_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n}\";\nconst vertex$a = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\t\t#include <beginnormal_vertex>\\n\t\t#include <morphnormal_vertex>\\n\t\t#include <skinbase_vertex>\\n\t\t#include <skinnormal_vertex>\\n\t\t#include <defaultnormal_vertex>\\n\t#endif\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <envmap_vertex>\\n\t#include <fog_vertex>\\n}\";\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <fog_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <specularmap_fragment>\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\t#ifdef USE_LIGHTMAP\\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\t#else\\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\t#endif\\n\t#include <aomap_fragment>\\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\t#include <envmap_fragment>\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\tvarying vec3 vLightBack;\\n\tvarying vec3 vIndirectBack;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <envmap_vertex>\\n\t#include <lights_lambert_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\nconst fragment$9 = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\tvarying vec3 vLightBack;\\n\tvarying vec3 vIndirectBack;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <fog_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <specularmap_fragment>\\n\t#include <emissivemap_fragment>\\n\t#ifdef DOUBLE_SIDED\\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\t#else\\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\\n\t#endif\\n\t#include <lightmap_fragment>\\n\treflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );\\n\t#ifdef DOUBLE_SIDED\\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\t#else\\n\t\treflectedLight.directDiffuse = vLightFront;\\n\t#endif\\n\treflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\t#include <envmap_fragment>\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <color_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <fog_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n}\";\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <normal_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\tvec3 viewDir = normalize( vViewPosition );\\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\tvec3 y = cross( viewDir, x );\\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\t#ifdef USE_MATCAP\\n\t\tvec4 matcapColor = texture2D( matcap, uv );\\n\t#else\\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\t#endif\\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\tvarying vec3 vViewPosition;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\tvarying vec3 vViewPosition;\\n#endif\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <normal_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\t#include <logdepthbuf_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\t#ifdef OPAQUE\\n\t\tgl_FragColor.a = 1.0;\\n\t#endif\\n}\";\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <envmap_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <specularmap_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_phong_fragment>\\n\t#include <lights_fragment_begin>\\n\t#include <lights_fragment_maps>\\n\t#include <lights_fragment_end>\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\t#include <envmap_fragment>\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\tvarying vec3 vWorldPosition;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n#ifdef USE_TRANSMISSION\\n\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\t#define IOR\\n\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\tuniform float specularIntensity;\\n\tuniform vec3 specularColor;\\n\t#ifdef USE_SPECULARINTENSITYMAP\\n\t\tuniform sampler2D specularIntensityMap;\\n\t#endif\\n\t#ifdef USE_SPECULARCOLORMAP\\n\t\tuniform sampler2D specularColorMap;\\n\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\tuniform float clearcoat;\\n\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\tuniform float iridescence;\\n\tuniform float iridescenceIOR;\\n\tuniform float iridescenceThicknessMinimum;\\n\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\tuniform vec3 sheenColor;\\n\tuniform float sheenRoughness;\\n\t#ifdef USE_SHEENCOLORMAP\\n\t\tuniform sampler2D sheenColorMap;\\n\t#endif\\n\t#ifdef USE_SHEENROUGHNESSMAP\\n\t\tuniform sampler2D sheenRoughnessMap;\\n\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <bsdfs>\\n#include <iridescence_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_physical_pars_fragment>\\n#include <transmission_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <iridescence_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <roughnessmap_fragment>\\n\t#include <metalnessmap_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\t#include <clearcoat_normal_fragment_begin>\\n\t#include <clearcoat_normal_fragment_maps>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_physical_fragment>\\n\t#include <lights_fragment_begin>\\n\t#include <lights_fragment_maps>\\n\t#include <lights_fragment_end>\\n\t#include <aomap_fragment>\\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\t#include <transmission_fragment>\\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\t#ifdef USE_SHEEN\\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\\n\t#endif\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\t#endif\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <gradientmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_toon_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_toon_fragment>\\n\t#include <lights_fragment_begin>\\n\t#include <lights_fragment_maps>\\n\t#include <lights_fragment_end>\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <project_vertex>\\n\tgl_PointSize = size;\\n\t#ifdef USE_SIZEATTENUATION\\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\t#endif\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <fog_vertex>\\n}\";\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <map_particle_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_particle_fragment>\\n\t#include <color_fragment>\\n\t#include <alphatest_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n}\";\nconst vertex$2 = \"#include <common>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\nvoid main() {\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n}\";\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\tvec2 scale;\\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\t#ifndef USE_SIZEATTENUATION\\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\\n\t#endif\\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\tvec2 rotatedPosition;\\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\tmvPosition.xy += rotatedPosition;\\n\tgl_Position = projectionMatrix * mvPosition;\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <fog_vertex>\\n}\";\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n}\";\nconst ShaderChunk = {\n  alphamap_fragment,\n  alphamap_pars_fragment,\n  alphatest_fragment,\n  alphatest_pars_fragment,\n  aomap_fragment,\n  aomap_pars_fragment,\n  begin_vertex,\n  beginnormal_vertex,\n  bsdfs,\n  iridescence_fragment,\n  bumpmap_pars_fragment,\n  clipping_planes_fragment,\n  clipping_planes_pars_fragment,\n  clipping_planes_pars_vertex,\n  clipping_planes_vertex,\n  color_fragment,\n  color_pars_fragment,\n  color_pars_vertex,\n  color_vertex,\n  common: common$1,\n  cube_uv_reflection_fragment,\n  defaultnormal_vertex,\n  displacementmap_pars_vertex,\n  displacementmap_vertex,\n  emissivemap_fragment,\n  emissivemap_pars_fragment,\n  encodings_fragment,\n  encodings_pars_fragment,\n  envmap_fragment,\n  envmap_common_pars_fragment,\n  envmap_pars_fragment,\n  envmap_pars_vertex,\n  envmap_physical_pars_fragment,\n  envmap_vertex,\n  fog_vertex,\n  fog_pars_vertex,\n  fog_fragment,\n  fog_pars_fragment,\n  gradientmap_pars_fragment,\n  lightmap_fragment,\n  lightmap_pars_fragment,\n  lights_lambert_vertex,\n  lights_pars_begin,\n  lights_toon_fragment,\n  lights_toon_pars_fragment,\n  lights_phong_fragment,\n  lights_phong_pars_fragment,\n  lights_physical_fragment,\n  lights_physical_pars_fragment,\n  lights_fragment_begin,\n  lights_fragment_maps,\n  lights_fragment_end,\n  logdepthbuf_fragment,\n  logdepthbuf_pars_fragment,\n  logdepthbuf_pars_vertex,\n  logdepthbuf_vertex,\n  map_fragment,\n  map_pars_fragment,\n  map_particle_fragment,\n  map_particle_pars_fragment,\n  metalnessmap_fragment,\n  metalnessmap_pars_fragment,\n  morphcolor_vertex,\n  morphnormal_vertex,\n  morphtarget_pars_vertex,\n  morphtarget_vertex,\n  normal_fragment_begin,\n  normal_fragment_maps,\n  normal_pars_fragment,\n  normal_pars_vertex,\n  normal_vertex,\n  normalmap_pars_fragment,\n  clearcoat_normal_fragment_begin,\n  clearcoat_normal_fragment_maps,\n  clearcoat_pars_fragment,\n  iridescence_pars_fragment,\n  output_fragment,\n  packing,\n  premultiplied_alpha_fragment,\n  project_vertex,\n  dithering_fragment,\n  dithering_pars_fragment,\n  roughnessmap_fragment,\n  roughnessmap_pars_fragment,\n  shadowmap_pars_fragment,\n  shadowmap_pars_vertex,\n  shadowmap_vertex,\n  shadowmask_pars_fragment,\n  skinbase_vertex,\n  skinning_pars_vertex,\n  skinning_vertex,\n  skinnormal_vertex,\n  specularmap_fragment,\n  specularmap_pars_fragment,\n  tonemapping_fragment,\n  tonemapping_pars_fragment,\n  transmission_fragment,\n  transmission_pars_fragment,\n  uv_pars_fragment,\n  uv_pars_vertex,\n  uv_vertex,\n  uv2_pars_fragment,\n  uv2_pars_vertex,\n  uv2_vertex,\n  worldpos_vertex,\n  background_vert: vertex$g,\n  background_frag: fragment$g,\n  cube_vert: vertex$f,\n  cube_frag: fragment$f,\n  depth_vert: vertex$e,\n  depth_frag: fragment$e,\n  distanceRGBA_vert: vertex$d,\n  distanceRGBA_frag: fragment$d,\n  equirect_vert: vertex$c,\n  equirect_frag: fragment$c,\n  linedashed_vert: vertex$b,\n  linedashed_frag: fragment$b,\n  meshbasic_vert: vertex$a,\n  meshbasic_frag: fragment$a,\n  meshlambert_vert: vertex$9,\n  meshlambert_frag: fragment$9,\n  meshmatcap_vert: vertex$8,\n  meshmatcap_frag: fragment$8,\n  meshnormal_vert: vertex$7,\n  meshnormal_frag: fragment$7,\n  meshphong_vert: vertex$6,\n  meshphong_frag: fragment$6,\n  meshphysical_vert: vertex$5,\n  meshphysical_frag: fragment$5,\n  meshtoon_vert: vertex$4,\n  meshtoon_frag: fragment$4,\n  points_vert: vertex$3,\n  points_frag: fragment$3,\n  shadow_vert: vertex$2,\n  shadow_frag: fragment$2,\n  sprite_vert: vertex$1,\n  sprite_frag: fragment$1\n};\nconst UniformsLib = {\n  common: {\n    diffuse: { value: /* @__PURE__ */ new Color(16777215) },\n    opacity: { value: 1 },\n    map: { value: null },\n    uvTransform: { value: /* @__PURE__ */ new Matrix3() },\n    uv2Transform: { value: /* @__PURE__ */ new Matrix3() },\n    alphaMap: { value: null },\n    alphaTest: { value: 0 }\n  },\n  specularmap: {\n    specularMap: { value: null }\n  },\n  envmap: {\n    envMap: { value: null },\n    flipEnvMap: { value: -1 },\n    reflectivity: { value: 1 },\n    ior: { value: 1.5 },\n    refractionRatio: { value: 0.98 }\n  },\n  aomap: {\n    aoMap: { value: null },\n    aoMapIntensity: { value: 1 }\n  },\n  lightmap: {\n    lightMap: { value: null },\n    lightMapIntensity: { value: 1 }\n  },\n  emissivemap: {\n    emissiveMap: { value: null }\n  },\n  bumpmap: {\n    bumpMap: { value: null },\n    bumpScale: { value: 1 }\n  },\n  normalmap: {\n    normalMap: { value: null },\n    normalScale: { value: /* @__PURE__ */ new Vector2(1, 1) }\n  },\n  displacementmap: {\n    displacementMap: { value: null },\n    displacementScale: { value: 1 },\n    displacementBias: { value: 0 }\n  },\n  roughnessmap: {\n    roughnessMap: { value: null }\n  },\n  metalnessmap: {\n    metalnessMap: { value: null }\n  },\n  gradientmap: {\n    gradientMap: { value: null }\n  },\n  fog: {\n    fogDensity: { value: 25e-5 },\n    fogNear: { value: 1 },\n    fogFar: { value: 2e3 },\n    fogColor: { value: /* @__PURE__ */ new Color(16777215) }\n  },\n  lights: {\n    ambientLightColor: { value: [] },\n    lightProbe: { value: [] },\n    directionalLights: { value: [], properties: {\n      direction: {},\n      color: {}\n    } },\n    directionalLightShadows: { value: [], properties: {\n      shadowBias: {},\n      shadowNormalBias: {},\n      shadowRadius: {},\n      shadowMapSize: {}\n    } },\n    directionalShadowMap: { value: [] },\n    directionalShadowMatrix: { value: [] },\n    spotLights: { value: [], properties: {\n      color: {},\n      position: {},\n      direction: {},\n      distance: {},\n      coneCos: {},\n      penumbraCos: {},\n      decay: {}\n    } },\n    spotLightShadows: { value: [], properties: {\n      shadowBias: {},\n      shadowNormalBias: {},\n      shadowRadius: {},\n      shadowMapSize: {}\n    } },\n    spotShadowMap: { value: [] },\n    spotShadowMatrix: { value: [] },\n    pointLights: { value: [], properties: {\n      color: {},\n      position: {},\n      decay: {},\n      distance: {}\n    } },\n    pointLightShadows: { value: [], properties: {\n      shadowBias: {},\n      shadowNormalBias: {},\n      shadowRadius: {},\n      shadowMapSize: {},\n      shadowCameraNear: {},\n      shadowCameraFar: {}\n    } },\n    pointShadowMap: { value: [] },\n    pointShadowMatrix: { value: [] },\n    hemisphereLights: { value: [], properties: {\n      direction: {},\n      skyColor: {},\n      groundColor: {}\n    } },\n    rectAreaLights: { value: [], properties: {\n      color: {},\n      position: {},\n      width: {},\n      height: {}\n    } },\n    ltc_1: { value: null },\n    ltc_2: { value: null }\n  },\n  points: {\n    diffuse: { value: /* @__PURE__ */ new Color(16777215) },\n    opacity: { value: 1 },\n    size: { value: 1 },\n    scale: { value: 1 },\n    map: { value: null },\n    alphaMap: { value: null },\n    alphaTest: { value: 0 },\n    uvTransform: { value: /* @__PURE__ */ new Matrix3() }\n  },\n  sprite: {\n    diffuse: { value: /* @__PURE__ */ new Color(16777215) },\n    opacity: { value: 1 },\n    center: { value: /* @__PURE__ */ new Vector2(0.5, 0.5) },\n    rotation: { value: 0 },\n    map: { value: null },\n    alphaMap: { value: null },\n    alphaTest: { value: 0 },\n    uvTransform: { value: /* @__PURE__ */ new Matrix3() }\n  }\n};\nconst ShaderLib = {\n  basic: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.specularmap,\n      UniformsLib.envmap,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.fog\n    ]),\n    vertexShader: ShaderChunk.meshbasic_vert,\n    fragmentShader: ShaderChunk.meshbasic_frag\n  },\n  lambert: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.specularmap,\n      UniformsLib.envmap,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.emissivemap,\n      UniformsLib.fog,\n      UniformsLib.lights,\n      {\n        emissive: { value: /* @__PURE__ */ new Color(0) }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshlambert_vert,\n    fragmentShader: ShaderChunk.meshlambert_frag\n  },\n  phong: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.specularmap,\n      UniformsLib.envmap,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.emissivemap,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.fog,\n      UniformsLib.lights,\n      {\n        emissive: { value: /* @__PURE__ */ new Color(0) },\n        specular: { value: /* @__PURE__ */ new Color(1118481) },\n        shininess: { value: 30 }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshphong_vert,\n    fragmentShader: ShaderChunk.meshphong_frag\n  },\n  standard: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.envmap,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.emissivemap,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.roughnessmap,\n      UniformsLib.metalnessmap,\n      UniformsLib.fog,\n      UniformsLib.lights,\n      {\n        emissive: { value: /* @__PURE__ */ new Color(0) },\n        roughness: { value: 1 },\n        metalness: { value: 0 },\n        envMapIntensity: { value: 1 }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshphysical_vert,\n    fragmentShader: ShaderChunk.meshphysical_frag\n  },\n  toon: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.emissivemap,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.gradientmap,\n      UniformsLib.fog,\n      UniformsLib.lights,\n      {\n        emissive: { value: /* @__PURE__ */ new Color(0) }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshtoon_vert,\n    fragmentShader: ShaderChunk.meshtoon_frag\n  },\n  matcap: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.fog,\n      {\n        matcap: { value: null }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshmatcap_vert,\n    fragmentShader: ShaderChunk.meshmatcap_frag\n  },\n  points: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.points,\n      UniformsLib.fog\n    ]),\n    vertexShader: ShaderChunk.points_vert,\n    fragmentShader: ShaderChunk.points_frag\n  },\n  dashed: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.fog,\n      {\n        scale: { value: 1 },\n        dashSize: { value: 1 },\n        totalSize: { value: 2 }\n      }\n    ]),\n    vertexShader: ShaderChunk.linedashed_vert,\n    fragmentShader: ShaderChunk.linedashed_frag\n  },\n  depth: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.displacementmap\n    ]),\n    vertexShader: ShaderChunk.depth_vert,\n    fragmentShader: ShaderChunk.depth_frag\n  },\n  normal: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      {\n        opacity: { value: 1 }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshnormal_vert,\n    fragmentShader: ShaderChunk.meshnormal_frag\n  },\n  sprite: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.sprite,\n      UniformsLib.fog\n    ]),\n    vertexShader: ShaderChunk.sprite_vert,\n    fragmentShader: ShaderChunk.sprite_frag\n  },\n  background: {\n    uniforms: {\n      uvTransform: { value: /* @__PURE__ */ new Matrix3() },\n      t2D: { value: null }\n    },\n    vertexShader: ShaderChunk.background_vert,\n    fragmentShader: ShaderChunk.background_frag\n  },\n  cube: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.envmap,\n      {\n        opacity: { value: 1 }\n      }\n    ]),\n    vertexShader: ShaderChunk.cube_vert,\n    fragmentShader: ShaderChunk.cube_frag\n  },\n  equirect: {\n    uniforms: {\n      tEquirect: { value: null }\n    },\n    vertexShader: ShaderChunk.equirect_vert,\n    fragmentShader: ShaderChunk.equirect_frag\n  },\n  distanceRGBA: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.displacementmap,\n      {\n        referencePosition: { value: /* @__PURE__ */ new Vector3() },\n        nearDistance: { value: 1 },\n        farDistance: { value: 1e3 }\n      }\n    ]),\n    vertexShader: ShaderChunk.distanceRGBA_vert,\n    fragmentShader: ShaderChunk.distanceRGBA_frag\n  },\n  shadow: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.lights,\n      UniformsLib.fog,\n      {\n        color: { value: /* @__PURE__ */ new Color(0) },\n        opacity: { value: 1 }\n      }\n    ]),\n    vertexShader: ShaderChunk.shadow_vert,\n    fragmentShader: ShaderChunk.shadow_frag\n  }\n};\nShaderLib.physical = {\n  uniforms: /* @__PURE__ */ mergeUniforms([\n    ShaderLib.standard.uniforms,\n    {\n      clearcoat: { value: 0 },\n      clearcoatMap: { value: null },\n      clearcoatRoughness: { value: 0 },\n      clearcoatRoughnessMap: { value: null },\n      clearcoatNormalScale: { value: /* @__PURE__ */ new Vector2(1, 1) },\n      clearcoatNormalMap: { value: null },\n      iridescence: { value: 0 },\n      iridescenceMap: { value: null },\n      iridescenceIOR: { value: 1.3 },\n      iridescenceThicknessMinimum: { value: 100 },\n      iridescenceThicknessMaximum: { value: 400 },\n      iridescenceThicknessMap: { value: null },\n      sheen: { value: 0 },\n      sheenColor: { value: /* @__PURE__ */ new Color(0) },\n      sheenColorMap: { value: null },\n      sheenRoughness: { value: 1 },\n      sheenRoughnessMap: { value: null },\n      transmission: { value: 0 },\n      transmissionMap: { value: null },\n      transmissionSamplerSize: { value: /* @__PURE__ */ new Vector2() },\n      transmissionSamplerMap: { value: null },\n      thickness: { value: 0 },\n      thicknessMap: { value: null },\n      attenuationDistance: { value: 0 },\n      attenuationColor: { value: /* @__PURE__ */ new Color(0) },\n      specularIntensity: { value: 1 },\n      specularIntensityMap: { value: null },\n      specularColor: { value: /* @__PURE__ */ new Color(1, 1, 1) },\n      specularColorMap: { value: null }\n    }\n  ]),\n  vertexShader: ShaderChunk.meshphysical_vert,\n  fragmentShader: ShaderChunk.meshphysical_frag\n};\nfunction WebGLBackground(renderer, cubemaps, state, objects, alpha, premultipliedAlpha) {\n  const clearColor = new Color(0);\n  let clearAlpha = alpha === true ? 0 : 1;\n  let planeMesh;\n  let boxMesh;\n  let currentBackground = null;\n  let currentBackgroundVersion = 0;\n  let currentTonemapping = null;\n  function render(renderList, scene) {\n    let forceClear = false;\n    let background = scene.isScene === true ? scene.background : null;\n    if (background && background.isTexture) {\n      background = cubemaps.get(background);\n    }\n    const xr = renderer.xr;\n    const session = xr.getSession && xr.getSession();\n    if (session && session.environmentBlendMode === \"additive\") {\n      background = null;\n    }\n    if (background === null) {\n      setClear(clearColor, clearAlpha);\n    } else if (background && background.isColor) {\n      setClear(background, 1);\n      forceClear = true;\n    }\n    if (renderer.autoClear || forceClear) {\n      renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil);\n    }\n    if (background && (background.isCubeTexture || background.mapping === CubeUVReflectionMapping)) {\n      if (boxMesh === void 0) {\n        boxMesh = new Mesh(\n          new BoxGeometry(1, 1, 1),\n          new ShaderMaterial({\n            name: \"BackgroundCubeMaterial\",\n            uniforms: cloneUniforms(ShaderLib.cube.uniforms),\n            vertexShader: ShaderLib.cube.vertexShader,\n            fragmentShader: ShaderLib.cube.fragmentShader,\n            side: BackSide,\n            depthTest: false,\n            depthWrite: false,\n            fog: false\n          })\n        );\n        boxMesh.geometry.deleteAttribute(\"normal\");\n        boxMesh.geometry.deleteAttribute(\"uv\");\n        boxMesh.onBeforeRender = function(renderer2, scene2, camera) {\n          this.matrixWorld.copyPosition(camera.matrixWorld);\n        };\n        Object.defineProperty(boxMesh.material, \"envMap\", {\n          get: function() {\n            return this.uniforms.envMap.value;\n          }\n        });\n        objects.update(boxMesh);\n      }\n      boxMesh.material.uniforms.envMap.value = background;\n      boxMesh.material.uniforms.flipEnvMap.value = background.isCubeTexture && background.isRenderTargetTexture === false ? -1 : 1;\n      if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n        boxMesh.material.needsUpdate = true;\n        currentBackground = background;\n        currentBackgroundVersion = background.version;\n        currentTonemapping = renderer.toneMapping;\n      }\n      boxMesh.layers.enableAll();\n      renderList.unshift(boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null);\n    } else if (background && background.isTexture) {\n      if (planeMesh === void 0) {\n        planeMesh = new Mesh(\n          new PlaneGeometry(2, 2),\n          new ShaderMaterial({\n            name: \"BackgroundMaterial\",\n            uniforms: cloneUniforms(ShaderLib.background.uniforms),\n            vertexShader: ShaderLib.background.vertexShader,\n            fragmentShader: ShaderLib.background.fragmentShader,\n            side: FrontSide,\n            depthTest: false,\n            depthWrite: false,\n            fog: false\n          })\n        );\n        planeMesh.geometry.deleteAttribute(\"normal\");\n        Object.defineProperty(planeMesh.material, \"map\", {\n          get: function() {\n            return this.uniforms.t2D.value;\n          }\n        });\n        objects.update(planeMesh);\n      }\n      planeMesh.material.uniforms.t2D.value = background;\n      if (background.matrixAutoUpdate === true) {\n        background.updateMatrix();\n      }\n      planeMesh.material.uniforms.uvTransform.value.copy(background.matrix);\n      if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n        planeMesh.material.needsUpdate = true;\n        currentBackground = background;\n        currentBackgroundVersion = background.version;\n        currentTonemapping = renderer.toneMapping;\n      }\n      planeMesh.layers.enableAll();\n      renderList.unshift(planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null);\n    }\n  }\n  function setClear(color, alpha2) {\n    state.buffers.color.setClear(color.r, color.g, color.b, alpha2, premultipliedAlpha);\n  }\n  return {\n    getClearColor: function() {\n      return clearColor;\n    },\n    setClearColor: function(color, alpha2 = 1) {\n      clearColor.set(color);\n      clearAlpha = alpha2;\n      setClear(clearColor, clearAlpha);\n    },\n    getClearAlpha: function() {\n      return clearAlpha;\n    },\n    setClearAlpha: function(alpha2) {\n      clearAlpha = alpha2;\n      setClear(clearColor, clearAlpha);\n    },\n    render\n  };\n}\nfunction WebGLBindingStates(gl, extensions, attributes, capabilities) {\n  const maxVertexAttributes = gl.getParameter(34921);\n  const extension = capabilities.isWebGL2 ? null : extensions.get(\"OES_vertex_array_object\");\n  const vaoAvailable = capabilities.isWebGL2 || extension !== null;\n  const bindingStates = {};\n  const defaultState = createBindingState(null);\n  let currentState = defaultState;\n  let forceUpdate = false;\n  function setup(object, material, program, geometry, index) {\n    let updateBuffers = false;\n    if (vaoAvailable) {\n      const state = getBindingState(geometry, program, material);\n      if (currentState !== state) {\n        currentState = state;\n        bindVertexArrayObject(currentState.object);\n      }\n      updateBuffers = needsUpdate(object, geometry, program, index);\n      if (updateBuffers)\n        saveCache(object, geometry, program, index);\n    } else {\n      const wireframe = material.wireframe === true;\n      if (currentState.geometry !== geometry.id || currentState.program !== program.id || currentState.wireframe !== wireframe) {\n        currentState.geometry = geometry.id;\n        currentState.program = program.id;\n        currentState.wireframe = wireframe;\n        updateBuffers = true;\n      }\n    }\n    if (index !== null) {\n      attributes.update(index, 34963);\n    }\n    if (updateBuffers || forceUpdate) {\n      forceUpdate = false;\n      setupVertexAttributes(object, material, program, geometry);\n      if (index !== null) {\n        gl.bindBuffer(34963, attributes.get(index).buffer);\n      }\n    }\n  }\n  function createVertexArrayObject() {\n    if (capabilities.isWebGL2)\n      return gl.createVertexArray();\n    return extension.createVertexArrayOES();\n  }\n  function bindVertexArrayObject(vao) {\n    if (capabilities.isWebGL2)\n      return gl.bindVertexArray(vao);\n    return extension.bindVertexArrayOES(vao);\n  }\n  function deleteVertexArrayObject(vao) {\n    if (capabilities.isWebGL2)\n      return gl.deleteVertexArray(vao);\n    return extension.deleteVertexArrayOES(vao);\n  }\n  function getBindingState(geometry, program, material) {\n    const wireframe = material.wireframe === true;\n    let programMap = bindingStates[geometry.id];\n    if (programMap === void 0) {\n      programMap = {};\n      bindingStates[geometry.id] = programMap;\n    }\n    let stateMap = programMap[program.id];\n    if (stateMap === void 0) {\n      stateMap = {};\n      programMap[program.id] = stateMap;\n    }\n    let state = stateMap[wireframe];\n    if (state === void 0) {\n      state = createBindingState(createVertexArrayObject());\n      stateMap[wireframe] = state;\n    }\n    return state;\n  }\n  function createBindingState(vao) {\n    const newAttributes = [];\n    const enabledAttributes = [];\n    const attributeDivisors = [];\n    for (let i = 0; i < maxVertexAttributes; i++) {\n      newAttributes[i] = 0;\n      enabledAttributes[i] = 0;\n      attributeDivisors[i] = 0;\n    }\n    return {\n      geometry: null,\n      program: null,\n      wireframe: false,\n      newAttributes,\n      enabledAttributes,\n      attributeDivisors,\n      object: vao,\n      attributes: {},\n      index: null\n    };\n  }\n  function needsUpdate(object, geometry, program, index) {\n    const cachedAttributes = currentState.attributes;\n    const geometryAttributes = geometry.attributes;\n    let attributesNum = 0;\n    const programAttributes = program.getAttributes();\n    for (const name in programAttributes) {\n      const programAttribute = programAttributes[name];\n      if (programAttribute.location >= 0) {\n        const cachedAttribute = cachedAttributes[name];\n        let geometryAttribute = geometryAttributes[name];\n        if (geometryAttribute === void 0) {\n          if (name === \"instanceMatrix\" && object.instanceMatrix)\n            geometryAttribute = object.instanceMatrix;\n          if (name === \"instanceColor\" && object.instanceColor)\n            geometryAttribute = object.instanceColor;\n        }\n        if (cachedAttribute === void 0)\n          return true;\n        if (cachedAttribute.attribute !== geometryAttribute)\n          return true;\n        if (geometryAttribute && cachedAttribute.data !== geometryAttribute.data)\n          return true;\n        attributesNum++;\n      }\n    }\n    if (currentState.attributesNum !== attributesNum)\n      return true;\n    if (currentState.index !== index)\n      return true;\n    return false;\n  }\n  function saveCache(object, geometry, program, index) {\n    const cache = {};\n    const attributes2 = geometry.attributes;\n    let attributesNum = 0;\n    const programAttributes = program.getAttributes();\n    for (const name in programAttributes) {\n      const programAttribute = programAttributes[name];\n      if (programAttribute.location >= 0) {\n        let attribute = attributes2[name];\n        if (attribute === void 0) {\n          if (name === \"instanceMatrix\" && object.instanceMatrix)\n            attribute = object.instanceMatrix;\n          if (name === \"instanceColor\" && object.instanceColor)\n            attribute = object.instanceColor;\n        }\n        const data = {};\n        data.attribute = attribute;\n        if (attribute && attribute.data) {\n          data.data = attribute.data;\n        }\n        cache[name] = data;\n        attributesNum++;\n      }\n    }\n    currentState.attributes = cache;\n    currentState.attributesNum = attributesNum;\n    currentState.index = index;\n  }\n  function initAttributes() {\n    const newAttributes = currentState.newAttributes;\n    for (let i = 0, il = newAttributes.length; i < il; i++) {\n      newAttributes[i] = 0;\n    }\n  }\n  function enableAttribute(attribute) {\n    enableAttributeAndDivisor(attribute, 0);\n  }\n  function enableAttributeAndDivisor(attribute, meshPerAttribute) {\n    const newAttributes = currentState.newAttributes;\n    const enabledAttributes = currentState.enabledAttributes;\n    const attributeDivisors = currentState.attributeDivisors;\n    newAttributes[attribute] = 1;\n    if (enabledAttributes[attribute] === 0) {\n      gl.enableVertexAttribArray(attribute);\n      enabledAttributes[attribute] = 1;\n    }\n    if (attributeDivisors[attribute] !== meshPerAttribute) {\n      const extension2 = capabilities.isWebGL2 ? gl : extensions.get(\"ANGLE_instanced_arrays\");\n      extension2[capabilities.isWebGL2 ? \"vertexAttribDivisor\" : \"vertexAttribDivisorANGLE\"](attribute, meshPerAttribute);\n      attributeDivisors[attribute] = meshPerAttribute;\n    }\n  }\n  function disableUnusedAttributes() {\n    const newAttributes = currentState.newAttributes;\n    const enabledAttributes = currentState.enabledAttributes;\n    for (let i = 0, il = enabledAttributes.length; i < il; i++) {\n      if (enabledAttributes[i] !== newAttributes[i]) {\n        gl.disableVertexAttribArray(i);\n        enabledAttributes[i] = 0;\n      }\n    }\n  }\n  function vertexAttribPointer(index, size, type, normalized, stride, offset) {\n    if (capabilities.isWebGL2 === true && (type === 5124 || type === 5125)) {\n      gl.vertexAttribIPointer(index, size, type, stride, offset);\n    } else {\n      gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n    }\n  }\n  function setupVertexAttributes(object, material, program, geometry) {\n    if (capabilities.isWebGL2 === false && (object.isInstancedMesh || geometry.isInstancedBufferGeometry)) {\n      if (extensions.get(\"ANGLE_instanced_arrays\") === null)\n        return;\n    }\n    initAttributes();\n    const geometryAttributes = geometry.attributes;\n    const programAttributes = program.getAttributes();\n    const materialDefaultAttributeValues = material.defaultAttributeValues;\n    for (const name in programAttributes) {\n      const programAttribute = programAttributes[name];\n      if (programAttribute.location >= 0) {\n        let geometryAttribute = geometryAttributes[name];\n        if (geometryAttribute === void 0) {\n          if (name === \"instanceMatrix\" && object.instanceMatrix)\n            geometryAttribute = object.instanceMatrix;\n          if (name === \"instanceColor\" && object.instanceColor)\n            geometryAttribute = object.instanceColor;\n        }\n        if (geometryAttribute !== void 0) {\n          const normalized = geometryAttribute.normalized;\n          const size = geometryAttribute.itemSize;\n          const attribute = attributes.get(geometryAttribute);\n          if (attribute === void 0)\n            continue;\n          const buffer = attribute.buffer;\n          const type = attribute.type;\n          const bytesPerElement = attribute.bytesPerElement;\n          if (geometryAttribute.isInterleavedBufferAttribute) {\n            const data = geometryAttribute.data;\n            const stride = data.stride;\n            const offset = geometryAttribute.offset;\n            if (data.isInstancedInterleavedBuffer) {\n              for (let i = 0; i < programAttribute.locationSize; i++) {\n                enableAttributeAndDivisor(programAttribute.location + i, data.meshPerAttribute);\n              }\n              if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) {\n                geometry._maxInstanceCount = data.meshPerAttribute * data.count;\n              }\n            } else {\n              for (let i = 0; i < programAttribute.locationSize; i++) {\n                enableAttribute(programAttribute.location + i);\n              }\n            }\n            gl.bindBuffer(34962, buffer);\n            for (let i = 0; i < programAttribute.locationSize; i++) {\n              vertexAttribPointer(\n                programAttribute.location + i,\n                size / programAttribute.locationSize,\n                type,\n                normalized,\n                stride * bytesPerElement,\n                (offset + size / programAttribute.locationSize * i) * bytesPerElement\n              );\n            }\n          } else {\n            if (geometryAttribute.isInstancedBufferAttribute) {\n              for (let i = 0; i < programAttribute.locationSize; i++) {\n                enableAttributeAndDivisor(programAttribute.location + i, geometryAttribute.meshPerAttribute);\n              }\n              if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) {\n                geometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n              }\n            } else {\n              for (let i = 0; i < programAttribute.locationSize; i++) {\n                enableAttribute(programAttribute.location + i);\n              }\n            }\n            gl.bindBuffer(34962, buffer);\n            for (let i = 0; i < programAttribute.locationSize; i++) {\n              vertexAttribPointer(\n                programAttribute.location + i,\n                size / programAttribute.locationSize,\n                type,\n                normalized,\n                size * bytesPerElement,\n                size / programAttribute.locationSize * i * bytesPerElement\n              );\n            }\n          }\n        } else if (materialDefaultAttributeValues !== void 0) {\n          const value = materialDefaultAttributeValues[name];\n          if (value !== void 0) {\n            switch (value.length) {\n              case 2:\n                gl.vertexAttrib2fv(programAttribute.location, value);\n                break;\n              case 3:\n                gl.vertexAttrib3fv(programAttribute.location, value);\n                break;\n              case 4:\n                gl.vertexAttrib4fv(programAttribute.location, value);\n                break;\n              default:\n                gl.vertexAttrib1fv(programAttribute.location, value);\n            }\n          }\n        }\n      }\n    }\n    disableUnusedAttributes();\n  }\n  function dispose() {\n    reset();\n    for (const geometryId in bindingStates) {\n      const programMap = bindingStates[geometryId];\n      for (const programId in programMap) {\n        const stateMap = programMap[programId];\n        for (const wireframe in stateMap) {\n          deleteVertexArrayObject(stateMap[wireframe].object);\n          delete stateMap[wireframe];\n        }\n        delete programMap[programId];\n      }\n      delete bindingStates[geometryId];\n    }\n  }\n  function releaseStatesOfGeometry(geometry) {\n    if (bindingStates[geometry.id] === void 0)\n      return;\n    const programMap = bindingStates[geometry.id];\n    for (const programId in programMap) {\n      const stateMap = programMap[programId];\n      for (const wireframe in stateMap) {\n        deleteVertexArrayObject(stateMap[wireframe].object);\n        delete stateMap[wireframe];\n      }\n      delete programMap[programId];\n    }\n    delete bindingStates[geometry.id];\n  }\n  function releaseStatesOfProgram(program) {\n    for (const geometryId in bindingStates) {\n      const programMap = bindingStates[geometryId];\n      if (programMap[program.id] === void 0)\n        continue;\n      const stateMap = programMap[program.id];\n      for (const wireframe in stateMap) {\n        deleteVertexArrayObject(stateMap[wireframe].object);\n        delete stateMap[wireframe];\n      }\n      delete programMap[program.id];\n    }\n  }\n  function reset() {\n    resetDefaultState();\n    forceUpdate = true;\n    if (currentState === defaultState)\n      return;\n    currentState = defaultState;\n    bindVertexArrayObject(currentState.object);\n  }\n  function resetDefaultState() {\n    defaultState.geometry = null;\n    defaultState.program = null;\n    defaultState.wireframe = false;\n  }\n  return {\n    setup,\n    reset,\n    resetDefaultState,\n    dispose,\n    releaseStatesOfGeometry,\n    releaseStatesOfProgram,\n    initAttributes,\n    enableAttribute,\n    disableUnusedAttributes\n  };\n}\nfunction WebGLBufferRenderer(gl, extensions, info, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  let mode;\n  function setMode(value) {\n    mode = value;\n  }\n  function render(start, count) {\n    gl.drawArrays(mode, start, count);\n    info.update(count, mode, 1);\n  }\n  function renderInstances(start, count, primcount) {\n    if (primcount === 0)\n      return;\n    let extension, methodName;\n    if (isWebGL2) {\n      extension = gl;\n      methodName = \"drawArraysInstanced\";\n    } else {\n      extension = extensions.get(\"ANGLE_instanced_arrays\");\n      methodName = \"drawArraysInstancedANGLE\";\n      if (extension === null) {\n        console.error(\"THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.\");\n        return;\n      }\n    }\n    extension[methodName](mode, start, count, primcount);\n    info.update(count, mode, primcount);\n  }\n  this.setMode = setMode;\n  this.render = render;\n  this.renderInstances = renderInstances;\n}\nfunction WebGLCapabilities(gl, extensions, parameters) {\n  let maxAnisotropy;\n  function getMaxAnisotropy() {\n    if (maxAnisotropy !== void 0)\n      return maxAnisotropy;\n    if (extensions.has(\"EXT_texture_filter_anisotropic\") === true) {\n      const extension = extensions.get(\"EXT_texture_filter_anisotropic\");\n      maxAnisotropy = gl.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n    } else {\n      maxAnisotropy = 0;\n    }\n    return maxAnisotropy;\n  }\n  function getMaxPrecision(precision2) {\n    if (precision2 === \"highp\") {\n      if (gl.getShaderPrecisionFormat(35633, 36338).precision > 0 && gl.getShaderPrecisionFormat(35632, 36338).precision > 0) {\n        return \"highp\";\n      }\n      precision2 = \"mediump\";\n    }\n    if (precision2 === \"mediump\") {\n      if (gl.getShaderPrecisionFormat(35633, 36337).precision > 0 && gl.getShaderPrecisionFormat(35632, 36337).precision > 0) {\n        return \"mediump\";\n      }\n    }\n    return \"lowp\";\n  }\n  const isWebGL2 = typeof WebGL2RenderingContext !== \"undefined\" && gl instanceof WebGL2RenderingContext || typeof WebGL2ComputeRenderingContext !== \"undefined\" && gl instanceof WebGL2ComputeRenderingContext;\n  let precision = parameters.precision !== void 0 ? parameters.precision : \"highp\";\n  const maxPrecision = getMaxPrecision(precision);\n  if (maxPrecision !== precision) {\n    console.warn(\"THREE.WebGLRenderer:\", precision, \"not supported, using\", maxPrecision, \"instead.\");\n    precision = maxPrecision;\n  }\n  const drawBuffers = isWebGL2 || extensions.has(\"WEBGL_draw_buffers\");\n  const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n  const maxTextures = gl.getParameter(34930);\n  const maxVertexTextures = gl.getParameter(35660);\n  const maxTextureSize = gl.getParameter(3379);\n  const maxCubemapSize = gl.getParameter(34076);\n  const maxAttributes = gl.getParameter(34921);\n  const maxVertexUniforms = gl.getParameter(36347);\n  const maxVaryings = gl.getParameter(36348);\n  const maxFragmentUniforms = gl.getParameter(36349);\n  const vertexTextures = maxVertexTextures > 0;\n  const floatFragmentTextures = isWebGL2 || extensions.has(\"OES_texture_float\");\n  const floatVertexTextures = vertexTextures && floatFragmentTextures;\n  const maxSamples = isWebGL2 ? gl.getParameter(36183) : 0;\n  return {\n    isWebGL2,\n    drawBuffers,\n    getMaxAnisotropy,\n    getMaxPrecision,\n    precision,\n    logarithmicDepthBuffer,\n    maxTextures,\n    maxVertexTextures,\n    maxTextureSize,\n    maxCubemapSize,\n    maxAttributes,\n    maxVertexUniforms,\n    maxVaryings,\n    maxFragmentUniforms,\n    vertexTextures,\n    floatFragmentTextures,\n    floatVertexTextures,\n    maxSamples\n  };\n}\nfunction WebGLClipping(properties) {\n  const scope = this;\n  let globalState = null, numGlobalPlanes = 0, localClippingEnabled = false, renderingShadows = false;\n  const plane = new Plane(), viewNormalMatrix = new Matrix3(), uniform = { value: null, needsUpdate: false };\n  this.uniform = uniform;\n  this.numPlanes = 0;\n  this.numIntersection = 0;\n  this.init = function(planes, enableLocalClipping, camera) {\n    const enabled = planes.length !== 0 || enableLocalClipping || numGlobalPlanes !== 0 || localClippingEnabled;\n    localClippingEnabled = enableLocalClipping;\n    globalState = projectPlanes(planes, camera, 0);\n    numGlobalPlanes = planes.length;\n    return enabled;\n  };\n  this.beginShadows = function() {\n    renderingShadows = true;\n    projectPlanes(null);\n  };\n  this.endShadows = function() {\n    renderingShadows = false;\n    resetGlobalState();\n  };\n  this.setState = function(material, camera, useCache) {\n    const planes = material.clippingPlanes, clipIntersection = material.clipIntersection, clipShadows = material.clipShadows;\n    const materialProperties = properties.get(material);\n    if (!localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && !clipShadows) {\n      if (renderingShadows) {\n        projectPlanes(null);\n      } else {\n        resetGlobalState();\n      }\n    } else {\n      const nGlobal = renderingShadows ? 0 : numGlobalPlanes, lGlobal = nGlobal * 4;\n      let dstArray = materialProperties.clippingState || null;\n      uniform.value = dstArray;\n      dstArray = projectPlanes(planes, camera, lGlobal, useCache);\n      for (let i = 0; i !== lGlobal; ++i) {\n        dstArray[i] = globalState[i];\n      }\n      materialProperties.clippingState = dstArray;\n      this.numIntersection = clipIntersection ? this.numPlanes : 0;\n      this.numPlanes += nGlobal;\n    }\n  };\n  function resetGlobalState() {\n    if (uniform.value !== globalState) {\n      uniform.value = globalState;\n      uniform.needsUpdate = numGlobalPlanes > 0;\n    }\n    scope.numPlanes = numGlobalPlanes;\n    scope.numIntersection = 0;\n  }\n  function projectPlanes(planes, camera, dstOffset, skipTransform) {\n    const nPlanes = planes !== null ? planes.length : 0;\n    let dstArray = null;\n    if (nPlanes !== 0) {\n      dstArray = uniform.value;\n      if (skipTransform !== true || dstArray === null) {\n        const flatSize = dstOffset + nPlanes * 4, viewMatrix = camera.matrixWorldInverse;\n        viewNormalMatrix.getNormalMatrix(viewMatrix);\n        if (dstArray === null || dstArray.length < flatSize) {\n          dstArray = new Float32Array(flatSize);\n        }\n        for (let i = 0, i4 = dstOffset; i !== nPlanes; ++i, i4 += 4) {\n          plane.copy(planes[i]).applyMatrix4(viewMatrix, viewNormalMatrix);\n          plane.normal.toArray(dstArray, i4);\n          dstArray[i4 + 3] = plane.constant;\n        }\n      }\n      uniform.value = dstArray;\n      uniform.needsUpdate = true;\n    }\n    scope.numPlanes = nPlanes;\n    scope.numIntersection = 0;\n    return dstArray;\n  }\n}\nfunction WebGLCubeMaps(renderer) {\n  let cubemaps = /* @__PURE__ */ new WeakMap();\n  function mapTextureMapping(texture, mapping) {\n    if (mapping === EquirectangularReflectionMapping) {\n      texture.mapping = CubeReflectionMapping;\n    } else if (mapping === EquirectangularRefractionMapping) {\n      texture.mapping = CubeRefractionMapping;\n    }\n    return texture;\n  }\n  function get(texture) {\n    if (texture && texture.isTexture && texture.isRenderTargetTexture === false) {\n      const mapping = texture.mapping;\n      if (mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping) {\n        if (cubemaps.has(texture)) {\n          const cubemap = cubemaps.get(texture).texture;\n          return mapTextureMapping(cubemap, texture.mapping);\n        } else {\n          const image = texture.image;\n          if (image && image.height > 0) {\n            const renderTarget = new WebGLCubeRenderTarget(image.height / 2);\n            renderTarget.fromEquirectangularTexture(renderer, texture);\n            cubemaps.set(texture, renderTarget);\n            texture.addEventListener(\"dispose\", onTextureDispose);\n            return mapTextureMapping(renderTarget.texture, texture.mapping);\n          } else {\n            return null;\n          }\n        }\n      }\n    }\n    return texture;\n  }\n  function onTextureDispose(event) {\n    const texture = event.target;\n    texture.removeEventListener(\"dispose\", onTextureDispose);\n    const cubemap = cubemaps.get(texture);\n    if (cubemap !== void 0) {\n      cubemaps.delete(texture);\n      cubemap.dispose();\n    }\n  }\n  function dispose() {\n    cubemaps = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose\n  };\n}\nclass OrthographicCamera extends Camera$2 {\n  constructor(left = -1, right = 1, top = 1, bottom = -1, near = 0.1, far = 2e3) {\n    super();\n    this.isOrthographicCamera = true;\n    this.type = \"OrthographicCamera\";\n    this.zoom = 1;\n    this.view = null;\n    this.left = left;\n    this.right = right;\n    this.top = top;\n    this.bottom = bottom;\n    this.near = near;\n    this.far = far;\n    this.updateProjectionMatrix();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.left = source.left;\n    this.right = source.right;\n    this.top = source.top;\n    this.bottom = source.bottom;\n    this.near = source.near;\n    this.far = source.far;\n    this.zoom = source.zoom;\n    this.view = source.view === null ? null : Object.assign({}, source.view);\n    return this;\n  }\n  setViewOffset(fullWidth, fullHeight, x, y, width, height) {\n    if (this.view === null) {\n      this.view = {\n        enabled: true,\n        fullWidth: 1,\n        fullHeight: 1,\n        offsetX: 0,\n        offsetY: 0,\n        width: 1,\n        height: 1\n      };\n    }\n    this.view.enabled = true;\n    this.view.fullWidth = fullWidth;\n    this.view.fullHeight = fullHeight;\n    this.view.offsetX = x;\n    this.view.offsetY = y;\n    this.view.width = width;\n    this.view.height = height;\n    this.updateProjectionMatrix();\n  }\n  clearViewOffset() {\n    if (this.view !== null) {\n      this.view.enabled = false;\n    }\n    this.updateProjectionMatrix();\n  }\n  updateProjectionMatrix() {\n    const dx = (this.right - this.left) / (2 * this.zoom);\n    const dy = (this.top - this.bottom) / (2 * this.zoom);\n    const cx = (this.right + this.left) / 2;\n    const cy = (this.top + this.bottom) / 2;\n    let left = cx - dx;\n    let right = cx + dx;\n    let top = cy + dy;\n    let bottom = cy - dy;\n    if (this.view !== null && this.view.enabled) {\n      const scaleW = (this.right - this.left) / this.view.fullWidth / this.zoom;\n      const scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n      left += scaleW * this.view.offsetX;\n      right = left + scaleW * this.view.width;\n      top -= scaleH * this.view.offsetY;\n      bottom = top - scaleH * this.view.height;\n    }\n    this.projectionMatrix.makeOrthographic(left, right, top, bottom, this.near, this.far);\n    this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.zoom = this.zoom;\n    data.object.left = this.left;\n    data.object.right = this.right;\n    data.object.top = this.top;\n    data.object.bottom = this.bottom;\n    data.object.near = this.near;\n    data.object.far = this.far;\n    if (this.view !== null)\n      data.object.view = Object.assign({}, this.view);\n    return data;\n  }\n}\nconst LOD_MIN = 4;\nconst EXTRA_LOD_SIGMA = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582];\nconst MAX_SAMPLES = 20;\nconst _flatCamera = /* @__PURE__ */ new OrthographicCamera();\nconst _clearColor = /* @__PURE__ */ new Color();\nlet _oldTarget = null;\nconst PHI = (1 + Math.sqrt(5)) / 2;\nconst INV_PHI = 1 / PHI;\nconst _axisDirections = [\n  /* @__PURE__ */ new Vector3(1, 1, 1),\n  /* @__PURE__ */ new Vector3(-1, 1, 1),\n  /* @__PURE__ */ new Vector3(1, 1, -1),\n  /* @__PURE__ */ new Vector3(-1, 1, -1),\n  /* @__PURE__ */ new Vector3(0, PHI, INV_PHI),\n  /* @__PURE__ */ new Vector3(0, PHI, -INV_PHI),\n  /* @__PURE__ */ new Vector3(INV_PHI, 0, PHI),\n  /* @__PURE__ */ new Vector3(-INV_PHI, 0, PHI),\n  /* @__PURE__ */ new Vector3(PHI, INV_PHI, 0),\n  /* @__PURE__ */ new Vector3(-PHI, INV_PHI, 0)\n];\nclass PMREMGenerator {\n  constructor(renderer) {\n    this._renderer = renderer;\n    this._pingPongRenderTarget = null;\n    this._lodMax = 0;\n    this._cubeSize = 0;\n    this._lodPlanes = [];\n    this._sizeLods = [];\n    this._sigmas = [];\n    this._blurMaterial = null;\n    this._cubemapMaterial = null;\n    this._equirectMaterial = null;\n    this._compileMaterial(this._blurMaterial);\n  }\n  fromScene(scene, sigma = 0, near = 0.1, far = 100) {\n    _oldTarget = this._renderer.getRenderTarget();\n    this._setSize(256);\n    const cubeUVRenderTarget = this._allocateTargets();\n    cubeUVRenderTarget.depthBuffer = true;\n    this._sceneToCubeUV(scene, near, far, cubeUVRenderTarget);\n    if (sigma > 0) {\n      this._blur(cubeUVRenderTarget, 0, 0, sigma);\n    }\n    this._applyPMREM(cubeUVRenderTarget);\n    this._cleanup(cubeUVRenderTarget);\n    return cubeUVRenderTarget;\n  }\n  fromEquirectangular(equirectangular, renderTarget = null) {\n    return this._fromTexture(equirectangular, renderTarget);\n  }\n  fromCubemap(cubemap, renderTarget = null) {\n    return this._fromTexture(cubemap, renderTarget);\n  }\n  compileCubemapShader() {\n    if (this._cubemapMaterial === null) {\n      this._cubemapMaterial = _getCubemapMaterial();\n      this._compileMaterial(this._cubemapMaterial);\n    }\n  }\n  compileEquirectangularShader() {\n    if (this._equirectMaterial === null) {\n      this._equirectMaterial = _getEquirectMaterial();\n      this._compileMaterial(this._equirectMaterial);\n    }\n  }\n  dispose() {\n    this._dispose();\n    if (this._cubemapMaterial !== null)\n      this._cubemapMaterial.dispose();\n    if (this._equirectMaterial !== null)\n      this._equirectMaterial.dispose();\n  }\n  _setSize(cubeSize) {\n    this._lodMax = Math.floor(Math.log2(cubeSize));\n    this._cubeSize = Math.pow(2, this._lodMax);\n  }\n  _dispose() {\n    if (this._blurMaterial !== null)\n      this._blurMaterial.dispose();\n    if (this._pingPongRenderTarget !== null)\n      this._pingPongRenderTarget.dispose();\n    for (let i = 0; i < this._lodPlanes.length; i++) {\n      this._lodPlanes[i].dispose();\n    }\n  }\n  _cleanup(outputTarget) {\n    this._renderer.setRenderTarget(_oldTarget);\n    outputTarget.scissorTest = false;\n    _setViewport(outputTarget, 0, 0, outputTarget.width, outputTarget.height);\n  }\n  _fromTexture(texture, renderTarget) {\n    if (texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping) {\n      this._setSize(texture.image.length === 0 ? 16 : texture.image[0].width || texture.image[0].image.width);\n    } else {\n      this._setSize(texture.image.width / 4);\n    }\n    _oldTarget = this._renderer.getRenderTarget();\n    const cubeUVRenderTarget = renderTarget || this._allocateTargets();\n    this._textureToCubeUV(texture, cubeUVRenderTarget);\n    this._applyPMREM(cubeUVRenderTarget);\n    this._cleanup(cubeUVRenderTarget);\n    return cubeUVRenderTarget;\n  }\n  _allocateTargets() {\n    const width = 3 * Math.max(this._cubeSize, 16 * 7);\n    const height = 4 * this._cubeSize;\n    const params = {\n      magFilter: LinearFilter,\n      minFilter: LinearFilter,\n      generateMipmaps: false,\n      type: HalfFloatType,\n      format: RGBAFormat,\n      encoding: LinearEncoding,\n      depthBuffer: false\n    };\n    const cubeUVRenderTarget = _createRenderTarget(width, height, params);\n    if (this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width) {\n      if (this._pingPongRenderTarget !== null) {\n        this._dispose();\n      }\n      this._pingPongRenderTarget = _createRenderTarget(width, height, params);\n      const { _lodMax } = this;\n      ({ sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes(_lodMax));\n      this._blurMaterial = _getBlurShader(_lodMax, width, height);\n    }\n    return cubeUVRenderTarget;\n  }\n  _compileMaterial(material) {\n    const tmpMesh = new Mesh(this._lodPlanes[0], material);\n    this._renderer.compile(tmpMesh, _flatCamera);\n  }\n  _sceneToCubeUV(scene, near, far, cubeUVRenderTarget) {\n    const fov2 = 90;\n    const aspect2 = 1;\n    const cubeCamera = new PerspectiveCamera(fov2, aspect2, near, far);\n    const upSign = [1, -1, 1, 1, 1, 1];\n    const forwardSign = [1, 1, 1, -1, -1, -1];\n    const renderer = this._renderer;\n    const originalAutoClear = renderer.autoClear;\n    const toneMapping = renderer.toneMapping;\n    renderer.getClearColor(_clearColor);\n    renderer.toneMapping = NoToneMapping;\n    renderer.autoClear = false;\n    const backgroundMaterial = new MeshBasicMaterial({\n      name: \"PMREM.Background\",\n      side: BackSide,\n      depthWrite: false,\n      depthTest: false\n    });\n    const backgroundBox = new Mesh(new BoxGeometry(), backgroundMaterial);\n    let useSolidColor = false;\n    const background = scene.background;\n    if (background) {\n      if (background.isColor) {\n        backgroundMaterial.color.copy(background);\n        scene.background = null;\n        useSolidColor = true;\n      }\n    } else {\n      backgroundMaterial.color.copy(_clearColor);\n      useSolidColor = true;\n    }\n    for (let i = 0; i < 6; i++) {\n      const col = i % 3;\n      if (col === 0) {\n        cubeCamera.up.set(0, upSign[i], 0);\n        cubeCamera.lookAt(forwardSign[i], 0, 0);\n      } else if (col === 1) {\n        cubeCamera.up.set(0, 0, upSign[i]);\n        cubeCamera.lookAt(0, forwardSign[i], 0);\n      } else {\n        cubeCamera.up.set(0, upSign[i], 0);\n        cubeCamera.lookAt(0, 0, forwardSign[i]);\n      }\n      const size = this._cubeSize;\n      _setViewport(cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size);\n      renderer.setRenderTarget(cubeUVRenderTarget);\n      if (useSolidColor) {\n        renderer.render(backgroundBox, cubeCamera);\n      }\n      renderer.render(scene, cubeCamera);\n    }\n    backgroundBox.geometry.dispose();\n    backgroundBox.material.dispose();\n    renderer.toneMapping = toneMapping;\n    renderer.autoClear = originalAutoClear;\n    scene.background = background;\n  }\n  _textureToCubeUV(texture, cubeUVRenderTarget) {\n    const renderer = this._renderer;\n    const isCubeTexture = texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping;\n    if (isCubeTexture) {\n      if (this._cubemapMaterial === null) {\n        this._cubemapMaterial = _getCubemapMaterial();\n      }\n      this._cubemapMaterial.uniforms.flipEnvMap.value = texture.isRenderTargetTexture === false ? -1 : 1;\n    } else {\n      if (this._equirectMaterial === null) {\n        this._equirectMaterial = _getEquirectMaterial();\n      }\n    }\n    const material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n    const mesh = new Mesh(this._lodPlanes[0], material);\n    const uniforms = material.uniforms;\n    uniforms[\"envMap\"].value = texture;\n    const size = this._cubeSize;\n    _setViewport(cubeUVRenderTarget, 0, 0, 3 * size, 2 * size);\n    renderer.setRenderTarget(cubeUVRenderTarget);\n    renderer.render(mesh, _flatCamera);\n  }\n  _applyPMREM(cubeUVRenderTarget) {\n    const renderer = this._renderer;\n    const autoClear = renderer.autoClear;\n    renderer.autoClear = false;\n    for (let i = 1; i < this._lodPlanes.length; i++) {\n      const sigma = Math.sqrt(this._sigmas[i] * this._sigmas[i] - this._sigmas[i - 1] * this._sigmas[i - 1]);\n      const poleAxis = _axisDirections[(i - 1) % _axisDirections.length];\n      this._blur(cubeUVRenderTarget, i - 1, i, sigma, poleAxis);\n    }\n    renderer.autoClear = autoClear;\n  }\n  _blur(cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis) {\n    const pingPongRenderTarget = this._pingPongRenderTarget;\n    this._halfBlur(\n      cubeUVRenderTarget,\n      pingPongRenderTarget,\n      lodIn,\n      lodOut,\n      sigma,\n      \"latitudinal\",\n      poleAxis\n    );\n    this._halfBlur(\n      pingPongRenderTarget,\n      cubeUVRenderTarget,\n      lodOut,\n      lodOut,\n      sigma,\n      \"longitudinal\",\n      poleAxis\n    );\n  }\n  _halfBlur(targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis) {\n    const renderer = this._renderer;\n    const blurMaterial = this._blurMaterial;\n    if (direction !== \"latitudinal\" && direction !== \"longitudinal\") {\n      console.error(\n        \"blur direction must be either latitudinal or longitudinal!\"\n      );\n    }\n    const STANDARD_DEVIATIONS = 3;\n    const blurMesh = new Mesh(this._lodPlanes[lodOut], blurMaterial);\n    const blurUniforms = blurMaterial.uniforms;\n    const pixels = this._sizeLods[lodIn] - 1;\n    const radiansPerPixel = isFinite(sigmaRadians) ? Math.PI / (2 * pixels) : 2 * Math.PI / (2 * MAX_SAMPLES - 1);\n    const sigmaPixels = sigmaRadians / radiansPerPixel;\n    const samples = isFinite(sigmaRadians) ? 1 + Math.floor(STANDARD_DEVIATIONS * sigmaPixels) : MAX_SAMPLES;\n    if (samples > MAX_SAMPLES) {\n      console.warn(`sigmaRadians, ${sigmaRadians}, is too large and will clip, as it requested ${samples} samples when the maximum is set to ${MAX_SAMPLES}`);\n    }\n    const weights = [];\n    let sum = 0;\n    for (let i = 0; i < MAX_SAMPLES; ++i) {\n      const x2 = i / sigmaPixels;\n      const weight = Math.exp(-x2 * x2 / 2);\n      weights.push(weight);\n      if (i === 0) {\n        sum += weight;\n      } else if (i < samples) {\n        sum += 2 * weight;\n      }\n    }\n    for (let i = 0; i < weights.length; i++) {\n      weights[i] = weights[i] / sum;\n    }\n    blurUniforms[\"envMap\"].value = targetIn.texture;\n    blurUniforms[\"samples\"].value = samples;\n    blurUniforms[\"weights\"].value = weights;\n    blurUniforms[\"latitudinal\"].value = direction === \"latitudinal\";\n    if (poleAxis) {\n      blurUniforms[\"poleAxis\"].value = poleAxis;\n    }\n    const { _lodMax } = this;\n    blurUniforms[\"dTheta\"].value = radiansPerPixel;\n    blurUniforms[\"mipInt\"].value = _lodMax - lodIn;\n    const outputSize = this._sizeLods[lodOut];\n    const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n    const y = 4 * (this._cubeSize - outputSize);\n    _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n    renderer.setRenderTarget(targetOut);\n    renderer.render(blurMesh, _flatCamera);\n  }\n}\nfunction _createPlanes(lodMax) {\n  const lodPlanes = [];\n  const sizeLods = [];\n  const sigmas = [];\n  let lod = lodMax;\n  const totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n  for (let i = 0; i < totalLods; i++) {\n    const sizeLod = Math.pow(2, lod);\n    sizeLods.push(sizeLod);\n    let sigma = 1 / sizeLod;\n    if (i > lodMax - LOD_MIN) {\n      sigma = EXTRA_LOD_SIGMA[i - lodMax + LOD_MIN - 1];\n    } else if (i === 0) {\n      sigma = 0;\n    }\n    sigmas.push(sigma);\n    const texelSize = 1 / (sizeLod - 2);\n    const min = -texelSize;\n    const max = 1 + texelSize;\n    const uv1 = [min, min, max, min, max, max, min, min, max, max, min, max];\n    const cubeFaces = 6;\n    const vertices = 6;\n    const positionSize = 3;\n    const uvSize = 2;\n    const faceIndexSize = 1;\n    const position = new Float32Array(positionSize * vertices * cubeFaces);\n    const uv = new Float32Array(uvSize * vertices * cubeFaces);\n    const faceIndex = new Float32Array(faceIndexSize * vertices * cubeFaces);\n    for (let face = 0; face < cubeFaces; face++) {\n      const x = face % 3 * 2 / 3 - 1;\n      const y = face > 2 ? 0 : -1;\n      const coordinates = [\n        x,\n        y,\n        0,\n        x + 2 / 3,\n        y,\n        0,\n        x + 2 / 3,\n        y + 1,\n        0,\n        x,\n        y,\n        0,\n        x + 2 / 3,\n        y + 1,\n        0,\n        x,\n        y + 1,\n        0\n      ];\n      position.set(coordinates, positionSize * vertices * face);\n      uv.set(uv1, uvSize * vertices * face);\n      const fill = [face, face, face, face, face, face];\n      faceIndex.set(fill, faceIndexSize * vertices * face);\n    }\n    const planes = new BufferGeometry();\n    planes.setAttribute(\"position\", new BufferAttribute(position, positionSize));\n    planes.setAttribute(\"uv\", new BufferAttribute(uv, uvSize));\n    planes.setAttribute(\"faceIndex\", new BufferAttribute(faceIndex, faceIndexSize));\n    lodPlanes.push(planes);\n    if (lod > LOD_MIN) {\n      lod--;\n    }\n  }\n  return { lodPlanes, sizeLods, sigmas };\n}\nfunction _createRenderTarget(width, height, params) {\n  const cubeUVRenderTarget = new WebGLRenderTarget(width, height, params);\n  cubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n  cubeUVRenderTarget.texture.name = \"PMREM.cubeUv\";\n  cubeUVRenderTarget.scissorTest = true;\n  return cubeUVRenderTarget;\n}\nfunction _setViewport(target, x, y, width, height) {\n  target.viewport.set(x, y, width, height);\n  target.scissor.set(x, y, width, height);\n}\nfunction _getBlurShader(lodMax, width, height) {\n  const weights = new Float32Array(MAX_SAMPLES);\n  const poleAxis = new Vector3(0, 1, 0);\n  const shaderMaterial = new ShaderMaterial({\n    name: \"SphericalGaussianBlur\",\n    defines: {\n      \"n\": MAX_SAMPLES,\n      \"CUBEUV_TEXEL_WIDTH\": 1 / width,\n      \"CUBEUV_TEXEL_HEIGHT\": 1 / height,\n      \"CUBEUV_MAX_MIP\": `${lodMax}.0`\n    },\n    uniforms: {\n      \"envMap\": { value: null },\n      \"samples\": { value: 1 },\n      \"weights\": { value: weights },\n      \"latitudinal\": { value: false },\n      \"dTheta\": { value: 0 },\n      \"mipInt\": { value: 0 },\n      \"poleAxis\": { value: poleAxis }\n    },\n    vertexShader: _getCommonVertexShader(),\n    fragmentShader: `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n    blending: NoBlending,\n    depthTest: false,\n    depthWrite: false\n  });\n  return shaderMaterial;\n}\nfunction _getEquirectMaterial() {\n  return new ShaderMaterial({\n    name: \"EquirectangularToCubeUV\",\n    uniforms: {\n      \"envMap\": { value: null }\n    },\n    vertexShader: _getCommonVertexShader(),\n    fragmentShader: `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n    blending: NoBlending,\n    depthTest: false,\n    depthWrite: false\n  });\n}\nfunction _getCubemapMaterial() {\n  return new ShaderMaterial({\n    name: \"CubemapToCubeUV\",\n    uniforms: {\n      \"envMap\": { value: null },\n      \"flipEnvMap\": { value: -1 }\n    },\n    vertexShader: _getCommonVertexShader(),\n    fragmentShader: `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n    blending: NoBlending,\n    depthTest: false,\n    depthWrite: false\n  });\n}\nfunction _getCommonVertexShader() {\n  return `\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n}\nfunction WebGLCubeUVMaps(renderer) {\n  let cubeUVmaps = /* @__PURE__ */ new WeakMap();\n  let pmremGenerator = null;\n  function get(texture) {\n    if (texture && texture.isTexture) {\n      const mapping = texture.mapping;\n      const isEquirectMap = mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping;\n      const isCubeMap = mapping === CubeReflectionMapping || mapping === CubeRefractionMapping;\n      if (isEquirectMap || isCubeMap) {\n        if (texture.isRenderTargetTexture && texture.needsPMREMUpdate === true) {\n          texture.needsPMREMUpdate = false;\n          let renderTarget = cubeUVmaps.get(texture);\n          if (pmremGenerator === null)\n            pmremGenerator = new PMREMGenerator(renderer);\n          renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture, renderTarget) : pmremGenerator.fromCubemap(texture, renderTarget);\n          cubeUVmaps.set(texture, renderTarget);\n          return renderTarget.texture;\n        } else {\n          if (cubeUVmaps.has(texture)) {\n            return cubeUVmaps.get(texture).texture;\n          } else {\n            const image = texture.image;\n            if (isEquirectMap && image && image.height > 0 || isCubeMap && image && isCubeTextureComplete(image)) {\n              if (pmremGenerator === null)\n                pmremGenerator = new PMREMGenerator(renderer);\n              const renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture) : pmremGenerator.fromCubemap(texture);\n              cubeUVmaps.set(texture, renderTarget);\n              texture.addEventListener(\"dispose\", onTextureDispose);\n              return renderTarget.texture;\n            } else {\n              return null;\n            }\n          }\n        }\n      }\n    }\n    return texture;\n  }\n  function isCubeTextureComplete(image) {\n    let count = 0;\n    const length = 6;\n    for (let i = 0; i < length; i++) {\n      if (image[i] !== void 0)\n        count++;\n    }\n    return count === length;\n  }\n  function onTextureDispose(event) {\n    const texture = event.target;\n    texture.removeEventListener(\"dispose\", onTextureDispose);\n    const cubemapUV = cubeUVmaps.get(texture);\n    if (cubemapUV !== void 0) {\n      cubeUVmaps.delete(texture);\n      cubemapUV.dispose();\n    }\n  }\n  function dispose() {\n    cubeUVmaps = /* @__PURE__ */ new WeakMap();\n    if (pmremGenerator !== null) {\n      pmremGenerator.dispose();\n      pmremGenerator = null;\n    }\n  }\n  return {\n    get,\n    dispose\n  };\n}\nfunction WebGLExtensions(gl) {\n  const extensions = {};\n  function getExtension(name) {\n    if (extensions[name] !== void 0) {\n      return extensions[name];\n    }\n    let extension;\n    switch (name) {\n      case \"WEBGL_depth_texture\":\n        extension = gl.getExtension(\"WEBGL_depth_texture\") || gl.getExtension(\"MOZ_WEBGL_depth_texture\") || gl.getExtension(\"WEBKIT_WEBGL_depth_texture\");\n        break;\n      case \"EXT_texture_filter_anisotropic\":\n        extension = gl.getExtension(\"EXT_texture_filter_anisotropic\") || gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\") || gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\");\n        break;\n      case \"WEBGL_compressed_texture_s3tc\":\n        extension = gl.getExtension(\"WEBGL_compressed_texture_s3tc\") || gl.getExtension(\"MOZ_WEBGL_compressed_texture_s3tc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_s3tc\");\n        break;\n      case \"WEBGL_compressed_texture_pvrtc\":\n        extension = gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\");\n        break;\n      default:\n        extension = gl.getExtension(name);\n    }\n    extensions[name] = extension;\n    return extension;\n  }\n  return {\n    has: function(name) {\n      return getExtension(name) !== null;\n    },\n    init: function(capabilities) {\n      if (capabilities.isWebGL2) {\n        getExtension(\"EXT_color_buffer_float\");\n      } else {\n        getExtension(\"WEBGL_depth_texture\");\n        getExtension(\"OES_texture_float\");\n        getExtension(\"OES_texture_half_float\");\n        getExtension(\"OES_texture_half_float_linear\");\n        getExtension(\"OES_standard_derivatives\");\n        getExtension(\"OES_element_index_uint\");\n        getExtension(\"OES_vertex_array_object\");\n        getExtension(\"ANGLE_instanced_arrays\");\n      }\n      getExtension(\"OES_texture_float_linear\");\n      getExtension(\"EXT_color_buffer_half_float\");\n      getExtension(\"WEBGL_multisampled_render_to_texture\");\n    },\n    get: function(name) {\n      const extension = getExtension(name);\n      if (extension === null) {\n        console.warn(\"THREE.WebGLRenderer: \" + name + \" extension not supported.\");\n      }\n      return extension;\n    }\n  };\n}\nfunction WebGLGeometries(gl, attributes, info, bindingStates) {\n  const geometries = {};\n  const wireframeAttributes = /* @__PURE__ */ new WeakMap();\n  function onGeometryDispose(event) {\n    const geometry = event.target;\n    if (geometry.index !== null) {\n      attributes.remove(geometry.index);\n    }\n    for (const name in geometry.attributes) {\n      attributes.remove(geometry.attributes[name]);\n    }\n    geometry.removeEventListener(\"dispose\", onGeometryDispose);\n    delete geometries[geometry.id];\n    const attribute = wireframeAttributes.get(geometry);\n    if (attribute) {\n      attributes.remove(attribute);\n      wireframeAttributes.delete(geometry);\n    }\n    bindingStates.releaseStatesOfGeometry(geometry);\n    if (geometry.isInstancedBufferGeometry === true) {\n      delete geometry._maxInstanceCount;\n    }\n    info.memory.geometries--;\n  }\n  function get(object, geometry) {\n    if (geometries[geometry.id] === true)\n      return geometry;\n    geometry.addEventListener(\"dispose\", onGeometryDispose);\n    geometries[geometry.id] = true;\n    info.memory.geometries++;\n    return geometry;\n  }\n  function update(geometry) {\n    const geometryAttributes = geometry.attributes;\n    for (const name in geometryAttributes) {\n      attributes.update(geometryAttributes[name], 34962);\n    }\n    const morphAttributes = geometry.morphAttributes;\n    for (const name in morphAttributes) {\n      const array = morphAttributes[name];\n      for (let i = 0, l = array.length; i < l; i++) {\n        attributes.update(array[i], 34962);\n      }\n    }\n  }\n  function updateWireframeAttribute(geometry) {\n    const indices = [];\n    const geometryIndex = geometry.index;\n    const geometryPosition = geometry.attributes.position;\n    let version = 0;\n    if (geometryIndex !== null) {\n      const array = geometryIndex.array;\n      version = geometryIndex.version;\n      for (let i = 0, l = array.length; i < l; i += 3) {\n        const a = array[i + 0];\n        const b = array[i + 1];\n        const c = array[i + 2];\n        indices.push(a, b, b, c, c, a);\n      }\n    } else {\n      const array = geometryPosition.array;\n      version = geometryPosition.version;\n      for (let i = 0, l = array.length / 3 - 1; i < l; i += 3) {\n        const a = i + 0;\n        const b = i + 1;\n        const c = i + 2;\n        indices.push(a, b, b, c, c, a);\n      }\n    }\n    const attribute = new (arrayNeedsUint32(indices) ? Uint32BufferAttribute : Uint16BufferAttribute)(indices, 1);\n    attribute.version = version;\n    const previousAttribute = wireframeAttributes.get(geometry);\n    if (previousAttribute)\n      attributes.remove(previousAttribute);\n    wireframeAttributes.set(geometry, attribute);\n  }\n  function getWireframeAttribute(geometry) {\n    const currentAttribute = wireframeAttributes.get(geometry);\n    if (currentAttribute) {\n      const geometryIndex = geometry.index;\n      if (geometryIndex !== null) {\n        if (currentAttribute.version < geometryIndex.version) {\n          updateWireframeAttribute(geometry);\n        }\n      }\n    } else {\n      updateWireframeAttribute(geometry);\n    }\n    return wireframeAttributes.get(geometry);\n  }\n  return {\n    get,\n    update,\n    getWireframeAttribute\n  };\n}\nfunction WebGLIndexedBufferRenderer(gl, extensions, info, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  let mode;\n  function setMode(value) {\n    mode = value;\n  }\n  let type, bytesPerElement;\n  function setIndex(value) {\n    type = value.type;\n    bytesPerElement = value.bytesPerElement;\n  }\n  function render(start, count) {\n    gl.drawElements(mode, count, type, start * bytesPerElement);\n    info.update(count, mode, 1);\n  }\n  function renderInstances(start, count, primcount) {\n    if (primcount === 0)\n      return;\n    let extension, methodName;\n    if (isWebGL2) {\n      extension = gl;\n      methodName = \"drawElementsInstanced\";\n    } else {\n      extension = extensions.get(\"ANGLE_instanced_arrays\");\n      methodName = \"drawElementsInstancedANGLE\";\n      if (extension === null) {\n        console.error(\"THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.\");\n        return;\n      }\n    }\n    extension[methodName](mode, count, type, start * bytesPerElement, primcount);\n    info.update(count, mode, primcount);\n  }\n  this.setMode = setMode;\n  this.setIndex = setIndex;\n  this.render = render;\n  this.renderInstances = renderInstances;\n}\nfunction WebGLInfo(gl) {\n  const memory = {\n    geometries: 0,\n    textures: 0\n  };\n  const render = {\n    frame: 0,\n    calls: 0,\n    triangles: 0,\n    points: 0,\n    lines: 0\n  };\n  function update(count, mode, instanceCount) {\n    render.calls++;\n    switch (mode) {\n      case 4:\n        render.triangles += instanceCount * (count / 3);\n        break;\n      case 1:\n        render.lines += instanceCount * (count / 2);\n        break;\n      case 3:\n        render.lines += instanceCount * (count - 1);\n        break;\n      case 2:\n        render.lines += instanceCount * count;\n        break;\n      case 0:\n        render.points += instanceCount * count;\n        break;\n      default:\n        console.error(\"THREE.WebGLInfo: Unknown draw mode:\", mode);\n        break;\n    }\n  }\n  function reset() {\n    render.frame++;\n    render.calls = 0;\n    render.triangles = 0;\n    render.points = 0;\n    render.lines = 0;\n  }\n  return {\n    memory,\n    render,\n    programs: null,\n    autoReset: true,\n    reset,\n    update\n  };\n}\nfunction numericalSort(a, b) {\n  return a[0] - b[0];\n}\nfunction absNumericalSort(a, b) {\n  return Math.abs(b[1]) - Math.abs(a[1]);\n}\nfunction denormalize(morph, attribute) {\n  let denominator = 1;\n  const array = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;\n  if (array instanceof Int8Array)\n    denominator = 127;\n  else if (array instanceof Uint8Array)\n    denominator = 255;\n  else if (array instanceof Uint16Array)\n    denominator = 65535;\n  else if (array instanceof Int16Array)\n    denominator = 32767;\n  else if (array instanceof Int32Array)\n    denominator = 2147483647;\n  else\n    console.error(\"THREE.WebGLMorphtargets: Unsupported morph attribute data type: \", array);\n  morph.divideScalar(denominator);\n}\nfunction WebGLMorphtargets(gl, capabilities, textures) {\n  const influencesList = {};\n  const morphInfluences = new Float32Array(8);\n  const morphTextures = /* @__PURE__ */ new WeakMap();\n  const morph = new Vector4();\n  const workInfluences = [];\n  for (let i = 0; i < 8; i++) {\n    workInfluences[i] = [i, 0];\n  }\n  function update(object, geometry, material, program) {\n    const objectInfluences = object.morphTargetInfluences;\n    if (capabilities.isWebGL2 === true) {\n      const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n      const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0;\n      let entry = morphTextures.get(geometry);\n      if (entry === void 0 || entry.count !== morphTargetsCount) {\n        let disposeTexture = function() {\n          texture.dispose();\n          morphTextures.delete(geometry);\n          geometry.removeEventListener(\"dispose\", disposeTexture);\n        };\n        if (entry !== void 0)\n          entry.texture.dispose();\n        const hasMorphPosition = geometry.morphAttributes.position !== void 0;\n        const hasMorphNormals = geometry.morphAttributes.normal !== void 0;\n        const hasMorphColors = geometry.morphAttributes.color !== void 0;\n        const morphTargets = geometry.morphAttributes.position || [];\n        const morphNormals = geometry.morphAttributes.normal || [];\n        const morphColors = geometry.morphAttributes.color || [];\n        let vertexDataCount = 0;\n        if (hasMorphPosition === true)\n          vertexDataCount = 1;\n        if (hasMorphNormals === true)\n          vertexDataCount = 2;\n        if (hasMorphColors === true)\n          vertexDataCount = 3;\n        let width = geometry.attributes.position.count * vertexDataCount;\n        let height = 1;\n        if (width > capabilities.maxTextureSize) {\n          height = Math.ceil(width / capabilities.maxTextureSize);\n          width = capabilities.maxTextureSize;\n        }\n        const buffer = new Float32Array(width * height * 4 * morphTargetsCount);\n        const texture = new DataArrayTexture(buffer, width, height, morphTargetsCount);\n        texture.type = FloatType;\n        texture.needsUpdate = true;\n        const vertexDataStride = vertexDataCount * 4;\n        for (let i = 0; i < morphTargetsCount; i++) {\n          const morphTarget = morphTargets[i];\n          const morphNormal = morphNormals[i];\n          const morphColor = morphColors[i];\n          const offset = width * height * 4 * i;\n          for (let j = 0; j < morphTarget.count; j++) {\n            const stride = j * vertexDataStride;\n            if (hasMorphPosition === true) {\n              morph.fromBufferAttribute(morphTarget, j);\n              if (morphTarget.normalized === true)\n                denormalize(morph, morphTarget);\n              buffer[offset + stride + 0] = morph.x;\n              buffer[offset + stride + 1] = morph.y;\n              buffer[offset + stride + 2] = morph.z;\n              buffer[offset + stride + 3] = 0;\n            }\n            if (hasMorphNormals === true) {\n              morph.fromBufferAttribute(morphNormal, j);\n              if (morphNormal.normalized === true)\n                denormalize(morph, morphNormal);\n              buffer[offset + stride + 4] = morph.x;\n              buffer[offset + stride + 5] = morph.y;\n              buffer[offset + stride + 6] = morph.z;\n              buffer[offset + stride + 7] = 0;\n            }\n            if (hasMorphColors === true) {\n              morph.fromBufferAttribute(morphColor, j);\n              if (morphColor.normalized === true)\n                denormalize(morph, morphColor);\n              buffer[offset + stride + 8] = morph.x;\n              buffer[offset + stride + 9] = morph.y;\n              buffer[offset + stride + 10] = morph.z;\n              buffer[offset + stride + 11] = morphColor.itemSize === 4 ? morph.w : 1;\n            }\n          }\n        }\n        entry = {\n          count: morphTargetsCount,\n          texture,\n          size: new Vector2(width, height)\n        };\n        morphTextures.set(geometry, entry);\n        geometry.addEventListener(\"dispose\", disposeTexture);\n      }\n      let morphInfluencesSum = 0;\n      for (let i = 0; i < objectInfluences.length; i++) {\n        morphInfluencesSum += objectInfluences[i];\n      }\n      const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n      program.getUniforms().setValue(gl, \"morphTargetBaseInfluence\", morphBaseInfluence);\n      program.getUniforms().setValue(gl, \"morphTargetInfluences\", objectInfluences);\n      program.getUniforms().setValue(gl, \"morphTargetsTexture\", entry.texture, textures);\n      program.getUniforms().setValue(gl, \"morphTargetsTextureSize\", entry.size);\n    } else {\n      const length = objectInfluences === void 0 ? 0 : objectInfluences.length;\n      let influences = influencesList[geometry.id];\n      if (influences === void 0 || influences.length !== length) {\n        influences = [];\n        for (let i = 0; i < length; i++) {\n          influences[i] = [i, 0];\n        }\n        influencesList[geometry.id] = influences;\n      }\n      for (let i = 0; i < length; i++) {\n        const influence = influences[i];\n        influence[0] = i;\n        influence[1] = objectInfluences[i];\n      }\n      influences.sort(absNumericalSort);\n      for (let i = 0; i < 8; i++) {\n        if (i < length && influences[i][1]) {\n          workInfluences[i][0] = influences[i][0];\n          workInfluences[i][1] = influences[i][1];\n        } else {\n          workInfluences[i][0] = Number.MAX_SAFE_INTEGER;\n          workInfluences[i][1] = 0;\n        }\n      }\n      workInfluences.sort(numericalSort);\n      const morphTargets = geometry.morphAttributes.position;\n      const morphNormals = geometry.morphAttributes.normal;\n      let morphInfluencesSum = 0;\n      for (let i = 0; i < 8; i++) {\n        const influence = workInfluences[i];\n        const index = influence[0];\n        const value = influence[1];\n        if (index !== Number.MAX_SAFE_INTEGER && value) {\n          if (morphTargets && geometry.getAttribute(\"morphTarget\" + i) !== morphTargets[index]) {\n            geometry.setAttribute(\"morphTarget\" + i, morphTargets[index]);\n          }\n          if (morphNormals && geometry.getAttribute(\"morphNormal\" + i) !== morphNormals[index]) {\n            geometry.setAttribute(\"morphNormal\" + i, morphNormals[index]);\n          }\n          morphInfluences[i] = value;\n          morphInfluencesSum += value;\n        } else {\n          if (morphTargets && geometry.hasAttribute(\"morphTarget\" + i) === true) {\n            geometry.deleteAttribute(\"morphTarget\" + i);\n          }\n          if (morphNormals && geometry.hasAttribute(\"morphNormal\" + i) === true) {\n            geometry.deleteAttribute(\"morphNormal\" + i);\n          }\n          morphInfluences[i] = 0;\n        }\n      }\n      const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n      program.getUniforms().setValue(gl, \"morphTargetBaseInfluence\", morphBaseInfluence);\n      program.getUniforms().setValue(gl, \"morphTargetInfluences\", morphInfluences);\n    }\n  }\n  return {\n    update\n  };\n}\nfunction WebGLObjects(gl, geometries, attributes, info) {\n  let updateMap = /* @__PURE__ */ new WeakMap();\n  function update(object) {\n    const frame = info.render.frame;\n    const geometry = object.geometry;\n    const buffergeometry = geometries.get(object, geometry);\n    if (updateMap.get(buffergeometry) !== frame) {\n      geometries.update(buffergeometry);\n      updateMap.set(buffergeometry, frame);\n    }\n    if (object.isInstancedMesh) {\n      if (object.hasEventListener(\"dispose\", onInstancedMeshDispose) === false) {\n        object.addEventListener(\"dispose\", onInstancedMeshDispose);\n      }\n      attributes.update(object.instanceMatrix, 34962);\n      if (object.instanceColor !== null) {\n        attributes.update(object.instanceColor, 34962);\n      }\n    }\n    return buffergeometry;\n  }\n  function dispose() {\n    updateMap = /* @__PURE__ */ new WeakMap();\n  }\n  function onInstancedMeshDispose(event) {\n    const instancedMesh = event.target;\n    instancedMesh.removeEventListener(\"dispose\", onInstancedMeshDispose);\n    attributes.remove(instancedMesh.instanceMatrix);\n    if (instancedMesh.instanceColor !== null)\n      attributes.remove(instancedMesh.instanceColor);\n  }\n  return {\n    update,\n    dispose\n  };\n}\nconst emptyTexture = /* @__PURE__ */ new Texture();\nconst emptyArrayTexture = /* @__PURE__ */ new DataArrayTexture();\nconst empty3dTexture = /* @__PURE__ */ new Data3DTexture();\nconst emptyCubeTexture = /* @__PURE__ */ new CubeTexture();\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\nconst mat4array = new Float32Array(16);\nconst mat3array = new Float32Array(9);\nconst mat2array = new Float32Array(4);\nfunction flatten(array, nBlocks, blockSize) {\n  const firstElem = array[0];\n  if (firstElem <= 0 || firstElem > 0)\n    return array;\n  const n = nBlocks * blockSize;\n  let r = arrayCacheF32[n];\n  if (r === void 0) {\n    r = new Float32Array(n);\n    arrayCacheF32[n] = r;\n  }\n  if (nBlocks !== 0) {\n    firstElem.toArray(r, 0);\n    for (let i = 1, offset = 0; i !== nBlocks; ++i) {\n      offset += blockSize;\n      array[i].toArray(r, offset);\n    }\n  }\n  return r;\n}\nfunction arraysEqual(a, b) {\n  if (a.length !== b.length)\n    return false;\n  for (let i = 0, l = a.length; i < l; i++) {\n    if (a[i] !== b[i])\n      return false;\n  }\n  return true;\n}\nfunction copyArray(a, b) {\n  for (let i = 0, l = b.length; i < l; i++) {\n    a[i] = b[i];\n  }\n}\nfunction allocTexUnits(textures, n) {\n  let r = arrayCacheI32[n];\n  if (r === void 0) {\n    r = new Int32Array(n);\n    arrayCacheI32[n] = r;\n  }\n  for (let i = 0; i !== n; ++i) {\n    r[i] = textures.allocateTextureUnit();\n  }\n  return r;\n}\nfunction setValueV1f(gl, v) {\n  const cache = this.cache;\n  if (cache[0] === v)\n    return;\n  gl.uniform1f(this.addr, v);\n  cache[0] = v;\n}\nfunction setValueV2f(gl, v) {\n  const cache = this.cache;\n  if (v.x !== void 0) {\n    if (cache[0] !== v.x || cache[1] !== v.y) {\n      gl.uniform2f(this.addr, v.x, v.y);\n      cache[0] = v.x;\n      cache[1] = v.y;\n    }\n  } else {\n    if (arraysEqual(cache, v))\n      return;\n    gl.uniform2fv(this.addr, v);\n    copyArray(cache, v);\n  }\n}\nfunction setValueV3f(gl, v) {\n  const cache = this.cache;\n  if (v.x !== void 0) {\n    if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) {\n      gl.uniform3f(this.addr, v.x, v.y, v.z);\n      cache[0] = v.x;\n      cache[1] = v.y;\n      cache[2] = v.z;\n    }\n  } else if (v.r !== void 0) {\n    if (cache[0] !== v.r || cache[1] !== v.g || cache[2] !== v.b) {\n      gl.uniform3f(this.addr, v.r, v.g, v.b);\n      cache[0] = v.r;\n      cache[1] = v.g;\n      cache[2] = v.b;\n    }\n  } else {\n    if (arraysEqual(cache, v))\n      return;\n    gl.uniform3fv(this.addr, v);\n    copyArray(cache, v);\n  }\n}\nfunction setValueV4f(gl, v) {\n  const cache = this.cache;\n  if (v.x !== void 0) {\n    if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) {\n      gl.uniform4f(this.addr, v.x, v.y, v.z, v.w);\n      cache[0] = v.x;\n      cache[1] = v.y;\n      cache[2] = v.z;\n      cache[3] = v.w;\n    }\n  } else {\n    if (arraysEqual(cache, v))\n      return;\n    gl.uniform4fv(this.addr, v);\n    copyArray(cache, v);\n  }\n}\nfunction setValueM2(gl, v) {\n  const cache = this.cache;\n  const elements = v.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache, v))\n      return;\n    gl.uniformMatrix2fv(this.addr, false, v);\n    copyArray(cache, v);\n  } else {\n    if (arraysEqual(cache, elements))\n      return;\n    mat2array.set(elements);\n    gl.uniformMatrix2fv(this.addr, false, mat2array);\n    copyArray(cache, elements);\n  }\n}\nfunction setValueM3(gl, v) {\n  const cache = this.cache;\n  const elements = v.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache, v))\n      return;\n    gl.uniformMatrix3fv(this.addr, false, v);\n    copyArray(cache, v);\n  } else {\n    if (arraysEqual(cache, elements))\n      return;\n    mat3array.set(elements);\n    gl.uniformMatrix3fv(this.addr, false, mat3array);\n    copyArray(cache, elements);\n  }\n}\nfunction setValueM4(gl, v) {\n  const cache = this.cache;\n  const elements = v.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache, v))\n      return;\n    gl.uniformMatrix4fv(this.addr, false, v);\n    copyArray(cache, v);\n  } else {\n    if (arraysEqual(cache, elements))\n      return;\n    mat4array.set(elements);\n    gl.uniformMatrix4fv(this.addr, false, mat4array);\n    copyArray(cache, elements);\n  }\n}\nfunction setValueV1i(gl, v) {\n  const cache = this.cache;\n  if (cache[0] === v)\n    return;\n  gl.uniform1i(this.addr, v);\n  cache[0] = v;\n}\nfunction setValueV2i(gl, v) {\n  const cache = this.cache;\n  if (arraysEqual(cache, v))\n    return;\n  gl.uniform2iv(this.addr, v);\n  copyArray(cache, v);\n}\nfunction setValueV3i(gl, v) {\n  const cache = this.cache;\n  if (arraysEqual(cache, v))\n    return;\n  gl.uniform3iv(this.addr, v);\n  copyArray(cache, v);\n}\nfunction setValueV4i(gl, v) {\n  const cache = this.cache;\n  if (arraysEqual(cache, v))\n    return;\n  gl.uniform4iv(this.addr, v);\n  copyArray(cache, v);\n}\nfunction setValueV1ui(gl, v) {\n  const cache = this.cache;\n  if (cache[0] === v)\n    return;\n  gl.uniform1ui(this.addr, v);\n  cache[0] = v;\n}\nfunction setValueV2ui(gl, v) {\n  const cache = this.cache;\n  if (arraysEqual(cache, v))\n    return;\n  gl.uniform2uiv(this.addr, v);\n  copyArray(cache, v);\n}\nfunction setValueV3ui(gl, v) {\n  const cache = this.cache;\n  if (arraysEqual(cache, v))\n    return;\n  gl.uniform3uiv(this.addr, v);\n  copyArray(cache, v);\n}\nfunction setValueV4ui(gl, v) {\n  const cache = this.cache;\n  if (arraysEqual(cache, v))\n    return;\n  gl.uniform4uiv(this.addr, v);\n  copyArray(cache, v);\n}\nfunction setValueT1(gl, v, textures) {\n  const cache = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache[0] = unit;\n  }\n  textures.setTexture2D(v || emptyTexture, unit);\n}\nfunction setValueT3D1(gl, v, textures) {\n  const cache = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache[0] = unit;\n  }\n  textures.setTexture3D(v || empty3dTexture, unit);\n}\nfunction setValueT6(gl, v, textures) {\n  const cache = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache[0] = unit;\n  }\n  textures.setTextureCube(v || emptyCubeTexture, unit);\n}\nfunction setValueT2DArray1(gl, v, textures) {\n  const cache = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache[0] = unit;\n  }\n  textures.setTexture2DArray(v || emptyArrayTexture, unit);\n}\nfunction getSingularSetter(type) {\n  switch (type) {\n    case 5126:\n      return setValueV1f;\n    case 35664:\n      return setValueV2f;\n    case 35665:\n      return setValueV3f;\n    case 35666:\n      return setValueV4f;\n    case 35674:\n      return setValueM2;\n    case 35675:\n      return setValueM3;\n    case 35676:\n      return setValueM4;\n    case 5124:\n    case 35670:\n      return setValueV1i;\n    case 35667:\n    case 35671:\n      return setValueV2i;\n    case 35668:\n    case 35672:\n      return setValueV3i;\n    case 35669:\n    case 35673:\n      return setValueV4i;\n    case 5125:\n      return setValueV1ui;\n    case 36294:\n      return setValueV2ui;\n    case 36295:\n      return setValueV3ui;\n    case 36296:\n      return setValueV4ui;\n    case 35678:\n    case 36198:\n    case 36298:\n    case 36306:\n    case 35682:\n      return setValueT1;\n    case 35679:\n    case 36299:\n    case 36307:\n      return setValueT3D1;\n    case 35680:\n    case 36300:\n    case 36308:\n    case 36293:\n      return setValueT6;\n    case 36289:\n    case 36303:\n    case 36311:\n    case 36292:\n      return setValueT2DArray1;\n  }\n}\nfunction setValueV1fArray(gl, v) {\n  gl.uniform1fv(this.addr, v);\n}\nfunction setValueV2fArray(gl, v) {\n  const data = flatten(v, this.size, 2);\n  gl.uniform2fv(this.addr, data);\n}\nfunction setValueV3fArray(gl, v) {\n  const data = flatten(v, this.size, 3);\n  gl.uniform3fv(this.addr, data);\n}\nfunction setValueV4fArray(gl, v) {\n  const data = flatten(v, this.size, 4);\n  gl.uniform4fv(this.addr, data);\n}\nfunction setValueM2Array(gl, v) {\n  const data = flatten(v, this.size, 4);\n  gl.uniformMatrix2fv(this.addr, false, data);\n}\nfunction setValueM3Array(gl, v) {\n  const data = flatten(v, this.size, 9);\n  gl.uniformMatrix3fv(this.addr, false, data);\n}\nfunction setValueM4Array(gl, v) {\n  const data = flatten(v, this.size, 16);\n  gl.uniformMatrix4fv(this.addr, false, data);\n}\nfunction setValueV1iArray(gl, v) {\n  gl.uniform1iv(this.addr, v);\n}\nfunction setValueV2iArray(gl, v) {\n  gl.uniform2iv(this.addr, v);\n}\nfunction setValueV3iArray(gl, v) {\n  gl.uniform3iv(this.addr, v);\n}\nfunction setValueV4iArray(gl, v) {\n  gl.uniform4iv(this.addr, v);\n}\nfunction setValueV1uiArray(gl, v) {\n  gl.uniform1uiv(this.addr, v);\n}\nfunction setValueV2uiArray(gl, v) {\n  gl.uniform2uiv(this.addr, v);\n}\nfunction setValueV3uiArray(gl, v) {\n  gl.uniform3uiv(this.addr, v);\n}\nfunction setValueV4uiArray(gl, v) {\n  gl.uniform4uiv(this.addr, v);\n}\nfunction setValueT1Array(gl, v, textures) {\n  const n = v.length;\n  const units = allocTexUnits(textures, n);\n  gl.uniform1iv(this.addr, units);\n  for (let i = 0; i !== n; ++i) {\n    textures.setTexture2D(v[i] || emptyTexture, units[i]);\n  }\n}\nfunction setValueT3DArray(gl, v, textures) {\n  const n = v.length;\n  const units = allocTexUnits(textures, n);\n  gl.uniform1iv(this.addr, units);\n  for (let i = 0; i !== n; ++i) {\n    textures.setTexture3D(v[i] || empty3dTexture, units[i]);\n  }\n}\nfunction setValueT6Array(gl, v, textures) {\n  const n = v.length;\n  const units = allocTexUnits(textures, n);\n  gl.uniform1iv(this.addr, units);\n  for (let i = 0; i !== n; ++i) {\n    textures.setTextureCube(v[i] || emptyCubeTexture, units[i]);\n  }\n}\nfunction setValueT2DArrayArray(gl, v, textures) {\n  const n = v.length;\n  const units = allocTexUnits(textures, n);\n  gl.uniform1iv(this.addr, units);\n  for (let i = 0; i !== n; ++i) {\n    textures.setTexture2DArray(v[i] || emptyArrayTexture, units[i]);\n  }\n}\nfunction getPureArraySetter(type) {\n  switch (type) {\n    case 5126:\n      return setValueV1fArray;\n    case 35664:\n      return setValueV2fArray;\n    case 35665:\n      return setValueV3fArray;\n    case 35666:\n      return setValueV4fArray;\n    case 35674:\n      return setValueM2Array;\n    case 35675:\n      return setValueM3Array;\n    case 35676:\n      return setValueM4Array;\n    case 5124:\n    case 35670:\n      return setValueV1iArray;\n    case 35667:\n    case 35671:\n      return setValueV2iArray;\n    case 35668:\n    case 35672:\n      return setValueV3iArray;\n    case 35669:\n    case 35673:\n      return setValueV4iArray;\n    case 5125:\n      return setValueV1uiArray;\n    case 36294:\n      return setValueV2uiArray;\n    case 36295:\n      return setValueV3uiArray;\n    case 36296:\n      return setValueV4uiArray;\n    case 35678:\n    case 36198:\n    case 36298:\n    case 36306:\n    case 35682:\n      return setValueT1Array;\n    case 35679:\n    case 36299:\n    case 36307:\n      return setValueT3DArray;\n    case 35680:\n    case 36300:\n    case 36308:\n    case 36293:\n      return setValueT6Array;\n    case 36289:\n    case 36303:\n    case 36311:\n    case 36292:\n      return setValueT2DArrayArray;\n  }\n}\nclass SingleUniform {\n  constructor(id2, activeInfo, addr) {\n    this.id = id2;\n    this.addr = addr;\n    this.cache = [];\n    this.setValue = getSingularSetter(activeInfo.type);\n  }\n}\nclass PureArrayUniform {\n  constructor(id2, activeInfo, addr) {\n    this.id = id2;\n    this.addr = addr;\n    this.cache = [];\n    this.size = activeInfo.size;\n    this.setValue = getPureArraySetter(activeInfo.type);\n  }\n}\nclass StructuredUniform {\n  constructor(id2) {\n    this.id = id2;\n    this.seq = [];\n    this.map = {};\n  }\n  setValue(gl, value, textures) {\n    const seq = this.seq;\n    for (let i = 0, n = seq.length; i !== n; ++i) {\n      const u = seq[i];\n      u.setValue(gl, value[u.id], textures);\n    }\n  }\n}\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\nfunction addUniform(container, uniformObject) {\n  container.seq.push(uniformObject);\n  container.map[uniformObject.id] = uniformObject;\n}\nfunction parseUniform(activeInfo, addr, container) {\n  const path = activeInfo.name, pathLength = path.length;\n  RePathPart.lastIndex = 0;\n  while (true) {\n    const match = RePathPart.exec(path), matchEnd = RePathPart.lastIndex;\n    let id2 = match[1];\n    const idIsIndex = match[2] === \"]\", subscript = match[3];\n    if (idIsIndex)\n      id2 = id2 | 0;\n    if (subscript === void 0 || subscript === \"[\" && matchEnd + 2 === pathLength) {\n      addUniform(container, subscript === void 0 ? new SingleUniform(id2, activeInfo, addr) : new PureArrayUniform(id2, activeInfo, addr));\n      break;\n    } else {\n      const map = container.map;\n      let next = map[id2];\n      if (next === void 0) {\n        next = new StructuredUniform(id2);\n        addUniform(container, next);\n      }\n      container = next;\n    }\n  }\n}\nclass WebGLUniforms {\n  constructor(gl, program) {\n    this.seq = [];\n    this.map = {};\n    const n = gl.getProgramParameter(program, 35718);\n    for (let i = 0; i < n; ++i) {\n      const info = gl.getActiveUniform(program, i), addr = gl.getUniformLocation(program, info.name);\n      parseUniform(info, addr, this);\n    }\n  }\n  setValue(gl, name, value, textures) {\n    const u = this.map[name];\n    if (u !== void 0)\n      u.setValue(gl, value, textures);\n  }\n  setOptional(gl, object, name) {\n    const v = object[name];\n    if (v !== void 0)\n      this.setValue(gl, name, v);\n  }\n  static upload(gl, seq, values, textures) {\n    for (let i = 0, n = seq.length; i !== n; ++i) {\n      const u = seq[i], v = values[u.id];\n      if (v.needsUpdate !== false) {\n        u.setValue(gl, v.value, textures);\n      }\n    }\n  }\n  static seqWithValue(seq, values) {\n    const r = [];\n    for (let i = 0, n = seq.length; i !== n; ++i) {\n      const u = seq[i];\n      if (u.id in values)\n        r.push(u);\n    }\n    return r;\n  }\n}\nfunction WebGLShader(gl, type, string) {\n  const shader = gl.createShader(type);\n  gl.shaderSource(shader, string);\n  gl.compileShader(shader);\n  return shader;\n}\nlet programIdCount = 0;\nfunction handleSource(string, errorLine) {\n  const lines = string.split(\"\\n\");\n  const lines2 = [];\n  const from = Math.max(errorLine - 6, 0);\n  const to = Math.min(errorLine + 6, lines.length);\n  for (let i = from; i < to; i++) {\n    const line = i + 1;\n    lines2.push(`${line === errorLine ? \">\" : \" \"} ${line}: ${lines[i]}`);\n  }\n  return lines2.join(\"\\n\");\n}\nfunction getEncodingComponents(encoding) {\n  switch (encoding) {\n    case LinearEncoding:\n      return [\"Linear\", \"( value )\"];\n    case sRGBEncoding:\n      return [\"sRGB\", \"( value )\"];\n    default:\n      console.warn(\"THREE.WebGLProgram: Unsupported encoding:\", encoding);\n      return [\"Linear\", \"( value )\"];\n  }\n}\nfunction getShaderErrors(gl, shader, type) {\n  const status = gl.getShaderParameter(shader, 35713);\n  const errors = gl.getShaderInfoLog(shader).trim();\n  if (status && errors === \"\")\n    return \"\";\n  const errorMatches = /ERROR: 0:(\\d+)/.exec(errors);\n  if (errorMatches) {\n    const errorLine = parseInt(errorMatches[1]);\n    return type.toUpperCase() + \"\\n\\n\" + errors + \"\\n\\n\" + handleSource(gl.getShaderSource(shader), errorLine);\n  } else {\n    return errors;\n  }\n}\nfunction getTexelEncodingFunction(functionName, encoding) {\n  const components = getEncodingComponents(encoding);\n  return \"vec4 \" + functionName + \"( vec4 value ) { return LinearTo\" + components[0] + components[1] + \"; }\";\n}\nfunction getToneMappingFunction(functionName, toneMapping) {\n  let toneMappingName;\n  switch (toneMapping) {\n    case LinearToneMapping:\n      toneMappingName = \"Linear\";\n      break;\n    case ReinhardToneMapping:\n      toneMappingName = \"Reinhard\";\n      break;\n    case CineonToneMapping:\n      toneMappingName = \"OptimizedCineon\";\n      break;\n    case ACESFilmicToneMapping:\n      toneMappingName = \"ACESFilmic\";\n      break;\n    case CustomToneMapping:\n      toneMappingName = \"Custom\";\n      break;\n    default:\n      console.warn(\"THREE.WebGLProgram: Unsupported toneMapping:\", toneMapping);\n      toneMappingName = \"Linear\";\n  }\n  return \"vec3 \" + functionName + \"( vec3 color ) { return \" + toneMappingName + \"ToneMapping( color ); }\";\n}\nfunction generateExtensions(parameters) {\n  const chunks = [\n    parameters.extensionDerivatives || !!parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === \"physical\" ? \"#extension GL_OES_standard_derivatives : enable\" : \"\",\n    (parameters.extensionFragDepth || parameters.logarithmicDepthBuffer) && parameters.rendererExtensionFragDepth ? \"#extension GL_EXT_frag_depth : enable\" : \"\",\n    parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ? \"#extension GL_EXT_draw_buffers : require\" : \"\",\n    (parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission) && parameters.rendererExtensionShaderTextureLod ? \"#extension GL_EXT_shader_texture_lod : enable\" : \"\"\n  ];\n  return chunks.filter(filterEmptyLine).join(\"\\n\");\n}\nfunction generateDefines(defines) {\n  const chunks = [];\n  for (const name in defines) {\n    const value = defines[name];\n    if (value === false)\n      continue;\n    chunks.push(\"#define \" + name + \" \" + value);\n  }\n  return chunks.join(\"\\n\");\n}\nfunction fetchAttributeLocations(gl, program) {\n  const attributes = {};\n  const n = gl.getProgramParameter(program, 35721);\n  for (let i = 0; i < n; i++) {\n    const info = gl.getActiveAttrib(program, i);\n    const name = info.name;\n    let locationSize = 1;\n    if (info.type === 35674)\n      locationSize = 2;\n    if (info.type === 35675)\n      locationSize = 3;\n    if (info.type === 35676)\n      locationSize = 4;\n    attributes[name] = {\n      type: info.type,\n      location: gl.getAttribLocation(program, name),\n      locationSize\n    };\n  }\n  return attributes;\n}\nfunction filterEmptyLine(string) {\n  return string !== \"\";\n}\nfunction replaceLightNums(string, parameters) {\n  return string.replace(/NUM_DIR_LIGHTS/g, parameters.numDirLights).replace(/NUM_SPOT_LIGHTS/g, parameters.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, parameters.numPointLights).replace(/NUM_HEMI_LIGHTS/g, parameters.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows);\n}\nfunction replaceClippingPlaneNums(string, parameters) {\n  return string.replace(/NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, parameters.numClippingPlanes - parameters.numClipIntersection);\n}\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\nfunction resolveIncludes(string) {\n  return string.replace(includePattern, includeReplacer);\n}\nfunction includeReplacer(match, include) {\n  const string = ShaderChunk[include];\n  if (string === void 0) {\n    throw new Error(\"Can not resolve #include <\" + include + \">\");\n  }\n  return resolveIncludes(string);\n}\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\nfunction unrollLoops(string) {\n  return string.replace(unrollLoopPattern, loopReplacer).replace(deprecatedUnrollLoopPattern, deprecatedLoopReplacer);\n}\nfunction deprecatedLoopReplacer(match, start, end, snippet) {\n  console.warn(\"WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.\");\n  return loopReplacer(match, start, end, snippet);\n}\nfunction loopReplacer(match, start, end, snippet) {\n  let string = \"\";\n  for (let i = parseInt(start); i < parseInt(end); i++) {\n    string += snippet.replace(/\\[\\s*i\\s*\\]/g, \"[ \" + i + \" ]\").replace(/UNROLLED_LOOP_INDEX/g, i);\n  }\n  return string;\n}\nfunction generatePrecision(parameters) {\n  let precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n  if (parameters.precision === \"highp\") {\n    precisionstring += \"\\n#define HIGH_PRECISION\";\n  } else if (parameters.precision === \"mediump\") {\n    precisionstring += \"\\n#define MEDIUM_PRECISION\";\n  } else if (parameters.precision === \"lowp\") {\n    precisionstring += \"\\n#define LOW_PRECISION\";\n  }\n  return precisionstring;\n}\nfunction generateShadowMapTypeDefine(parameters) {\n  let shadowMapTypeDefine = \"SHADOWMAP_TYPE_BASIC\";\n  if (parameters.shadowMapType === PCFShadowMap) {\n    shadowMapTypeDefine = \"SHADOWMAP_TYPE_PCF\";\n  } else if (parameters.shadowMapType === PCFSoftShadowMap) {\n    shadowMapTypeDefine = \"SHADOWMAP_TYPE_PCF_SOFT\";\n  } else if (parameters.shadowMapType === VSMShadowMap) {\n    shadowMapTypeDefine = \"SHADOWMAP_TYPE_VSM\";\n  }\n  return shadowMapTypeDefine;\n}\nfunction generateEnvMapTypeDefine(parameters) {\n  let envMapTypeDefine = \"ENVMAP_TYPE_CUBE\";\n  if (parameters.envMap) {\n    switch (parameters.envMapMode) {\n      case CubeReflectionMapping:\n      case CubeRefractionMapping:\n        envMapTypeDefine = \"ENVMAP_TYPE_CUBE\";\n        break;\n      case CubeUVReflectionMapping:\n        envMapTypeDefine = \"ENVMAP_TYPE_CUBE_UV\";\n        break;\n    }\n  }\n  return envMapTypeDefine;\n}\nfunction generateEnvMapModeDefine(parameters) {\n  let envMapModeDefine = \"ENVMAP_MODE_REFLECTION\";\n  if (parameters.envMap) {\n    switch (parameters.envMapMode) {\n      case CubeRefractionMapping:\n        envMapModeDefine = \"ENVMAP_MODE_REFRACTION\";\n        break;\n    }\n  }\n  return envMapModeDefine;\n}\nfunction generateEnvMapBlendingDefine(parameters) {\n  let envMapBlendingDefine = \"ENVMAP_BLENDING_NONE\";\n  if (parameters.envMap) {\n    switch (parameters.combine) {\n      case MultiplyOperation:\n        envMapBlendingDefine = \"ENVMAP_BLENDING_MULTIPLY\";\n        break;\n      case MixOperation:\n        envMapBlendingDefine = \"ENVMAP_BLENDING_MIX\";\n        break;\n      case AddOperation:\n        envMapBlendingDefine = \"ENVMAP_BLENDING_ADD\";\n        break;\n    }\n  }\n  return envMapBlendingDefine;\n}\nfunction generateCubeUVSize(parameters) {\n  const imageHeight = parameters.envMapCubeUVHeight;\n  if (imageHeight === null)\n    return null;\n  const maxMip = Math.log2(imageHeight) - 2;\n  const texelHeight = 1 / imageHeight;\n  const texelWidth = 1 / (3 * Math.max(Math.pow(2, maxMip), 7 * 16));\n  return { texelWidth, texelHeight, maxMip };\n}\nfunction WebGLProgram(renderer, cacheKey, parameters, bindingStates) {\n  const gl = renderer.getContext();\n  const defines = parameters.defines;\n  let vertexShader = parameters.vertexShader;\n  let fragmentShader = parameters.fragmentShader;\n  const shadowMapTypeDefine = generateShadowMapTypeDefine(parameters);\n  const envMapTypeDefine = generateEnvMapTypeDefine(parameters);\n  const envMapModeDefine = generateEnvMapModeDefine(parameters);\n  const envMapBlendingDefine = generateEnvMapBlendingDefine(parameters);\n  const envMapCubeUVSize = generateCubeUVSize(parameters);\n  const customExtensions = parameters.isWebGL2 ? \"\" : generateExtensions(parameters);\n  const customDefines = generateDefines(defines);\n  const program = gl.createProgram();\n  let prefixVertex, prefixFragment;\n  let versionString = parameters.glslVersion ? \"#version \" + parameters.glslVersion + \"\\n\" : \"\";\n  if (parameters.isRawShaderMaterial) {\n    prefixVertex = [\n      customDefines\n    ].filter(filterEmptyLine).join(\"\\n\");\n    if (prefixVertex.length > 0) {\n      prefixVertex += \"\\n\";\n    }\n    prefixFragment = [\n      customExtensions,\n      customDefines\n    ].filter(filterEmptyLine).join(\"\\n\");\n    if (prefixFragment.length > 0) {\n      prefixFragment += \"\\n\";\n    }\n  } else {\n    prefixVertex = [\n      generatePrecision(parameters),\n      \"#define SHADER_NAME \" + parameters.shaderName,\n      customDefines,\n      parameters.instancing ? \"#define USE_INSTANCING\" : \"\",\n      parameters.instancingColor ? \"#define USE_INSTANCING_COLOR\" : \"\",\n      parameters.supportsVertexTextures ? \"#define VERTEX_TEXTURES\" : \"\",\n      parameters.useFog && parameters.fog ? \"#define USE_FOG\" : \"\",\n      parameters.useFog && parameters.fogExp2 ? \"#define FOG_EXP2\" : \"\",\n      parameters.map ? \"#define USE_MAP\" : \"\",\n      parameters.envMap ? \"#define USE_ENVMAP\" : \"\",\n      parameters.envMap ? \"#define \" + envMapModeDefine : \"\",\n      parameters.lightMap ? \"#define USE_LIGHTMAP\" : \"\",\n      parameters.aoMap ? \"#define USE_AOMAP\" : \"\",\n      parameters.emissiveMap ? \"#define USE_EMISSIVEMAP\" : \"\",\n      parameters.bumpMap ? \"#define USE_BUMPMAP\" : \"\",\n      parameters.normalMap ? \"#define USE_NORMALMAP\" : \"\",\n      parameters.normalMap && parameters.objectSpaceNormalMap ? \"#define OBJECTSPACE_NORMALMAP\" : \"\",\n      parameters.normalMap && parameters.tangentSpaceNormalMap ? \"#define TANGENTSPACE_NORMALMAP\" : \"\",\n      parameters.clearcoatMap ? \"#define USE_CLEARCOATMAP\" : \"\",\n      parameters.clearcoatRoughnessMap ? \"#define USE_CLEARCOAT_ROUGHNESSMAP\" : \"\",\n      parameters.clearcoatNormalMap ? \"#define USE_CLEARCOAT_NORMALMAP\" : \"\",\n      parameters.iridescenceMap ? \"#define USE_IRIDESCENCEMAP\" : \"\",\n      parameters.iridescenceThicknessMap ? \"#define USE_IRIDESCENCE_THICKNESSMAP\" : \"\",\n      parameters.displacementMap && parameters.supportsVertexTextures ? \"#define USE_DISPLACEMENTMAP\" : \"\",\n      parameters.specularMap ? \"#define USE_SPECULARMAP\" : \"\",\n      parameters.specularIntensityMap ? \"#define USE_SPECULARINTENSITYMAP\" : \"\",\n      parameters.specularColorMap ? \"#define USE_SPECULARCOLORMAP\" : \"\",\n      parameters.roughnessMap ? \"#define USE_ROUGHNESSMAP\" : \"\",\n      parameters.metalnessMap ? \"#define USE_METALNESSMAP\" : \"\",\n      parameters.alphaMap ? \"#define USE_ALPHAMAP\" : \"\",\n      parameters.transmission ? \"#define USE_TRANSMISSION\" : \"\",\n      parameters.transmissionMap ? \"#define USE_TRANSMISSIONMAP\" : \"\",\n      parameters.thicknessMap ? \"#define USE_THICKNESSMAP\" : \"\",\n      parameters.sheenColorMap ? \"#define USE_SHEENCOLORMAP\" : \"\",\n      parameters.sheenRoughnessMap ? \"#define USE_SHEENROUGHNESSMAP\" : \"\",\n      parameters.vertexTangents ? \"#define USE_TANGENT\" : \"\",\n      parameters.vertexColors ? \"#define USE_COLOR\" : \"\",\n      parameters.vertexAlphas ? \"#define USE_COLOR_ALPHA\" : \"\",\n      parameters.vertexUvs ? \"#define USE_UV\" : \"\",\n      parameters.uvsVertexOnly ? \"#define UVS_VERTEX_ONLY\" : \"\",\n      parameters.flatShading ? \"#define FLAT_SHADED\" : \"\",\n      parameters.skinning ? \"#define USE_SKINNING\" : \"\",\n      parameters.morphTargets ? \"#define USE_MORPHTARGETS\" : \"\",\n      parameters.morphNormals && parameters.flatShading === false ? \"#define USE_MORPHNORMALS\" : \"\",\n      parameters.morphColors && parameters.isWebGL2 ? \"#define USE_MORPHCOLORS\" : \"\",\n      parameters.morphTargetsCount > 0 && parameters.isWebGL2 ? \"#define MORPHTARGETS_TEXTURE\" : \"\",\n      parameters.morphTargetsCount > 0 && parameters.isWebGL2 ? \"#define MORPHTARGETS_TEXTURE_STRIDE \" + parameters.morphTextureStride : \"\",\n      parameters.morphTargetsCount > 0 && parameters.isWebGL2 ? \"#define MORPHTARGETS_COUNT \" + parameters.morphTargetsCount : \"\",\n      parameters.doubleSided ? \"#define DOUBLE_SIDED\" : \"\",\n      parameters.flipSided ? \"#define FLIP_SIDED\" : \"\",\n      parameters.shadowMapEnabled ? \"#define USE_SHADOWMAP\" : \"\",\n      parameters.shadowMapEnabled ? \"#define \" + shadowMapTypeDefine : \"\",\n      parameters.sizeAttenuation ? \"#define USE_SIZEATTENUATION\" : \"\",\n      parameters.logarithmicDepthBuffer ? \"#define USE_LOGDEPTHBUF\" : \"\",\n      parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? \"#define USE_LOGDEPTHBUF_EXT\" : \"\",\n      \"uniform mat4 modelMatrix;\",\n      \"uniform mat4 modelViewMatrix;\",\n      \"uniform mat4 projectionMatrix;\",\n      \"uniform mat4 viewMatrix;\",\n      \"uniform mat3 normalMatrix;\",\n      \"uniform vec3 cameraPosition;\",\n      \"uniform bool isOrthographic;\",\n      \"#ifdef USE_INSTANCING\",\n      \"\tattribute mat4 instanceMatrix;\",\n      \"#endif\",\n      \"#ifdef USE_INSTANCING_COLOR\",\n      \"\tattribute vec3 instanceColor;\",\n      \"#endif\",\n      \"attribute vec3 position;\",\n      \"attribute vec3 normal;\",\n      \"attribute vec2 uv;\",\n      \"#ifdef USE_TANGENT\",\n      \"\tattribute vec4 tangent;\",\n      \"#endif\",\n      \"#if defined( USE_COLOR_ALPHA )\",\n      \"\tattribute vec4 color;\",\n      \"#elif defined( USE_COLOR )\",\n      \"\tattribute vec3 color;\",\n      \"#endif\",\n      \"#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )\",\n      \"\tattribute vec3 morphTarget0;\",\n      \"\tattribute vec3 morphTarget1;\",\n      \"\tattribute vec3 morphTarget2;\",\n      \"\tattribute vec3 morphTarget3;\",\n      \"\t#ifdef USE_MORPHNORMALS\",\n      \"\t\tattribute vec3 morphNormal0;\",\n      \"\t\tattribute vec3 morphNormal1;\",\n      \"\t\tattribute vec3 morphNormal2;\",\n      \"\t\tattribute vec3 morphNormal3;\",\n      \"\t#else\",\n      \"\t\tattribute vec3 morphTarget4;\",\n      \"\t\tattribute vec3 morphTarget5;\",\n      \"\t\tattribute vec3 morphTarget6;\",\n      \"\t\tattribute vec3 morphTarget7;\",\n      \"\t#endif\",\n      \"#endif\",\n      \"#ifdef USE_SKINNING\",\n      \"\tattribute vec4 skinIndex;\",\n      \"\tattribute vec4 skinWeight;\",\n      \"#endif\",\n      \"\\n\"\n    ].filter(filterEmptyLine).join(\"\\n\");\n    prefixFragment = [\n      customExtensions,\n      generatePrecision(parameters),\n      \"#define SHADER_NAME \" + parameters.shaderName,\n      customDefines,\n      parameters.useFog && parameters.fog ? \"#define USE_FOG\" : \"\",\n      parameters.useFog && parameters.fogExp2 ? \"#define FOG_EXP2\" : \"\",\n      parameters.map ? \"#define USE_MAP\" : \"\",\n      parameters.matcap ? \"#define USE_MATCAP\" : \"\",\n      parameters.envMap ? \"#define USE_ENVMAP\" : \"\",\n      parameters.envMap ? \"#define \" + envMapTypeDefine : \"\",\n      parameters.envMap ? \"#define \" + envMapModeDefine : \"\",\n      parameters.envMap ? \"#define \" + envMapBlendingDefine : \"\",\n      envMapCubeUVSize ? \"#define CUBEUV_TEXEL_WIDTH \" + envMapCubeUVSize.texelWidth : \"\",\n      envMapCubeUVSize ? \"#define CUBEUV_TEXEL_HEIGHT \" + envMapCubeUVSize.texelHeight : \"\",\n      envMapCubeUVSize ? \"#define CUBEUV_MAX_MIP \" + envMapCubeUVSize.maxMip + \".0\" : \"\",\n      parameters.lightMap ? \"#define USE_LIGHTMAP\" : \"\",\n      parameters.aoMap ? \"#define USE_AOMAP\" : \"\",\n      parameters.emissiveMap ? \"#define USE_EMISSIVEMAP\" : \"\",\n      parameters.bumpMap ? \"#define USE_BUMPMAP\" : \"\",\n      parameters.normalMap ? \"#define USE_NORMALMAP\" : \"\",\n      parameters.normalMap && parameters.objectSpaceNormalMap ? \"#define OBJECTSPACE_NORMALMAP\" : \"\",\n      parameters.normalMap && parameters.tangentSpaceNormalMap ? \"#define TANGENTSPACE_NORMALMAP\" : \"\",\n      parameters.clearcoat ? \"#define USE_CLEARCOAT\" : \"\",\n      parameters.clearcoatMap ? \"#define USE_CLEARCOATMAP\" : \"\",\n      parameters.clearcoatRoughnessMap ? \"#define USE_CLEARCOAT_ROUGHNESSMAP\" : \"\",\n      parameters.clearcoatNormalMap ? \"#define USE_CLEARCOAT_NORMALMAP\" : \"\",\n      parameters.iridescence ? \"#define USE_IRIDESCENCE\" : \"\",\n      parameters.iridescenceMap ? \"#define USE_IRIDESCENCEMAP\" : \"\",\n      parameters.iridescenceThicknessMap ? \"#define USE_IRIDESCENCE_THICKNESSMAP\" : \"\",\n      parameters.specularMap ? \"#define USE_SPECULARMAP\" : \"\",\n      parameters.specularIntensityMap ? \"#define USE_SPECULARINTENSITYMAP\" : \"\",\n      parameters.specularColorMap ? \"#define USE_SPECULARCOLORMAP\" : \"\",\n      parameters.roughnessMap ? \"#define USE_ROUGHNESSMAP\" : \"\",\n      parameters.metalnessMap ? \"#define USE_METALNESSMAP\" : \"\",\n      parameters.alphaMap ? \"#define USE_ALPHAMAP\" : \"\",\n      parameters.alphaTest ? \"#define USE_ALPHATEST\" : \"\",\n      parameters.sheen ? \"#define USE_SHEEN\" : \"\",\n      parameters.sheenColorMap ? \"#define USE_SHEENCOLORMAP\" : \"\",\n      parameters.sheenRoughnessMap ? \"#define USE_SHEENROUGHNESSMAP\" : \"\",\n      parameters.transmission ? \"#define USE_TRANSMISSION\" : \"\",\n      parameters.transmissionMap ? \"#define USE_TRANSMISSIONMAP\" : \"\",\n      parameters.thicknessMap ? \"#define USE_THICKNESSMAP\" : \"\",\n      parameters.decodeVideoTexture ? \"#define DECODE_VIDEO_TEXTURE\" : \"\",\n      parameters.vertexTangents ? \"#define USE_TANGENT\" : \"\",\n      parameters.vertexColors || parameters.instancingColor ? \"#define USE_COLOR\" : \"\",\n      parameters.vertexAlphas ? \"#define USE_COLOR_ALPHA\" : \"\",\n      parameters.vertexUvs ? \"#define USE_UV\" : \"\",\n      parameters.uvsVertexOnly ? \"#define UVS_VERTEX_ONLY\" : \"\",\n      parameters.gradientMap ? \"#define USE_GRADIENTMAP\" : \"\",\n      parameters.flatShading ? \"#define FLAT_SHADED\" : \"\",\n      parameters.doubleSided ? \"#define DOUBLE_SIDED\" : \"\",\n      parameters.flipSided ? \"#define FLIP_SIDED\" : \"\",\n      parameters.shadowMapEnabled ? \"#define USE_SHADOWMAP\" : \"\",\n      parameters.shadowMapEnabled ? \"#define \" + shadowMapTypeDefine : \"\",\n      parameters.premultipliedAlpha ? \"#define PREMULTIPLIED_ALPHA\" : \"\",\n      parameters.physicallyCorrectLights ? \"#define PHYSICALLY_CORRECT_LIGHTS\" : \"\",\n      parameters.logarithmicDepthBuffer ? \"#define USE_LOGDEPTHBUF\" : \"\",\n      parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? \"#define USE_LOGDEPTHBUF_EXT\" : \"\",\n      \"uniform mat4 viewMatrix;\",\n      \"uniform vec3 cameraPosition;\",\n      \"uniform bool isOrthographic;\",\n      parameters.toneMapping !== NoToneMapping ? \"#define TONE_MAPPING\" : \"\",\n      parameters.toneMapping !== NoToneMapping ? ShaderChunk[\"tonemapping_pars_fragment\"] : \"\",\n      parameters.toneMapping !== NoToneMapping ? getToneMappingFunction(\"toneMapping\", parameters.toneMapping) : \"\",\n      parameters.dithering ? \"#define DITHERING\" : \"\",\n      parameters.opaque ? \"#define OPAQUE\" : \"\",\n      ShaderChunk[\"encodings_pars_fragment\"],\n      getTexelEncodingFunction(\"linearToOutputTexel\", parameters.outputEncoding),\n      parameters.useDepthPacking ? \"#define DEPTH_PACKING \" + parameters.depthPacking : \"\",\n      \"\\n\"\n    ].filter(filterEmptyLine).join(\"\\n\");\n  }\n  vertexShader = resolveIncludes(vertexShader);\n  vertexShader = replaceLightNums(vertexShader, parameters);\n  vertexShader = replaceClippingPlaneNums(vertexShader, parameters);\n  fragmentShader = resolveIncludes(fragmentShader);\n  fragmentShader = replaceLightNums(fragmentShader, parameters);\n  fragmentShader = replaceClippingPlaneNums(fragmentShader, parameters);\n  vertexShader = unrollLoops(vertexShader);\n  fragmentShader = unrollLoops(fragmentShader);\n  if (parameters.isWebGL2 && parameters.isRawShaderMaterial !== true) {\n    versionString = \"#version 300 es\\n\";\n    prefixVertex = [\n      \"precision mediump sampler2DArray;\",\n      \"#define attribute in\",\n      \"#define varying out\",\n      \"#define texture2D texture\"\n    ].join(\"\\n\") + \"\\n\" + prefixVertex;\n    prefixFragment = [\n      \"#define varying in\",\n      parameters.glslVersion === GLSL3 ? \"\" : \"layout(location = 0) out highp vec4 pc_fragColor;\",\n      parameters.glslVersion === GLSL3 ? \"\" : \"#define gl_FragColor pc_fragColor\",\n      \"#define gl_FragDepthEXT gl_FragDepth\",\n      \"#define texture2D texture\",\n      \"#define textureCube texture\",\n      \"#define texture2DProj textureProj\",\n      \"#define texture2DLodEXT textureLod\",\n      \"#define texture2DProjLodEXT textureProjLod\",\n      \"#define textureCubeLodEXT textureLod\",\n      \"#define texture2DGradEXT textureGrad\",\n      \"#define texture2DProjGradEXT textureProjGrad\",\n      \"#define textureCubeGradEXT textureGrad\"\n    ].join(\"\\n\") + \"\\n\" + prefixFragment;\n  }\n  const vertexGlsl = versionString + prefixVertex + vertexShader;\n  const fragmentGlsl = versionString + prefixFragment + fragmentShader;\n  const glVertexShader = WebGLShader(gl, 35633, vertexGlsl);\n  const glFragmentShader = WebGLShader(gl, 35632, fragmentGlsl);\n  gl.attachShader(program, glVertexShader);\n  gl.attachShader(program, glFragmentShader);\n  if (parameters.index0AttributeName !== void 0) {\n    gl.bindAttribLocation(program, 0, parameters.index0AttributeName);\n  } else if (parameters.morphTargets === true) {\n    gl.bindAttribLocation(program, 0, \"position\");\n  }\n  gl.linkProgram(program);\n  if (renderer.debug.checkShaderErrors) {\n    const programLog = gl.getProgramInfoLog(program).trim();\n    const vertexLog = gl.getShaderInfoLog(glVertexShader).trim();\n    const fragmentLog = gl.getShaderInfoLog(glFragmentShader).trim();\n    let runnable = true;\n    let haveDiagnostics = true;\n    if (gl.getProgramParameter(program, 35714) === false) {\n      runnable = false;\n      const vertexErrors = getShaderErrors(gl, glVertexShader, \"vertex\");\n      const fragmentErrors = getShaderErrors(gl, glFragmentShader, \"fragment\");\n      console.error(\n        \"THREE.WebGLProgram: Shader Error \" + gl.getError() + \" - VALIDATE_STATUS \" + gl.getProgramParameter(program, 35715) + \"\\n\\nProgram Info Log: \" + programLog + \"\\n\" + vertexErrors + \"\\n\" + fragmentErrors\n      );\n    } else if (programLog !== \"\") {\n      console.warn(\"THREE.WebGLProgram: Program Info Log:\", programLog);\n    } else if (vertexLog === \"\" || fragmentLog === \"\") {\n      haveDiagnostics = false;\n    }\n    if (haveDiagnostics) {\n      this.diagnostics = {\n        runnable,\n        programLog,\n        vertexShader: {\n          log: vertexLog,\n          prefix: prefixVertex\n        },\n        fragmentShader: {\n          log: fragmentLog,\n          prefix: prefixFragment\n        }\n      };\n    }\n  }\n  gl.deleteShader(glVertexShader);\n  gl.deleteShader(glFragmentShader);\n  let cachedUniforms;\n  this.getUniforms = function() {\n    if (cachedUniforms === void 0) {\n      cachedUniforms = new WebGLUniforms(gl, program);\n    }\n    return cachedUniforms;\n  };\n  let cachedAttributes;\n  this.getAttributes = function() {\n    if (cachedAttributes === void 0) {\n      cachedAttributes = fetchAttributeLocations(gl, program);\n    }\n    return cachedAttributes;\n  };\n  this.destroy = function() {\n    bindingStates.releaseStatesOfProgram(this);\n    gl.deleteProgram(program);\n    this.program = void 0;\n  };\n  this.name = parameters.shaderName;\n  this.id = programIdCount++;\n  this.cacheKey = cacheKey;\n  this.usedTimes = 1;\n  this.program = program;\n  this.vertexShader = glVertexShader;\n  this.fragmentShader = glFragmentShader;\n  return this;\n}\nlet _id = 0;\nclass WebGLShaderCache {\n  constructor() {\n    this.shaderCache = /* @__PURE__ */ new Map();\n    this.materialCache = /* @__PURE__ */ new Map();\n  }\n  update(material) {\n    const vertexShader = material.vertexShader;\n    const fragmentShader = material.fragmentShader;\n    const vertexShaderStage = this._getShaderStage(vertexShader);\n    const fragmentShaderStage = this._getShaderStage(fragmentShader);\n    const materialShaders = this._getShaderCacheForMaterial(material);\n    if (materialShaders.has(vertexShaderStage) === false) {\n      materialShaders.add(vertexShaderStage);\n      vertexShaderStage.usedTimes++;\n    }\n    if (materialShaders.has(fragmentShaderStage) === false) {\n      materialShaders.add(fragmentShaderStage);\n      fragmentShaderStage.usedTimes++;\n    }\n    return this;\n  }\n  remove(material) {\n    const materialShaders = this.materialCache.get(material);\n    for (const shaderStage of materialShaders) {\n      shaderStage.usedTimes--;\n      if (shaderStage.usedTimes === 0)\n        this.shaderCache.delete(shaderStage.code);\n    }\n    this.materialCache.delete(material);\n    return this;\n  }\n  getVertexShaderID(material) {\n    return this._getShaderStage(material.vertexShader).id;\n  }\n  getFragmentShaderID(material) {\n    return this._getShaderStage(material.fragmentShader).id;\n  }\n  dispose() {\n    this.shaderCache.clear();\n    this.materialCache.clear();\n  }\n  _getShaderCacheForMaterial(material) {\n    const cache = this.materialCache;\n    if (cache.has(material) === false) {\n      cache.set(material, /* @__PURE__ */ new Set());\n    }\n    return cache.get(material);\n  }\n  _getShaderStage(code) {\n    const cache = this.shaderCache;\n    if (cache.has(code) === false) {\n      const stage = new WebGLShaderStage(code);\n      cache.set(code, stage);\n    }\n    return cache.get(code);\n  }\n}\nclass WebGLShaderStage {\n  constructor(code) {\n    this.id = _id++;\n    this.code = code;\n    this.usedTimes = 0;\n  }\n}\nfunction WebGLPrograms(renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping) {\n  const _programLayers = new Layers();\n  const _customShaders = new WebGLShaderCache();\n  const programs = [];\n  const isWebGL2 = capabilities.isWebGL2;\n  const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n  const vertexTextures = capabilities.vertexTextures;\n  let precision = capabilities.precision;\n  const shaderIDs = {\n    MeshDepthMaterial: \"depth\",\n    MeshDistanceMaterial: \"distanceRGBA\",\n    MeshNormalMaterial: \"normal\",\n    MeshBasicMaterial: \"basic\",\n    MeshLambertMaterial: \"lambert\",\n    MeshPhongMaterial: \"phong\",\n    MeshToonMaterial: \"toon\",\n    MeshStandardMaterial: \"physical\",\n    MeshPhysicalMaterial: \"physical\",\n    MeshMatcapMaterial: \"matcap\",\n    LineBasicMaterial: \"basic\",\n    LineDashedMaterial: \"dashed\",\n    PointsMaterial: \"points\",\n    ShadowMaterial: \"shadow\",\n    SpriteMaterial: \"sprite\"\n  };\n  function getParameters(material, lights, shadows, scene, object) {\n    const fog = scene.fog;\n    const geometry = object.geometry;\n    const environment = material.isMeshStandardMaterial ? scene.environment : null;\n    const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n    const envMapCubeUVHeight = !!envMap && envMap.mapping === CubeUVReflectionMapping ? envMap.image.height : null;\n    const shaderID = shaderIDs[material.type];\n    if (material.precision !== null) {\n      precision = capabilities.getMaxPrecision(material.precision);\n      if (precision !== material.precision) {\n        console.warn(\"THREE.WebGLProgram.getParameters:\", material.precision, \"not supported, using\", precision, \"instead.\");\n      }\n    }\n    const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n    const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0;\n    let morphTextureStride = 0;\n    if (geometry.morphAttributes.position !== void 0)\n      morphTextureStride = 1;\n    if (geometry.morphAttributes.normal !== void 0)\n      morphTextureStride = 2;\n    if (geometry.morphAttributes.color !== void 0)\n      morphTextureStride = 3;\n    let vertexShader, fragmentShader;\n    let customVertexShaderID, customFragmentShaderID;\n    if (shaderID) {\n      const shader = ShaderLib[shaderID];\n      vertexShader = shader.vertexShader;\n      fragmentShader = shader.fragmentShader;\n    } else {\n      vertexShader = material.vertexShader;\n      fragmentShader = material.fragmentShader;\n      _customShaders.update(material);\n      customVertexShaderID = _customShaders.getVertexShaderID(material);\n      customFragmentShaderID = _customShaders.getFragmentShaderID(material);\n    }\n    const currentRenderTarget = renderer.getRenderTarget();\n    const useAlphaTest = material.alphaTest > 0;\n    const useClearcoat = material.clearcoat > 0;\n    const useIridescence = material.iridescence > 0;\n    const parameters = {\n      isWebGL2,\n      shaderID,\n      shaderName: material.type,\n      vertexShader,\n      fragmentShader,\n      defines: material.defines,\n      customVertexShaderID,\n      customFragmentShaderID,\n      isRawShaderMaterial: material.isRawShaderMaterial === true,\n      glslVersion: material.glslVersion,\n      precision,\n      instancing: object.isInstancedMesh === true,\n      instancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n      supportsVertexTextures: vertexTextures,\n      outputEncoding: currentRenderTarget === null ? renderer.outputEncoding : currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.encoding : LinearEncoding,\n      map: !!material.map,\n      matcap: !!material.matcap,\n      envMap: !!envMap,\n      envMapMode: envMap && envMap.mapping,\n      envMapCubeUVHeight,\n      lightMap: !!material.lightMap,\n      aoMap: !!material.aoMap,\n      emissiveMap: !!material.emissiveMap,\n      bumpMap: !!material.bumpMap,\n      normalMap: !!material.normalMap,\n      objectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n      tangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n      decodeVideoTexture: !!material.map && material.map.isVideoTexture === true && material.map.encoding === sRGBEncoding,\n      clearcoat: useClearcoat,\n      clearcoatMap: useClearcoat && !!material.clearcoatMap,\n      clearcoatRoughnessMap: useClearcoat && !!material.clearcoatRoughnessMap,\n      clearcoatNormalMap: useClearcoat && !!material.clearcoatNormalMap,\n      iridescence: useIridescence,\n      iridescenceMap: useIridescence && !!material.iridescenceMap,\n      iridescenceThicknessMap: useIridescence && !!material.iridescenceThicknessMap,\n      displacementMap: !!material.displacementMap,\n      roughnessMap: !!material.roughnessMap,\n      metalnessMap: !!material.metalnessMap,\n      specularMap: !!material.specularMap,\n      specularIntensityMap: !!material.specularIntensityMap,\n      specularColorMap: !!material.specularColorMap,\n      opaque: material.transparent === false && material.blending === NormalBlending,\n      alphaMap: !!material.alphaMap,\n      alphaTest: useAlphaTest,\n      gradientMap: !!material.gradientMap,\n      sheen: material.sheen > 0,\n      sheenColorMap: !!material.sheenColorMap,\n      sheenRoughnessMap: !!material.sheenRoughnessMap,\n      transmission: material.transmission > 0,\n      transmissionMap: !!material.transmissionMap,\n      thicknessMap: !!material.thicknessMap,\n      combine: material.combine,\n      vertexTangents: !!material.normalMap && !!geometry.attributes.tangent,\n      vertexColors: material.vertexColors,\n      vertexAlphas: material.vertexColors === true && !!geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n      vertexUvs: !!material.map || !!material.bumpMap || !!material.normalMap || !!material.specularMap || !!material.alphaMap || !!material.emissiveMap || !!material.roughnessMap || !!material.metalnessMap || !!material.clearcoatMap || !!material.clearcoatRoughnessMap || !!material.clearcoatNormalMap || !!material.iridescenceMap || !!material.iridescenceThicknessMap || !!material.displacementMap || !!material.transmissionMap || !!material.thicknessMap || !!material.specularIntensityMap || !!material.specularColorMap || !!material.sheenColorMap || !!material.sheenRoughnessMap,\n      uvsVertexOnly: !(!!material.map || !!material.bumpMap || !!material.normalMap || !!material.specularMap || !!material.alphaMap || !!material.emissiveMap || !!material.roughnessMap || !!material.metalnessMap || !!material.clearcoatNormalMap || !!material.iridescenceMap || !!material.iridescenceThicknessMap || material.transmission > 0 || !!material.transmissionMap || !!material.thicknessMap || !!material.specularIntensityMap || !!material.specularColorMap || material.sheen > 0 || !!material.sheenColorMap || !!material.sheenRoughnessMap) && !!material.displacementMap,\n      fog: !!fog,\n      useFog: material.fog === true,\n      fogExp2: fog && fog.isFogExp2,\n      flatShading: !!material.flatShading,\n      sizeAttenuation: material.sizeAttenuation,\n      logarithmicDepthBuffer,\n      skinning: object.isSkinnedMesh === true,\n      morphTargets: geometry.morphAttributes.position !== void 0,\n      morphNormals: geometry.morphAttributes.normal !== void 0,\n      morphColors: geometry.morphAttributes.color !== void 0,\n      morphTargetsCount,\n      morphTextureStride,\n      numDirLights: lights.directional.length,\n      numPointLights: lights.point.length,\n      numSpotLights: lights.spot.length,\n      numRectAreaLights: lights.rectArea.length,\n      numHemiLights: lights.hemi.length,\n      numDirLightShadows: lights.directionalShadowMap.length,\n      numPointLightShadows: lights.pointShadowMap.length,\n      numSpotLightShadows: lights.spotShadowMap.length,\n      numClippingPlanes: clipping.numPlanes,\n      numClipIntersection: clipping.numIntersection,\n      dithering: material.dithering,\n      shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n      shadowMapType: renderer.shadowMap.type,\n      toneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n      physicallyCorrectLights: renderer.physicallyCorrectLights,\n      premultipliedAlpha: material.premultipliedAlpha,\n      doubleSided: material.side === DoubleSide,\n      flipSided: material.side === BackSide,\n      useDepthPacking: !!material.depthPacking,\n      depthPacking: material.depthPacking || 0,\n      index0AttributeName: material.index0AttributeName,\n      extensionDerivatives: material.extensions && material.extensions.derivatives,\n      extensionFragDepth: material.extensions && material.extensions.fragDepth,\n      extensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n      extensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n      rendererExtensionFragDepth: isWebGL2 || extensions.has(\"EXT_frag_depth\"),\n      rendererExtensionDrawBuffers: isWebGL2 || extensions.has(\"WEBGL_draw_buffers\"),\n      rendererExtensionShaderTextureLod: isWebGL2 || extensions.has(\"EXT_shader_texture_lod\"),\n      customProgramCacheKey: material.customProgramCacheKey()\n    };\n    return parameters;\n  }\n  function getProgramCacheKey(parameters) {\n    const array = [];\n    if (parameters.shaderID) {\n      array.push(parameters.shaderID);\n    } else {\n      array.push(parameters.customVertexShaderID);\n      array.push(parameters.customFragmentShaderID);\n    }\n    if (parameters.defines !== void 0) {\n      for (const name in parameters.defines) {\n        array.push(name);\n        array.push(parameters.defines[name]);\n      }\n    }\n    if (parameters.isRawShaderMaterial === false) {\n      getProgramCacheKeyParameters(array, parameters);\n      getProgramCacheKeyBooleans(array, parameters);\n      array.push(renderer.outputEncoding);\n    }\n    array.push(parameters.customProgramCacheKey);\n    return array.join();\n  }\n  function getProgramCacheKeyParameters(array, parameters) {\n    array.push(parameters.precision);\n    array.push(parameters.outputEncoding);\n    array.push(parameters.envMapMode);\n    array.push(parameters.envMapCubeUVHeight);\n    array.push(parameters.combine);\n    array.push(parameters.vertexUvs);\n    array.push(parameters.fogExp2);\n    array.push(parameters.sizeAttenuation);\n    array.push(parameters.morphTargetsCount);\n    array.push(parameters.morphAttributeCount);\n    array.push(parameters.numDirLights);\n    array.push(parameters.numPointLights);\n    array.push(parameters.numSpotLights);\n    array.push(parameters.numHemiLights);\n    array.push(parameters.numRectAreaLights);\n    array.push(parameters.numDirLightShadows);\n    array.push(parameters.numPointLightShadows);\n    array.push(parameters.numSpotLightShadows);\n    array.push(parameters.shadowMapType);\n    array.push(parameters.toneMapping);\n    array.push(parameters.numClippingPlanes);\n    array.push(parameters.numClipIntersection);\n    array.push(parameters.depthPacking);\n  }\n  function getProgramCacheKeyBooleans(array, parameters) {\n    _programLayers.disableAll();\n    if (parameters.isWebGL2)\n      _programLayers.enable(0);\n    if (parameters.supportsVertexTextures)\n      _programLayers.enable(1);\n    if (parameters.instancing)\n      _programLayers.enable(2);\n    if (parameters.instancingColor)\n      _programLayers.enable(3);\n    if (parameters.map)\n      _programLayers.enable(4);\n    if (parameters.matcap)\n      _programLayers.enable(5);\n    if (parameters.envMap)\n      _programLayers.enable(6);\n    if (parameters.lightMap)\n      _programLayers.enable(7);\n    if (parameters.aoMap)\n      _programLayers.enable(8);\n    if (parameters.emissiveMap)\n      _programLayers.enable(9);\n    if (parameters.bumpMap)\n      _programLayers.enable(10);\n    if (parameters.normalMap)\n      _programLayers.enable(11);\n    if (parameters.objectSpaceNormalMap)\n      _programLayers.enable(12);\n    if (parameters.tangentSpaceNormalMap)\n      _programLayers.enable(13);\n    if (parameters.clearcoat)\n      _programLayers.enable(14);\n    if (parameters.clearcoatMap)\n      _programLayers.enable(15);\n    if (parameters.clearcoatRoughnessMap)\n      _programLayers.enable(16);\n    if (parameters.clearcoatNormalMap)\n      _programLayers.enable(17);\n    if (parameters.iridescence)\n      _programLayers.enable(18);\n    if (parameters.iridescenceMap)\n      _programLayers.enable(19);\n    if (parameters.iridescenceThicknessMap)\n      _programLayers.enable(20);\n    if (parameters.displacementMap)\n      _programLayers.enable(21);\n    if (parameters.specularMap)\n      _programLayers.enable(22);\n    if (parameters.roughnessMap)\n      _programLayers.enable(23);\n    if (parameters.metalnessMap)\n      _programLayers.enable(24);\n    if (parameters.gradientMap)\n      _programLayers.enable(25);\n    if (parameters.alphaMap)\n      _programLayers.enable(26);\n    if (parameters.alphaTest)\n      _programLayers.enable(27);\n    if (parameters.vertexColors)\n      _programLayers.enable(28);\n    if (parameters.vertexAlphas)\n      _programLayers.enable(29);\n    if (parameters.vertexUvs)\n      _programLayers.enable(30);\n    if (parameters.vertexTangents)\n      _programLayers.enable(31);\n    if (parameters.uvsVertexOnly)\n      _programLayers.enable(32);\n    if (parameters.fog)\n      _programLayers.enable(33);\n    array.push(_programLayers.mask);\n    _programLayers.disableAll();\n    if (parameters.useFog)\n      _programLayers.enable(0);\n    if (parameters.flatShading)\n      _programLayers.enable(1);\n    if (parameters.logarithmicDepthBuffer)\n      _programLayers.enable(2);\n    if (parameters.skinning)\n      _programLayers.enable(3);\n    if (parameters.morphTargets)\n      _programLayers.enable(4);\n    if (parameters.morphNormals)\n      _programLayers.enable(5);\n    if (parameters.morphColors)\n      _programLayers.enable(6);\n    if (parameters.premultipliedAlpha)\n      _programLayers.enable(7);\n    if (parameters.shadowMapEnabled)\n      _programLayers.enable(8);\n    if (parameters.physicallyCorrectLights)\n      _programLayers.enable(9);\n    if (parameters.doubleSided)\n      _programLayers.enable(10);\n    if (parameters.flipSided)\n      _programLayers.enable(11);\n    if (parameters.useDepthPacking)\n      _programLayers.enable(12);\n    if (parameters.dithering)\n      _programLayers.enable(13);\n    if (parameters.specularIntensityMap)\n      _programLayers.enable(14);\n    if (parameters.specularColorMap)\n      _programLayers.enable(15);\n    if (parameters.transmission)\n      _programLayers.enable(16);\n    if (parameters.transmissionMap)\n      _programLayers.enable(17);\n    if (parameters.thicknessMap)\n      _programLayers.enable(18);\n    if (parameters.sheen)\n      _programLayers.enable(19);\n    if (parameters.sheenColorMap)\n      _programLayers.enable(20);\n    if (parameters.sheenRoughnessMap)\n      _programLayers.enable(21);\n    if (parameters.decodeVideoTexture)\n      _programLayers.enable(22);\n    if (parameters.opaque)\n      _programLayers.enable(23);\n    array.push(_programLayers.mask);\n  }\n  function getUniforms(material) {\n    const shaderID = shaderIDs[material.type];\n    let uniforms;\n    if (shaderID) {\n      const shader = ShaderLib[shaderID];\n      uniforms = UniformsUtils.clone(shader.uniforms);\n    } else {\n      uniforms = material.uniforms;\n    }\n    return uniforms;\n  }\n  function acquireProgram(parameters, cacheKey) {\n    let program;\n    for (let p = 0, pl = programs.length; p < pl; p++) {\n      const preexistingProgram = programs[p];\n      if (preexistingProgram.cacheKey === cacheKey) {\n        program = preexistingProgram;\n        ++program.usedTimes;\n        break;\n      }\n    }\n    if (program === void 0) {\n      program = new WebGLProgram(renderer, cacheKey, parameters, bindingStates);\n      programs.push(program);\n    }\n    return program;\n  }\n  function releaseProgram(program) {\n    if (--program.usedTimes === 0) {\n      const i = programs.indexOf(program);\n      programs[i] = programs[programs.length - 1];\n      programs.pop();\n      program.destroy();\n    }\n  }\n  function releaseShaderCache(material) {\n    _customShaders.remove(material);\n  }\n  function dispose() {\n    _customShaders.dispose();\n  }\n  return {\n    getParameters,\n    getProgramCacheKey,\n    getUniforms,\n    acquireProgram,\n    releaseProgram,\n    releaseShaderCache,\n    programs,\n    dispose\n  };\n}\nfunction WebGLProperties() {\n  let properties = /* @__PURE__ */ new WeakMap();\n  function get(object) {\n    let map = properties.get(object);\n    if (map === void 0) {\n      map = {};\n      properties.set(object, map);\n    }\n    return map;\n  }\n  function remove(object) {\n    properties.delete(object);\n  }\n  function update(object, key, value) {\n    properties.get(object)[key] = value;\n  }\n  function dispose() {\n    properties = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    remove,\n    update,\n    dispose\n  };\n}\nfunction painterSortStable(a, b) {\n  if (a.groupOrder !== b.groupOrder) {\n    return a.groupOrder - b.groupOrder;\n  } else if (a.renderOrder !== b.renderOrder) {\n    return a.renderOrder - b.renderOrder;\n  } else if (a.material.id !== b.material.id) {\n    return a.material.id - b.material.id;\n  } else if (a.z !== b.z) {\n    return a.z - b.z;\n  } else {\n    return a.id - b.id;\n  }\n}\nfunction reversePainterSortStable(a, b) {\n  if (a.groupOrder !== b.groupOrder) {\n    return a.groupOrder - b.groupOrder;\n  } else if (a.renderOrder !== b.renderOrder) {\n    return a.renderOrder - b.renderOrder;\n  } else if (a.z !== b.z) {\n    return b.z - a.z;\n  } else {\n    return a.id - b.id;\n  }\n}\nfunction WebGLRenderList() {\n  const renderItems = [];\n  let renderItemsIndex = 0;\n  const opaque = [];\n  const transmissive = [];\n  const transparent = [];\n  function init() {\n    renderItemsIndex = 0;\n    opaque.length = 0;\n    transmissive.length = 0;\n    transparent.length = 0;\n  }\n  function getNextRenderItem(object, geometry, material, groupOrder, z, group) {\n    let renderItem = renderItems[renderItemsIndex];\n    if (renderItem === void 0) {\n      renderItem = {\n        id: object.id,\n        object,\n        geometry,\n        material,\n        groupOrder,\n        renderOrder: object.renderOrder,\n        z,\n        group\n      };\n      renderItems[renderItemsIndex] = renderItem;\n    } else {\n      renderItem.id = object.id;\n      renderItem.object = object;\n      renderItem.geometry = geometry;\n      renderItem.material = material;\n      renderItem.groupOrder = groupOrder;\n      renderItem.renderOrder = object.renderOrder;\n      renderItem.z = z;\n      renderItem.group = group;\n    }\n    renderItemsIndex++;\n    return renderItem;\n  }\n  function push(object, geometry, material, groupOrder, z, group) {\n    const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group);\n    if (material.transmission > 0) {\n      transmissive.push(renderItem);\n    } else if (material.transparent === true) {\n      transparent.push(renderItem);\n    } else {\n      opaque.push(renderItem);\n    }\n  }\n  function unshift(object, geometry, material, groupOrder, z, group) {\n    const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group);\n    if (material.transmission > 0) {\n      transmissive.unshift(renderItem);\n    } else if (material.transparent === true) {\n      transparent.unshift(renderItem);\n    } else {\n      opaque.unshift(renderItem);\n    }\n  }\n  function sort(customOpaqueSort, customTransparentSort) {\n    if (opaque.length > 1)\n      opaque.sort(customOpaqueSort || painterSortStable);\n    if (transmissive.length > 1)\n      transmissive.sort(customTransparentSort || reversePainterSortStable);\n    if (transparent.length > 1)\n      transparent.sort(customTransparentSort || reversePainterSortStable);\n  }\n  function finish() {\n    for (let i = renderItemsIndex, il = renderItems.length; i < il; i++) {\n      const renderItem = renderItems[i];\n      if (renderItem.id === null)\n        break;\n      renderItem.id = null;\n      renderItem.object = null;\n      renderItem.geometry = null;\n      renderItem.material = null;\n      renderItem.group = null;\n    }\n  }\n  return {\n    opaque,\n    transmissive,\n    transparent,\n    init,\n    push,\n    unshift,\n    finish,\n    sort\n  };\n}\nfunction WebGLRenderLists() {\n  let lists = /* @__PURE__ */ new WeakMap();\n  function get(scene, renderCallDepth) {\n    let list;\n    if (lists.has(scene) === false) {\n      list = new WebGLRenderList();\n      lists.set(scene, [list]);\n    } else {\n      if (renderCallDepth >= lists.get(scene).length) {\n        list = new WebGLRenderList();\n        lists.get(scene).push(list);\n      } else {\n        list = lists.get(scene)[renderCallDepth];\n      }\n    }\n    return list;\n  }\n  function dispose() {\n    lists = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose\n  };\n}\nfunction UniformsCache() {\n  const lights = {};\n  return {\n    get: function(light) {\n      if (lights[light.id] !== void 0) {\n        return lights[light.id];\n      }\n      let uniforms;\n      switch (light.type) {\n        case \"DirectionalLight\":\n          uniforms = {\n            direction: new Vector3(),\n            color: new Color()\n          };\n          break;\n        case \"SpotLight\":\n          uniforms = {\n            position: new Vector3(),\n            direction: new Vector3(),\n            color: new Color(),\n            distance: 0,\n            coneCos: 0,\n            penumbraCos: 0,\n            decay: 0\n          };\n          break;\n        case \"PointLight\":\n          uniforms = {\n            position: new Vector3(),\n            color: new Color(),\n            distance: 0,\n            decay: 0\n          };\n          break;\n        case \"HemisphereLight\":\n          uniforms = {\n            direction: new Vector3(),\n            skyColor: new Color(),\n            groundColor: new Color()\n          };\n          break;\n        case \"RectAreaLight\":\n          uniforms = {\n            color: new Color(),\n            position: new Vector3(),\n            halfWidth: new Vector3(),\n            halfHeight: new Vector3()\n          };\n          break;\n      }\n      lights[light.id] = uniforms;\n      return uniforms;\n    }\n  };\n}\nfunction ShadowUniformsCache() {\n  const lights = {};\n  return {\n    get: function(light) {\n      if (lights[light.id] !== void 0) {\n        return lights[light.id];\n      }\n      let uniforms;\n      switch (light.type) {\n        case \"DirectionalLight\":\n          uniforms = {\n            shadowBias: 0,\n            shadowNormalBias: 0,\n            shadowRadius: 1,\n            shadowMapSize: new Vector2()\n          };\n          break;\n        case \"SpotLight\":\n          uniforms = {\n            shadowBias: 0,\n            shadowNormalBias: 0,\n            shadowRadius: 1,\n            shadowMapSize: new Vector2()\n          };\n          break;\n        case \"PointLight\":\n          uniforms = {\n            shadowBias: 0,\n            shadowNormalBias: 0,\n            shadowRadius: 1,\n            shadowMapSize: new Vector2(),\n            shadowCameraNear: 1,\n            shadowCameraFar: 1e3\n          };\n          break;\n      }\n      lights[light.id] = uniforms;\n      return uniforms;\n    }\n  };\n}\nlet nextVersion = 0;\nfunction shadowCastingLightsFirst(lightA, lightB) {\n  return (lightB.castShadow ? 1 : 0) - (lightA.castShadow ? 1 : 0);\n}\nfunction WebGLLights(extensions, capabilities) {\n  const cache = new UniformsCache();\n  const shadowCache = ShadowUniformsCache();\n  const state = {\n    version: 0,\n    hash: {\n      directionalLength: -1,\n      pointLength: -1,\n      spotLength: -1,\n      rectAreaLength: -1,\n      hemiLength: -1,\n      numDirectionalShadows: -1,\n      numPointShadows: -1,\n      numSpotShadows: -1\n    },\n    ambient: [0, 0, 0],\n    probe: [],\n    directional: [],\n    directionalShadow: [],\n    directionalShadowMap: [],\n    directionalShadowMatrix: [],\n    spot: [],\n    spotShadow: [],\n    spotShadowMap: [],\n    spotShadowMatrix: [],\n    rectArea: [],\n    rectAreaLTC1: null,\n    rectAreaLTC2: null,\n    point: [],\n    pointShadow: [],\n    pointShadowMap: [],\n    pointShadowMatrix: [],\n    hemi: []\n  };\n  for (let i = 0; i < 9; i++)\n    state.probe.push(new Vector3());\n  const vector3 = new Vector3();\n  const matrix4 = new Matrix4();\n  const matrix42 = new Matrix4();\n  function setup(lights, physicallyCorrectLights) {\n    let r = 0, g = 0, b = 0;\n    for (let i = 0; i < 9; i++)\n      state.probe[i].set(0, 0, 0);\n    let directionalLength = 0;\n    let pointLength = 0;\n    let spotLength = 0;\n    let rectAreaLength = 0;\n    let hemiLength = 0;\n    let numDirectionalShadows = 0;\n    let numPointShadows = 0;\n    let numSpotShadows = 0;\n    lights.sort(shadowCastingLightsFirst);\n    const scaleFactor = physicallyCorrectLights !== true ? Math.PI : 1;\n    for (let i = 0, l = lights.length; i < l; i++) {\n      const light = lights[i];\n      const color = light.color;\n      const intensity = light.intensity;\n      const distance = light.distance;\n      const shadowMap = light.shadow && light.shadow.map ? light.shadow.map.texture : null;\n      if (light.isAmbientLight) {\n        r += color.r * intensity * scaleFactor;\n        g += color.g * intensity * scaleFactor;\n        b += color.b * intensity * scaleFactor;\n      } else if (light.isLightProbe) {\n        for (let j = 0; j < 9; j++) {\n          state.probe[j].addScaledVector(light.sh.coefficients[j], intensity);\n        }\n      } else if (light.isDirectionalLight) {\n        const uniforms = cache.get(light);\n        uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor);\n        if (light.castShadow) {\n          const shadow = light.shadow;\n          const shadowUniforms = shadowCache.get(light);\n          shadowUniforms.shadowBias = shadow.bias;\n          shadowUniforms.shadowNormalBias = shadow.normalBias;\n          shadowUniforms.shadowRadius = shadow.radius;\n          shadowUniforms.shadowMapSize = shadow.mapSize;\n          state.directionalShadow[directionalLength] = shadowUniforms;\n          state.directionalShadowMap[directionalLength] = shadowMap;\n          state.directionalShadowMatrix[directionalLength] = light.shadow.matrix;\n          numDirectionalShadows++;\n        }\n        state.directional[directionalLength] = uniforms;\n        directionalLength++;\n      } else if (light.isSpotLight) {\n        const uniforms = cache.get(light);\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.color.copy(color).multiplyScalar(intensity * scaleFactor);\n        uniforms.distance = distance;\n        uniforms.coneCos = Math.cos(light.angle);\n        uniforms.penumbraCos = Math.cos(light.angle * (1 - light.penumbra));\n        uniforms.decay = light.decay;\n        if (light.castShadow) {\n          const shadow = light.shadow;\n          const shadowUniforms = shadowCache.get(light);\n          shadowUniforms.shadowBias = shadow.bias;\n          shadowUniforms.shadowNormalBias = shadow.normalBias;\n          shadowUniforms.shadowRadius = shadow.radius;\n          shadowUniforms.shadowMapSize = shadow.mapSize;\n          state.spotShadow[spotLength] = shadowUniforms;\n          state.spotShadowMap[spotLength] = shadowMap;\n          state.spotShadowMatrix[spotLength] = light.shadow.matrix;\n          numSpotShadows++;\n        }\n        state.spot[spotLength] = uniforms;\n        spotLength++;\n      } else if (light.isRectAreaLight) {\n        const uniforms = cache.get(light);\n        uniforms.color.copy(color).multiplyScalar(intensity);\n        uniforms.halfWidth.set(light.width * 0.5, 0, 0);\n        uniforms.halfHeight.set(0, light.height * 0.5, 0);\n        state.rectArea[rectAreaLength] = uniforms;\n        rectAreaLength++;\n      } else if (light.isPointLight) {\n        const uniforms = cache.get(light);\n        uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor);\n        uniforms.distance = light.distance;\n        uniforms.decay = light.decay;\n        if (light.castShadow) {\n          const shadow = light.shadow;\n          const shadowUniforms = shadowCache.get(light);\n          shadowUniforms.shadowBias = shadow.bias;\n          shadowUniforms.shadowNormalBias = shadow.normalBias;\n          shadowUniforms.shadowRadius = shadow.radius;\n          shadowUniforms.shadowMapSize = shadow.mapSize;\n          shadowUniforms.shadowCameraNear = shadow.camera.near;\n          shadowUniforms.shadowCameraFar = shadow.camera.far;\n          state.pointShadow[pointLength] = shadowUniforms;\n          state.pointShadowMap[pointLength] = shadowMap;\n          state.pointShadowMatrix[pointLength] = light.shadow.matrix;\n          numPointShadows++;\n        }\n        state.point[pointLength] = uniforms;\n        pointLength++;\n      } else if (light.isHemisphereLight) {\n        const uniforms = cache.get(light);\n        uniforms.skyColor.copy(light.color).multiplyScalar(intensity * scaleFactor);\n        uniforms.groundColor.copy(light.groundColor).multiplyScalar(intensity * scaleFactor);\n        state.hemi[hemiLength] = uniforms;\n        hemiLength++;\n      }\n    }\n    if (rectAreaLength > 0) {\n      if (capabilities.isWebGL2) {\n        state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n        state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n      } else {\n        if (extensions.has(\"OES_texture_float_linear\") === true) {\n          state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n          state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n        } else if (extensions.has(\"OES_texture_half_float_linear\") === true) {\n          state.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n          state.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n        } else {\n          console.error(\"THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.\");\n        }\n      }\n    }\n    state.ambient[0] = r;\n    state.ambient[1] = g;\n    state.ambient[2] = b;\n    const hash = state.hash;\n    if (hash.directionalLength !== directionalLength || hash.pointLength !== pointLength || hash.spotLength !== spotLength || hash.rectAreaLength !== rectAreaLength || hash.hemiLength !== hemiLength || hash.numDirectionalShadows !== numDirectionalShadows || hash.numPointShadows !== numPointShadows || hash.numSpotShadows !== numSpotShadows) {\n      state.directional.length = directionalLength;\n      state.spot.length = spotLength;\n      state.rectArea.length = rectAreaLength;\n      state.point.length = pointLength;\n      state.hemi.length = hemiLength;\n      state.directionalShadow.length = numDirectionalShadows;\n      state.directionalShadowMap.length = numDirectionalShadows;\n      state.pointShadow.length = numPointShadows;\n      state.pointShadowMap.length = numPointShadows;\n      state.spotShadow.length = numSpotShadows;\n      state.spotShadowMap.length = numSpotShadows;\n      state.directionalShadowMatrix.length = numDirectionalShadows;\n      state.pointShadowMatrix.length = numPointShadows;\n      state.spotShadowMatrix.length = numSpotShadows;\n      hash.directionalLength = directionalLength;\n      hash.pointLength = pointLength;\n      hash.spotLength = spotLength;\n      hash.rectAreaLength = rectAreaLength;\n      hash.hemiLength = hemiLength;\n      hash.numDirectionalShadows = numDirectionalShadows;\n      hash.numPointShadows = numPointShadows;\n      hash.numSpotShadows = numSpotShadows;\n      state.version = nextVersion++;\n    }\n  }\n  function setupView(lights, camera) {\n    let directionalLength = 0;\n    let pointLength = 0;\n    let spotLength = 0;\n    let rectAreaLength = 0;\n    let hemiLength = 0;\n    const viewMatrix = camera.matrixWorldInverse;\n    for (let i = 0, l = lights.length; i < l; i++) {\n      const light = lights[i];\n      if (light.isDirectionalLight) {\n        const uniforms = state.directional[directionalLength];\n        uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n        vector3.setFromMatrixPosition(light.target.matrixWorld);\n        uniforms.direction.sub(vector3);\n        uniforms.direction.transformDirection(viewMatrix);\n        directionalLength++;\n      } else if (light.isSpotLight) {\n        const uniforms = state.spot[spotLength];\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.position.applyMatrix4(viewMatrix);\n        uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n        vector3.setFromMatrixPosition(light.target.matrixWorld);\n        uniforms.direction.sub(vector3);\n        uniforms.direction.transformDirection(viewMatrix);\n        spotLength++;\n      } else if (light.isRectAreaLight) {\n        const uniforms = state.rectArea[rectAreaLength];\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.position.applyMatrix4(viewMatrix);\n        matrix42.identity();\n        matrix4.copy(light.matrixWorld);\n        matrix4.premultiply(viewMatrix);\n        matrix42.extractRotation(matrix4);\n        uniforms.halfWidth.set(light.width * 0.5, 0, 0);\n        uniforms.halfHeight.set(0, light.height * 0.5, 0);\n        uniforms.halfWidth.applyMatrix4(matrix42);\n        uniforms.halfHeight.applyMatrix4(matrix42);\n        rectAreaLength++;\n      } else if (light.isPointLight) {\n        const uniforms = state.point[pointLength];\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.position.applyMatrix4(viewMatrix);\n        pointLength++;\n      } else if (light.isHemisphereLight) {\n        const uniforms = state.hemi[hemiLength];\n        uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n        uniforms.direction.transformDirection(viewMatrix);\n        hemiLength++;\n      }\n    }\n  }\n  return {\n    setup,\n    setupView,\n    state\n  };\n}\nfunction WebGLRenderState(extensions, capabilities) {\n  const lights = new WebGLLights(extensions, capabilities);\n  const lightsArray = [];\n  const shadowsArray = [];\n  function init() {\n    lightsArray.length = 0;\n    shadowsArray.length = 0;\n  }\n  function pushLight(light) {\n    lightsArray.push(light);\n  }\n  function pushShadow(shadowLight) {\n    shadowsArray.push(shadowLight);\n  }\n  function setupLights(physicallyCorrectLights) {\n    lights.setup(lightsArray, physicallyCorrectLights);\n  }\n  function setupLightsView(camera) {\n    lights.setupView(lightsArray, camera);\n  }\n  const state = {\n    lightsArray,\n    shadowsArray,\n    lights\n  };\n  return {\n    init,\n    state,\n    setupLights,\n    setupLightsView,\n    pushLight,\n    pushShadow\n  };\n}\nfunction WebGLRenderStates(extensions, capabilities) {\n  let renderStates = /* @__PURE__ */ new WeakMap();\n  function get(scene, renderCallDepth = 0) {\n    let renderState;\n    if (renderStates.has(scene) === false) {\n      renderState = new WebGLRenderState(extensions, capabilities);\n      renderStates.set(scene, [renderState]);\n    } else {\n      if (renderCallDepth >= renderStates.get(scene).length) {\n        renderState = new WebGLRenderState(extensions, capabilities);\n        renderStates.get(scene).push(renderState);\n      } else {\n        renderState = renderStates.get(scene)[renderCallDepth];\n      }\n    }\n    return renderState;\n  }\n  function dispose() {\n    renderStates = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose\n  };\n}\nclass MeshDepthMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isMeshDepthMaterial = true;\n    this.type = \"MeshDepthMaterial\";\n    this.depthPacking = BasicDepthPacking;\n    this.map = null;\n    this.alphaMap = null;\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.depthPacking = source.depthPacking;\n    this.map = source.map;\n    this.alphaMap = source.alphaMap;\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    return this;\n  }\n}\nclass MeshDistanceMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isMeshDistanceMaterial = true;\n    this.type = \"MeshDistanceMaterial\";\n    this.referencePosition = new Vector3();\n    this.nearDistance = 1;\n    this.farDistance = 1e3;\n    this.map = null;\n    this.alphaMap = null;\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.referencePosition.copy(source.referencePosition);\n    this.nearDistance = source.nearDistance;\n    this.farDistance = source.farDistance;\n    this.map = source.map;\n    this.alphaMap = source.alphaMap;\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    return this;\n  }\n}\nconst vertex = \"void main() {\\n\tgl_Position = vec4( position, 1.0 );\\n}\";\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include <packing>\\nvoid main() {\\n\tconst float samples = float( VSM_SAMPLES );\\n\tfloat mean = 0.0;\\n\tfloat squared_mean = 0.0;\\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\t\tfloat uvOffset = uvStart + i * uvStride;\\n\t\t#ifdef HORIZONTAL_PASS\\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\t\t\tmean += distribution.x;\\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\t\t#else\\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\t\t\tmean += depth;\\n\t\t\tsquared_mean += depth * depth;\\n\t\t#endif\\n\t}\\n\tmean = mean / samples;\\n\tsquared_mean = squared_mean / samples;\\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\nfunction WebGLShadowMap(_renderer, _objects, _capabilities) {\n  let _frustum = new Frustum();\n  const _shadowMapSize = new Vector2(), _viewportSize = new Vector2(), _viewport = new Vector4(), _depthMaterial = new MeshDepthMaterial({ depthPacking: RGBADepthPacking }), _distanceMaterial = new MeshDistanceMaterial(), _materialCache = {}, _maxTextureSize = _capabilities.maxTextureSize;\n  const shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n  const shadowMaterialVertical = new ShaderMaterial({\n    defines: {\n      VSM_SAMPLES: 8\n    },\n    uniforms: {\n      shadow_pass: { value: null },\n      resolution: { value: new Vector2() },\n      radius: { value: 4 }\n    },\n    vertexShader: vertex,\n    fragmentShader: fragment\n  });\n  const shadowMaterialHorizontal = shadowMaterialVertical.clone();\n  shadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n  const fullScreenTri = new BufferGeometry();\n  fullScreenTri.setAttribute(\n    \"position\",\n    new BufferAttribute(\n      new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]),\n      3\n    )\n  );\n  const fullScreenMesh = new Mesh(fullScreenTri, shadowMaterialVertical);\n  const scope = this;\n  this.enabled = false;\n  this.autoUpdate = true;\n  this.needsUpdate = false;\n  this.type = PCFShadowMap;\n  this.render = function(lights, scene, camera) {\n    if (scope.enabled === false)\n      return;\n    if (scope.autoUpdate === false && scope.needsUpdate === false)\n      return;\n    if (lights.length === 0)\n      return;\n    const currentRenderTarget = _renderer.getRenderTarget();\n    const activeCubeFace = _renderer.getActiveCubeFace();\n    const activeMipmapLevel = _renderer.getActiveMipmapLevel();\n    const _state = _renderer.state;\n    _state.setBlending(NoBlending);\n    _state.buffers.color.setClear(1, 1, 1, 1);\n    _state.buffers.depth.setTest(true);\n    _state.setScissorTest(false);\n    for (let i = 0, il = lights.length; i < il; i++) {\n      const light = lights[i];\n      const shadow = light.shadow;\n      if (shadow === void 0) {\n        console.warn(\"THREE.WebGLShadowMap:\", light, \"has no shadow.\");\n        continue;\n      }\n      if (shadow.autoUpdate === false && shadow.needsUpdate === false)\n        continue;\n      _shadowMapSize.copy(shadow.mapSize);\n      const shadowFrameExtents = shadow.getFrameExtents();\n      _shadowMapSize.multiply(shadowFrameExtents);\n      _viewportSize.copy(shadow.mapSize);\n      if (_shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize) {\n        if (_shadowMapSize.x > _maxTextureSize) {\n          _viewportSize.x = Math.floor(_maxTextureSize / shadowFrameExtents.x);\n          _shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n          shadow.mapSize.x = _viewportSize.x;\n        }\n        if (_shadowMapSize.y > _maxTextureSize) {\n          _viewportSize.y = Math.floor(_maxTextureSize / shadowFrameExtents.y);\n          _shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n          shadow.mapSize.y = _viewportSize.y;\n        }\n      }\n      if (shadow.map === null) {\n        const pars = this.type !== VSMShadowMap ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n        shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n        shadow.map.texture.name = light.name + \".shadowMap\";\n        shadow.camera.updateProjectionMatrix();\n      }\n      _renderer.setRenderTarget(shadow.map);\n      _renderer.clear();\n      const viewportCount = shadow.getViewportCount();\n      for (let vp = 0; vp < viewportCount; vp++) {\n        const viewport = shadow.getViewport(vp);\n        _viewport.set(\n          _viewportSize.x * viewport.x,\n          _viewportSize.y * viewport.y,\n          _viewportSize.x * viewport.z,\n          _viewportSize.y * viewport.w\n        );\n        _state.viewport(_viewport);\n        shadow.updateMatrices(light, vp);\n        _frustum = shadow.getFrustum();\n        renderObject(scene, camera, shadow.camera, light, this.type);\n      }\n      if (shadow.isPointLightShadow !== true && this.type === VSMShadowMap) {\n        VSMPass(shadow, camera);\n      }\n      shadow.needsUpdate = false;\n    }\n    scope.needsUpdate = false;\n    _renderer.setRenderTarget(currentRenderTarget, activeCubeFace, activeMipmapLevel);\n  };\n  function VSMPass(shadow, camera) {\n    const geometry = _objects.update(fullScreenMesh);\n    if (shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples) {\n      shadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n      shadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n      shadowMaterialVertical.needsUpdate = true;\n      shadowMaterialHorizontal.needsUpdate = true;\n    }\n    if (shadow.mapPass === null) {\n      shadow.mapPass = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y);\n    }\n    shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n    shadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n    shadowMaterialVertical.uniforms.radius.value = shadow.radius;\n    _renderer.setRenderTarget(shadow.mapPass);\n    _renderer.clear();\n    _renderer.renderBufferDirect(camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null);\n    shadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n    shadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n    shadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n    _renderer.setRenderTarget(shadow.map);\n    _renderer.clear();\n    _renderer.renderBufferDirect(camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null);\n  }\n  function getDepthMaterial(object, material, light, shadowCameraNear, shadowCameraFar, type) {\n    let result = null;\n    const customMaterial = light.isPointLight === true ? object.customDistanceMaterial : object.customDepthMaterial;\n    if (customMaterial !== void 0) {\n      result = customMaterial;\n    } else {\n      result = light.isPointLight === true ? _distanceMaterial : _depthMaterial;\n    }\n    if (_renderer.localClippingEnabled && material.clipShadows === true && Array.isArray(material.clippingPlanes) && material.clippingPlanes.length !== 0 || material.displacementMap && material.displacementScale !== 0 || material.alphaMap && material.alphaTest > 0) {\n      const keyA = result.uuid, keyB = material.uuid;\n      let materialsForVariant = _materialCache[keyA];\n      if (materialsForVariant === void 0) {\n        materialsForVariant = {};\n        _materialCache[keyA] = materialsForVariant;\n      }\n      let cachedMaterial = materialsForVariant[keyB];\n      if (cachedMaterial === void 0) {\n        cachedMaterial = result.clone();\n        materialsForVariant[keyB] = cachedMaterial;\n      }\n      result = cachedMaterial;\n    }\n    result.visible = material.visible;\n    result.wireframe = material.wireframe;\n    if (type === VSMShadowMap) {\n      result.side = material.shadowSide !== null ? material.shadowSide : material.side;\n    } else {\n      result.side = material.shadowSide !== null ? material.shadowSide : shadowSide[material.side];\n    }\n    result.alphaMap = material.alphaMap;\n    result.alphaTest = material.alphaTest;\n    result.clipShadows = material.clipShadows;\n    result.clippingPlanes = material.clippingPlanes;\n    result.clipIntersection = material.clipIntersection;\n    result.displacementMap = material.displacementMap;\n    result.displacementScale = material.displacementScale;\n    result.displacementBias = material.displacementBias;\n    result.wireframeLinewidth = material.wireframeLinewidth;\n    result.linewidth = material.linewidth;\n    if (light.isPointLight === true && result.isMeshDistanceMaterial === true) {\n      result.referencePosition.setFromMatrixPosition(light.matrixWorld);\n      result.nearDistance = shadowCameraNear;\n      result.farDistance = shadowCameraFar;\n    }\n    return result;\n  }\n  function renderObject(object, camera, shadowCamera, light, type) {\n    if (object.visible === false)\n      return;\n    const visible = object.layers.test(camera.layers);\n    if (visible && (object.isMesh || object.isLine || object.isPoints)) {\n      if ((object.castShadow || object.receiveShadow && type === VSMShadowMap) && (!object.frustumCulled || _frustum.intersectsObject(object))) {\n        object.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse, object.matrixWorld);\n        const geometry = _objects.update(object);\n        const material = object.material;\n        if (Array.isArray(material)) {\n          const groups = geometry.groups;\n          for (let k = 0, kl = groups.length; k < kl; k++) {\n            const group = groups[k];\n            const groupMaterial = material[group.materialIndex];\n            if (groupMaterial && groupMaterial.visible) {\n              const depthMaterial = getDepthMaterial(object, groupMaterial, light, shadowCamera.near, shadowCamera.far, type);\n              _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group);\n            }\n          }\n        } else if (material.visible) {\n          const depthMaterial = getDepthMaterial(object, material, light, shadowCamera.near, shadowCamera.far, type);\n          _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null);\n        }\n      }\n    }\n    const children = object.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      renderObject(children[i], camera, shadowCamera, light, type);\n    }\n  }\n}\nfunction WebGLState(gl, extensions, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  function ColorBuffer() {\n    let locked = false;\n    const color = new Vector4();\n    let currentColorMask = null;\n    const currentColorClear = new Vector4(0, 0, 0, 0);\n    return {\n      setMask: function(colorMask) {\n        if (currentColorMask !== colorMask && !locked) {\n          gl.colorMask(colorMask, colorMask, colorMask, colorMask);\n          currentColorMask = colorMask;\n        }\n      },\n      setLocked: function(lock) {\n        locked = lock;\n      },\n      setClear: function(r, g, b, a, premultipliedAlpha) {\n        if (premultipliedAlpha === true) {\n          r *= a;\n          g *= a;\n          b *= a;\n        }\n        color.set(r, g, b, a);\n        if (currentColorClear.equals(color) === false) {\n          gl.clearColor(r, g, b, a);\n          currentColorClear.copy(color);\n        }\n      },\n      reset: function() {\n        locked = false;\n        currentColorMask = null;\n        currentColorClear.set(-1, 0, 0, 0);\n      }\n    };\n  }\n  function DepthBuffer() {\n    let locked = false;\n    let currentDepthMask = null;\n    let currentDepthFunc = null;\n    let currentDepthClear = null;\n    return {\n      setTest: function(depthTest) {\n        if (depthTest) {\n          enable(2929);\n        } else {\n          disable(2929);\n        }\n      },\n      setMask: function(depthMask) {\n        if (currentDepthMask !== depthMask && !locked) {\n          gl.depthMask(depthMask);\n          currentDepthMask = depthMask;\n        }\n      },\n      setFunc: function(depthFunc) {\n        if (currentDepthFunc !== depthFunc) {\n          if (depthFunc) {\n            switch (depthFunc) {\n              case NeverDepth:\n                gl.depthFunc(512);\n                break;\n              case AlwaysDepth:\n                gl.depthFunc(519);\n                break;\n              case LessDepth:\n                gl.depthFunc(513);\n                break;\n              case LessEqualDepth:\n                gl.depthFunc(515);\n                break;\n              case EqualDepth:\n                gl.depthFunc(514);\n                break;\n              case GreaterEqualDepth:\n                gl.depthFunc(518);\n                break;\n              case GreaterDepth:\n                gl.depthFunc(516);\n                break;\n              case NotEqualDepth:\n                gl.depthFunc(517);\n                break;\n              default:\n                gl.depthFunc(515);\n            }\n          } else {\n            gl.depthFunc(515);\n          }\n          currentDepthFunc = depthFunc;\n        }\n      },\n      setLocked: function(lock) {\n        locked = lock;\n      },\n      setClear: function(depth) {\n        if (currentDepthClear !== depth) {\n          gl.clearDepth(depth);\n          currentDepthClear = depth;\n        }\n      },\n      reset: function() {\n        locked = false;\n        currentDepthMask = null;\n        currentDepthFunc = null;\n        currentDepthClear = null;\n      }\n    };\n  }\n  function StencilBuffer() {\n    let locked = false;\n    let currentStencilMask = null;\n    let currentStencilFunc = null;\n    let currentStencilRef = null;\n    let currentStencilFuncMask = null;\n    let currentStencilFail = null;\n    let currentStencilZFail = null;\n    let currentStencilZPass = null;\n    let currentStencilClear = null;\n    return {\n      setTest: function(stencilTest) {\n        if (!locked) {\n          if (stencilTest) {\n            enable(2960);\n          } else {\n            disable(2960);\n          }\n        }\n      },\n      setMask: function(stencilMask) {\n        if (currentStencilMask !== stencilMask && !locked) {\n          gl.stencilMask(stencilMask);\n          currentStencilMask = stencilMask;\n        }\n      },\n      setFunc: function(stencilFunc, stencilRef, stencilMask) {\n        if (currentStencilFunc !== stencilFunc || currentStencilRef !== stencilRef || currentStencilFuncMask !== stencilMask) {\n          gl.stencilFunc(stencilFunc, stencilRef, stencilMask);\n          currentStencilFunc = stencilFunc;\n          currentStencilRef = stencilRef;\n          currentStencilFuncMask = stencilMask;\n        }\n      },\n      setOp: function(stencilFail, stencilZFail, stencilZPass) {\n        if (currentStencilFail !== stencilFail || currentStencilZFail !== stencilZFail || currentStencilZPass !== stencilZPass) {\n          gl.stencilOp(stencilFail, stencilZFail, stencilZPass);\n          currentStencilFail = stencilFail;\n          currentStencilZFail = stencilZFail;\n          currentStencilZPass = stencilZPass;\n        }\n      },\n      setLocked: function(lock) {\n        locked = lock;\n      },\n      setClear: function(stencil) {\n        if (currentStencilClear !== stencil) {\n          gl.clearStencil(stencil);\n          currentStencilClear = stencil;\n        }\n      },\n      reset: function() {\n        locked = false;\n        currentStencilMask = null;\n        currentStencilFunc = null;\n        currentStencilRef = null;\n        currentStencilFuncMask = null;\n        currentStencilFail = null;\n        currentStencilZFail = null;\n        currentStencilZPass = null;\n        currentStencilClear = null;\n      }\n    };\n  }\n  const colorBuffer = new ColorBuffer();\n  const depthBuffer = new DepthBuffer();\n  const stencilBuffer = new StencilBuffer();\n  const uboBindings = /* @__PURE__ */ new WeakMap();\n  const uboProgamMap = /* @__PURE__ */ new WeakMap();\n  let enabledCapabilities = {};\n  let currentBoundFramebuffers = {};\n  let currentDrawbuffers = /* @__PURE__ */ new WeakMap();\n  let defaultDrawbuffers = [];\n  let currentProgram = null;\n  let currentBlendingEnabled = false;\n  let currentBlending = null;\n  let currentBlendEquation = null;\n  let currentBlendSrc = null;\n  let currentBlendDst = null;\n  let currentBlendEquationAlpha = null;\n  let currentBlendSrcAlpha = null;\n  let currentBlendDstAlpha = null;\n  let currentPremultipledAlpha = false;\n  let currentFlipSided = null;\n  let currentCullFace = null;\n  let currentLineWidth = null;\n  let currentPolygonOffsetFactor = null;\n  let currentPolygonOffsetUnits = null;\n  const maxTextures = gl.getParameter(35661);\n  let lineWidthAvailable = false;\n  let version = 0;\n  const glVersion = gl.getParameter(7938);\n  if (glVersion.indexOf(\"WebGL\") !== -1) {\n    version = parseFloat(/^WebGL (\\d)/.exec(glVersion)[1]);\n    lineWidthAvailable = version >= 1;\n  } else if (glVersion.indexOf(\"OpenGL ES\") !== -1) {\n    version = parseFloat(/^OpenGL ES (\\d)/.exec(glVersion)[1]);\n    lineWidthAvailable = version >= 2;\n  }\n  let currentTextureSlot = null;\n  let currentBoundTextures = {};\n  const scissorParam = gl.getParameter(3088);\n  const viewportParam = gl.getParameter(2978);\n  const currentScissor = new Vector4().fromArray(scissorParam);\n  const currentViewport = new Vector4().fromArray(viewportParam);\n  function createTexture(type, target, count) {\n    const data = new Uint8Array(4);\n    const texture = gl.createTexture();\n    gl.bindTexture(type, texture);\n    gl.texParameteri(type, 10241, 9728);\n    gl.texParameteri(type, 10240, 9728);\n    for (let i = 0; i < count; i++) {\n      gl.texImage2D(target + i, 0, 6408, 1, 1, 0, 6408, 5121, data);\n    }\n    return texture;\n  }\n  const emptyTextures = {};\n  emptyTextures[3553] = createTexture(3553, 3553, 1);\n  emptyTextures[34067] = createTexture(34067, 34069, 6);\n  colorBuffer.setClear(0, 0, 0, 1);\n  depthBuffer.setClear(1);\n  stencilBuffer.setClear(0);\n  enable(2929);\n  depthBuffer.setFunc(LessEqualDepth);\n  setFlipSided(false);\n  setCullFace(CullFaceBack);\n  enable(2884);\n  setBlending(NoBlending);\n  function enable(id2) {\n    if (enabledCapabilities[id2] !== true) {\n      gl.enable(id2);\n      enabledCapabilities[id2] = true;\n    }\n  }\n  function disable(id2) {\n    if (enabledCapabilities[id2] !== false) {\n      gl.disable(id2);\n      enabledCapabilities[id2] = false;\n    }\n  }\n  function bindFramebuffer(target, framebuffer) {\n    if (currentBoundFramebuffers[target] !== framebuffer) {\n      gl.bindFramebuffer(target, framebuffer);\n      currentBoundFramebuffers[target] = framebuffer;\n      if (isWebGL2) {\n        if (target === 36009) {\n          currentBoundFramebuffers[36160] = framebuffer;\n        }\n        if (target === 36160) {\n          currentBoundFramebuffers[36009] = framebuffer;\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n  function drawBuffers(renderTarget, framebuffer) {\n    let drawBuffers2 = defaultDrawbuffers;\n    let needsUpdate = false;\n    if (renderTarget) {\n      drawBuffers2 = currentDrawbuffers.get(framebuffer);\n      if (drawBuffers2 === void 0) {\n        drawBuffers2 = [];\n        currentDrawbuffers.set(framebuffer, drawBuffers2);\n      }\n      if (renderTarget.isWebGLMultipleRenderTargets) {\n        const textures = renderTarget.texture;\n        if (drawBuffers2.length !== textures.length || drawBuffers2[0] !== 36064) {\n          for (let i = 0, il = textures.length; i < il; i++) {\n            drawBuffers2[i] = 36064 + i;\n          }\n          drawBuffers2.length = textures.length;\n          needsUpdate = true;\n        }\n      } else {\n        if (drawBuffers2[0] !== 36064) {\n          drawBuffers2[0] = 36064;\n          needsUpdate = true;\n        }\n      }\n    } else {\n      if (drawBuffers2[0] !== 1029) {\n        drawBuffers2[0] = 1029;\n        needsUpdate = true;\n      }\n    }\n    if (needsUpdate) {\n      if (capabilities.isWebGL2) {\n        gl.drawBuffers(drawBuffers2);\n      } else {\n        extensions.get(\"WEBGL_draw_buffers\").drawBuffersWEBGL(drawBuffers2);\n      }\n    }\n  }\n  function useProgram(program) {\n    if (currentProgram !== program) {\n      gl.useProgram(program);\n      currentProgram = program;\n      return true;\n    }\n    return false;\n  }\n  const equationToGL = {\n    [AddEquation]: 32774,\n    [SubtractEquation]: 32778,\n    [ReverseSubtractEquation]: 32779\n  };\n  if (isWebGL2) {\n    equationToGL[MinEquation] = 32775;\n    equationToGL[MaxEquation] = 32776;\n  } else {\n    const extension = extensions.get(\"EXT_blend_minmax\");\n    if (extension !== null) {\n      equationToGL[MinEquation] = extension.MIN_EXT;\n      equationToGL[MaxEquation] = extension.MAX_EXT;\n    }\n  }\n  const factorToGL = {\n    [ZeroFactor]: 0,\n    [OneFactor]: 1,\n    [SrcColorFactor]: 768,\n    [SrcAlphaFactor]: 770,\n    [SrcAlphaSaturateFactor]: 776,\n    [DstColorFactor]: 774,\n    [DstAlphaFactor]: 772,\n    [OneMinusSrcColorFactor]: 769,\n    [OneMinusSrcAlphaFactor]: 771,\n    [OneMinusDstColorFactor]: 775,\n    [OneMinusDstAlphaFactor]: 773\n  };\n  function setBlending(blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha) {\n    if (blending === NoBlending) {\n      if (currentBlendingEnabled === true) {\n        disable(3042);\n        currentBlendingEnabled = false;\n      }\n      return;\n    }\n    if (currentBlendingEnabled === false) {\n      enable(3042);\n      currentBlendingEnabled = true;\n    }\n    if (blending !== CustomBlending) {\n      if (blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha) {\n        if (currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation) {\n          gl.blendEquation(32774);\n          currentBlendEquation = AddEquation;\n          currentBlendEquationAlpha = AddEquation;\n        }\n        if (premultipliedAlpha) {\n          switch (blending) {\n            case NormalBlending:\n              gl.blendFuncSeparate(1, 771, 1, 771);\n              break;\n            case AdditiveBlending:\n              gl.blendFunc(1, 1);\n              break;\n            case SubtractiveBlending:\n              gl.blendFuncSeparate(0, 769, 0, 1);\n              break;\n            case MultiplyBlending:\n              gl.blendFuncSeparate(0, 768, 0, 770);\n              break;\n            default:\n              console.error(\"THREE.WebGLState: Invalid blending: \", blending);\n              break;\n          }\n        } else {\n          switch (blending) {\n            case NormalBlending:\n              gl.blendFuncSeparate(770, 771, 1, 771);\n              break;\n            case AdditiveBlending:\n              gl.blendFunc(770, 1);\n              break;\n            case SubtractiveBlending:\n              gl.blendFuncSeparate(0, 769, 0, 1);\n              break;\n            case MultiplyBlending:\n              gl.blendFunc(0, 768);\n              break;\n            default:\n              console.error(\"THREE.WebGLState: Invalid blending: \", blending);\n              break;\n          }\n        }\n        currentBlendSrc = null;\n        currentBlendDst = null;\n        currentBlendSrcAlpha = null;\n        currentBlendDstAlpha = null;\n        currentBlending = blending;\n        currentPremultipledAlpha = premultipliedAlpha;\n      }\n      return;\n    }\n    blendEquationAlpha = blendEquationAlpha || blendEquation;\n    blendSrcAlpha = blendSrcAlpha || blendSrc;\n    blendDstAlpha = blendDstAlpha || blendDst;\n    if (blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha) {\n      gl.blendEquationSeparate(equationToGL[blendEquation], equationToGL[blendEquationAlpha]);\n      currentBlendEquation = blendEquation;\n      currentBlendEquationAlpha = blendEquationAlpha;\n    }\n    if (blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha) {\n      gl.blendFuncSeparate(factorToGL[blendSrc], factorToGL[blendDst], factorToGL[blendSrcAlpha], factorToGL[blendDstAlpha]);\n      currentBlendSrc = blendSrc;\n      currentBlendDst = blendDst;\n      currentBlendSrcAlpha = blendSrcAlpha;\n      currentBlendDstAlpha = blendDstAlpha;\n    }\n    currentBlending = blending;\n    currentPremultipledAlpha = null;\n  }\n  function setMaterial(material, frontFaceCW) {\n    material.side === DoubleSide ? disable(2884) : enable(2884);\n    let flipSided = material.side === BackSide;\n    if (frontFaceCW)\n      flipSided = !flipSided;\n    setFlipSided(flipSided);\n    material.blending === NormalBlending && material.transparent === false ? setBlending(NoBlending) : setBlending(material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha);\n    depthBuffer.setFunc(material.depthFunc);\n    depthBuffer.setTest(material.depthTest);\n    depthBuffer.setMask(material.depthWrite);\n    colorBuffer.setMask(material.colorWrite);\n    const stencilWrite = material.stencilWrite;\n    stencilBuffer.setTest(stencilWrite);\n    if (stencilWrite) {\n      stencilBuffer.setMask(material.stencilWriteMask);\n      stencilBuffer.setFunc(material.stencilFunc, material.stencilRef, material.stencilFuncMask);\n      stencilBuffer.setOp(material.stencilFail, material.stencilZFail, material.stencilZPass);\n    }\n    setPolygonOffset(material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits);\n    material.alphaToCoverage === true ? enable(32926) : disable(32926);\n  }\n  function setFlipSided(flipSided) {\n    if (currentFlipSided !== flipSided) {\n      if (flipSided) {\n        gl.frontFace(2304);\n      } else {\n        gl.frontFace(2305);\n      }\n      currentFlipSided = flipSided;\n    }\n  }\n  function setCullFace(cullFace) {\n    if (cullFace !== CullFaceNone) {\n      enable(2884);\n      if (cullFace !== currentCullFace) {\n        if (cullFace === CullFaceBack) {\n          gl.cullFace(1029);\n        } else if (cullFace === CullFaceFront) {\n          gl.cullFace(1028);\n        } else {\n          gl.cullFace(1032);\n        }\n      }\n    } else {\n      disable(2884);\n    }\n    currentCullFace = cullFace;\n  }\n  function setLineWidth(width) {\n    if (width !== currentLineWidth) {\n      if (lineWidthAvailable)\n        gl.lineWidth(width);\n      currentLineWidth = width;\n    }\n  }\n  function setPolygonOffset(polygonOffset, factor, units) {\n    if (polygonOffset) {\n      enable(32823);\n      if (currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units) {\n        gl.polygonOffset(factor, units);\n        currentPolygonOffsetFactor = factor;\n        currentPolygonOffsetUnits = units;\n      }\n    } else {\n      disable(32823);\n    }\n  }\n  function setScissorTest(scissorTest) {\n    if (scissorTest) {\n      enable(3089);\n    } else {\n      disable(3089);\n    }\n  }\n  function activeTexture(webglSlot) {\n    if (webglSlot === void 0)\n      webglSlot = 33984 + maxTextures - 1;\n    if (currentTextureSlot !== webglSlot) {\n      gl.activeTexture(webglSlot);\n      currentTextureSlot = webglSlot;\n    }\n  }\n  function bindTexture(webglType, webglTexture) {\n    if (currentTextureSlot === null) {\n      activeTexture();\n    }\n    let boundTexture = currentBoundTextures[currentTextureSlot];\n    if (boundTexture === void 0) {\n      boundTexture = { type: void 0, texture: void 0 };\n      currentBoundTextures[currentTextureSlot] = boundTexture;\n    }\n    if (boundTexture.type !== webglType || boundTexture.texture !== webglTexture) {\n      gl.bindTexture(webglType, webglTexture || emptyTextures[webglType]);\n      boundTexture.type = webglType;\n      boundTexture.texture = webglTexture;\n    }\n  }\n  function unbindTexture() {\n    const boundTexture = currentBoundTextures[currentTextureSlot];\n    if (boundTexture !== void 0 && boundTexture.type !== void 0) {\n      gl.bindTexture(boundTexture.type, null);\n      boundTexture.type = void 0;\n      boundTexture.texture = void 0;\n    }\n  }\n  function compressedTexImage2D() {\n    try {\n      gl.compressedTexImage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texSubImage2D() {\n    try {\n      gl.texSubImage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texSubImage3D() {\n    try {\n      gl.texSubImage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function compressedTexSubImage2D() {\n    try {\n      gl.compressedTexSubImage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texStorage2D() {\n    try {\n      gl.texStorage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texStorage3D() {\n    try {\n      gl.texStorage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texImage2D() {\n    try {\n      gl.texImage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texImage3D() {\n    try {\n      gl.texImage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function scissor(scissor2) {\n    if (currentScissor.equals(scissor2) === false) {\n      gl.scissor(scissor2.x, scissor2.y, scissor2.z, scissor2.w);\n      currentScissor.copy(scissor2);\n    }\n  }\n  function viewport(viewport2) {\n    if (currentViewport.equals(viewport2) === false) {\n      gl.viewport(viewport2.x, viewport2.y, viewport2.z, viewport2.w);\n      currentViewport.copy(viewport2);\n    }\n  }\n  function updateUBOMapping(uniformsGroup, program) {\n    let mapping = uboProgamMap.get(program);\n    if (mapping === void 0) {\n      mapping = /* @__PURE__ */ new WeakMap();\n      uboProgamMap.set(program, mapping);\n    }\n    let blockIndex = mapping.get(uniformsGroup);\n    if (blockIndex === void 0) {\n      blockIndex = gl.getUniformBlockIndex(program, uniformsGroup.name);\n      mapping.set(uniformsGroup, blockIndex);\n    }\n  }\n  function uniformBlockBinding(uniformsGroup, program) {\n    const mapping = uboProgamMap.get(program);\n    const blockIndex = mapping.get(uniformsGroup);\n    if (uboBindings.get(uniformsGroup) !== blockIndex) {\n      gl.uniformBlockBinding(program, blockIndex, uniformsGroup.__bindingPointIndex);\n      uboBindings.set(uniformsGroup, blockIndex);\n    }\n  }\n  function reset() {\n    gl.disable(3042);\n    gl.disable(2884);\n    gl.disable(2929);\n    gl.disable(32823);\n    gl.disable(3089);\n    gl.disable(2960);\n    gl.disable(32926);\n    gl.blendEquation(32774);\n    gl.blendFunc(1, 0);\n    gl.blendFuncSeparate(1, 0, 1, 0);\n    gl.colorMask(true, true, true, true);\n    gl.clearColor(0, 0, 0, 0);\n    gl.depthMask(true);\n    gl.depthFunc(513);\n    gl.clearDepth(1);\n    gl.stencilMask(4294967295);\n    gl.stencilFunc(519, 0, 4294967295);\n    gl.stencilOp(7680, 7680, 7680);\n    gl.clearStencil(0);\n    gl.cullFace(1029);\n    gl.frontFace(2305);\n    gl.polygonOffset(0, 0);\n    gl.activeTexture(33984);\n    gl.bindFramebuffer(36160, null);\n    if (isWebGL2 === true) {\n      gl.bindFramebuffer(36009, null);\n      gl.bindFramebuffer(36008, null);\n    }\n    gl.useProgram(null);\n    gl.lineWidth(1);\n    gl.scissor(0, 0, gl.canvas.width, gl.canvas.height);\n    gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);\n    enabledCapabilities = {};\n    currentTextureSlot = null;\n    currentBoundTextures = {};\n    currentBoundFramebuffers = {};\n    currentDrawbuffers = /* @__PURE__ */ new WeakMap();\n    defaultDrawbuffers = [];\n    currentProgram = null;\n    currentBlendingEnabled = false;\n    currentBlending = null;\n    currentBlendEquation = null;\n    currentBlendSrc = null;\n    currentBlendDst = null;\n    currentBlendEquationAlpha = null;\n    currentBlendSrcAlpha = null;\n    currentBlendDstAlpha = null;\n    currentPremultipledAlpha = false;\n    currentFlipSided = null;\n    currentCullFace = null;\n    currentLineWidth = null;\n    currentPolygonOffsetFactor = null;\n    currentPolygonOffsetUnits = null;\n    currentScissor.set(0, 0, gl.canvas.width, gl.canvas.height);\n    currentViewport.set(0, 0, gl.canvas.width, gl.canvas.height);\n    colorBuffer.reset();\n    depthBuffer.reset();\n    stencilBuffer.reset();\n  }\n  return {\n    buffers: {\n      color: colorBuffer,\n      depth: depthBuffer,\n      stencil: stencilBuffer\n    },\n    enable,\n    disable,\n    bindFramebuffer,\n    drawBuffers,\n    useProgram,\n    setBlending,\n    setMaterial,\n    setFlipSided,\n    setCullFace,\n    setLineWidth,\n    setPolygonOffset,\n    setScissorTest,\n    activeTexture,\n    bindTexture,\n    unbindTexture,\n    compressedTexImage2D,\n    texImage2D,\n    texImage3D,\n    updateUBOMapping,\n    uniformBlockBinding,\n    texStorage2D,\n    texStorage3D,\n    texSubImage2D,\n    texSubImage3D,\n    compressedTexSubImage2D,\n    scissor,\n    viewport,\n    reset\n  };\n}\nfunction WebGLTextures(_gl, extensions, state, properties, capabilities, utils2, info) {\n  const isWebGL2 = capabilities.isWebGL2;\n  const maxTextures = capabilities.maxTextures;\n  const maxCubemapSize = capabilities.maxCubemapSize;\n  const maxTextureSize = capabilities.maxTextureSize;\n  const maxSamples = capabilities.maxSamples;\n  const multisampledRTTExt = extensions.has(\"WEBGL_multisampled_render_to_texture\") ? extensions.get(\"WEBGL_multisampled_render_to_texture\") : null;\n  const supportsInvalidateFramebuffer = /OculusBrowser/g.test(navigator.userAgent);\n  const _videoTextures = /* @__PURE__ */ new WeakMap();\n  let _canvas2;\n  const _sources = /* @__PURE__ */ new WeakMap();\n  let useOffscreenCanvas = false;\n  try {\n    useOffscreenCanvas = typeof OffscreenCanvas !== \"undefined\" && new OffscreenCanvas(1, 1).getContext(\"2d\") !== null;\n  } catch (err2) {\n  }\n  function createCanvas(width, height) {\n    return useOffscreenCanvas ? new OffscreenCanvas(width, height) : createElementNS(\"canvas\");\n  }\n  function resizeImage(image, needsPowerOfTwo, needsNewCanvas, maxSize) {\n    let scale = 1;\n    if (image.width > maxSize || image.height > maxSize) {\n      scale = maxSize / Math.max(image.width, image.height);\n    }\n    if (scale < 1 || needsPowerOfTwo === true) {\n      if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n        const floor2 = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n        const width = floor2(scale * image.width);\n        const height = floor2(scale * image.height);\n        if (_canvas2 === void 0)\n          _canvas2 = createCanvas(width, height);\n        const canvas = needsNewCanvas ? createCanvas(width, height) : _canvas2;\n        canvas.width = width;\n        canvas.height = height;\n        const context = canvas.getContext(\"2d\");\n        context.drawImage(image, 0, 0, width, height);\n        console.warn(\"THREE.WebGLRenderer: Texture has been resized from (\" + image.width + \"x\" + image.height + \") to (\" + width + \"x\" + height + \").\");\n        return canvas;\n      } else {\n        if (\"data\" in image) {\n          console.warn(\"THREE.WebGLRenderer: Image in DataTexture is too big (\" + image.width + \"x\" + image.height + \").\");\n        }\n        return image;\n      }\n    }\n    return image;\n  }\n  function isPowerOfTwo$1(image) {\n    return isPowerOfTwo(image.width) && isPowerOfTwo(image.height);\n  }\n  function textureNeedsPowerOfTwo(texture) {\n    if (isWebGL2)\n      return false;\n    return texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping || texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n  }\n  function textureNeedsGenerateMipmaps(texture, supportsMips) {\n    return texture.generateMipmaps && supportsMips && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n  }\n  function generateMipmap(target) {\n    _gl.generateMipmap(target);\n  }\n  function getInternalFormat(internalFormatName, glFormat, glType, encoding, isVideoTexture = false) {\n    if (isWebGL2 === false)\n      return glFormat;\n    if (internalFormatName !== null) {\n      if (_gl[internalFormatName] !== void 0)\n        return _gl[internalFormatName];\n      console.warn(\"THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '\" + internalFormatName + \"'\");\n    }\n    let internalFormat = glFormat;\n    if (glFormat === 6403) {\n      if (glType === 5126)\n        internalFormat = 33326;\n      if (glType === 5131)\n        internalFormat = 33325;\n      if (glType === 5121)\n        internalFormat = 33321;\n    }\n    if (glFormat === 33319) {\n      if (glType === 5126)\n        internalFormat = 33328;\n      if (glType === 5131)\n        internalFormat = 33327;\n      if (glType === 5121)\n        internalFormat = 33323;\n    }\n    if (glFormat === 6408) {\n      if (glType === 5126)\n        internalFormat = 34836;\n      if (glType === 5131)\n        internalFormat = 34842;\n      if (glType === 5121)\n        internalFormat = encoding === sRGBEncoding && isVideoTexture === false ? 35907 : 32856;\n      if (glType === 32819)\n        internalFormat = 32854;\n      if (glType === 32820)\n        internalFormat = 32855;\n    }\n    if (internalFormat === 33325 || internalFormat === 33326 || internalFormat === 33327 || internalFormat === 33328 || internalFormat === 34842 || internalFormat === 34836) {\n      extensions.get(\"EXT_color_buffer_float\");\n    }\n    return internalFormat;\n  }\n  function getMipLevels(texture, image, supportsMips) {\n    if (textureNeedsGenerateMipmaps(texture, supportsMips) === true || texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) {\n      return Math.log2(Math.max(image.width, image.height)) + 1;\n    } else if (texture.mipmaps !== void 0 && texture.mipmaps.length > 0) {\n      return texture.mipmaps.length;\n    } else if (texture.isCompressedTexture && Array.isArray(texture.image)) {\n      return image.mipmaps.length;\n    } else {\n      return 1;\n    }\n  }\n  function filterFallback(f) {\n    if (f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter) {\n      return 9728;\n    }\n    return 9729;\n  }\n  function onTextureDispose(event) {\n    const texture = event.target;\n    texture.removeEventListener(\"dispose\", onTextureDispose);\n    deallocateTexture(texture);\n    if (texture.isVideoTexture) {\n      _videoTextures.delete(texture);\n    }\n  }\n  function onRenderTargetDispose(event) {\n    const renderTarget = event.target;\n    renderTarget.removeEventListener(\"dispose\", onRenderTargetDispose);\n    deallocateRenderTarget(renderTarget);\n  }\n  function deallocateTexture(texture) {\n    const textureProperties = properties.get(texture);\n    if (textureProperties.__webglInit === void 0)\n      return;\n    const source = texture.source;\n    const webglTextures = _sources.get(source);\n    if (webglTextures) {\n      const webglTexture = webglTextures[textureProperties.__cacheKey];\n      webglTexture.usedTimes--;\n      if (webglTexture.usedTimes === 0) {\n        deleteTexture(texture);\n      }\n      if (Object.keys(webglTextures).length === 0) {\n        _sources.delete(source);\n      }\n    }\n    properties.remove(texture);\n  }\n  function deleteTexture(texture) {\n    const textureProperties = properties.get(texture);\n    _gl.deleteTexture(textureProperties.__webglTexture);\n    const source = texture.source;\n    const webglTextures = _sources.get(source);\n    delete webglTextures[textureProperties.__cacheKey];\n    info.memory.textures--;\n  }\n  function deallocateRenderTarget(renderTarget) {\n    const texture = renderTarget.texture;\n    const renderTargetProperties = properties.get(renderTarget);\n    const textureProperties = properties.get(texture);\n    if (textureProperties.__webglTexture !== void 0) {\n      _gl.deleteTexture(textureProperties.__webglTexture);\n      info.memory.textures--;\n    }\n    if (renderTarget.depthTexture) {\n      renderTarget.depthTexture.dispose();\n    }\n    if (renderTarget.isWebGLCubeRenderTarget) {\n      for (let i = 0; i < 6; i++) {\n        _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i]);\n        if (renderTargetProperties.__webglDepthbuffer)\n          _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i]);\n      }\n    } else {\n      _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer);\n      if (renderTargetProperties.__webglDepthbuffer)\n        _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer);\n      if (renderTargetProperties.__webglMultisampledFramebuffer)\n        _gl.deleteFramebuffer(renderTargetProperties.__webglMultisampledFramebuffer);\n      if (renderTargetProperties.__webglColorRenderbuffer) {\n        for (let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i++) {\n          if (renderTargetProperties.__webglColorRenderbuffer[i])\n            _gl.deleteRenderbuffer(renderTargetProperties.__webglColorRenderbuffer[i]);\n        }\n      }\n      if (renderTargetProperties.__webglDepthRenderbuffer)\n        _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthRenderbuffer);\n    }\n    if (renderTarget.isWebGLMultipleRenderTargets) {\n      for (let i = 0, il = texture.length; i < il; i++) {\n        const attachmentProperties = properties.get(texture[i]);\n        if (attachmentProperties.__webglTexture) {\n          _gl.deleteTexture(attachmentProperties.__webglTexture);\n          info.memory.textures--;\n        }\n        properties.remove(texture[i]);\n      }\n    }\n    properties.remove(texture);\n    properties.remove(renderTarget);\n  }\n  let textureUnits = 0;\n  function resetTextureUnits() {\n    textureUnits = 0;\n  }\n  function allocateTextureUnit() {\n    const textureUnit = textureUnits;\n    if (textureUnit >= maxTextures) {\n      console.warn(\"THREE.WebGLTextures: Trying to use \" + textureUnit + \" texture units while this GPU supports only \" + maxTextures);\n    }\n    textureUnits += 1;\n    return textureUnit;\n  }\n  function getTextureCacheKey(texture) {\n    const array = [];\n    array.push(texture.wrapS);\n    array.push(texture.wrapT);\n    array.push(texture.magFilter);\n    array.push(texture.minFilter);\n    array.push(texture.anisotropy);\n    array.push(texture.internalFormat);\n    array.push(texture.format);\n    array.push(texture.type);\n    array.push(texture.generateMipmaps);\n    array.push(texture.premultiplyAlpha);\n    array.push(texture.flipY);\n    array.push(texture.unpackAlignment);\n    array.push(texture.encoding);\n    return array.join();\n  }\n  function setTexture2D(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.isVideoTexture)\n      updateVideoTexture(texture);\n    if (texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version) {\n      const image = texture.image;\n      if (image === null) {\n        console.warn(\"THREE.WebGLRenderer: Texture marked for update but no image data found.\");\n      } else if (image.complete === false) {\n        console.warn(\"THREE.WebGLRenderer: Texture marked for update but image is incomplete\");\n      } else {\n        uploadTexture(textureProperties, texture, slot);\n        return;\n      }\n    }\n    state.activeTexture(33984 + slot);\n    state.bindTexture(3553, textureProperties.__webglTexture);\n  }\n  function setTexture2DArray(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.version > 0 && textureProperties.__version !== texture.version) {\n      uploadTexture(textureProperties, texture, slot);\n      return;\n    }\n    state.activeTexture(33984 + slot);\n    state.bindTexture(35866, textureProperties.__webglTexture);\n  }\n  function setTexture3D(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.version > 0 && textureProperties.__version !== texture.version) {\n      uploadTexture(textureProperties, texture, slot);\n      return;\n    }\n    state.activeTexture(33984 + slot);\n    state.bindTexture(32879, textureProperties.__webglTexture);\n  }\n  function setTextureCube(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.version > 0 && textureProperties.__version !== texture.version) {\n      uploadCubeTexture(textureProperties, texture, slot);\n      return;\n    }\n    state.activeTexture(33984 + slot);\n    state.bindTexture(34067, textureProperties.__webglTexture);\n  }\n  const wrappingToGL = {\n    [RepeatWrapping]: 10497,\n    [ClampToEdgeWrapping]: 33071,\n    [MirroredRepeatWrapping]: 33648\n  };\n  const filterToGL = {\n    [NearestFilter]: 9728,\n    [NearestMipmapNearestFilter]: 9984,\n    [NearestMipmapLinearFilter]: 9986,\n    [LinearFilter]: 9729,\n    [LinearMipmapNearestFilter]: 9985,\n    [LinearMipmapLinearFilter]: 9987\n  };\n  function setTextureParameters(textureType, texture, supportsMips) {\n    if (supportsMips) {\n      _gl.texParameteri(textureType, 10242, wrappingToGL[texture.wrapS]);\n      _gl.texParameteri(textureType, 10243, wrappingToGL[texture.wrapT]);\n      if (textureType === 32879 || textureType === 35866) {\n        _gl.texParameteri(textureType, 32882, wrappingToGL[texture.wrapR]);\n      }\n      _gl.texParameteri(textureType, 10240, filterToGL[texture.magFilter]);\n      _gl.texParameteri(textureType, 10241, filterToGL[texture.minFilter]);\n    } else {\n      _gl.texParameteri(textureType, 10242, 33071);\n      _gl.texParameteri(textureType, 10243, 33071);\n      if (textureType === 32879 || textureType === 35866) {\n        _gl.texParameteri(textureType, 32882, 33071);\n      }\n      if (texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping) {\n        console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.\");\n      }\n      _gl.texParameteri(textureType, 10240, filterFallback(texture.magFilter));\n      _gl.texParameteri(textureType, 10241, filterFallback(texture.minFilter));\n      if (texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) {\n        console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.\");\n      }\n    }\n    if (extensions.has(\"EXT_texture_filter_anisotropic\") === true) {\n      const extension = extensions.get(\"EXT_texture_filter_anisotropic\");\n      if (texture.type === FloatType && extensions.has(\"OES_texture_float_linear\") === false)\n        return;\n      if (isWebGL2 === false && (texture.type === HalfFloatType && extensions.has(\"OES_texture_half_float_linear\") === false))\n        return;\n      if (texture.anisotropy > 1 || properties.get(texture).__currentAnisotropy) {\n        _gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(texture.anisotropy, capabilities.getMaxAnisotropy()));\n        properties.get(texture).__currentAnisotropy = texture.anisotropy;\n      }\n    }\n  }\n  function initTexture(textureProperties, texture) {\n    let forceUpload = false;\n    if (textureProperties.__webglInit === void 0) {\n      textureProperties.__webglInit = true;\n      texture.addEventListener(\"dispose\", onTextureDispose);\n    }\n    const source = texture.source;\n    let webglTextures = _sources.get(source);\n    if (webglTextures === void 0) {\n      webglTextures = {};\n      _sources.set(source, webglTextures);\n    }\n    const textureCacheKey = getTextureCacheKey(texture);\n    if (textureCacheKey !== textureProperties.__cacheKey) {\n      if (webglTextures[textureCacheKey] === void 0) {\n        webglTextures[textureCacheKey] = {\n          texture: _gl.createTexture(),\n          usedTimes: 0\n        };\n        info.memory.textures++;\n        forceUpload = true;\n      }\n      webglTextures[textureCacheKey].usedTimes++;\n      const webglTexture = webglTextures[textureProperties.__cacheKey];\n      if (webglTexture !== void 0) {\n        webglTextures[textureProperties.__cacheKey].usedTimes--;\n        if (webglTexture.usedTimes === 0) {\n          deleteTexture(texture);\n        }\n      }\n      textureProperties.__cacheKey = textureCacheKey;\n      textureProperties.__webglTexture = webglTextures[textureCacheKey].texture;\n    }\n    return forceUpload;\n  }\n  function uploadTexture(textureProperties, texture, slot) {\n    let textureType = 3553;\n    if (texture.isDataArrayTexture)\n      textureType = 35866;\n    if (texture.isData3DTexture)\n      textureType = 32879;\n    const forceUpload = initTexture(textureProperties, texture);\n    const source = texture.source;\n    state.activeTexture(33984 + slot);\n    state.bindTexture(textureType, textureProperties.__webglTexture);\n    if (source.version !== source.__currentVersion || forceUpload === true) {\n      _gl.pixelStorei(37440, texture.flipY);\n      _gl.pixelStorei(37441, texture.premultiplyAlpha);\n      _gl.pixelStorei(3317, texture.unpackAlignment);\n      _gl.pixelStorei(37443, 0);\n      const needsPowerOfTwo = textureNeedsPowerOfTwo(texture) && isPowerOfTwo$1(texture.image) === false;\n      let image = resizeImage(texture.image, needsPowerOfTwo, false, maxTextureSize);\n      image = verifyColorSpace(texture, image);\n      const supportsMips = isPowerOfTwo$1(image) || isWebGL2, glFormat = utils2.convert(texture.format, texture.encoding);\n      let glType = utils2.convert(texture.type), glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding, texture.isVideoTexture);\n      setTextureParameters(textureType, texture, supportsMips);\n      let mipmap;\n      const mipmaps = texture.mipmaps;\n      const useTexStorage = isWebGL2 && texture.isVideoTexture !== true;\n      const allocateMemory = source.__currentVersion === void 0 || forceUpload === true;\n      const levels = getMipLevels(texture, image, supportsMips);\n      if (texture.isDepthTexture) {\n        glInternalFormat = 6402;\n        if (isWebGL2) {\n          if (texture.type === FloatType) {\n            glInternalFormat = 36012;\n          } else if (texture.type === UnsignedIntType) {\n            glInternalFormat = 33190;\n          } else if (texture.type === UnsignedInt248Type) {\n            glInternalFormat = 35056;\n          } else {\n            glInternalFormat = 33189;\n          }\n        } else {\n          if (texture.type === FloatType) {\n            console.error(\"WebGLRenderer: Floating point depth texture requires WebGL2.\");\n          }\n        }\n        if (texture.format === DepthFormat && glInternalFormat === 6402) {\n          if (texture.type !== UnsignedShortType && texture.type !== UnsignedIntType) {\n            console.warn(\"THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.\");\n            texture.type = UnsignedIntType;\n            glType = utils2.convert(texture.type);\n          }\n        }\n        if (texture.format === DepthStencilFormat && glInternalFormat === 6402) {\n          glInternalFormat = 34041;\n          if (texture.type !== UnsignedInt248Type) {\n            console.warn(\"THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.\");\n            texture.type = UnsignedInt248Type;\n            glType = utils2.convert(texture.type);\n          }\n        }\n        if (allocateMemory) {\n          if (useTexStorage) {\n            state.texStorage2D(3553, 1, glInternalFormat, image.width, image.height);\n          } else {\n            state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null);\n          }\n        }\n      } else if (texture.isDataTexture) {\n        if (mipmaps.length > 0 && supportsMips) {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage2D(3553, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n          }\n          for (let i = 0, il = mipmaps.length; i < il; i++) {\n            mipmap = mipmaps[i];\n            if (useTexStorage) {\n              state.texSubImage2D(3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n            } else {\n              state.texImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n            }\n          }\n          texture.generateMipmaps = false;\n        } else {\n          if (useTexStorage) {\n            if (allocateMemory) {\n              state.texStorage2D(3553, levels, glInternalFormat, image.width, image.height);\n            }\n            state.texSubImage2D(3553, 0, 0, 0, image.width, image.height, glFormat, glType, image.data);\n          } else {\n            state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data);\n          }\n        }\n      } else if (texture.isCompressedTexture) {\n        if (useTexStorage && allocateMemory) {\n          state.texStorage2D(3553, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n        }\n        for (let i = 0, il = mipmaps.length; i < il; i++) {\n          mipmap = mipmaps[i];\n          if (texture.format !== RGBAFormat) {\n            if (glFormat !== null) {\n              if (useTexStorage) {\n                state.compressedTexSubImage2D(3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n              } else {\n                state.compressedTexImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n              }\n            } else {\n              console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\");\n            }\n          } else {\n            if (useTexStorage) {\n              state.texSubImage2D(3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n            } else {\n              state.texImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n            }\n          }\n        }\n      } else if (texture.isDataArrayTexture) {\n        if (useTexStorage) {\n          if (allocateMemory) {\n            state.texStorage3D(35866, levels, glInternalFormat, image.width, image.height, image.depth);\n          }\n          state.texSubImage3D(35866, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data);\n        } else {\n          state.texImage3D(35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n        }\n      } else if (texture.isData3DTexture) {\n        if (useTexStorage) {\n          if (allocateMemory) {\n            state.texStorage3D(32879, levels, glInternalFormat, image.width, image.height, image.depth);\n          }\n          state.texSubImage3D(32879, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data);\n        } else {\n          state.texImage3D(32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n        }\n      } else if (texture.isFramebufferTexture) {\n        if (allocateMemory) {\n          if (useTexStorage) {\n            state.texStorage2D(3553, levels, glInternalFormat, image.width, image.height);\n          } else {\n            let width = image.width, height = image.height;\n            for (let i = 0; i < levels; i++) {\n              state.texImage2D(3553, i, glInternalFormat, width, height, 0, glFormat, glType, null);\n              width >>= 1;\n              height >>= 1;\n            }\n          }\n        }\n      } else {\n        if (mipmaps.length > 0 && supportsMips) {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage2D(3553, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n          }\n          for (let i = 0, il = mipmaps.length; i < il; i++) {\n            mipmap = mipmaps[i];\n            if (useTexStorage) {\n              state.texSubImage2D(3553, i, 0, 0, glFormat, glType, mipmap);\n            } else {\n              state.texImage2D(3553, i, glInternalFormat, glFormat, glType, mipmap);\n            }\n          }\n          texture.generateMipmaps = false;\n        } else {\n          if (useTexStorage) {\n            if (allocateMemory) {\n              state.texStorage2D(3553, levels, glInternalFormat, image.width, image.height);\n            }\n            state.texSubImage2D(3553, 0, 0, 0, glFormat, glType, image);\n          } else {\n            state.texImage2D(3553, 0, glInternalFormat, glFormat, glType, image);\n          }\n        }\n      }\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        generateMipmap(textureType);\n      }\n      source.__currentVersion = source.version;\n      if (texture.onUpdate)\n        texture.onUpdate(texture);\n    }\n    textureProperties.__version = texture.version;\n  }\n  function uploadCubeTexture(textureProperties, texture, slot) {\n    if (texture.image.length !== 6)\n      return;\n    const forceUpload = initTexture(textureProperties, texture);\n    const source = texture.source;\n    state.activeTexture(33984 + slot);\n    state.bindTexture(34067, textureProperties.__webglTexture);\n    if (source.version !== source.__currentVersion || forceUpload === true) {\n      _gl.pixelStorei(37440, texture.flipY);\n      _gl.pixelStorei(37441, texture.premultiplyAlpha);\n      _gl.pixelStorei(3317, texture.unpackAlignment);\n      _gl.pixelStorei(37443, 0);\n      const isCompressed = texture.isCompressedTexture || texture.image[0].isCompressedTexture;\n      const isDataTexture = texture.image[0] && texture.image[0].isDataTexture;\n      const cubeImage = [];\n      for (let i = 0; i < 6; i++) {\n        if (!isCompressed && !isDataTexture) {\n          cubeImage[i] = resizeImage(texture.image[i], false, true, maxCubemapSize);\n        } else {\n          cubeImage[i] = isDataTexture ? texture.image[i].image : texture.image[i];\n        }\n        cubeImage[i] = verifyColorSpace(texture, cubeImage[i]);\n      }\n      const image = cubeImage[0], supportsMips = isPowerOfTwo$1(image) || isWebGL2, glFormat = utils2.convert(texture.format, texture.encoding), glType = utils2.convert(texture.type), glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n      const useTexStorage = isWebGL2 && texture.isVideoTexture !== true;\n      const allocateMemory = source.__currentVersion === void 0 || forceUpload === true;\n      let levels = getMipLevels(texture, image, supportsMips);\n      setTextureParameters(34067, texture, supportsMips);\n      let mipmaps;\n      if (isCompressed) {\n        if (useTexStorage && allocateMemory) {\n          state.texStorage2D(34067, levels, glInternalFormat, image.width, image.height);\n        }\n        for (let i = 0; i < 6; i++) {\n          mipmaps = cubeImage[i].mipmaps;\n          for (let j = 0; j < mipmaps.length; j++) {\n            const mipmap = mipmaps[j];\n            if (texture.format !== RGBAFormat) {\n              if (glFormat !== null) {\n                if (useTexStorage) {\n                  state.compressedTexSubImage2D(34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n                } else {\n                  state.compressedTexImage2D(34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n                }\n              } else {\n                console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()\");\n              }\n            } else {\n              if (useTexStorage) {\n                state.texSubImage2D(34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n              } else {\n                state.texImage2D(34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n              }\n            }\n          }\n        }\n      } else {\n        mipmaps = texture.mipmaps;\n        if (useTexStorage && allocateMemory) {\n          if (mipmaps.length > 0)\n            levels++;\n          state.texStorage2D(34067, levels, glInternalFormat, cubeImage[0].width, cubeImage[0].height);\n        }\n        for (let i = 0; i < 6; i++) {\n          if (isDataTexture) {\n            if (useTexStorage) {\n              state.texSubImage2D(34069 + i, 0, 0, 0, cubeImage[i].width, cubeImage[i].height, glFormat, glType, cubeImage[i].data);\n            } else {\n              state.texImage2D(34069 + i, 0, glInternalFormat, cubeImage[i].width, cubeImage[i].height, 0, glFormat, glType, cubeImage[i].data);\n            }\n            for (let j = 0; j < mipmaps.length; j++) {\n              const mipmap = mipmaps[j];\n              const mipmapImage = mipmap.image[i].image;\n              if (useTexStorage) {\n                state.texSubImage2D(34069 + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data);\n              } else {\n                state.texImage2D(34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data);\n              }\n            }\n          } else {\n            if (useTexStorage) {\n              state.texSubImage2D(34069 + i, 0, 0, 0, glFormat, glType, cubeImage[i]);\n            } else {\n              state.texImage2D(34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[i]);\n            }\n            for (let j = 0; j < mipmaps.length; j++) {\n              const mipmap = mipmaps[j];\n              if (useTexStorage) {\n                state.texSubImage2D(34069 + i, j + 1, 0, 0, glFormat, glType, mipmap.image[i]);\n              } else {\n                state.texImage2D(34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[i]);\n              }\n            }\n          }\n        }\n      }\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        generateMipmap(34067);\n      }\n      source.__currentVersion = source.version;\n      if (texture.onUpdate)\n        texture.onUpdate(texture);\n    }\n    textureProperties.__version = texture.version;\n  }\n  function setupFrameBufferTexture(framebuffer, renderTarget, texture, attachment, textureTarget) {\n    const glFormat = utils2.convert(texture.format, texture.encoding);\n    const glType = utils2.convert(texture.type);\n    const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n    const renderTargetProperties = properties.get(renderTarget);\n    if (!renderTargetProperties.__hasExternalTextures) {\n      if (textureTarget === 32879 || textureTarget === 35866) {\n        state.texImage3D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null);\n      } else {\n        state.texImage2D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null);\n      }\n    }\n    state.bindFramebuffer(36160, framebuffer);\n    if (useMultisampledRTT(renderTarget)) {\n      multisampledRTTExt.framebufferTexture2DMultisampleEXT(36160, attachment, textureTarget, properties.get(texture).__webglTexture, 0, getRenderTargetSamples(renderTarget));\n    } else {\n      _gl.framebufferTexture2D(36160, attachment, textureTarget, properties.get(texture).__webglTexture, 0);\n    }\n    state.bindFramebuffer(36160, null);\n  }\n  function setupRenderBufferStorage(renderbuffer, renderTarget, isMultisample) {\n    _gl.bindRenderbuffer(36161, renderbuffer);\n    if (renderTarget.depthBuffer && !renderTarget.stencilBuffer) {\n      let glInternalFormat = 33189;\n      if (isMultisample || useMultisampledRTT(renderTarget)) {\n        const depthTexture = renderTarget.depthTexture;\n        if (depthTexture && depthTexture.isDepthTexture) {\n          if (depthTexture.type === FloatType) {\n            glInternalFormat = 36012;\n          } else if (depthTexture.type === UnsignedIntType) {\n            glInternalFormat = 33190;\n          }\n        }\n        const samples = getRenderTargetSamples(renderTarget);\n        if (useMultisampledRTT(renderTarget)) {\n          multisampledRTTExt.renderbufferStorageMultisampleEXT(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        } else {\n          _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        }\n      } else {\n        _gl.renderbufferStorage(36161, glInternalFormat, renderTarget.width, renderTarget.height);\n      }\n      _gl.framebufferRenderbuffer(36160, 36096, 36161, renderbuffer);\n    } else if (renderTarget.depthBuffer && renderTarget.stencilBuffer) {\n      const samples = getRenderTargetSamples(renderTarget);\n      if (isMultisample && useMultisampledRTT(renderTarget) === false) {\n        _gl.renderbufferStorageMultisample(36161, samples, 35056, renderTarget.width, renderTarget.height);\n      } else if (useMultisampledRTT(renderTarget)) {\n        multisampledRTTExt.renderbufferStorageMultisampleEXT(36161, samples, 35056, renderTarget.width, renderTarget.height);\n      } else {\n        _gl.renderbufferStorage(36161, 34041, renderTarget.width, renderTarget.height);\n      }\n      _gl.framebufferRenderbuffer(36160, 33306, 36161, renderbuffer);\n    } else {\n      const textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [renderTarget.texture];\n      for (let i = 0; i < textures.length; i++) {\n        const texture = textures[i];\n        const glFormat = utils2.convert(texture.format, texture.encoding);\n        const glType = utils2.convert(texture.type);\n        const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n        const samples = getRenderTargetSamples(renderTarget);\n        if (isMultisample && useMultisampledRTT(renderTarget) === false) {\n          _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        } else if (useMultisampledRTT(renderTarget)) {\n          multisampledRTTExt.renderbufferStorageMultisampleEXT(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        } else {\n          _gl.renderbufferStorage(36161, glInternalFormat, renderTarget.width, renderTarget.height);\n        }\n      }\n    }\n    _gl.bindRenderbuffer(36161, null);\n  }\n  function setupDepthTexture(framebuffer, renderTarget) {\n    const isCube = renderTarget && renderTarget.isWebGLCubeRenderTarget;\n    if (isCube)\n      throw new Error(\"Depth Texture with cube render targets is not supported\");\n    state.bindFramebuffer(36160, framebuffer);\n    if (!(renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture)) {\n      throw new Error(\"renderTarget.depthTexture must be an instance of THREE.DepthTexture\");\n    }\n    if (!properties.get(renderTarget.depthTexture).__webglTexture || renderTarget.depthTexture.image.width !== renderTarget.width || renderTarget.depthTexture.image.height !== renderTarget.height) {\n      renderTarget.depthTexture.image.width = renderTarget.width;\n      renderTarget.depthTexture.image.height = renderTarget.height;\n      renderTarget.depthTexture.needsUpdate = true;\n    }\n    setTexture2D(renderTarget.depthTexture, 0);\n    const webglDepthTexture = properties.get(renderTarget.depthTexture).__webglTexture;\n    const samples = getRenderTargetSamples(renderTarget);\n    if (renderTarget.depthTexture.format === DepthFormat) {\n      if (useMultisampledRTT(renderTarget)) {\n        multisampledRTTExt.framebufferTexture2DMultisampleEXT(36160, 36096, 3553, webglDepthTexture, 0, samples);\n      } else {\n        _gl.framebufferTexture2D(36160, 36096, 3553, webglDepthTexture, 0);\n      }\n    } else if (renderTarget.depthTexture.format === DepthStencilFormat) {\n      if (useMultisampledRTT(renderTarget)) {\n        multisampledRTTExt.framebufferTexture2DMultisampleEXT(36160, 33306, 3553, webglDepthTexture, 0, samples);\n      } else {\n        _gl.framebufferTexture2D(36160, 33306, 3553, webglDepthTexture, 0);\n      }\n    } else {\n      throw new Error(\"Unknown depthTexture format\");\n    }\n  }\n  function setupDepthRenderbuffer(renderTarget) {\n    const renderTargetProperties = properties.get(renderTarget);\n    const isCube = renderTarget.isWebGLCubeRenderTarget === true;\n    if (renderTarget.depthTexture && !renderTargetProperties.__autoAllocateDepthBuffer) {\n      if (isCube)\n        throw new Error(\"target.depthTexture not supported in Cube render targets\");\n      setupDepthTexture(renderTargetProperties.__webglFramebuffer, renderTarget);\n    } else {\n      if (isCube) {\n        renderTargetProperties.__webglDepthbuffer = [];\n        for (let i = 0; i < 6; i++) {\n          state.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer[i]);\n          renderTargetProperties.__webglDepthbuffer[i] = _gl.createRenderbuffer();\n          setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i], renderTarget, false);\n        }\n      } else {\n        state.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer);\n        renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n        setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer, renderTarget, false);\n      }\n    }\n    state.bindFramebuffer(36160, null);\n  }\n  function rebindTextures(renderTarget, colorTexture, depthTexture) {\n    const renderTargetProperties = properties.get(renderTarget);\n    if (colorTexture !== void 0) {\n      setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, 36064, 3553);\n    }\n    if (depthTexture !== void 0) {\n      setupDepthRenderbuffer(renderTarget);\n    }\n  }\n  function setupRenderTarget(renderTarget) {\n    const texture = renderTarget.texture;\n    const renderTargetProperties = properties.get(renderTarget);\n    const textureProperties = properties.get(texture);\n    renderTarget.addEventListener(\"dispose\", onRenderTargetDispose);\n    if (renderTarget.isWebGLMultipleRenderTargets !== true) {\n      if (textureProperties.__webglTexture === void 0) {\n        textureProperties.__webglTexture = _gl.createTexture();\n      }\n      textureProperties.__version = texture.version;\n      info.memory.textures++;\n    }\n    const isCube = renderTarget.isWebGLCubeRenderTarget === true;\n    const isMultipleRenderTargets = renderTarget.isWebGLMultipleRenderTargets === true;\n    const supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2;\n    if (isCube) {\n      renderTargetProperties.__webglFramebuffer = [];\n      for (let i = 0; i < 6; i++) {\n        renderTargetProperties.__webglFramebuffer[i] = _gl.createFramebuffer();\n      }\n    } else {\n      renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n      if (isMultipleRenderTargets) {\n        if (capabilities.drawBuffers) {\n          const textures = renderTarget.texture;\n          for (let i = 0, il = textures.length; i < il; i++) {\n            const attachmentProperties = properties.get(textures[i]);\n            if (attachmentProperties.__webglTexture === void 0) {\n              attachmentProperties.__webglTexture = _gl.createTexture();\n              info.memory.textures++;\n            }\n          }\n        } else {\n          console.warn(\"THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.\");\n        }\n      }\n      if (isWebGL2 && renderTarget.samples > 0 && useMultisampledRTT(renderTarget) === false) {\n        const textures = isMultipleRenderTargets ? texture : [texture];\n        renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n        renderTargetProperties.__webglColorRenderbuffer = [];\n        state.bindFramebuffer(36160, renderTargetProperties.__webglMultisampledFramebuffer);\n        for (let i = 0; i < textures.length; i++) {\n          const texture2 = textures[i];\n          renderTargetProperties.__webglColorRenderbuffer[i] = _gl.createRenderbuffer();\n          _gl.bindRenderbuffer(36161, renderTargetProperties.__webglColorRenderbuffer[i]);\n          const glFormat = utils2.convert(texture2.format, texture2.encoding);\n          const glType = utils2.convert(texture2.type);\n          const glInternalFormat = getInternalFormat(texture2.internalFormat, glFormat, glType, texture2.encoding);\n          const samples = getRenderTargetSamples(renderTarget);\n          _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n          _gl.framebufferRenderbuffer(36160, 36064 + i, 36161, renderTargetProperties.__webglColorRenderbuffer[i]);\n        }\n        _gl.bindRenderbuffer(36161, null);\n        if (renderTarget.depthBuffer) {\n          renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n          setupRenderBufferStorage(renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true);\n        }\n        state.bindFramebuffer(36160, null);\n      }\n    }\n    if (isCube) {\n      state.bindTexture(34067, textureProperties.__webglTexture);\n      setTextureParameters(34067, texture, supportsMips);\n      for (let i = 0; i < 6; i++) {\n        setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i], renderTarget, texture, 36064, 34069 + i);\n      }\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        generateMipmap(34067);\n      }\n      state.unbindTexture();\n    } else if (isMultipleRenderTargets) {\n      const textures = renderTarget.texture;\n      for (let i = 0, il = textures.length; i < il; i++) {\n        const attachment = textures[i];\n        const attachmentProperties = properties.get(attachment);\n        state.bindTexture(3553, attachmentProperties.__webglTexture);\n        setTextureParameters(3553, attachment, supportsMips);\n        setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553);\n        if (textureNeedsGenerateMipmaps(attachment, supportsMips)) {\n          generateMipmap(3553);\n        }\n      }\n      state.unbindTexture();\n    } else {\n      let glTextureType = 3553;\n      if (renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget) {\n        if (isWebGL2) {\n          glTextureType = renderTarget.isWebGL3DRenderTarget ? 32879 : 35866;\n        } else {\n          console.error(\"THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.\");\n        }\n      }\n      state.bindTexture(glTextureType, textureProperties.__webglTexture);\n      setTextureParameters(glTextureType, texture, supportsMips);\n      setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType);\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        generateMipmap(glTextureType);\n      }\n      state.unbindTexture();\n    }\n    if (renderTarget.depthBuffer) {\n      setupDepthRenderbuffer(renderTarget);\n    }\n  }\n  function updateRenderTargetMipmap(renderTarget) {\n    const supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2;\n    const textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [renderTarget.texture];\n    for (let i = 0, il = textures.length; i < il; i++) {\n      const texture = textures[i];\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        const target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n        const webglTexture = properties.get(texture).__webglTexture;\n        state.bindTexture(target, webglTexture);\n        generateMipmap(target);\n        state.unbindTexture();\n      }\n    }\n  }\n  function updateMultisampleRenderTarget(renderTarget) {\n    if (isWebGL2 && renderTarget.samples > 0 && useMultisampledRTT(renderTarget) === false) {\n      const textures = renderTarget.isWebGLMultipleRenderTargets ? renderTarget.texture : [renderTarget.texture];\n      const width = renderTarget.width;\n      const height = renderTarget.height;\n      let mask = 16384;\n      const invalidationArray = [];\n      const depthStyle = renderTarget.stencilBuffer ? 33306 : 36096;\n      const renderTargetProperties = properties.get(renderTarget);\n      const isMultipleRenderTargets = renderTarget.isWebGLMultipleRenderTargets === true;\n      if (isMultipleRenderTargets) {\n        for (let i = 0; i < textures.length; i++) {\n          state.bindFramebuffer(36160, renderTargetProperties.__webglMultisampledFramebuffer);\n          _gl.framebufferRenderbuffer(36160, 36064 + i, 36161, null);\n          state.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer);\n          _gl.framebufferTexture2D(36009, 36064 + i, 3553, null, 0);\n        }\n      }\n      state.bindFramebuffer(36008, renderTargetProperties.__webglMultisampledFramebuffer);\n      state.bindFramebuffer(36009, renderTargetProperties.__webglFramebuffer);\n      for (let i = 0; i < textures.length; i++) {\n        invalidationArray.push(36064 + i);\n        if (renderTarget.depthBuffer) {\n          invalidationArray.push(depthStyle);\n        }\n        const ignoreDepthValues = renderTargetProperties.__ignoreDepthValues !== void 0 ? renderTargetProperties.__ignoreDepthValues : false;\n        if (ignoreDepthValues === false) {\n          if (renderTarget.depthBuffer)\n            mask |= 256;\n          if (renderTarget.stencilBuffer)\n            mask |= 1024;\n        }\n        if (isMultipleRenderTargets) {\n          _gl.framebufferRenderbuffer(36008, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer[i]);\n        }\n        if (ignoreDepthValues === true) {\n          _gl.invalidateFramebuffer(36008, [depthStyle]);\n          _gl.invalidateFramebuffer(36009, [depthStyle]);\n        }\n        if (isMultipleRenderTargets) {\n          const webglTexture = properties.get(textures[i]).__webglTexture;\n          _gl.framebufferTexture2D(36009, 36064, 3553, webglTexture, 0);\n        }\n        _gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, mask, 9728);\n        if (supportsInvalidateFramebuffer) {\n          _gl.invalidateFramebuffer(36008, invalidationArray);\n        }\n      }\n      state.bindFramebuffer(36008, null);\n      state.bindFramebuffer(36009, null);\n      if (isMultipleRenderTargets) {\n        for (let i = 0; i < textures.length; i++) {\n          state.bindFramebuffer(36160, renderTargetProperties.__webglMultisampledFramebuffer);\n          _gl.framebufferRenderbuffer(36160, 36064 + i, 36161, renderTargetProperties.__webglColorRenderbuffer[i]);\n          const webglTexture = properties.get(textures[i]).__webglTexture;\n          state.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer);\n          _gl.framebufferTexture2D(36009, 36064 + i, 3553, webglTexture, 0);\n        }\n      }\n      state.bindFramebuffer(36009, renderTargetProperties.__webglMultisampledFramebuffer);\n    }\n  }\n  function getRenderTargetSamples(renderTarget) {\n    return Math.min(maxSamples, renderTarget.samples);\n  }\n  function useMultisampledRTT(renderTarget) {\n    const renderTargetProperties = properties.get(renderTarget);\n    return isWebGL2 && renderTarget.samples > 0 && extensions.has(\"WEBGL_multisampled_render_to_texture\") === true && renderTargetProperties.__useRenderToTexture !== false;\n  }\n  function updateVideoTexture(texture) {\n    const frame = info.render.frame;\n    if (_videoTextures.get(texture) !== frame) {\n      _videoTextures.set(texture, frame);\n      texture.update();\n    }\n  }\n  function verifyColorSpace(texture, image) {\n    const encoding = texture.encoding;\n    const format = texture.format;\n    const type = texture.type;\n    if (texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat)\n      return image;\n    if (encoding !== LinearEncoding) {\n      if (encoding === sRGBEncoding) {\n        if (isWebGL2 === false) {\n          if (extensions.has(\"EXT_sRGB\") === true && format === RGBAFormat) {\n            texture.format = _SRGBAFormat;\n            texture.minFilter = LinearFilter;\n            texture.generateMipmaps = false;\n          } else {\n            image = ImageUtils.sRGBToLinear(image);\n          }\n        } else {\n          if (format !== RGBAFormat || type !== UnsignedByteType) {\n            console.warn(\"THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.\");\n          }\n        }\n      } else {\n        console.error(\"THREE.WebGLTextures: Unsupported texture encoding:\", encoding);\n      }\n    }\n    return image;\n  }\n  this.allocateTextureUnit = allocateTextureUnit;\n  this.resetTextureUnits = resetTextureUnits;\n  this.setTexture2D = setTexture2D;\n  this.setTexture2DArray = setTexture2DArray;\n  this.setTexture3D = setTexture3D;\n  this.setTextureCube = setTextureCube;\n  this.rebindTextures = rebindTextures;\n  this.setupRenderTarget = setupRenderTarget;\n  this.updateRenderTargetMipmap = updateRenderTargetMipmap;\n  this.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n  this.setupDepthRenderbuffer = setupDepthRenderbuffer;\n  this.setupFrameBufferTexture = setupFrameBufferTexture;\n  this.useMultisampledRTT = useMultisampledRTT;\n}\nfunction WebGLUtils(gl, extensions, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  function convert(p, encoding = null) {\n    let extension;\n    if (p === UnsignedByteType)\n      return 5121;\n    if (p === UnsignedShort4444Type)\n      return 32819;\n    if (p === UnsignedShort5551Type)\n      return 32820;\n    if (p === ByteType)\n      return 5120;\n    if (p === ShortType)\n      return 5122;\n    if (p === UnsignedShortType)\n      return 5123;\n    if (p === IntType)\n      return 5124;\n    if (p === UnsignedIntType)\n      return 5125;\n    if (p === FloatType)\n      return 5126;\n    if (p === HalfFloatType) {\n      if (isWebGL2)\n        return 5131;\n      extension = extensions.get(\"OES_texture_half_float\");\n      if (extension !== null) {\n        return extension.HALF_FLOAT_OES;\n      } else {\n        return null;\n      }\n    }\n    if (p === AlphaFormat)\n      return 6406;\n    if (p === RGBAFormat)\n      return 6408;\n    if (p === LuminanceFormat)\n      return 6409;\n    if (p === LuminanceAlphaFormat)\n      return 6410;\n    if (p === DepthFormat)\n      return 6402;\n    if (p === DepthStencilFormat)\n      return 34041;\n    if (p === RedFormat)\n      return 6403;\n    if (p === RGBFormat) {\n      console.warn(\"THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228\");\n      return 6408;\n    }\n    if (p === _SRGBAFormat) {\n      extension = extensions.get(\"EXT_sRGB\");\n      if (extension !== null) {\n        return extension.SRGB_ALPHA_EXT;\n      } else {\n        return null;\n      }\n    }\n    if (p === RedIntegerFormat)\n      return 36244;\n    if (p === RGFormat)\n      return 33319;\n    if (p === RGIntegerFormat)\n      return 33320;\n    if (p === RGBAIntegerFormat)\n      return 36249;\n    if (p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) {\n      if (encoding === sRGBEncoding) {\n        extension = extensions.get(\"WEBGL_compressed_texture_s3tc_srgb\");\n        if (extension !== null) {\n          if (p === RGB_S3TC_DXT1_Format)\n            return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n          if (p === RGBA_S3TC_DXT1_Format)\n            return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n          if (p === RGBA_S3TC_DXT3_Format)\n            return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n          if (p === RGBA_S3TC_DXT5_Format)\n            return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n        } else {\n          return null;\n        }\n      } else {\n        extension = extensions.get(\"WEBGL_compressed_texture_s3tc\");\n        if (extension !== null) {\n          if (p === RGB_S3TC_DXT1_Format)\n            return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n          if (p === RGBA_S3TC_DXT1_Format)\n            return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n          if (p === RGBA_S3TC_DXT3_Format)\n            return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n          if (p === RGBA_S3TC_DXT5_Format)\n            return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n        } else {\n          return null;\n        }\n      }\n    }\n    if (p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_pvrtc\");\n      if (extension !== null) {\n        if (p === RGB_PVRTC_4BPPV1_Format)\n          return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n        if (p === RGB_PVRTC_2BPPV1_Format)\n          return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n        if (p === RGBA_PVRTC_4BPPV1_Format)\n          return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n        if (p === RGBA_PVRTC_2BPPV1_Format)\n          return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n      } else {\n        return null;\n      }\n    }\n    if (p === RGB_ETC1_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_etc1\");\n      if (extension !== null) {\n        return extension.COMPRESSED_RGB_ETC1_WEBGL;\n      } else {\n        return null;\n      }\n    }\n    if (p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_etc\");\n      if (extension !== null) {\n        if (p === RGB_ETC2_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n        if (p === RGBA_ETC2_EAC_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n      } else {\n        return null;\n      }\n    }\n    if (p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_astc\");\n      if (extension !== null) {\n        if (p === RGBA_ASTC_4x4_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n        if (p === RGBA_ASTC_5x4_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n        if (p === RGBA_ASTC_5x5_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n        if (p === RGBA_ASTC_6x5_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n        if (p === RGBA_ASTC_6x6_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n        if (p === RGBA_ASTC_8x5_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n        if (p === RGBA_ASTC_8x6_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n        if (p === RGBA_ASTC_8x8_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n        if (p === RGBA_ASTC_10x5_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n        if (p === RGBA_ASTC_10x6_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n        if (p === RGBA_ASTC_10x8_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n        if (p === RGBA_ASTC_10x10_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n        if (p === RGBA_ASTC_12x10_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n        if (p === RGBA_ASTC_12x12_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n      } else {\n        return null;\n      }\n    }\n    if (p === RGBA_BPTC_Format) {\n      extension = extensions.get(\"EXT_texture_compression_bptc\");\n      if (extension !== null) {\n        if (p === RGBA_BPTC_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n      } else {\n        return null;\n      }\n    }\n    if (p === UnsignedInt248Type) {\n      if (isWebGL2)\n        return 34042;\n      extension = extensions.get(\"WEBGL_depth_texture\");\n      if (extension !== null) {\n        return extension.UNSIGNED_INT_24_8_WEBGL;\n      } else {\n        return null;\n      }\n    }\n    return gl[p] !== void 0 ? gl[p] : null;\n  }\n  return { convert };\n}\nclass ArrayCamera extends PerspectiveCamera {\n  constructor(array = []) {\n    super();\n    this.isArrayCamera = true;\n    this.cameras = array;\n  }\n}\nclass Group$1 extends Object3D$1 {\n  constructor() {\n    super();\n    this.isGroup = true;\n    this.type = \"Group\";\n  }\n}\nconst _moveEvent = { type: \"move\" };\nclass WebXRController {\n  constructor() {\n    this._targetRay = null;\n    this._grip = null;\n    this._hand = null;\n  }\n  getHandSpace() {\n    if (this._hand === null) {\n      this._hand = new Group$1();\n      this._hand.matrixAutoUpdate = false;\n      this._hand.visible = false;\n      this._hand.joints = {};\n      this._hand.inputState = { pinching: false };\n    }\n    return this._hand;\n  }\n  getTargetRaySpace() {\n    if (this._targetRay === null) {\n      this._targetRay = new Group$1();\n      this._targetRay.matrixAutoUpdate = false;\n      this._targetRay.visible = false;\n      this._targetRay.hasLinearVelocity = false;\n      this._targetRay.linearVelocity = new Vector3();\n      this._targetRay.hasAngularVelocity = false;\n      this._targetRay.angularVelocity = new Vector3();\n    }\n    return this._targetRay;\n  }\n  getGripSpace() {\n    if (this._grip === null) {\n      this._grip = new Group$1();\n      this._grip.matrixAutoUpdate = false;\n      this._grip.visible = false;\n      this._grip.hasLinearVelocity = false;\n      this._grip.linearVelocity = new Vector3();\n      this._grip.hasAngularVelocity = false;\n      this._grip.angularVelocity = new Vector3();\n    }\n    return this._grip;\n  }\n  dispatchEvent(event) {\n    if (this._targetRay !== null) {\n      this._targetRay.dispatchEvent(event);\n    }\n    if (this._grip !== null) {\n      this._grip.dispatchEvent(event);\n    }\n    if (this._hand !== null) {\n      this._hand.dispatchEvent(event);\n    }\n    return this;\n  }\n  disconnect(inputSource) {\n    this.dispatchEvent({ type: \"disconnected\", data: inputSource });\n    if (this._targetRay !== null) {\n      this._targetRay.visible = false;\n    }\n    if (this._grip !== null) {\n      this._grip.visible = false;\n    }\n    if (this._hand !== null) {\n      this._hand.visible = false;\n    }\n    return this;\n  }\n  update(inputSource, frame, referenceSpace) {\n    let inputPose = null;\n    let gripPose = null;\n    let handPose = null;\n    const targetRay = this._targetRay;\n    const grip = this._grip;\n    const hand = this._hand;\n    if (inputSource && frame.session.visibilityState !== \"visible-blurred\") {\n      if (hand && inputSource.hand) {\n        handPose = true;\n        for (const inputjoint of inputSource.hand.values()) {\n          const jointPose = frame.getJointPose(inputjoint, referenceSpace);\n          if (hand.joints[inputjoint.jointName] === void 0) {\n            const joint2 = new Group$1();\n            joint2.matrixAutoUpdate = false;\n            joint2.visible = false;\n            hand.joints[inputjoint.jointName] = joint2;\n            hand.add(joint2);\n          }\n          const joint = hand.joints[inputjoint.jointName];\n          if (jointPose !== null) {\n            joint.matrix.fromArray(jointPose.transform.matrix);\n            joint.matrix.decompose(joint.position, joint.rotation, joint.scale);\n            joint.jointRadius = jointPose.radius;\n          }\n          joint.visible = jointPose !== null;\n        }\n        const indexTip = hand.joints[\"index-finger-tip\"];\n        const thumbTip = hand.joints[\"thumb-tip\"];\n        const distance = indexTip.position.distanceTo(thumbTip.position);\n        const distanceToPinch = 0.02;\n        const threshold = 5e-3;\n        if (hand.inputState.pinching && distance > distanceToPinch + threshold) {\n          hand.inputState.pinching = false;\n          this.dispatchEvent({\n            type: \"pinchend\",\n            handedness: inputSource.handedness,\n            target: this\n          });\n        } else if (!hand.inputState.pinching && distance <= distanceToPinch - threshold) {\n          hand.inputState.pinching = true;\n          this.dispatchEvent({\n            type: \"pinchstart\",\n            handedness: inputSource.handedness,\n            target: this\n          });\n        }\n      } else {\n        if (grip !== null && inputSource.gripSpace) {\n          gripPose = frame.getPose(inputSource.gripSpace, referenceSpace);\n          if (gripPose !== null) {\n            grip.matrix.fromArray(gripPose.transform.matrix);\n            grip.matrix.decompose(grip.position, grip.rotation, grip.scale);\n            if (gripPose.linearVelocity) {\n              grip.hasLinearVelocity = true;\n              grip.linearVelocity.copy(gripPose.linearVelocity);\n            } else {\n              grip.hasLinearVelocity = false;\n            }\n            if (gripPose.angularVelocity) {\n              grip.hasAngularVelocity = true;\n              grip.angularVelocity.copy(gripPose.angularVelocity);\n            } else {\n              grip.hasAngularVelocity = false;\n            }\n          }\n        }\n      }\n      if (targetRay !== null) {\n        inputPose = frame.getPose(inputSource.targetRaySpace, referenceSpace);\n        if (inputPose === null && gripPose !== null) {\n          inputPose = gripPose;\n        }\n        if (inputPose !== null) {\n          targetRay.matrix.fromArray(inputPose.transform.matrix);\n          targetRay.matrix.decompose(targetRay.position, targetRay.rotation, targetRay.scale);\n          if (inputPose.linearVelocity) {\n            targetRay.hasLinearVelocity = true;\n            targetRay.linearVelocity.copy(inputPose.linearVelocity);\n          } else {\n            targetRay.hasLinearVelocity = false;\n          }\n          if (inputPose.angularVelocity) {\n            targetRay.hasAngularVelocity = true;\n            targetRay.angularVelocity.copy(inputPose.angularVelocity);\n          } else {\n            targetRay.hasAngularVelocity = false;\n          }\n          this.dispatchEvent(_moveEvent);\n        }\n      }\n    }\n    if (targetRay !== null) {\n      targetRay.visible = inputPose !== null;\n    }\n    if (grip !== null) {\n      grip.visible = gripPose !== null;\n    }\n    if (hand !== null) {\n      hand.visible = handPose !== null;\n    }\n    return this;\n  }\n}\nclass DepthTexture extends Texture {\n  constructor(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) {\n    format = format !== void 0 ? format : DepthFormat;\n    if (format !== DepthFormat && format !== DepthStencilFormat) {\n      throw new Error(\"DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat\");\n    }\n    if (type === void 0 && format === DepthFormat)\n      type = UnsignedIntType;\n    if (type === void 0 && format === DepthStencilFormat)\n      type = UnsignedInt248Type;\n    super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n    this.isDepthTexture = true;\n    this.image = { width, height };\n    this.magFilter = magFilter !== void 0 ? magFilter : NearestFilter;\n    this.minFilter = minFilter !== void 0 ? minFilter : NearestFilter;\n    this.flipY = false;\n    this.generateMipmaps = false;\n  }\n}\nclass WebXRManager extends EventDispatcher {\n  constructor(renderer, gl) {\n    super();\n    const scope = this;\n    let session = null;\n    let framebufferScaleFactor = 1;\n    let referenceSpace = null;\n    let referenceSpaceType = \"local-floor\";\n    let customReferenceSpace = null;\n    let pose = null;\n    let glBinding = null;\n    let glProjLayer = null;\n    let glBaseLayer = null;\n    let xrFrame = null;\n    const attributes = gl.getContextAttributes();\n    let initialRenderTarget = null;\n    let newRenderTarget = null;\n    const controllers = [];\n    const controllerInputSources = [];\n    const cameraL = new PerspectiveCamera();\n    cameraL.layers.enable(1);\n    cameraL.viewport = new Vector4();\n    const cameraR = new PerspectiveCamera();\n    cameraR.layers.enable(2);\n    cameraR.viewport = new Vector4();\n    const cameras = [cameraL, cameraR];\n    const cameraVR = new ArrayCamera();\n    cameraVR.layers.enable(1);\n    cameraVR.layers.enable(2);\n    let _currentDepthNear = null;\n    let _currentDepthFar = null;\n    this.cameraAutoUpdate = true;\n    this.enabled = false;\n    this.isPresenting = false;\n    this.getController = function(index) {\n      let controller = controllers[index];\n      if (controller === void 0) {\n        controller = new WebXRController();\n        controllers[index] = controller;\n      }\n      return controller.getTargetRaySpace();\n    };\n    this.getControllerGrip = function(index) {\n      let controller = controllers[index];\n      if (controller === void 0) {\n        controller = new WebXRController();\n        controllers[index] = controller;\n      }\n      return controller.getGripSpace();\n    };\n    this.getHand = function(index) {\n      let controller = controllers[index];\n      if (controller === void 0) {\n        controller = new WebXRController();\n        controllers[index] = controller;\n      }\n      return controller.getHandSpace();\n    };\n    function onSessionEvent(event) {\n      const controllerIndex = controllerInputSources.indexOf(event.inputSource);\n      if (controllerIndex === -1) {\n        return;\n      }\n      const controller = controllers[controllerIndex];\n      if (controller !== void 0) {\n        controller.dispatchEvent({ type: event.type, data: event.inputSource });\n      }\n    }\n    function onSessionEnd() {\n      session.removeEventListener(\"select\", onSessionEvent);\n      session.removeEventListener(\"selectstart\", onSessionEvent);\n      session.removeEventListener(\"selectend\", onSessionEvent);\n      session.removeEventListener(\"squeeze\", onSessionEvent);\n      session.removeEventListener(\"squeezestart\", onSessionEvent);\n      session.removeEventListener(\"squeezeend\", onSessionEvent);\n      session.removeEventListener(\"end\", onSessionEnd);\n      session.removeEventListener(\"inputsourceschange\", onInputSourcesChange);\n      for (let i = 0; i < controllers.length; i++) {\n        const inputSource = controllerInputSources[i];\n        if (inputSource === null)\n          continue;\n        controllerInputSources[i] = null;\n        controllers[i].disconnect(inputSource);\n      }\n      _currentDepthNear = null;\n      _currentDepthFar = null;\n      renderer.setRenderTarget(initialRenderTarget);\n      glBaseLayer = null;\n      glProjLayer = null;\n      glBinding = null;\n      session = null;\n      newRenderTarget = null;\n      animation.stop();\n      scope.isPresenting = false;\n      scope.dispatchEvent({ type: \"sessionend\" });\n    }\n    this.setFramebufferScaleFactor = function(value) {\n      framebufferScaleFactor = value;\n      if (scope.isPresenting === true) {\n        console.warn(\"THREE.WebXRManager: Cannot change framebuffer scale while presenting.\");\n      }\n    };\n    this.setReferenceSpaceType = function(value) {\n      referenceSpaceType = value;\n      if (scope.isPresenting === true) {\n        console.warn(\"THREE.WebXRManager: Cannot change reference space type while presenting.\");\n      }\n    };\n    this.getReferenceSpace = function() {\n      return customReferenceSpace || referenceSpace;\n    };\n    this.setReferenceSpace = function(space) {\n      customReferenceSpace = space;\n    };\n    this.getBaseLayer = function() {\n      return glProjLayer !== null ? glProjLayer : glBaseLayer;\n    };\n    this.getBinding = function() {\n      return glBinding;\n    };\n    this.getFrame = function() {\n      return xrFrame;\n    };\n    this.getSession = function() {\n      return session;\n    };\n    this.setSession = async function(value) {\n      session = value;\n      if (session !== null) {\n        initialRenderTarget = renderer.getRenderTarget();\n        session.addEventListener(\"select\", onSessionEvent);\n        session.addEventListener(\"selectstart\", onSessionEvent);\n        session.addEventListener(\"selectend\", onSessionEvent);\n        session.addEventListener(\"squeeze\", onSessionEvent);\n        session.addEventListener(\"squeezestart\", onSessionEvent);\n        session.addEventListener(\"squeezeend\", onSessionEvent);\n        session.addEventListener(\"end\", onSessionEnd);\n        session.addEventListener(\"inputsourceschange\", onInputSourcesChange);\n        if (attributes.xrCompatible !== true) {\n          await gl.makeXRCompatible();\n        }\n        if (session.renderState.layers === void 0 || renderer.capabilities.isWebGL2 === false) {\n          const layerInit = {\n            antialias: session.renderState.layers === void 0 ? attributes.antialias : true,\n            alpha: attributes.alpha,\n            depth: attributes.depth,\n            stencil: attributes.stencil,\n            framebufferScaleFactor\n          };\n          glBaseLayer = new XRWebGLLayer(session, gl, layerInit);\n          session.updateRenderState({ baseLayer: glBaseLayer });\n          newRenderTarget = new WebGLRenderTarget(\n            glBaseLayer.framebufferWidth,\n            glBaseLayer.framebufferHeight,\n            {\n              format: RGBAFormat,\n              type: UnsignedByteType,\n              encoding: renderer.outputEncoding\n            }\n          );\n        } else {\n          let depthFormat = null;\n          let depthType = null;\n          let glDepthFormat = null;\n          if (attributes.depth) {\n            glDepthFormat = attributes.stencil ? 35056 : 33190;\n            depthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n            depthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n          }\n          const projectionlayerInit = {\n            colorFormat: 32856,\n            depthFormat: glDepthFormat,\n            scaleFactor: framebufferScaleFactor\n          };\n          glBinding = new XRWebGLBinding(session, gl);\n          glProjLayer = glBinding.createProjectionLayer(projectionlayerInit);\n          session.updateRenderState({ layers: [glProjLayer] });\n          newRenderTarget = new WebGLRenderTarget(\n            glProjLayer.textureWidth,\n            glProjLayer.textureHeight,\n            {\n              format: RGBAFormat,\n              type: UnsignedByteType,\n              depthTexture: new DepthTexture(glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, void 0, void 0, void 0, void 0, void 0, void 0, depthFormat),\n              stencilBuffer: attributes.stencil,\n              encoding: renderer.outputEncoding,\n              samples: attributes.antialias ? 4 : 0\n            }\n          );\n          const renderTargetProperties = renderer.properties.get(newRenderTarget);\n          renderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n        }\n        newRenderTarget.isXRRenderTarget = true;\n        this.setFoveation(1);\n        customReferenceSpace = null;\n        referenceSpace = await session.requestReferenceSpace(referenceSpaceType);\n        animation.setContext(session);\n        animation.start();\n        scope.isPresenting = true;\n        scope.dispatchEvent({ type: \"sessionstart\" });\n      }\n    };\n    function onInputSourcesChange(event) {\n      for (let i = 0; i < event.removed.length; i++) {\n        const inputSource = event.removed[i];\n        const index = controllerInputSources.indexOf(inputSource);\n        if (index >= 0) {\n          controllerInputSources[index] = null;\n          controllers[index].dispatchEvent({ type: \"disconnected\", data: inputSource });\n        }\n      }\n      for (let i = 0; i < event.added.length; i++) {\n        const inputSource = event.added[i];\n        let controllerIndex = controllerInputSources.indexOf(inputSource);\n        if (controllerIndex === -1) {\n          for (let i2 = 0; i2 < controllers.length; i2++) {\n            if (i2 >= controllerInputSources.length) {\n              controllerInputSources.push(inputSource);\n              controllerIndex = i2;\n              break;\n            } else if (controllerInputSources[i2] === null) {\n              controllerInputSources[i2] = inputSource;\n              controllerIndex = i2;\n              break;\n            }\n          }\n          if (controllerIndex === -1)\n            break;\n        }\n        const controller = controllers[controllerIndex];\n        if (controller) {\n          controller.dispatchEvent({ type: \"connected\", data: inputSource });\n        }\n      }\n    }\n    const cameraLPos = new Vector3();\n    const cameraRPos = new Vector3();\n    function setProjectionFromUnion(camera, cameraL2, cameraR2) {\n      cameraLPos.setFromMatrixPosition(cameraL2.matrixWorld);\n      cameraRPos.setFromMatrixPosition(cameraR2.matrixWorld);\n      const ipd = cameraLPos.distanceTo(cameraRPos);\n      const projL = cameraL2.projectionMatrix.elements;\n      const projR = cameraR2.projectionMatrix.elements;\n      const near = projL[14] / (projL[10] - 1);\n      const far = projL[14] / (projL[10] + 1);\n      const topFov = (projL[9] + 1) / projL[5];\n      const bottomFov = (projL[9] - 1) / projL[5];\n      const leftFov = (projL[8] - 1) / projL[0];\n      const rightFov = (projR[8] + 1) / projR[0];\n      const left = near * leftFov;\n      const right = near * rightFov;\n      const zOffset = ipd / (-leftFov + rightFov);\n      const xOffset = zOffset * -leftFov;\n      cameraL2.matrixWorld.decompose(camera.position, camera.quaternion, camera.scale);\n      camera.translateX(xOffset);\n      camera.translateZ(zOffset);\n      camera.matrixWorld.compose(camera.position, camera.quaternion, camera.scale);\n      camera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n      const near2 = near + zOffset;\n      const far2 = far + zOffset;\n      const left2 = left - xOffset;\n      const right2 = right + (ipd - xOffset);\n      const top2 = topFov * far / far2 * near2;\n      const bottom2 = bottomFov * far / far2 * near2;\n      camera.projectionMatrix.makePerspective(left2, right2, top2, bottom2, near2, far2);\n    }\n    function updateCamera(camera, parent) {\n      if (parent === null) {\n        camera.matrixWorld.copy(camera.matrix);\n      } else {\n        camera.matrixWorld.multiplyMatrices(parent.matrixWorld, camera.matrix);\n      }\n      camera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n    }\n    this.updateCamera = function(camera) {\n      if (session === null)\n        return;\n      cameraVR.near = cameraR.near = cameraL.near = camera.near;\n      cameraVR.far = cameraR.far = cameraL.far = camera.far;\n      if (_currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far) {\n        session.updateRenderState({\n          depthNear: cameraVR.near,\n          depthFar: cameraVR.far\n        });\n        _currentDepthNear = cameraVR.near;\n        _currentDepthFar = cameraVR.far;\n      }\n      const parent = camera.parent;\n      const cameras2 = cameraVR.cameras;\n      updateCamera(cameraVR, parent);\n      for (let i = 0; i < cameras2.length; i++) {\n        updateCamera(cameras2[i], parent);\n      }\n      cameraVR.matrixWorld.decompose(cameraVR.position, cameraVR.quaternion, cameraVR.scale);\n      camera.position.copy(cameraVR.position);\n      camera.quaternion.copy(cameraVR.quaternion);\n      camera.scale.copy(cameraVR.scale);\n      camera.matrix.copy(cameraVR.matrix);\n      camera.matrixWorld.copy(cameraVR.matrixWorld);\n      const children = camera.children;\n      for (let i = 0, l = children.length; i < l; i++) {\n        children[i].updateMatrixWorld(true);\n      }\n      if (cameras2.length === 2) {\n        setProjectionFromUnion(cameraVR, cameraL, cameraR);\n      } else {\n        cameraVR.projectionMatrix.copy(cameraL.projectionMatrix);\n      }\n    };\n    this.getCamera = function() {\n      return cameraVR;\n    };\n    this.getFoveation = function() {\n      if (glProjLayer !== null) {\n        return glProjLayer.fixedFoveation;\n      }\n      if (glBaseLayer !== null) {\n        return glBaseLayer.fixedFoveation;\n      }\n      return void 0;\n    };\n    this.setFoveation = function(foveation) {\n      if (glProjLayer !== null) {\n        glProjLayer.fixedFoveation = foveation;\n      }\n      if (glBaseLayer !== null && glBaseLayer.fixedFoveation !== void 0) {\n        glBaseLayer.fixedFoveation = foveation;\n      }\n    };\n    let onAnimationFrameCallback = null;\n    function onAnimationFrame(time, frame) {\n      pose = frame.getViewerPose(customReferenceSpace || referenceSpace);\n      xrFrame = frame;\n      if (pose !== null) {\n        const views = pose.views;\n        if (glBaseLayer !== null) {\n          renderer.setRenderTargetFramebuffer(newRenderTarget, glBaseLayer.framebuffer);\n          renderer.setRenderTarget(newRenderTarget);\n        }\n        let cameraVRNeedsUpdate = false;\n        if (views.length !== cameraVR.cameras.length) {\n          cameraVR.cameras.length = 0;\n          cameraVRNeedsUpdate = true;\n        }\n        for (let i = 0; i < views.length; i++) {\n          const view = views[i];\n          let viewport = null;\n          if (glBaseLayer !== null) {\n            viewport = glBaseLayer.getViewport(view);\n          } else {\n            const glSubImage = glBinding.getViewSubImage(glProjLayer, view);\n            viewport = glSubImage.viewport;\n            if (i === 0) {\n              renderer.setRenderTargetTextures(\n                newRenderTarget,\n                glSubImage.colorTexture,\n                glProjLayer.ignoreDepthValues ? void 0 : glSubImage.depthStencilTexture\n              );\n              renderer.setRenderTarget(newRenderTarget);\n            }\n          }\n          let camera = cameras[i];\n          if (camera === void 0) {\n            camera = new PerspectiveCamera();\n            camera.layers.enable(i);\n            camera.viewport = new Vector4();\n            cameras[i] = camera;\n          }\n          camera.matrix.fromArray(view.transform.matrix);\n          camera.projectionMatrix.fromArray(view.projectionMatrix);\n          camera.viewport.set(viewport.x, viewport.y, viewport.width, viewport.height);\n          if (i === 0) {\n            cameraVR.matrix.copy(camera.matrix);\n          }\n          if (cameraVRNeedsUpdate === true) {\n            cameraVR.cameras.push(camera);\n          }\n        }\n      }\n      for (let i = 0; i < controllers.length; i++) {\n        const inputSource = controllerInputSources[i];\n        const controller = controllers[i];\n        if (inputSource !== null && controller !== void 0) {\n          controller.update(inputSource, frame, customReferenceSpace || referenceSpace);\n        }\n      }\n      if (onAnimationFrameCallback)\n        onAnimationFrameCallback(time, frame);\n      xrFrame = null;\n    }\n    const animation = new WebGLAnimation();\n    animation.setAnimationLoop(onAnimationFrame);\n    this.setAnimationLoop = function(callback) {\n      onAnimationFrameCallback = callback;\n    };\n    this.dispose = function() {\n    };\n  }\n}\nfunction WebGLMaterials(renderer, properties) {\n  function refreshFogUniforms(uniforms, fog) {\n    uniforms.fogColor.value.copy(fog.color);\n    if (fog.isFog) {\n      uniforms.fogNear.value = fog.near;\n      uniforms.fogFar.value = fog.far;\n    } else if (fog.isFogExp2) {\n      uniforms.fogDensity.value = fog.density;\n    }\n  }\n  function refreshMaterialUniforms(uniforms, material, pixelRatio, height, transmissionRenderTarget) {\n    if (material.isMeshBasicMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isMeshLambertMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isMeshToonMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsToon(uniforms, material);\n    } else if (material.isMeshPhongMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsPhong(uniforms, material);\n    } else if (material.isMeshStandardMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsStandard(uniforms, material);\n      if (material.isMeshPhysicalMaterial) {\n        refreshUniformsPhysical(uniforms, material, transmissionRenderTarget);\n      }\n    } else if (material.isMeshMatcapMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsMatcap(uniforms, material);\n    } else if (material.isMeshDepthMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isMeshDistanceMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsDistance(uniforms, material);\n    } else if (material.isMeshNormalMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isLineBasicMaterial) {\n      refreshUniformsLine(uniforms, material);\n      if (material.isLineDashedMaterial) {\n        refreshUniformsDash(uniforms, material);\n      }\n    } else if (material.isPointsMaterial) {\n      refreshUniformsPoints(uniforms, material, pixelRatio, height);\n    } else if (material.isSpriteMaterial) {\n      refreshUniformsSprites(uniforms, material);\n    } else if (material.isShadowMaterial) {\n      uniforms.color.value.copy(material.color);\n      uniforms.opacity.value = material.opacity;\n    } else if (material.isShaderMaterial) {\n      material.uniformsNeedUpdate = false;\n    }\n  }\n  function refreshUniformsCommon(uniforms, material) {\n    uniforms.opacity.value = material.opacity;\n    if (material.color) {\n      uniforms.diffuse.value.copy(material.color);\n    }\n    if (material.emissive) {\n      uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity);\n    }\n    if (material.map) {\n      uniforms.map.value = material.map;\n    }\n    if (material.alphaMap) {\n      uniforms.alphaMap.value = material.alphaMap;\n    }\n    if (material.bumpMap) {\n      uniforms.bumpMap.value = material.bumpMap;\n      uniforms.bumpScale.value = material.bumpScale;\n      if (material.side === BackSide)\n        uniforms.bumpScale.value *= -1;\n    }\n    if (material.displacementMap) {\n      uniforms.displacementMap.value = material.displacementMap;\n      uniforms.displacementScale.value = material.displacementScale;\n      uniforms.displacementBias.value = material.displacementBias;\n    }\n    if (material.emissiveMap) {\n      uniforms.emissiveMap.value = material.emissiveMap;\n    }\n    if (material.normalMap) {\n      uniforms.normalMap.value = material.normalMap;\n      uniforms.normalScale.value.copy(material.normalScale);\n      if (material.side === BackSide)\n        uniforms.normalScale.value.negate();\n    }\n    if (material.specularMap) {\n      uniforms.specularMap.value = material.specularMap;\n    }\n    if (material.alphaTest > 0) {\n      uniforms.alphaTest.value = material.alphaTest;\n    }\n    const envMap = properties.get(material).envMap;\n    if (envMap) {\n      uniforms.envMap.value = envMap;\n      uniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1;\n      uniforms.reflectivity.value = material.reflectivity;\n      uniforms.ior.value = material.ior;\n      uniforms.refractionRatio.value = material.refractionRatio;\n    }\n    if (material.lightMap) {\n      uniforms.lightMap.value = material.lightMap;\n      const scaleFactor = renderer.physicallyCorrectLights !== true ? Math.PI : 1;\n      uniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n    }\n    if (material.aoMap) {\n      uniforms.aoMap.value = material.aoMap;\n      uniforms.aoMapIntensity.value = material.aoMapIntensity;\n    }\n    let uvScaleMap;\n    if (material.map) {\n      uvScaleMap = material.map;\n    } else if (material.specularMap) {\n      uvScaleMap = material.specularMap;\n    } else if (material.displacementMap) {\n      uvScaleMap = material.displacementMap;\n    } else if (material.normalMap) {\n      uvScaleMap = material.normalMap;\n    } else if (material.bumpMap) {\n      uvScaleMap = material.bumpMap;\n    } else if (material.roughnessMap) {\n      uvScaleMap = material.roughnessMap;\n    } else if (material.metalnessMap) {\n      uvScaleMap = material.metalnessMap;\n    } else if (material.alphaMap) {\n      uvScaleMap = material.alphaMap;\n    } else if (material.emissiveMap) {\n      uvScaleMap = material.emissiveMap;\n    } else if (material.clearcoatMap) {\n      uvScaleMap = material.clearcoatMap;\n    } else if (material.clearcoatNormalMap) {\n      uvScaleMap = material.clearcoatNormalMap;\n    } else if (material.clearcoatRoughnessMap) {\n      uvScaleMap = material.clearcoatRoughnessMap;\n    } else if (material.iridescenceMap) {\n      uvScaleMap = material.iridescenceMap;\n    } else if (material.iridescenceThicknessMap) {\n      uvScaleMap = material.iridescenceThicknessMap;\n    } else if (material.specularIntensityMap) {\n      uvScaleMap = material.specularIntensityMap;\n    } else if (material.specularColorMap) {\n      uvScaleMap = material.specularColorMap;\n    } else if (material.transmissionMap) {\n      uvScaleMap = material.transmissionMap;\n    } else if (material.thicknessMap) {\n      uvScaleMap = material.thicknessMap;\n    } else if (material.sheenColorMap) {\n      uvScaleMap = material.sheenColorMap;\n    } else if (material.sheenRoughnessMap) {\n      uvScaleMap = material.sheenRoughnessMap;\n    }\n    if (uvScaleMap !== void 0) {\n      if (uvScaleMap.isWebGLRenderTarget) {\n        uvScaleMap = uvScaleMap.texture;\n      }\n      if (uvScaleMap.matrixAutoUpdate === true) {\n        uvScaleMap.updateMatrix();\n      }\n      uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n    }\n    let uv2ScaleMap;\n    if (material.aoMap) {\n      uv2ScaleMap = material.aoMap;\n    } else if (material.lightMap) {\n      uv2ScaleMap = material.lightMap;\n    }\n    if (uv2ScaleMap !== void 0) {\n      if (uv2ScaleMap.isWebGLRenderTarget) {\n        uv2ScaleMap = uv2ScaleMap.texture;\n      }\n      if (uv2ScaleMap.matrixAutoUpdate === true) {\n        uv2ScaleMap.updateMatrix();\n      }\n      uniforms.uv2Transform.value.copy(uv2ScaleMap.matrix);\n    }\n  }\n  function refreshUniformsLine(uniforms, material) {\n    uniforms.diffuse.value.copy(material.color);\n    uniforms.opacity.value = material.opacity;\n  }\n  function refreshUniformsDash(uniforms, material) {\n    uniforms.dashSize.value = material.dashSize;\n    uniforms.totalSize.value = material.dashSize + material.gapSize;\n    uniforms.scale.value = material.scale;\n  }\n  function refreshUniformsPoints(uniforms, material, pixelRatio, height) {\n    uniforms.diffuse.value.copy(material.color);\n    uniforms.opacity.value = material.opacity;\n    uniforms.size.value = material.size * pixelRatio;\n    uniforms.scale.value = height * 0.5;\n    if (material.map) {\n      uniforms.map.value = material.map;\n    }\n    if (material.alphaMap) {\n      uniforms.alphaMap.value = material.alphaMap;\n    }\n    if (material.alphaTest > 0) {\n      uniforms.alphaTest.value = material.alphaTest;\n    }\n    let uvScaleMap;\n    if (material.map) {\n      uvScaleMap = material.map;\n    } else if (material.alphaMap) {\n      uvScaleMap = material.alphaMap;\n    }\n    if (uvScaleMap !== void 0) {\n      if (uvScaleMap.matrixAutoUpdate === true) {\n        uvScaleMap.updateMatrix();\n      }\n      uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n    }\n  }\n  function refreshUniformsSprites(uniforms, material) {\n    uniforms.diffuse.value.copy(material.color);\n    uniforms.opacity.value = material.opacity;\n    uniforms.rotation.value = material.rotation;\n    if (material.map) {\n      uniforms.map.value = material.map;\n    }\n    if (material.alphaMap) {\n      uniforms.alphaMap.value = material.alphaMap;\n    }\n    if (material.alphaTest > 0) {\n      uniforms.alphaTest.value = material.alphaTest;\n    }\n    let uvScaleMap;\n    if (material.map) {\n      uvScaleMap = material.map;\n    } else if (material.alphaMap) {\n      uvScaleMap = material.alphaMap;\n    }\n    if (uvScaleMap !== void 0) {\n      if (uvScaleMap.matrixAutoUpdate === true) {\n        uvScaleMap.updateMatrix();\n      }\n      uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n    }\n  }\n  function refreshUniformsPhong(uniforms, material) {\n    uniforms.specular.value.copy(material.specular);\n    uniforms.shininess.value = Math.max(material.shininess, 1e-4);\n  }\n  function refreshUniformsToon(uniforms, material) {\n    if (material.gradientMap) {\n      uniforms.gradientMap.value = material.gradientMap;\n    }\n  }\n  function refreshUniformsStandard(uniforms, material) {\n    uniforms.roughness.value = material.roughness;\n    uniforms.metalness.value = material.metalness;\n    if (material.roughnessMap) {\n      uniforms.roughnessMap.value = material.roughnessMap;\n    }\n    if (material.metalnessMap) {\n      uniforms.metalnessMap.value = material.metalnessMap;\n    }\n    const envMap = properties.get(material).envMap;\n    if (envMap) {\n      uniforms.envMapIntensity.value = material.envMapIntensity;\n    }\n  }\n  function refreshUniformsPhysical(uniforms, material, transmissionRenderTarget) {\n    uniforms.ior.value = material.ior;\n    if (material.sheen > 0) {\n      uniforms.sheenColor.value.copy(material.sheenColor).multiplyScalar(material.sheen);\n      uniforms.sheenRoughness.value = material.sheenRoughness;\n      if (material.sheenColorMap) {\n        uniforms.sheenColorMap.value = material.sheenColorMap;\n      }\n      if (material.sheenRoughnessMap) {\n        uniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n      }\n    }\n    if (material.clearcoat > 0) {\n      uniforms.clearcoat.value = material.clearcoat;\n      uniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n      if (material.clearcoatMap) {\n        uniforms.clearcoatMap.value = material.clearcoatMap;\n      }\n      if (material.clearcoatRoughnessMap) {\n        uniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n      }\n      if (material.clearcoatNormalMap) {\n        uniforms.clearcoatNormalScale.value.copy(material.clearcoatNormalScale);\n        uniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n        if (material.side === BackSide) {\n          uniforms.clearcoatNormalScale.value.negate();\n        }\n      }\n    }\n    if (material.iridescence > 0) {\n      uniforms.iridescence.value = material.iridescence;\n      uniforms.iridescenceIOR.value = material.iridescenceIOR;\n      uniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[0];\n      uniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[1];\n      if (material.iridescenceMap) {\n        uniforms.iridescenceMap.value = material.iridescenceMap;\n      }\n      if (material.iridescenceThicknessMap) {\n        uniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n      }\n    }\n    if (material.transmission > 0) {\n      uniforms.transmission.value = material.transmission;\n      uniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n      uniforms.transmissionSamplerSize.value.set(transmissionRenderTarget.width, transmissionRenderTarget.height);\n      if (material.transmissionMap) {\n        uniforms.transmissionMap.value = material.transmissionMap;\n      }\n      uniforms.thickness.value = material.thickness;\n      if (material.thicknessMap) {\n        uniforms.thicknessMap.value = material.thicknessMap;\n      }\n      uniforms.attenuationDistance.value = material.attenuationDistance;\n      uniforms.attenuationColor.value.copy(material.attenuationColor);\n    }\n    uniforms.specularIntensity.value = material.specularIntensity;\n    uniforms.specularColor.value.copy(material.specularColor);\n    if (material.specularIntensityMap) {\n      uniforms.specularIntensityMap.value = material.specularIntensityMap;\n    }\n    if (material.specularColorMap) {\n      uniforms.specularColorMap.value = material.specularColorMap;\n    }\n  }\n  function refreshUniformsMatcap(uniforms, material) {\n    if (material.matcap) {\n      uniforms.matcap.value = material.matcap;\n    }\n  }\n  function refreshUniformsDistance(uniforms, material) {\n    uniforms.referencePosition.value.copy(material.referencePosition);\n    uniforms.nearDistance.value = material.nearDistance;\n    uniforms.farDistance.value = material.farDistance;\n  }\n  return {\n    refreshFogUniforms,\n    refreshMaterialUniforms\n  };\n}\nfunction WebGLUniformsGroups(gl, info, capabilities, state) {\n  let buffers = {};\n  let updateList = {};\n  let allocatedBindingPoints = [];\n  const maxBindingPoints = capabilities.isWebGL2 ? gl.getParameter(35375) : 0;\n  function bind(uniformsGroup, program) {\n    const webglProgram = program.program;\n    state.uniformBlockBinding(uniformsGroup, webglProgram);\n  }\n  function update(uniformsGroup, program) {\n    let buffer = buffers[uniformsGroup.id];\n    if (buffer === void 0) {\n      prepareUniformsGroup(uniformsGroup);\n      buffer = createBuffer(uniformsGroup);\n      buffers[uniformsGroup.id] = buffer;\n      uniformsGroup.addEventListener(\"dispose\", onUniformsGroupsDispose);\n    }\n    const webglProgram = program.program;\n    state.updateUBOMapping(uniformsGroup, webglProgram);\n    const frame = info.render.frame;\n    if (updateList[uniformsGroup.id] !== frame) {\n      updateBufferData(uniformsGroup);\n      updateList[uniformsGroup.id] = frame;\n    }\n  }\n  function createBuffer(uniformsGroup) {\n    const bindingPointIndex = allocateBindingPointIndex();\n    uniformsGroup.__bindingPointIndex = bindingPointIndex;\n    const buffer = gl.createBuffer();\n    const size = uniformsGroup.__size;\n    const usage = uniformsGroup.usage;\n    gl.bindBuffer(35345, buffer);\n    gl.bufferData(35345, size, usage);\n    gl.bindBuffer(35345, null);\n    gl.bindBufferBase(35345, bindingPointIndex, buffer);\n    return buffer;\n  }\n  function allocateBindingPointIndex() {\n    for (let i = 0; i < maxBindingPoints; i++) {\n      if (allocatedBindingPoints.indexOf(i) === -1) {\n        allocatedBindingPoints.push(i);\n        return i;\n      }\n    }\n    console.error(\"THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.\");\n    return 0;\n  }\n  function updateBufferData(uniformsGroup) {\n    const buffer = buffers[uniformsGroup.id];\n    const uniforms = uniformsGroup.uniforms;\n    const cache = uniformsGroup.__cache;\n    gl.bindBuffer(35345, buffer);\n    for (let i = 0, il = uniforms.length; i < il; i++) {\n      const uniform = uniforms[i];\n      if (hasUniformChanged(uniform, i, cache) === true) {\n        const value = uniform.value;\n        const offset = uniform.__offset;\n        if (typeof value === \"number\") {\n          uniform.__data[0] = value;\n          gl.bufferSubData(35345, offset, uniform.__data);\n        } else {\n          if (uniform.value.isMatrix3) {\n            uniform.__data[0] = uniform.value.elements[0];\n            uniform.__data[1] = uniform.value.elements[1];\n            uniform.__data[2] = uniform.value.elements[2];\n            uniform.__data[3] = uniform.value.elements[0];\n            uniform.__data[4] = uniform.value.elements[3];\n            uniform.__data[5] = uniform.value.elements[4];\n            uniform.__data[6] = uniform.value.elements[5];\n            uniform.__data[7] = uniform.value.elements[0];\n            uniform.__data[8] = uniform.value.elements[6];\n            uniform.__data[9] = uniform.value.elements[7];\n            uniform.__data[10] = uniform.value.elements[8];\n            uniform.__data[11] = uniform.value.elements[0];\n          } else {\n            value.toArray(uniform.__data);\n          }\n          gl.bufferSubData(35345, offset, uniform.__data);\n        }\n      }\n    }\n    gl.bindBuffer(35345, null);\n  }\n  function hasUniformChanged(uniform, index, cache) {\n    const value = uniform.value;\n    if (cache[index] === void 0) {\n      if (typeof value === \"number\") {\n        cache[index] = value;\n      } else {\n        cache[index] = value.clone();\n      }\n      return true;\n    } else {\n      if (typeof value === \"number\") {\n        if (cache[index] !== value) {\n          cache[index] = value;\n          return true;\n        }\n      } else {\n        const cachedObject = cache[index];\n        if (cachedObject.equals(value) === false) {\n          cachedObject.copy(value);\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n  function prepareUniformsGroup(uniformsGroup) {\n    const uniforms = uniformsGroup.uniforms;\n    let offset = 0;\n    const chunkSize = 16;\n    let chunkOffset = 0;\n    for (let i = 0, l = uniforms.length; i < l; i++) {\n      const uniform = uniforms[i];\n      const info2 = getUniformSize(uniform);\n      uniform.__data = new Float32Array(info2.storage / Float32Array.BYTES_PER_ELEMENT);\n      uniform.__offset = offset;\n      if (i > 0) {\n        chunkOffset = offset % chunkSize;\n        const remainingSizeInChunk = chunkSize - chunkOffset;\n        if (chunkOffset !== 0 && remainingSizeInChunk - info2.boundary < 0) {\n          offset += chunkSize - chunkOffset;\n          uniform.__offset = offset;\n        }\n      }\n      offset += info2.storage;\n    }\n    chunkOffset = offset % chunkSize;\n    if (chunkOffset > 0)\n      offset += chunkSize - chunkOffset;\n    uniformsGroup.__size = offset;\n    uniformsGroup.__cache = {};\n    return this;\n  }\n  function getUniformSize(uniform) {\n    const value = uniform.value;\n    const info2 = {\n      boundary: 0,\n      storage: 0\n    };\n    if (typeof value === \"number\") {\n      info2.boundary = 4;\n      info2.storage = 4;\n    } else if (value.isVector2) {\n      info2.boundary = 8;\n      info2.storage = 8;\n    } else if (value.isVector3 || value.isColor) {\n      info2.boundary = 16;\n      info2.storage = 12;\n    } else if (value.isVector4) {\n      info2.boundary = 16;\n      info2.storage = 16;\n    } else if (value.isMatrix3) {\n      info2.boundary = 48;\n      info2.storage = 48;\n    } else if (value.isMatrix4) {\n      info2.boundary = 64;\n      info2.storage = 64;\n    } else if (value.isTexture) {\n      console.warn(\"THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.\");\n    } else {\n      console.warn(\"THREE.WebGLRenderer: Unsupported uniform value type.\", value);\n    }\n    return info2;\n  }\n  function onUniformsGroupsDispose(event) {\n    const uniformsGroup = event.target;\n    uniformsGroup.removeEventListener(\"dispose\", onUniformsGroupsDispose);\n    const index = allocatedBindingPoints.indexOf(uniformsGroup.__bindingPointIndex);\n    allocatedBindingPoints.splice(index, 1);\n    gl.deleteBuffer(buffers[uniformsGroup.id]);\n    delete buffers[uniformsGroup.id];\n    delete updateList[uniformsGroup.id];\n  }\n  function dispose() {\n    for (const id2 in buffers) {\n      gl.deleteBuffer(buffers[id2]);\n    }\n    allocatedBindingPoints = [];\n    buffers = {};\n    updateList = {};\n  }\n  return {\n    bind,\n    update,\n    dispose\n  };\n}\nfunction createCanvasElement() {\n  const canvas = createElementNS(\"canvas\");\n  canvas.style.display = \"block\";\n  return canvas;\n}\nfunction WebGLRenderer(parameters = {}) {\n  this.isWebGLRenderer = true;\n  const _canvas2 = parameters.canvas !== void 0 ? parameters.canvas : createCanvasElement(), _context2 = parameters.context !== void 0 ? parameters.context : null, _depth = parameters.depth !== void 0 ? parameters.depth : true, _stencil = parameters.stencil !== void 0 ? parameters.stencil : true, _antialias = parameters.antialias !== void 0 ? parameters.antialias : false, _premultipliedAlpha = parameters.premultipliedAlpha !== void 0 ? parameters.premultipliedAlpha : true, _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== void 0 ? parameters.preserveDrawingBuffer : false, _powerPreference = parameters.powerPreference !== void 0 ? parameters.powerPreference : \"default\", _failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== void 0 ? parameters.failIfMajorPerformanceCaveat : false;\n  let _alpha;\n  if (_context2 !== null) {\n    _alpha = _context2.getContextAttributes().alpha;\n  } else {\n    _alpha = parameters.alpha !== void 0 ? parameters.alpha : false;\n  }\n  let currentRenderList = null;\n  let currentRenderState = null;\n  const renderListStack = [];\n  const renderStateStack = [];\n  this.domElement = _canvas2;\n  this.debug = {\n    checkShaderErrors: true\n  };\n  this.autoClear = true;\n  this.autoClearColor = true;\n  this.autoClearDepth = true;\n  this.autoClearStencil = true;\n  this.sortObjects = true;\n  this.clippingPlanes = [];\n  this.localClippingEnabled = false;\n  this.outputEncoding = LinearEncoding;\n  this.physicallyCorrectLights = false;\n  this.toneMapping = NoToneMapping;\n  this.toneMappingExposure = 1;\n  Object.defineProperties(this, {\n    gammaFactor: {\n      get: function() {\n        console.warn(\"THREE.WebGLRenderer: .gammaFactor has been removed.\");\n        return 2;\n      },\n      set: function() {\n        console.warn(\"THREE.WebGLRenderer: .gammaFactor has been removed.\");\n      }\n    }\n  });\n  const _this = this;\n  let _isContextLost = false;\n  let _currentActiveCubeFace = 0;\n  let _currentActiveMipmapLevel = 0;\n  let _currentRenderTarget = null;\n  let _currentMaterialId = -1;\n  let _currentCamera = null;\n  const _currentViewport = new Vector4();\n  const _currentScissor = new Vector4();\n  let _currentScissorTest = null;\n  let _width = _canvas2.width;\n  let _height = _canvas2.height;\n  let _pixelRatio = 1;\n  let _opaqueSort = null;\n  let _transparentSort = null;\n  const _viewport = new Vector4(0, 0, _width, _height);\n  const _scissor = new Vector4(0, 0, _width, _height);\n  let _scissorTest = false;\n  const _frustum = new Frustum();\n  let _clippingEnabled = false;\n  let _localClippingEnabled = false;\n  let _transmissionRenderTarget = null;\n  const _projScreenMatrix2 = new Matrix4();\n  const _vector22 = new Vector2();\n  const _vector3 = new Vector3();\n  const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n  function getTargetPixelRatio() {\n    return _currentRenderTarget === null ? _pixelRatio : 1;\n  }\n  let _gl = _context2;\n  function getContext(contextNames, contextAttributes) {\n    for (let i = 0; i < contextNames.length; i++) {\n      const contextName = contextNames[i];\n      const context = _canvas2.getContext(contextName, contextAttributes);\n      if (context !== null)\n        return context;\n    }\n    return null;\n  }\n  try {\n    const contextAttributes = {\n      alpha: true,\n      depth: _depth,\n      stencil: _stencil,\n      antialias: _antialias,\n      premultipliedAlpha: _premultipliedAlpha,\n      preserveDrawingBuffer: _preserveDrawingBuffer,\n      powerPreference: _powerPreference,\n      failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n    };\n    if (\"setAttribute\" in _canvas2)\n      _canvas2.setAttribute(\"data-engine\", `three.js r${REVISION}`);\n    _canvas2.addEventListener(\"webglcontextlost\", onContextLost, false);\n    _canvas2.addEventListener(\"webglcontextrestored\", onContextRestore, false);\n    _canvas2.addEventListener(\"webglcontextcreationerror\", onContextCreationError, false);\n    if (_gl === null) {\n      const contextNames = [\"webgl2\", \"webgl\", \"experimental-webgl\"];\n      if (_this.isWebGL1Renderer === true) {\n        contextNames.shift();\n      }\n      _gl = getContext(contextNames, contextAttributes);\n      if (_gl === null) {\n        if (getContext(contextNames)) {\n          throw new Error(\"Error creating WebGL context with your selected attributes.\");\n        } else {\n          throw new Error(\"Error creating WebGL context.\");\n        }\n      }\n    }\n    if (_gl.getShaderPrecisionFormat === void 0) {\n      _gl.getShaderPrecisionFormat = function() {\n        return { \"rangeMin\": 1, \"rangeMax\": 1, \"precision\": 1 };\n      };\n    }\n  } catch (error) {\n    console.error(\"THREE.WebGLRenderer: \" + error.message);\n    throw error;\n  }\n  let extensions, capabilities, state, info;\n  let properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n  let programCache, materials, renderLists, renderStates, clipping, shadowMap;\n  let background, morphtargets, bufferRenderer, indexedBufferRenderer;\n  let utils2, bindingStates, uniformsGroups;\n  function initGLContext() {\n    extensions = new WebGLExtensions(_gl);\n    capabilities = new WebGLCapabilities(_gl, extensions, parameters);\n    extensions.init(capabilities);\n    utils2 = new WebGLUtils(_gl, extensions, capabilities);\n    state = new WebGLState(_gl, extensions, capabilities);\n    info = new WebGLInfo();\n    properties = new WebGLProperties();\n    textures = new WebGLTextures(_gl, extensions, state, properties, capabilities, utils2, info);\n    cubemaps = new WebGLCubeMaps(_this);\n    cubeuvmaps = new WebGLCubeUVMaps(_this);\n    attributes = new WebGLAttributes(_gl, capabilities);\n    bindingStates = new WebGLBindingStates(_gl, extensions, attributes, capabilities);\n    geometries = new WebGLGeometries(_gl, attributes, info, bindingStates);\n    objects = new WebGLObjects(_gl, geometries, attributes, info);\n    morphtargets = new WebGLMorphtargets(_gl, capabilities, textures);\n    clipping = new WebGLClipping(properties);\n    programCache = new WebGLPrograms(_this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping);\n    materials = new WebGLMaterials(_this, properties);\n    renderLists = new WebGLRenderLists();\n    renderStates = new WebGLRenderStates(extensions, capabilities);\n    background = new WebGLBackground(_this, cubemaps, state, objects, _alpha, _premultipliedAlpha);\n    shadowMap = new WebGLShadowMap(_this, objects, capabilities);\n    uniformsGroups = new WebGLUniformsGroups(_gl, info, capabilities, state);\n    bufferRenderer = new WebGLBufferRenderer(_gl, extensions, info, capabilities);\n    indexedBufferRenderer = new WebGLIndexedBufferRenderer(_gl, extensions, info, capabilities);\n    info.programs = programCache.programs;\n    _this.capabilities = capabilities;\n    _this.extensions = extensions;\n    _this.properties = properties;\n    _this.renderLists = renderLists;\n    _this.shadowMap = shadowMap;\n    _this.state = state;\n    _this.info = info;\n  }\n  initGLContext();\n  const xr = new WebXRManager(_this, _gl);\n  this.xr = xr;\n  this.getContext = function() {\n    return _gl;\n  };\n  this.getContextAttributes = function() {\n    return _gl.getContextAttributes();\n  };\n  this.forceContextLoss = function() {\n    const extension = extensions.get(\"WEBGL_lose_context\");\n    if (extension)\n      extension.loseContext();\n  };\n  this.forceContextRestore = function() {\n    const extension = extensions.get(\"WEBGL_lose_context\");\n    if (extension)\n      extension.restoreContext();\n  };\n  this.getPixelRatio = function() {\n    return _pixelRatio;\n  };\n  this.setPixelRatio = function(value) {\n    if (value === void 0)\n      return;\n    _pixelRatio = value;\n    this.setSize(_width, _height, false);\n  };\n  this.getSize = function(target) {\n    return target.set(_width, _height);\n  };\n  this.setSize = function(width, height, updateStyle) {\n    if (xr.isPresenting) {\n      console.warn(\"THREE.WebGLRenderer: Can't change size while VR device is presenting.\");\n      return;\n    }\n    _width = width;\n    _height = height;\n    _canvas2.width = Math.floor(width * _pixelRatio);\n    _canvas2.height = Math.floor(height * _pixelRatio);\n    if (updateStyle !== false) {\n      _canvas2.style.width = width + \"px\";\n      _canvas2.style.height = height + \"px\";\n    }\n    this.setViewport(0, 0, width, height);\n  };\n  this.getDrawingBufferSize = function(target) {\n    return target.set(_width * _pixelRatio, _height * _pixelRatio).floor();\n  };\n  this.setDrawingBufferSize = function(width, height, pixelRatio) {\n    _width = width;\n    _height = height;\n    _pixelRatio = pixelRatio;\n    _canvas2.width = Math.floor(width * pixelRatio);\n    _canvas2.height = Math.floor(height * pixelRatio);\n    this.setViewport(0, 0, width, height);\n  };\n  this.getCurrentViewport = function(target) {\n    return target.copy(_currentViewport);\n  };\n  this.getViewport = function(target) {\n    return target.copy(_viewport);\n  };\n  this.setViewport = function(x, y, width, height) {\n    if (x.isVector4) {\n      _viewport.set(x.x, x.y, x.z, x.w);\n    } else {\n      _viewport.set(x, y, width, height);\n    }\n    state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor());\n  };\n  this.getScissor = function(target) {\n    return target.copy(_scissor);\n  };\n  this.setScissor = function(x, y, width, height) {\n    if (x.isVector4) {\n      _scissor.set(x.x, x.y, x.z, x.w);\n    } else {\n      _scissor.set(x, y, width, height);\n    }\n    state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor());\n  };\n  this.getScissorTest = function() {\n    return _scissorTest;\n  };\n  this.setScissorTest = function(boolean) {\n    state.setScissorTest(_scissorTest = boolean);\n  };\n  this.setOpaqueSort = function(method) {\n    _opaqueSort = method;\n  };\n  this.setTransparentSort = function(method) {\n    _transparentSort = method;\n  };\n  this.getClearColor = function(target) {\n    return target.copy(background.getClearColor());\n  };\n  this.setClearColor = function() {\n    background.setClearColor.apply(background, arguments);\n  };\n  this.getClearAlpha = function() {\n    return background.getClearAlpha();\n  };\n  this.setClearAlpha = function() {\n    background.setClearAlpha.apply(background, arguments);\n  };\n  this.clear = function(color = true, depth = true, stencil = true) {\n    let bits = 0;\n    if (color)\n      bits |= 16384;\n    if (depth)\n      bits |= 256;\n    if (stencil)\n      bits |= 1024;\n    _gl.clear(bits);\n  };\n  this.clearColor = function() {\n    this.clear(true, false, false);\n  };\n  this.clearDepth = function() {\n    this.clear(false, true, false);\n  };\n  this.clearStencil = function() {\n    this.clear(false, false, true);\n  };\n  this.dispose = function() {\n    _canvas2.removeEventListener(\"webglcontextlost\", onContextLost, false);\n    _canvas2.removeEventListener(\"webglcontextrestored\", onContextRestore, false);\n    _canvas2.removeEventListener(\"webglcontextcreationerror\", onContextCreationError, false);\n    renderLists.dispose();\n    renderStates.dispose();\n    properties.dispose();\n    cubemaps.dispose();\n    cubeuvmaps.dispose();\n    objects.dispose();\n    bindingStates.dispose();\n    uniformsGroups.dispose();\n    programCache.dispose();\n    xr.dispose();\n    xr.removeEventListener(\"sessionstart\", onXRSessionStart);\n    xr.removeEventListener(\"sessionend\", onXRSessionEnd);\n    if (_transmissionRenderTarget) {\n      _transmissionRenderTarget.dispose();\n      _transmissionRenderTarget = null;\n    }\n    animation.stop();\n  };\n  function onContextLost(event) {\n    event.preventDefault();\n    console.log(\"THREE.WebGLRenderer: Context Lost.\");\n    _isContextLost = true;\n  }\n  function onContextRestore() {\n    console.log(\"THREE.WebGLRenderer: Context Restored.\");\n    _isContextLost = false;\n    const infoAutoReset = info.autoReset;\n    const shadowMapEnabled = shadowMap.enabled;\n    const shadowMapAutoUpdate = shadowMap.autoUpdate;\n    const shadowMapNeedsUpdate = shadowMap.needsUpdate;\n    const shadowMapType = shadowMap.type;\n    initGLContext();\n    info.autoReset = infoAutoReset;\n    shadowMap.enabled = shadowMapEnabled;\n    shadowMap.autoUpdate = shadowMapAutoUpdate;\n    shadowMap.needsUpdate = shadowMapNeedsUpdate;\n    shadowMap.type = shadowMapType;\n  }\n  function onContextCreationError(event) {\n    console.error(\"THREE.WebGLRenderer: A WebGL context could not be created. Reason: \", event.statusMessage);\n  }\n  function onMaterialDispose(event) {\n    const material = event.target;\n    material.removeEventListener(\"dispose\", onMaterialDispose);\n    deallocateMaterial(material);\n  }\n  function deallocateMaterial(material) {\n    releaseMaterialProgramReferences(material);\n    properties.remove(material);\n  }\n  function releaseMaterialProgramReferences(material) {\n    const programs = properties.get(material).programs;\n    if (programs !== void 0) {\n      programs.forEach(function(program) {\n        programCache.releaseProgram(program);\n      });\n      if (material.isShaderMaterial) {\n        programCache.releaseShaderCache(material);\n      }\n    }\n  }\n  this.renderBufferDirect = function(camera, scene, geometry, material, object, group) {\n    if (scene === null)\n      scene = _emptyScene;\n    const frontFaceCW = object.isMesh && object.matrixWorld.determinant() < 0;\n    const program = setProgram(camera, scene, geometry, material, object);\n    state.setMaterial(material, frontFaceCW);\n    let index = geometry.index;\n    const position = geometry.attributes.position;\n    if (index === null) {\n      if (position === void 0 || position.count === 0)\n        return;\n    } else if (index.count === 0) {\n      return;\n    }\n    let rangeFactor = 1;\n    if (material.wireframe === true) {\n      index = geometries.getWireframeAttribute(geometry);\n      rangeFactor = 2;\n    }\n    bindingStates.setup(object, material, program, geometry, index);\n    let attribute;\n    let renderer = bufferRenderer;\n    if (index !== null) {\n      attribute = attributes.get(index);\n      renderer = indexedBufferRenderer;\n      renderer.setIndex(attribute);\n    }\n    const dataCount = index !== null ? index.count : position.count;\n    const rangeStart = geometry.drawRange.start * rangeFactor;\n    const rangeCount = geometry.drawRange.count * rangeFactor;\n    const groupStart = group !== null ? group.start * rangeFactor : 0;\n    const groupCount = group !== null ? group.count * rangeFactor : Infinity;\n    const drawStart = Math.max(rangeStart, groupStart);\n    const drawEnd = Math.min(dataCount, rangeStart + rangeCount, groupStart + groupCount) - 1;\n    const drawCount = Math.max(0, drawEnd - drawStart + 1);\n    if (drawCount === 0)\n      return;\n    if (object.isMesh) {\n      if (material.wireframe === true) {\n        state.setLineWidth(material.wireframeLinewidth * getTargetPixelRatio());\n        renderer.setMode(1);\n      } else {\n        renderer.setMode(4);\n      }\n    } else if (object.isLine) {\n      let lineWidth = material.linewidth;\n      if (lineWidth === void 0)\n        lineWidth = 1;\n      state.setLineWidth(lineWidth * getTargetPixelRatio());\n      if (object.isLineSegments) {\n        renderer.setMode(1);\n      } else if (object.isLineLoop) {\n        renderer.setMode(2);\n      } else {\n        renderer.setMode(3);\n      }\n    } else if (object.isPoints) {\n      renderer.setMode(0);\n    } else if (object.isSprite) {\n      renderer.setMode(4);\n    }\n    if (object.isInstancedMesh) {\n      renderer.renderInstances(drawStart, drawCount, object.count);\n    } else if (geometry.isInstancedBufferGeometry) {\n      const instanceCount = Math.min(geometry.instanceCount, geometry._maxInstanceCount);\n      renderer.renderInstances(drawStart, drawCount, instanceCount);\n    } else {\n      renderer.render(drawStart, drawCount);\n    }\n  };\n  this.compile = function(scene, camera) {\n    currentRenderState = renderStates.get(scene);\n    currentRenderState.init();\n    renderStateStack.push(currentRenderState);\n    scene.traverseVisible(function(object) {\n      if (object.isLight && object.layers.test(camera.layers)) {\n        currentRenderState.pushLight(object);\n        if (object.castShadow) {\n          currentRenderState.pushShadow(object);\n        }\n      }\n    });\n    currentRenderState.setupLights(_this.physicallyCorrectLights);\n    scene.traverse(function(object) {\n      const material = object.material;\n      if (material) {\n        if (Array.isArray(material)) {\n          for (let i = 0; i < material.length; i++) {\n            const material2 = material[i];\n            getProgram(material2, scene, object);\n          }\n        } else {\n          getProgram(material, scene, object);\n        }\n      }\n    });\n    renderStateStack.pop();\n    currentRenderState = null;\n  };\n  let onAnimationFrameCallback = null;\n  function onAnimationFrame(time) {\n    if (onAnimationFrameCallback)\n      onAnimationFrameCallback(time);\n  }\n  function onXRSessionStart() {\n    animation.stop();\n  }\n  function onXRSessionEnd() {\n    animation.start();\n  }\n  const animation = new WebGLAnimation();\n  animation.setAnimationLoop(onAnimationFrame);\n  if (typeof self !== \"undefined\")\n    animation.setContext(self);\n  this.setAnimationLoop = function(callback) {\n    onAnimationFrameCallback = callback;\n    xr.setAnimationLoop(callback);\n    callback === null ? animation.stop() : animation.start();\n  };\n  xr.addEventListener(\"sessionstart\", onXRSessionStart);\n  xr.addEventListener(\"sessionend\", onXRSessionEnd);\n  this.render = function(scene, camera) {\n    if (camera !== void 0 && camera.isCamera !== true) {\n      console.error(\"THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.\");\n      return;\n    }\n    if (_isContextLost === true)\n      return;\n    if (scene.autoUpdate === true)\n      scene.updateMatrixWorld();\n    if (camera.parent === null)\n      camera.updateMatrixWorld();\n    if (xr.enabled === true && xr.isPresenting === true) {\n      if (xr.cameraAutoUpdate === true)\n        xr.updateCamera(camera);\n      camera = xr.getCamera();\n    }\n    if (scene.isScene === true)\n      scene.onBeforeRender(_this, scene, camera, _currentRenderTarget);\n    currentRenderState = renderStates.get(scene, renderStateStack.length);\n    currentRenderState.init();\n    renderStateStack.push(currentRenderState);\n    _projScreenMatrix2.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n    _frustum.setFromProjectionMatrix(_projScreenMatrix2);\n    _localClippingEnabled = this.localClippingEnabled;\n    _clippingEnabled = clipping.init(this.clippingPlanes, _localClippingEnabled, camera);\n    currentRenderList = renderLists.get(scene, renderListStack.length);\n    currentRenderList.init();\n    renderListStack.push(currentRenderList);\n    projectObject(scene, camera, 0, _this.sortObjects);\n    currentRenderList.finish();\n    if (_this.sortObjects === true) {\n      currentRenderList.sort(_opaqueSort, _transparentSort);\n    }\n    if (_clippingEnabled === true)\n      clipping.beginShadows();\n    const shadowsArray = currentRenderState.state.shadowsArray;\n    shadowMap.render(shadowsArray, scene, camera);\n    if (_clippingEnabled === true)\n      clipping.endShadows();\n    if (this.info.autoReset === true)\n      this.info.reset();\n    background.render(currentRenderList, scene);\n    currentRenderState.setupLights(_this.physicallyCorrectLights);\n    if (camera.isArrayCamera) {\n      const cameras = camera.cameras;\n      for (let i = 0, l = cameras.length; i < l; i++) {\n        const camera2 = cameras[i];\n        renderScene(currentRenderList, scene, camera2, camera2.viewport);\n      }\n    } else {\n      renderScene(currentRenderList, scene, camera);\n    }\n    if (_currentRenderTarget !== null) {\n      textures.updateMultisampleRenderTarget(_currentRenderTarget);\n      textures.updateRenderTargetMipmap(_currentRenderTarget);\n    }\n    if (scene.isScene === true)\n      scene.onAfterRender(_this, scene, camera);\n    bindingStates.resetDefaultState();\n    _currentMaterialId = -1;\n    _currentCamera = null;\n    renderStateStack.pop();\n    if (renderStateStack.length > 0) {\n      currentRenderState = renderStateStack[renderStateStack.length - 1];\n    } else {\n      currentRenderState = null;\n    }\n    renderListStack.pop();\n    if (renderListStack.length > 0) {\n      currentRenderList = renderListStack[renderListStack.length - 1];\n    } else {\n      currentRenderList = null;\n    }\n  };\n  function projectObject(object, camera, groupOrder, sortObjects) {\n    if (object.visible === false)\n      return;\n    const visible = object.layers.test(camera.layers);\n    if (visible) {\n      if (object.isGroup) {\n        groupOrder = object.renderOrder;\n      } else if (object.isLOD) {\n        if (object.autoUpdate === true)\n          object.update(camera);\n      } else if (object.isLight) {\n        currentRenderState.pushLight(object);\n        if (object.castShadow) {\n          currentRenderState.pushShadow(object);\n        }\n      } else if (object.isSprite) {\n        if (!object.frustumCulled || _frustum.intersectsSprite(object)) {\n          if (sortObjects) {\n            _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix2);\n          }\n          const geometry = objects.update(object);\n          const material = object.material;\n          if (material.visible) {\n            currentRenderList.push(object, geometry, material, groupOrder, _vector3.z, null);\n          }\n        }\n      } else if (object.isMesh || object.isLine || object.isPoints) {\n        if (object.isSkinnedMesh) {\n          if (object.skeleton.frame !== info.render.frame) {\n            object.skeleton.update();\n            object.skeleton.frame = info.render.frame;\n          }\n        }\n        if (!object.frustumCulled || _frustum.intersectsObject(object)) {\n          if (sortObjects) {\n            _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix2);\n          }\n          const geometry = objects.update(object);\n          const material = object.material;\n          if (Array.isArray(material)) {\n            const groups = geometry.groups;\n            for (let i = 0, l = groups.length; i < l; i++) {\n              const group = groups[i];\n              const groupMaterial = material[group.materialIndex];\n              if (groupMaterial && groupMaterial.visible) {\n                currentRenderList.push(object, geometry, groupMaterial, groupOrder, _vector3.z, group);\n              }\n            }\n          } else if (material.visible) {\n            currentRenderList.push(object, geometry, material, groupOrder, _vector3.z, null);\n          }\n        }\n      }\n    }\n    const children = object.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      projectObject(children[i], camera, groupOrder, sortObjects);\n    }\n  }\n  function renderScene(currentRenderList2, scene, camera, viewport) {\n    const opaqueObjects = currentRenderList2.opaque;\n    const transmissiveObjects = currentRenderList2.transmissive;\n    const transparentObjects = currentRenderList2.transparent;\n    currentRenderState.setupLightsView(camera);\n    if (transmissiveObjects.length > 0)\n      renderTransmissionPass(opaqueObjects, scene, camera);\n    if (viewport)\n      state.viewport(_currentViewport.copy(viewport));\n    if (opaqueObjects.length > 0)\n      renderObjects(opaqueObjects, scene, camera);\n    if (transmissiveObjects.length > 0)\n      renderObjects(transmissiveObjects, scene, camera);\n    if (transparentObjects.length > 0)\n      renderObjects(transparentObjects, scene, camera);\n    state.buffers.depth.setTest(true);\n    state.buffers.depth.setMask(true);\n    state.buffers.color.setMask(true);\n    state.setPolygonOffset(false);\n  }\n  function renderTransmissionPass(opaqueObjects, scene, camera) {\n    const isWebGL2 = capabilities.isWebGL2;\n    if (_transmissionRenderTarget === null) {\n      _transmissionRenderTarget = new WebGLRenderTarget(1, 1, {\n        generateMipmaps: true,\n        type: extensions.has(\"EXT_color_buffer_half_float\") ? HalfFloatType : UnsignedByteType,\n        minFilter: LinearMipmapLinearFilter,\n        samples: isWebGL2 && _antialias === true ? 4 : 0\n      });\n    }\n    _this.getDrawingBufferSize(_vector22);\n    if (isWebGL2) {\n      _transmissionRenderTarget.setSize(_vector22.x, _vector22.y);\n    } else {\n      _transmissionRenderTarget.setSize(floorPowerOfTwo(_vector22.x), floorPowerOfTwo(_vector22.y));\n    }\n    const currentRenderTarget = _this.getRenderTarget();\n    _this.setRenderTarget(_transmissionRenderTarget);\n    _this.clear();\n    const currentToneMapping = _this.toneMapping;\n    _this.toneMapping = NoToneMapping;\n    renderObjects(opaqueObjects, scene, camera);\n    _this.toneMapping = currentToneMapping;\n    textures.updateMultisampleRenderTarget(_transmissionRenderTarget);\n    textures.updateRenderTargetMipmap(_transmissionRenderTarget);\n    _this.setRenderTarget(currentRenderTarget);\n  }\n  function renderObjects(renderList, scene, camera) {\n    const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n    for (let i = 0, l = renderList.length; i < l; i++) {\n      const renderItem = renderList[i];\n      const object = renderItem.object;\n      const geometry = renderItem.geometry;\n      const material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n      const group = renderItem.group;\n      if (object.layers.test(camera.layers)) {\n        renderObject(object, scene, camera, geometry, material, group);\n      }\n    }\n  }\n  function renderObject(object, scene, camera, geometry, material, group) {\n    object.onBeforeRender(_this, scene, camera, geometry, material, group);\n    object.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse, object.matrixWorld);\n    object.normalMatrix.getNormalMatrix(object.modelViewMatrix);\n    material.onBeforeRender(_this, scene, camera, geometry, object, group);\n    if (material.transparent === true && material.side === DoubleSide) {\n      material.side = BackSide;\n      material.needsUpdate = true;\n      _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n      material.side = FrontSide;\n      material.needsUpdate = true;\n      _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n      material.side = DoubleSide;\n    } else {\n      _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n    }\n    object.onAfterRender(_this, scene, camera, geometry, material, group);\n  }\n  function getProgram(material, scene, object) {\n    if (scene.isScene !== true)\n      scene = _emptyScene;\n    const materialProperties = properties.get(material);\n    const lights = currentRenderState.state.lights;\n    const shadowsArray = currentRenderState.state.shadowsArray;\n    const lightsStateVersion = lights.state.version;\n    const parameters2 = programCache.getParameters(material, lights.state, shadowsArray, scene, object);\n    const programCacheKey = programCache.getProgramCacheKey(parameters2);\n    let programs = materialProperties.programs;\n    materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n    materialProperties.fog = scene.fog;\n    materialProperties.envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || materialProperties.environment);\n    if (programs === void 0) {\n      material.addEventListener(\"dispose\", onMaterialDispose);\n      programs = /* @__PURE__ */ new Map();\n      materialProperties.programs = programs;\n    }\n    let program = programs.get(programCacheKey);\n    if (program !== void 0) {\n      if (materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion) {\n        updateCommonMaterialProperties(material, parameters2);\n        return program;\n      }\n    } else {\n      parameters2.uniforms = programCache.getUniforms(material);\n      material.onBuild(object, parameters2, _this);\n      material.onBeforeCompile(parameters2, _this);\n      program = programCache.acquireProgram(parameters2, programCacheKey);\n      programs.set(programCacheKey, program);\n      materialProperties.uniforms = parameters2.uniforms;\n    }\n    const uniforms = materialProperties.uniforms;\n    if (!material.isShaderMaterial && !material.isRawShaderMaterial || material.clipping === true) {\n      uniforms.clippingPlanes = clipping.uniform;\n    }\n    updateCommonMaterialProperties(material, parameters2);\n    materialProperties.needsLights = materialNeedsLights(material);\n    materialProperties.lightsStateVersion = lightsStateVersion;\n    if (materialProperties.needsLights) {\n      uniforms.ambientLightColor.value = lights.state.ambient;\n      uniforms.lightProbe.value = lights.state.probe;\n      uniforms.directionalLights.value = lights.state.directional;\n      uniforms.directionalLightShadows.value = lights.state.directionalShadow;\n      uniforms.spotLights.value = lights.state.spot;\n      uniforms.spotLightShadows.value = lights.state.spotShadow;\n      uniforms.rectAreaLights.value = lights.state.rectArea;\n      uniforms.ltc_1.value = lights.state.rectAreaLTC1;\n      uniforms.ltc_2.value = lights.state.rectAreaLTC2;\n      uniforms.pointLights.value = lights.state.point;\n      uniforms.pointLightShadows.value = lights.state.pointShadow;\n      uniforms.hemisphereLights.value = lights.state.hemi;\n      uniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n      uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n      uniforms.spotShadowMap.value = lights.state.spotShadowMap;\n      uniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n      uniforms.pointShadowMap.value = lights.state.pointShadowMap;\n      uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n    }\n    const progUniforms = program.getUniforms();\n    const uniformsList = WebGLUniforms.seqWithValue(progUniforms.seq, uniforms);\n    materialProperties.currentProgram = program;\n    materialProperties.uniformsList = uniformsList;\n    return program;\n  }\n  function updateCommonMaterialProperties(material, parameters2) {\n    const materialProperties = properties.get(material);\n    materialProperties.outputEncoding = parameters2.outputEncoding;\n    materialProperties.instancing = parameters2.instancing;\n    materialProperties.skinning = parameters2.skinning;\n    materialProperties.morphTargets = parameters2.morphTargets;\n    materialProperties.morphNormals = parameters2.morphNormals;\n    materialProperties.morphColors = parameters2.morphColors;\n    materialProperties.morphTargetsCount = parameters2.morphTargetsCount;\n    materialProperties.numClippingPlanes = parameters2.numClippingPlanes;\n    materialProperties.numIntersection = parameters2.numClipIntersection;\n    materialProperties.vertexAlphas = parameters2.vertexAlphas;\n    materialProperties.vertexTangents = parameters2.vertexTangents;\n    materialProperties.toneMapping = parameters2.toneMapping;\n  }\n  function setProgram(camera, scene, geometry, material, object) {\n    if (scene.isScene !== true)\n      scene = _emptyScene;\n    textures.resetTextureUnits();\n    const fog = scene.fog;\n    const environment = material.isMeshStandardMaterial ? scene.environment : null;\n    const encoding = _currentRenderTarget === null ? _this.outputEncoding : _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.encoding : LinearEncoding;\n    const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n    const vertexAlphas = material.vertexColors === true && !!geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n    const vertexTangents = !!material.normalMap && !!geometry.attributes.tangent;\n    const morphTargets = !!geometry.morphAttributes.position;\n    const morphNormals = !!geometry.morphAttributes.normal;\n    const morphColors = !!geometry.morphAttributes.color;\n    const toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;\n    const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n    const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0;\n    const materialProperties = properties.get(material);\n    const lights = currentRenderState.state.lights;\n    if (_clippingEnabled === true) {\n      if (_localClippingEnabled === true || camera !== _currentCamera) {\n        const useCache = camera === _currentCamera && material.id === _currentMaterialId;\n        clipping.setState(material, camera, useCache);\n      }\n    }\n    let needsProgramChange = false;\n    if (material.version === materialProperties.__version) {\n      if (materialProperties.needsLights && materialProperties.lightsStateVersion !== lights.state.version) {\n        needsProgramChange = true;\n      } else if (materialProperties.outputEncoding !== encoding) {\n        needsProgramChange = true;\n      } else if (object.isInstancedMesh && materialProperties.instancing === false) {\n        needsProgramChange = true;\n      } else if (!object.isInstancedMesh && materialProperties.instancing === true) {\n        needsProgramChange = true;\n      } else if (object.isSkinnedMesh && materialProperties.skinning === false) {\n        needsProgramChange = true;\n      } else if (!object.isSkinnedMesh && materialProperties.skinning === true) {\n        needsProgramChange = true;\n      } else if (materialProperties.envMap !== envMap) {\n        needsProgramChange = true;\n      } else if (material.fog === true && materialProperties.fog !== fog) {\n        needsProgramChange = true;\n      } else if (materialProperties.numClippingPlanes !== void 0 && (materialProperties.numClippingPlanes !== clipping.numPlanes || materialProperties.numIntersection !== clipping.numIntersection)) {\n        needsProgramChange = true;\n      } else if (materialProperties.vertexAlphas !== vertexAlphas) {\n        needsProgramChange = true;\n      } else if (materialProperties.vertexTangents !== vertexTangents) {\n        needsProgramChange = true;\n      } else if (materialProperties.morphTargets !== morphTargets) {\n        needsProgramChange = true;\n      } else if (materialProperties.morphNormals !== morphNormals) {\n        needsProgramChange = true;\n      } else if (materialProperties.morphColors !== morphColors) {\n        needsProgramChange = true;\n      } else if (materialProperties.toneMapping !== toneMapping) {\n        needsProgramChange = true;\n      } else if (capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount) {\n        needsProgramChange = true;\n      }\n    } else {\n      needsProgramChange = true;\n      materialProperties.__version = material.version;\n    }\n    let program = materialProperties.currentProgram;\n    if (needsProgramChange === true) {\n      program = getProgram(material, scene, object);\n    }\n    let refreshProgram = false;\n    let refreshMaterial = false;\n    let refreshLights = false;\n    const p_uniforms = program.getUniforms(), m_uniforms = materialProperties.uniforms;\n    if (state.useProgram(program.program)) {\n      refreshProgram = true;\n      refreshMaterial = true;\n      refreshLights = true;\n    }\n    if (material.id !== _currentMaterialId) {\n      _currentMaterialId = material.id;\n      refreshMaterial = true;\n    }\n    if (refreshProgram || _currentCamera !== camera) {\n      p_uniforms.setValue(_gl, \"projectionMatrix\", camera.projectionMatrix);\n      if (capabilities.logarithmicDepthBuffer) {\n        p_uniforms.setValue(\n          _gl,\n          \"logDepthBufFC\",\n          2 / (Math.log(camera.far + 1) / Math.LN2)\n        );\n      }\n      if (_currentCamera !== camera) {\n        _currentCamera = camera;\n        refreshMaterial = true;\n        refreshLights = true;\n      }\n      if (material.isShaderMaterial || material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshStandardMaterial || material.envMap) {\n        const uCamPos = p_uniforms.map.cameraPosition;\n        if (uCamPos !== void 0) {\n          uCamPos.setValue(\n            _gl,\n            _vector3.setFromMatrixPosition(camera.matrixWorld)\n          );\n        }\n      }\n      if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial) {\n        p_uniforms.setValue(_gl, \"isOrthographic\", camera.isOrthographicCamera === true);\n      }\n      if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial || material.isShadowMaterial || object.isSkinnedMesh) {\n        p_uniforms.setValue(_gl, \"viewMatrix\", camera.matrixWorldInverse);\n      }\n    }\n    if (object.isSkinnedMesh) {\n      p_uniforms.setOptional(_gl, object, \"bindMatrix\");\n      p_uniforms.setOptional(_gl, object, \"bindMatrixInverse\");\n      const skeleton = object.skeleton;\n      if (skeleton) {\n        if (capabilities.floatVertexTextures) {\n          if (skeleton.boneTexture === null)\n            skeleton.computeBoneTexture();\n          p_uniforms.setValue(_gl, \"boneTexture\", skeleton.boneTexture, textures);\n          p_uniforms.setValue(_gl, \"boneTextureSize\", skeleton.boneTextureSize);\n        } else {\n          console.warn(\"THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.\");\n        }\n      }\n    }\n    const morphAttributes = geometry.morphAttributes;\n    if (morphAttributes.position !== void 0 || morphAttributes.normal !== void 0 || morphAttributes.color !== void 0 && capabilities.isWebGL2 === true) {\n      morphtargets.update(object, geometry, material, program);\n    }\n    if (refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow) {\n      materialProperties.receiveShadow = object.receiveShadow;\n      p_uniforms.setValue(_gl, \"receiveShadow\", object.receiveShadow);\n    }\n    if (refreshMaterial) {\n      p_uniforms.setValue(_gl, \"toneMappingExposure\", _this.toneMappingExposure);\n      if (materialProperties.needsLights) {\n        markUniformsLightsNeedsUpdate(m_uniforms, refreshLights);\n      }\n      if (fog && material.fog === true) {\n        materials.refreshFogUniforms(m_uniforms, fog);\n      }\n      materials.refreshMaterialUniforms(m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget);\n      WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures);\n    }\n    if (material.isShaderMaterial && material.uniformsNeedUpdate === true) {\n      WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures);\n      material.uniformsNeedUpdate = false;\n    }\n    if (material.isSpriteMaterial) {\n      p_uniforms.setValue(_gl, \"center\", object.center);\n    }\n    p_uniforms.setValue(_gl, \"modelViewMatrix\", object.modelViewMatrix);\n    p_uniforms.setValue(_gl, \"normalMatrix\", object.normalMatrix);\n    p_uniforms.setValue(_gl, \"modelMatrix\", object.matrixWorld);\n    if (material.isShaderMaterial || material.isRawShaderMaterial) {\n      const groups = material.uniformsGroups;\n      for (let i = 0, l = groups.length; i < l; i++) {\n        if (capabilities.isWebGL2) {\n          const group = groups[i];\n          uniformsGroups.update(group, program);\n          uniformsGroups.bind(group, program);\n        } else {\n          console.warn(\"THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.\");\n        }\n      }\n    }\n    return program;\n  }\n  function markUniformsLightsNeedsUpdate(uniforms, value) {\n    uniforms.ambientLightColor.needsUpdate = value;\n    uniforms.lightProbe.needsUpdate = value;\n    uniforms.directionalLights.needsUpdate = value;\n    uniforms.directionalLightShadows.needsUpdate = value;\n    uniforms.pointLights.needsUpdate = value;\n    uniforms.pointLightShadows.needsUpdate = value;\n    uniforms.spotLights.needsUpdate = value;\n    uniforms.spotLightShadows.needsUpdate = value;\n    uniforms.rectAreaLights.needsUpdate = value;\n    uniforms.hemisphereLights.needsUpdate = value;\n  }\n  function materialNeedsLights(material) {\n    return material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial || material.isShadowMaterial || material.isShaderMaterial && material.lights === true;\n  }\n  this.getActiveCubeFace = function() {\n    return _currentActiveCubeFace;\n  };\n  this.getActiveMipmapLevel = function() {\n    return _currentActiveMipmapLevel;\n  };\n  this.getRenderTarget = function() {\n    return _currentRenderTarget;\n  };\n  this.setRenderTargetTextures = function(renderTarget, colorTexture, depthTexture) {\n    properties.get(renderTarget.texture).__webglTexture = colorTexture;\n    properties.get(renderTarget.depthTexture).__webglTexture = depthTexture;\n    const renderTargetProperties = properties.get(renderTarget);\n    renderTargetProperties.__hasExternalTextures = true;\n    if (renderTargetProperties.__hasExternalTextures) {\n      renderTargetProperties.__autoAllocateDepthBuffer = depthTexture === void 0;\n      if (!renderTargetProperties.__autoAllocateDepthBuffer) {\n        if (extensions.has(\"WEBGL_multisampled_render_to_texture\") === true) {\n          console.warn(\"THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided\");\n          renderTargetProperties.__useRenderToTexture = false;\n        }\n      }\n    }\n  };\n  this.setRenderTargetFramebuffer = function(renderTarget, defaultFramebuffer) {\n    const renderTargetProperties = properties.get(renderTarget);\n    renderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n    renderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === void 0;\n  };\n  this.setRenderTarget = function(renderTarget, activeCubeFace = 0, activeMipmapLevel = 0) {\n    _currentRenderTarget = renderTarget;\n    _currentActiveCubeFace = activeCubeFace;\n    _currentActiveMipmapLevel = activeMipmapLevel;\n    let useDefaultFramebuffer = true;\n    if (renderTarget) {\n      const renderTargetProperties = properties.get(renderTarget);\n      if (renderTargetProperties.__useDefaultFramebuffer !== void 0) {\n        state.bindFramebuffer(36160, null);\n        useDefaultFramebuffer = false;\n      } else if (renderTargetProperties.__webglFramebuffer === void 0) {\n        textures.setupRenderTarget(renderTarget);\n      } else if (renderTargetProperties.__hasExternalTextures) {\n        textures.rebindTextures(renderTarget, properties.get(renderTarget.texture).__webglTexture, properties.get(renderTarget.depthTexture).__webglTexture);\n      }\n    }\n    let framebuffer = null;\n    let isCube = false;\n    let isRenderTarget3D = false;\n    if (renderTarget) {\n      const texture = renderTarget.texture;\n      if (texture.isData3DTexture || texture.isDataArrayTexture) {\n        isRenderTarget3D = true;\n      }\n      const __webglFramebuffer = properties.get(renderTarget).__webglFramebuffer;\n      if (renderTarget.isWebGLCubeRenderTarget) {\n        framebuffer = __webglFramebuffer[activeCubeFace];\n        isCube = true;\n      } else if (capabilities.isWebGL2 && renderTarget.samples > 0 && textures.useMultisampledRTT(renderTarget) === false) {\n        framebuffer = properties.get(renderTarget).__webglMultisampledFramebuffer;\n      } else {\n        framebuffer = __webglFramebuffer;\n      }\n      _currentViewport.copy(renderTarget.viewport);\n      _currentScissor.copy(renderTarget.scissor);\n      _currentScissorTest = renderTarget.scissorTest;\n    } else {\n      _currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor();\n      _currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor();\n      _currentScissorTest = _scissorTest;\n    }\n    const framebufferBound = state.bindFramebuffer(36160, framebuffer);\n    if (framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer) {\n      state.drawBuffers(renderTarget, framebuffer);\n    }\n    state.viewport(_currentViewport);\n    state.scissor(_currentScissor);\n    state.setScissorTest(_currentScissorTest);\n    if (isCube) {\n      const textureProperties = properties.get(renderTarget.texture);\n      _gl.framebufferTexture2D(36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel);\n    } else if (isRenderTarget3D) {\n      const textureProperties = properties.get(renderTarget.texture);\n      const layer = activeCubeFace || 0;\n      _gl.framebufferTextureLayer(36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer);\n    }\n    _currentMaterialId = -1;\n  };\n  this.readRenderTargetPixels = function(renderTarget, x, y, width, height, buffer, activeCubeFaceIndex) {\n    if (!(renderTarget && renderTarget.isWebGLRenderTarget)) {\n      console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.\");\n      return;\n    }\n    let framebuffer = properties.get(renderTarget).__webglFramebuffer;\n    if (renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== void 0) {\n      framebuffer = framebuffer[activeCubeFaceIndex];\n    }\n    if (framebuffer) {\n      state.bindFramebuffer(36160, framebuffer);\n      try {\n        const texture = renderTarget.texture;\n        const textureFormat = texture.format;\n        const textureType = texture.type;\n        if (textureFormat !== RGBAFormat && utils2.convert(textureFormat) !== _gl.getParameter(35739)) {\n          console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.\");\n          return;\n        }\n        const halfFloatSupportedByExt = textureType === HalfFloatType && (extensions.has(\"EXT_color_buffer_half_float\") || capabilities.isWebGL2 && extensions.has(\"EXT_color_buffer_float\"));\n        if (textureType !== UnsignedByteType && utils2.convert(textureType) !== _gl.getParameter(35738) && !(textureType === FloatType && (capabilities.isWebGL2 || extensions.has(\"OES_texture_float\") || extensions.has(\"WEBGL_color_buffer_float\"))) && !halfFloatSupportedByExt) {\n          console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.\");\n          return;\n        }\n        if (x >= 0 && x <= renderTarget.width - width && (y >= 0 && y <= renderTarget.height - height)) {\n          _gl.readPixels(x, y, width, height, utils2.convert(textureFormat), utils2.convert(textureType), buffer);\n        }\n      } finally {\n        const framebuffer2 = _currentRenderTarget !== null ? properties.get(_currentRenderTarget).__webglFramebuffer : null;\n        state.bindFramebuffer(36160, framebuffer2);\n      }\n    }\n  };\n  this.copyFramebufferToTexture = function(position, texture, level = 0) {\n    const levelScale = Math.pow(2, -level);\n    const width = Math.floor(texture.image.width * levelScale);\n    const height = Math.floor(texture.image.height * levelScale);\n    textures.setTexture2D(texture, 0);\n    _gl.copyTexSubImage2D(3553, level, 0, 0, position.x, position.y, width, height);\n    state.unbindTexture();\n  };\n  this.copyTextureToTexture = function(position, srcTexture, dstTexture, level = 0) {\n    const width = srcTexture.image.width;\n    const height = srcTexture.image.height;\n    const glFormat = utils2.convert(dstTexture.format);\n    const glType = utils2.convert(dstTexture.type);\n    textures.setTexture2D(dstTexture, 0);\n    _gl.pixelStorei(37440, dstTexture.flipY);\n    _gl.pixelStorei(37441, dstTexture.premultiplyAlpha);\n    _gl.pixelStorei(3317, dstTexture.unpackAlignment);\n    if (srcTexture.isDataTexture) {\n      _gl.texSubImage2D(3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data);\n    } else {\n      if (srcTexture.isCompressedTexture) {\n        _gl.compressedTexSubImage2D(3553, level, position.x, position.y, srcTexture.mipmaps[0].width, srcTexture.mipmaps[0].height, glFormat, srcTexture.mipmaps[0].data);\n      } else {\n        _gl.texSubImage2D(3553, level, position.x, position.y, glFormat, glType, srcTexture.image);\n      }\n    }\n    if (level === 0 && dstTexture.generateMipmaps)\n      _gl.generateMipmap(3553);\n    state.unbindTexture();\n  };\n  this.copyTextureToTexture3D = function(sourceBox, position, srcTexture, dstTexture, level = 0) {\n    if (_this.isWebGL1Renderer) {\n      console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.\");\n      return;\n    }\n    const width = sourceBox.max.x - sourceBox.min.x + 1;\n    const height = sourceBox.max.y - sourceBox.min.y + 1;\n    const depth = sourceBox.max.z - sourceBox.min.z + 1;\n    const glFormat = utils2.convert(dstTexture.format);\n    const glType = utils2.convert(dstTexture.type);\n    let glTarget;\n    if (dstTexture.isData3DTexture) {\n      textures.setTexture3D(dstTexture, 0);\n      glTarget = 32879;\n    } else if (dstTexture.isDataArrayTexture) {\n      textures.setTexture2DArray(dstTexture, 0);\n      glTarget = 35866;\n    } else {\n      console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.\");\n      return;\n    }\n    _gl.pixelStorei(37440, dstTexture.flipY);\n    _gl.pixelStorei(37441, dstTexture.premultiplyAlpha);\n    _gl.pixelStorei(3317, dstTexture.unpackAlignment);\n    const unpackRowLen = _gl.getParameter(3314);\n    const unpackImageHeight = _gl.getParameter(32878);\n    const unpackSkipPixels = _gl.getParameter(3316);\n    const unpackSkipRows = _gl.getParameter(3315);\n    const unpackSkipImages = _gl.getParameter(32877);\n    const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[0] : srcTexture.image;\n    _gl.pixelStorei(3314, image.width);\n    _gl.pixelStorei(32878, image.height);\n    _gl.pixelStorei(3316, sourceBox.min.x);\n    _gl.pixelStorei(3315, sourceBox.min.y);\n    _gl.pixelStorei(32877, sourceBox.min.z);\n    if (srcTexture.isDataTexture || srcTexture.isData3DTexture) {\n      _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data);\n    } else {\n      if (srcTexture.isCompressedTexture) {\n        console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.\");\n        _gl.compressedTexSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data);\n      } else {\n        _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image);\n      }\n    }\n    _gl.pixelStorei(3314, unpackRowLen);\n    _gl.pixelStorei(32878, unpackImageHeight);\n    _gl.pixelStorei(3316, unpackSkipPixels);\n    _gl.pixelStorei(3315, unpackSkipRows);\n    _gl.pixelStorei(32877, unpackSkipImages);\n    if (level === 0 && dstTexture.generateMipmaps)\n      _gl.generateMipmap(glTarget);\n    state.unbindTexture();\n  };\n  this.initTexture = function(texture) {\n    if (texture.isCubeTexture) {\n      textures.setTextureCube(texture, 0);\n    } else if (texture.isData3DTexture) {\n      textures.setTexture3D(texture, 0);\n    } else if (texture.isDataArrayTexture) {\n      textures.setTexture2DArray(texture, 0);\n    } else {\n      textures.setTexture2D(texture, 0);\n    }\n    state.unbindTexture();\n  };\n  this.resetState = function() {\n    _currentActiveCubeFace = 0;\n    _currentActiveMipmapLevel = 0;\n    _currentRenderTarget = null;\n    state.reset();\n    bindingStates.reset();\n  };\n  if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n    __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", { detail: this }));\n  }\n}\nclass WebGL1Renderer extends WebGLRenderer {\n}\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\nclass FogExp2 {\n  constructor(color, density = 25e-5) {\n    this.isFogExp2 = true;\n    this.name = \"\";\n    this.color = new Color(color);\n    this.density = density;\n  }\n  clone() {\n    return new FogExp2(this.color, this.density);\n  }\n  toJSON() {\n    return {\n      type: \"FogExp2\",\n      color: this.color.getHex(),\n      density: this.density\n    };\n  }\n}\nclass Fog {\n  constructor(color, near = 1, far = 1e3) {\n    this.isFog = true;\n    this.name = \"\";\n    this.color = new Color(color);\n    this.near = near;\n    this.far = far;\n  }\n  clone() {\n    return new Fog(this.color, this.near, this.far);\n  }\n  toJSON() {\n    return {\n      type: \"Fog\",\n      color: this.color.getHex(),\n      near: this.near,\n      far: this.far\n    };\n  }\n}\nclass Scene$1 extends Object3D$1 {\n  constructor() {\n    super();\n    this.isScene = true;\n    this.type = \"Scene\";\n    this.background = null;\n    this.environment = null;\n    this.fog = null;\n    this.overrideMaterial = null;\n    this.autoUpdate = true;\n    if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n      __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", { detail: this }));\n    }\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    if (source.background !== null)\n      this.background = source.background.clone();\n    if (source.environment !== null)\n      this.environment = source.environment.clone();\n    if (source.fog !== null)\n      this.fog = source.fog.clone();\n    if (source.overrideMaterial !== null)\n      this.overrideMaterial = source.overrideMaterial.clone();\n    this.autoUpdate = source.autoUpdate;\n    this.matrixAutoUpdate = source.matrixAutoUpdate;\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    if (this.fog !== null)\n      data.object.fog = this.fog.toJSON();\n    return data;\n  }\n}\nclass InterleavedBuffer {\n  constructor(array, stride) {\n    this.isInterleavedBuffer = true;\n    this.array = array;\n    this.stride = stride;\n    this.count = array !== void 0 ? array.length / stride : 0;\n    this.usage = StaticDrawUsage;\n    this.updateRange = { offset: 0, count: -1 };\n    this.version = 0;\n    this.uuid = generateUUID();\n  }\n  onUploadCallback() {\n  }\n  set needsUpdate(value) {\n    if (value === true)\n      this.version++;\n  }\n  setUsage(value) {\n    this.usage = value;\n    return this;\n  }\n  copy(source) {\n    this.array = new source.array.constructor(source.array);\n    this.count = source.count;\n    this.stride = source.stride;\n    this.usage = source.usage;\n    return this;\n  }\n  copyAt(index1, attribute, index2) {\n    index1 *= this.stride;\n    index2 *= attribute.stride;\n    for (let i = 0, l = this.stride; i < l; i++) {\n      this.array[index1 + i] = attribute.array[index2 + i];\n    }\n    return this;\n  }\n  set(value, offset = 0) {\n    this.array.set(value, offset);\n    return this;\n  }\n  clone(data) {\n    if (data.arrayBuffers === void 0) {\n      data.arrayBuffers = {};\n    }\n    if (this.array.buffer._uuid === void 0) {\n      this.array.buffer._uuid = generateUUID();\n    }\n    if (data.arrayBuffers[this.array.buffer._uuid] === void 0) {\n      data.arrayBuffers[this.array.buffer._uuid] = this.array.slice(0).buffer;\n    }\n    const array = new this.array.constructor(data.arrayBuffers[this.array.buffer._uuid]);\n    const ib = new this.constructor(array, this.stride);\n    ib.setUsage(this.usage);\n    return ib;\n  }\n  onUpload(callback) {\n    this.onUploadCallback = callback;\n    return this;\n  }\n  toJSON(data) {\n    if (data.arrayBuffers === void 0) {\n      data.arrayBuffers = {};\n    }\n    if (this.array.buffer._uuid === void 0) {\n      this.array.buffer._uuid = generateUUID();\n    }\n    if (data.arrayBuffers[this.array.buffer._uuid] === void 0) {\n      data.arrayBuffers[this.array.buffer._uuid] = Array.from(new Uint32Array(this.array.buffer));\n    }\n    return {\n      uuid: this.uuid,\n      buffer: this.array.buffer._uuid,\n      type: this.array.constructor.name,\n      stride: this.stride\n    };\n  }\n}\nconst _vector$6 = /* @__PURE__ */ new Vector3();\nclass InterleavedBufferAttribute {\n  constructor(interleavedBuffer, itemSize, offset, normalized = false) {\n    this.isInterleavedBufferAttribute = true;\n    this.name = \"\";\n    this.data = interleavedBuffer;\n    this.itemSize = itemSize;\n    this.offset = offset;\n    this.normalized = normalized === true;\n  }\n  get count() {\n    return this.data.count;\n  }\n  get array() {\n    return this.data.array;\n  }\n  set needsUpdate(value) {\n    this.data.needsUpdate = value;\n  }\n  applyMatrix4(m) {\n    for (let i = 0, l = this.data.count; i < l; i++) {\n      _vector$6.fromBufferAttribute(this, i);\n      _vector$6.applyMatrix4(m);\n      this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n    }\n    return this;\n  }\n  applyNormalMatrix(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$6.fromBufferAttribute(this, i);\n      _vector$6.applyNormalMatrix(m);\n      this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n    }\n    return this;\n  }\n  transformDirection(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$6.fromBufferAttribute(this, i);\n      _vector$6.transformDirection(m);\n      this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n    }\n    return this;\n  }\n  setX(index, x) {\n    this.data.array[index * this.data.stride + this.offset] = x;\n    return this;\n  }\n  setY(index, y) {\n    this.data.array[index * this.data.stride + this.offset + 1] = y;\n    return this;\n  }\n  setZ(index, z) {\n    this.data.array[index * this.data.stride + this.offset + 2] = z;\n    return this;\n  }\n  setW(index, w) {\n    this.data.array[index * this.data.stride + this.offset + 3] = w;\n    return this;\n  }\n  getX(index) {\n    return this.data.array[index * this.data.stride + this.offset];\n  }\n  getY(index) {\n    return this.data.array[index * this.data.stride + this.offset + 1];\n  }\n  getZ(index) {\n    return this.data.array[index * this.data.stride + this.offset + 2];\n  }\n  getW(index) {\n    return this.data.array[index * this.data.stride + this.offset + 3];\n  }\n  setXY(index, x, y) {\n    index = index * this.data.stride + this.offset;\n    this.data.array[index + 0] = x;\n    this.data.array[index + 1] = y;\n    return this;\n  }\n  setXYZ(index, x, y, z) {\n    index = index * this.data.stride + this.offset;\n    this.data.array[index + 0] = x;\n    this.data.array[index + 1] = y;\n    this.data.array[index + 2] = z;\n    return this;\n  }\n  setXYZW(index, x, y, z, w) {\n    index = index * this.data.stride + this.offset;\n    this.data.array[index + 0] = x;\n    this.data.array[index + 1] = y;\n    this.data.array[index + 2] = z;\n    this.data.array[index + 3] = w;\n    return this;\n  }\n  clone(data) {\n    if (data === void 0) {\n      console.log(\"THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will deinterleave buffer data.\");\n      const array = [];\n      for (let i = 0; i < this.count; i++) {\n        const index = i * this.data.stride + this.offset;\n        for (let j = 0; j < this.itemSize; j++) {\n          array.push(this.data.array[index + j]);\n        }\n      }\n      return new BufferAttribute(new this.array.constructor(array), this.itemSize, this.normalized);\n    } else {\n      if (data.interleavedBuffers === void 0) {\n        data.interleavedBuffers = {};\n      }\n      if (data.interleavedBuffers[this.data.uuid] === void 0) {\n        data.interleavedBuffers[this.data.uuid] = this.data.clone(data);\n      }\n      return new InterleavedBufferAttribute(data.interleavedBuffers[this.data.uuid], this.itemSize, this.offset, this.normalized);\n    }\n  }\n  toJSON(data) {\n    if (data === void 0) {\n      console.log(\"THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will deinterleave buffer data.\");\n      const array = [];\n      for (let i = 0; i < this.count; i++) {\n        const index = i * this.data.stride + this.offset;\n        for (let j = 0; j < this.itemSize; j++) {\n          array.push(this.data.array[index + j]);\n        }\n      }\n      return {\n        itemSize: this.itemSize,\n        type: this.array.constructor.name,\n        array,\n        normalized: this.normalized\n      };\n    } else {\n      if (data.interleavedBuffers === void 0) {\n        data.interleavedBuffers = {};\n      }\n      if (data.interleavedBuffers[this.data.uuid] === void 0) {\n        data.interleavedBuffers[this.data.uuid] = this.data.toJSON(data);\n      }\n      return {\n        isInterleavedBufferAttribute: true,\n        itemSize: this.itemSize,\n        data: this.data.uuid,\n        offset: this.offset,\n        normalized: this.normalized\n      };\n    }\n  }\n}\nclass SpriteMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isSpriteMaterial = true;\n    this.type = \"SpriteMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.alphaMap = null;\n    this.rotation = 0;\n    this.sizeAttenuation = true;\n    this.transparent = true;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.alphaMap = source.alphaMap;\n    this.rotation = source.rotation;\n    this.sizeAttenuation = source.sizeAttenuation;\n    this.fog = source.fog;\n    return this;\n  }\n}\nlet _geometry$2;\nconst _intersectPoint = /* @__PURE__ */ new Vector3();\nconst _worldScale = /* @__PURE__ */ new Vector3();\nconst _mvPosition = /* @__PURE__ */ new Vector3();\nconst _alignedPosition = /* @__PURE__ */ new Vector2();\nconst _rotatedPosition = /* @__PURE__ */ new Vector2();\nconst _viewWorldMatrix = /* @__PURE__ */ new Matrix4();\nconst _vA = /* @__PURE__ */ new Vector3();\nconst _vB = /* @__PURE__ */ new Vector3();\nconst _vC = /* @__PURE__ */ new Vector3();\nconst _uvA = /* @__PURE__ */ new Vector2();\nconst _uvB = /* @__PURE__ */ new Vector2();\nconst _uvC = /* @__PURE__ */ new Vector2();\nclass Sprite extends Object3D$1 {\n  constructor(material) {\n    super();\n    this.isSprite = true;\n    this.type = \"Sprite\";\n    if (_geometry$2 === void 0) {\n      _geometry$2 = new BufferGeometry();\n      const float32Array = new Float32Array([\n        -0.5,\n        -0.5,\n        0,\n        0,\n        0,\n        0.5,\n        -0.5,\n        0,\n        1,\n        0,\n        0.5,\n        0.5,\n        0,\n        1,\n        1,\n        -0.5,\n        0.5,\n        0,\n        0,\n        1\n      ]);\n      const interleavedBuffer = new InterleavedBuffer(float32Array, 5);\n      _geometry$2.setIndex([0, 1, 2, 0, 2, 3]);\n      _geometry$2.setAttribute(\"position\", new InterleavedBufferAttribute(interleavedBuffer, 3, 0, false));\n      _geometry$2.setAttribute(\"uv\", new InterleavedBufferAttribute(interleavedBuffer, 2, 3, false));\n    }\n    this.geometry = _geometry$2;\n    this.material = material !== void 0 ? material : new SpriteMaterial();\n    this.center = new Vector2(0.5, 0.5);\n  }\n  raycast(raycaster, intersects2) {\n    if (raycaster.camera === null) {\n      console.error('THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.');\n    }\n    _worldScale.setFromMatrixScale(this.matrixWorld);\n    _viewWorldMatrix.copy(raycaster.camera.matrixWorld);\n    this.modelViewMatrix.multiplyMatrices(raycaster.camera.matrixWorldInverse, this.matrixWorld);\n    _mvPosition.setFromMatrixPosition(this.modelViewMatrix);\n    if (raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false) {\n      _worldScale.multiplyScalar(-_mvPosition.z);\n    }\n    const rotation = this.material.rotation;\n    let sin, cos;\n    if (rotation !== 0) {\n      cos = Math.cos(rotation);\n      sin = Math.sin(rotation);\n    }\n    const center = this.center;\n    transformVertex(_vA.set(-0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n    transformVertex(_vB.set(0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n    transformVertex(_vC.set(0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n    _uvA.set(0, 0);\n    _uvB.set(1, 0);\n    _uvC.set(1, 1);\n    let intersect = raycaster.ray.intersectTriangle(_vA, _vB, _vC, false, _intersectPoint);\n    if (intersect === null) {\n      transformVertex(_vB.set(-0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n      _uvB.set(0, 1);\n      intersect = raycaster.ray.intersectTriangle(_vA, _vC, _vB, false, _intersectPoint);\n      if (intersect === null) {\n        return;\n      }\n    }\n    const distance = raycaster.ray.origin.distanceTo(_intersectPoint);\n    if (distance < raycaster.near || distance > raycaster.far)\n      return;\n    intersects2.push({\n      distance,\n      point: _intersectPoint.clone(),\n      uv: Triangle.getUV(_intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2()),\n      face: null,\n      object: this\n    });\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    if (source.center !== void 0)\n      this.center.copy(source.center);\n    this.material = source.material;\n    return this;\n  }\n}\nfunction transformVertex(vertexPosition, mvPosition, center, scale, sin, cos) {\n  _alignedPosition.subVectors(vertexPosition, center).addScalar(0.5).multiply(scale);\n  if (sin !== void 0) {\n    _rotatedPosition.x = cos * _alignedPosition.x - sin * _alignedPosition.y;\n    _rotatedPosition.y = sin * _alignedPosition.x + cos * _alignedPosition.y;\n  } else {\n    _rotatedPosition.copy(_alignedPosition);\n  }\n  vertexPosition.copy(mvPosition);\n  vertexPosition.x += _rotatedPosition.x;\n  vertexPosition.y += _rotatedPosition.y;\n  vertexPosition.applyMatrix4(_viewWorldMatrix);\n}\nconst _v1$2 = /* @__PURE__ */ new Vector3();\nconst _v2$1 = /* @__PURE__ */ new Vector3();\nclass LOD extends Object3D$1 {\n  constructor() {\n    super();\n    this._currentLevel = 0;\n    this.type = \"LOD\";\n    Object.defineProperties(this, {\n      levels: {\n        enumerable: true,\n        value: []\n      },\n      isLOD: {\n        value: true\n      }\n    });\n    this.autoUpdate = true;\n  }\n  copy(source) {\n    super.copy(source, false);\n    const levels = source.levels;\n    for (let i = 0, l = levels.length; i < l; i++) {\n      const level = levels[i];\n      this.addLevel(level.object.clone(), level.distance);\n    }\n    this.autoUpdate = source.autoUpdate;\n    return this;\n  }\n  addLevel(object, distance = 0) {\n    distance = Math.abs(distance);\n    const levels = this.levels;\n    let l;\n    for (l = 0; l < levels.length; l++) {\n      if (distance < levels[l].distance) {\n        break;\n      }\n    }\n    levels.splice(l, 0, { distance, object });\n    this.add(object);\n    return this;\n  }\n  getCurrentLevel() {\n    return this._currentLevel;\n  }\n  getObjectForDistance(distance) {\n    const levels = this.levels;\n    if (levels.length > 0) {\n      let i, l;\n      for (i = 1, l = levels.length; i < l; i++) {\n        if (distance < levels[i].distance) {\n          break;\n        }\n      }\n      return levels[i - 1].object;\n    }\n    return null;\n  }\n  raycast(raycaster, intersects2) {\n    const levels = this.levels;\n    if (levels.length > 0) {\n      _v1$2.setFromMatrixPosition(this.matrixWorld);\n      const distance = raycaster.ray.origin.distanceTo(_v1$2);\n      this.getObjectForDistance(distance).raycast(raycaster, intersects2);\n    }\n  }\n  update(camera) {\n    const levels = this.levels;\n    if (levels.length > 1) {\n      _v1$2.setFromMatrixPosition(camera.matrixWorld);\n      _v2$1.setFromMatrixPosition(this.matrixWorld);\n      const distance = _v1$2.distanceTo(_v2$1) / camera.zoom;\n      levels[0].object.visible = true;\n      let i, l;\n      for (i = 1, l = levels.length; i < l; i++) {\n        if (distance >= levels[i].distance) {\n          levels[i - 1].object.visible = false;\n          levels[i].object.visible = true;\n        } else {\n          break;\n        }\n      }\n      this._currentLevel = i - 1;\n      for (; i < l; i++) {\n        levels[i].object.visible = false;\n      }\n    }\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    if (this.autoUpdate === false)\n      data.object.autoUpdate = false;\n    data.object.levels = [];\n    const levels = this.levels;\n    for (let i = 0, l = levels.length; i < l; i++) {\n      const level = levels[i];\n      data.object.levels.push({\n        object: level.object.uuid,\n        distance: level.distance\n      });\n    }\n    return data;\n  }\n}\nconst _basePosition = /* @__PURE__ */ new Vector3();\nconst _skinIndex = /* @__PURE__ */ new Vector4();\nconst _skinWeight = /* @__PURE__ */ new Vector4();\nconst _vector$5 = /* @__PURE__ */ new Vector3();\nconst _matrix = /* @__PURE__ */ new Matrix4();\nclass SkinnedMesh extends Mesh {\n  constructor(geometry, material) {\n    super(geometry, material);\n    this.isSkinnedMesh = true;\n    this.type = \"SkinnedMesh\";\n    this.bindMode = \"attached\";\n    this.bindMatrix = new Matrix4();\n    this.bindMatrixInverse = new Matrix4();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.bindMode = source.bindMode;\n    this.bindMatrix.copy(source.bindMatrix);\n    this.bindMatrixInverse.copy(source.bindMatrixInverse);\n    this.skeleton = source.skeleton;\n    return this;\n  }\n  bind(skeleton, bindMatrix) {\n    this.skeleton = skeleton;\n    if (bindMatrix === void 0) {\n      this.updateMatrixWorld(true);\n      this.skeleton.calculateInverses();\n      bindMatrix = this.matrixWorld;\n    }\n    this.bindMatrix.copy(bindMatrix);\n    this.bindMatrixInverse.copy(bindMatrix).invert();\n  }\n  pose() {\n    this.skeleton.pose();\n  }\n  normalizeSkinWeights() {\n    const vector = new Vector4();\n    const skinWeight = this.geometry.attributes.skinWeight;\n    for (let i = 0, l = skinWeight.count; i < l; i++) {\n      vector.fromBufferAttribute(skinWeight, i);\n      const scale = 1 / vector.manhattanLength();\n      if (scale !== Infinity) {\n        vector.multiplyScalar(scale);\n      } else {\n        vector.set(1, 0, 0, 0);\n      }\n      skinWeight.setXYZW(i, vector.x, vector.y, vector.z, vector.w);\n    }\n  }\n  updateMatrixWorld(force) {\n    super.updateMatrixWorld(force);\n    if (this.bindMode === \"attached\") {\n      this.bindMatrixInverse.copy(this.matrixWorld).invert();\n    } else if (this.bindMode === \"detached\") {\n      this.bindMatrixInverse.copy(this.bindMatrix).invert();\n    } else {\n      console.warn(\"THREE.SkinnedMesh: Unrecognized bindMode: \" + this.bindMode);\n    }\n  }\n  boneTransform(index, target) {\n    const skeleton = this.skeleton;\n    const geometry = this.geometry;\n    _skinIndex.fromBufferAttribute(geometry.attributes.skinIndex, index);\n    _skinWeight.fromBufferAttribute(geometry.attributes.skinWeight, index);\n    _basePosition.copy(target).applyMatrix4(this.bindMatrix);\n    target.set(0, 0, 0);\n    for (let i = 0; i < 4; i++) {\n      const weight = _skinWeight.getComponent(i);\n      if (weight !== 0) {\n        const boneIndex = _skinIndex.getComponent(i);\n        _matrix.multiplyMatrices(skeleton.bones[boneIndex].matrixWorld, skeleton.boneInverses[boneIndex]);\n        target.addScaledVector(_vector$5.copy(_basePosition).applyMatrix4(_matrix), weight);\n      }\n    }\n    return target.applyMatrix4(this.bindMatrixInverse);\n  }\n}\nclass Bone extends Object3D$1 {\n  constructor() {\n    super();\n    this.isBone = true;\n    this.type = \"Bone\";\n  }\n}\nclass DataTexture extends Texture {\n  constructor(data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding) {\n    super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n    this.isDataTexture = true;\n    this.image = { data, width, height };\n    this.generateMipmaps = false;\n    this.flipY = false;\n    this.unpackAlignment = 1;\n  }\n}\nconst _offsetMatrix = /* @__PURE__ */ new Matrix4();\nconst _identityMatrix = /* @__PURE__ */ new Matrix4();\nclass Skeleton {\n  constructor(bones = [], boneInverses = []) {\n    this.uuid = generateUUID();\n    this.bones = bones.slice(0);\n    this.boneInverses = boneInverses;\n    this.boneMatrices = null;\n    this.boneTexture = null;\n    this.boneTextureSize = 0;\n    this.frame = -1;\n    this.init();\n  }\n  init() {\n    const bones = this.bones;\n    const boneInverses = this.boneInverses;\n    this.boneMatrices = new Float32Array(bones.length * 16);\n    if (boneInverses.length === 0) {\n      this.calculateInverses();\n    } else {\n      if (bones.length !== boneInverses.length) {\n        console.warn(\"THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.\");\n        this.boneInverses = [];\n        for (let i = 0, il = this.bones.length; i < il; i++) {\n          this.boneInverses.push(new Matrix4());\n        }\n      }\n    }\n  }\n  calculateInverses() {\n    this.boneInverses.length = 0;\n    for (let i = 0, il = this.bones.length; i < il; i++) {\n      const inverse = new Matrix4();\n      if (this.bones[i]) {\n        inverse.copy(this.bones[i].matrixWorld).invert();\n      }\n      this.boneInverses.push(inverse);\n    }\n  }\n  pose() {\n    for (let i = 0, il = this.bones.length; i < il; i++) {\n      const bone = this.bones[i];\n      if (bone) {\n        bone.matrixWorld.copy(this.boneInverses[i]).invert();\n      }\n    }\n    for (let i = 0, il = this.bones.length; i < il; i++) {\n      const bone = this.bones[i];\n      if (bone) {\n        if (bone.parent && bone.parent.isBone) {\n          bone.matrix.copy(bone.parent.matrixWorld).invert();\n          bone.matrix.multiply(bone.matrixWorld);\n        } else {\n          bone.matrix.copy(bone.matrixWorld);\n        }\n        bone.matrix.decompose(bone.position, bone.quaternion, bone.scale);\n      }\n    }\n  }\n  update() {\n    const bones = this.bones;\n    const boneInverses = this.boneInverses;\n    const boneMatrices = this.boneMatrices;\n    const boneTexture = this.boneTexture;\n    for (let i = 0, il = bones.length; i < il; i++) {\n      const matrix = bones[i] ? bones[i].matrixWorld : _identityMatrix;\n      _offsetMatrix.multiplyMatrices(matrix, boneInverses[i]);\n      _offsetMatrix.toArray(boneMatrices, i * 16);\n    }\n    if (boneTexture !== null) {\n      boneTexture.needsUpdate = true;\n    }\n  }\n  clone() {\n    return new Skeleton(this.bones, this.boneInverses);\n  }\n  computeBoneTexture() {\n    let size = Math.sqrt(this.bones.length * 4);\n    size = ceilPowerOfTwo(size);\n    size = Math.max(size, 4);\n    const boneMatrices = new Float32Array(size * size * 4);\n    boneMatrices.set(this.boneMatrices);\n    const boneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, FloatType);\n    boneTexture.needsUpdate = true;\n    this.boneMatrices = boneMatrices;\n    this.boneTexture = boneTexture;\n    this.boneTextureSize = size;\n    return this;\n  }\n  getBoneByName(name) {\n    for (let i = 0, il = this.bones.length; i < il; i++) {\n      const bone = this.bones[i];\n      if (bone.name === name) {\n        return bone;\n      }\n    }\n    return void 0;\n  }\n  dispose() {\n    if (this.boneTexture !== null) {\n      this.boneTexture.dispose();\n      this.boneTexture = null;\n    }\n  }\n  fromJSON(json, bones) {\n    this.uuid = json.uuid;\n    for (let i = 0, l = json.bones.length; i < l; i++) {\n      const uuid = json.bones[i];\n      let bone = bones[uuid];\n      if (bone === void 0) {\n        console.warn(\"THREE.Skeleton: No bone found with UUID:\", uuid);\n        bone = new Bone();\n      }\n      this.bones.push(bone);\n      this.boneInverses.push(new Matrix4().fromArray(json.boneInverses[i]));\n    }\n    this.init();\n    return this;\n  }\n  toJSON() {\n    const data = {\n      metadata: {\n        version: 4.5,\n        type: \"Skeleton\",\n        generator: \"Skeleton.toJSON\"\n      },\n      bones: [],\n      boneInverses: []\n    };\n    data.uuid = this.uuid;\n    const bones = this.bones;\n    const boneInverses = this.boneInverses;\n    for (let i = 0, l = bones.length; i < l; i++) {\n      const bone = bones[i];\n      data.bones.push(bone.uuid);\n      const boneInverse = boneInverses[i];\n      data.boneInverses.push(boneInverse.toArray());\n    }\n    return data;\n  }\n}\nclass InstancedBufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized, meshPerAttribute = 1) {\n    if (typeof normalized === \"number\") {\n      meshPerAttribute = normalized;\n      normalized = false;\n      console.error(\"THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.\");\n    }\n    super(array, itemSize, normalized);\n    this.isInstancedBufferAttribute = true;\n    this.meshPerAttribute = meshPerAttribute;\n  }\n  copy(source) {\n    super.copy(source);\n    this.meshPerAttribute = source.meshPerAttribute;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.meshPerAttribute = this.meshPerAttribute;\n    data.isInstancedBufferAttribute = true;\n    return data;\n  }\n}\nconst _instanceLocalMatrix = /* @__PURE__ */ new Matrix4();\nconst _instanceWorldMatrix = /* @__PURE__ */ new Matrix4();\nconst _instanceIntersects = [];\nconst _mesh = /* @__PURE__ */ new Mesh();\nclass InstancedMesh$1 extends Mesh {\n  constructor(geometry, material, count) {\n    super(geometry, material);\n    this.isInstancedMesh = true;\n    this.instanceMatrix = new InstancedBufferAttribute(new Float32Array(count * 16), 16);\n    this.instanceColor = null;\n    this.count = count;\n    this.frustumCulled = false;\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.instanceMatrix.copy(source.instanceMatrix);\n    if (source.instanceColor !== null)\n      this.instanceColor = source.instanceColor.clone();\n    this.count = source.count;\n    return this;\n  }\n  getColorAt(index, color) {\n    color.fromArray(this.instanceColor.array, index * 3);\n  }\n  getMatrixAt(index, matrix) {\n    matrix.fromArray(this.instanceMatrix.array, index * 16);\n  }\n  raycast(raycaster, intersects2) {\n    const matrixWorld = this.matrixWorld;\n    const raycastTimes = this.count;\n    _mesh.geometry = this.geometry;\n    _mesh.material = this.material;\n    if (_mesh.material === void 0)\n      return;\n    for (let instanceId = 0; instanceId < raycastTimes; instanceId++) {\n      this.getMatrixAt(instanceId, _instanceLocalMatrix);\n      _instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n      _mesh.matrixWorld = _instanceWorldMatrix;\n      _mesh.raycast(raycaster, _instanceIntersects);\n      for (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n        const intersect = _instanceIntersects[i];\n        intersect.instanceId = instanceId;\n        intersect.object = this;\n        intersects2.push(intersect);\n      }\n      _instanceIntersects.length = 0;\n    }\n  }\n  setColorAt(index, color) {\n    if (this.instanceColor === null) {\n      this.instanceColor = new InstancedBufferAttribute(new Float32Array(this.instanceMatrix.count * 3), 3);\n    }\n    color.toArray(this.instanceColor.array, index * 3);\n  }\n  setMatrixAt(index, matrix) {\n    matrix.toArray(this.instanceMatrix.array, index * 16);\n  }\n  updateMorphTargets() {\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n}\nclass LineBasicMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isLineBasicMaterial = true;\n    this.type = \"LineBasicMaterial\";\n    this.color = new Color(16777215);\n    this.linewidth = 1;\n    this.linecap = \"round\";\n    this.linejoin = \"round\";\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.linewidth = source.linewidth;\n    this.linecap = source.linecap;\n    this.linejoin = source.linejoin;\n    this.fog = source.fog;\n    return this;\n  }\n}\nconst _start$1 = /* @__PURE__ */ new Vector3();\nconst _end$1 = /* @__PURE__ */ new Vector3();\nconst _inverseMatrix$1 = /* @__PURE__ */ new Matrix4();\nconst _ray$1 = /* @__PURE__ */ new Ray();\nconst _sphere$1 = /* @__PURE__ */ new Sphere();\nclass Line extends Object3D$1 {\n  constructor(geometry = new BufferGeometry(), material = new LineBasicMaterial()) {\n    super();\n    this.isLine = true;\n    this.type = \"Line\";\n    this.geometry = geometry;\n    this.material = material;\n    this.updateMorphTargets();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.material = source.material;\n    this.geometry = source.geometry;\n    return this;\n  }\n  computeLineDistances() {\n    const geometry = this.geometry;\n    if (geometry.index === null) {\n      const positionAttribute = geometry.attributes.position;\n      const lineDistances = [0];\n      for (let i = 1, l = positionAttribute.count; i < l; i++) {\n        _start$1.fromBufferAttribute(positionAttribute, i - 1);\n        _end$1.fromBufferAttribute(positionAttribute, i);\n        lineDistances[i] = lineDistances[i - 1];\n        lineDistances[i] += _start$1.distanceTo(_end$1);\n      }\n      geometry.setAttribute(\"lineDistance\", new Float32BufferAttribute(lineDistances, 1));\n    } else {\n      console.warn(\"THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");\n    }\n    return this;\n  }\n  raycast(raycaster, intersects2) {\n    const geometry = this.geometry;\n    const matrixWorld = this.matrixWorld;\n    const threshold = raycaster.params.Line.threshold;\n    const drawRange = geometry.drawRange;\n    if (geometry.boundingSphere === null)\n      geometry.computeBoundingSphere();\n    _sphere$1.copy(geometry.boundingSphere);\n    _sphere$1.applyMatrix4(matrixWorld);\n    _sphere$1.radius += threshold;\n    if (raycaster.ray.intersectsSphere(_sphere$1) === false)\n      return;\n    _inverseMatrix$1.copy(matrixWorld).invert();\n    _ray$1.copy(raycaster.ray).applyMatrix4(_inverseMatrix$1);\n    const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n    const localThresholdSq = localThreshold * localThreshold;\n    const vStart = new Vector3();\n    const vEnd = new Vector3();\n    const interSegment = new Vector3();\n    const interRay = new Vector3();\n    const step = this.isLineSegments ? 2 : 1;\n    const index = geometry.index;\n    const attributes = geometry.attributes;\n    const positionAttribute = attributes.position;\n    if (index !== null) {\n      const start = Math.max(0, drawRange.start);\n      const end = Math.min(index.count, drawRange.start + drawRange.count);\n      for (let i = start, l = end - 1; i < l; i += step) {\n        const a = index.getX(i);\n        const b = index.getX(i + 1);\n        vStart.fromBufferAttribute(positionAttribute, a);\n        vEnd.fromBufferAttribute(positionAttribute, b);\n        const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n        if (distSq > localThresholdSq)\n          continue;\n        interRay.applyMatrix4(this.matrixWorld);\n        const distance = raycaster.ray.origin.distanceTo(interRay);\n        if (distance < raycaster.near || distance > raycaster.far)\n          continue;\n        intersects2.push({\n          distance,\n          point: interSegment.clone().applyMatrix4(this.matrixWorld),\n          index: i,\n          face: null,\n          faceIndex: null,\n          object: this\n        });\n      }\n    } else {\n      const start = Math.max(0, drawRange.start);\n      const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n      for (let i = start, l = end - 1; i < l; i += step) {\n        vStart.fromBufferAttribute(positionAttribute, i);\n        vEnd.fromBufferAttribute(positionAttribute, i + 1);\n        const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n        if (distSq > localThresholdSq)\n          continue;\n        interRay.applyMatrix4(this.matrixWorld);\n        const distance = raycaster.ray.origin.distanceTo(interRay);\n        if (distance < raycaster.near || distance > raycaster.far)\n          continue;\n        intersects2.push({\n          distance,\n          point: interSegment.clone().applyMatrix4(this.matrixWorld),\n          index: i,\n          face: null,\n          faceIndex: null,\n          object: this\n        });\n      }\n    }\n  }\n  updateMorphTargets() {\n    const geometry = this.geometry;\n    const morphAttributes = geometry.morphAttributes;\n    const keys = Object.keys(morphAttributes);\n    if (keys.length > 0) {\n      const morphAttribute = morphAttributes[keys[0]];\n      if (morphAttribute !== void 0) {\n        this.morphTargetInfluences = [];\n        this.morphTargetDictionary = {};\n        for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n          const name = morphAttribute[m].name || String(m);\n          this.morphTargetInfluences.push(0);\n          this.morphTargetDictionary[name] = m;\n        }\n      }\n    }\n  }\n}\nconst _start = /* @__PURE__ */ new Vector3();\nconst _end = /* @__PURE__ */ new Vector3();\nclass LineSegments extends Line {\n  constructor(geometry, material) {\n    super(geometry, material);\n    this.isLineSegments = true;\n    this.type = \"LineSegments\";\n  }\n  computeLineDistances() {\n    const geometry = this.geometry;\n    if (geometry.index === null) {\n      const positionAttribute = geometry.attributes.position;\n      const lineDistances = [];\n      for (let i = 0, l = positionAttribute.count; i < l; i += 2) {\n        _start.fromBufferAttribute(positionAttribute, i);\n        _end.fromBufferAttribute(positionAttribute, i + 1);\n        lineDistances[i] = i === 0 ? 0 : lineDistances[i - 1];\n        lineDistances[i + 1] = lineDistances[i] + _start.distanceTo(_end);\n      }\n      geometry.setAttribute(\"lineDistance\", new Float32BufferAttribute(lineDistances, 1));\n    } else {\n      console.warn(\"THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");\n    }\n    return this;\n  }\n}\nclass LineLoop extends Line {\n  constructor(geometry, material) {\n    super(geometry, material);\n    this.isLineLoop = true;\n    this.type = \"LineLoop\";\n  }\n}\nclass PointsMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isPointsMaterial = true;\n    this.type = \"PointsMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.alphaMap = null;\n    this.size = 1;\n    this.sizeAttenuation = true;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.alphaMap = source.alphaMap;\n    this.size = source.size;\n    this.sizeAttenuation = source.sizeAttenuation;\n    this.fog = source.fog;\n    return this;\n  }\n}\nconst _inverseMatrix = /* @__PURE__ */ new Matrix4();\nconst _ray = /* @__PURE__ */ new Ray();\nconst _sphere = /* @__PURE__ */ new Sphere();\nconst _position$2 = /* @__PURE__ */ new Vector3();\nclass Points extends Object3D$1 {\n  constructor(geometry = new BufferGeometry(), material = new PointsMaterial()) {\n    super();\n    this.isPoints = true;\n    this.type = \"Points\";\n    this.geometry = geometry;\n    this.material = material;\n    this.updateMorphTargets();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.material = source.material;\n    this.geometry = source.geometry;\n    return this;\n  }\n  raycast(raycaster, intersects2) {\n    const geometry = this.geometry;\n    const matrixWorld = this.matrixWorld;\n    const threshold = raycaster.params.Points.threshold;\n    const drawRange = geometry.drawRange;\n    if (geometry.boundingSphere === null)\n      geometry.computeBoundingSphere();\n    _sphere.copy(geometry.boundingSphere);\n    _sphere.applyMatrix4(matrixWorld);\n    _sphere.radius += threshold;\n    if (raycaster.ray.intersectsSphere(_sphere) === false)\n      return;\n    _inverseMatrix.copy(matrixWorld).invert();\n    _ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n    const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n    const localThresholdSq = localThreshold * localThreshold;\n    const index = geometry.index;\n    const attributes = geometry.attributes;\n    const positionAttribute = attributes.position;\n    if (index !== null) {\n      const start = Math.max(0, drawRange.start);\n      const end = Math.min(index.count, drawRange.start + drawRange.count);\n      for (let i = start, il = end; i < il; i++) {\n        const a = index.getX(i);\n        _position$2.fromBufferAttribute(positionAttribute, a);\n        testPoint(_position$2, a, localThresholdSq, matrixWorld, raycaster, intersects2, this);\n      }\n    } else {\n      const start = Math.max(0, drawRange.start);\n      const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n      for (let i = start, l = end; i < l; i++) {\n        _position$2.fromBufferAttribute(positionAttribute, i);\n        testPoint(_position$2, i, localThresholdSq, matrixWorld, raycaster, intersects2, this);\n      }\n    }\n  }\n  updateMorphTargets() {\n    const geometry = this.geometry;\n    const morphAttributes = geometry.morphAttributes;\n    const keys = Object.keys(morphAttributes);\n    if (keys.length > 0) {\n      const morphAttribute = morphAttributes[keys[0]];\n      if (morphAttribute !== void 0) {\n        this.morphTargetInfluences = [];\n        this.morphTargetDictionary = {};\n        for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n          const name = morphAttribute[m].name || String(m);\n          this.morphTargetInfluences.push(0);\n          this.morphTargetDictionary[name] = m;\n        }\n      }\n    }\n  }\n}\nfunction testPoint(point, index, localThresholdSq, matrixWorld, raycaster, intersects2, object) {\n  const rayPointDistanceSq = _ray.distanceSqToPoint(point);\n  if (rayPointDistanceSq < localThresholdSq) {\n    const intersectPoint = new Vector3();\n    _ray.closestPointToPoint(point, intersectPoint);\n    intersectPoint.applyMatrix4(matrixWorld);\n    const distance = raycaster.ray.origin.distanceTo(intersectPoint);\n    if (distance < raycaster.near || distance > raycaster.far)\n      return;\n    intersects2.push({\n      distance,\n      distanceToRay: Math.sqrt(rayPointDistanceSq),\n      point: intersectPoint,\n      index,\n      face: null,\n      object\n    });\n  }\n}\nclass VideoTexture extends Texture {\n  constructor(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n    super(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n    this.isVideoTexture = true;\n    this.minFilter = minFilter !== void 0 ? minFilter : LinearFilter;\n    this.magFilter = magFilter !== void 0 ? magFilter : LinearFilter;\n    this.generateMipmaps = false;\n    const scope = this;\n    function updateVideo() {\n      scope.needsUpdate = true;\n      video.requestVideoFrameCallback(updateVideo);\n    }\n    if (\"requestVideoFrameCallback\" in video) {\n      video.requestVideoFrameCallback(updateVideo);\n    }\n  }\n  clone() {\n    return new this.constructor(this.image).copy(this);\n  }\n  update() {\n    const video = this.image;\n    const hasVideoFrameCallback = \"requestVideoFrameCallback\" in video;\n    if (hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA) {\n      this.needsUpdate = true;\n    }\n  }\n}\nclass FramebufferTexture extends Texture {\n  constructor(width, height, format) {\n    super({ width, height });\n    this.isFramebufferTexture = true;\n    this.format = format;\n    this.magFilter = NearestFilter;\n    this.minFilter = NearestFilter;\n    this.generateMipmaps = false;\n    this.needsUpdate = true;\n  }\n}\nclass CompressedTexture extends Texture {\n  constructor(mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding) {\n    super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n    this.isCompressedTexture = true;\n    this.image = { width, height };\n    this.mipmaps = mipmaps;\n    this.flipY = false;\n    this.generateMipmaps = false;\n  }\n}\nclass CanvasTexture extends Texture {\n  constructor(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n    super(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n    this.isCanvasTexture = true;\n    this.needsUpdate = true;\n  }\n}\nclass Curve {\n  constructor() {\n    this.type = \"Curve\";\n    this.arcLengthDivisions = 200;\n  }\n  getPoint() {\n    console.warn(\"THREE.Curve: .getPoint() not implemented.\");\n    return null;\n  }\n  getPointAt(u, optionalTarget) {\n    const t = this.getUtoTmapping(u);\n    return this.getPoint(t, optionalTarget);\n  }\n  getPoints(divisions = 5) {\n    const points = [];\n    for (let d = 0; d <= divisions; d++) {\n      points.push(this.getPoint(d / divisions));\n    }\n    return points;\n  }\n  getSpacedPoints(divisions = 5) {\n    const points = [];\n    for (let d = 0; d <= divisions; d++) {\n      points.push(this.getPointAt(d / divisions));\n    }\n    return points;\n  }\n  getLength() {\n    const lengths = this.getLengths();\n    return lengths[lengths.length - 1];\n  }\n  getLengths(divisions = this.arcLengthDivisions) {\n    if (this.cacheArcLengths && this.cacheArcLengths.length === divisions + 1 && !this.needsUpdate) {\n      return this.cacheArcLengths;\n    }\n    this.needsUpdate = false;\n    const cache = [];\n    let current, last = this.getPoint(0);\n    let sum = 0;\n    cache.push(0);\n    for (let p = 1; p <= divisions; p++) {\n      current = this.getPoint(p / divisions);\n      sum += current.distanceTo(last);\n      cache.push(sum);\n      last = current;\n    }\n    this.cacheArcLengths = cache;\n    return cache;\n  }\n  updateArcLengths() {\n    this.needsUpdate = true;\n    this.getLengths();\n  }\n  getUtoTmapping(u, distance) {\n    const arcLengths = this.getLengths();\n    let i = 0;\n    const il = arcLengths.length;\n    let targetArcLength;\n    if (distance) {\n      targetArcLength = distance;\n    } else {\n      targetArcLength = u * arcLengths[il - 1];\n    }\n    let low = 0, high = il - 1, comparison;\n    while (low <= high) {\n      i = Math.floor(low + (high - low) / 2);\n      comparison = arcLengths[i] - targetArcLength;\n      if (comparison < 0) {\n        low = i + 1;\n      } else if (comparison > 0) {\n        high = i - 1;\n      } else {\n        high = i;\n        break;\n      }\n    }\n    i = high;\n    if (arcLengths[i] === targetArcLength) {\n      return i / (il - 1);\n    }\n    const lengthBefore = arcLengths[i];\n    const lengthAfter = arcLengths[i + 1];\n    const segmentLength = lengthAfter - lengthBefore;\n    const segmentFraction = (targetArcLength - lengthBefore) / segmentLength;\n    const t = (i + segmentFraction) / (il - 1);\n    return t;\n  }\n  getTangent(t, optionalTarget) {\n    const delta = 1e-4;\n    let t1 = t - delta;\n    let t2 = t + delta;\n    if (t1 < 0)\n      t1 = 0;\n    if (t2 > 1)\n      t2 = 1;\n    const pt1 = this.getPoint(t1);\n    const pt2 = this.getPoint(t2);\n    const tangent = optionalTarget || (pt1.isVector2 ? new Vector2() : new Vector3());\n    tangent.copy(pt2).sub(pt1).normalize();\n    return tangent;\n  }\n  getTangentAt(u, optionalTarget) {\n    const t = this.getUtoTmapping(u);\n    return this.getTangent(t, optionalTarget);\n  }\n  computeFrenetFrames(segments, closed) {\n    const normal = new Vector3();\n    const tangents = [];\n    const normals = [];\n    const binormals = [];\n    const vec = new Vector3();\n    const mat = new Matrix4();\n    for (let i = 0; i <= segments; i++) {\n      const u = i / segments;\n      tangents[i] = this.getTangentAt(u, new Vector3());\n    }\n    normals[0] = new Vector3();\n    binormals[0] = new Vector3();\n    let min = Number.MAX_VALUE;\n    const tx = Math.abs(tangents[0].x);\n    const ty = Math.abs(tangents[0].y);\n    const tz = Math.abs(tangents[0].z);\n    if (tx <= min) {\n      min = tx;\n      normal.set(1, 0, 0);\n    }\n    if (ty <= min) {\n      min = ty;\n      normal.set(0, 1, 0);\n    }\n    if (tz <= min) {\n      normal.set(0, 0, 1);\n    }\n    vec.crossVectors(tangents[0], normal).normalize();\n    normals[0].crossVectors(tangents[0], vec);\n    binormals[0].crossVectors(tangents[0], normals[0]);\n    for (let i = 1; i <= segments; i++) {\n      normals[i] = normals[i - 1].clone();\n      binormals[i] = binormals[i - 1].clone();\n      vec.crossVectors(tangents[i - 1], tangents[i]);\n      if (vec.length() > Number.EPSILON) {\n        vec.normalize();\n        const theta = Math.acos(clamp$1(tangents[i - 1].dot(tangents[i]), -1, 1));\n        normals[i].applyMatrix4(mat.makeRotationAxis(vec, theta));\n      }\n      binormals[i].crossVectors(tangents[i], normals[i]);\n    }\n    if (closed === true) {\n      let theta = Math.acos(clamp$1(normals[0].dot(normals[segments]), -1, 1));\n      theta /= segments;\n      if (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) {\n        theta = -theta;\n      }\n      for (let i = 1; i <= segments; i++) {\n        normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i], theta * i));\n        binormals[i].crossVectors(tangents[i], normals[i]);\n      }\n    }\n    return {\n      tangents,\n      normals,\n      binormals\n    };\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.arcLengthDivisions = source.arcLengthDivisions;\n    return this;\n  }\n  toJSON() {\n    const data = {\n      metadata: {\n        version: 4.5,\n        type: \"Curve\",\n        generator: \"Curve.toJSON\"\n      }\n    };\n    data.arcLengthDivisions = this.arcLengthDivisions;\n    data.type = this.type;\n    return data;\n  }\n  fromJSON(json) {\n    this.arcLengthDivisions = json.arcLengthDivisions;\n    return this;\n  }\n}\nclass EllipseCurve extends Curve {\n  constructor(aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0) {\n    super();\n    this.isEllipseCurve = true;\n    this.type = \"EllipseCurve\";\n    this.aX = aX;\n    this.aY = aY;\n    this.xRadius = xRadius;\n    this.yRadius = yRadius;\n    this.aStartAngle = aStartAngle;\n    this.aEndAngle = aEndAngle;\n    this.aClockwise = aClockwise;\n    this.aRotation = aRotation;\n  }\n  getPoint(t, optionalTarget) {\n    const point = optionalTarget || new Vector2();\n    const twoPi = Math.PI * 2;\n    let deltaAngle = this.aEndAngle - this.aStartAngle;\n    const samePoints = Math.abs(deltaAngle) < Number.EPSILON;\n    while (deltaAngle < 0)\n      deltaAngle += twoPi;\n    while (deltaAngle > twoPi)\n      deltaAngle -= twoPi;\n    if (deltaAngle < Number.EPSILON) {\n      if (samePoints) {\n        deltaAngle = 0;\n      } else {\n        deltaAngle = twoPi;\n      }\n    }\n    if (this.aClockwise === true && !samePoints) {\n      if (deltaAngle === twoPi) {\n        deltaAngle = -twoPi;\n      } else {\n        deltaAngle = deltaAngle - twoPi;\n      }\n    }\n    const angle = this.aStartAngle + t * deltaAngle;\n    let x = this.aX + this.xRadius * Math.cos(angle);\n    let y = this.aY + this.yRadius * Math.sin(angle);\n    if (this.aRotation !== 0) {\n      const cos = Math.cos(this.aRotation);\n      const sin = Math.sin(this.aRotation);\n      const tx = x - this.aX;\n      const ty = y - this.aY;\n      x = tx * cos - ty * sin + this.aX;\n      y = tx * sin + ty * cos + this.aY;\n    }\n    return point.set(x, y);\n  }\n  copy(source) {\n    super.copy(source);\n    this.aX = source.aX;\n    this.aY = source.aY;\n    this.xRadius = source.xRadius;\n    this.yRadius = source.yRadius;\n    this.aStartAngle = source.aStartAngle;\n    this.aEndAngle = source.aEndAngle;\n    this.aClockwise = source.aClockwise;\n    this.aRotation = source.aRotation;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.aX = this.aX;\n    data.aY = this.aY;\n    data.xRadius = this.xRadius;\n    data.yRadius = this.yRadius;\n    data.aStartAngle = this.aStartAngle;\n    data.aEndAngle = this.aEndAngle;\n    data.aClockwise = this.aClockwise;\n    data.aRotation = this.aRotation;\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.aX = json.aX;\n    this.aY = json.aY;\n    this.xRadius = json.xRadius;\n    this.yRadius = json.yRadius;\n    this.aStartAngle = json.aStartAngle;\n    this.aEndAngle = json.aEndAngle;\n    this.aClockwise = json.aClockwise;\n    this.aRotation = json.aRotation;\n    return this;\n  }\n}\nclass ArcCurve extends EllipseCurve {\n  constructor(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n    super(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n    this.isArcCurve = true;\n    this.type = \"ArcCurve\";\n  }\n}\nfunction CubicPoly() {\n  let c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n  function init(x0, x1, t0, t1) {\n    c0 = x0;\n    c1 = t0;\n    c2 = -3 * x0 + 3 * x1 - 2 * t0 - t1;\n    c3 = 2 * x0 - 2 * x1 + t0 + t1;\n  }\n  return {\n    initCatmullRom: function(x0, x1, x2, x3, tension) {\n      init(x1, x2, tension * (x2 - x0), tension * (x3 - x1));\n    },\n    initNonuniformCatmullRom: function(x0, x1, x2, x3, dt0, dt1, dt2) {\n      let t1 = (x1 - x0) / dt0 - (x2 - x0) / (dt0 + dt1) + (x2 - x1) / dt1;\n      let t2 = (x2 - x1) / dt1 - (x3 - x1) / (dt1 + dt2) + (x3 - x2) / dt2;\n      t1 *= dt1;\n      t2 *= dt1;\n      init(x1, x2, t1, t2);\n    },\n    calc: function(t) {\n      const t2 = t * t;\n      const t3 = t2 * t;\n      return c0 + c1 * t + c2 * t2 + c3 * t3;\n    }\n  };\n}\nconst tmp = /* @__PURE__ */ new Vector3();\nconst px = /* @__PURE__ */ new CubicPoly();\nconst py = /* @__PURE__ */ new CubicPoly();\nconst pz = /* @__PURE__ */ new CubicPoly();\nclass CatmullRomCurve3 extends Curve {\n  constructor(points = [], closed = false, curveType = \"centripetal\", tension = 0.5) {\n    super();\n    this.isCatmullRomCurve3 = true;\n    this.type = \"CatmullRomCurve3\";\n    this.points = points;\n    this.closed = closed;\n    this.curveType = curveType;\n    this.tension = tension;\n  }\n  getPoint(t, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    const points = this.points;\n    const l = points.length;\n    const p = (l - (this.closed ? 0 : 1)) * t;\n    let intPoint = Math.floor(p);\n    let weight = p - intPoint;\n    if (this.closed) {\n      intPoint += intPoint > 0 ? 0 : (Math.floor(Math.abs(intPoint) / l) + 1) * l;\n    } else if (weight === 0 && intPoint === l - 1) {\n      intPoint = l - 2;\n      weight = 1;\n    }\n    let p0, p3;\n    if (this.closed || intPoint > 0) {\n      p0 = points[(intPoint - 1) % l];\n    } else {\n      tmp.subVectors(points[0], points[1]).add(points[0]);\n      p0 = tmp;\n    }\n    const p1 = points[intPoint % l];\n    const p2 = points[(intPoint + 1) % l];\n    if (this.closed || intPoint + 2 < l) {\n      p3 = points[(intPoint + 2) % l];\n    } else {\n      tmp.subVectors(points[l - 1], points[l - 2]).add(points[l - 1]);\n      p3 = tmp;\n    }\n    if (this.curveType === \"centripetal\" || this.curveType === \"chordal\") {\n      const pow = this.curveType === \"chordal\" ? 0.5 : 0.25;\n      let dt0 = Math.pow(p0.distanceToSquared(p1), pow);\n      let dt1 = Math.pow(p1.distanceToSquared(p2), pow);\n      let dt2 = Math.pow(p2.distanceToSquared(p3), pow);\n      if (dt1 < 1e-4)\n        dt1 = 1;\n      if (dt0 < 1e-4)\n        dt0 = dt1;\n      if (dt2 < 1e-4)\n        dt2 = dt1;\n      px.initNonuniformCatmullRom(p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2);\n      py.initNonuniformCatmullRom(p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2);\n      pz.initNonuniformCatmullRom(p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2);\n    } else if (this.curveType === \"catmullrom\") {\n      px.initCatmullRom(p0.x, p1.x, p2.x, p3.x, this.tension);\n      py.initCatmullRom(p0.y, p1.y, p2.y, p3.y, this.tension);\n      pz.initCatmullRom(p0.z, p1.z, p2.z, p3.z, this.tension);\n    }\n    point.set(\n      px.calc(weight),\n      py.calc(weight),\n      pz.calc(weight)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.points = [];\n    for (let i = 0, l = source.points.length; i < l; i++) {\n      const point = source.points[i];\n      this.points.push(point.clone());\n    }\n    this.closed = source.closed;\n    this.curveType = source.curveType;\n    this.tension = source.tension;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.points = [];\n    for (let i = 0, l = this.points.length; i < l; i++) {\n      const point = this.points[i];\n      data.points.push(point.toArray());\n    }\n    data.closed = this.closed;\n    data.curveType = this.curveType;\n    data.tension = this.tension;\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.points = [];\n    for (let i = 0, l = json.points.length; i < l; i++) {\n      const point = json.points[i];\n      this.points.push(new Vector3().fromArray(point));\n    }\n    this.closed = json.closed;\n    this.curveType = json.curveType;\n    this.tension = json.tension;\n    return this;\n  }\n}\nfunction CatmullRom(t, p0, p1, p2, p3) {\n  const v0 = (p2 - p0) * 0.5;\n  const v1 = (p3 - p1) * 0.5;\n  const t2 = t * t;\n  const t3 = t * t2;\n  return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\nfunction QuadraticBezierP0(t, p) {\n  const k = 1 - t;\n  return k * k * p;\n}\nfunction QuadraticBezierP1(t, p) {\n  return 2 * (1 - t) * t * p;\n}\nfunction QuadraticBezierP2(t, p) {\n  return t * t * p;\n}\nfunction QuadraticBezier(t, p0, p1, p2) {\n  return QuadraticBezierP0(t, p0) + QuadraticBezierP1(t, p1) + QuadraticBezierP2(t, p2);\n}\nfunction CubicBezierP0(t, p) {\n  const k = 1 - t;\n  return k * k * k * p;\n}\nfunction CubicBezierP1(t, p) {\n  const k = 1 - t;\n  return 3 * k * k * t * p;\n}\nfunction CubicBezierP2(t, p) {\n  return 3 * (1 - t) * t * t * p;\n}\nfunction CubicBezierP3(t, p) {\n  return t * t * t * p;\n}\nfunction CubicBezier(t, p0, p1, p2, p3) {\n  return CubicBezierP0(t, p0) + CubicBezierP1(t, p1) + CubicBezierP2(t, p2) + CubicBezierP3(t, p3);\n}\nclass CubicBezierCurve extends Curve {\n  constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2()) {\n    super();\n    this.isCubicBezierCurve = true;\n    this.type = \"CubicBezierCurve\";\n    this.v0 = v0;\n    this.v1 = v1;\n    this.v2 = v2;\n    this.v3 = v3;\n  }\n  getPoint(t, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n    point.set(\n      CubicBezier(t, v0.x, v1.x, v2.x, v3.x),\n      CubicBezier(t, v0.y, v1.y, v2.y, v3.y)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v0.copy(source.v0);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    this.v3.copy(source.v3);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v0 = this.v0.toArray();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    data.v3 = this.v3.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v0.fromArray(json.v0);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    this.v3.fromArray(json.v3);\n    return this;\n  }\n}\nclass CubicBezierCurve3 extends Curve {\n  constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3()) {\n    super();\n    this.isCubicBezierCurve3 = true;\n    this.type = \"CubicBezierCurve3\";\n    this.v0 = v0;\n    this.v1 = v1;\n    this.v2 = v2;\n    this.v3 = v3;\n  }\n  getPoint(t, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n    point.set(\n      CubicBezier(t, v0.x, v1.x, v2.x, v3.x),\n      CubicBezier(t, v0.y, v1.y, v2.y, v3.y),\n      CubicBezier(t, v0.z, v1.z, v2.z, v3.z)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v0.copy(source.v0);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    this.v3.copy(source.v3);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v0 = this.v0.toArray();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    data.v3 = this.v3.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v0.fromArray(json.v0);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    this.v3.fromArray(json.v3);\n    return this;\n  }\n}\nclass LineCurve extends Curve {\n  constructor(v1 = new Vector2(), v2 = new Vector2()) {\n    super();\n    this.isLineCurve = true;\n    this.type = \"LineCurve\";\n    this.v1 = v1;\n    this.v2 = v2;\n  }\n  getPoint(t, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    if (t === 1) {\n      point.copy(this.v2);\n    } else {\n      point.copy(this.v2).sub(this.v1);\n      point.multiplyScalar(t).add(this.v1);\n    }\n    return point;\n  }\n  getPointAt(u, optionalTarget) {\n    return this.getPoint(u, optionalTarget);\n  }\n  getTangent(t, optionalTarget) {\n    const tangent = optionalTarget || new Vector2();\n    tangent.copy(this.v2).sub(this.v1).normalize();\n    return tangent;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    return this;\n  }\n}\nclass LineCurve3 extends Curve {\n  constructor(v1 = new Vector3(), v2 = new Vector3()) {\n    super();\n    this.isLineCurve3 = true;\n    this.type = \"LineCurve3\";\n    this.v1 = v1;\n    this.v2 = v2;\n  }\n  getPoint(t, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    if (t === 1) {\n      point.copy(this.v2);\n    } else {\n      point.copy(this.v2).sub(this.v1);\n      point.multiplyScalar(t).add(this.v1);\n    }\n    return point;\n  }\n  getPointAt(u, optionalTarget) {\n    return this.getPoint(u, optionalTarget);\n  }\n  copy(source) {\n    super.copy(source);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    return this;\n  }\n}\nclass QuadraticBezierCurve extends Curve {\n  constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2()) {\n    super();\n    this.isQuadraticBezierCurve = true;\n    this.type = \"QuadraticBezierCurve\";\n    this.v0 = v0;\n    this.v1 = v1;\n    this.v2 = v2;\n  }\n  getPoint(t, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n    point.set(\n      QuadraticBezier(t, v0.x, v1.x, v2.x),\n      QuadraticBezier(t, v0.y, v1.y, v2.y)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v0.copy(source.v0);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v0 = this.v0.toArray();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v0.fromArray(json.v0);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    return this;\n  }\n}\nclass QuadraticBezierCurve3 extends Curve {\n  constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3()) {\n    super();\n    this.isQuadraticBezierCurve3 = true;\n    this.type = \"QuadraticBezierCurve3\";\n    this.v0 = v0;\n    this.v1 = v1;\n    this.v2 = v2;\n  }\n  getPoint(t, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n    point.set(\n      QuadraticBezier(t, v0.x, v1.x, v2.x),\n      QuadraticBezier(t, v0.y, v1.y, v2.y),\n      QuadraticBezier(t, v0.z, v1.z, v2.z)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v0.copy(source.v0);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v0 = this.v0.toArray();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v0.fromArray(json.v0);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    return this;\n  }\n}\nclass SplineCurve extends Curve {\n  constructor(points = []) {\n    super();\n    this.isSplineCurve = true;\n    this.type = \"SplineCurve\";\n    this.points = points;\n  }\n  getPoint(t, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    const points = this.points;\n    const p = (points.length - 1) * t;\n    const intPoint = Math.floor(p);\n    const weight = p - intPoint;\n    const p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n    const p1 = points[intPoint];\n    const p2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n    const p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n    point.set(\n      CatmullRom(weight, p0.x, p1.x, p2.x, p3.x),\n      CatmullRom(weight, p0.y, p1.y, p2.y, p3.y)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.points = [];\n    for (let i = 0, l = source.points.length; i < l; i++) {\n      const point = source.points[i];\n      this.points.push(point.clone());\n    }\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.points = [];\n    for (let i = 0, l = this.points.length; i < l; i++) {\n      const point = this.points[i];\n      data.points.push(point.toArray());\n    }\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.points = [];\n    for (let i = 0, l = json.points.length; i < l; i++) {\n      const point = json.points[i];\n      this.points.push(new Vector2().fromArray(point));\n    }\n    return this;\n  }\n}\nvar Curves = /* @__PURE__ */ Object.freeze({\n  __proto__: null,\n  ArcCurve,\n  CatmullRomCurve3,\n  CubicBezierCurve,\n  CubicBezierCurve3,\n  EllipseCurve,\n  LineCurve,\n  LineCurve3,\n  QuadraticBezierCurve,\n  QuadraticBezierCurve3,\n  SplineCurve\n});\nclass CurvePath extends Curve {\n  constructor() {\n    super();\n    this.type = \"CurvePath\";\n    this.curves = [];\n    this.autoClose = false;\n  }\n  add(curve) {\n    this.curves.push(curve);\n  }\n  closePath() {\n    const startPoint = this.curves[0].getPoint(0);\n    const endPoint = this.curves[this.curves.length - 1].getPoint(1);\n    if (!startPoint.equals(endPoint)) {\n      this.curves.push(new LineCurve(endPoint, startPoint));\n    }\n  }\n  getPoint(t, optionalTarget) {\n    const d = t * this.getLength();\n    const curveLengths = this.getCurveLengths();\n    let i = 0;\n    while (i < curveLengths.length) {\n      if (curveLengths[i] >= d) {\n        const diff = curveLengths[i] - d;\n        const curve = this.curves[i];\n        const segmentLength = curve.getLength();\n        const u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n        return curve.getPointAt(u, optionalTarget);\n      }\n      i++;\n    }\n    return null;\n  }\n  getLength() {\n    const lens = this.getCurveLengths();\n    return lens[lens.length - 1];\n  }\n  updateArcLengths() {\n    this.needsUpdate = true;\n    this.cacheLengths = null;\n    this.getCurveLengths();\n  }\n  getCurveLengths() {\n    if (this.cacheLengths && this.cacheLengths.length === this.curves.length) {\n      return this.cacheLengths;\n    }\n    const lengths = [];\n    let sums = 0;\n    for (let i = 0, l = this.curves.length; i < l; i++) {\n      sums += this.curves[i].getLength();\n      lengths.push(sums);\n    }\n    this.cacheLengths = lengths;\n    return lengths;\n  }\n  getSpacedPoints(divisions = 40) {\n    const points = [];\n    for (let i = 0; i <= divisions; i++) {\n      points.push(this.getPoint(i / divisions));\n    }\n    if (this.autoClose) {\n      points.push(points[0]);\n    }\n    return points;\n  }\n  getPoints(divisions = 12) {\n    const points = [];\n    let last;\n    for (let i = 0, curves = this.curves; i < curves.length; i++) {\n      const curve = curves[i];\n      const resolution = curve.isEllipseCurve ? divisions * 2 : curve.isLineCurve || curve.isLineCurve3 ? 1 : curve.isSplineCurve ? divisions * curve.points.length : divisions;\n      const pts = curve.getPoints(resolution);\n      for (let j = 0; j < pts.length; j++) {\n        const point = pts[j];\n        if (last && last.equals(point))\n          continue;\n        points.push(point);\n        last = point;\n      }\n    }\n    if (this.autoClose && points.length > 1 && !points[points.length - 1].equals(points[0])) {\n      points.push(points[0]);\n    }\n    return points;\n  }\n  copy(source) {\n    super.copy(source);\n    this.curves = [];\n    for (let i = 0, l = source.curves.length; i < l; i++) {\n      const curve = source.curves[i];\n      this.curves.push(curve.clone());\n    }\n    this.autoClose = source.autoClose;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.autoClose = this.autoClose;\n    data.curves = [];\n    for (let i = 0, l = this.curves.length; i < l; i++) {\n      const curve = this.curves[i];\n      data.curves.push(curve.toJSON());\n    }\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.autoClose = json.autoClose;\n    this.curves = [];\n    for (let i = 0, l = json.curves.length; i < l; i++) {\n      const curve = json.curves[i];\n      this.curves.push(new Curves[curve.type]().fromJSON(curve));\n    }\n    return this;\n  }\n}\nclass Path extends CurvePath {\n  constructor(points) {\n    super();\n    this.type = \"Path\";\n    this.currentPoint = new Vector2();\n    if (points) {\n      this.setFromPoints(points);\n    }\n  }\n  setFromPoints(points) {\n    this.moveTo(points[0].x, points[0].y);\n    for (let i = 1, l = points.length; i < l; i++) {\n      this.lineTo(points[i].x, points[i].y);\n    }\n    return this;\n  }\n  moveTo(x, y) {\n    this.currentPoint.set(x, y);\n    return this;\n  }\n  lineTo(x, y) {\n    const curve = new LineCurve(this.currentPoint.clone(), new Vector2(x, y));\n    this.curves.push(curve);\n    this.currentPoint.set(x, y);\n    return this;\n  }\n  quadraticCurveTo(aCPx, aCPy, aX, aY) {\n    const curve = new QuadraticBezierCurve(\n      this.currentPoint.clone(),\n      new Vector2(aCPx, aCPy),\n      new Vector2(aX, aY)\n    );\n    this.curves.push(curve);\n    this.currentPoint.set(aX, aY);\n    return this;\n  }\n  bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n    const curve = new CubicBezierCurve(\n      this.currentPoint.clone(),\n      new Vector2(aCP1x, aCP1y),\n      new Vector2(aCP2x, aCP2y),\n      new Vector2(aX, aY)\n    );\n    this.curves.push(curve);\n    this.currentPoint.set(aX, aY);\n    return this;\n  }\n  splineThru(pts) {\n    const npts = [this.currentPoint.clone()].concat(pts);\n    const curve = new SplineCurve(npts);\n    this.curves.push(curve);\n    this.currentPoint.copy(pts[pts.length - 1]);\n    return this;\n  }\n  arc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n    const x0 = this.currentPoint.x;\n    const y0 = this.currentPoint.y;\n    this.absarc(\n      aX + x0,\n      aY + y0,\n      aRadius,\n      aStartAngle,\n      aEndAngle,\n      aClockwise\n    );\n    return this;\n  }\n  absarc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n    this.absellipse(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n    return this;\n  }\n  ellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n    const x0 = this.currentPoint.x;\n    const y0 = this.currentPoint.y;\n    this.absellipse(aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n    return this;\n  }\n  absellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n    const curve = new EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n    if (this.curves.length > 0) {\n      const firstPoint = curve.getPoint(0);\n      if (!firstPoint.equals(this.currentPoint)) {\n        this.lineTo(firstPoint.x, firstPoint.y);\n      }\n    }\n    this.curves.push(curve);\n    const lastPoint = curve.getPoint(1);\n    this.currentPoint.copy(lastPoint);\n    return this;\n  }\n  copy(source) {\n    super.copy(source);\n    this.currentPoint.copy(source.currentPoint);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.currentPoint = this.currentPoint.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.currentPoint.fromArray(json.currentPoint);\n    return this;\n  }\n}\nclass LatheGeometry extends BufferGeometry {\n  constructor(points = [new Vector2(0, -0.5), new Vector2(0.5, 0), new Vector2(0, 0.5)], segments = 12, phiStart = 0, phiLength = Math.PI * 2) {\n    super();\n    this.type = \"LatheGeometry\";\n    this.parameters = {\n      points,\n      segments,\n      phiStart,\n      phiLength\n    };\n    segments = Math.floor(segments);\n    phiLength = clamp$1(phiLength, 0, Math.PI * 2);\n    const indices = [];\n    const vertices = [];\n    const uvs = [];\n    const initNormals = [];\n    const normals = [];\n    const inverseSegments = 1 / segments;\n    const vertex2 = new Vector3();\n    const uv = new Vector2();\n    const normal = new Vector3();\n    const curNormal = new Vector3();\n    const prevNormal = new Vector3();\n    let dx = 0;\n    let dy = 0;\n    for (let j = 0; j <= points.length - 1; j++) {\n      switch (j) {\n        case 0:\n          dx = points[j + 1].x - points[j].x;\n          dy = points[j + 1].y - points[j].y;\n          normal.x = dy * 1;\n          normal.y = -dx;\n          normal.z = dy * 0;\n          prevNormal.copy(normal);\n          normal.normalize();\n          initNormals.push(normal.x, normal.y, normal.z);\n          break;\n        case points.length - 1:\n          initNormals.push(prevNormal.x, prevNormal.y, prevNormal.z);\n          break;\n        default:\n          dx = points[j + 1].x - points[j].x;\n          dy = points[j + 1].y - points[j].y;\n          normal.x = dy * 1;\n          normal.y = -dx;\n          normal.z = dy * 0;\n          curNormal.copy(normal);\n          normal.x += prevNormal.x;\n          normal.y += prevNormal.y;\n          normal.z += prevNormal.z;\n          normal.normalize();\n          initNormals.push(normal.x, normal.y, normal.z);\n          prevNormal.copy(curNormal);\n      }\n    }\n    for (let i = 0; i <= segments; i++) {\n      const phi = phiStart + i * inverseSegments * phiLength;\n      const sin = Math.sin(phi);\n      const cos = Math.cos(phi);\n      for (let j = 0; j <= points.length - 1; j++) {\n        vertex2.x = points[j].x * sin;\n        vertex2.y = points[j].y;\n        vertex2.z = points[j].x * cos;\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        uv.x = i / segments;\n        uv.y = j / (points.length - 1);\n        uvs.push(uv.x, uv.y);\n        const x = initNormals[3 * j + 0] * sin;\n        const y = initNormals[3 * j + 1];\n        const z = initNormals[3 * j + 0] * cos;\n        normals.push(x, y, z);\n      }\n    }\n    for (let i = 0; i < segments; i++) {\n      for (let j = 0; j < points.length - 1; j++) {\n        const base = j + i * points.length;\n        const a = base;\n        const b = base + points.length;\n        const c = base + points.length + 1;\n        const d = base + 1;\n        indices.push(a, b, d);\n        indices.push(c, d, b);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n  }\n  static fromJSON(data) {\n    return new LatheGeometry(data.points, data.segments, data.phiStart, data.phiLength);\n  }\n}\nclass CapsuleGeometry extends LatheGeometry {\n  constructor(radius = 1, length = 1, capSegments = 4, radialSegments = 8) {\n    const path = new Path();\n    path.absarc(0, -length / 2, radius, Math.PI * 1.5, 0);\n    path.absarc(0, length / 2, radius, 0, Math.PI * 0.5);\n    super(path.getPoints(capSegments), radialSegments);\n    this.type = \"CapsuleGeometry\";\n    this.parameters = {\n      radius,\n      height: length,\n      capSegments,\n      radialSegments\n    };\n  }\n  static fromJSON(data) {\n    return new CapsuleGeometry(data.radius, data.length, data.capSegments, data.radialSegments);\n  }\n}\nclass CircleGeometry extends BufferGeometry {\n  constructor(radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2) {\n    super();\n    this.type = \"CircleGeometry\";\n    this.parameters = {\n      radius,\n      segments,\n      thetaStart,\n      thetaLength\n    };\n    segments = Math.max(3, segments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    const vertex2 = new Vector3();\n    const uv = new Vector2();\n    vertices.push(0, 0, 0);\n    normals.push(0, 0, 1);\n    uvs.push(0.5, 0.5);\n    for (let s = 0, i = 3; s <= segments; s++, i += 3) {\n      const segment = thetaStart + s / segments * thetaLength;\n      vertex2.x = radius * Math.cos(segment);\n      vertex2.y = radius * Math.sin(segment);\n      vertices.push(vertex2.x, vertex2.y, vertex2.z);\n      normals.push(0, 0, 1);\n      uv.x = (vertices[i] / radius + 1) / 2;\n      uv.y = (vertices[i + 1] / radius + 1) / 2;\n      uvs.push(uv.x, uv.y);\n    }\n    for (let i = 1; i <= segments; i++) {\n      indices.push(i, i + 1, 0);\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  static fromJSON(data) {\n    return new CircleGeometry(data.radius, data.segments, data.thetaStart, data.thetaLength);\n  }\n}\nclass CylinderGeometry extends BufferGeometry {\n  constructor(radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n    super();\n    this.type = \"CylinderGeometry\";\n    this.parameters = {\n      radiusTop,\n      radiusBottom,\n      height,\n      radialSegments,\n      heightSegments,\n      openEnded,\n      thetaStart,\n      thetaLength\n    };\n    const scope = this;\n    radialSegments = Math.floor(radialSegments);\n    heightSegments = Math.floor(heightSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    let index = 0;\n    const indexArray = [];\n    const halfHeight = height / 2;\n    let groupStart = 0;\n    generateTorso();\n    if (openEnded === false) {\n      if (radiusTop > 0)\n        generateCap(true);\n      if (radiusBottom > 0)\n        generateCap(false);\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function generateTorso() {\n      const normal = new Vector3();\n      const vertex2 = new Vector3();\n      let groupCount = 0;\n      const slope = (radiusBottom - radiusTop) / height;\n      for (let y = 0; y <= heightSegments; y++) {\n        const indexRow = [];\n        const v = y / heightSegments;\n        const radius = v * (radiusBottom - radiusTop) + radiusTop;\n        for (let x = 0; x <= radialSegments; x++) {\n          const u = x / radialSegments;\n          const theta = u * thetaLength + thetaStart;\n          const sinTheta = Math.sin(theta);\n          const cosTheta = Math.cos(theta);\n          vertex2.x = radius * sinTheta;\n          vertex2.y = -v * height + halfHeight;\n          vertex2.z = radius * cosTheta;\n          vertices.push(vertex2.x, vertex2.y, vertex2.z);\n          normal.set(sinTheta, slope, cosTheta).normalize();\n          normals.push(normal.x, normal.y, normal.z);\n          uvs.push(u, 1 - v);\n          indexRow.push(index++);\n        }\n        indexArray.push(indexRow);\n      }\n      for (let x = 0; x < radialSegments; x++) {\n        for (let y = 0; y < heightSegments; y++) {\n          const a = indexArray[y][x];\n          const b = indexArray[y + 1][x];\n          const c = indexArray[y + 1][x + 1];\n          const d = indexArray[y][x + 1];\n          indices.push(a, b, d);\n          indices.push(b, c, d);\n          groupCount += 6;\n        }\n      }\n      scope.addGroup(groupStart, groupCount, 0);\n      groupStart += groupCount;\n    }\n    function generateCap(top) {\n      const centerIndexStart = index;\n      const uv = new Vector2();\n      const vertex2 = new Vector3();\n      let groupCount = 0;\n      const radius = top === true ? radiusTop : radiusBottom;\n      const sign2 = top === true ? 1 : -1;\n      for (let x = 1; x <= radialSegments; x++) {\n        vertices.push(0, halfHeight * sign2, 0);\n        normals.push(0, sign2, 0);\n        uvs.push(0.5, 0.5);\n        index++;\n      }\n      const centerIndexEnd = index;\n      for (let x = 0; x <= radialSegments; x++) {\n        const u = x / radialSegments;\n        const theta = u * thetaLength + thetaStart;\n        const cosTheta = Math.cos(theta);\n        const sinTheta = Math.sin(theta);\n        vertex2.x = radius * sinTheta;\n        vertex2.y = halfHeight * sign2;\n        vertex2.z = radius * cosTheta;\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        normals.push(0, sign2, 0);\n        uv.x = cosTheta * 0.5 + 0.5;\n        uv.y = sinTheta * 0.5 * sign2 + 0.5;\n        uvs.push(uv.x, uv.y);\n        index++;\n      }\n      for (let x = 0; x < radialSegments; x++) {\n        const c = centerIndexStart + x;\n        const i = centerIndexEnd + x;\n        if (top === true) {\n          indices.push(i, i + 1, c);\n        } else {\n          indices.push(i + 1, i, c);\n        }\n        groupCount += 3;\n      }\n      scope.addGroup(groupStart, groupCount, top === true ? 1 : 2);\n      groupStart += groupCount;\n    }\n  }\n  static fromJSON(data) {\n    return new CylinderGeometry(data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n  }\n}\nclass ConeGeometry extends CylinderGeometry {\n  constructor(radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n    super(0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength);\n    this.type = \"ConeGeometry\";\n    this.parameters = {\n      radius,\n      height,\n      radialSegments,\n      heightSegments,\n      openEnded,\n      thetaStart,\n      thetaLength\n    };\n  }\n  static fromJSON(data) {\n    return new ConeGeometry(data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n  }\n}\nclass PolyhedronGeometry extends BufferGeometry {\n  constructor(vertices = [], indices = [], radius = 1, detail = 0) {\n    super();\n    this.type = \"PolyhedronGeometry\";\n    this.parameters = {\n      vertices,\n      indices,\n      radius,\n      detail\n    };\n    const vertexBuffer = [];\n    const uvBuffer = [];\n    subdivide(detail);\n    applyRadius(radius);\n    generateUVs();\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertexBuffer, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(vertexBuffer.slice(), 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvBuffer, 2));\n    if (detail === 0) {\n      this.computeVertexNormals();\n    } else {\n      this.normalizeNormals();\n    }\n    function subdivide(detail2) {\n      const a = new Vector3();\n      const b = new Vector3();\n      const c = new Vector3();\n      for (let i = 0; i < indices.length; i += 3) {\n        getVertexByIndex(indices[i + 0], a);\n        getVertexByIndex(indices[i + 1], b);\n        getVertexByIndex(indices[i + 2], c);\n        subdivideFace(a, b, c, detail2);\n      }\n    }\n    function subdivideFace(a, b, c, detail2) {\n      const cols = detail2 + 1;\n      const v = [];\n      for (let i = 0; i <= cols; i++) {\n        v[i] = [];\n        const aj = a.clone().lerp(c, i / cols);\n        const bj = b.clone().lerp(c, i / cols);\n        const rows = cols - i;\n        for (let j = 0; j <= rows; j++) {\n          if (j === 0 && i === cols) {\n            v[i][j] = aj;\n          } else {\n            v[i][j] = aj.clone().lerp(bj, j / rows);\n          }\n        }\n      }\n      for (let i = 0; i < cols; i++) {\n        for (let j = 0; j < 2 * (cols - i) - 1; j++) {\n          const k = Math.floor(j / 2);\n          if (j % 2 === 0) {\n            pushVertex(v[i][k + 1]);\n            pushVertex(v[i + 1][k]);\n            pushVertex(v[i][k]);\n          } else {\n            pushVertex(v[i][k + 1]);\n            pushVertex(v[i + 1][k + 1]);\n            pushVertex(v[i + 1][k]);\n          }\n        }\n      }\n    }\n    function applyRadius(radius2) {\n      const vertex2 = new Vector3();\n      for (let i = 0; i < vertexBuffer.length; i += 3) {\n        vertex2.x = vertexBuffer[i + 0];\n        vertex2.y = vertexBuffer[i + 1];\n        vertex2.z = vertexBuffer[i + 2];\n        vertex2.normalize().multiplyScalar(radius2);\n        vertexBuffer[i + 0] = vertex2.x;\n        vertexBuffer[i + 1] = vertex2.y;\n        vertexBuffer[i + 2] = vertex2.z;\n      }\n    }\n    function generateUVs() {\n      const vertex2 = new Vector3();\n      for (let i = 0; i < vertexBuffer.length; i += 3) {\n        vertex2.x = vertexBuffer[i + 0];\n        vertex2.y = vertexBuffer[i + 1];\n        vertex2.z = vertexBuffer[i + 2];\n        const u = azimuth(vertex2) / 2 / Math.PI + 0.5;\n        const v = inclination(vertex2) / Math.PI + 0.5;\n        uvBuffer.push(u, 1 - v);\n      }\n      correctUVs();\n      correctSeam();\n    }\n    function correctSeam() {\n      for (let i = 0; i < uvBuffer.length; i += 6) {\n        const x0 = uvBuffer[i + 0];\n        const x1 = uvBuffer[i + 2];\n        const x2 = uvBuffer[i + 4];\n        const max = Math.max(x0, x1, x2);\n        const min = Math.min(x0, x1, x2);\n        if (max > 0.9 && min < 0.1) {\n          if (x0 < 0.2)\n            uvBuffer[i + 0] += 1;\n          if (x1 < 0.2)\n            uvBuffer[i + 2] += 1;\n          if (x2 < 0.2)\n            uvBuffer[i + 4] += 1;\n        }\n      }\n    }\n    function pushVertex(vertex2) {\n      vertexBuffer.push(vertex2.x, vertex2.y, vertex2.z);\n    }\n    function getVertexByIndex(index, vertex2) {\n      const stride = index * 3;\n      vertex2.x = vertices[stride + 0];\n      vertex2.y = vertices[stride + 1];\n      vertex2.z = vertices[stride + 2];\n    }\n    function correctUVs() {\n      const a = new Vector3();\n      const b = new Vector3();\n      const c = new Vector3();\n      const centroid = new Vector3();\n      const uvA = new Vector2();\n      const uvB = new Vector2();\n      const uvC = new Vector2();\n      for (let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6) {\n        a.set(vertexBuffer[i + 0], vertexBuffer[i + 1], vertexBuffer[i + 2]);\n        b.set(vertexBuffer[i + 3], vertexBuffer[i + 4], vertexBuffer[i + 5]);\n        c.set(vertexBuffer[i + 6], vertexBuffer[i + 7], vertexBuffer[i + 8]);\n        uvA.set(uvBuffer[j + 0], uvBuffer[j + 1]);\n        uvB.set(uvBuffer[j + 2], uvBuffer[j + 3]);\n        uvC.set(uvBuffer[j + 4], uvBuffer[j + 5]);\n        centroid.copy(a).add(b).add(c).divideScalar(3);\n        const azi = azimuth(centroid);\n        correctUV(uvA, j + 0, a, azi);\n        correctUV(uvB, j + 2, b, azi);\n        correctUV(uvC, j + 4, c, azi);\n      }\n    }\n    function correctUV(uv, stride, vector, azimuth2) {\n      if (azimuth2 < 0 && uv.x === 1) {\n        uvBuffer[stride] = uv.x - 1;\n      }\n      if (vector.x === 0 && vector.z === 0) {\n        uvBuffer[stride] = azimuth2 / 2 / Math.PI + 0.5;\n      }\n    }\n    function azimuth(vector) {\n      return Math.atan2(vector.z, -vector.x);\n    }\n    function inclination(vector) {\n      return Math.atan2(-vector.y, Math.sqrt(vector.x * vector.x + vector.z * vector.z));\n    }\n  }\n  static fromJSON(data) {\n    return new PolyhedronGeometry(data.vertices, data.indices, data.radius, data.details);\n  }\n}\nclass DodecahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const t = (1 + Math.sqrt(5)) / 2;\n    const r = 1 / t;\n    const vertices = [\n      -1,\n      -1,\n      -1,\n      -1,\n      -1,\n      1,\n      -1,\n      1,\n      -1,\n      -1,\n      1,\n      1,\n      1,\n      -1,\n      -1,\n      1,\n      -1,\n      1,\n      1,\n      1,\n      -1,\n      1,\n      1,\n      1,\n      0,\n      -r,\n      -t,\n      0,\n      -r,\n      t,\n      0,\n      r,\n      -t,\n      0,\n      r,\n      t,\n      -r,\n      -t,\n      0,\n      -r,\n      t,\n      0,\n      r,\n      -t,\n      0,\n      r,\n      t,\n      0,\n      -t,\n      0,\n      -r,\n      t,\n      0,\n      -r,\n      -t,\n      0,\n      r,\n      t,\n      0,\n      r\n    ];\n    const indices = [\n      3,\n      11,\n      7,\n      3,\n      7,\n      15,\n      3,\n      15,\n      13,\n      7,\n      19,\n      17,\n      7,\n      17,\n      6,\n      7,\n      6,\n      15,\n      17,\n      4,\n      8,\n      17,\n      8,\n      10,\n      17,\n      10,\n      6,\n      8,\n      0,\n      16,\n      8,\n      16,\n      2,\n      8,\n      2,\n      10,\n      0,\n      12,\n      1,\n      0,\n      1,\n      18,\n      0,\n      18,\n      16,\n      6,\n      10,\n      2,\n      6,\n      2,\n      13,\n      6,\n      13,\n      15,\n      2,\n      16,\n      18,\n      2,\n      18,\n      3,\n      2,\n      3,\n      13,\n      18,\n      1,\n      9,\n      18,\n      9,\n      11,\n      18,\n      11,\n      3,\n      4,\n      14,\n      12,\n      4,\n      12,\n      0,\n      4,\n      0,\n      8,\n      11,\n      9,\n      5,\n      11,\n      5,\n      19,\n      11,\n      19,\n      7,\n      19,\n      5,\n      14,\n      19,\n      14,\n      4,\n      19,\n      4,\n      17,\n      1,\n      12,\n      14,\n      1,\n      14,\n      5,\n      1,\n      5,\n      9\n    ];\n    super(vertices, indices, radius, detail);\n    this.type = \"DodecahedronGeometry\";\n    this.parameters = {\n      radius,\n      detail\n    };\n  }\n  static fromJSON(data) {\n    return new DodecahedronGeometry(data.radius, data.detail);\n  }\n}\nconst _v0 = /* @__PURE__ */ new Vector3();\nconst _v1$1 = /* @__PURE__ */ new Vector3();\nconst _normal = /* @__PURE__ */ new Vector3();\nconst _triangle = /* @__PURE__ */ new Triangle();\nclass EdgesGeometry extends BufferGeometry {\n  constructor(geometry = null, thresholdAngle = 1) {\n    super();\n    this.type = \"EdgesGeometry\";\n    this.parameters = {\n      geometry,\n      thresholdAngle\n    };\n    if (geometry !== null) {\n      const precisionPoints = 4;\n      const precision = Math.pow(10, precisionPoints);\n      const thresholdDot = Math.cos(DEG2RAD * thresholdAngle);\n      const indexAttr = geometry.getIndex();\n      const positionAttr = geometry.getAttribute(\"position\");\n      const indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n      const indexArr = [0, 0, 0];\n      const vertKeys = [\"a\", \"b\", \"c\"];\n      const hashes = new Array(3);\n      const edgeData = {};\n      const vertices = [];\n      for (let i = 0; i < indexCount; i += 3) {\n        if (indexAttr) {\n          indexArr[0] = indexAttr.getX(i);\n          indexArr[1] = indexAttr.getX(i + 1);\n          indexArr[2] = indexAttr.getX(i + 2);\n        } else {\n          indexArr[0] = i;\n          indexArr[1] = i + 1;\n          indexArr[2] = i + 2;\n        }\n        const { a, b, c } = _triangle;\n        a.fromBufferAttribute(positionAttr, indexArr[0]);\n        b.fromBufferAttribute(positionAttr, indexArr[1]);\n        c.fromBufferAttribute(positionAttr, indexArr[2]);\n        _triangle.getNormal(_normal);\n        hashes[0] = `${Math.round(a.x * precision)},${Math.round(a.y * precision)},${Math.round(a.z * precision)}`;\n        hashes[1] = `${Math.round(b.x * precision)},${Math.round(b.y * precision)},${Math.round(b.z * precision)}`;\n        hashes[2] = `${Math.round(c.x * precision)},${Math.round(c.y * precision)},${Math.round(c.z * precision)}`;\n        if (hashes[0] === hashes[1] || hashes[1] === hashes[2] || hashes[2] === hashes[0]) {\n          continue;\n        }\n        for (let j = 0; j < 3; j++) {\n          const jNext = (j + 1) % 3;\n          const vecHash0 = hashes[j];\n          const vecHash1 = hashes[jNext];\n          const v0 = _triangle[vertKeys[j]];\n          const v1 = _triangle[vertKeys[jNext]];\n          const hash = `${vecHash0}_${vecHash1}`;\n          const reverseHash = `${vecHash1}_${vecHash0}`;\n          if (reverseHash in edgeData && edgeData[reverseHash]) {\n            if (_normal.dot(edgeData[reverseHash].normal) <= thresholdDot) {\n              vertices.push(v0.x, v0.y, v0.z);\n              vertices.push(v1.x, v1.y, v1.z);\n            }\n            edgeData[reverseHash] = null;\n          } else if (!(hash in edgeData)) {\n            edgeData[hash] = {\n              index0: indexArr[j],\n              index1: indexArr[jNext],\n              normal: _normal.clone()\n            };\n          }\n        }\n      }\n      for (const key in edgeData) {\n        if (edgeData[key]) {\n          const { index0, index1 } = edgeData[key];\n          _v0.fromBufferAttribute(positionAttr, index0);\n          _v1$1.fromBufferAttribute(positionAttr, index1);\n          vertices.push(_v0.x, _v0.y, _v0.z);\n          vertices.push(_v1$1.x, _v1$1.y, _v1$1.z);\n        }\n      }\n      this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    }\n  }\n}\nclass Shape$1 extends Path {\n  constructor(points) {\n    super(points);\n    this.uuid = generateUUID();\n    this.type = \"Shape\";\n    this.holes = [];\n  }\n  getPointsHoles(divisions) {\n    const holesPts = [];\n    for (let i = 0, l = this.holes.length; i < l; i++) {\n      holesPts[i] = this.holes[i].getPoints(divisions);\n    }\n    return holesPts;\n  }\n  extractPoints(divisions) {\n    return {\n      shape: this.getPoints(divisions),\n      holes: this.getPointsHoles(divisions)\n    };\n  }\n  copy(source) {\n    super.copy(source);\n    this.holes = [];\n    for (let i = 0, l = source.holes.length; i < l; i++) {\n      const hole = source.holes[i];\n      this.holes.push(hole.clone());\n    }\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.uuid = this.uuid;\n    data.holes = [];\n    for (let i = 0, l = this.holes.length; i < l; i++) {\n      const hole = this.holes[i];\n      data.holes.push(hole.toJSON());\n    }\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.uuid = json.uuid;\n    this.holes = [];\n    for (let i = 0, l = json.holes.length; i < l; i++) {\n      const hole = json.holes[i];\n      this.holes.push(new Path().fromJSON(hole));\n    }\n    return this;\n  }\n}\nconst Earcut = {\n  triangulate: function(data, holeIndices, dim = 2) {\n    const hasHoles = holeIndices && holeIndices.length;\n    const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n    let outerNode = linkedList(data, 0, outerLen, dim, true);\n    const triangles = [];\n    if (!outerNode || outerNode.next === outerNode.prev)\n      return triangles;\n    let minX, minY, maxX, maxY, x, y, invSize;\n    if (hasHoles)\n      outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n    if (data.length > 80 * dim) {\n      minX = maxX = data[0];\n      minY = maxY = data[1];\n      for (let i = dim; i < outerLen; i += dim) {\n        x = data[i];\n        y = data[i + 1];\n        if (x < minX)\n          minX = x;\n        if (y < minY)\n          minY = y;\n        if (x > maxX)\n          maxX = x;\n        if (y > maxY)\n          maxY = y;\n      }\n      invSize = Math.max(maxX - minX, maxY - minY);\n      invSize = invSize !== 0 ? 1 / invSize : 0;\n    }\n    earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n    return triangles;\n  }\n};\nfunction linkedList(data, start, end, dim, clockwise) {\n  let i, last;\n  if (clockwise === signedArea(data, start, end, dim) > 0) {\n    for (i = start; i < end; i += dim)\n      last = insertNode(i, data[i], data[i + 1], last);\n  } else {\n    for (i = end - dim; i >= start; i -= dim)\n      last = insertNode(i, data[i], data[i + 1], last);\n  }\n  if (last && equals(last, last.next)) {\n    removeNode(last);\n    last = last.next;\n  }\n  return last;\n}\nfunction filterPoints(start, end) {\n  if (!start)\n    return start;\n  if (!end)\n    end = start;\n  let p = start, again;\n  do {\n    again = false;\n    if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n      removeNode(p);\n      p = end = p.prev;\n      if (p === p.next)\n        break;\n      again = true;\n    } else {\n      p = p.next;\n    }\n  } while (again || p !== end);\n  return end;\n}\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n  if (!ear)\n    return;\n  if (!pass && invSize)\n    indexCurve(ear, minX, minY, invSize);\n  let stop = ear, prev, next;\n  while (ear.prev !== ear.next) {\n    prev = ear.prev;\n    next = ear.next;\n    if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n      triangles.push(prev.i / dim);\n      triangles.push(ear.i / dim);\n      triangles.push(next.i / dim);\n      removeNode(ear);\n      ear = next.next;\n      stop = next.next;\n      continue;\n    }\n    ear = next;\n    if (ear === stop) {\n      if (!pass) {\n        earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n      } else if (pass === 1) {\n        ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n        earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n      } else if (pass === 2) {\n        splitEarcut(ear, triangles, dim, minX, minY, invSize);\n      }\n      break;\n    }\n  }\n}\nfunction isEar(ear) {\n  const a = ear.prev, b = ear, c = ear.next;\n  if (area(a, b, c) >= 0)\n    return false;\n  let p = ear.next.next;\n  while (p !== ear.prev) {\n    if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0)\n      return false;\n    p = p.next;\n  }\n  return true;\n}\nfunction isEarHashed(ear, minX, minY, invSize) {\n  const a = ear.prev, b = ear, c = ear.next;\n  if (area(a, b, c) >= 0)\n    return false;\n  const minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x, minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y, maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x, maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y;\n  const minZ = zOrder(minTX, minTY, minX, minY, invSize), maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n  let p = ear.prevZ, n = ear.nextZ;\n  while (p && p.z >= minZ && n && n.z <= maxZ) {\n    if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0)\n      return false;\n    p = p.prevZ;\n    if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0)\n      return false;\n    n = n.nextZ;\n  }\n  while (p && p.z >= minZ) {\n    if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0)\n      return false;\n    p = p.prevZ;\n  }\n  while (n && n.z <= maxZ) {\n    if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0)\n      return false;\n    n = n.nextZ;\n  }\n  return true;\n}\nfunction cureLocalIntersections(start, triangles, dim) {\n  let p = start;\n  do {\n    const a = p.prev, b = p.next.next;\n    if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n      triangles.push(a.i / dim);\n      triangles.push(p.i / dim);\n      triangles.push(b.i / dim);\n      removeNode(p);\n      removeNode(p.next);\n      p = start = b;\n    }\n    p = p.next;\n  } while (p !== start);\n  return filterPoints(p);\n}\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n  let a = start;\n  do {\n    let b = a.next.next;\n    while (b !== a.prev) {\n      if (a.i !== b.i && isValidDiagonal(a, b)) {\n        let c = splitPolygon(a, b);\n        a = filterPoints(a, a.next);\n        c = filterPoints(c, c.next);\n        earcutLinked(a, triangles, dim, minX, minY, invSize);\n        earcutLinked(c, triangles, dim, minX, minY, invSize);\n        return;\n      }\n      b = b.next;\n    }\n    a = a.next;\n  } while (a !== start);\n}\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n  const queue = [];\n  let i, len, start, end, list;\n  for (i = 0, len = holeIndices.length; i < len; i++) {\n    start = holeIndices[i] * dim;\n    end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n    list = linkedList(data, start, end, dim, false);\n    if (list === list.next)\n      list.steiner = true;\n    queue.push(getLeftmost(list));\n  }\n  queue.sort(compareX);\n  for (i = 0; i < queue.length; i++) {\n    eliminateHole(queue[i], outerNode);\n    outerNode = filterPoints(outerNode, outerNode.next);\n  }\n  return outerNode;\n}\nfunction compareX(a, b) {\n  return a.x - b.x;\n}\nfunction eliminateHole(hole, outerNode) {\n  outerNode = findHoleBridge(hole, outerNode);\n  if (outerNode) {\n    const b = splitPolygon(outerNode, hole);\n    filterPoints(outerNode, outerNode.next);\n    filterPoints(b, b.next);\n  }\n}\nfunction findHoleBridge(hole, outerNode) {\n  let p = outerNode;\n  const hx = hole.x;\n  const hy = hole.y;\n  let qx = -Infinity, m;\n  do {\n    if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n      const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n      if (x <= hx && x > qx) {\n        qx = x;\n        if (x === hx) {\n          if (hy === p.y)\n            return p;\n          if (hy === p.next.y)\n            return p.next;\n        }\n        m = p.x < p.next.x ? p : p.next;\n      }\n    }\n    p = p.next;\n  } while (p !== outerNode);\n  if (!m)\n    return null;\n  if (hx === qx)\n    return m;\n  const stop = m, mx = m.x, my = m.y;\n  let tanMin = Infinity, tan;\n  p = m;\n  do {\n    if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n      tan = Math.abs(hy - p.y) / (hx - p.x);\n      if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {\n        m = p;\n        tanMin = tan;\n      }\n    }\n    p = p.next;\n  } while (p !== stop);\n  return m;\n}\nfunction sectorContainsSector(m, p) {\n  return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\nfunction indexCurve(start, minX, minY, invSize) {\n  let p = start;\n  do {\n    if (p.z === null)\n      p.z = zOrder(p.x, p.y, minX, minY, invSize);\n    p.prevZ = p.prev;\n    p.nextZ = p.next;\n    p = p.next;\n  } while (p !== start);\n  p.prevZ.nextZ = null;\n  p.prevZ = null;\n  sortLinked(p);\n}\nfunction sortLinked(list) {\n  let i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;\n  do {\n    p = list;\n    list = null;\n    tail = null;\n    numMerges = 0;\n    while (p) {\n      numMerges++;\n      q = p;\n      pSize = 0;\n      for (i = 0; i < inSize; i++) {\n        pSize++;\n        q = q.nextZ;\n        if (!q)\n          break;\n      }\n      qSize = inSize;\n      while (pSize > 0 || qSize > 0 && q) {\n        if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n          e = p;\n          p = p.nextZ;\n          pSize--;\n        } else {\n          e = q;\n          q = q.nextZ;\n          qSize--;\n        }\n        if (tail)\n          tail.nextZ = e;\n        else\n          list = e;\n        e.prevZ = tail;\n        tail = e;\n      }\n      p = q;\n    }\n    tail.nextZ = null;\n    inSize *= 2;\n  } while (numMerges > 1);\n  return list;\n}\nfunction zOrder(x, y, minX, minY, invSize) {\n  x = 32767 * (x - minX) * invSize;\n  y = 32767 * (y - minY) * invSize;\n  x = (x | x << 8) & 16711935;\n  x = (x | x << 4) & 252645135;\n  x = (x | x << 2) & 858993459;\n  x = (x | x << 1) & 1431655765;\n  y = (y | y << 8) & 16711935;\n  y = (y | y << 4) & 252645135;\n  y = (y | y << 2) & 858993459;\n  y = (y | y << 1) & 1431655765;\n  return x | y << 1;\n}\nfunction getLeftmost(start) {\n  let p = start, leftmost = start;\n  do {\n    if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y)\n      leftmost = p;\n    p = p.next;\n  } while (p !== start);\n  return leftmost;\n}\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px2, py2) {\n  return (cx - px2) * (ay - py2) - (ax - px2) * (cy - py2) >= 0 && (ax - px2) * (by - py2) - (bx - px2) * (ay - py2) >= 0 && (bx - px2) * (cy - py2) - (cx - px2) * (by - py2) >= 0;\n}\nfunction isValidDiagonal(a, b) {\n  return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (area(a.prev, a, b.prev) || area(a, b.prev, b)) || equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0);\n}\nfunction area(p, q, r) {\n  return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\nfunction equals(p1, p2) {\n  return p1.x === p2.x && p1.y === p2.y;\n}\nfunction intersects(p1, q1, p2, q2) {\n  const o1 = sign(area(p1, q1, p2));\n  const o2 = sign(area(p1, q1, q2));\n  const o3 = sign(area(p2, q2, p1));\n  const o4 = sign(area(p2, q2, q1));\n  if (o1 !== o2 && o3 !== o4)\n    return true;\n  if (o1 === 0 && onSegment(p1, p2, q1))\n    return true;\n  if (o2 === 0 && onSegment(p1, q2, q1))\n    return true;\n  if (o3 === 0 && onSegment(p2, p1, q2))\n    return true;\n  if (o4 === 0 && onSegment(p2, q1, q2))\n    return true;\n  return false;\n}\nfunction onSegment(p, q, r) {\n  return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\nfunction sign(num) {\n  return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\nfunction intersectsPolygon(a, b) {\n  let p = a;\n  do {\n    if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b))\n      return true;\n    p = p.next;\n  } while (p !== a);\n  return false;\n}\nfunction locallyInside(a, b) {\n  return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\nfunction middleInside(a, b) {\n  let p = a, inside = false;\n  const px2 = (a.x + b.x) / 2, py2 = (a.y + b.y) / 2;\n  do {\n    if (p.y > py2 !== p.next.y > py2 && p.next.y !== p.y && px2 < (p.next.x - p.x) * (py2 - p.y) / (p.next.y - p.y) + p.x)\n      inside = !inside;\n    p = p.next;\n  } while (p !== a);\n  return inside;\n}\nfunction splitPolygon(a, b) {\n  const a2 = new Node$1(a.i, a.x, a.y), b2 = new Node$1(b.i, b.x, b.y), an = a.next, bp = b.prev;\n  a.next = b;\n  b.prev = a;\n  a2.next = an;\n  an.prev = a2;\n  b2.next = a2;\n  a2.prev = b2;\n  bp.next = b2;\n  b2.prev = bp;\n  return b2;\n}\nfunction insertNode(i, x, y, last) {\n  const p = new Node$1(i, x, y);\n  if (!last) {\n    p.prev = p;\n    p.next = p;\n  } else {\n    p.next = last.next;\n    p.prev = last;\n    last.next.prev = p;\n    last.next = p;\n  }\n  return p;\n}\nfunction removeNode(p) {\n  p.next.prev = p.prev;\n  p.prev.next = p.next;\n  if (p.prevZ)\n    p.prevZ.nextZ = p.nextZ;\n  if (p.nextZ)\n    p.nextZ.prevZ = p.prevZ;\n}\nfunction Node$1(i, x, y) {\n  this.i = i;\n  this.x = x;\n  this.y = y;\n  this.prev = null;\n  this.next = null;\n  this.z = null;\n  this.prevZ = null;\n  this.nextZ = null;\n  this.steiner = false;\n}\nfunction signedArea(data, start, end, dim) {\n  let sum = 0;\n  for (let i = start, j = end - dim; i < end; i += dim) {\n    sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n    j = i;\n  }\n  return sum;\n}\nclass ShapeUtils {\n  static area(contour) {\n    const n = contour.length;\n    let a = 0;\n    for (let p = n - 1, q = 0; q < n; p = q++) {\n      a += contour[p].x * contour[q].y - contour[q].x * contour[p].y;\n    }\n    return a * 0.5;\n  }\n  static isClockWise(pts) {\n    return ShapeUtils.area(pts) < 0;\n  }\n  static triangulateShape(contour, holes) {\n    const vertices = [];\n    const holeIndices = [];\n    const faces = [];\n    removeDupEndPts(contour);\n    addContour(vertices, contour);\n    let holeIndex = contour.length;\n    holes.forEach(removeDupEndPts);\n    for (let i = 0; i < holes.length; i++) {\n      holeIndices.push(holeIndex);\n      holeIndex += holes[i].length;\n      addContour(vertices, holes[i]);\n    }\n    const triangles = Earcut.triangulate(vertices, holeIndices);\n    for (let i = 0; i < triangles.length; i += 3) {\n      faces.push(triangles.slice(i, i + 3));\n    }\n    return faces;\n  }\n}\nfunction removeDupEndPts(points) {\n  const l = points.length;\n  if (l > 2 && points[l - 1].equals(points[0])) {\n    points.pop();\n  }\n}\nfunction addContour(vertices, contour) {\n  for (let i = 0; i < contour.length; i++) {\n    vertices.push(contour[i].x);\n    vertices.push(contour[i].y);\n  }\n}\nclass ExtrudeGeometry extends BufferGeometry {\n  constructor(shapes = new Shape$1([new Vector2(0.5, 0.5), new Vector2(-0.5, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), options = {}) {\n    super();\n    this.type = \"ExtrudeGeometry\";\n    this.parameters = {\n      shapes,\n      options\n    };\n    shapes = Array.isArray(shapes) ? shapes : [shapes];\n    const scope = this;\n    const verticesArray = [];\n    const uvArray = [];\n    for (let i = 0, l = shapes.length; i < l; i++) {\n      const shape = shapes[i];\n      addShape(shape);\n    }\n    this.setAttribute(\"position\", new Float32BufferAttribute(verticesArray, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvArray, 2));\n    this.computeVertexNormals();\n    function addShape(shape) {\n      const placeholder = [];\n      const curveSegments = options.curveSegments !== void 0 ? options.curveSegments : 12;\n      const steps = options.steps !== void 0 ? options.steps : 1;\n      const depth = options.depth !== void 0 ? options.depth : 1;\n      let bevelEnabled = options.bevelEnabled !== void 0 ? options.bevelEnabled : true;\n      let bevelThickness = options.bevelThickness !== void 0 ? options.bevelThickness : 0.2;\n      let bevelSize = options.bevelSize !== void 0 ? options.bevelSize : bevelThickness - 0.1;\n      let bevelOffset = options.bevelOffset !== void 0 ? options.bevelOffset : 0;\n      let bevelSegments = options.bevelSegments !== void 0 ? options.bevelSegments : 3;\n      const extrudePath = options.extrudePath;\n      const uvgen = options.UVGenerator !== void 0 ? options.UVGenerator : WorldUVGenerator;\n      let extrudePts, extrudeByPath = false;\n      let splineTube, binormal, normal, position2;\n      if (extrudePath) {\n        extrudePts = extrudePath.getSpacedPoints(steps);\n        extrudeByPath = true;\n        bevelEnabled = false;\n        splineTube = extrudePath.computeFrenetFrames(steps, false);\n        binormal = new Vector3();\n        normal = new Vector3();\n        position2 = new Vector3();\n      }\n      if (!bevelEnabled) {\n        bevelSegments = 0;\n        bevelThickness = 0;\n        bevelSize = 0;\n        bevelOffset = 0;\n      }\n      const shapePoints = shape.extractPoints(curveSegments);\n      let vertices = shapePoints.shape;\n      const holes = shapePoints.holes;\n      const reverse = !ShapeUtils.isClockWise(vertices);\n      if (reverse) {\n        vertices = vertices.reverse();\n        for (let h = 0, hl = holes.length; h < hl; h++) {\n          const ahole = holes[h];\n          if (ShapeUtils.isClockWise(ahole)) {\n            holes[h] = ahole.reverse();\n          }\n        }\n      }\n      const faces = ShapeUtils.triangulateShape(vertices, holes);\n      const contour = vertices;\n      for (let h = 0, hl = holes.length; h < hl; h++) {\n        const ahole = holes[h];\n        vertices = vertices.concat(ahole);\n      }\n      function scalePt2(pt, vec, size) {\n        if (!vec)\n          console.error(\"THREE.ExtrudeGeometry: vec does not exist\");\n        return vec.clone().multiplyScalar(size).add(pt);\n      }\n      const vlen = vertices.length, flen = faces.length;\n      function getBevelVec(inPt, inPrev, inNext) {\n        let v_trans_x, v_trans_y, shrink_by;\n        const v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y;\n        const v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y;\n        const v_prev_lensq = v_prev_x * v_prev_x + v_prev_y * v_prev_y;\n        const collinear0 = v_prev_x * v_next_y - v_prev_y * v_next_x;\n        if (Math.abs(collinear0) > Number.EPSILON) {\n          const v_prev_len = Math.sqrt(v_prev_lensq);\n          const v_next_len = Math.sqrt(v_next_x * v_next_x + v_next_y * v_next_y);\n          const ptPrevShift_x = inPrev.x - v_prev_y / v_prev_len;\n          const ptPrevShift_y = inPrev.y + v_prev_x / v_prev_len;\n          const ptNextShift_x = inNext.x - v_next_y / v_next_len;\n          const ptNextShift_y = inNext.y + v_next_x / v_next_len;\n          const sf = ((ptNextShift_x - ptPrevShift_x) * v_next_y - (ptNextShift_y - ptPrevShift_y) * v_next_x) / (v_prev_x * v_next_y - v_prev_y * v_next_x);\n          v_trans_x = ptPrevShift_x + v_prev_x * sf - inPt.x;\n          v_trans_y = ptPrevShift_y + v_prev_y * sf - inPt.y;\n          const v_trans_lensq = v_trans_x * v_trans_x + v_trans_y * v_trans_y;\n          if (v_trans_lensq <= 2) {\n            return new Vector2(v_trans_x, v_trans_y);\n          } else {\n            shrink_by = Math.sqrt(v_trans_lensq / 2);\n          }\n        } else {\n          let direction_eq = false;\n          if (v_prev_x > Number.EPSILON) {\n            if (v_next_x > Number.EPSILON) {\n              direction_eq = true;\n            }\n          } else {\n            if (v_prev_x < -Number.EPSILON) {\n              if (v_next_x < -Number.EPSILON) {\n                direction_eq = true;\n              }\n            } else {\n              if (Math.sign(v_prev_y) === Math.sign(v_next_y)) {\n                direction_eq = true;\n              }\n            }\n          }\n          if (direction_eq) {\n            v_trans_x = -v_prev_y;\n            v_trans_y = v_prev_x;\n            shrink_by = Math.sqrt(v_prev_lensq);\n          } else {\n            v_trans_x = v_prev_x;\n            v_trans_y = v_prev_y;\n            shrink_by = Math.sqrt(v_prev_lensq / 2);\n          }\n        }\n        return new Vector2(v_trans_x / shrink_by, v_trans_y / shrink_by);\n      }\n      const contourMovements = [];\n      for (let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n        if (j === il)\n          j = 0;\n        if (k === il)\n          k = 0;\n        contourMovements[i] = getBevelVec(contour[i], contour[j], contour[k]);\n      }\n      const holesMovements = [];\n      let oneHoleMovements, verticesMovements = contourMovements.concat();\n      for (let h = 0, hl = holes.length; h < hl; h++) {\n        const ahole = holes[h];\n        oneHoleMovements = [];\n        for (let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n          if (j === il)\n            j = 0;\n          if (k === il)\n            k = 0;\n          oneHoleMovements[i] = getBevelVec(ahole[i], ahole[j], ahole[k]);\n        }\n        holesMovements.push(oneHoleMovements);\n        verticesMovements = verticesMovements.concat(oneHoleMovements);\n      }\n      for (let b = 0; b < bevelSegments; b++) {\n        const t = b / bevelSegments;\n        const z = bevelThickness * Math.cos(t * Math.PI / 2);\n        const bs2 = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset;\n        for (let i = 0, il = contour.length; i < il; i++) {\n          const vert = scalePt2(contour[i], contourMovements[i], bs2);\n          v(vert.x, vert.y, -z);\n        }\n        for (let h = 0, hl = holes.length; h < hl; h++) {\n          const ahole = holes[h];\n          oneHoleMovements = holesMovements[h];\n          for (let i = 0, il = ahole.length; i < il; i++) {\n            const vert = scalePt2(ahole[i], oneHoleMovements[i], bs2);\n            v(vert.x, vert.y, -z);\n          }\n        }\n      }\n      const bs = bevelSize + bevelOffset;\n      for (let i = 0; i < vlen; i++) {\n        const vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n        if (!extrudeByPath) {\n          v(vert.x, vert.y, 0);\n        } else {\n          normal.copy(splineTube.normals[0]).multiplyScalar(vert.x);\n          binormal.copy(splineTube.binormals[0]).multiplyScalar(vert.y);\n          position2.copy(extrudePts[0]).add(normal).add(binormal);\n          v(position2.x, position2.y, position2.z);\n        }\n      }\n      for (let s = 1; s <= steps; s++) {\n        for (let i = 0; i < vlen; i++) {\n          const vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n          if (!extrudeByPath) {\n            v(vert.x, vert.y, depth / steps * s);\n          } else {\n            normal.copy(splineTube.normals[s]).multiplyScalar(vert.x);\n            binormal.copy(splineTube.binormals[s]).multiplyScalar(vert.y);\n            position2.copy(extrudePts[s]).add(normal).add(binormal);\n            v(position2.x, position2.y, position2.z);\n          }\n        }\n      }\n      for (let b = bevelSegments - 1; b >= 0; b--) {\n        const t = b / bevelSegments;\n        const z = bevelThickness * Math.cos(t * Math.PI / 2);\n        const bs2 = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset;\n        for (let i = 0, il = contour.length; i < il; i++) {\n          const vert = scalePt2(contour[i], contourMovements[i], bs2);\n          v(vert.x, vert.y, depth + z);\n        }\n        for (let h = 0, hl = holes.length; h < hl; h++) {\n          const ahole = holes[h];\n          oneHoleMovements = holesMovements[h];\n          for (let i = 0, il = ahole.length; i < il; i++) {\n            const vert = scalePt2(ahole[i], oneHoleMovements[i], bs2);\n            if (!extrudeByPath) {\n              v(vert.x, vert.y, depth + z);\n            } else {\n              v(vert.x, vert.y + extrudePts[steps - 1].y, extrudePts[steps - 1].x + z);\n            }\n          }\n        }\n      }\n      buildLidFaces();\n      buildSideFaces();\n      function buildLidFaces() {\n        const start = verticesArray.length / 3;\n        if (bevelEnabled) {\n          let layer = 0;\n          let offset = vlen * layer;\n          for (let i = 0; i < flen; i++) {\n            const face = faces[i];\n            f3(face[2] + offset, face[1] + offset, face[0] + offset);\n          }\n          layer = steps + bevelSegments * 2;\n          offset = vlen * layer;\n          for (let i = 0; i < flen; i++) {\n            const face = faces[i];\n            f3(face[0] + offset, face[1] + offset, face[2] + offset);\n          }\n        } else {\n          for (let i = 0; i < flen; i++) {\n            const face = faces[i];\n            f3(face[2], face[1], face[0]);\n          }\n          for (let i = 0; i < flen; i++) {\n            const face = faces[i];\n            f3(face[0] + vlen * steps, face[1] + vlen * steps, face[2] + vlen * steps);\n          }\n        }\n        scope.addGroup(start, verticesArray.length / 3 - start, 0);\n      }\n      function buildSideFaces() {\n        const start = verticesArray.length / 3;\n        let layeroffset = 0;\n        sidewalls(contour, layeroffset);\n        layeroffset += contour.length;\n        for (let h = 0, hl = holes.length; h < hl; h++) {\n          const ahole = holes[h];\n          sidewalls(ahole, layeroffset);\n          layeroffset += ahole.length;\n        }\n        scope.addGroup(start, verticesArray.length / 3 - start, 1);\n      }\n      function sidewalls(contour2, layeroffset) {\n        let i = contour2.length;\n        while (--i >= 0) {\n          const j = i;\n          let k = i - 1;\n          if (k < 0)\n            k = contour2.length - 1;\n          for (let s = 0, sl = steps + bevelSegments * 2; s < sl; s++) {\n            const slen1 = vlen * s;\n            const slen2 = vlen * (s + 1);\n            const a = layeroffset + j + slen1, b = layeroffset + k + slen1, c = layeroffset + k + slen2, d = layeroffset + j + slen2;\n            f4(a, b, c, d);\n          }\n        }\n      }\n      function v(x, y, z) {\n        placeholder.push(x);\n        placeholder.push(y);\n        placeholder.push(z);\n      }\n      function f3(a, b, c) {\n        addVertex(a);\n        addVertex(b);\n        addVertex(c);\n        const nextIndex = verticesArray.length / 3;\n        const uvs = uvgen.generateTopUV(scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n        addUV(uvs[0]);\n        addUV(uvs[1]);\n        addUV(uvs[2]);\n      }\n      function f4(a, b, c, d) {\n        addVertex(a);\n        addVertex(b);\n        addVertex(d);\n        addVertex(b);\n        addVertex(c);\n        addVertex(d);\n        const nextIndex = verticesArray.length / 3;\n        const uvs = uvgen.generateSideWallUV(scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n        addUV(uvs[0]);\n        addUV(uvs[1]);\n        addUV(uvs[3]);\n        addUV(uvs[1]);\n        addUV(uvs[2]);\n        addUV(uvs[3]);\n      }\n      function addVertex(index) {\n        verticesArray.push(placeholder[index * 3 + 0]);\n        verticesArray.push(placeholder[index * 3 + 1]);\n        verticesArray.push(placeholder[index * 3 + 2]);\n      }\n      function addUV(vector2) {\n        uvArray.push(vector2.x);\n        uvArray.push(vector2.y);\n      }\n    }\n  }\n  toJSON() {\n    const data = super.toJSON();\n    const shapes = this.parameters.shapes;\n    const options = this.parameters.options;\n    return toJSON$1(shapes, options, data);\n  }\n  static fromJSON(data, shapes) {\n    const geometryShapes = [];\n    for (let j = 0, jl = data.shapes.length; j < jl; j++) {\n      const shape = shapes[data.shapes[j]];\n      geometryShapes.push(shape);\n    }\n    const extrudePath = data.options.extrudePath;\n    if (extrudePath !== void 0) {\n      data.options.extrudePath = new Curves[extrudePath.type]().fromJSON(extrudePath);\n    }\n    return new ExtrudeGeometry(geometryShapes, data.options);\n  }\n}\nconst WorldUVGenerator = {\n  generateTopUV: function(geometry, vertices, indexA, indexB, indexC) {\n    const a_x = vertices[indexA * 3];\n    const a_y = vertices[indexA * 3 + 1];\n    const b_x = vertices[indexB * 3];\n    const b_y = vertices[indexB * 3 + 1];\n    const c_x = vertices[indexC * 3];\n    const c_y = vertices[indexC * 3 + 1];\n    return [\n      new Vector2(a_x, a_y),\n      new Vector2(b_x, b_y),\n      new Vector2(c_x, c_y)\n    ];\n  },\n  generateSideWallUV: function(geometry, vertices, indexA, indexB, indexC, indexD) {\n    const a_x = vertices[indexA * 3];\n    const a_y = vertices[indexA * 3 + 1];\n    const a_z = vertices[indexA * 3 + 2];\n    const b_x = vertices[indexB * 3];\n    const b_y = vertices[indexB * 3 + 1];\n    const b_z = vertices[indexB * 3 + 2];\n    const c_x = vertices[indexC * 3];\n    const c_y = vertices[indexC * 3 + 1];\n    const c_z = vertices[indexC * 3 + 2];\n    const d_x = vertices[indexD * 3];\n    const d_y = vertices[indexD * 3 + 1];\n    const d_z = vertices[indexD * 3 + 2];\n    if (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) {\n      return [\n        new Vector2(a_x, 1 - a_z),\n        new Vector2(b_x, 1 - b_z),\n        new Vector2(c_x, 1 - c_z),\n        new Vector2(d_x, 1 - d_z)\n      ];\n    } else {\n      return [\n        new Vector2(a_y, 1 - a_z),\n        new Vector2(b_y, 1 - b_z),\n        new Vector2(c_y, 1 - c_z),\n        new Vector2(d_y, 1 - d_z)\n      ];\n    }\n  }\n};\nfunction toJSON$1(shapes, options, data) {\n  data.shapes = [];\n  if (Array.isArray(shapes)) {\n    for (let i = 0, l = shapes.length; i < l; i++) {\n      const shape = shapes[i];\n      data.shapes.push(shape.uuid);\n    }\n  } else {\n    data.shapes.push(shapes.uuid);\n  }\n  data.options = Object.assign({}, options);\n  if (options.extrudePath !== void 0)\n    data.options.extrudePath = options.extrudePath.toJSON();\n  return data;\n}\nclass IcosahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const t = (1 + Math.sqrt(5)) / 2;\n    const vertices = [\n      -1,\n      t,\n      0,\n      1,\n      t,\n      0,\n      -1,\n      -t,\n      0,\n      1,\n      -t,\n      0,\n      0,\n      -1,\n      t,\n      0,\n      1,\n      t,\n      0,\n      -1,\n      -t,\n      0,\n      1,\n      -t,\n      t,\n      0,\n      -1,\n      t,\n      0,\n      1,\n      -t,\n      0,\n      -1,\n      -t,\n      0,\n      1\n    ];\n    const indices = [\n      0,\n      11,\n      5,\n      0,\n      5,\n      1,\n      0,\n      1,\n      7,\n      0,\n      7,\n      10,\n      0,\n      10,\n      11,\n      1,\n      5,\n      9,\n      5,\n      11,\n      4,\n      11,\n      10,\n      2,\n      10,\n      7,\n      6,\n      7,\n      1,\n      8,\n      3,\n      9,\n      4,\n      3,\n      4,\n      2,\n      3,\n      2,\n      6,\n      3,\n      6,\n      8,\n      3,\n      8,\n      9,\n      4,\n      9,\n      5,\n      2,\n      4,\n      11,\n      6,\n      2,\n      10,\n      8,\n      6,\n      7,\n      9,\n      8,\n      1\n    ];\n    super(vertices, indices, radius, detail);\n    this.type = \"IcosahedronGeometry\";\n    this.parameters = {\n      radius,\n      detail\n    };\n  }\n  static fromJSON(data) {\n    return new IcosahedronGeometry(data.radius, data.detail);\n  }\n}\nclass OctahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const vertices = [\n      1,\n      0,\n      0,\n      -1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      -1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      -1\n    ];\n    const indices = [\n      0,\n      2,\n      4,\n      0,\n      4,\n      3,\n      0,\n      3,\n      5,\n      0,\n      5,\n      2,\n      1,\n      2,\n      5,\n      1,\n      5,\n      3,\n      1,\n      3,\n      4,\n      1,\n      4,\n      2\n    ];\n    super(vertices, indices, radius, detail);\n    this.type = \"OctahedronGeometry\";\n    this.parameters = {\n      radius,\n      detail\n    };\n  }\n  static fromJSON(data) {\n    return new OctahedronGeometry(data.radius, data.detail);\n  }\n}\nclass RingGeometry extends BufferGeometry {\n  constructor(innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2) {\n    super();\n    this.type = \"RingGeometry\";\n    this.parameters = {\n      innerRadius,\n      outerRadius,\n      thetaSegments,\n      phiSegments,\n      thetaStart,\n      thetaLength\n    };\n    thetaSegments = Math.max(3, thetaSegments);\n    phiSegments = Math.max(1, phiSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    let radius = innerRadius;\n    const radiusStep = (outerRadius - innerRadius) / phiSegments;\n    const vertex2 = new Vector3();\n    const uv = new Vector2();\n    for (let j = 0; j <= phiSegments; j++) {\n      for (let i = 0; i <= thetaSegments; i++) {\n        const segment = thetaStart + i / thetaSegments * thetaLength;\n        vertex2.x = radius * Math.cos(segment);\n        vertex2.y = radius * Math.sin(segment);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        normals.push(0, 0, 1);\n        uv.x = (vertex2.x / outerRadius + 1) / 2;\n        uv.y = (vertex2.y / outerRadius + 1) / 2;\n        uvs.push(uv.x, uv.y);\n      }\n      radius += radiusStep;\n    }\n    for (let j = 0; j < phiSegments; j++) {\n      const thetaSegmentLevel = j * (thetaSegments + 1);\n      for (let i = 0; i < thetaSegments; i++) {\n        const segment = i + thetaSegmentLevel;\n        const a = segment;\n        const b = segment + thetaSegments + 1;\n        const c = segment + thetaSegments + 2;\n        const d = segment + 1;\n        indices.push(a, b, d);\n        indices.push(b, c, d);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  static fromJSON(data) {\n    return new RingGeometry(data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength);\n  }\n}\nclass ShapeGeometry extends BufferGeometry {\n  constructor(shapes = new Shape$1([new Vector2(0, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), curveSegments = 12) {\n    super();\n    this.type = \"ShapeGeometry\";\n    this.parameters = {\n      shapes,\n      curveSegments\n    };\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    let groupStart = 0;\n    let groupCount = 0;\n    if (Array.isArray(shapes) === false) {\n      addShape(shapes);\n    } else {\n      for (let i = 0; i < shapes.length; i++) {\n        addShape(shapes[i]);\n        this.addGroup(groupStart, groupCount, i);\n        groupStart += groupCount;\n        groupCount = 0;\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function addShape(shape) {\n      const indexOffset = vertices.length / 3;\n      const points = shape.extractPoints(curveSegments);\n      let shapeVertices = points.shape;\n      const shapeHoles = points.holes;\n      if (ShapeUtils.isClockWise(shapeVertices) === false) {\n        shapeVertices = shapeVertices.reverse();\n      }\n      for (let i = 0, l = shapeHoles.length; i < l; i++) {\n        const shapeHole = shapeHoles[i];\n        if (ShapeUtils.isClockWise(shapeHole) === true) {\n          shapeHoles[i] = shapeHole.reverse();\n        }\n      }\n      const faces = ShapeUtils.triangulateShape(shapeVertices, shapeHoles);\n      for (let i = 0, l = shapeHoles.length; i < l; i++) {\n        const shapeHole = shapeHoles[i];\n        shapeVertices = shapeVertices.concat(shapeHole);\n      }\n      for (let i = 0, l = shapeVertices.length; i < l; i++) {\n        const vertex2 = shapeVertices[i];\n        vertices.push(vertex2.x, vertex2.y, 0);\n        normals.push(0, 0, 1);\n        uvs.push(vertex2.x, vertex2.y);\n      }\n      for (let i = 0, l = faces.length; i < l; i++) {\n        const face = faces[i];\n        const a = face[0] + indexOffset;\n        const b = face[1] + indexOffset;\n        const c = face[2] + indexOffset;\n        indices.push(a, b, c);\n        groupCount += 3;\n      }\n    }\n  }\n  toJSON() {\n    const data = super.toJSON();\n    const shapes = this.parameters.shapes;\n    return toJSON(shapes, data);\n  }\n  static fromJSON(data, shapes) {\n    const geometryShapes = [];\n    for (let j = 0, jl = data.shapes.length; j < jl; j++) {\n      const shape = shapes[data.shapes[j]];\n      geometryShapes.push(shape);\n    }\n    return new ShapeGeometry(geometryShapes, data.curveSegments);\n  }\n}\nfunction toJSON(shapes, data) {\n  data.shapes = [];\n  if (Array.isArray(shapes)) {\n    for (let i = 0, l = shapes.length; i < l; i++) {\n      const shape = shapes[i];\n      data.shapes.push(shape.uuid);\n    }\n  } else {\n    data.shapes.push(shapes.uuid);\n  }\n  return data;\n}\nclass SphereGeometry extends BufferGeometry {\n  constructor(radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI) {\n    super();\n    this.type = \"SphereGeometry\";\n    this.parameters = {\n      radius,\n      widthSegments,\n      heightSegments,\n      phiStart,\n      phiLength,\n      thetaStart,\n      thetaLength\n    };\n    widthSegments = Math.max(3, Math.floor(widthSegments));\n    heightSegments = Math.max(2, Math.floor(heightSegments));\n    const thetaEnd = Math.min(thetaStart + thetaLength, Math.PI);\n    let index = 0;\n    const grid = [];\n    const vertex2 = new Vector3();\n    const normal = new Vector3();\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    for (let iy = 0; iy <= heightSegments; iy++) {\n      const verticesRow = [];\n      const v = iy / heightSegments;\n      let uOffset = 0;\n      if (iy == 0 && thetaStart == 0) {\n        uOffset = 0.5 / widthSegments;\n      } else if (iy == heightSegments && thetaEnd == Math.PI) {\n        uOffset = -0.5 / widthSegments;\n      }\n      for (let ix = 0; ix <= widthSegments; ix++) {\n        const u = ix / widthSegments;\n        vertex2.x = -radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n        vertex2.y = radius * Math.cos(thetaStart + v * thetaLength);\n        vertex2.z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        normal.copy(vertex2).normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        uvs.push(u + uOffset, 1 - v);\n        verticesRow.push(index++);\n      }\n      grid.push(verticesRow);\n    }\n    for (let iy = 0; iy < heightSegments; iy++) {\n      for (let ix = 0; ix < widthSegments; ix++) {\n        const a = grid[iy][ix + 1];\n        const b = grid[iy][ix];\n        const c = grid[iy + 1][ix];\n        const d = grid[iy + 1][ix + 1];\n        if (iy !== 0 || thetaStart > 0)\n          indices.push(a, b, d);\n        if (iy !== heightSegments - 1 || thetaEnd < Math.PI)\n          indices.push(b, c, d);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  static fromJSON(data) {\n    return new SphereGeometry(data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength);\n  }\n}\nclass TetrahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const vertices = [\n      1,\n      1,\n      1,\n      -1,\n      -1,\n      1,\n      -1,\n      1,\n      -1,\n      1,\n      -1,\n      -1\n    ];\n    const indices = [\n      2,\n      1,\n      0,\n      0,\n      3,\n      2,\n      1,\n      3,\n      0,\n      2,\n      3,\n      1\n    ];\n    super(vertices, indices, radius, detail);\n    this.type = \"TetrahedronGeometry\";\n    this.parameters = {\n      radius,\n      detail\n    };\n  }\n  static fromJSON(data) {\n    return new TetrahedronGeometry(data.radius, data.detail);\n  }\n}\nclass TorusGeometry extends BufferGeometry {\n  constructor(radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2) {\n    super();\n    this.type = \"TorusGeometry\";\n    this.parameters = {\n      radius,\n      tube,\n      radialSegments,\n      tubularSegments,\n      arc\n    };\n    radialSegments = Math.floor(radialSegments);\n    tubularSegments = Math.floor(tubularSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    const center = new Vector3();\n    const vertex2 = new Vector3();\n    const normal = new Vector3();\n    for (let j = 0; j <= radialSegments; j++) {\n      for (let i = 0; i <= tubularSegments; i++) {\n        const u = i / tubularSegments * arc;\n        const v = j / radialSegments * Math.PI * 2;\n        vertex2.x = (radius + tube * Math.cos(v)) * Math.cos(u);\n        vertex2.y = (radius + tube * Math.cos(v)) * Math.sin(u);\n        vertex2.z = tube * Math.sin(v);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        center.x = radius * Math.cos(u);\n        center.y = radius * Math.sin(u);\n        normal.subVectors(vertex2, center).normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        uvs.push(i / tubularSegments);\n        uvs.push(j / radialSegments);\n      }\n    }\n    for (let j = 1; j <= radialSegments; j++) {\n      for (let i = 1; i <= tubularSegments; i++) {\n        const a = (tubularSegments + 1) * j + i - 1;\n        const b = (tubularSegments + 1) * (j - 1) + i - 1;\n        const c = (tubularSegments + 1) * (j - 1) + i;\n        const d = (tubularSegments + 1) * j + i;\n        indices.push(a, b, d);\n        indices.push(b, c, d);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  static fromJSON(data) {\n    return new TorusGeometry(data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc);\n  }\n}\nclass TorusKnotGeometry extends BufferGeometry {\n  constructor(radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3) {\n    super();\n    this.type = \"TorusKnotGeometry\";\n    this.parameters = {\n      radius,\n      tube,\n      tubularSegments,\n      radialSegments,\n      p,\n      q\n    };\n    tubularSegments = Math.floor(tubularSegments);\n    radialSegments = Math.floor(radialSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    const vertex2 = new Vector3();\n    const normal = new Vector3();\n    const P1 = new Vector3();\n    const P2 = new Vector3();\n    const B = new Vector3();\n    const T = new Vector3();\n    const N = new Vector3();\n    for (let i = 0; i <= tubularSegments; ++i) {\n      const u = i / tubularSegments * p * Math.PI * 2;\n      calculatePositionOnCurve(u, p, q, radius, P1);\n      calculatePositionOnCurve(u + 0.01, p, q, radius, P2);\n      T.subVectors(P2, P1);\n      N.addVectors(P2, P1);\n      B.crossVectors(T, N);\n      N.crossVectors(B, T);\n      B.normalize();\n      N.normalize();\n      for (let j = 0; j <= radialSegments; ++j) {\n        const v = j / radialSegments * Math.PI * 2;\n        const cx = -tube * Math.cos(v);\n        const cy = tube * Math.sin(v);\n        vertex2.x = P1.x + (cx * N.x + cy * B.x);\n        vertex2.y = P1.y + (cx * N.y + cy * B.y);\n        vertex2.z = P1.z + (cx * N.z + cy * B.z);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        normal.subVectors(vertex2, P1).normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        uvs.push(i / tubularSegments);\n        uvs.push(j / radialSegments);\n      }\n    }\n    for (let j = 1; j <= tubularSegments; j++) {\n      for (let i = 1; i <= radialSegments; i++) {\n        const a = (radialSegments + 1) * (j - 1) + (i - 1);\n        const b = (radialSegments + 1) * j + (i - 1);\n        const c = (radialSegments + 1) * j + i;\n        const d = (radialSegments + 1) * (j - 1) + i;\n        indices.push(a, b, d);\n        indices.push(b, c, d);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function calculatePositionOnCurve(u, p2, q2, radius2, position) {\n      const cu = Math.cos(u);\n      const su = Math.sin(u);\n      const quOverP = q2 / p2 * u;\n      const cs = Math.cos(quOverP);\n      position.x = radius2 * (2 + cs) * 0.5 * cu;\n      position.y = radius2 * (2 + cs) * su * 0.5;\n      position.z = radius2 * Math.sin(quOverP) * 0.5;\n    }\n  }\n  static fromJSON(data) {\n    return new TorusKnotGeometry(data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q);\n  }\n}\nclass TubeGeometry extends BufferGeometry {\n  constructor(path = new QuadraticBezierCurve3(new Vector3(-1, -1, 0), new Vector3(-1, 1, 0), new Vector3(1, 1, 0)), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false) {\n    super();\n    this.type = \"TubeGeometry\";\n    this.parameters = {\n      path,\n      tubularSegments,\n      radius,\n      radialSegments,\n      closed\n    };\n    const frames = path.computeFrenetFrames(tubularSegments, closed);\n    this.tangents = frames.tangents;\n    this.normals = frames.normals;\n    this.binormals = frames.binormals;\n    const vertex2 = new Vector3();\n    const normal = new Vector3();\n    const uv = new Vector2();\n    let P = new Vector3();\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    const indices = [];\n    generateBufferData();\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function generateBufferData() {\n      for (let i = 0; i < tubularSegments; i++) {\n        generateSegment(i);\n      }\n      generateSegment(closed === false ? tubularSegments : 0);\n      generateUVs();\n      generateIndices();\n    }\n    function generateSegment(i) {\n      P = path.getPointAt(i / tubularSegments, P);\n      const N = frames.normals[i];\n      const B = frames.binormals[i];\n      for (let j = 0; j <= radialSegments; j++) {\n        const v = j / radialSegments * Math.PI * 2;\n        const sin = Math.sin(v);\n        const cos = -Math.cos(v);\n        normal.x = cos * N.x + sin * B.x;\n        normal.y = cos * N.y + sin * B.y;\n        normal.z = cos * N.z + sin * B.z;\n        normal.normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        vertex2.x = P.x + radius * normal.x;\n        vertex2.y = P.y + radius * normal.y;\n        vertex2.z = P.z + radius * normal.z;\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n      }\n    }\n    function generateIndices() {\n      for (let j = 1; j <= tubularSegments; j++) {\n        for (let i = 1; i <= radialSegments; i++) {\n          const a = (radialSegments + 1) * (j - 1) + (i - 1);\n          const b = (radialSegments + 1) * j + (i - 1);\n          const c = (radialSegments + 1) * j + i;\n          const d = (radialSegments + 1) * (j - 1) + i;\n          indices.push(a, b, d);\n          indices.push(b, c, d);\n        }\n      }\n    }\n    function generateUVs() {\n      for (let i = 0; i <= tubularSegments; i++) {\n        for (let j = 0; j <= radialSegments; j++) {\n          uv.x = i / tubularSegments;\n          uv.y = j / radialSegments;\n          uvs.push(uv.x, uv.y);\n        }\n      }\n    }\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.path = this.parameters.path.toJSON();\n    return data;\n  }\n  static fromJSON(data) {\n    return new TubeGeometry(\n      new Curves[data.path.type]().fromJSON(data.path),\n      data.tubularSegments,\n      data.radius,\n      data.radialSegments,\n      data.closed\n    );\n  }\n}\nclass WireframeGeometry extends BufferGeometry {\n  constructor(geometry = null) {\n    super();\n    this.type = \"WireframeGeometry\";\n    this.parameters = {\n      geometry\n    };\n    if (geometry !== null) {\n      const vertices = [];\n      const edges = /* @__PURE__ */ new Set();\n      const start = new Vector3();\n      const end = new Vector3();\n      if (geometry.index !== null) {\n        const position = geometry.attributes.position;\n        const indices = geometry.index;\n        let groups = geometry.groups;\n        if (groups.length === 0) {\n          groups = [{ start: 0, count: indices.count, materialIndex: 0 }];\n        }\n        for (let o = 0, ol = groups.length; o < ol; ++o) {\n          const group = groups[o];\n          const groupStart = group.start;\n          const groupCount = group.count;\n          for (let i = groupStart, l = groupStart + groupCount; i < l; i += 3) {\n            for (let j = 0; j < 3; j++) {\n              const index1 = indices.getX(i + j);\n              const index2 = indices.getX(i + (j + 1) % 3);\n              start.fromBufferAttribute(position, index1);\n              end.fromBufferAttribute(position, index2);\n              if (isUniqueEdge(start, end, edges) === true) {\n                vertices.push(start.x, start.y, start.z);\n                vertices.push(end.x, end.y, end.z);\n              }\n            }\n          }\n        }\n      } else {\n        const position = geometry.attributes.position;\n        for (let i = 0, l = position.count / 3; i < l; i++) {\n          for (let j = 0; j < 3; j++) {\n            const index1 = 3 * i + j;\n            const index2 = 3 * i + (j + 1) % 3;\n            start.fromBufferAttribute(position, index1);\n            end.fromBufferAttribute(position, index2);\n            if (isUniqueEdge(start, end, edges) === true) {\n              vertices.push(start.x, start.y, start.z);\n              vertices.push(end.x, end.y, end.z);\n            }\n          }\n        }\n      }\n      this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    }\n  }\n}\nfunction isUniqueEdge(start, end, edges) {\n  const hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n  const hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`;\n  if (edges.has(hash1) === true || edges.has(hash2) === true) {\n    return false;\n  } else {\n    edges.add(hash1);\n    edges.add(hash2);\n    return true;\n  }\n}\nvar Geometries = /* @__PURE__ */ Object.freeze({\n  __proto__: null,\n  BoxGeometry,\n  BoxBufferGeometry: BoxGeometry,\n  CapsuleGeometry,\n  CapsuleBufferGeometry: CapsuleGeometry,\n  CircleGeometry,\n  CircleBufferGeometry: CircleGeometry,\n  ConeGeometry,\n  ConeBufferGeometry: ConeGeometry,\n  CylinderGeometry,\n  CylinderBufferGeometry: CylinderGeometry,\n  DodecahedronGeometry,\n  DodecahedronBufferGeometry: DodecahedronGeometry,\n  EdgesGeometry,\n  ExtrudeGeometry,\n  ExtrudeBufferGeometry: ExtrudeGeometry,\n  IcosahedronGeometry,\n  IcosahedronBufferGeometry: IcosahedronGeometry,\n  LatheGeometry,\n  LatheBufferGeometry: LatheGeometry,\n  OctahedronGeometry,\n  OctahedronBufferGeometry: OctahedronGeometry,\n  PlaneGeometry,\n  PlaneBufferGeometry: PlaneGeometry,\n  PolyhedronGeometry,\n  PolyhedronBufferGeometry: PolyhedronGeometry,\n  RingGeometry,\n  RingBufferGeometry: RingGeometry,\n  ShapeGeometry,\n  ShapeBufferGeometry: ShapeGeometry,\n  SphereGeometry,\n  SphereBufferGeometry: SphereGeometry,\n  TetrahedronGeometry,\n  TetrahedronBufferGeometry: TetrahedronGeometry,\n  TorusGeometry,\n  TorusBufferGeometry: TorusGeometry,\n  TorusKnotGeometry,\n  TorusKnotBufferGeometry: TorusKnotGeometry,\n  TubeGeometry,\n  TubeBufferGeometry: TubeGeometry,\n  WireframeGeometry\n});\nclass ShadowMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isShadowMaterial = true;\n    this.type = \"ShadowMaterial\";\n    this.color = new Color(0);\n    this.transparent = true;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.fog = source.fog;\n    return this;\n  }\n}\nclass RawShaderMaterial extends ShaderMaterial {\n  constructor(parameters) {\n    super(parameters);\n    this.isRawShaderMaterial = true;\n    this.type = \"RawShaderMaterial\";\n  }\n}\nclass MeshStandardMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isMeshStandardMaterial = true;\n    this.defines = { \"STANDARD\": \"\" };\n    this.type = \"MeshStandardMaterial\";\n    this.color = new Color(16777215);\n    this.roughness = 1;\n    this.metalness = 0;\n    this.map = null;\n    this.lightMap = null;\n    this.lightMapIntensity = 1;\n    this.aoMap = null;\n    this.aoMapIntensity = 1;\n    this.emissive = new Color(0);\n    this.emissiveIntensity = 1;\n    this.emissiveMap = null;\n    this.bumpMap = null;\n    this.bumpScale = 1;\n    this.normalMap = null;\n    this.normalMapType = TangentSpaceNormalMap;\n    this.normalScale = new Vector2(1, 1);\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.roughnessMap = null;\n    this.metalnessMap = null;\n    this.alphaMap = null;\n    this.envMap = null;\n    this.envMapIntensity = 1;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.wireframeLinecap = \"round\";\n    this.wireframeLinejoin = \"round\";\n    this.flatShading = false;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.defines = { \"STANDARD\": \"\" };\n    this.color.copy(source.color);\n    this.roughness = source.roughness;\n    this.metalness = source.metalness;\n    this.map = source.map;\n    this.lightMap = source.lightMap;\n    this.lightMapIntensity = source.lightMapIntensity;\n    this.aoMap = source.aoMap;\n    this.aoMapIntensity = source.aoMapIntensity;\n    this.emissive.copy(source.emissive);\n    this.emissiveMap = source.emissiveMap;\n    this.emissiveIntensity = source.emissiveIntensity;\n    this.bumpMap = source.bumpMap;\n    this.bumpScale = source.bumpScale;\n    this.normalMap = source.normalMap;\n    this.normalMapType = source.normalMapType;\n    this.normalScale.copy(source.normalScale);\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.roughnessMap = source.roughnessMap;\n    this.metalnessMap = source.metalnessMap;\n    this.alphaMap = source.alphaMap;\n    this.envMap = source.envMap;\n    this.envMapIntensity = source.envMapIntensity;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.wireframeLinecap = source.wireframeLinecap;\n    this.wireframeLinejoin = source.wireframeLinejoin;\n    this.flatShading = source.flatShading;\n    this.fog = source.fog;\n    return this;\n  }\n}\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n  constructor(parameters) {\n    super();\n    this.isMeshPhysicalMaterial = true;\n    this.defines = {\n      \"STANDARD\": \"\",\n      \"PHYSICAL\": \"\"\n    };\n    this.type = \"MeshPhysicalMaterial\";\n    this.clearcoatMap = null;\n    this.clearcoatRoughness = 0;\n    this.clearcoatRoughnessMap = null;\n    this.clearcoatNormalScale = new Vector2(1, 1);\n    this.clearcoatNormalMap = null;\n    this.ior = 1.5;\n    Object.defineProperty(this, \"reflectivity\", {\n      get: function() {\n        return clamp$1(2.5 * (this.ior - 1) / (this.ior + 1), 0, 1);\n      },\n      set: function(reflectivity) {\n        this.ior = (1 + 0.4 * reflectivity) / (1 - 0.4 * reflectivity);\n      }\n    });\n    this.iridescenceMap = null;\n    this.iridescenceIOR = 1.3;\n    this.iridescenceThicknessRange = [100, 400];\n    this.iridescenceThicknessMap = null;\n    this.sheenColor = new Color(0);\n    this.sheenColorMap = null;\n    this.sheenRoughness = 1;\n    this.sheenRoughnessMap = null;\n    this.transmissionMap = null;\n    this.thickness = 0;\n    this.thicknessMap = null;\n    this.attenuationDistance = 0;\n    this.attenuationColor = new Color(1, 1, 1);\n    this.specularIntensity = 1;\n    this.specularIntensityMap = null;\n    this.specularColor = new Color(1, 1, 1);\n    this.specularColorMap = null;\n    this._sheen = 0;\n    this._clearcoat = 0;\n    this._iridescence = 0;\n    this._transmission = 0;\n    this.setValues(parameters);\n  }\n  get sheen() {\n    return this._sheen;\n  }\n  set sheen(value) {\n    if (this._sheen > 0 !== value > 0) {\n      this.version++;\n    }\n    this._sheen = value;\n  }\n  get clearcoat() {\n    return this._clearcoat;\n  }\n  set clearcoat(value) {\n    if (this._clearcoat > 0 !== value > 0) {\n      this.version++;\n    }\n    this._clearcoat = value;\n  }\n  get iridescence() {\n    return this._iridescence;\n  }\n  set iridescence(value) {\n    if (this._iridescence > 0 !== value > 0) {\n      this.version++;\n    }\n    this._iridescence = value;\n  }\n  get transmission() {\n    return this._transmission;\n  }\n  set transmission(value) {\n    if (this._transmission > 0 !== value > 0) {\n      this.version++;\n    }\n    this._transmission = value;\n  }\n  copy(source) {\n    super.copy(source);\n    this.defines = {\n      \"STANDARD\": \"\",\n      \"PHYSICAL\": \"\"\n    };\n    this.clearcoat = source.clearcoat;\n    this.clearcoatMap = source.clearcoatMap;\n    this.clearcoatRoughness = source.clearcoatRoughness;\n    this.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n    this.clearcoatNormalMap = source.clearcoatNormalMap;\n    this.clearcoatNormalScale.copy(source.clearcoatNormalScale);\n    this.ior = source.ior;\n    this.iridescence = source.iridescence;\n    this.iridescenceMap = source.iridescenceMap;\n    this.iridescenceIOR = source.iridescenceIOR;\n    this.iridescenceThicknessRange = [...source.iridescenceThicknessRange];\n    this.iridescenceThicknessMap = source.iridescenceThicknessMap;\n    this.sheen = source.sheen;\n    this.sheenColor.copy(source.sheenColor);\n    this.sheenColorMap = source.sheenColorMap;\n    this.sheenRoughness = source.sheenRoughness;\n    this.sheenRoughnessMap = source.sheenRoughnessMap;\n    this.transmission = source.transmission;\n    this.transmissionMap = source.transmissionMap;\n    this.thickness = source.thickness;\n    this.thicknessMap = source.thicknessMap;\n    this.attenuationDistance = source.attenuationDistance;\n    this.attenuationColor.copy(source.attenuationColor);\n    this.specularIntensity = source.specularIntensity;\n    this.specularIntensityMap = source.specularIntensityMap;\n    this.specularColor.copy(source.specularColor);\n    this.specularColorMap = source.specularColorMap;\n    return this;\n  }\n}\nclass MeshPhongMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isMeshPhongMaterial = true;\n    this.type = \"MeshPhongMaterial\";\n    this.color = new Color(16777215);\n    this.specular = new Color(1118481);\n    this.shininess = 30;\n    this.map = null;\n    this.lightMap = null;\n    this.lightMapIntensity = 1;\n    this.aoMap = null;\n    this.aoMapIntensity = 1;\n    this.emissive = new Color(0);\n    this.emissiveIntensity = 1;\n    this.emissiveMap = null;\n    this.bumpMap = null;\n    this.bumpScale = 1;\n    this.normalMap = null;\n    this.normalMapType = TangentSpaceNormalMap;\n    this.normalScale = new Vector2(1, 1);\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.specularMap = null;\n    this.alphaMap = null;\n    this.envMap = null;\n    this.combine = MultiplyOperation;\n    this.reflectivity = 1;\n    this.refractionRatio = 0.98;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.wireframeLinecap = \"round\";\n    this.wireframeLinejoin = \"round\";\n    this.flatShading = false;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.specular.copy(source.specular);\n    this.shininess = source.shininess;\n    this.map = source.map;\n    this.lightMap = source.lightMap;\n    this.lightMapIntensity = source.lightMapIntensity;\n    this.aoMap = source.aoMap;\n    this.aoMapIntensity = source.aoMapIntensity;\n    this.emissive.copy(source.emissive);\n    this.emissiveMap = source.emissiveMap;\n    this.emissiveIntensity = source.emissiveIntensity;\n    this.bumpMap = source.bumpMap;\n    this.bumpScale = source.bumpScale;\n    this.normalMap = source.normalMap;\n    this.normalMapType = source.normalMapType;\n    this.normalScale.copy(source.normalScale);\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.specularMap = source.specularMap;\n    this.alphaMap = source.alphaMap;\n    this.envMap = source.envMap;\n    this.combine = source.combine;\n    this.reflectivity = source.reflectivity;\n    this.refractionRatio = source.refractionRatio;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.wireframeLinecap = source.wireframeLinecap;\n    this.wireframeLinejoin = source.wireframeLinejoin;\n    this.flatShading = source.flatShading;\n    this.fog = source.fog;\n    return this;\n  }\n}\nclass MeshToonMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isMeshToonMaterial = true;\n    this.defines = { \"TOON\": \"\" };\n    this.type = \"MeshToonMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.gradientMap = null;\n    this.lightMap = null;\n    this.lightMapIntensity = 1;\n    this.aoMap = null;\n    this.aoMapIntensity = 1;\n    this.emissive = new Color(0);\n    this.emissiveIntensity = 1;\n    this.emissiveMap = null;\n    this.bumpMap = null;\n    this.bumpScale = 1;\n    this.normalMap = null;\n    this.normalMapType = TangentSpaceNormalMap;\n    this.normalScale = new Vector2(1, 1);\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.alphaMap = null;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.wireframeLinecap = \"round\";\n    this.wireframeLinejoin = \"round\";\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.gradientMap = source.gradientMap;\n    this.lightMap = source.lightMap;\n    this.lightMapIntensity = source.lightMapIntensity;\n    this.aoMap = source.aoMap;\n    this.aoMapIntensity = source.aoMapIntensity;\n    this.emissive.copy(source.emissive);\n    this.emissiveMap = source.emissiveMap;\n    this.emissiveIntensity = source.emissiveIntensity;\n    this.bumpMap = source.bumpMap;\n    this.bumpScale = source.bumpScale;\n    this.normalMap = source.normalMap;\n    this.normalMapType = source.normalMapType;\n    this.normalScale.copy(source.normalScale);\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.alphaMap = source.alphaMap;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.wireframeLinecap = source.wireframeLinecap;\n    this.wireframeLinejoin = source.wireframeLinejoin;\n    this.fog = source.fog;\n    return this;\n  }\n}\nclass MeshNormalMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isMeshNormalMaterial = true;\n    this.type = \"MeshNormalMaterial\";\n    this.bumpMap = null;\n    this.bumpScale = 1;\n    this.normalMap = null;\n    this.normalMapType = TangentSpaceNormalMap;\n    this.normalScale = new Vector2(1, 1);\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.flatShading = false;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.bumpMap = source.bumpMap;\n    this.bumpScale = source.bumpScale;\n    this.normalMap = source.normalMap;\n    this.normalMapType = source.normalMapType;\n    this.normalScale.copy(source.normalScale);\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.flatShading = source.flatShading;\n    return this;\n  }\n}\nclass MeshLambertMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isMeshLambertMaterial = true;\n    this.type = \"MeshLambertMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.lightMap = null;\n    this.lightMapIntensity = 1;\n    this.aoMap = null;\n    this.aoMapIntensity = 1;\n    this.emissive = new Color(0);\n    this.emissiveIntensity = 1;\n    this.emissiveMap = null;\n    this.specularMap = null;\n    this.alphaMap = null;\n    this.envMap = null;\n    this.combine = MultiplyOperation;\n    this.reflectivity = 1;\n    this.refractionRatio = 0.98;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.wireframeLinecap = \"round\";\n    this.wireframeLinejoin = \"round\";\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.lightMap = source.lightMap;\n    this.lightMapIntensity = source.lightMapIntensity;\n    this.aoMap = source.aoMap;\n    this.aoMapIntensity = source.aoMapIntensity;\n    this.emissive.copy(source.emissive);\n    this.emissiveMap = source.emissiveMap;\n    this.emissiveIntensity = source.emissiveIntensity;\n    this.specularMap = source.specularMap;\n    this.alphaMap = source.alphaMap;\n    this.envMap = source.envMap;\n    this.combine = source.combine;\n    this.reflectivity = source.reflectivity;\n    this.refractionRatio = source.refractionRatio;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.wireframeLinecap = source.wireframeLinecap;\n    this.wireframeLinejoin = source.wireframeLinejoin;\n    this.fog = source.fog;\n    return this;\n  }\n}\nclass MeshMatcapMaterial extends Material$1 {\n  constructor(parameters) {\n    super();\n    this.isMeshMatcapMaterial = true;\n    this.defines = { \"MATCAP\": \"\" };\n    this.type = \"MeshMatcapMaterial\";\n    this.color = new Color(16777215);\n    this.matcap = null;\n    this.map = null;\n    this.bumpMap = null;\n    this.bumpScale = 1;\n    this.normalMap = null;\n    this.normalMapType = TangentSpaceNormalMap;\n    this.normalScale = new Vector2(1, 1);\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.alphaMap = null;\n    this.flatShading = false;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.defines = { \"MATCAP\": \"\" };\n    this.color.copy(source.color);\n    this.matcap = source.matcap;\n    this.map = source.map;\n    this.bumpMap = source.bumpMap;\n    this.bumpScale = source.bumpScale;\n    this.normalMap = source.normalMap;\n    this.normalMapType = source.normalMapType;\n    this.normalScale.copy(source.normalScale);\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.alphaMap = source.alphaMap;\n    this.flatShading = source.flatShading;\n    this.fog = source.fog;\n    return this;\n  }\n}\nclass LineDashedMaterial extends LineBasicMaterial {\n  constructor(parameters) {\n    super();\n    this.isLineDashedMaterial = true;\n    this.type = \"LineDashedMaterial\";\n    this.scale = 1;\n    this.dashSize = 3;\n    this.gapSize = 1;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.scale = source.scale;\n    this.dashSize = source.dashSize;\n    this.gapSize = source.gapSize;\n    return this;\n  }\n}\nfunction arraySlice(array, from, to) {\n  if (isTypedArray(array)) {\n    return new array.constructor(array.subarray(from, to !== void 0 ? to : array.length));\n  }\n  return array.slice(from, to);\n}\nfunction convertArray(array, type, forceClone) {\n  if (!array || !forceClone && array.constructor === type)\n    return array;\n  if (typeof type.BYTES_PER_ELEMENT === \"number\") {\n    return new type(array);\n  }\n  return Array.prototype.slice.call(array);\n}\nfunction isTypedArray(object) {\n  return ArrayBuffer.isView(object) && !(object instanceof DataView);\n}\nfunction getKeyframeOrder(times) {\n  function compareTime(i, j) {\n    return times[i] - times[j];\n  }\n  const n = times.length;\n  const result = new Array(n);\n  for (let i = 0; i !== n; ++i)\n    result[i] = i;\n  result.sort(compareTime);\n  return result;\n}\nfunction sortedArray(values, stride, order) {\n  const nValues = values.length;\n  const result = new values.constructor(nValues);\n  for (let i = 0, dstOffset = 0; dstOffset !== nValues; ++i) {\n    const srcOffset = order[i] * stride;\n    for (let j = 0; j !== stride; ++j) {\n      result[dstOffset++] = values[srcOffset + j];\n    }\n  }\n  return result;\n}\nfunction flattenJSON(jsonKeys, times, values, valuePropertyName) {\n  let i = 1, key = jsonKeys[0];\n  while (key !== void 0 && key[valuePropertyName] === void 0) {\n    key = jsonKeys[i++];\n  }\n  if (key === void 0)\n    return;\n  let value = key[valuePropertyName];\n  if (value === void 0)\n    return;\n  if (Array.isArray(value)) {\n    do {\n      value = key[valuePropertyName];\n      if (value !== void 0) {\n        times.push(key.time);\n        values.push.apply(values, value);\n      }\n      key = jsonKeys[i++];\n    } while (key !== void 0);\n  } else if (value.toArray !== void 0) {\n    do {\n      value = key[valuePropertyName];\n      if (value !== void 0) {\n        times.push(key.time);\n        value.toArray(values, values.length);\n      }\n      key = jsonKeys[i++];\n    } while (key !== void 0);\n  } else {\n    do {\n      value = key[valuePropertyName];\n      if (value !== void 0) {\n        times.push(key.time);\n        values.push(value);\n      }\n      key = jsonKeys[i++];\n    } while (key !== void 0);\n  }\n}\nfunction subclip(sourceClip, name, startFrame, endFrame, fps = 30) {\n  const clip = sourceClip.clone();\n  clip.name = name;\n  const tracks = [];\n  for (let i = 0; i < clip.tracks.length; ++i) {\n    const track = clip.tracks[i];\n    const valueSize = track.getValueSize();\n    const times = [];\n    const values = [];\n    for (let j = 0; j < track.times.length; ++j) {\n      const frame = track.times[j] * fps;\n      if (frame < startFrame || frame >= endFrame)\n        continue;\n      times.push(track.times[j]);\n      for (let k = 0; k < valueSize; ++k) {\n        values.push(track.values[j * valueSize + k]);\n      }\n    }\n    if (times.length === 0)\n      continue;\n    track.times = convertArray(times, track.times.constructor);\n    track.values = convertArray(values, track.values.constructor);\n    tracks.push(track);\n  }\n  clip.tracks = tracks;\n  let minStartTime = Infinity;\n  for (let i = 0; i < clip.tracks.length; ++i) {\n    if (minStartTime > clip.tracks[i].times[0]) {\n      minStartTime = clip.tracks[i].times[0];\n    }\n  }\n  for (let i = 0; i < clip.tracks.length; ++i) {\n    clip.tracks[i].shift(-1 * minStartTime);\n  }\n  clip.resetDuration();\n  return clip;\n}\nfunction makeClipAdditive(targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30) {\n  if (fps <= 0)\n    fps = 30;\n  const numTracks = referenceClip.tracks.length;\n  const referenceTime = referenceFrame / fps;\n  for (let i = 0; i < numTracks; ++i) {\n    const referenceTrack = referenceClip.tracks[i];\n    const referenceTrackType = referenceTrack.ValueTypeName;\n    if (referenceTrackType === \"bool\" || referenceTrackType === \"string\")\n      continue;\n    const targetTrack = targetClip.tracks.find(function(track) {\n      return track.name === referenceTrack.name && track.ValueTypeName === referenceTrackType;\n    });\n    if (targetTrack === void 0)\n      continue;\n    let referenceOffset = 0;\n    const referenceValueSize = referenceTrack.getValueSize();\n    if (referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n      referenceOffset = referenceValueSize / 3;\n    }\n    let targetOffset = 0;\n    const targetValueSize = targetTrack.getValueSize();\n    if (targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n      targetOffset = targetValueSize / 3;\n    }\n    const lastIndex = referenceTrack.times.length - 1;\n    let referenceValue;\n    if (referenceTime <= referenceTrack.times[0]) {\n      const startIndex = referenceOffset;\n      const endIndex = referenceValueSize - referenceOffset;\n      referenceValue = arraySlice(referenceTrack.values, startIndex, endIndex);\n    } else if (referenceTime >= referenceTrack.times[lastIndex]) {\n      const startIndex = lastIndex * referenceValueSize + referenceOffset;\n      const endIndex = startIndex + referenceValueSize - referenceOffset;\n      referenceValue = arraySlice(referenceTrack.values, startIndex, endIndex);\n    } else {\n      const interpolant = referenceTrack.createInterpolant();\n      const startIndex = referenceOffset;\n      const endIndex = referenceValueSize - referenceOffset;\n      interpolant.evaluate(referenceTime);\n      referenceValue = arraySlice(interpolant.resultBuffer, startIndex, endIndex);\n    }\n    if (referenceTrackType === \"quaternion\") {\n      const referenceQuat = new Quaternion().fromArray(referenceValue).normalize().conjugate();\n      referenceQuat.toArray(referenceValue);\n    }\n    const numTimes = targetTrack.times.length;\n    for (let j = 0; j < numTimes; ++j) {\n      const valueStart = j * targetValueSize + targetOffset;\n      if (referenceTrackType === \"quaternion\") {\n        Quaternion.multiplyQuaternionsFlat(\n          targetTrack.values,\n          valueStart,\n          referenceValue,\n          0,\n          targetTrack.values,\n          valueStart\n        );\n      } else {\n        const valueEnd = targetValueSize - targetOffset * 2;\n        for (let k = 0; k < valueEnd; ++k) {\n          targetTrack.values[valueStart + k] -= referenceValue[k];\n        }\n      }\n    }\n  }\n  targetClip.blendMode = AdditiveAnimationBlendMode;\n  return targetClip;\n}\nvar AnimationUtils = /* @__PURE__ */ Object.freeze({\n  __proto__: null,\n  arraySlice,\n  convertArray,\n  isTypedArray,\n  getKeyframeOrder,\n  sortedArray,\n  flattenJSON,\n  subclip,\n  makeClipAdditive\n});\nclass Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    this.parameterPositions = parameterPositions;\n    this._cachedIndex = 0;\n    this.resultBuffer = resultBuffer !== void 0 ? resultBuffer : new sampleValues.constructor(sampleSize);\n    this.sampleValues = sampleValues;\n    this.valueSize = sampleSize;\n    this.settings = null;\n    this.DefaultSettings_ = {};\n  }\n  evaluate(t) {\n    const pp = this.parameterPositions;\n    let i1 = this._cachedIndex, t1 = pp[i1], t0 = pp[i1 - 1];\n    validate_interval: {\n      seek: {\n        let right;\n        linear_scan: {\n          forward_scan:\n            if (!(t < t1)) {\n              for (let giveUpAt = i1 + 2; ; ) {\n                if (t1 === void 0) {\n                  if (t < t0)\n                    break forward_scan;\n                  i1 = pp.length;\n                  this._cachedIndex = i1;\n                  return this.copySampleValue_(i1 - 1);\n                }\n                if (i1 === giveUpAt)\n                  break;\n                t0 = t1;\n                t1 = pp[++i1];\n                if (t < t1) {\n                  break seek;\n                }\n              }\n              right = pp.length;\n              break linear_scan;\n            }\n          if (!(t >= t0)) {\n            const t1global = pp[1];\n            if (t < t1global) {\n              i1 = 2;\n              t0 = t1global;\n            }\n            for (let giveUpAt = i1 - 2; ; ) {\n              if (t0 === void 0) {\n                this._cachedIndex = 0;\n                return this.copySampleValue_(0);\n              }\n              if (i1 === giveUpAt)\n                break;\n              t1 = t0;\n              t0 = pp[--i1 - 1];\n              if (t >= t0) {\n                break seek;\n              }\n            }\n            right = i1;\n            i1 = 0;\n            break linear_scan;\n          }\n          break validate_interval;\n        }\n        while (i1 < right) {\n          const mid = i1 + right >>> 1;\n          if (t < pp[mid]) {\n            right = mid;\n          } else {\n            i1 = mid + 1;\n          }\n        }\n        t1 = pp[i1];\n        t0 = pp[i1 - 1];\n        if (t0 === void 0) {\n          this._cachedIndex = 0;\n          return this.copySampleValue_(0);\n        }\n        if (t1 === void 0) {\n          i1 = pp.length;\n          this._cachedIndex = i1;\n          return this.copySampleValue_(i1 - 1);\n        }\n      }\n      this._cachedIndex = i1;\n      this.intervalChanged_(i1, t0, t1);\n    }\n    return this.interpolate_(i1, t0, t, t1);\n  }\n  getSettings_() {\n    return this.settings || this.DefaultSettings_;\n  }\n  copySampleValue_(index) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset = index * stride;\n    for (let i = 0; i !== stride; ++i) {\n      result[i] = values[offset + i];\n    }\n    return result;\n  }\n  interpolate_() {\n    throw new Error(\"call to abstract method\");\n  }\n  intervalChanged_() {\n  }\n}\nclass CubicInterpolant extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n    this._weightPrev = -0;\n    this._offsetPrev = -0;\n    this._weightNext = -0;\n    this._offsetNext = -0;\n    this.DefaultSettings_ = {\n      endingStart: ZeroCurvatureEnding,\n      endingEnd: ZeroCurvatureEnding\n    };\n  }\n  intervalChanged_(i1, t0, t1) {\n    const pp = this.parameterPositions;\n    let iPrev = i1 - 2, iNext = i1 + 1, tPrev = pp[iPrev], tNext = pp[iNext];\n    if (tPrev === void 0) {\n      switch (this.getSettings_().endingStart) {\n        case ZeroSlopeEnding:\n          iPrev = i1;\n          tPrev = 2 * t0 - t1;\n          break;\n        case WrapAroundEnding:\n          iPrev = pp.length - 2;\n          tPrev = t0 + pp[iPrev] - pp[iPrev + 1];\n          break;\n        default:\n          iPrev = i1;\n          tPrev = t1;\n      }\n    }\n    if (tNext === void 0) {\n      switch (this.getSettings_().endingEnd) {\n        case ZeroSlopeEnding:\n          iNext = i1;\n          tNext = 2 * t1 - t0;\n          break;\n        case WrapAroundEnding:\n          iNext = 1;\n          tNext = t1 + pp[1] - pp[0];\n          break;\n        default:\n          iNext = i1 - 1;\n          tNext = t0;\n      }\n    }\n    const halfDt = (t1 - t0) * 0.5, stride = this.valueSize;\n    this._weightPrev = halfDt / (t0 - tPrev);\n    this._weightNext = halfDt / (tNext - t1);\n    this._offsetPrev = iPrev * stride;\n    this._offsetNext = iNext * stride;\n  }\n  interpolate_(i1, t0, t, t1) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, o1 = i1 * stride, o0 = o1 - stride, oP = this._offsetPrev, oN = this._offsetNext, wP = this._weightPrev, wN = this._weightNext, p = (t - t0) / (t1 - t0), pp = p * p, ppp = pp * p;\n    const sP = -wP * ppp + 2 * wP * pp - wP * p;\n    const s0 = (1 + wP) * ppp + (-1.5 - 2 * wP) * pp + (-0.5 + wP) * p + 1;\n    const s1 = (-1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p;\n    const sN = wN * ppp - wN * pp;\n    for (let i = 0; i !== stride; ++i) {\n      result[i] = sP * values[oP + i] + s0 * values[o0 + i] + s1 * values[o1 + i] + sN * values[oN + i];\n    }\n    return result;\n  }\n}\nclass LinearInterpolant extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  interpolate_(i1, t0, t, t1) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset1 = i1 * stride, offset0 = offset1 - stride, weight1 = (t - t0) / (t1 - t0), weight0 = 1 - weight1;\n    for (let i = 0; i !== stride; ++i) {\n      result[i] = values[offset0 + i] * weight0 + values[offset1 + i] * weight1;\n    }\n    return result;\n  }\n}\nclass DiscreteInterpolant extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  interpolate_(i1) {\n    return this.copySampleValue_(i1 - 1);\n  }\n}\nclass KeyframeTrack {\n  constructor(name, times, values, interpolation) {\n    if (name === void 0)\n      throw new Error(\"THREE.KeyframeTrack: track name is undefined\");\n    if (times === void 0 || times.length === 0)\n      throw new Error(\"THREE.KeyframeTrack: no keyframes in track named \" + name);\n    this.name = name;\n    this.times = convertArray(times, this.TimeBufferType);\n    this.values = convertArray(values, this.ValueBufferType);\n    this.setInterpolation(interpolation || this.DefaultInterpolation);\n  }\n  static toJSON(track) {\n    const trackType = track.constructor;\n    let json;\n    if (trackType.toJSON !== this.toJSON) {\n      json = trackType.toJSON(track);\n    } else {\n      json = {\n        \"name\": track.name,\n        \"times\": convertArray(track.times, Array),\n        \"values\": convertArray(track.values, Array)\n      };\n      const interpolation = track.getInterpolation();\n      if (interpolation !== track.DefaultInterpolation) {\n        json.interpolation = interpolation;\n      }\n    }\n    json.type = track.ValueTypeName;\n    return json;\n  }\n  InterpolantFactoryMethodDiscrete(result) {\n    return new DiscreteInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n  InterpolantFactoryMethodLinear(result) {\n    return new LinearInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n  InterpolantFactoryMethodSmooth(result) {\n    return new CubicInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n  setInterpolation(interpolation) {\n    let factoryMethod;\n    switch (interpolation) {\n      case InterpolateDiscrete:\n        factoryMethod = this.InterpolantFactoryMethodDiscrete;\n        break;\n      case InterpolateLinear:\n        factoryMethod = this.InterpolantFactoryMethodLinear;\n        break;\n      case InterpolateSmooth:\n        factoryMethod = this.InterpolantFactoryMethodSmooth;\n        break;\n    }\n    if (factoryMethod === void 0) {\n      const message = \"unsupported interpolation for \" + this.ValueTypeName + \" keyframe track named \" + this.name;\n      if (this.createInterpolant === void 0) {\n        if (interpolation !== this.DefaultInterpolation) {\n          this.setInterpolation(this.DefaultInterpolation);\n        } else {\n          throw new Error(message);\n        }\n      }\n      console.warn(\"THREE.KeyframeTrack:\", message);\n      return this;\n    }\n    this.createInterpolant = factoryMethod;\n    return this;\n  }\n  getInterpolation() {\n    switch (this.createInterpolant) {\n      case this.InterpolantFactoryMethodDiscrete:\n        return InterpolateDiscrete;\n      case this.InterpolantFactoryMethodLinear:\n        return InterpolateLinear;\n      case this.InterpolantFactoryMethodSmooth:\n        return InterpolateSmooth;\n    }\n  }\n  getValueSize() {\n    return this.values.length / this.times.length;\n  }\n  shift(timeOffset) {\n    if (timeOffset !== 0) {\n      const times = this.times;\n      for (let i = 0, n = times.length; i !== n; ++i) {\n        times[i] += timeOffset;\n      }\n    }\n    return this;\n  }\n  scale(timeScale) {\n    if (timeScale !== 1) {\n      const times = this.times;\n      for (let i = 0, n = times.length; i !== n; ++i) {\n        times[i] *= timeScale;\n      }\n    }\n    return this;\n  }\n  trim(startTime, endTime) {\n    const times = this.times, nKeys = times.length;\n    let from = 0, to = nKeys - 1;\n    while (from !== nKeys && times[from] < startTime) {\n      ++from;\n    }\n    while (to !== -1 && times[to] > endTime) {\n      --to;\n    }\n    ++to;\n    if (from !== 0 || to !== nKeys) {\n      if (from >= to) {\n        to = Math.max(to, 1);\n        from = to - 1;\n      }\n      const stride = this.getValueSize();\n      this.times = arraySlice(times, from, to);\n      this.values = arraySlice(this.values, from * stride, to * stride);\n    }\n    return this;\n  }\n  validate() {\n    let valid = true;\n    const valueSize = this.getValueSize();\n    if (valueSize - Math.floor(valueSize) !== 0) {\n      console.error(\"THREE.KeyframeTrack: Invalid value size in track.\", this);\n      valid = false;\n    }\n    const times = this.times, values = this.values, nKeys = times.length;\n    if (nKeys === 0) {\n      console.error(\"THREE.KeyframeTrack: Track is empty.\", this);\n      valid = false;\n    }\n    let prevTime = null;\n    for (let i = 0; i !== nKeys; i++) {\n      const currTime = times[i];\n      if (typeof currTime === \"number\" && isNaN(currTime)) {\n        console.error(\"THREE.KeyframeTrack: Time is not a valid number.\", this, i, currTime);\n        valid = false;\n        break;\n      }\n      if (prevTime !== null && prevTime > currTime) {\n        console.error(\"THREE.KeyframeTrack: Out of order keys.\", this, i, currTime, prevTime);\n        valid = false;\n        break;\n      }\n      prevTime = currTime;\n    }\n    if (values !== void 0) {\n      if (isTypedArray(values)) {\n        for (let i = 0, n = values.length; i !== n; ++i) {\n          const value = values[i];\n          if (isNaN(value)) {\n            console.error(\"THREE.KeyframeTrack: Value is not a valid number.\", this, i, value);\n            valid = false;\n            break;\n          }\n        }\n      }\n    }\n    return valid;\n  }\n  optimize() {\n    const times = arraySlice(this.times), values = arraySlice(this.values), stride = this.getValueSize(), smoothInterpolation = this.getInterpolation() === InterpolateSmooth, lastIndex = times.length - 1;\n    let writeIndex = 1;\n    for (let i = 1; i < lastIndex; ++i) {\n      let keep = false;\n      const time = times[i];\n      const timeNext = times[i + 1];\n      if (time !== timeNext && (i !== 1 || time !== times[0])) {\n        if (!smoothInterpolation) {\n          const offset = i * stride, offsetP = offset - stride, offsetN = offset + stride;\n          for (let j = 0; j !== stride; ++j) {\n            const value = values[offset + j];\n            if (value !== values[offsetP + j] || value !== values[offsetN + j]) {\n              keep = true;\n              break;\n            }\n          }\n        } else {\n          keep = true;\n        }\n      }\n      if (keep) {\n        if (i !== writeIndex) {\n          times[writeIndex] = times[i];\n          const readOffset = i * stride, writeOffset = writeIndex * stride;\n          for (let j = 0; j !== stride; ++j) {\n            values[writeOffset + j] = values[readOffset + j];\n          }\n        }\n        ++writeIndex;\n      }\n    }\n    if (lastIndex > 0) {\n      times[writeIndex] = times[lastIndex];\n      for (let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++j) {\n        values[writeOffset + j] = values[readOffset + j];\n      }\n      ++writeIndex;\n    }\n    if (writeIndex !== times.length) {\n      this.times = arraySlice(times, 0, writeIndex);\n      this.values = arraySlice(values, 0, writeIndex * stride);\n    } else {\n      this.times = times;\n      this.values = values;\n    }\n    return this;\n  }\n  clone() {\n    const times = arraySlice(this.times, 0);\n    const values = arraySlice(this.values, 0);\n    const TypedKeyframeTrack = this.constructor;\n    const track = new TypedKeyframeTrack(this.name, times, values);\n    track.createInterpolant = this.createInterpolant;\n    return track;\n  }\n}\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nclass BooleanKeyframeTrack extends KeyframeTrack {\n}\nBooleanKeyframeTrack.prototype.ValueTypeName = \"bool\";\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nclass ColorKeyframeTrack extends KeyframeTrack {\n}\nColorKeyframeTrack.prototype.ValueTypeName = \"color\";\nclass NumberKeyframeTrack extends KeyframeTrack {\n}\nNumberKeyframeTrack.prototype.ValueTypeName = \"number\";\nclass QuaternionLinearInterpolant extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  interpolate_(i1, t0, t, t1) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, alpha = (t - t0) / (t1 - t0);\n    let offset = i1 * stride;\n    for (let end = offset + stride; offset !== end; offset += 4) {\n      Quaternion.slerpFlat(result, 0, values, offset - stride, values, offset, alpha);\n    }\n    return result;\n  }\n}\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n  InterpolantFactoryMethodLinear(result) {\n    return new QuaternionLinearInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n}\nQuaternionKeyframeTrack.prototype.ValueTypeName = \"quaternion\";\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nclass StringKeyframeTrack extends KeyframeTrack {\n}\nStringKeyframeTrack.prototype.ValueTypeName = \"string\";\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nclass VectorKeyframeTrack extends KeyframeTrack {\n}\nVectorKeyframeTrack.prototype.ValueTypeName = \"vector\";\nclass AnimationClip {\n  constructor(name, duration = -1, tracks, blendMode = NormalAnimationBlendMode) {\n    this.name = name;\n    this.tracks = tracks;\n    this.duration = duration;\n    this.blendMode = blendMode;\n    this.uuid = generateUUID();\n    if (this.duration < 0) {\n      this.resetDuration();\n    }\n  }\n  static parse(json) {\n    const tracks = [], jsonTracks = json.tracks, frameTime = 1 / (json.fps || 1);\n    for (let i = 0, n = jsonTracks.length; i !== n; ++i) {\n      tracks.push(parseKeyframeTrack(jsonTracks[i]).scale(frameTime));\n    }\n    const clip = new this(json.name, json.duration, tracks, json.blendMode);\n    clip.uuid = json.uuid;\n    return clip;\n  }\n  static toJSON(clip) {\n    const tracks = [], clipTracks = clip.tracks;\n    const json = {\n      \"name\": clip.name,\n      \"duration\": clip.duration,\n      \"tracks\": tracks,\n      \"uuid\": clip.uuid,\n      \"blendMode\": clip.blendMode\n    };\n    for (let i = 0, n = clipTracks.length; i !== n; ++i) {\n      tracks.push(KeyframeTrack.toJSON(clipTracks[i]));\n    }\n    return json;\n  }\n  static CreateFromMorphTargetSequence(name, morphTargetSequence, fps, noLoop) {\n    const numMorphTargets = morphTargetSequence.length;\n    const tracks = [];\n    for (let i = 0; i < numMorphTargets; i++) {\n      let times = [];\n      let values = [];\n      times.push(\n        (i + numMorphTargets - 1) % numMorphTargets,\n        i,\n        (i + 1) % numMorphTargets\n      );\n      values.push(0, 1, 0);\n      const order = getKeyframeOrder(times);\n      times = sortedArray(times, 1, order);\n      values = sortedArray(values, 1, order);\n      if (!noLoop && times[0] === 0) {\n        times.push(numMorphTargets);\n        values.push(values[0]);\n      }\n      tracks.push(\n        new NumberKeyframeTrack(\n          \".morphTargetInfluences[\" + morphTargetSequence[i].name + \"]\",\n          times,\n          values\n        ).scale(1 / fps)\n      );\n    }\n    return new this(name, -1, tracks);\n  }\n  static findByName(objectOrClipArray, name) {\n    let clipArray = objectOrClipArray;\n    if (!Array.isArray(objectOrClipArray)) {\n      const o = objectOrClipArray;\n      clipArray = o.geometry && o.geometry.animations || o.animations;\n    }\n    for (let i = 0; i < clipArray.length; i++) {\n      if (clipArray[i].name === name) {\n        return clipArray[i];\n      }\n    }\n    return null;\n  }\n  static CreateClipsFromMorphTargetSequences(morphTargets, fps, noLoop) {\n    const animationToMorphTargets = {};\n    const pattern = /^([\\w-]*?)([\\d]+)$/;\n    for (let i = 0, il = morphTargets.length; i < il; i++) {\n      const morphTarget = morphTargets[i];\n      const parts = morphTarget.name.match(pattern);\n      if (parts && parts.length > 1) {\n        const name = parts[1];\n        let animationMorphTargets = animationToMorphTargets[name];\n        if (!animationMorphTargets) {\n          animationToMorphTargets[name] = animationMorphTargets = [];\n        }\n        animationMorphTargets.push(morphTarget);\n      }\n    }\n    const clips = [];\n    for (const name in animationToMorphTargets) {\n      clips.push(this.CreateFromMorphTargetSequence(name, animationToMorphTargets[name], fps, noLoop));\n    }\n    return clips;\n  }\n  static parseAnimation(animation, bones) {\n    if (!animation) {\n      console.error(\"THREE.AnimationClip: No animation in JSONLoader data.\");\n      return null;\n    }\n    const addNonemptyTrack = function(trackType, trackName, animationKeys, propertyName, destTracks) {\n      if (animationKeys.length !== 0) {\n        const times = [];\n        const values = [];\n        flattenJSON(animationKeys, times, values, propertyName);\n        if (times.length !== 0) {\n          destTracks.push(new trackType(trackName, times, values));\n        }\n      }\n    };\n    const tracks = [];\n    const clipName = animation.name || \"default\";\n    const fps = animation.fps || 30;\n    const blendMode = animation.blendMode;\n    let duration = animation.length || -1;\n    const hierarchyTracks = animation.hierarchy || [];\n    for (let h = 0; h < hierarchyTracks.length; h++) {\n      const animationKeys = hierarchyTracks[h].keys;\n      if (!animationKeys || animationKeys.length === 0)\n        continue;\n      if (animationKeys[0].morphTargets) {\n        const morphTargetNames = {};\n        let k;\n        for (k = 0; k < animationKeys.length; k++) {\n          if (animationKeys[k].morphTargets) {\n            for (let m = 0; m < animationKeys[k].morphTargets.length; m++) {\n              morphTargetNames[animationKeys[k].morphTargets[m]] = -1;\n            }\n          }\n        }\n        for (const morphTargetName in morphTargetNames) {\n          const times = [];\n          const values = [];\n          for (let m = 0; m !== animationKeys[k].morphTargets.length; ++m) {\n            const animationKey = animationKeys[k];\n            times.push(animationKey.time);\n            values.push(animationKey.morphTarget === morphTargetName ? 1 : 0);\n          }\n          tracks.push(new NumberKeyframeTrack(\".morphTargetInfluence[\" + morphTargetName + \"]\", times, values));\n        }\n        duration = morphTargetNames.length * fps;\n      } else {\n        const boneName = \".bones[\" + bones[h].name + \"]\";\n        addNonemptyTrack(\n          VectorKeyframeTrack,\n          boneName + \".position\",\n          animationKeys,\n          \"pos\",\n          tracks\n        );\n        addNonemptyTrack(\n          QuaternionKeyframeTrack,\n          boneName + \".quaternion\",\n          animationKeys,\n          \"rot\",\n          tracks\n        );\n        addNonemptyTrack(\n          VectorKeyframeTrack,\n          boneName + \".scale\",\n          animationKeys,\n          \"scl\",\n          tracks\n        );\n      }\n    }\n    if (tracks.length === 0) {\n      return null;\n    }\n    const clip = new this(clipName, duration, tracks, blendMode);\n    return clip;\n  }\n  resetDuration() {\n    const tracks = this.tracks;\n    let duration = 0;\n    for (let i = 0, n = tracks.length; i !== n; ++i) {\n      const track = this.tracks[i];\n      duration = Math.max(duration, track.times[track.times.length - 1]);\n    }\n    this.duration = duration;\n    return this;\n  }\n  trim() {\n    for (let i = 0; i < this.tracks.length; i++) {\n      this.tracks[i].trim(0, this.duration);\n    }\n    return this;\n  }\n  validate() {\n    let valid = true;\n    for (let i = 0; i < this.tracks.length; i++) {\n      valid = valid && this.tracks[i].validate();\n    }\n    return valid;\n  }\n  optimize() {\n    for (let i = 0; i < this.tracks.length; i++) {\n      this.tracks[i].optimize();\n    }\n    return this;\n  }\n  clone() {\n    const tracks = [];\n    for (let i = 0; i < this.tracks.length; i++) {\n      tracks.push(this.tracks[i].clone());\n    }\n    return new this.constructor(this.name, this.duration, tracks, this.blendMode);\n  }\n  toJSON() {\n    return this.constructor.toJSON(this);\n  }\n}\nfunction getTrackTypeForValueTypeName(typeName) {\n  switch (typeName.toLowerCase()) {\n    case \"scalar\":\n    case \"double\":\n    case \"float\":\n    case \"number\":\n    case \"integer\":\n      return NumberKeyframeTrack;\n    case \"vector\":\n    case \"vector2\":\n    case \"vector3\":\n    case \"vector4\":\n      return VectorKeyframeTrack;\n    case \"color\":\n      return ColorKeyframeTrack;\n    case \"quaternion\":\n      return QuaternionKeyframeTrack;\n    case \"bool\":\n    case \"boolean\":\n      return BooleanKeyframeTrack;\n    case \"string\":\n      return StringKeyframeTrack;\n  }\n  throw new Error(\"THREE.KeyframeTrack: Unsupported typeName: \" + typeName);\n}\nfunction parseKeyframeTrack(json) {\n  if (json.type === void 0) {\n    throw new Error(\"THREE.KeyframeTrack: track type undefined, can not parse\");\n  }\n  const trackType = getTrackTypeForValueTypeName(json.type);\n  if (json.times === void 0) {\n    const times = [], values = [];\n    flattenJSON(json.keys, times, values, \"value\");\n    json.times = times;\n    json.values = values;\n  }\n  if (trackType.parse !== void 0) {\n    return trackType.parse(json);\n  } else {\n    return new trackType(json.name, json.times, json.values, json.interpolation);\n  }\n}\nconst Cache = {\n  enabled: false,\n  files: {},\n  add: function(key, file) {\n    if (this.enabled === false)\n      return;\n    this.files[key] = file;\n  },\n  get: function(key) {\n    if (this.enabled === false)\n      return;\n    return this.files[key];\n  },\n  remove: function(key) {\n    delete this.files[key];\n  },\n  clear: function() {\n    this.files = {};\n  }\n};\nclass LoadingManager {\n  constructor(onLoad, onProgress, onError) {\n    const scope = this;\n    let isLoading = false;\n    let itemsLoaded = 0;\n    let itemsTotal = 0;\n    let urlModifier = void 0;\n    const handlers = [];\n    this.onStart = void 0;\n    this.onLoad = onLoad;\n    this.onProgress = onProgress;\n    this.onError = onError;\n    this.itemStart = function(url) {\n      itemsTotal++;\n      if (isLoading === false) {\n        if (scope.onStart !== void 0) {\n          scope.onStart(url, itemsLoaded, itemsTotal);\n        }\n      }\n      isLoading = true;\n    };\n    this.itemEnd = function(url) {\n      itemsLoaded++;\n      if (scope.onProgress !== void 0) {\n        scope.onProgress(url, itemsLoaded, itemsTotal);\n      }\n      if (itemsLoaded === itemsTotal) {\n        isLoading = false;\n        if (scope.onLoad !== void 0) {\n          scope.onLoad();\n        }\n      }\n    };\n    this.itemError = function(url) {\n      if (scope.onError !== void 0) {\n        scope.onError(url);\n      }\n    };\n    this.resolveURL = function(url) {\n      if (urlModifier) {\n        return urlModifier(url);\n      }\n      return url;\n    };\n    this.setURLModifier = function(transform) {\n      urlModifier = transform;\n      return this;\n    };\n    this.addHandler = function(regex, loader) {\n      handlers.push(regex, loader);\n      return this;\n    };\n    this.removeHandler = function(regex) {\n      const index = handlers.indexOf(regex);\n      if (index !== -1) {\n        handlers.splice(index, 2);\n      }\n      return this;\n    };\n    this.getHandler = function(file) {\n      for (let i = 0, l = handlers.length; i < l; i += 2) {\n        const regex = handlers[i];\n        const loader = handlers[i + 1];\n        if (regex.global)\n          regex.lastIndex = 0;\n        if (regex.test(file)) {\n          return loader;\n        }\n      }\n      return null;\n    };\n  }\n}\nconst DefaultLoadingManager = /* @__PURE__ */ new LoadingManager();\nclass Loader {\n  constructor(manager) {\n    this.manager = manager !== void 0 ? manager : DefaultLoadingManager;\n    this.crossOrigin = \"anonymous\";\n    this.withCredentials = false;\n    this.path = \"\";\n    this.resourcePath = \"\";\n    this.requestHeader = {};\n  }\n  load() {\n  }\n  loadAsync(url, onProgress) {\n    const scope = this;\n    return new Promise(function(resolve, reject) {\n      scope.load(url, resolve, onProgress, reject);\n    });\n  }\n  parse() {\n  }\n  setCrossOrigin(crossOrigin) {\n    this.crossOrigin = crossOrigin;\n    return this;\n  }\n  setWithCredentials(value) {\n    this.withCredentials = value;\n    return this;\n  }\n  setPath(path) {\n    this.path = path;\n    return this;\n  }\n  setResourcePath(resourcePath) {\n    this.resourcePath = resourcePath;\n    return this;\n  }\n  setRequestHeader(requestHeader2) {\n    this.requestHeader = requestHeader2;\n    return this;\n  }\n}\nconst loading = {};\nclass HttpError extends Error {\n  constructor(message, response) {\n    super(message);\n    this.response = response;\n  }\n}\nclass FileLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    if (url === void 0)\n      url = \"\";\n    if (this.path !== void 0)\n      url = this.path + url;\n    url = this.manager.resolveURL(url);\n    const cached = Cache.get(url);\n    if (cached !== void 0) {\n      this.manager.itemStart(url);\n      setTimeout(() => {\n        if (onLoad)\n          onLoad(cached);\n        this.manager.itemEnd(url);\n      }, 0);\n      return cached;\n    }\n    if (loading[url] !== void 0) {\n      loading[url].push({\n        onLoad,\n        onProgress,\n        onError\n      });\n      return;\n    }\n    loading[url] = [];\n    loading[url].push({\n      onLoad,\n      onProgress,\n      onError\n    });\n    const req = new Request(url, {\n      headers: new Headers(this.requestHeader),\n      credentials: this.withCredentials ? \"include\" : \"same-origin\"\n    });\n    const mimeType = this.mimeType;\n    const responseType = this.responseType;\n    fetch(req).then((response) => {\n      if (response.status === 200 || response.status === 0) {\n        if (response.status === 0) {\n          console.warn(\"THREE.FileLoader: HTTP Status 0 received.\");\n        }\n        if (typeof ReadableStream === \"undefined\" || response.body === void 0 || response.body.getReader === void 0) {\n          return response;\n        }\n        const callbacks = loading[url];\n        const reader = response.body.getReader();\n        const contentLength = response.headers.get(\"Content-Length\");\n        const total = contentLength ? parseInt(contentLength) : 0;\n        const lengthComputable = total !== 0;\n        let loaded = 0;\n        const stream = new ReadableStream({\n          start(controller) {\n            readData();\n            function readData() {\n              reader.read().then(({ done, value }) => {\n                if (done) {\n                  controller.close();\n                } else {\n                  loaded += value.byteLength;\n                  const event = new ProgressEvent(\"progress\", { lengthComputable, loaded, total });\n                  for (let i = 0, il = callbacks.length; i < il; i++) {\n                    const callback = callbacks[i];\n                    if (callback.onProgress)\n                      callback.onProgress(event);\n                  }\n                  controller.enqueue(value);\n                  readData();\n                }\n              });\n            }\n          }\n        });\n        return new Response(stream);\n      } else {\n        throw new HttpError(`fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response);\n      }\n    }).then((response) => {\n      switch (responseType) {\n        case \"arraybuffer\":\n          return response.arrayBuffer();\n        case \"blob\":\n          return response.blob();\n        case \"document\":\n          return response.text().then((text) => {\n            const parser = new DOMParser();\n            return parser.parseFromString(text, mimeType);\n          });\n        case \"json\":\n          return response.json();\n        default:\n          if (mimeType === void 0) {\n            return response.text();\n          } else {\n            const re = /charset=\"?([^;\"\\s]*)\"?/i;\n            const exec = re.exec(mimeType);\n            const label = exec && exec[1] ? exec[1].toLowerCase() : void 0;\n            const decoder = new TextDecoder(label);\n            return response.arrayBuffer().then((ab) => decoder.decode(ab));\n          }\n      }\n    }).then((data) => {\n      Cache.add(url, data);\n      const callbacks = loading[url];\n      delete loading[url];\n      for (let i = 0, il = callbacks.length; i < il; i++) {\n        const callback = callbacks[i];\n        if (callback.onLoad)\n          callback.onLoad(data);\n      }\n    }).catch((err2) => {\n      const callbacks = loading[url];\n      if (callbacks === void 0) {\n        this.manager.itemError(url);\n        throw err2;\n      }\n      delete loading[url];\n      for (let i = 0, il = callbacks.length; i < il; i++) {\n        const callback = callbacks[i];\n        if (callback.onError)\n          callback.onError(err2);\n      }\n      this.manager.itemError(url);\n    }).finally(() => {\n      this.manager.itemEnd(url);\n    });\n    this.manager.itemStart(url);\n  }\n  setResponseType(value) {\n    this.responseType = value;\n    return this;\n  }\n  setMimeType(value) {\n    this.mimeType = value;\n    return this;\n  }\n}\nclass AnimationLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    loader.load(url, function(text) {\n      try {\n        onLoad(scope.parse(JSON.parse(text)));\n      } catch (e) {\n        if (onError) {\n          onError(e);\n        } else {\n          console.error(e);\n        }\n        scope.manager.itemError(url);\n      }\n    }, onProgress, onError);\n  }\n  parse(json) {\n    const animations = [];\n    for (let i = 0; i < json.length; i++) {\n      const clip = AnimationClip.parse(json[i]);\n      animations.push(clip);\n    }\n    return animations;\n  }\n}\nclass CompressedTextureLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const images = [];\n    const texture = new CompressedTexture();\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(scope.withCredentials);\n    let loaded = 0;\n    function loadTexture(i) {\n      loader.load(url[i], function(buffer) {\n        const texDatas = scope.parse(buffer, true);\n        images[i] = {\n          width: texDatas.width,\n          height: texDatas.height,\n          format: texDatas.format,\n          mipmaps: texDatas.mipmaps\n        };\n        loaded += 1;\n        if (loaded === 6) {\n          if (texDatas.mipmapCount === 1)\n            texture.minFilter = LinearFilter;\n          texture.image = images;\n          texture.format = texDatas.format;\n          texture.needsUpdate = true;\n          if (onLoad)\n            onLoad(texture);\n        }\n      }, onProgress, onError);\n    }\n    if (Array.isArray(url)) {\n      for (let i = 0, il = url.length; i < il; ++i) {\n        loadTexture(i);\n      }\n    } else {\n      loader.load(url, function(buffer) {\n        const texDatas = scope.parse(buffer, true);\n        if (texDatas.isCubemap) {\n          const faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n          for (let f = 0; f < faces; f++) {\n            images[f] = { mipmaps: [] };\n            for (let i = 0; i < texDatas.mipmapCount; i++) {\n              images[f].mipmaps.push(texDatas.mipmaps[f * texDatas.mipmapCount + i]);\n              images[f].format = texDatas.format;\n              images[f].width = texDatas.width;\n              images[f].height = texDatas.height;\n            }\n          }\n          texture.image = images;\n        } else {\n          texture.image.width = texDatas.width;\n          texture.image.height = texDatas.height;\n          texture.mipmaps = texDatas.mipmaps;\n        }\n        if (texDatas.mipmapCount === 1) {\n          texture.minFilter = LinearFilter;\n        }\n        texture.format = texDatas.format;\n        texture.needsUpdate = true;\n        if (onLoad)\n          onLoad(texture);\n      }, onProgress, onError);\n    }\n    return texture;\n  }\n}\nclass ImageLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    if (this.path !== void 0)\n      url = this.path + url;\n    url = this.manager.resolveURL(url);\n    const scope = this;\n    const cached = Cache.get(url);\n    if (cached !== void 0) {\n      scope.manager.itemStart(url);\n      setTimeout(function() {\n        if (onLoad)\n          onLoad(cached);\n        scope.manager.itemEnd(url);\n      }, 0);\n      return cached;\n    }\n    const image = createElementNS(\"img\");\n    function onImageLoad() {\n      removeEventListeners();\n      Cache.add(url, this);\n      if (onLoad)\n        onLoad(this);\n      scope.manager.itemEnd(url);\n    }\n    function onImageError(event) {\n      removeEventListeners();\n      if (onError)\n        onError(event);\n      scope.manager.itemError(url);\n      scope.manager.itemEnd(url);\n    }\n    function removeEventListeners() {\n      image.removeEventListener(\"load\", onImageLoad, false);\n      image.removeEventListener(\"error\", onImageError, false);\n    }\n    image.addEventListener(\"load\", onImageLoad, false);\n    image.addEventListener(\"error\", onImageError, false);\n    if (url.slice(0, 5) !== \"data:\") {\n      if (this.crossOrigin !== void 0)\n        image.crossOrigin = this.crossOrigin;\n    }\n    scope.manager.itemStart(url);\n    image.src = url;\n    return image;\n  }\n}\nclass CubeTextureLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(urls, onLoad, onProgress, onError) {\n    const texture = new CubeTexture();\n    const loader = new ImageLoader(this.manager);\n    loader.setCrossOrigin(this.crossOrigin);\n    loader.setPath(this.path);\n    let loaded = 0;\n    function loadTexture(i) {\n      loader.load(urls[i], function(image) {\n        texture.images[i] = image;\n        loaded++;\n        if (loaded === 6) {\n          texture.needsUpdate = true;\n          if (onLoad)\n            onLoad(texture);\n        }\n      }, void 0, onError);\n    }\n    for (let i = 0; i < urls.length; ++i) {\n      loadTexture(i);\n    }\n    return texture;\n  }\n}\nclass DataTextureLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const texture = new DataTexture();\n    const loader = new FileLoader(this.manager);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setRequestHeader(this.requestHeader);\n    loader.setPath(this.path);\n    loader.setWithCredentials(scope.withCredentials);\n    loader.load(url, function(buffer) {\n      const texData = scope.parse(buffer);\n      if (!texData)\n        return;\n      if (texData.image !== void 0) {\n        texture.image = texData.image;\n      } else if (texData.data !== void 0) {\n        texture.image.width = texData.width;\n        texture.image.height = texData.height;\n        texture.image.data = texData.data;\n      }\n      texture.wrapS = texData.wrapS !== void 0 ? texData.wrapS : ClampToEdgeWrapping;\n      texture.wrapT = texData.wrapT !== void 0 ? texData.wrapT : ClampToEdgeWrapping;\n      texture.magFilter = texData.magFilter !== void 0 ? texData.magFilter : LinearFilter;\n      texture.minFilter = texData.minFilter !== void 0 ? texData.minFilter : LinearFilter;\n      texture.anisotropy = texData.anisotropy !== void 0 ? texData.anisotropy : 1;\n      if (texData.encoding !== void 0) {\n        texture.encoding = texData.encoding;\n      }\n      if (texData.flipY !== void 0) {\n        texture.flipY = texData.flipY;\n      }\n      if (texData.format !== void 0) {\n        texture.format = texData.format;\n      }\n      if (texData.type !== void 0) {\n        texture.type = texData.type;\n      }\n      if (texData.mipmaps !== void 0) {\n        texture.mipmaps = texData.mipmaps;\n        texture.minFilter = LinearMipmapLinearFilter;\n      }\n      if (texData.mipmapCount === 1) {\n        texture.minFilter = LinearFilter;\n      }\n      if (texData.generateMipmaps !== void 0) {\n        texture.generateMipmaps = texData.generateMipmaps;\n      }\n      texture.needsUpdate = true;\n      if (onLoad)\n        onLoad(texture, texData);\n    }, onProgress, onError);\n    return texture;\n  }\n}\nclass TextureLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const texture = new Texture();\n    const loader = new ImageLoader(this.manager);\n    loader.setCrossOrigin(this.crossOrigin);\n    loader.setPath(this.path);\n    loader.load(url, function(image) {\n      texture.image = image;\n      texture.needsUpdate = true;\n      if (onLoad !== void 0) {\n        onLoad(texture);\n      }\n    }, onProgress, onError);\n    return texture;\n  }\n}\nclass Light extends Object3D$1 {\n  constructor(color, intensity = 1) {\n    super();\n    this.isLight = true;\n    this.type = \"Light\";\n    this.color = new Color(color);\n    this.intensity = intensity;\n  }\n  dispose() {\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.color.copy(source.color);\n    this.intensity = source.intensity;\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.color = this.color.getHex();\n    data.object.intensity = this.intensity;\n    if (this.groundColor !== void 0)\n      data.object.groundColor = this.groundColor.getHex();\n    if (this.distance !== void 0)\n      data.object.distance = this.distance;\n    if (this.angle !== void 0)\n      data.object.angle = this.angle;\n    if (this.decay !== void 0)\n      data.object.decay = this.decay;\n    if (this.penumbra !== void 0)\n      data.object.penumbra = this.penumbra;\n    if (this.shadow !== void 0)\n      data.object.shadow = this.shadow.toJSON();\n    return data;\n  }\n}\nclass HemisphereLight extends Light {\n  constructor(skyColor, groundColor, intensity) {\n    super(skyColor, intensity);\n    this.isHemisphereLight = true;\n    this.type = \"HemisphereLight\";\n    this.position.copy(Object3D$1.DefaultUp);\n    this.updateMatrix();\n    this.groundColor = new Color(groundColor);\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.groundColor.copy(source.groundColor);\n    return this;\n  }\n}\nconst _projScreenMatrix$1 = /* @__PURE__ */ new Matrix4();\nconst _lightPositionWorld$1 = /* @__PURE__ */ new Vector3();\nconst _lookTarget$1 = /* @__PURE__ */ new Vector3();\nclass LightShadow {\n  constructor(camera) {\n    this.camera = camera;\n    this.bias = 0;\n    this.normalBias = 0;\n    this.radius = 1;\n    this.blurSamples = 8;\n    this.mapSize = new Vector2(512, 512);\n    this.map = null;\n    this.mapPass = null;\n    this.matrix = new Matrix4();\n    this.autoUpdate = true;\n    this.needsUpdate = false;\n    this._frustum = new Frustum();\n    this._frameExtents = new Vector2(1, 1);\n    this._viewportCount = 1;\n    this._viewports = [\n      new Vector4(0, 0, 1, 1)\n    ];\n  }\n  getViewportCount() {\n    return this._viewportCount;\n  }\n  getFrustum() {\n    return this._frustum;\n  }\n  updateMatrices(light) {\n    const shadowCamera = this.camera;\n    const shadowMatrix = this.matrix;\n    _lightPositionWorld$1.setFromMatrixPosition(light.matrixWorld);\n    shadowCamera.position.copy(_lightPositionWorld$1);\n    _lookTarget$1.setFromMatrixPosition(light.target.matrixWorld);\n    shadowCamera.lookAt(_lookTarget$1);\n    shadowCamera.updateMatrixWorld();\n    _projScreenMatrix$1.multiplyMatrices(shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse);\n    this._frustum.setFromProjectionMatrix(_projScreenMatrix$1);\n    shadowMatrix.set(\n      0.5,\n      0,\n      0,\n      0.5,\n      0,\n      0.5,\n      0,\n      0.5,\n      0,\n      0,\n      0.5,\n      0.5,\n      0,\n      0,\n      0,\n      1\n    );\n    shadowMatrix.multiply(shadowCamera.projectionMatrix);\n    shadowMatrix.multiply(shadowCamera.matrixWorldInverse);\n  }\n  getViewport(viewportIndex) {\n    return this._viewports[viewportIndex];\n  }\n  getFrameExtents() {\n    return this._frameExtents;\n  }\n  dispose() {\n    if (this.map) {\n      this.map.dispose();\n    }\n    if (this.mapPass) {\n      this.mapPass.dispose();\n    }\n  }\n  copy(source) {\n    this.camera = source.camera.clone();\n    this.bias = source.bias;\n    this.radius = source.radius;\n    this.mapSize.copy(source.mapSize);\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  toJSON() {\n    const object = {};\n    if (this.bias !== 0)\n      object.bias = this.bias;\n    if (this.normalBias !== 0)\n      object.normalBias = this.normalBias;\n    if (this.radius !== 1)\n      object.radius = this.radius;\n    if (this.mapSize.x !== 512 || this.mapSize.y !== 512)\n      object.mapSize = this.mapSize.toArray();\n    object.camera = this.camera.toJSON(false).object;\n    delete object.camera.matrix;\n    return object;\n  }\n}\nclass SpotLightShadow extends LightShadow {\n  constructor() {\n    super(new PerspectiveCamera(50, 1, 0.5, 500));\n    this.isSpotLightShadow = true;\n    this.focus = 1;\n  }\n  updateMatrices(light) {\n    const camera = this.camera;\n    const fov2 = RAD2DEG * 2 * light.angle * this.focus;\n    const aspect2 = this.mapSize.width / this.mapSize.height;\n    const far = light.distance || camera.far;\n    if (fov2 !== camera.fov || aspect2 !== camera.aspect || far !== camera.far) {\n      camera.fov = fov2;\n      camera.aspect = aspect2;\n      camera.far = far;\n      camera.updateProjectionMatrix();\n    }\n    super.updateMatrices(light);\n  }\n  copy(source) {\n    super.copy(source);\n    this.focus = source.focus;\n    return this;\n  }\n}\nclass SpotLight extends Light {\n  constructor(color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1) {\n    super(color, intensity);\n    this.isSpotLight = true;\n    this.type = \"SpotLight\";\n    this.position.copy(Object3D$1.DefaultUp);\n    this.updateMatrix();\n    this.target = new Object3D$1();\n    this.distance = distance;\n    this.angle = angle;\n    this.penumbra = penumbra;\n    this.decay = decay;\n    this.shadow = new SpotLightShadow();\n  }\n  get power() {\n    return this.intensity * Math.PI;\n  }\n  set power(power) {\n    this.intensity = power / Math.PI;\n  }\n  dispose() {\n    this.shadow.dispose();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.distance = source.distance;\n    this.angle = source.angle;\n    this.penumbra = source.penumbra;\n    this.decay = source.decay;\n    this.target = source.target.clone();\n    this.shadow = source.shadow.clone();\n    return this;\n  }\n}\nconst _projScreenMatrix = /* @__PURE__ */ new Matrix4();\nconst _lightPositionWorld = /* @__PURE__ */ new Vector3();\nconst _lookTarget = /* @__PURE__ */ new Vector3();\nclass PointLightShadow extends LightShadow {\n  constructor() {\n    super(new PerspectiveCamera(90, 1, 0.5, 500));\n    this.isPointLightShadow = true;\n    this._frameExtents = new Vector2(4, 2);\n    this._viewportCount = 6;\n    this._viewports = [\n      new Vector4(2, 1, 1, 1),\n      new Vector4(0, 1, 1, 1),\n      new Vector4(3, 1, 1, 1),\n      new Vector4(1, 1, 1, 1),\n      new Vector4(3, 0, 1, 1),\n      new Vector4(1, 0, 1, 1)\n    ];\n    this._cubeDirections = [\n      new Vector3(1, 0, 0),\n      new Vector3(-1, 0, 0),\n      new Vector3(0, 0, 1),\n      new Vector3(0, 0, -1),\n      new Vector3(0, 1, 0),\n      new Vector3(0, -1, 0)\n    ];\n    this._cubeUps = [\n      new Vector3(0, 1, 0),\n      new Vector3(0, 1, 0),\n      new Vector3(0, 1, 0),\n      new Vector3(0, 1, 0),\n      new Vector3(0, 0, 1),\n      new Vector3(0, 0, -1)\n    ];\n  }\n  updateMatrices(light, viewportIndex = 0) {\n    const camera = this.camera;\n    const shadowMatrix = this.matrix;\n    const far = light.distance || camera.far;\n    if (far !== camera.far) {\n      camera.far = far;\n      camera.updateProjectionMatrix();\n    }\n    _lightPositionWorld.setFromMatrixPosition(light.matrixWorld);\n    camera.position.copy(_lightPositionWorld);\n    _lookTarget.copy(camera.position);\n    _lookTarget.add(this._cubeDirections[viewportIndex]);\n    camera.up.copy(this._cubeUps[viewportIndex]);\n    camera.lookAt(_lookTarget);\n    camera.updateMatrixWorld();\n    shadowMatrix.makeTranslation(-_lightPositionWorld.x, -_lightPositionWorld.y, -_lightPositionWorld.z);\n    _projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n    this._frustum.setFromProjectionMatrix(_projScreenMatrix);\n  }\n}\nclass PointLight extends Light {\n  constructor(color, intensity, distance = 0, decay = 1) {\n    super(color, intensity);\n    this.isPointLight = true;\n    this.type = \"PointLight\";\n    this.distance = distance;\n    this.decay = decay;\n    this.shadow = new PointLightShadow();\n  }\n  get power() {\n    return this.intensity * 4 * Math.PI;\n  }\n  set power(power) {\n    this.intensity = power / (4 * Math.PI);\n  }\n  dispose() {\n    this.shadow.dispose();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.distance = source.distance;\n    this.decay = source.decay;\n    this.shadow = source.shadow.clone();\n    return this;\n  }\n}\nclass DirectionalLightShadow extends LightShadow {\n  constructor() {\n    super(new OrthographicCamera(-5, 5, 5, -5, 0.5, 500));\n    this.isDirectionalLightShadow = true;\n  }\n}\nclass DirectionalLight extends Light {\n  constructor(color, intensity) {\n    super(color, intensity);\n    this.isDirectionalLight = true;\n    this.type = \"DirectionalLight\";\n    this.position.copy(Object3D$1.DefaultUp);\n    this.updateMatrix();\n    this.target = new Object3D$1();\n    this.shadow = new DirectionalLightShadow();\n  }\n  dispose() {\n    this.shadow.dispose();\n  }\n  copy(source) {\n    super.copy(source);\n    this.target = source.target.clone();\n    this.shadow = source.shadow.clone();\n    return this;\n  }\n}\nclass AmbientLight extends Light {\n  constructor(color, intensity) {\n    super(color, intensity);\n    this.isAmbientLight = true;\n    this.type = \"AmbientLight\";\n  }\n}\nclass RectAreaLight extends Light {\n  constructor(color, intensity, width = 10, height = 10) {\n    super(color, intensity);\n    this.isRectAreaLight = true;\n    this.type = \"RectAreaLight\";\n    this.width = width;\n    this.height = height;\n  }\n  get power() {\n    return this.intensity * this.width * this.height * Math.PI;\n  }\n  set power(power) {\n    this.intensity = power / (this.width * this.height * Math.PI);\n  }\n  copy(source) {\n    super.copy(source);\n    this.width = source.width;\n    this.height = source.height;\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.width = this.width;\n    data.object.height = this.height;\n    return data;\n  }\n}\nclass SphericalHarmonics3 {\n  constructor() {\n    this.isSphericalHarmonics3 = true;\n    this.coefficients = [];\n    for (let i = 0; i < 9; i++) {\n      this.coefficients.push(new Vector3());\n    }\n  }\n  set(coefficients) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].copy(coefficients[i]);\n    }\n    return this;\n  }\n  zero() {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].set(0, 0, 0);\n    }\n    return this;\n  }\n  getAt(normal, target) {\n    const x = normal.x, y = normal.y, z = normal.z;\n    const coeff = this.coefficients;\n    target.copy(coeff[0]).multiplyScalar(0.282095);\n    target.addScaledVector(coeff[1], 0.488603 * y);\n    target.addScaledVector(coeff[2], 0.488603 * z);\n    target.addScaledVector(coeff[3], 0.488603 * x);\n    target.addScaledVector(coeff[4], 1.092548 * (x * y));\n    target.addScaledVector(coeff[5], 1.092548 * (y * z));\n    target.addScaledVector(coeff[6], 0.315392 * (3 * z * z - 1));\n    target.addScaledVector(coeff[7], 1.092548 * (x * z));\n    target.addScaledVector(coeff[8], 0.546274 * (x * x - y * y));\n    return target;\n  }\n  getIrradianceAt(normal, target) {\n    const x = normal.x, y = normal.y, z = normal.z;\n    const coeff = this.coefficients;\n    target.copy(coeff[0]).multiplyScalar(0.886227);\n    target.addScaledVector(coeff[1], 2 * 0.511664 * y);\n    target.addScaledVector(coeff[2], 2 * 0.511664 * z);\n    target.addScaledVector(coeff[3], 2 * 0.511664 * x);\n    target.addScaledVector(coeff[4], 2 * 0.429043 * x * y);\n    target.addScaledVector(coeff[5], 2 * 0.429043 * y * z);\n    target.addScaledVector(coeff[6], 0.743125 * z * z - 0.247708);\n    target.addScaledVector(coeff[7], 2 * 0.429043 * x * z);\n    target.addScaledVector(coeff[8], 0.429043 * (x * x - y * y));\n    return target;\n  }\n  add(sh) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].add(sh.coefficients[i]);\n    }\n    return this;\n  }\n  addScaledSH(sh, s) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].addScaledVector(sh.coefficients[i], s);\n    }\n    return this;\n  }\n  scale(s) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].multiplyScalar(s);\n    }\n    return this;\n  }\n  lerp(sh, alpha) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].lerp(sh.coefficients[i], alpha);\n    }\n    return this;\n  }\n  equals(sh) {\n    for (let i = 0; i < 9; i++) {\n      if (!this.coefficients[i].equals(sh.coefficients[i])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  copy(sh) {\n    return this.set(sh.coefficients);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  fromArray(array, offset = 0) {\n    const coefficients = this.coefficients;\n    for (let i = 0; i < 9; i++) {\n      coefficients[i].fromArray(array, offset + i * 3);\n    }\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    const coefficients = this.coefficients;\n    for (let i = 0; i < 9; i++) {\n      coefficients[i].toArray(array, offset + i * 3);\n    }\n    return array;\n  }\n  static getBasisAt(normal, shBasis) {\n    const x = normal.x, y = normal.y, z = normal.z;\n    shBasis[0] = 0.282095;\n    shBasis[1] = 0.488603 * y;\n    shBasis[2] = 0.488603 * z;\n    shBasis[3] = 0.488603 * x;\n    shBasis[4] = 1.092548 * x * y;\n    shBasis[5] = 1.092548 * y * z;\n    shBasis[6] = 0.315392 * (3 * z * z - 1);\n    shBasis[7] = 1.092548 * x * z;\n    shBasis[8] = 0.546274 * (x * x - y * y);\n  }\n}\nclass LightProbe extends Light {\n  constructor(sh = new SphericalHarmonics3(), intensity = 1) {\n    super(void 0, intensity);\n    this.isLightProbe = true;\n    this.sh = sh;\n  }\n  copy(source) {\n    super.copy(source);\n    this.sh.copy(source.sh);\n    return this;\n  }\n  fromJSON(json) {\n    this.intensity = json.intensity;\n    this.sh.fromArray(json.sh);\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.sh = this.sh.toArray();\n    return data;\n  }\n}\nclass MaterialLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n    this.textures = {};\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const loader = new FileLoader(scope.manager);\n    loader.setPath(scope.path);\n    loader.setRequestHeader(scope.requestHeader);\n    loader.setWithCredentials(scope.withCredentials);\n    loader.load(url, function(text) {\n      try {\n        onLoad(scope.parse(JSON.parse(text)));\n      } catch (e) {\n        if (onError) {\n          onError(e);\n        } else {\n          console.error(e);\n        }\n        scope.manager.itemError(url);\n      }\n    }, onProgress, onError);\n  }\n  parse(json) {\n    const textures = this.textures;\n    function getTexture(name) {\n      if (textures[name] === void 0) {\n        console.warn(\"THREE.MaterialLoader: Undefined texture\", name);\n      }\n      return textures[name];\n    }\n    const material = MaterialLoader.createMaterialFromType(json.type);\n    if (json.uuid !== void 0)\n      material.uuid = json.uuid;\n    if (json.name !== void 0)\n      material.name = json.name;\n    if (json.color !== void 0 && material.color !== void 0)\n      material.color.setHex(json.color);\n    if (json.roughness !== void 0)\n      material.roughness = json.roughness;\n    if (json.metalness !== void 0)\n      material.metalness = json.metalness;\n    if (json.sheen !== void 0)\n      material.sheen = json.sheen;\n    if (json.sheenColor !== void 0)\n      material.sheenColor = new Color().setHex(json.sheenColor);\n    if (json.sheenRoughness !== void 0)\n      material.sheenRoughness = json.sheenRoughness;\n    if (json.emissive !== void 0 && material.emissive !== void 0)\n      material.emissive.setHex(json.emissive);\n    if (json.specular !== void 0 && material.specular !== void 0)\n      material.specular.setHex(json.specular);\n    if (json.specularIntensity !== void 0)\n      material.specularIntensity = json.specularIntensity;\n    if (json.specularColor !== void 0 && material.specularColor !== void 0)\n      material.specularColor.setHex(json.specularColor);\n    if (json.shininess !== void 0)\n      material.shininess = json.shininess;\n    if (json.clearcoat !== void 0)\n      material.clearcoat = json.clearcoat;\n    if (json.clearcoatRoughness !== void 0)\n      material.clearcoatRoughness = json.clearcoatRoughness;\n    if (json.iridescence !== void 0)\n      material.iridescence = json.iridescence;\n    if (json.iridescenceIOR !== void 0)\n      material.iridescenceIOR = json.iridescenceIOR;\n    if (json.iridescenceThicknessRange !== void 0)\n      material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n    if (json.transmission !== void 0)\n      material.transmission = json.transmission;\n    if (json.thickness !== void 0)\n      material.thickness = json.thickness;\n    if (json.attenuationDistance !== void 0)\n      material.attenuationDistance = json.attenuationDistance;\n    if (json.attenuationColor !== void 0 && material.attenuationColor !== void 0)\n      material.attenuationColor.setHex(json.attenuationColor);\n    if (json.fog !== void 0)\n      material.fog = json.fog;\n    if (json.flatShading !== void 0)\n      material.flatShading = json.flatShading;\n    if (json.blending !== void 0)\n      material.blending = json.blending;\n    if (json.combine !== void 0)\n      material.combine = json.combine;\n    if (json.side !== void 0)\n      material.side = json.side;\n    if (json.shadowSide !== void 0)\n      material.shadowSide = json.shadowSide;\n    if (json.opacity !== void 0)\n      material.opacity = json.opacity;\n    if (json.transparent !== void 0)\n      material.transparent = json.transparent;\n    if (json.alphaTest !== void 0)\n      material.alphaTest = json.alphaTest;\n    if (json.depthTest !== void 0)\n      material.depthTest = json.depthTest;\n    if (json.depthWrite !== void 0)\n      material.depthWrite = json.depthWrite;\n    if (json.colorWrite !== void 0)\n      material.colorWrite = json.colorWrite;\n    if (json.stencilWrite !== void 0)\n      material.stencilWrite = json.stencilWrite;\n    if (json.stencilWriteMask !== void 0)\n      material.stencilWriteMask = json.stencilWriteMask;\n    if (json.stencilFunc !== void 0)\n      material.stencilFunc = json.stencilFunc;\n    if (json.stencilRef !== void 0)\n      material.stencilRef = json.stencilRef;\n    if (json.stencilFuncMask !== void 0)\n      material.stencilFuncMask = json.stencilFuncMask;\n    if (json.stencilFail !== void 0)\n      material.stencilFail = json.stencilFail;\n    if (json.stencilZFail !== void 0)\n      material.stencilZFail = json.stencilZFail;\n    if (json.stencilZPass !== void 0)\n      material.stencilZPass = json.stencilZPass;\n    if (json.wireframe !== void 0)\n      material.wireframe = json.wireframe;\n    if (json.wireframeLinewidth !== void 0)\n      material.wireframeLinewidth = json.wireframeLinewidth;\n    if (json.wireframeLinecap !== void 0)\n      material.wireframeLinecap = json.wireframeLinecap;\n    if (json.wireframeLinejoin !== void 0)\n      material.wireframeLinejoin = json.wireframeLinejoin;\n    if (json.rotation !== void 0)\n      material.rotation = json.rotation;\n    if (json.linewidth !== 1)\n      material.linewidth = json.linewidth;\n    if (json.dashSize !== void 0)\n      material.dashSize = json.dashSize;\n    if (json.gapSize !== void 0)\n      material.gapSize = json.gapSize;\n    if (json.scale !== void 0)\n      material.scale = json.scale;\n    if (json.polygonOffset !== void 0)\n      material.polygonOffset = json.polygonOffset;\n    if (json.polygonOffsetFactor !== void 0)\n      material.polygonOffsetFactor = json.polygonOffsetFactor;\n    if (json.polygonOffsetUnits !== void 0)\n      material.polygonOffsetUnits = json.polygonOffsetUnits;\n    if (json.dithering !== void 0)\n      material.dithering = json.dithering;\n    if (json.alphaToCoverage !== void 0)\n      material.alphaToCoverage = json.alphaToCoverage;\n    if (json.premultipliedAlpha !== void 0)\n      material.premultipliedAlpha = json.premultipliedAlpha;\n    if (json.visible !== void 0)\n      material.visible = json.visible;\n    if (json.toneMapped !== void 0)\n      material.toneMapped = json.toneMapped;\n    if (json.userData !== void 0)\n      material.userData = json.userData;\n    if (json.vertexColors !== void 0) {\n      if (typeof json.vertexColors === \"number\") {\n        material.vertexColors = json.vertexColors > 0 ? true : false;\n      } else {\n        material.vertexColors = json.vertexColors;\n      }\n    }\n    if (json.uniforms !== void 0) {\n      for (const name in json.uniforms) {\n        const uniform = json.uniforms[name];\n        material.uniforms[name] = {};\n        switch (uniform.type) {\n          case \"t\":\n            material.uniforms[name].value = getTexture(uniform.value);\n            break;\n          case \"c\":\n            material.uniforms[name].value = new Color().setHex(uniform.value);\n            break;\n          case \"v2\":\n            material.uniforms[name].value = new Vector2().fromArray(uniform.value);\n            break;\n          case \"v3\":\n            material.uniforms[name].value = new Vector3().fromArray(uniform.value);\n            break;\n          case \"v4\":\n            material.uniforms[name].value = new Vector4().fromArray(uniform.value);\n            break;\n          case \"m3\":\n            material.uniforms[name].value = new Matrix3().fromArray(uniform.value);\n            break;\n          case \"m4\":\n            material.uniforms[name].value = new Matrix4().fromArray(uniform.value);\n            break;\n          default:\n            material.uniforms[name].value = uniform.value;\n        }\n      }\n    }\n    if (json.defines !== void 0)\n      material.defines = json.defines;\n    if (json.vertexShader !== void 0)\n      material.vertexShader = json.vertexShader;\n    if (json.fragmentShader !== void 0)\n      material.fragmentShader = json.fragmentShader;\n    if (json.extensions !== void 0) {\n      for (const key in json.extensions) {\n        material.extensions[key] = json.extensions[key];\n      }\n    }\n    if (json.shading !== void 0)\n      material.flatShading = json.shading === 1;\n    if (json.size !== void 0)\n      material.size = json.size;\n    if (json.sizeAttenuation !== void 0)\n      material.sizeAttenuation = json.sizeAttenuation;\n    if (json.map !== void 0)\n      material.map = getTexture(json.map);\n    if (json.matcap !== void 0)\n      material.matcap = getTexture(json.matcap);\n    if (json.alphaMap !== void 0)\n      material.alphaMap = getTexture(json.alphaMap);\n    if (json.bumpMap !== void 0)\n      material.bumpMap = getTexture(json.bumpMap);\n    if (json.bumpScale !== void 0)\n      material.bumpScale = json.bumpScale;\n    if (json.normalMap !== void 0)\n      material.normalMap = getTexture(json.normalMap);\n    if (json.normalMapType !== void 0)\n      material.normalMapType = json.normalMapType;\n    if (json.normalScale !== void 0) {\n      let normalScale = json.normalScale;\n      if (Array.isArray(normalScale) === false) {\n        normalScale = [normalScale, normalScale];\n      }\n      material.normalScale = new Vector2().fromArray(normalScale);\n    }\n    if (json.displacementMap !== void 0)\n      material.displacementMap = getTexture(json.displacementMap);\n    if (json.displacementScale !== void 0)\n      material.displacementScale = json.displacementScale;\n    if (json.displacementBias !== void 0)\n      material.displacementBias = json.displacementBias;\n    if (json.roughnessMap !== void 0)\n      material.roughnessMap = getTexture(json.roughnessMap);\n    if (json.metalnessMap !== void 0)\n      material.metalnessMap = getTexture(json.metalnessMap);\n    if (json.emissiveMap !== void 0)\n      material.emissiveMap = getTexture(json.emissiveMap);\n    if (json.emissiveIntensity !== void 0)\n      material.emissiveIntensity = json.emissiveIntensity;\n    if (json.specularMap !== void 0)\n      material.specularMap = getTexture(json.specularMap);\n    if (json.specularIntensityMap !== void 0)\n      material.specularIntensityMap = getTexture(json.specularIntensityMap);\n    if (json.specularColorMap !== void 0)\n      material.specularColorMap = getTexture(json.specularColorMap);\n    if (json.envMap !== void 0)\n      material.envMap = getTexture(json.envMap);\n    if (json.envMapIntensity !== void 0)\n      material.envMapIntensity = json.envMapIntensity;\n    if (json.reflectivity !== void 0)\n      material.reflectivity = json.reflectivity;\n    if (json.refractionRatio !== void 0)\n      material.refractionRatio = json.refractionRatio;\n    if (json.lightMap !== void 0)\n      material.lightMap = getTexture(json.lightMap);\n    if (json.lightMapIntensity !== void 0)\n      material.lightMapIntensity = json.lightMapIntensity;\n    if (json.aoMap !== void 0)\n      material.aoMap = getTexture(json.aoMap);\n    if (json.aoMapIntensity !== void 0)\n      material.aoMapIntensity = json.aoMapIntensity;\n    if (json.gradientMap !== void 0)\n      material.gradientMap = getTexture(json.gradientMap);\n    if (json.clearcoatMap !== void 0)\n      material.clearcoatMap = getTexture(json.clearcoatMap);\n    if (json.clearcoatRoughnessMap !== void 0)\n      material.clearcoatRoughnessMap = getTexture(json.clearcoatRoughnessMap);\n    if (json.clearcoatNormalMap !== void 0)\n      material.clearcoatNormalMap = getTexture(json.clearcoatNormalMap);\n    if (json.clearcoatNormalScale !== void 0)\n      material.clearcoatNormalScale = new Vector2().fromArray(json.clearcoatNormalScale);\n    if (json.iridescenceMap !== void 0)\n      material.iridescenceMap = getTexture(json.iridescenceMap);\n    if (json.iridescenceThicknessMap !== void 0)\n      material.iridescenceThicknessMap = getTexture(json.iridescenceThicknessMap);\n    if (json.transmissionMap !== void 0)\n      material.transmissionMap = getTexture(json.transmissionMap);\n    if (json.thicknessMap !== void 0)\n      material.thicknessMap = getTexture(json.thicknessMap);\n    if (json.sheenColorMap !== void 0)\n      material.sheenColorMap = getTexture(json.sheenColorMap);\n    if (json.sheenRoughnessMap !== void 0)\n      material.sheenRoughnessMap = getTexture(json.sheenRoughnessMap);\n    return material;\n  }\n  setTextures(value) {\n    this.textures = value;\n    return this;\n  }\n  static createMaterialFromType(type) {\n    const materialLib = {\n      ShadowMaterial,\n      SpriteMaterial,\n      RawShaderMaterial,\n      ShaderMaterial,\n      PointsMaterial,\n      MeshPhysicalMaterial,\n      MeshStandardMaterial,\n      MeshPhongMaterial,\n      MeshToonMaterial,\n      MeshNormalMaterial,\n      MeshLambertMaterial,\n      MeshDepthMaterial,\n      MeshDistanceMaterial,\n      MeshBasicMaterial,\n      MeshMatcapMaterial,\n      LineDashedMaterial,\n      LineBasicMaterial,\n      Material: Material$1\n    };\n    return new materialLib[type]();\n  }\n}\nclass LoaderUtils {\n  static decodeText(array) {\n    if (typeof TextDecoder !== \"undefined\") {\n      return new TextDecoder().decode(array);\n    }\n    let s = \"\";\n    for (let i = 0, il = array.length; i < il; i++) {\n      s += String.fromCharCode(array[i]);\n    }\n    try {\n      return decodeURIComponent(escape(s));\n    } catch (e) {\n      return s;\n    }\n  }\n  static extractUrlBase(url) {\n    const index = url.lastIndexOf(\"/\");\n    if (index === -1)\n      return \"./\";\n    return url.slice(0, index + 1);\n  }\n  static resolveURL(url, path) {\n    if (typeof url !== \"string\" || url === \"\")\n      return \"\";\n    if (/^https?:\\/\\//i.test(path) && /^\\//.test(url)) {\n      path = path.replace(/(^https?:\\/\\/[^\\/]+).*/i, \"$1\");\n    }\n    if (/^(https?:)?\\/\\//i.test(url))\n      return url;\n    if (/^data:.*,.*$/i.test(url))\n      return url;\n    if (/^blob:.*$/i.test(url))\n      return url;\n    return path + url;\n  }\n}\nclass InstancedBufferGeometry extends BufferGeometry {\n  constructor() {\n    super();\n    this.isInstancedBufferGeometry = true;\n    this.type = \"InstancedBufferGeometry\";\n    this.instanceCount = Infinity;\n  }\n  copy(source) {\n    super.copy(source);\n    this.instanceCount = source.instanceCount;\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  toJSON() {\n    const data = super.toJSON(this);\n    data.instanceCount = this.instanceCount;\n    data.isInstancedBufferGeometry = true;\n    return data;\n  }\n}\nclass BufferGeometryLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const loader = new FileLoader(scope.manager);\n    loader.setPath(scope.path);\n    loader.setRequestHeader(scope.requestHeader);\n    loader.setWithCredentials(scope.withCredentials);\n    loader.load(url, function(text) {\n      try {\n        onLoad(scope.parse(JSON.parse(text)));\n      } catch (e) {\n        if (onError) {\n          onError(e);\n        } else {\n          console.error(e);\n        }\n        scope.manager.itemError(url);\n      }\n    }, onProgress, onError);\n  }\n  parse(json) {\n    const interleavedBufferMap = {};\n    const arrayBufferMap = {};\n    function getInterleavedBuffer(json2, uuid) {\n      if (interleavedBufferMap[uuid] !== void 0)\n        return interleavedBufferMap[uuid];\n      const interleavedBuffers = json2.interleavedBuffers;\n      const interleavedBuffer = interleavedBuffers[uuid];\n      const buffer = getArrayBuffer(json2, interleavedBuffer.buffer);\n      const array = getTypedArray(interleavedBuffer.type, buffer);\n      const ib = new InterleavedBuffer(array, interleavedBuffer.stride);\n      ib.uuid = interleavedBuffer.uuid;\n      interleavedBufferMap[uuid] = ib;\n      return ib;\n    }\n    function getArrayBuffer(json2, uuid) {\n      if (arrayBufferMap[uuid] !== void 0)\n        return arrayBufferMap[uuid];\n      const arrayBuffers = json2.arrayBuffers;\n      const arrayBuffer = arrayBuffers[uuid];\n      const ab = new Uint32Array(arrayBuffer).buffer;\n      arrayBufferMap[uuid] = ab;\n      return ab;\n    }\n    const geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n    const index = json.data.index;\n    if (index !== void 0) {\n      const typedArray = getTypedArray(index.type, index.array);\n      geometry.setIndex(new BufferAttribute(typedArray, 1));\n    }\n    const attributes = json.data.attributes;\n    for (const key in attributes) {\n      const attribute = attributes[key];\n      let bufferAttribute;\n      if (attribute.isInterleavedBufferAttribute) {\n        const interleavedBuffer = getInterleavedBuffer(json.data, attribute.data);\n        bufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized);\n      } else {\n        const typedArray = getTypedArray(attribute.type, attribute.array);\n        const bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n        bufferAttribute = new bufferAttributeConstr(typedArray, attribute.itemSize, attribute.normalized);\n      }\n      if (attribute.name !== void 0)\n        bufferAttribute.name = attribute.name;\n      if (attribute.usage !== void 0)\n        bufferAttribute.setUsage(attribute.usage);\n      if (attribute.updateRange !== void 0) {\n        bufferAttribute.updateRange.offset = attribute.updateRange.offset;\n        bufferAttribute.updateRange.count = attribute.updateRange.count;\n      }\n      geometry.setAttribute(key, bufferAttribute);\n    }\n    const morphAttributes = json.data.morphAttributes;\n    if (morphAttributes) {\n      for (const key in morphAttributes) {\n        const attributeArray = morphAttributes[key];\n        const array = [];\n        for (let i = 0, il = attributeArray.length; i < il; i++) {\n          const attribute = attributeArray[i];\n          let bufferAttribute;\n          if (attribute.isInterleavedBufferAttribute) {\n            const interleavedBuffer = getInterleavedBuffer(json.data, attribute.data);\n            bufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized);\n          } else {\n            const typedArray = getTypedArray(attribute.type, attribute.array);\n            bufferAttribute = new BufferAttribute(typedArray, attribute.itemSize, attribute.normalized);\n          }\n          if (attribute.name !== void 0)\n            bufferAttribute.name = attribute.name;\n          array.push(bufferAttribute);\n        }\n        geometry.morphAttributes[key] = array;\n      }\n    }\n    const morphTargetsRelative = json.data.morphTargetsRelative;\n    if (morphTargetsRelative) {\n      geometry.morphTargetsRelative = true;\n    }\n    const groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n    if (groups !== void 0) {\n      for (let i = 0, n = groups.length; i !== n; ++i) {\n        const group = groups[i];\n        geometry.addGroup(group.start, group.count, group.materialIndex);\n      }\n    }\n    const boundingSphere = json.data.boundingSphere;\n    if (boundingSphere !== void 0) {\n      const center = new Vector3();\n      if (boundingSphere.center !== void 0) {\n        center.fromArray(boundingSphere.center);\n      }\n      geometry.boundingSphere = new Sphere(center, boundingSphere.radius);\n    }\n    if (json.name)\n      geometry.name = json.name;\n    if (json.userData)\n      geometry.userData = json.userData;\n    return geometry;\n  }\n}\nclass ObjectLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const path = this.path === \"\" ? LoaderUtils.extractUrlBase(url) : this.path;\n    this.resourcePath = this.resourcePath || path;\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    loader.load(url, function(text) {\n      let json = null;\n      try {\n        json = JSON.parse(text);\n      } catch (error) {\n        if (onError !== void 0)\n          onError(error);\n        console.error(\"THREE:ObjectLoader: Can't parse \" + url + \".\", error.message);\n        return;\n      }\n      const metadata = json.metadata;\n      if (metadata === void 0 || metadata.type === void 0 || metadata.type.toLowerCase() === \"geometry\") {\n        console.error(\"THREE.ObjectLoader: Can't load \" + url);\n        return;\n      }\n      scope.parse(json, onLoad);\n    }, onProgress, onError);\n  }\n  async loadAsync(url, onProgress) {\n    const scope = this;\n    const path = this.path === \"\" ? LoaderUtils.extractUrlBase(url) : this.path;\n    this.resourcePath = this.resourcePath || path;\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    const text = await loader.loadAsync(url, onProgress);\n    const json = JSON.parse(text);\n    const metadata = json.metadata;\n    if (metadata === void 0 || metadata.type === void 0 || metadata.type.toLowerCase() === \"geometry\") {\n      throw new Error(\"THREE.ObjectLoader: Can't load \" + url);\n    }\n    return await scope.parseAsync(json);\n  }\n  parse(json, onLoad) {\n    const animations = this.parseAnimations(json.animations);\n    const shapes = this.parseShapes(json.shapes);\n    const geometries = this.parseGeometries(json.geometries, shapes);\n    const images = this.parseImages(json.images, function() {\n      if (onLoad !== void 0)\n        onLoad(object);\n    });\n    const textures = this.parseTextures(json.textures, images);\n    const materials = this.parseMaterials(json.materials, textures);\n    const object = this.parseObject(json.object, geometries, materials, textures, animations);\n    const skeletons = this.parseSkeletons(json.skeletons, object);\n    this.bindSkeletons(object, skeletons);\n    if (onLoad !== void 0) {\n      let hasImages = false;\n      for (const uuid in images) {\n        if (images[uuid].data instanceof HTMLImageElement) {\n          hasImages = true;\n          break;\n        }\n      }\n      if (hasImages === false)\n        onLoad(object);\n    }\n    return object;\n  }\n  async parseAsync(json) {\n    const animations = this.parseAnimations(json.animations);\n    const shapes = this.parseShapes(json.shapes);\n    const geometries = this.parseGeometries(json.geometries, shapes);\n    const images = await this.parseImagesAsync(json.images);\n    const textures = this.parseTextures(json.textures, images);\n    const materials = this.parseMaterials(json.materials, textures);\n    const object = this.parseObject(json.object, geometries, materials, textures, animations);\n    const skeletons = this.parseSkeletons(json.skeletons, object);\n    this.bindSkeletons(object, skeletons);\n    return object;\n  }\n  parseShapes(json) {\n    const shapes = {};\n    if (json !== void 0) {\n      for (let i = 0, l = json.length; i < l; i++) {\n        const shape = new Shape$1().fromJSON(json[i]);\n        shapes[shape.uuid] = shape;\n      }\n    }\n    return shapes;\n  }\n  parseSkeletons(json, object) {\n    const skeletons = {};\n    const bones = {};\n    object.traverse(function(child) {\n      if (child.isBone)\n        bones[child.uuid] = child;\n    });\n    if (json !== void 0) {\n      for (let i = 0, l = json.length; i < l; i++) {\n        const skeleton = new Skeleton().fromJSON(json[i], bones);\n        skeletons[skeleton.uuid] = skeleton;\n      }\n    }\n    return skeletons;\n  }\n  parseGeometries(json, shapes) {\n    const geometries = {};\n    if (json !== void 0) {\n      const bufferGeometryLoader = new BufferGeometryLoader();\n      for (let i = 0, l = json.length; i < l; i++) {\n        let geometry;\n        const data = json[i];\n        switch (data.type) {\n          case \"BufferGeometry\":\n          case \"InstancedBufferGeometry\":\n            geometry = bufferGeometryLoader.parse(data);\n            break;\n          case \"Geometry\":\n            console.error(\"THREE.ObjectLoader: The legacy Geometry type is no longer supported.\");\n            break;\n          default:\n            if (data.type in Geometries) {\n              geometry = Geometries[data.type].fromJSON(data, shapes);\n            } else {\n              console.warn(`THREE.ObjectLoader: Unsupported geometry type \"${data.type}\"`);\n            }\n        }\n        geometry.uuid = data.uuid;\n        if (data.name !== void 0)\n          geometry.name = data.name;\n        if (geometry.isBufferGeometry === true && data.userData !== void 0)\n          geometry.userData = data.userData;\n        geometries[data.uuid] = geometry;\n      }\n    }\n    return geometries;\n  }\n  parseMaterials(json, textures) {\n    const cache = {};\n    const materials = {};\n    if (json !== void 0) {\n      const loader = new MaterialLoader();\n      loader.setTextures(textures);\n      for (let i = 0, l = json.length; i < l; i++) {\n        const data = json[i];\n        if (data.type === \"MultiMaterial\") {\n          const array = [];\n          for (let j = 0; j < data.materials.length; j++) {\n            const material = data.materials[j];\n            if (cache[material.uuid] === void 0) {\n              cache[material.uuid] = loader.parse(material);\n            }\n            array.push(cache[material.uuid]);\n          }\n          materials[data.uuid] = array;\n        } else {\n          if (cache[data.uuid] === void 0) {\n            cache[data.uuid] = loader.parse(data);\n          }\n          materials[data.uuid] = cache[data.uuid];\n        }\n      }\n    }\n    return materials;\n  }\n  parseAnimations(json) {\n    const animations = {};\n    if (json !== void 0) {\n      for (let i = 0; i < json.length; i++) {\n        const data = json[i];\n        const clip = AnimationClip.parse(data);\n        animations[clip.uuid] = clip;\n      }\n    }\n    return animations;\n  }\n  parseImages(json, onLoad) {\n    const scope = this;\n    const images = {};\n    let loader;\n    function loadImage(url) {\n      scope.manager.itemStart(url);\n      return loader.load(url, function() {\n        scope.manager.itemEnd(url);\n      }, void 0, function() {\n        scope.manager.itemError(url);\n        scope.manager.itemEnd(url);\n      });\n    }\n    function deserializeImage(image) {\n      if (typeof image === \"string\") {\n        const url = image;\n        const path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(url) ? url : scope.resourcePath + url;\n        return loadImage(path);\n      } else {\n        if (image.data) {\n          return {\n            data: getTypedArray(image.type, image.data),\n            width: image.width,\n            height: image.height\n          };\n        } else {\n          return null;\n        }\n      }\n    }\n    if (json !== void 0 && json.length > 0) {\n      const manager = new LoadingManager(onLoad);\n      loader = new ImageLoader(manager);\n      loader.setCrossOrigin(this.crossOrigin);\n      for (let i = 0, il = json.length; i < il; i++) {\n        const image = json[i];\n        const url = image.url;\n        if (Array.isArray(url)) {\n          const imageArray = [];\n          for (let j = 0, jl = url.length; j < jl; j++) {\n            const currentUrl = url[j];\n            const deserializedImage = deserializeImage(currentUrl);\n            if (deserializedImage !== null) {\n              if (deserializedImage instanceof HTMLImageElement) {\n                imageArray.push(deserializedImage);\n              } else {\n                imageArray.push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height));\n              }\n            }\n          }\n          images[image.uuid] = new Source(imageArray);\n        } else {\n          const deserializedImage = deserializeImage(image.url);\n          images[image.uuid] = new Source(deserializedImage);\n        }\n      }\n    }\n    return images;\n  }\n  async parseImagesAsync(json) {\n    const scope = this;\n    const images = {};\n    let loader;\n    async function deserializeImage(image) {\n      if (typeof image === \"string\") {\n        const url = image;\n        const path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(url) ? url : scope.resourcePath + url;\n        return await loader.loadAsync(path);\n      } else {\n        if (image.data) {\n          return {\n            data: getTypedArray(image.type, image.data),\n            width: image.width,\n            height: image.height\n          };\n        } else {\n          return null;\n        }\n      }\n    }\n    if (json !== void 0 && json.length > 0) {\n      loader = new ImageLoader(this.manager);\n      loader.setCrossOrigin(this.crossOrigin);\n      for (let i = 0, il = json.length; i < il; i++) {\n        const image = json[i];\n        const url = image.url;\n        if (Array.isArray(url)) {\n          const imageArray = [];\n          for (let j = 0, jl = url.length; j < jl; j++) {\n            const currentUrl = url[j];\n            const deserializedImage = await deserializeImage(currentUrl);\n            if (deserializedImage !== null) {\n              if (deserializedImage instanceof HTMLImageElement) {\n                imageArray.push(deserializedImage);\n              } else {\n                imageArray.push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height));\n              }\n            }\n          }\n          images[image.uuid] = new Source(imageArray);\n        } else {\n          const deserializedImage = await deserializeImage(image.url);\n          images[image.uuid] = new Source(deserializedImage);\n        }\n      }\n    }\n    return images;\n  }\n  parseTextures(json, images) {\n    function parseConstant(value, type) {\n      if (typeof value === \"number\")\n        return value;\n      console.warn(\"THREE.ObjectLoader.parseTexture: Constant should be in numeric form.\", value);\n      return type[value];\n    }\n    const textures = {};\n    if (json !== void 0) {\n      for (let i = 0, l = json.length; i < l; i++) {\n        const data = json[i];\n        if (data.image === void 0) {\n          console.warn('THREE.ObjectLoader: No \"image\" specified for', data.uuid);\n        }\n        if (images[data.image] === void 0) {\n          console.warn(\"THREE.ObjectLoader: Undefined image\", data.image);\n        }\n        const source = images[data.image];\n        const image = source.data;\n        let texture;\n        if (Array.isArray(image)) {\n          texture = new CubeTexture();\n          if (image.length === 6)\n            texture.needsUpdate = true;\n        } else {\n          if (image && image.data) {\n            texture = new DataTexture();\n          } else {\n            texture = new Texture();\n          }\n          if (image)\n            texture.needsUpdate = true;\n        }\n        texture.source = source;\n        texture.uuid = data.uuid;\n        if (data.name !== void 0)\n          texture.name = data.name;\n        if (data.mapping !== void 0)\n          texture.mapping = parseConstant(data.mapping, TEXTURE_MAPPING);\n        if (data.offset !== void 0)\n          texture.offset.fromArray(data.offset);\n        if (data.repeat !== void 0)\n          texture.repeat.fromArray(data.repeat);\n        if (data.center !== void 0)\n          texture.center.fromArray(data.center);\n        if (data.rotation !== void 0)\n          texture.rotation = data.rotation;\n        if (data.wrap !== void 0) {\n          texture.wrapS = parseConstant(data.wrap[0], TEXTURE_WRAPPING);\n          texture.wrapT = parseConstant(data.wrap[1], TEXTURE_WRAPPING);\n        }\n        if (data.format !== void 0)\n          texture.format = data.format;\n        if (data.type !== void 0)\n          texture.type = data.type;\n        if (data.encoding !== void 0)\n          texture.encoding = data.encoding;\n        if (data.minFilter !== void 0)\n          texture.minFilter = parseConstant(data.minFilter, TEXTURE_FILTER);\n        if (data.magFilter !== void 0)\n          texture.magFilter = parseConstant(data.magFilter, TEXTURE_FILTER);\n        if (data.anisotropy !== void 0)\n          texture.anisotropy = data.anisotropy;\n        if (data.flipY !== void 0)\n          texture.flipY = data.flipY;\n        if (data.premultiplyAlpha !== void 0)\n          texture.premultiplyAlpha = data.premultiplyAlpha;\n        if (data.unpackAlignment !== void 0)\n          texture.unpackAlignment = data.unpackAlignment;\n        if (data.userData !== void 0)\n          texture.userData = data.userData;\n        textures[data.uuid] = texture;\n      }\n    }\n    return textures;\n  }\n  parseObject(data, geometries, materials, textures, animations) {\n    let object;\n    function getGeometry(name) {\n      if (geometries[name] === void 0) {\n        console.warn(\"THREE.ObjectLoader: Undefined geometry\", name);\n      }\n      return geometries[name];\n    }\n    function getMaterial(name) {\n      if (name === void 0)\n        return void 0;\n      if (Array.isArray(name)) {\n        const array = [];\n        for (let i = 0, l = name.length; i < l; i++) {\n          const uuid = name[i];\n          if (materials[uuid] === void 0) {\n            console.warn(\"THREE.ObjectLoader: Undefined material\", uuid);\n          }\n          array.push(materials[uuid]);\n        }\n        return array;\n      }\n      if (materials[name] === void 0) {\n        console.warn(\"THREE.ObjectLoader: Undefined material\", name);\n      }\n      return materials[name];\n    }\n    function getTexture(uuid) {\n      if (textures[uuid] === void 0) {\n        console.warn(\"THREE.ObjectLoader: Undefined texture\", uuid);\n      }\n      return textures[uuid];\n    }\n    let geometry, material;\n    switch (data.type) {\n      case \"Scene\":\n        object = new Scene$1();\n        if (data.background !== void 0) {\n          if (Number.isInteger(data.background)) {\n            object.background = new Color(data.background);\n          } else {\n            object.background = getTexture(data.background);\n          }\n        }\n        if (data.environment !== void 0) {\n          object.environment = getTexture(data.environment);\n        }\n        if (data.fog !== void 0) {\n          if (data.fog.type === \"Fog\") {\n            object.fog = new Fog(data.fog.color, data.fog.near, data.fog.far);\n          } else if (data.fog.type === \"FogExp2\") {\n            object.fog = new FogExp2(data.fog.color, data.fog.density);\n          }\n        }\n        break;\n      case \"PerspectiveCamera\":\n        object = new PerspectiveCamera(data.fov, data.aspect, data.near, data.far);\n        if (data.focus !== void 0)\n          object.focus = data.focus;\n        if (data.zoom !== void 0)\n          object.zoom = data.zoom;\n        if (data.filmGauge !== void 0)\n          object.filmGauge = data.filmGauge;\n        if (data.filmOffset !== void 0)\n          object.filmOffset = data.filmOffset;\n        if (data.view !== void 0)\n          object.view = Object.assign({}, data.view);\n        break;\n      case \"OrthographicCamera\":\n        object = new OrthographicCamera(data.left, data.right, data.top, data.bottom, data.near, data.far);\n        if (data.zoom !== void 0)\n          object.zoom = data.zoom;\n        if (data.view !== void 0)\n          object.view = Object.assign({}, data.view);\n        break;\n      case \"AmbientLight\":\n        object = new AmbientLight(data.color, data.intensity);\n        break;\n      case \"DirectionalLight\":\n        object = new DirectionalLight(data.color, data.intensity);\n        break;\n      case \"PointLight\":\n        object = new PointLight(data.color, data.intensity, data.distance, data.decay);\n        break;\n      case \"RectAreaLight\":\n        object = new RectAreaLight(data.color, data.intensity, data.width, data.height);\n        break;\n      case \"SpotLight\":\n        object = new SpotLight(data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay);\n        break;\n      case \"HemisphereLight\":\n        object = new HemisphereLight(data.color, data.groundColor, data.intensity);\n        break;\n      case \"LightProbe\":\n        object = new LightProbe().fromJSON(data);\n        break;\n      case \"SkinnedMesh\":\n        geometry = getGeometry(data.geometry);\n        material = getMaterial(data.material);\n        object = new SkinnedMesh(geometry, material);\n        if (data.bindMode !== void 0)\n          object.bindMode = data.bindMode;\n        if (data.bindMatrix !== void 0)\n          object.bindMatrix.fromArray(data.bindMatrix);\n        if (data.skeleton !== void 0)\n          object.skeleton = data.skeleton;\n        break;\n      case \"Mesh\":\n        geometry = getGeometry(data.geometry);\n        material = getMaterial(data.material);\n        object = new Mesh(geometry, material);\n        break;\n      case \"InstancedMesh\":\n        geometry = getGeometry(data.geometry);\n        material = getMaterial(data.material);\n        const count = data.count;\n        const instanceMatrix = data.instanceMatrix;\n        const instanceColor = data.instanceColor;\n        object = new InstancedMesh$1(geometry, material, count);\n        object.instanceMatrix = new InstancedBufferAttribute(new Float32Array(instanceMatrix.array), 16);\n        if (instanceColor !== void 0)\n          object.instanceColor = new InstancedBufferAttribute(new Float32Array(instanceColor.array), instanceColor.itemSize);\n        break;\n      case \"LOD\":\n        object = new LOD();\n        break;\n      case \"Line\":\n        object = new Line(getGeometry(data.geometry), getMaterial(data.material));\n        break;\n      case \"LineLoop\":\n        object = new LineLoop(getGeometry(data.geometry), getMaterial(data.material));\n        break;\n      case \"LineSegments\":\n        object = new LineSegments(getGeometry(data.geometry), getMaterial(data.material));\n        break;\n      case \"PointCloud\":\n      case \"Points\":\n        object = new Points(getGeometry(data.geometry), getMaterial(data.material));\n        break;\n      case \"Sprite\":\n        object = new Sprite(getMaterial(data.material));\n        break;\n      case \"Group\":\n        object = new Group$1();\n        break;\n      case \"Bone\":\n        object = new Bone();\n        break;\n      default:\n        object = new Object3D$1();\n    }\n    object.uuid = data.uuid;\n    if (data.name !== void 0)\n      object.name = data.name;\n    if (data.matrix !== void 0) {\n      object.matrix.fromArray(data.matrix);\n      if (data.matrixAutoUpdate !== void 0)\n        object.matrixAutoUpdate = data.matrixAutoUpdate;\n      if (object.matrixAutoUpdate)\n        object.matrix.decompose(object.position, object.quaternion, object.scale);\n    } else {\n      if (data.position !== void 0)\n        object.position.fromArray(data.position);\n      if (data.rotation !== void 0)\n        object.rotation.fromArray(data.rotation);\n      if (data.quaternion !== void 0)\n        object.quaternion.fromArray(data.quaternion);\n      if (data.scale !== void 0)\n        object.scale.fromArray(data.scale);\n    }\n    if (data.castShadow !== void 0)\n      object.castShadow = data.castShadow;\n    if (data.receiveShadow !== void 0)\n      object.receiveShadow = data.receiveShadow;\n    if (data.shadow) {\n      if (data.shadow.bias !== void 0)\n        object.shadow.bias = data.shadow.bias;\n      if (data.shadow.normalBias !== void 0)\n        object.shadow.normalBias = data.shadow.normalBias;\n      if (data.shadow.radius !== void 0)\n        object.shadow.radius = data.shadow.radius;\n      if (data.shadow.mapSize !== void 0)\n        object.shadow.mapSize.fromArray(data.shadow.mapSize);\n      if (data.shadow.camera !== void 0)\n        object.shadow.camera = this.parseObject(data.shadow.camera);\n    }\n    if (data.visible !== void 0)\n      object.visible = data.visible;\n    if (data.frustumCulled !== void 0)\n      object.frustumCulled = data.frustumCulled;\n    if (data.renderOrder !== void 0)\n      object.renderOrder = data.renderOrder;\n    if (data.userData !== void 0)\n      object.userData = data.userData;\n    if (data.layers !== void 0)\n      object.layers.mask = data.layers;\n    if (data.children !== void 0) {\n      const children = data.children;\n      for (let i = 0; i < children.length; i++) {\n        object.add(this.parseObject(children[i], geometries, materials, textures, animations));\n      }\n    }\n    if (data.animations !== void 0) {\n      const objectAnimations = data.animations;\n      for (let i = 0; i < objectAnimations.length; i++) {\n        const uuid = objectAnimations[i];\n        object.animations.push(animations[uuid]);\n      }\n    }\n    if (data.type === \"LOD\") {\n      if (data.autoUpdate !== void 0)\n        object.autoUpdate = data.autoUpdate;\n      const levels = data.levels;\n      for (let l = 0; l < levels.length; l++) {\n        const level = levels[l];\n        const child = object.getObjectByProperty(\"uuid\", level.object);\n        if (child !== void 0) {\n          object.addLevel(child, level.distance);\n        }\n      }\n    }\n    return object;\n  }\n  bindSkeletons(object, skeletons) {\n    if (Object.keys(skeletons).length === 0)\n      return;\n    object.traverse(function(child) {\n      if (child.isSkinnedMesh === true && child.skeleton !== void 0) {\n        const skeleton = skeletons[child.skeleton];\n        if (skeleton === void 0) {\n          console.warn(\"THREE.ObjectLoader: No skeleton found with UUID:\", child.skeleton);\n        } else {\n          child.bind(skeleton, child.bindMatrix);\n        }\n      }\n    });\n  }\n}\nconst TEXTURE_MAPPING = {\n  UVMapping,\n  CubeReflectionMapping,\n  CubeRefractionMapping,\n  EquirectangularReflectionMapping,\n  EquirectangularRefractionMapping,\n  CubeUVReflectionMapping\n};\nconst TEXTURE_WRAPPING = {\n  RepeatWrapping,\n  ClampToEdgeWrapping,\n  MirroredRepeatWrapping\n};\nconst TEXTURE_FILTER = {\n  NearestFilter,\n  NearestMipmapNearestFilter,\n  NearestMipmapLinearFilter,\n  LinearFilter,\n  LinearMipmapNearestFilter,\n  LinearMipmapLinearFilter\n};\nclass ImageBitmapLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n    this.isImageBitmapLoader = true;\n    if (typeof createImageBitmap === \"undefined\") {\n      console.warn(\"THREE.ImageBitmapLoader: createImageBitmap() not supported.\");\n    }\n    if (typeof fetch === \"undefined\") {\n      console.warn(\"THREE.ImageBitmapLoader: fetch() not supported.\");\n    }\n    this.options = { premultiplyAlpha: \"none\" };\n  }\n  setOptions(options) {\n    this.options = options;\n    return this;\n  }\n  load(url, onLoad, onProgress, onError) {\n    if (url === void 0)\n      url = \"\";\n    if (this.path !== void 0)\n      url = this.path + url;\n    url = this.manager.resolveURL(url);\n    const scope = this;\n    const cached = Cache.get(url);\n    if (cached !== void 0) {\n      scope.manager.itemStart(url);\n      setTimeout(function() {\n        if (onLoad)\n          onLoad(cached);\n        scope.manager.itemEnd(url);\n      }, 0);\n      return cached;\n    }\n    const fetchOptions = {};\n    fetchOptions.credentials = this.crossOrigin === \"anonymous\" ? \"same-origin\" : \"include\";\n    fetchOptions.headers = this.requestHeader;\n    fetch(url, fetchOptions).then(function(res) {\n      return res.blob();\n    }).then(function(blob) {\n      return createImageBitmap(blob, Object.assign(scope.options, { colorSpaceConversion: \"none\" }));\n    }).then(function(imageBitmap) {\n      Cache.add(url, imageBitmap);\n      if (onLoad)\n        onLoad(imageBitmap);\n      scope.manager.itemEnd(url);\n    }).catch(function(e) {\n      if (onError)\n        onError(e);\n      scope.manager.itemError(url);\n      scope.manager.itemEnd(url);\n    });\n    scope.manager.itemStart(url);\n  }\n}\nlet _context;\nconst AudioContext = {\n  getContext: function() {\n    if (_context === void 0) {\n      _context = new (window.AudioContext || window.webkitAudioContext)();\n    }\n    return _context;\n  },\n  setContext: function(value) {\n    _context = value;\n  }\n};\nclass AudioLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const loader = new FileLoader(this.manager);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setPath(this.path);\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    loader.load(url, function(buffer) {\n      try {\n        const bufferCopy = buffer.slice(0);\n        const context = AudioContext.getContext();\n        context.decodeAudioData(bufferCopy, function(audioBuffer) {\n          onLoad(audioBuffer);\n        });\n      } catch (e) {\n        if (onError) {\n          onError(e);\n        } else {\n          console.error(e);\n        }\n        scope.manager.itemError(url);\n      }\n    }, onProgress, onError);\n  }\n}\nclass HemisphereLightProbe extends LightProbe {\n  constructor(skyColor, groundColor, intensity = 1) {\n    super(void 0, intensity);\n    this.isHemisphereLightProbe = true;\n    const color1 = new Color().set(skyColor);\n    const color2 = new Color().set(groundColor);\n    const sky = new Vector3(color1.r, color1.g, color1.b);\n    const ground = new Vector3(color2.r, color2.g, color2.b);\n    const c0 = Math.sqrt(Math.PI);\n    const c1 = c0 * Math.sqrt(0.75);\n    this.sh.coefficients[0].copy(sky).add(ground).multiplyScalar(c0);\n    this.sh.coefficients[1].copy(sky).sub(ground).multiplyScalar(c1);\n  }\n}\nclass AmbientLightProbe extends LightProbe {\n  constructor(color, intensity = 1) {\n    super(void 0, intensity);\n    this.isAmbientLightProbe = true;\n    const color1 = new Color().set(color);\n    this.sh.coefficients[0].set(color1.r, color1.g, color1.b).multiplyScalar(2 * Math.sqrt(Math.PI));\n  }\n}\nconst _eyeRight = /* @__PURE__ */ new Matrix4();\nconst _eyeLeft = /* @__PURE__ */ new Matrix4();\nconst _projectionMatrix = /* @__PURE__ */ new Matrix4();\nclass StereoCamera {\n  constructor() {\n    this.type = \"StereoCamera\";\n    this.aspect = 1;\n    this.eyeSep = 0.064;\n    this.cameraL = new PerspectiveCamera();\n    this.cameraL.layers.enable(1);\n    this.cameraL.matrixAutoUpdate = false;\n    this.cameraR = new PerspectiveCamera();\n    this.cameraR.layers.enable(2);\n    this.cameraR.matrixAutoUpdate = false;\n    this._cache = {\n      focus: null,\n      fov: null,\n      aspect: null,\n      near: null,\n      far: null,\n      zoom: null,\n      eyeSep: null\n    };\n  }\n  update(camera) {\n    const cache = this._cache;\n    const needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov || cache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near || cache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n    if (needsUpdate) {\n      cache.focus = camera.focus;\n      cache.fov = camera.fov;\n      cache.aspect = camera.aspect * this.aspect;\n      cache.near = camera.near;\n      cache.far = camera.far;\n      cache.zoom = camera.zoom;\n      cache.eyeSep = this.eyeSep;\n      _projectionMatrix.copy(camera.projectionMatrix);\n      const eyeSepHalf = cache.eyeSep / 2;\n      const eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n      const ymax = cache.near * Math.tan(DEG2RAD * cache.fov * 0.5) / cache.zoom;\n      let xmin, xmax;\n      _eyeLeft.elements[12] = -eyeSepHalf;\n      _eyeRight.elements[12] = eyeSepHalf;\n      xmin = -ymax * cache.aspect + eyeSepOnProjection;\n      xmax = ymax * cache.aspect + eyeSepOnProjection;\n      _projectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin);\n      _projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n      this.cameraL.projectionMatrix.copy(_projectionMatrix);\n      xmin = -ymax * cache.aspect - eyeSepOnProjection;\n      xmax = ymax * cache.aspect - eyeSepOnProjection;\n      _projectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin);\n      _projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n      this.cameraR.projectionMatrix.copy(_projectionMatrix);\n    }\n    this.cameraL.matrixWorld.copy(camera.matrixWorld).multiply(_eyeLeft);\n    this.cameraR.matrixWorld.copy(camera.matrixWorld).multiply(_eyeRight);\n  }\n}\nclass Clock {\n  constructor(autoStart = true) {\n    this.autoStart = autoStart;\n    this.startTime = 0;\n    this.oldTime = 0;\n    this.elapsedTime = 0;\n    this.running = false;\n  }\n  start() {\n    this.startTime = now();\n    this.oldTime = this.startTime;\n    this.elapsedTime = 0;\n    this.running = true;\n  }\n  stop() {\n    this.getElapsedTime();\n    this.running = false;\n    this.autoStart = false;\n  }\n  getElapsedTime() {\n    this.getDelta();\n    return this.elapsedTime;\n  }\n  getDelta() {\n    let diff = 0;\n    if (this.autoStart && !this.running) {\n      this.start();\n      return 0;\n    }\n    if (this.running) {\n      const newTime = now();\n      diff = (newTime - this.oldTime) / 1e3;\n      this.oldTime = newTime;\n      this.elapsedTime += diff;\n    }\n    return diff;\n  }\n}\nfunction now() {\n  return (typeof performance === \"undefined\" ? Date : performance).now();\n}\nconst _position$1 = /* @__PURE__ */ new Vector3();\nconst _quaternion$1 = /* @__PURE__ */ new Quaternion();\nconst _scale$1 = /* @__PURE__ */ new Vector3();\nconst _orientation$1 = /* @__PURE__ */ new Vector3();\nclass AudioListener extends Object3D$1 {\n  constructor() {\n    super();\n    this.type = \"AudioListener\";\n    this.context = AudioContext.getContext();\n    this.gain = this.context.createGain();\n    this.gain.connect(this.context.destination);\n    this.filter = null;\n    this.timeDelta = 0;\n    this._clock = new Clock();\n  }\n  getInput() {\n    return this.gain;\n  }\n  removeFilter() {\n    if (this.filter !== null) {\n      this.gain.disconnect(this.filter);\n      this.filter.disconnect(this.context.destination);\n      this.gain.connect(this.context.destination);\n      this.filter = null;\n    }\n    return this;\n  }\n  getFilter() {\n    return this.filter;\n  }\n  setFilter(value) {\n    if (this.filter !== null) {\n      this.gain.disconnect(this.filter);\n      this.filter.disconnect(this.context.destination);\n    } else {\n      this.gain.disconnect(this.context.destination);\n    }\n    this.filter = value;\n    this.gain.connect(this.filter);\n    this.filter.connect(this.context.destination);\n    return this;\n  }\n  getMasterVolume() {\n    return this.gain.gain.value;\n  }\n  setMasterVolume(value) {\n    this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n    return this;\n  }\n  updateMatrixWorld(force) {\n    super.updateMatrixWorld(force);\n    const listener = this.context.listener;\n    const up = this.up;\n    this.timeDelta = this._clock.getDelta();\n    this.matrixWorld.decompose(_position$1, _quaternion$1, _scale$1);\n    _orientation$1.set(0, 0, -1).applyQuaternion(_quaternion$1);\n    if (listener.positionX) {\n      const endTime = this.context.currentTime + this.timeDelta;\n      listener.positionX.linearRampToValueAtTime(_position$1.x, endTime);\n      listener.positionY.linearRampToValueAtTime(_position$1.y, endTime);\n      listener.positionZ.linearRampToValueAtTime(_position$1.z, endTime);\n      listener.forwardX.linearRampToValueAtTime(_orientation$1.x, endTime);\n      listener.forwardY.linearRampToValueAtTime(_orientation$1.y, endTime);\n      listener.forwardZ.linearRampToValueAtTime(_orientation$1.z, endTime);\n      listener.upX.linearRampToValueAtTime(up.x, endTime);\n      listener.upY.linearRampToValueAtTime(up.y, endTime);\n      listener.upZ.linearRampToValueAtTime(up.z, endTime);\n    } else {\n      listener.setPosition(_position$1.x, _position$1.y, _position$1.z);\n      listener.setOrientation(_orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z);\n    }\n  }\n}\nclass Audio extends Object3D$1 {\n  constructor(listener) {\n    super();\n    this.type = \"Audio\";\n    this.listener = listener;\n    this.context = listener.context;\n    this.gain = this.context.createGain();\n    this.gain.connect(listener.getInput());\n    this.autoplay = false;\n    this.buffer = null;\n    this.detune = 0;\n    this.loop = false;\n    this.loopStart = 0;\n    this.loopEnd = 0;\n    this.offset = 0;\n    this.duration = void 0;\n    this.playbackRate = 1;\n    this.isPlaying = false;\n    this.hasPlaybackControl = true;\n    this.source = null;\n    this.sourceType = \"empty\";\n    this._startedAt = 0;\n    this._progress = 0;\n    this._connected = false;\n    this.filters = [];\n  }\n  getOutput() {\n    return this.gain;\n  }\n  setNodeSource(audioNode) {\n    this.hasPlaybackControl = false;\n    this.sourceType = \"audioNode\";\n    this.source = audioNode;\n    this.connect();\n    return this;\n  }\n  setMediaElementSource(mediaElement) {\n    this.hasPlaybackControl = false;\n    this.sourceType = \"mediaNode\";\n    this.source = this.context.createMediaElementSource(mediaElement);\n    this.connect();\n    return this;\n  }\n  setMediaStreamSource(mediaStream) {\n    this.hasPlaybackControl = false;\n    this.sourceType = \"mediaStreamNode\";\n    this.source = this.context.createMediaStreamSource(mediaStream);\n    this.connect();\n    return this;\n  }\n  setBuffer(audioBuffer) {\n    this.buffer = audioBuffer;\n    this.sourceType = \"buffer\";\n    if (this.autoplay)\n      this.play();\n    return this;\n  }\n  play(delay = 0) {\n    if (this.isPlaying === true) {\n      console.warn(\"THREE.Audio: Audio is already playing.\");\n      return;\n    }\n    if (this.hasPlaybackControl === false) {\n      console.warn(\"THREE.Audio: this Audio has no playback control.\");\n      return;\n    }\n    this._startedAt = this.context.currentTime + delay;\n    const source = this.context.createBufferSource();\n    source.buffer = this.buffer;\n    source.loop = this.loop;\n    source.loopStart = this.loopStart;\n    source.loopEnd = this.loopEnd;\n    source.onended = this.onEnded.bind(this);\n    source.start(this._startedAt, this._progress + this.offset, this.duration);\n    this.isPlaying = true;\n    this.source = source;\n    this.setDetune(this.detune);\n    this.setPlaybackRate(this.playbackRate);\n    return this.connect();\n  }\n  pause() {\n    if (this.hasPlaybackControl === false) {\n      console.warn(\"THREE.Audio: this Audio has no playback control.\");\n      return;\n    }\n    if (this.isPlaying === true) {\n      this._progress += Math.max(this.context.currentTime - this._startedAt, 0) * this.playbackRate;\n      if (this.loop === true) {\n        this._progress = this._progress % (this.duration || this.buffer.duration);\n      }\n      this.source.stop();\n      this.source.onended = null;\n      this.isPlaying = false;\n    }\n    return this;\n  }\n  stop() {\n    if (this.hasPlaybackControl === false) {\n      console.warn(\"THREE.Audio: this Audio has no playback control.\");\n      return;\n    }\n    this._progress = 0;\n    this.source.stop();\n    this.source.onended = null;\n    this.isPlaying = false;\n    return this;\n  }\n  connect() {\n    if (this.filters.length > 0) {\n      this.source.connect(this.filters[0]);\n      for (let i = 1, l = this.filters.length; i < l; i++) {\n        this.filters[i - 1].connect(this.filters[i]);\n      }\n      this.filters[this.filters.length - 1].connect(this.getOutput());\n    } else {\n      this.source.connect(this.getOutput());\n    }\n    this._connected = true;\n    return this;\n  }\n  disconnect() {\n    if (this.filters.length > 0) {\n      this.source.disconnect(this.filters[0]);\n      for (let i = 1, l = this.filters.length; i < l; i++) {\n        this.filters[i - 1].disconnect(this.filters[i]);\n      }\n      this.filters[this.filters.length - 1].disconnect(this.getOutput());\n    } else {\n      this.source.disconnect(this.getOutput());\n    }\n    this._connected = false;\n    return this;\n  }\n  getFilters() {\n    return this.filters;\n  }\n  setFilters(value) {\n    if (!value)\n      value = [];\n    if (this._connected === true) {\n      this.disconnect();\n      this.filters = value.slice();\n      this.connect();\n    } else {\n      this.filters = value.slice();\n    }\n    return this;\n  }\n  setDetune(value) {\n    this.detune = value;\n    if (this.source.detune === void 0)\n      return;\n    if (this.isPlaying === true) {\n      this.source.detune.setTargetAtTime(this.detune, this.context.currentTime, 0.01);\n    }\n    return this;\n  }\n  getDetune() {\n    return this.detune;\n  }\n  getFilter() {\n    return this.getFilters()[0];\n  }\n  setFilter(filter) {\n    return this.setFilters(filter ? [filter] : []);\n  }\n  setPlaybackRate(value) {\n    if (this.hasPlaybackControl === false) {\n      console.warn(\"THREE.Audio: this Audio has no playback control.\");\n      return;\n    }\n    this.playbackRate = value;\n    if (this.isPlaying === true) {\n      this.source.playbackRate.setTargetAtTime(this.playbackRate, this.context.currentTime, 0.01);\n    }\n    return this;\n  }\n  getPlaybackRate() {\n    return this.playbackRate;\n  }\n  onEnded() {\n    this.isPlaying = false;\n  }\n  getLoop() {\n    if (this.hasPlaybackControl === false) {\n      console.warn(\"THREE.Audio: this Audio has no playback control.\");\n      return false;\n    }\n    return this.loop;\n  }\n  setLoop(value) {\n    if (this.hasPlaybackControl === false) {\n      console.warn(\"THREE.Audio: this Audio has no playback control.\");\n      return;\n    }\n    this.loop = value;\n    if (this.isPlaying === true) {\n      this.source.loop = this.loop;\n    }\n    return this;\n  }\n  setLoopStart(value) {\n    this.loopStart = value;\n    return this;\n  }\n  setLoopEnd(value) {\n    this.loopEnd = value;\n    return this;\n  }\n  getVolume() {\n    return this.gain.gain.value;\n  }\n  setVolume(value) {\n    this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n    return this;\n  }\n}\nconst _position = /* @__PURE__ */ new Vector3();\nconst _quaternion = /* @__PURE__ */ new Quaternion();\nconst _scale = /* @__PURE__ */ new Vector3();\nconst _orientation = /* @__PURE__ */ new Vector3();\nclass PositionalAudio extends Audio {\n  constructor(listener) {\n    super(listener);\n    this.panner = this.context.createPanner();\n    this.panner.panningModel = \"HRTF\";\n    this.panner.connect(this.gain);\n  }\n  disconnect() {\n    super.disconnect();\n    this.panner.disconnect(this.gain);\n  }\n  getOutput() {\n    return this.panner;\n  }\n  getRefDistance() {\n    return this.panner.refDistance;\n  }\n  setRefDistance(value) {\n    this.panner.refDistance = value;\n    return this;\n  }\n  getRolloffFactor() {\n    return this.panner.rolloffFactor;\n  }\n  setRolloffFactor(value) {\n    this.panner.rolloffFactor = value;\n    return this;\n  }\n  getDistanceModel() {\n    return this.panner.distanceModel;\n  }\n  setDistanceModel(value) {\n    this.panner.distanceModel = value;\n    return this;\n  }\n  getMaxDistance() {\n    return this.panner.maxDistance;\n  }\n  setMaxDistance(value) {\n    this.panner.maxDistance = value;\n    return this;\n  }\n  setDirectionalCone(coneInnerAngle, coneOuterAngle, coneOuterGain) {\n    this.panner.coneInnerAngle = coneInnerAngle;\n    this.panner.coneOuterAngle = coneOuterAngle;\n    this.panner.coneOuterGain = coneOuterGain;\n    return this;\n  }\n  updateMatrixWorld(force) {\n    super.updateMatrixWorld(force);\n    if (this.hasPlaybackControl === true && this.isPlaying === false)\n      return;\n    this.matrixWorld.decompose(_position, _quaternion, _scale);\n    _orientation.set(0, 0, 1).applyQuaternion(_quaternion);\n    const panner = this.panner;\n    if (panner.positionX) {\n      const endTime = this.context.currentTime + this.listener.timeDelta;\n      panner.positionX.linearRampToValueAtTime(_position.x, endTime);\n      panner.positionY.linearRampToValueAtTime(_position.y, endTime);\n      panner.positionZ.linearRampToValueAtTime(_position.z, endTime);\n      panner.orientationX.linearRampToValueAtTime(_orientation.x, endTime);\n      panner.orientationY.linearRampToValueAtTime(_orientation.y, endTime);\n      panner.orientationZ.linearRampToValueAtTime(_orientation.z, endTime);\n    } else {\n      panner.setPosition(_position.x, _position.y, _position.z);\n      panner.setOrientation(_orientation.x, _orientation.y, _orientation.z);\n    }\n  }\n}\nclass AudioAnalyser {\n  constructor(audio, fftSize = 2048) {\n    this.analyser = audio.context.createAnalyser();\n    this.analyser.fftSize = fftSize;\n    this.data = new Uint8Array(this.analyser.frequencyBinCount);\n    audio.getOutput().connect(this.analyser);\n  }\n  getFrequencyData() {\n    this.analyser.getByteFrequencyData(this.data);\n    return this.data;\n  }\n  getAverageFrequency() {\n    let value = 0;\n    const data = this.getFrequencyData();\n    for (let i = 0; i < data.length; i++) {\n      value += data[i];\n    }\n    return value / data.length;\n  }\n}\nclass PropertyMixer {\n  constructor(binding, typeName, valueSize) {\n    this.binding = binding;\n    this.valueSize = valueSize;\n    let mixFunction, mixFunctionAdditive, setIdentity;\n    switch (typeName) {\n      case \"quaternion\":\n        mixFunction = this._slerp;\n        mixFunctionAdditive = this._slerpAdditive;\n        setIdentity = this._setAdditiveIdentityQuaternion;\n        this.buffer = new Float64Array(valueSize * 6);\n        this._workIndex = 5;\n        break;\n      case \"string\":\n      case \"bool\":\n        mixFunction = this._select;\n        mixFunctionAdditive = this._select;\n        setIdentity = this._setAdditiveIdentityOther;\n        this.buffer = new Array(valueSize * 5);\n        break;\n      default:\n        mixFunction = this._lerp;\n        mixFunctionAdditive = this._lerpAdditive;\n        setIdentity = this._setAdditiveIdentityNumeric;\n        this.buffer = new Float64Array(valueSize * 5);\n    }\n    this._mixBufferRegion = mixFunction;\n    this._mixBufferRegionAdditive = mixFunctionAdditive;\n    this._setIdentity = setIdentity;\n    this._origIndex = 3;\n    this._addIndex = 4;\n    this.cumulativeWeight = 0;\n    this.cumulativeWeightAdditive = 0;\n    this.useCount = 0;\n    this.referenceCount = 0;\n  }\n  accumulate(accuIndex, weight) {\n    const buffer = this.buffer, stride = this.valueSize, offset = accuIndex * stride + stride;\n    let currentWeight = this.cumulativeWeight;\n    if (currentWeight === 0) {\n      for (let i = 0; i !== stride; ++i) {\n        buffer[offset + i] = buffer[i];\n      }\n      currentWeight = weight;\n    } else {\n      currentWeight += weight;\n      const mix = weight / currentWeight;\n      this._mixBufferRegion(buffer, offset, 0, mix, stride);\n    }\n    this.cumulativeWeight = currentWeight;\n  }\n  accumulateAdditive(weight) {\n    const buffer = this.buffer, stride = this.valueSize, offset = stride * this._addIndex;\n    if (this.cumulativeWeightAdditive === 0) {\n      this._setIdentity();\n    }\n    this._mixBufferRegionAdditive(buffer, offset, 0, weight, stride);\n    this.cumulativeWeightAdditive += weight;\n  }\n  apply(accuIndex) {\n    const stride = this.valueSize, buffer = this.buffer, offset = accuIndex * stride + stride, weight = this.cumulativeWeight, weightAdditive = this.cumulativeWeightAdditive, binding = this.binding;\n    this.cumulativeWeight = 0;\n    this.cumulativeWeightAdditive = 0;\n    if (weight < 1) {\n      const originalValueOffset = stride * this._origIndex;\n      this._mixBufferRegion(\n        buffer,\n        offset,\n        originalValueOffset,\n        1 - weight,\n        stride\n      );\n    }\n    if (weightAdditive > 0) {\n      this._mixBufferRegionAdditive(buffer, offset, this._addIndex * stride, 1, stride);\n    }\n    for (let i = stride, e = stride + stride; i !== e; ++i) {\n      if (buffer[i] !== buffer[i + stride]) {\n        binding.setValue(buffer, offset);\n        break;\n      }\n    }\n  }\n  saveOriginalState() {\n    const binding = this.binding;\n    const buffer = this.buffer, stride = this.valueSize, originalValueOffset = stride * this._origIndex;\n    binding.getValue(buffer, originalValueOffset);\n    for (let i = stride, e = originalValueOffset; i !== e; ++i) {\n      buffer[i] = buffer[originalValueOffset + i % stride];\n    }\n    this._setIdentity();\n    this.cumulativeWeight = 0;\n    this.cumulativeWeightAdditive = 0;\n  }\n  restoreOriginalState() {\n    const originalValueOffset = this.valueSize * 3;\n    this.binding.setValue(this.buffer, originalValueOffset);\n  }\n  _setAdditiveIdentityNumeric() {\n    const startIndex = this._addIndex * this.valueSize;\n    const endIndex = startIndex + this.valueSize;\n    for (let i = startIndex; i < endIndex; i++) {\n      this.buffer[i] = 0;\n    }\n  }\n  _setAdditiveIdentityQuaternion() {\n    this._setAdditiveIdentityNumeric();\n    this.buffer[this._addIndex * this.valueSize + 3] = 1;\n  }\n  _setAdditiveIdentityOther() {\n    const startIndex = this._origIndex * this.valueSize;\n    const targetIndex = this._addIndex * this.valueSize;\n    for (let i = 0; i < this.valueSize; i++) {\n      this.buffer[targetIndex + i] = this.buffer[startIndex + i];\n    }\n  }\n  _select(buffer, dstOffset, srcOffset, t, stride) {\n    if (t >= 0.5) {\n      for (let i = 0; i !== stride; ++i) {\n        buffer[dstOffset + i] = buffer[srcOffset + i];\n      }\n    }\n  }\n  _slerp(buffer, dstOffset, srcOffset, t) {\n    Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t);\n  }\n  _slerpAdditive(buffer, dstOffset, srcOffset, t, stride) {\n    const workOffset = this._workIndex * stride;\n    Quaternion.multiplyQuaternionsFlat(buffer, workOffset, buffer, dstOffset, buffer, srcOffset);\n    Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t);\n  }\n  _lerp(buffer, dstOffset, srcOffset, t, stride) {\n    const s = 1 - t;\n    for (let i = 0; i !== stride; ++i) {\n      const j = dstOffset + i;\n      buffer[j] = buffer[j] * s + buffer[srcOffset + i] * t;\n    }\n  }\n  _lerpAdditive(buffer, dstOffset, srcOffset, t, stride) {\n    for (let i = 0; i !== stride; ++i) {\n      const j = dstOffset + i;\n      buffer[j] = buffer[j] + buffer[srcOffset + i] * t;\n    }\n  }\n}\nconst _RESERVED_CHARS_RE = \"\\\\[\\\\]\\\\.:\\\\/\";\nconst _reservedRe = new RegExp(\"[\" + _RESERVED_CHARS_RE + \"]\", \"g\");\nconst _wordChar = \"[^\" + _RESERVED_CHARS_RE + \"]\";\nconst _wordCharOrDot = \"[^\" + _RESERVED_CHARS_RE.replace(\"\\\\.\", \"\") + \"]\";\nconst _directoryRe = /* @__PURE__ */ /((?:WC+[\\/:])*)/.source.replace(\"WC\", _wordChar);\nconst _nodeRe = /* @__PURE__ */ /(WCOD+)?/.source.replace(\"WCOD\", _wordCharOrDot);\nconst _objectRe = /* @__PURE__ */ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace(\"WC\", _wordChar);\nconst _propertyRe = /* @__PURE__ */ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace(\"WC\", _wordChar);\nconst _trackRe = new RegExp(\n  \"^\" + _directoryRe + _nodeRe + _objectRe + _propertyRe + \"$\"\n);\nconst _supportedObjectNames = [\"material\", \"materials\", \"bones\"];\nclass Composite {\n  constructor(targetGroup, path, optionalParsedPath) {\n    const parsedPath = optionalParsedPath || PropertyBinding.parseTrackName(path);\n    this._targetGroup = targetGroup;\n    this._bindings = targetGroup.subscribe_(path, parsedPath);\n  }\n  getValue(array, offset) {\n    this.bind();\n    const firstValidIndex = this._targetGroup.nCachedObjects_, binding = this._bindings[firstValidIndex];\n    if (binding !== void 0)\n      binding.getValue(array, offset);\n  }\n  setValue(array, offset) {\n    const bindings = this._bindings;\n    for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n      bindings[i].setValue(array, offset);\n    }\n  }\n  bind() {\n    const bindings = this._bindings;\n    for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n      bindings[i].bind();\n    }\n  }\n  unbind() {\n    const bindings = this._bindings;\n    for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n      bindings[i].unbind();\n    }\n  }\n}\nclass PropertyBinding {\n  constructor(rootNode, path, parsedPath) {\n    this.path = path;\n    this.parsedPath = parsedPath || PropertyBinding.parseTrackName(path);\n    this.node = PropertyBinding.findNode(rootNode, this.parsedPath.nodeName) || rootNode;\n    this.rootNode = rootNode;\n    this.getValue = this._getValue_unbound;\n    this.setValue = this._setValue_unbound;\n  }\n  static create(root, path, parsedPath) {\n    if (!(root && root.isAnimationObjectGroup)) {\n      return new PropertyBinding(root, path, parsedPath);\n    } else {\n      return new PropertyBinding.Composite(root, path, parsedPath);\n    }\n  }\n  static sanitizeNodeName(name) {\n    return name.replace(/\\s/g, \"_\").replace(_reservedRe, \"\");\n  }\n  static parseTrackName(trackName) {\n    const matches = _trackRe.exec(trackName);\n    if (matches === null) {\n      throw new Error(\"PropertyBinding: Cannot parse trackName: \" + trackName);\n    }\n    const results = {\n      nodeName: matches[2],\n      objectName: matches[3],\n      objectIndex: matches[4],\n      propertyName: matches[5],\n      propertyIndex: matches[6]\n    };\n    const lastDot = results.nodeName && results.nodeName.lastIndexOf(\".\");\n    if (lastDot !== void 0 && lastDot !== -1) {\n      const objectName = results.nodeName.substring(lastDot + 1);\n      if (_supportedObjectNames.indexOf(objectName) !== -1) {\n        results.nodeName = results.nodeName.substring(0, lastDot);\n        results.objectName = objectName;\n      }\n    }\n    if (results.propertyName === null || results.propertyName.length === 0) {\n      throw new Error(\"PropertyBinding: can not parse propertyName from trackName: \" + trackName);\n    }\n    return results;\n  }\n  static findNode(root, nodeName) {\n    if (nodeName === void 0 || nodeName === \"\" || nodeName === \".\" || nodeName === -1 || nodeName === root.name || nodeName === root.uuid) {\n      return root;\n    }\n    if (root.skeleton) {\n      const bone = root.skeleton.getBoneByName(nodeName);\n      if (bone !== void 0) {\n        return bone;\n      }\n    }\n    if (root.children) {\n      const searchNodeSubtree = function(children) {\n        for (let i = 0; i < children.length; i++) {\n          const childNode = children[i];\n          if (childNode.name === nodeName || childNode.uuid === nodeName) {\n            return childNode;\n          }\n          const result = searchNodeSubtree(childNode.children);\n          if (result)\n            return result;\n        }\n        return null;\n      };\n      const subTreeNode = searchNodeSubtree(root.children);\n      if (subTreeNode) {\n        return subTreeNode;\n      }\n    }\n    return null;\n  }\n  _getValue_unavailable() {\n  }\n  _setValue_unavailable() {\n  }\n  _getValue_direct(buffer, offset) {\n    buffer[offset] = this.targetObject[this.propertyName];\n  }\n  _getValue_array(buffer, offset) {\n    const source = this.resolvedProperty;\n    for (let i = 0, n = source.length; i !== n; ++i) {\n      buffer[offset++] = source[i];\n    }\n  }\n  _getValue_arrayElement(buffer, offset) {\n    buffer[offset] = this.resolvedProperty[this.propertyIndex];\n  }\n  _getValue_toArray(buffer, offset) {\n    this.resolvedProperty.toArray(buffer, offset);\n  }\n  _setValue_direct(buffer, offset) {\n    this.targetObject[this.propertyName] = buffer[offset];\n  }\n  _setValue_direct_setNeedsUpdate(buffer, offset) {\n    this.targetObject[this.propertyName] = buffer[offset];\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_direct_setMatrixWorldNeedsUpdate(buffer, offset) {\n    this.targetObject[this.propertyName] = buffer[offset];\n    this.targetObject.matrixWorldNeedsUpdate = true;\n  }\n  _setValue_array(buffer, offset) {\n    const dest = this.resolvedProperty;\n    for (let i = 0, n = dest.length; i !== n; ++i) {\n      dest[i] = buffer[offset++];\n    }\n  }\n  _setValue_array_setNeedsUpdate(buffer, offset) {\n    const dest = this.resolvedProperty;\n    for (let i = 0, n = dest.length; i !== n; ++i) {\n      dest[i] = buffer[offset++];\n    }\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_array_setMatrixWorldNeedsUpdate(buffer, offset) {\n    const dest = this.resolvedProperty;\n    for (let i = 0, n = dest.length; i !== n; ++i) {\n      dest[i] = buffer[offset++];\n    }\n    this.targetObject.matrixWorldNeedsUpdate = true;\n  }\n  _setValue_arrayElement(buffer, offset) {\n    this.resolvedProperty[this.propertyIndex] = buffer[offset];\n  }\n  _setValue_arrayElement_setNeedsUpdate(buffer, offset) {\n    this.resolvedProperty[this.propertyIndex] = buffer[offset];\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_arrayElement_setMatrixWorldNeedsUpdate(buffer, offset) {\n    this.resolvedProperty[this.propertyIndex] = buffer[offset];\n    this.targetObject.matrixWorldNeedsUpdate = true;\n  }\n  _setValue_fromArray(buffer, offset) {\n    this.resolvedProperty.fromArray(buffer, offset);\n  }\n  _setValue_fromArray_setNeedsUpdate(buffer, offset) {\n    this.resolvedProperty.fromArray(buffer, offset);\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_fromArray_setMatrixWorldNeedsUpdate(buffer, offset) {\n    this.resolvedProperty.fromArray(buffer, offset);\n    this.targetObject.matrixWorldNeedsUpdate = true;\n  }\n  _getValue_unbound(targetArray, offset) {\n    this.bind();\n    this.getValue(targetArray, offset);\n  }\n  _setValue_unbound(sourceArray, offset) {\n    this.bind();\n    this.setValue(sourceArray, offset);\n  }\n  bind() {\n    let targetObject = this.node;\n    const parsedPath = this.parsedPath;\n    const objectName = parsedPath.objectName;\n    const propertyName = parsedPath.propertyName;\n    let propertyIndex = parsedPath.propertyIndex;\n    if (!targetObject) {\n      targetObject = PropertyBinding.findNode(this.rootNode, parsedPath.nodeName) || this.rootNode;\n      this.node = targetObject;\n    }\n    this.getValue = this._getValue_unavailable;\n    this.setValue = this._setValue_unavailable;\n    if (!targetObject) {\n      console.error(\"THREE.PropertyBinding: Trying to update node for track: \" + this.path + \" but it wasn't found.\");\n      return;\n    }\n    if (objectName) {\n      let objectIndex = parsedPath.objectIndex;\n      switch (objectName) {\n        case \"materials\":\n          if (!targetObject.material) {\n            console.error(\"THREE.PropertyBinding: Can not bind to material as node does not have a material.\", this);\n            return;\n          }\n          if (!targetObject.material.materials) {\n            console.error(\"THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.\", this);\n            return;\n          }\n          targetObject = targetObject.material.materials;\n          break;\n        case \"bones\":\n          if (!targetObject.skeleton) {\n            console.error(\"THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.\", this);\n            return;\n          }\n          targetObject = targetObject.skeleton.bones;\n          for (let i = 0; i < targetObject.length; i++) {\n            if (targetObject[i].name === objectIndex) {\n              objectIndex = i;\n              break;\n            }\n          }\n          break;\n        default:\n          if (targetObject[objectName] === void 0) {\n            console.error(\"THREE.PropertyBinding: Can not bind to objectName of node undefined.\", this);\n            return;\n          }\n          targetObject = targetObject[objectName];\n      }\n      if (objectIndex !== void 0) {\n        if (targetObject[objectIndex] === void 0) {\n          console.error(\"THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.\", this, targetObject);\n          return;\n        }\n        targetObject = targetObject[objectIndex];\n      }\n    }\n    const nodeProperty = targetObject[propertyName];\n    if (nodeProperty === void 0) {\n      const nodeName = parsedPath.nodeName;\n      console.error(\"THREE.PropertyBinding: Trying to update property for track: \" + nodeName + \".\" + propertyName + \" but it wasn't found.\", targetObject);\n      return;\n    }\n    let versioning = this.Versioning.None;\n    this.targetObject = targetObject;\n    if (targetObject.needsUpdate !== void 0) {\n      versioning = this.Versioning.NeedsUpdate;\n    } else if (targetObject.matrixWorldNeedsUpdate !== void 0) {\n      versioning = this.Versioning.MatrixWorldNeedsUpdate;\n    }\n    let bindingType = this.BindingType.Direct;\n    if (propertyIndex !== void 0) {\n      if (propertyName === \"morphTargetInfluences\") {\n        if (!targetObject.geometry) {\n          console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.\", this);\n          return;\n        }\n        if (!targetObject.geometry.morphAttributes) {\n          console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.\", this);\n          return;\n        }\n        if (targetObject.morphTargetDictionary[propertyIndex] !== void 0) {\n          propertyIndex = targetObject.morphTargetDictionary[propertyIndex];\n        }\n      }\n      bindingType = this.BindingType.ArrayElement;\n      this.resolvedProperty = nodeProperty;\n      this.propertyIndex = propertyIndex;\n    } else if (nodeProperty.fromArray !== void 0 && nodeProperty.toArray !== void 0) {\n      bindingType = this.BindingType.HasFromToArray;\n      this.resolvedProperty = nodeProperty;\n    } else if (Array.isArray(nodeProperty)) {\n      bindingType = this.BindingType.EntireArray;\n      this.resolvedProperty = nodeProperty;\n    } else {\n      this.propertyName = propertyName;\n    }\n    this.getValue = this.GetterByBindingType[bindingType];\n    this.setValue = this.SetterByBindingTypeAndVersioning[bindingType][versioning];\n  }\n  unbind() {\n    this.node = null;\n    this.getValue = this._getValue_unbound;\n    this.setValue = this._setValue_unbound;\n  }\n}\nPropertyBinding.Composite = Composite;\nPropertyBinding.prototype.BindingType = {\n  Direct: 0,\n  EntireArray: 1,\n  ArrayElement: 2,\n  HasFromToArray: 3\n};\nPropertyBinding.prototype.Versioning = {\n  None: 0,\n  NeedsUpdate: 1,\n  MatrixWorldNeedsUpdate: 2\n};\nPropertyBinding.prototype.GetterByBindingType = [\n  PropertyBinding.prototype._getValue_direct,\n  PropertyBinding.prototype._getValue_array,\n  PropertyBinding.prototype._getValue_arrayElement,\n  PropertyBinding.prototype._getValue_toArray\n];\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n  [\n    PropertyBinding.prototype._setValue_direct,\n    PropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n    PropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate\n  ],\n  [\n    PropertyBinding.prototype._setValue_array,\n    PropertyBinding.prototype._setValue_array_setNeedsUpdate,\n    PropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate\n  ],\n  [\n    PropertyBinding.prototype._setValue_arrayElement,\n    PropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n    PropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate\n  ],\n  [\n    PropertyBinding.prototype._setValue_fromArray,\n    PropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n    PropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate\n  ]\n];\nclass AnimationObjectGroup {\n  constructor() {\n    this.isAnimationObjectGroup = true;\n    this.uuid = generateUUID();\n    this._objects = Array.prototype.slice.call(arguments);\n    this.nCachedObjects_ = 0;\n    const indices = {};\n    this._indicesByUUID = indices;\n    for (let i = 0, n = arguments.length; i !== n; ++i) {\n      indices[arguments[i].uuid] = i;\n    }\n    this._paths = [];\n    this._parsedPaths = [];\n    this._bindings = [];\n    this._bindingsIndicesByPath = {};\n    const scope = this;\n    this.stats = {\n      objects: {\n        get total() {\n          return scope._objects.length;\n        },\n        get inUse() {\n          return this.total - scope.nCachedObjects_;\n        }\n      },\n      get bindingsPerObject() {\n        return scope._bindings.length;\n      }\n    };\n  }\n  add() {\n    const objects = this._objects, indicesByUUID = this._indicesByUUID, paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, nBindings = bindings.length;\n    let knownObject = void 0, nObjects = objects.length, nCachedObjects = this.nCachedObjects_;\n    for (let i = 0, n = arguments.length; i !== n; ++i) {\n      const object = arguments[i], uuid = object.uuid;\n      let index = indicesByUUID[uuid];\n      if (index === void 0) {\n        index = nObjects++;\n        indicesByUUID[uuid] = index;\n        objects.push(object);\n        for (let j = 0, m = nBindings; j !== m; ++j) {\n          bindings[j].push(new PropertyBinding(object, paths[j], parsedPaths[j]));\n        }\n      } else if (index < nCachedObjects) {\n        knownObject = objects[index];\n        const firstActiveIndex = --nCachedObjects, lastCachedObject = objects[firstActiveIndex];\n        indicesByUUID[lastCachedObject.uuid] = index;\n        objects[index] = lastCachedObject;\n        indicesByUUID[uuid] = firstActiveIndex;\n        objects[firstActiveIndex] = object;\n        for (let j = 0, m = nBindings; j !== m; ++j) {\n          const bindingsForPath = bindings[j], lastCached = bindingsForPath[firstActiveIndex];\n          let binding = bindingsForPath[index];\n          bindingsForPath[index] = lastCached;\n          if (binding === void 0) {\n            binding = new PropertyBinding(object, paths[j], parsedPaths[j]);\n          }\n          bindingsForPath[firstActiveIndex] = binding;\n        }\n      } else if (objects[index] !== knownObject) {\n        console.error(\"THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.\");\n      }\n    }\n    this.nCachedObjects_ = nCachedObjects;\n  }\n  remove() {\n    const objects = this._objects, indicesByUUID = this._indicesByUUID, bindings = this._bindings, nBindings = bindings.length;\n    let nCachedObjects = this.nCachedObjects_;\n    for (let i = 0, n = arguments.length; i !== n; ++i) {\n      const object = arguments[i], uuid = object.uuid, index = indicesByUUID[uuid];\n      if (index !== void 0 && index >= nCachedObjects) {\n        const lastCachedIndex = nCachedObjects++, firstActiveObject = objects[lastCachedIndex];\n        indicesByUUID[firstActiveObject.uuid] = index;\n        objects[index] = firstActiveObject;\n        indicesByUUID[uuid] = lastCachedIndex;\n        objects[lastCachedIndex] = object;\n        for (let j = 0, m = nBindings; j !== m; ++j) {\n          const bindingsForPath = bindings[j], firstActive = bindingsForPath[lastCachedIndex], binding = bindingsForPath[index];\n          bindingsForPath[index] = firstActive;\n          bindingsForPath[lastCachedIndex] = binding;\n        }\n      }\n    }\n    this.nCachedObjects_ = nCachedObjects;\n  }\n  uncache() {\n    const objects = this._objects, indicesByUUID = this._indicesByUUID, bindings = this._bindings, nBindings = bindings.length;\n    let nCachedObjects = this.nCachedObjects_, nObjects = objects.length;\n    for (let i = 0, n = arguments.length; i !== n; ++i) {\n      const object = arguments[i], uuid = object.uuid, index = indicesByUUID[uuid];\n      if (index !== void 0) {\n        delete indicesByUUID[uuid];\n        if (index < nCachedObjects) {\n          const firstActiveIndex = --nCachedObjects, lastCachedObject = objects[firstActiveIndex], lastIndex = --nObjects, lastObject = objects[lastIndex];\n          indicesByUUID[lastCachedObject.uuid] = index;\n          objects[index] = lastCachedObject;\n          indicesByUUID[lastObject.uuid] = firstActiveIndex;\n          objects[firstActiveIndex] = lastObject;\n          objects.pop();\n          for (let j = 0, m = nBindings; j !== m; ++j) {\n            const bindingsForPath = bindings[j], lastCached = bindingsForPath[firstActiveIndex], last = bindingsForPath[lastIndex];\n            bindingsForPath[index] = lastCached;\n            bindingsForPath[firstActiveIndex] = last;\n            bindingsForPath.pop();\n          }\n        } else {\n          const lastIndex = --nObjects, lastObject = objects[lastIndex];\n          if (lastIndex > 0) {\n            indicesByUUID[lastObject.uuid] = index;\n          }\n          objects[index] = lastObject;\n          objects.pop();\n          for (let j = 0, m = nBindings; j !== m; ++j) {\n            const bindingsForPath = bindings[j];\n            bindingsForPath[index] = bindingsForPath[lastIndex];\n            bindingsForPath.pop();\n          }\n        }\n      }\n    }\n    this.nCachedObjects_ = nCachedObjects;\n  }\n  subscribe_(path, parsedPath) {\n    const indicesByPath = this._bindingsIndicesByPath;\n    let index = indicesByPath[path];\n    const bindings = this._bindings;\n    if (index !== void 0)\n      return bindings[index];\n    const paths = this._paths, parsedPaths = this._parsedPaths, objects = this._objects, nObjects = objects.length, nCachedObjects = this.nCachedObjects_, bindingsForPath = new Array(nObjects);\n    index = bindings.length;\n    indicesByPath[path] = index;\n    paths.push(path);\n    parsedPaths.push(parsedPath);\n    bindings.push(bindingsForPath);\n    for (let i = nCachedObjects, n = objects.length; i !== n; ++i) {\n      const object = objects[i];\n      bindingsForPath[i] = new PropertyBinding(object, path, parsedPath);\n    }\n    return bindingsForPath;\n  }\n  unsubscribe_(path) {\n    const indicesByPath = this._bindingsIndicesByPath, index = indicesByPath[path];\n    if (index !== void 0) {\n      const paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, lastBindingsIndex = bindings.length - 1, lastBindings = bindings[lastBindingsIndex], lastBindingsPath = path[lastBindingsIndex];\n      indicesByPath[lastBindingsPath] = index;\n      bindings[index] = lastBindings;\n      bindings.pop();\n      parsedPaths[index] = parsedPaths[lastBindingsIndex];\n      parsedPaths.pop();\n      paths[index] = paths[lastBindingsIndex];\n      paths.pop();\n    }\n  }\n}\nclass AnimationAction {\n  constructor(mixer, clip, localRoot = null, blendMode = clip.blendMode) {\n    this._mixer = mixer;\n    this._clip = clip;\n    this._localRoot = localRoot;\n    this.blendMode = blendMode;\n    const tracks = clip.tracks, nTracks = tracks.length, interpolants = new Array(nTracks);\n    const interpolantSettings = {\n      endingStart: ZeroCurvatureEnding,\n      endingEnd: ZeroCurvatureEnding\n    };\n    for (let i = 0; i !== nTracks; ++i) {\n      const interpolant = tracks[i].createInterpolant(null);\n      interpolants[i] = interpolant;\n      interpolant.settings = interpolantSettings;\n    }\n    this._interpolantSettings = interpolantSettings;\n    this._interpolants = interpolants;\n    this._propertyBindings = new Array(nTracks);\n    this._cacheIndex = null;\n    this._byClipCacheIndex = null;\n    this._timeScaleInterpolant = null;\n    this._weightInterpolant = null;\n    this.loop = LoopRepeat;\n    this._loopCount = -1;\n    this._startTime = null;\n    this.time = 0;\n    this.timeScale = 1;\n    this._effectiveTimeScale = 1;\n    this.weight = 1;\n    this._effectiveWeight = 1;\n    this.repetitions = Infinity;\n    this.paused = false;\n    this.enabled = true;\n    this.clampWhenFinished = false;\n    this.zeroSlopeAtStart = true;\n    this.zeroSlopeAtEnd = true;\n  }\n  play() {\n    this._mixer._activateAction(this);\n    return this;\n  }\n  stop() {\n    this._mixer._deactivateAction(this);\n    return this.reset();\n  }\n  reset() {\n    this.paused = false;\n    this.enabled = true;\n    this.time = 0;\n    this._loopCount = -1;\n    this._startTime = null;\n    return this.stopFading().stopWarping();\n  }\n  isRunning() {\n    return this.enabled && !this.paused && this.timeScale !== 0 && this._startTime === null && this._mixer._isActiveAction(this);\n  }\n  isScheduled() {\n    return this._mixer._isActiveAction(this);\n  }\n  startAt(time) {\n    this._startTime = time;\n    return this;\n  }\n  setLoop(mode, repetitions) {\n    this.loop = mode;\n    this.repetitions = repetitions;\n    return this;\n  }\n  setEffectiveWeight(weight) {\n    this.weight = weight;\n    this._effectiveWeight = this.enabled ? weight : 0;\n    return this.stopFading();\n  }\n  getEffectiveWeight() {\n    return this._effectiveWeight;\n  }\n  fadeIn(duration) {\n    return this._scheduleFading(duration, 0, 1);\n  }\n  fadeOut(duration) {\n    return this._scheduleFading(duration, 1, 0);\n  }\n  crossFadeFrom(fadeOutAction, duration, warp) {\n    fadeOutAction.fadeOut(duration);\n    this.fadeIn(duration);\n    if (warp) {\n      const fadeInDuration = this._clip.duration, fadeOutDuration = fadeOutAction._clip.duration, startEndRatio = fadeOutDuration / fadeInDuration, endStartRatio = fadeInDuration / fadeOutDuration;\n      fadeOutAction.warp(1, startEndRatio, duration);\n      this.warp(endStartRatio, 1, duration);\n    }\n    return this;\n  }\n  crossFadeTo(fadeInAction, duration, warp) {\n    return fadeInAction.crossFadeFrom(this, duration, warp);\n  }\n  stopFading() {\n    const weightInterpolant = this._weightInterpolant;\n    if (weightInterpolant !== null) {\n      this._weightInterpolant = null;\n      this._mixer._takeBackControlInterpolant(weightInterpolant);\n    }\n    return this;\n  }\n  setEffectiveTimeScale(timeScale) {\n    this.timeScale = timeScale;\n    this._effectiveTimeScale = this.paused ? 0 : timeScale;\n    return this.stopWarping();\n  }\n  getEffectiveTimeScale() {\n    return this._effectiveTimeScale;\n  }\n  setDuration(duration) {\n    this.timeScale = this._clip.duration / duration;\n    return this.stopWarping();\n  }\n  syncWith(action) {\n    this.time = action.time;\n    this.timeScale = action.timeScale;\n    return this.stopWarping();\n  }\n  halt(duration) {\n    return this.warp(this._effectiveTimeScale, 0, duration);\n  }\n  warp(startTimeScale, endTimeScale, duration) {\n    const mixer = this._mixer, now2 = mixer.time, timeScale = this.timeScale;\n    let interpolant = this._timeScaleInterpolant;\n    if (interpolant === null) {\n      interpolant = mixer._lendControlInterpolant();\n      this._timeScaleInterpolant = interpolant;\n    }\n    const times = interpolant.parameterPositions, values = interpolant.sampleValues;\n    times[0] = now2;\n    times[1] = now2 + duration;\n    values[0] = startTimeScale / timeScale;\n    values[1] = endTimeScale / timeScale;\n    return this;\n  }\n  stopWarping() {\n    const timeScaleInterpolant = this._timeScaleInterpolant;\n    if (timeScaleInterpolant !== null) {\n      this._timeScaleInterpolant = null;\n      this._mixer._takeBackControlInterpolant(timeScaleInterpolant);\n    }\n    return this;\n  }\n  getMixer() {\n    return this._mixer;\n  }\n  getClip() {\n    return this._clip;\n  }\n  getRoot() {\n    return this._localRoot || this._mixer._root;\n  }\n  _update(time, deltaTime, timeDirection, accuIndex) {\n    if (!this.enabled) {\n      this._updateWeight(time);\n      return;\n    }\n    const startTime = this._startTime;\n    if (startTime !== null) {\n      const timeRunning = (time - startTime) * timeDirection;\n      if (timeRunning < 0 || timeDirection === 0) {\n        return;\n      }\n      this._startTime = null;\n      deltaTime = timeDirection * timeRunning;\n    }\n    deltaTime *= this._updateTimeScale(time);\n    const clipTime = this._updateTime(deltaTime);\n    const weight = this._updateWeight(time);\n    if (weight > 0) {\n      const interpolants = this._interpolants;\n      const propertyMixers = this._propertyBindings;\n      switch (this.blendMode) {\n        case AdditiveAnimationBlendMode:\n          for (let j = 0, m = interpolants.length; j !== m; ++j) {\n            interpolants[j].evaluate(clipTime);\n            propertyMixers[j].accumulateAdditive(weight);\n          }\n          break;\n        case NormalAnimationBlendMode:\n        default:\n          for (let j = 0, m = interpolants.length; j !== m; ++j) {\n            interpolants[j].evaluate(clipTime);\n            propertyMixers[j].accumulate(accuIndex, weight);\n          }\n      }\n    }\n  }\n  _updateWeight(time) {\n    let weight = 0;\n    if (this.enabled) {\n      weight = this.weight;\n      const interpolant = this._weightInterpolant;\n      if (interpolant !== null) {\n        const interpolantValue = interpolant.evaluate(time)[0];\n        weight *= interpolantValue;\n        if (time > interpolant.parameterPositions[1]) {\n          this.stopFading();\n          if (interpolantValue === 0) {\n            this.enabled = false;\n          }\n        }\n      }\n    }\n    this._effectiveWeight = weight;\n    return weight;\n  }\n  _updateTimeScale(time) {\n    let timeScale = 0;\n    if (!this.paused) {\n      timeScale = this.timeScale;\n      const interpolant = this._timeScaleInterpolant;\n      if (interpolant !== null) {\n        const interpolantValue = interpolant.evaluate(time)[0];\n        timeScale *= interpolantValue;\n        if (time > interpolant.parameterPositions[1]) {\n          this.stopWarping();\n          if (timeScale === 0) {\n            this.paused = true;\n          } else {\n            this.timeScale = timeScale;\n          }\n        }\n      }\n    }\n    this._effectiveTimeScale = timeScale;\n    return timeScale;\n  }\n  _updateTime(deltaTime) {\n    const duration = this._clip.duration;\n    const loop = this.loop;\n    let time = this.time + deltaTime;\n    let loopCount = this._loopCount;\n    const pingPong = loop === LoopPingPong;\n    if (deltaTime === 0) {\n      if (loopCount === -1)\n        return time;\n      return pingPong && (loopCount & 1) === 1 ? duration - time : time;\n    }\n    if (loop === LoopOnce) {\n      if (loopCount === -1) {\n        this._loopCount = 0;\n        this._setEndings(true, true, false);\n      }\n      handle_stop: {\n        if (time >= duration) {\n          time = duration;\n        } else if (time < 0) {\n          time = 0;\n        } else {\n          this.time = time;\n          break handle_stop;\n        }\n        if (this.clampWhenFinished)\n          this.paused = true;\n        else\n          this.enabled = false;\n        this.time = time;\n        this._mixer.dispatchEvent({\n          type: \"finished\",\n          action: this,\n          direction: deltaTime < 0 ? -1 : 1\n        });\n      }\n    } else {\n      if (loopCount === -1) {\n        if (deltaTime >= 0) {\n          loopCount = 0;\n          this._setEndings(true, this.repetitions === 0, pingPong);\n        } else {\n          this._setEndings(this.repetitions === 0, true, pingPong);\n        }\n      }\n      if (time >= duration || time < 0) {\n        const loopDelta = Math.floor(time / duration);\n        time -= duration * loopDelta;\n        loopCount += Math.abs(loopDelta);\n        const pending = this.repetitions - loopCount;\n        if (pending <= 0) {\n          if (this.clampWhenFinished)\n            this.paused = true;\n          else\n            this.enabled = false;\n          time = deltaTime > 0 ? duration : 0;\n          this.time = time;\n          this._mixer.dispatchEvent({\n            type: \"finished\",\n            action: this,\n            direction: deltaTime > 0 ? 1 : -1\n          });\n        } else {\n          if (pending === 1) {\n            const atStart = deltaTime < 0;\n            this._setEndings(atStart, !atStart, pingPong);\n          } else {\n            this._setEndings(false, false, pingPong);\n          }\n          this._loopCount = loopCount;\n          this.time = time;\n          this._mixer.dispatchEvent({\n            type: \"loop\",\n            action: this,\n            loopDelta\n          });\n        }\n      } else {\n        this.time = time;\n      }\n      if (pingPong && (loopCount & 1) === 1) {\n        return duration - time;\n      }\n    }\n    return time;\n  }\n  _setEndings(atStart, atEnd, pingPong) {\n    const settings = this._interpolantSettings;\n    if (pingPong) {\n      settings.endingStart = ZeroSlopeEnding;\n      settings.endingEnd = ZeroSlopeEnding;\n    } else {\n      if (atStart) {\n        settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n      } else {\n        settings.endingStart = WrapAroundEnding;\n      }\n      if (atEnd) {\n        settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n      } else {\n        settings.endingEnd = WrapAroundEnding;\n      }\n    }\n  }\n  _scheduleFading(duration, weightNow, weightThen) {\n    const mixer = this._mixer, now2 = mixer.time;\n    let interpolant = this._weightInterpolant;\n    if (interpolant === null) {\n      interpolant = mixer._lendControlInterpolant();\n      this._weightInterpolant = interpolant;\n    }\n    const times = interpolant.parameterPositions, values = interpolant.sampleValues;\n    times[0] = now2;\n    values[0] = weightNow;\n    times[1] = now2 + duration;\n    values[1] = weightThen;\n    return this;\n  }\n}\nconst _controlInterpolantsResultBuffer = new Float32Array(1);\nclass AnimationMixer extends EventDispatcher {\n  constructor(root) {\n    super();\n    this._root = root;\n    this._initMemoryManager();\n    this._accuIndex = 0;\n    this.time = 0;\n    this.timeScale = 1;\n  }\n  _bindAction(action, prototypeAction) {\n    const root = action._localRoot || this._root, tracks = action._clip.tracks, nTracks = tracks.length, bindings = action._propertyBindings, interpolants = action._interpolants, rootUuid = root.uuid, bindingsByRoot = this._bindingsByRootAndName;\n    let bindingsByName = bindingsByRoot[rootUuid];\n    if (bindingsByName === void 0) {\n      bindingsByName = {};\n      bindingsByRoot[rootUuid] = bindingsByName;\n    }\n    for (let i = 0; i !== nTracks; ++i) {\n      const track = tracks[i], trackName = track.name;\n      let binding = bindingsByName[trackName];\n      if (binding !== void 0) {\n        ++binding.referenceCount;\n        bindings[i] = binding;\n      } else {\n        binding = bindings[i];\n        if (binding !== void 0) {\n          if (binding._cacheIndex === null) {\n            ++binding.referenceCount;\n            this._addInactiveBinding(binding, rootUuid, trackName);\n          }\n          continue;\n        }\n        const path = prototypeAction && prototypeAction._propertyBindings[i].binding.parsedPath;\n        binding = new PropertyMixer(\n          PropertyBinding.create(root, trackName, path),\n          track.ValueTypeName,\n          track.getValueSize()\n        );\n        ++binding.referenceCount;\n        this._addInactiveBinding(binding, rootUuid, trackName);\n        bindings[i] = binding;\n      }\n      interpolants[i].resultBuffer = binding.buffer;\n    }\n  }\n  _activateAction(action) {\n    if (!this._isActiveAction(action)) {\n      if (action._cacheIndex === null) {\n        const rootUuid = (action._localRoot || this._root).uuid, clipUuid = action._clip.uuid, actionsForClip = this._actionsByClip[clipUuid];\n        this._bindAction(\n          action,\n          actionsForClip && actionsForClip.knownActions[0]\n        );\n        this._addInactiveAction(action, clipUuid, rootUuid);\n      }\n      const bindings = action._propertyBindings;\n      for (let i = 0, n = bindings.length; i !== n; ++i) {\n        const binding = bindings[i];\n        if (binding.useCount++ === 0) {\n          this._lendBinding(binding);\n          binding.saveOriginalState();\n        }\n      }\n      this._lendAction(action);\n    }\n  }\n  _deactivateAction(action) {\n    if (this._isActiveAction(action)) {\n      const bindings = action._propertyBindings;\n      for (let i = 0, n = bindings.length; i !== n; ++i) {\n        const binding = bindings[i];\n        if (--binding.useCount === 0) {\n          binding.restoreOriginalState();\n          this._takeBackBinding(binding);\n        }\n      }\n      this._takeBackAction(action);\n    }\n  }\n  _initMemoryManager() {\n    this._actions = [];\n    this._nActiveActions = 0;\n    this._actionsByClip = {};\n    this._bindings = [];\n    this._nActiveBindings = 0;\n    this._bindingsByRootAndName = {};\n    this._controlInterpolants = [];\n    this._nActiveControlInterpolants = 0;\n    const scope = this;\n    this.stats = {\n      actions: {\n        get total() {\n          return scope._actions.length;\n        },\n        get inUse() {\n          return scope._nActiveActions;\n        }\n      },\n      bindings: {\n        get total() {\n          return scope._bindings.length;\n        },\n        get inUse() {\n          return scope._nActiveBindings;\n        }\n      },\n      controlInterpolants: {\n        get total() {\n          return scope._controlInterpolants.length;\n        },\n        get inUse() {\n          return scope._nActiveControlInterpolants;\n        }\n      }\n    };\n  }\n  _isActiveAction(action) {\n    const index = action._cacheIndex;\n    return index !== null && index < this._nActiveActions;\n  }\n  _addInactiveAction(action, clipUuid, rootUuid) {\n    const actions = this._actions, actionsByClip = this._actionsByClip;\n    let actionsForClip = actionsByClip[clipUuid];\n    if (actionsForClip === void 0) {\n      actionsForClip = {\n        knownActions: [action],\n        actionByRoot: {}\n      };\n      action._byClipCacheIndex = 0;\n      actionsByClip[clipUuid] = actionsForClip;\n    } else {\n      const knownActions = actionsForClip.knownActions;\n      action._byClipCacheIndex = knownActions.length;\n      knownActions.push(action);\n    }\n    action._cacheIndex = actions.length;\n    actions.push(action);\n    actionsForClip.actionByRoot[rootUuid] = action;\n  }\n  _removeInactiveAction(action) {\n    const actions = this._actions, lastInactiveAction = actions[actions.length - 1], cacheIndex = action._cacheIndex;\n    lastInactiveAction._cacheIndex = cacheIndex;\n    actions[cacheIndex] = lastInactiveAction;\n    actions.pop();\n    action._cacheIndex = null;\n    const clipUuid = action._clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid], knownActionsForClip = actionsForClip.knownActions, lastKnownAction = knownActionsForClip[knownActionsForClip.length - 1], byClipCacheIndex = action._byClipCacheIndex;\n    lastKnownAction._byClipCacheIndex = byClipCacheIndex;\n    knownActionsForClip[byClipCacheIndex] = lastKnownAction;\n    knownActionsForClip.pop();\n    action._byClipCacheIndex = null;\n    const actionByRoot = actionsForClip.actionByRoot, rootUuid = (action._localRoot || this._root).uuid;\n    delete actionByRoot[rootUuid];\n    if (knownActionsForClip.length === 0) {\n      delete actionsByClip[clipUuid];\n    }\n    this._removeInactiveBindingsForAction(action);\n  }\n  _removeInactiveBindingsForAction(action) {\n    const bindings = action._propertyBindings;\n    for (let i = 0, n = bindings.length; i !== n; ++i) {\n      const binding = bindings[i];\n      if (--binding.referenceCount === 0) {\n        this._removeInactiveBinding(binding);\n      }\n    }\n  }\n  _lendAction(action) {\n    const actions = this._actions, prevIndex = action._cacheIndex, lastActiveIndex = this._nActiveActions++, firstInactiveAction = actions[lastActiveIndex];\n    action._cacheIndex = lastActiveIndex;\n    actions[lastActiveIndex] = action;\n    firstInactiveAction._cacheIndex = prevIndex;\n    actions[prevIndex] = firstInactiveAction;\n  }\n  _takeBackAction(action) {\n    const actions = this._actions, prevIndex = action._cacheIndex, firstInactiveIndex = --this._nActiveActions, lastActiveAction = actions[firstInactiveIndex];\n    action._cacheIndex = firstInactiveIndex;\n    actions[firstInactiveIndex] = action;\n    lastActiveAction._cacheIndex = prevIndex;\n    actions[prevIndex] = lastActiveAction;\n  }\n  _addInactiveBinding(binding, rootUuid, trackName) {\n    const bindingsByRoot = this._bindingsByRootAndName, bindings = this._bindings;\n    let bindingByName = bindingsByRoot[rootUuid];\n    if (bindingByName === void 0) {\n      bindingByName = {};\n      bindingsByRoot[rootUuid] = bindingByName;\n    }\n    bindingByName[trackName] = binding;\n    binding._cacheIndex = bindings.length;\n    bindings.push(binding);\n  }\n  _removeInactiveBinding(binding) {\n    const bindings = this._bindings, propBinding = binding.binding, rootUuid = propBinding.rootNode.uuid, trackName = propBinding.path, bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid], lastInactiveBinding = bindings[bindings.length - 1], cacheIndex = binding._cacheIndex;\n    lastInactiveBinding._cacheIndex = cacheIndex;\n    bindings[cacheIndex] = lastInactiveBinding;\n    bindings.pop();\n    delete bindingByName[trackName];\n    if (Object.keys(bindingByName).length === 0) {\n      delete bindingsByRoot[rootUuid];\n    }\n  }\n  _lendBinding(binding) {\n    const bindings = this._bindings, prevIndex = binding._cacheIndex, lastActiveIndex = this._nActiveBindings++, firstInactiveBinding = bindings[lastActiveIndex];\n    binding._cacheIndex = lastActiveIndex;\n    bindings[lastActiveIndex] = binding;\n    firstInactiveBinding._cacheIndex = prevIndex;\n    bindings[prevIndex] = firstInactiveBinding;\n  }\n  _takeBackBinding(binding) {\n    const bindings = this._bindings, prevIndex = binding._cacheIndex, firstInactiveIndex = --this._nActiveBindings, lastActiveBinding = bindings[firstInactiveIndex];\n    binding._cacheIndex = firstInactiveIndex;\n    bindings[firstInactiveIndex] = binding;\n    lastActiveBinding._cacheIndex = prevIndex;\n    bindings[prevIndex] = lastActiveBinding;\n  }\n  _lendControlInterpolant() {\n    const interpolants = this._controlInterpolants, lastActiveIndex = this._nActiveControlInterpolants++;\n    let interpolant = interpolants[lastActiveIndex];\n    if (interpolant === void 0) {\n      interpolant = new LinearInterpolant(\n        new Float32Array(2),\n        new Float32Array(2),\n        1,\n        _controlInterpolantsResultBuffer\n      );\n      interpolant.__cacheIndex = lastActiveIndex;\n      interpolants[lastActiveIndex] = interpolant;\n    }\n    return interpolant;\n  }\n  _takeBackControlInterpolant(interpolant) {\n    const interpolants = this._controlInterpolants, prevIndex = interpolant.__cacheIndex, firstInactiveIndex = --this._nActiveControlInterpolants, lastActiveInterpolant = interpolants[firstInactiveIndex];\n    interpolant.__cacheIndex = firstInactiveIndex;\n    interpolants[firstInactiveIndex] = interpolant;\n    lastActiveInterpolant.__cacheIndex = prevIndex;\n    interpolants[prevIndex] = lastActiveInterpolant;\n  }\n  clipAction(clip, optionalRoot, blendMode) {\n    const root = optionalRoot || this._root, rootUuid = root.uuid;\n    let clipObject = typeof clip === \"string\" ? AnimationClip.findByName(root, clip) : clip;\n    const clipUuid = clipObject !== null ? clipObject.uuid : clip;\n    const actionsForClip = this._actionsByClip[clipUuid];\n    let prototypeAction = null;\n    if (blendMode === void 0) {\n      if (clipObject !== null) {\n        blendMode = clipObject.blendMode;\n      } else {\n        blendMode = NormalAnimationBlendMode;\n      }\n    }\n    if (actionsForClip !== void 0) {\n      const existingAction = actionsForClip.actionByRoot[rootUuid];\n      if (existingAction !== void 0 && existingAction.blendMode === blendMode) {\n        return existingAction;\n      }\n      prototypeAction = actionsForClip.knownActions[0];\n      if (clipObject === null)\n        clipObject = prototypeAction._clip;\n    }\n    if (clipObject === null)\n      return null;\n    const newAction = new AnimationAction(this, clipObject, optionalRoot, blendMode);\n    this._bindAction(newAction, prototypeAction);\n    this._addInactiveAction(newAction, clipUuid, rootUuid);\n    return newAction;\n  }\n  existingAction(clip, optionalRoot) {\n    const root = optionalRoot || this._root, rootUuid = root.uuid, clipObject = typeof clip === \"string\" ? AnimationClip.findByName(root, clip) : clip, clipUuid = clipObject ? clipObject.uuid : clip, actionsForClip = this._actionsByClip[clipUuid];\n    if (actionsForClip !== void 0) {\n      return actionsForClip.actionByRoot[rootUuid] || null;\n    }\n    return null;\n  }\n  stopAllAction() {\n    const actions = this._actions, nActions = this._nActiveActions;\n    for (let i = nActions - 1; i >= 0; --i) {\n      actions[i].stop();\n    }\n    return this;\n  }\n  update(deltaTime) {\n    deltaTime *= this.timeScale;\n    const actions = this._actions, nActions = this._nActiveActions, time = this.time += deltaTime, timeDirection = Math.sign(deltaTime), accuIndex = this._accuIndex ^= 1;\n    for (let i = 0; i !== nActions; ++i) {\n      const action = actions[i];\n      action._update(time, deltaTime, timeDirection, accuIndex);\n    }\n    const bindings = this._bindings, nBindings = this._nActiveBindings;\n    for (let i = 0; i !== nBindings; ++i) {\n      bindings[i].apply(accuIndex);\n    }\n    return this;\n  }\n  setTime(timeInSeconds) {\n    this.time = 0;\n    for (let i = 0; i < this._actions.length; i++) {\n      this._actions[i].time = 0;\n    }\n    return this.update(timeInSeconds);\n  }\n  getRoot() {\n    return this._root;\n  }\n  uncacheClip(clip) {\n    const actions = this._actions, clipUuid = clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid];\n    if (actionsForClip !== void 0) {\n      const actionsToRemove = actionsForClip.knownActions;\n      for (let i = 0, n = actionsToRemove.length; i !== n; ++i) {\n        const action = actionsToRemove[i];\n        this._deactivateAction(action);\n        const cacheIndex = action._cacheIndex, lastInactiveAction = actions[actions.length - 1];\n        action._cacheIndex = null;\n        action._byClipCacheIndex = null;\n        lastInactiveAction._cacheIndex = cacheIndex;\n        actions[cacheIndex] = lastInactiveAction;\n        actions.pop();\n        this._removeInactiveBindingsForAction(action);\n      }\n      delete actionsByClip[clipUuid];\n    }\n  }\n  uncacheRoot(root) {\n    const rootUuid = root.uuid, actionsByClip = this._actionsByClip;\n    for (const clipUuid in actionsByClip) {\n      const actionByRoot = actionsByClip[clipUuid].actionByRoot, action = actionByRoot[rootUuid];\n      if (action !== void 0) {\n        this._deactivateAction(action);\n        this._removeInactiveAction(action);\n      }\n    }\n    const bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid];\n    if (bindingByName !== void 0) {\n      for (const trackName in bindingByName) {\n        const binding = bindingByName[trackName];\n        binding.restoreOriginalState();\n        this._removeInactiveBinding(binding);\n      }\n    }\n  }\n  uncacheAction(clip, optionalRoot) {\n    const action = this.existingAction(clip, optionalRoot);\n    if (action !== null) {\n      this._deactivateAction(action);\n      this._removeInactiveAction(action);\n    }\n  }\n}\nclass Uniform {\n  constructor(value) {\n    if (typeof value === \"string\") {\n      console.warn(\"THREE.Uniform: Type parameter is no longer needed.\");\n      value = arguments[1];\n    }\n    this.value = value;\n  }\n  clone() {\n    return new Uniform(this.value.clone === void 0 ? this.value : this.value.clone());\n  }\n}\nlet id = 0;\nclass UniformsGroup extends EventDispatcher {\n  constructor() {\n    super();\n    this.isUniformsGroup = true;\n    Object.defineProperty(this, \"id\", { value: id++ });\n    this.name = \"\";\n    this.usage = StaticDrawUsage;\n    this.uniforms = [];\n  }\n  add(uniform) {\n    this.uniforms.push(uniform);\n    return this;\n  }\n  remove(uniform) {\n    const index = this.uniforms.indexOf(uniform);\n    if (index !== -1)\n      this.uniforms.splice(index, 1);\n    return this;\n  }\n  setName(name) {\n    this.name = name;\n    return this;\n  }\n  setUsage(value) {\n    this.usage = value;\n    return this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n    return this;\n  }\n  copy(source) {\n    this.name = source.name;\n    this.usage = source.usage;\n    const uniformsSource = source.uniforms;\n    this.uniforms.length = 0;\n    for (let i = 0, l = uniformsSource.length; i < l; i++) {\n      this.uniforms.push(uniformsSource[i].clone());\n    }\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n  constructor(array, stride, meshPerAttribute = 1) {\n    super(array, stride);\n    this.isInstancedInterleavedBuffer = true;\n    this.meshPerAttribute = meshPerAttribute;\n  }\n  copy(source) {\n    super.copy(source);\n    this.meshPerAttribute = source.meshPerAttribute;\n    return this;\n  }\n  clone(data) {\n    const ib = super.clone(data);\n    ib.meshPerAttribute = this.meshPerAttribute;\n    return ib;\n  }\n  toJSON(data) {\n    const json = super.toJSON(data);\n    json.isInstancedInterleavedBuffer = true;\n    json.meshPerAttribute = this.meshPerAttribute;\n    return json;\n  }\n}\nclass GLBufferAttribute {\n  constructor(buffer, type, itemSize, elementSize, count) {\n    this.isGLBufferAttribute = true;\n    this.buffer = buffer;\n    this.type = type;\n    this.itemSize = itemSize;\n    this.elementSize = elementSize;\n    this.count = count;\n    this.version = 0;\n  }\n  set needsUpdate(value) {\n    if (value === true)\n      this.version++;\n  }\n  setBuffer(buffer) {\n    this.buffer = buffer;\n    return this;\n  }\n  setType(type, elementSize) {\n    this.type = type;\n    this.elementSize = elementSize;\n    return this;\n  }\n  setItemSize(itemSize) {\n    this.itemSize = itemSize;\n    return this;\n  }\n  setCount(count) {\n    this.count = count;\n    return this;\n  }\n}\nclass Raycaster$1 {\n  constructor(origin, direction, near = 0, far = Infinity) {\n    this.ray = new Ray(origin, direction);\n    this.near = near;\n    this.far = far;\n    this.camera = null;\n    this.layers = new Layers();\n    this.params = {\n      Mesh: {},\n      Line: { threshold: 1 },\n      LOD: {},\n      Points: { threshold: 1 },\n      Sprite: {}\n    };\n  }\n  set(origin, direction) {\n    this.ray.set(origin, direction);\n  }\n  setFromCamera(coords, camera) {\n    if (camera.isPerspectiveCamera) {\n      this.ray.origin.setFromMatrixPosition(camera.matrixWorld);\n      this.ray.direction.set(coords.x, coords.y, 0.5).unproject(camera).sub(this.ray.origin).normalize();\n      this.camera = camera;\n    } else if (camera.isOrthographicCamera) {\n      this.ray.origin.set(coords.x, coords.y, (camera.near + camera.far) / (camera.near - camera.far)).unproject(camera);\n      this.ray.direction.set(0, 0, -1).transformDirection(camera.matrixWorld);\n      this.camera = camera;\n    } else {\n      console.error(\"THREE.Raycaster: Unsupported camera type: \" + camera.type);\n    }\n  }\n  intersectObject(object, recursive = true, intersects2 = []) {\n    intersectObject(object, this, intersects2, recursive);\n    intersects2.sort(ascSort);\n    return intersects2;\n  }\n  intersectObjects(objects, recursive = true, intersects2 = []) {\n    for (let i = 0, l = objects.length; i < l; i++) {\n      intersectObject(objects[i], this, intersects2, recursive);\n    }\n    intersects2.sort(ascSort);\n    return intersects2;\n  }\n}\nfunction ascSort(a, b) {\n  return a.distance - b.distance;\n}\nfunction intersectObject(object, raycaster, intersects2, recursive) {\n  if (object.layers.test(raycaster.layers)) {\n    object.raycast(raycaster, intersects2);\n  }\n  if (recursive === true) {\n    const children = object.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      intersectObject(children[i], raycaster, intersects2, true);\n    }\n  }\n}\nclass Spherical {\n  constructor(radius = 1, phi = 0, theta = 0) {\n    this.radius = radius;\n    this.phi = phi;\n    this.theta = theta;\n    return this;\n  }\n  set(radius, phi, theta) {\n    this.radius = radius;\n    this.phi = phi;\n    this.theta = theta;\n    return this;\n  }\n  copy(other) {\n    this.radius = other.radius;\n    this.phi = other.phi;\n    this.theta = other.theta;\n    return this;\n  }\n  makeSafe() {\n    const EPS = 1e-6;\n    this.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi));\n    return this;\n  }\n  setFromVector3(v) {\n    return this.setFromCartesianCoords(v.x, v.y, v.z);\n  }\n  setFromCartesianCoords(x, y, z) {\n    this.radius = Math.sqrt(x * x + y * y + z * z);\n    if (this.radius === 0) {\n      this.theta = 0;\n      this.phi = 0;\n    } else {\n      this.theta = Math.atan2(x, z);\n      this.phi = Math.acos(clamp$1(y / this.radius, -1, 1));\n    }\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nclass Cylindrical {\n  constructor(radius = 1, theta = 0, y = 0) {\n    this.radius = radius;\n    this.theta = theta;\n    this.y = y;\n    return this;\n  }\n  set(radius, theta, y) {\n    this.radius = radius;\n    this.theta = theta;\n    this.y = y;\n    return this;\n  }\n  copy(other) {\n    this.radius = other.radius;\n    this.theta = other.theta;\n    this.y = other.y;\n    return this;\n  }\n  setFromVector3(v) {\n    return this.setFromCartesianCoords(v.x, v.y, v.z);\n  }\n  setFromCartesianCoords(x, y, z) {\n    this.radius = Math.sqrt(x * x + z * z);\n    this.theta = Math.atan2(x, z);\n    this.y = y;\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nconst _vector$4 = /* @__PURE__ */ new Vector2();\nclass Box2 {\n  constructor(min = new Vector2(Infinity, Infinity), max = new Vector2(-Infinity, -Infinity)) {\n    this.isBox2 = true;\n    this.min = min;\n    this.max = max;\n  }\n  set(min, max) {\n    this.min.copy(min);\n    this.max.copy(max);\n    return this;\n  }\n  setFromPoints(points) {\n    this.makeEmpty();\n    for (let i = 0, il = points.length; i < il; i++) {\n      this.expandByPoint(points[i]);\n    }\n    return this;\n  }\n  setFromCenterAndSize(center, size) {\n    const halfSize = _vector$4.copy(size).multiplyScalar(0.5);\n    this.min.copy(center).sub(halfSize);\n    this.max.copy(center).add(halfSize);\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(box) {\n    this.min.copy(box.min);\n    this.max.copy(box.max);\n    return this;\n  }\n  makeEmpty() {\n    this.min.x = this.min.y = Infinity;\n    this.max.x = this.max.y = -Infinity;\n    return this;\n  }\n  isEmpty() {\n    return this.max.x < this.min.x || this.max.y < this.min.y;\n  }\n  getCenter(target) {\n    return this.isEmpty() ? target.set(0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n  }\n  getSize(target) {\n    return this.isEmpty() ? target.set(0, 0) : target.subVectors(this.max, this.min);\n  }\n  expandByPoint(point) {\n    this.min.min(point);\n    this.max.max(point);\n    return this;\n  }\n  expandByVector(vector) {\n    this.min.sub(vector);\n    this.max.add(vector);\n    return this;\n  }\n  expandByScalar(scalar) {\n    this.min.addScalar(-scalar);\n    this.max.addScalar(scalar);\n    return this;\n  }\n  containsPoint(point) {\n    return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y ? false : true;\n  }\n  containsBox(box) {\n    return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y;\n  }\n  getParameter(point, target) {\n    return target.set(\n      (point.x - this.min.x) / (this.max.x - this.min.x),\n      (point.y - this.min.y) / (this.max.y - this.min.y)\n    );\n  }\n  intersectsBox(box) {\n    return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n  }\n  clampPoint(point, target) {\n    return target.copy(point).clamp(this.min, this.max);\n  }\n  distanceToPoint(point) {\n    const clampedPoint = _vector$4.copy(point).clamp(this.min, this.max);\n    return clampedPoint.sub(point).length();\n  }\n  intersect(box) {\n    this.min.max(box.min);\n    this.max.min(box.max);\n    return this;\n  }\n  union(box) {\n    this.min.min(box.min);\n    this.max.max(box.max);\n    return this;\n  }\n  translate(offset) {\n    this.min.add(offset);\n    this.max.add(offset);\n    return this;\n  }\n  equals(box) {\n    return box.min.equals(this.min) && box.max.equals(this.max);\n  }\n}\nconst _startP = /* @__PURE__ */ new Vector3();\nconst _startEnd = /* @__PURE__ */ new Vector3();\nclass Line3 {\n  constructor(start = new Vector3(), end = new Vector3()) {\n    this.start = start;\n    this.end = end;\n  }\n  set(start, end) {\n    this.start.copy(start);\n    this.end.copy(end);\n    return this;\n  }\n  copy(line) {\n    this.start.copy(line.start);\n    this.end.copy(line.end);\n    return this;\n  }\n  getCenter(target) {\n    return target.addVectors(this.start, this.end).multiplyScalar(0.5);\n  }\n  delta(target) {\n    return target.subVectors(this.end, this.start);\n  }\n  distanceSq() {\n    return this.start.distanceToSquared(this.end);\n  }\n  distance() {\n    return this.start.distanceTo(this.end);\n  }\n  at(t, target) {\n    return this.delta(target).multiplyScalar(t).add(this.start);\n  }\n  closestPointToPointParameter(point, clampToLine) {\n    _startP.subVectors(point, this.start);\n    _startEnd.subVectors(this.end, this.start);\n    const startEnd2 = _startEnd.dot(_startEnd);\n    const startEnd_startP = _startEnd.dot(_startP);\n    let t = startEnd_startP / startEnd2;\n    if (clampToLine) {\n      t = clamp$1(t, 0, 1);\n    }\n    return t;\n  }\n  closestPointToPoint(point, clampToLine, target) {\n    const t = this.closestPointToPointParameter(point, clampToLine);\n    return this.delta(target).multiplyScalar(t).add(this.start);\n  }\n  applyMatrix4(matrix) {\n    this.start.applyMatrix4(matrix);\n    this.end.applyMatrix4(matrix);\n    return this;\n  }\n  equals(line) {\n    return line.start.equals(this.start) && line.end.equals(this.end);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nconst _vector$3 = /* @__PURE__ */ new Vector3();\nclass SpotLightHelper extends Object3D$1 {\n  constructor(light, color) {\n    super();\n    this.light = light;\n    this.light.updateMatrixWorld();\n    this.matrix = light.matrixWorld;\n    this.matrixAutoUpdate = false;\n    this.color = color;\n    const geometry = new BufferGeometry();\n    const positions = [\n      0,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      1,\n      0,\n      0,\n      0,\n      -1,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      1,\n      0,\n      0,\n      0,\n      0,\n      -1,\n      1\n    ];\n    for (let i = 0, j = 1, l = 32; i < l; i++, j++) {\n      const p1 = i / l * Math.PI * 2;\n      const p2 = j / l * Math.PI * 2;\n      positions.push(\n        Math.cos(p1),\n        Math.sin(p1),\n        1,\n        Math.cos(p2),\n        Math.sin(p2),\n        1\n      );\n    }\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n    const material = new LineBasicMaterial({ fog: false, toneMapped: false });\n    this.cone = new LineSegments(geometry, material);\n    this.add(this.cone);\n    this.update();\n  }\n  dispose() {\n    this.cone.geometry.dispose();\n    this.cone.material.dispose();\n  }\n  update() {\n    this.light.updateMatrixWorld();\n    const coneLength = this.light.distance ? this.light.distance : 1e3;\n    const coneWidth = coneLength * Math.tan(this.light.angle);\n    this.cone.scale.set(coneWidth, coneWidth, coneLength);\n    _vector$3.setFromMatrixPosition(this.light.target.matrixWorld);\n    this.cone.lookAt(_vector$3);\n    if (this.color !== void 0) {\n      this.cone.material.color.set(this.color);\n    } else {\n      this.cone.material.color.copy(this.light.color);\n    }\n  }\n}\nconst _vector$2 = /* @__PURE__ */ new Vector3();\nconst _boneMatrix = /* @__PURE__ */ new Matrix4();\nconst _matrixWorldInv = /* @__PURE__ */ new Matrix4();\nclass SkeletonHelper extends LineSegments {\n  constructor(object) {\n    const bones = getBoneList(object);\n    const geometry = new BufferGeometry();\n    const vertices = [];\n    const colors = [];\n    const color1 = new Color(0, 0, 1);\n    const color2 = new Color(0, 1, 0);\n    for (let i = 0; i < bones.length; i++) {\n      const bone = bones[i];\n      if (bone.parent && bone.parent.isBone) {\n        vertices.push(0, 0, 0);\n        vertices.push(0, 0, 0);\n        colors.push(color1.r, color1.g, color1.b);\n        colors.push(color2.r, color2.g, color2.b);\n      }\n    }\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n    const material = new LineBasicMaterial({ vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true });\n    super(geometry, material);\n    this.isSkeletonHelper = true;\n    this.type = \"SkeletonHelper\";\n    this.root = object;\n    this.bones = bones;\n    this.matrix = object.matrixWorld;\n    this.matrixAutoUpdate = false;\n  }\n  updateMatrixWorld(force) {\n    const bones = this.bones;\n    const geometry = this.geometry;\n    const position = geometry.getAttribute(\"position\");\n    _matrixWorldInv.copy(this.root.matrixWorld).invert();\n    for (let i = 0, j = 0; i < bones.length; i++) {\n      const bone = bones[i];\n      if (bone.parent && bone.parent.isBone) {\n        _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.matrixWorld);\n        _vector$2.setFromMatrixPosition(_boneMatrix);\n        position.setXYZ(j, _vector$2.x, _vector$2.y, _vector$2.z);\n        _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.parent.matrixWorld);\n        _vector$2.setFromMatrixPosition(_boneMatrix);\n        position.setXYZ(j + 1, _vector$2.x, _vector$2.y, _vector$2.z);\n        j += 2;\n      }\n    }\n    geometry.getAttribute(\"position\").needsUpdate = true;\n    super.updateMatrixWorld(force);\n  }\n}\nfunction getBoneList(object) {\n  const boneList = [];\n  if (object.isBone === true) {\n    boneList.push(object);\n  }\n  for (let i = 0; i < object.children.length; i++) {\n    boneList.push.apply(boneList, getBoneList(object.children[i]));\n  }\n  return boneList;\n}\nclass PointLightHelper extends Mesh {\n  constructor(light, sphereSize, color) {\n    const geometry = new SphereGeometry(sphereSize, 4, 2);\n    const material = new MeshBasicMaterial({ wireframe: true, fog: false, toneMapped: false });\n    super(geometry, material);\n    this.light = light;\n    this.light.updateMatrixWorld();\n    this.color = color;\n    this.type = \"PointLightHelper\";\n    this.matrix = this.light.matrixWorld;\n    this.matrixAutoUpdate = false;\n    this.update();\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n  update() {\n    if (this.color !== void 0) {\n      this.material.color.set(this.color);\n    } else {\n      this.material.color.copy(this.light.color);\n    }\n  }\n}\nconst _vector$1 = /* @__PURE__ */ new Vector3();\nconst _color1 = /* @__PURE__ */ new Color();\nconst _color2 = /* @__PURE__ */ new Color();\nclass HemisphereLightHelper extends Object3D$1 {\n  constructor(light, size, color) {\n    super();\n    this.light = light;\n    this.light.updateMatrixWorld();\n    this.matrix = light.matrixWorld;\n    this.matrixAutoUpdate = false;\n    this.color = color;\n    const geometry = new OctahedronGeometry(size);\n    geometry.rotateY(Math.PI * 0.5);\n    this.material = new MeshBasicMaterial({ wireframe: true, fog: false, toneMapped: false });\n    if (this.color === void 0)\n      this.material.vertexColors = true;\n    const position = geometry.getAttribute(\"position\");\n    const colors = new Float32Array(position.count * 3);\n    geometry.setAttribute(\"color\", new BufferAttribute(colors, 3));\n    this.add(new Mesh(geometry, this.material));\n    this.update();\n  }\n  dispose() {\n    this.children[0].geometry.dispose();\n    this.children[0].material.dispose();\n  }\n  update() {\n    const mesh = this.children[0];\n    if (this.color !== void 0) {\n      this.material.color.set(this.color);\n    } else {\n      const colors = mesh.geometry.getAttribute(\"color\");\n      _color1.copy(this.light.color);\n      _color2.copy(this.light.groundColor);\n      for (let i = 0, l = colors.count; i < l; i++) {\n        const color = i < l / 2 ? _color1 : _color2;\n        colors.setXYZ(i, color.r, color.g, color.b);\n      }\n      colors.needsUpdate = true;\n    }\n    mesh.lookAt(_vector$1.setFromMatrixPosition(this.light.matrixWorld).negate());\n  }\n}\nclass GridHelper extends LineSegments {\n  constructor(size = 10, divisions = 10, color1 = 4473924, color2 = 8947848) {\n    color1 = new Color(color1);\n    color2 = new Color(color2);\n    const center = divisions / 2;\n    const step = size / divisions;\n    const halfSize = size / 2;\n    const vertices = [], colors = [];\n    for (let i = 0, j = 0, k = -halfSize; i <= divisions; i++, k += step) {\n      vertices.push(-halfSize, 0, k, halfSize, 0, k);\n      vertices.push(k, 0, -halfSize, k, 0, halfSize);\n      const color = i === center ? color1 : color2;\n      color.toArray(colors, j);\n      j += 3;\n      color.toArray(colors, j);\n      j += 3;\n      color.toArray(colors, j);\n      j += 3;\n      color.toArray(colors, j);\n      j += 3;\n    }\n    const geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n    const material = new LineBasicMaterial({ vertexColors: true, toneMapped: false });\n    super(geometry, material);\n    this.type = \"GridHelper\";\n  }\n}\nclass PolarGridHelper extends LineSegments {\n  constructor(radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 4473924, color2 = 8947848) {\n    color1 = new Color(color1);\n    color2 = new Color(color2);\n    const vertices = [];\n    const colors = [];\n    for (let i = 0; i <= radials; i++) {\n      const v = i / radials * (Math.PI * 2);\n      const x = Math.sin(v) * radius;\n      const z = Math.cos(v) * radius;\n      vertices.push(0, 0, 0);\n      vertices.push(x, 0, z);\n      const color = i & 1 ? color1 : color2;\n      colors.push(color.r, color.g, color.b);\n      colors.push(color.r, color.g, color.b);\n    }\n    for (let i = 0; i <= circles; i++) {\n      const color = i & 1 ? color1 : color2;\n      const r = radius - radius / circles * i;\n      for (let j = 0; j < divisions; j++) {\n        let v = j / divisions * (Math.PI * 2);\n        let x = Math.sin(v) * r;\n        let z = Math.cos(v) * r;\n        vertices.push(x, 0, z);\n        colors.push(color.r, color.g, color.b);\n        v = (j + 1) / divisions * (Math.PI * 2);\n        x = Math.sin(v) * r;\n        z = Math.cos(v) * r;\n        vertices.push(x, 0, z);\n        colors.push(color.r, color.g, color.b);\n      }\n    }\n    const geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n    const material = new LineBasicMaterial({ vertexColors: true, toneMapped: false });\n    super(geometry, material);\n    this.type = \"PolarGridHelper\";\n  }\n}\nconst _v1 = /* @__PURE__ */ new Vector3();\nconst _v2 = /* @__PURE__ */ new Vector3();\nconst _v3 = /* @__PURE__ */ new Vector3();\nclass DirectionalLightHelper extends Object3D$1 {\n  constructor(light, size, color) {\n    super();\n    this.light = light;\n    this.light.updateMatrixWorld();\n    this.matrix = light.matrixWorld;\n    this.matrixAutoUpdate = false;\n    this.color = color;\n    if (size === void 0)\n      size = 1;\n    let geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new Float32BufferAttribute([\n      -size,\n      size,\n      0,\n      size,\n      size,\n      0,\n      size,\n      -size,\n      0,\n      -size,\n      -size,\n      0,\n      -size,\n      size,\n      0\n    ], 3));\n    const material = new LineBasicMaterial({ fog: false, toneMapped: false });\n    this.lightPlane = new Line(geometry, material);\n    this.add(this.lightPlane);\n    geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new Float32BufferAttribute([0, 0, 0, 0, 0, 1], 3));\n    this.targetLine = new Line(geometry, material);\n    this.add(this.targetLine);\n    this.update();\n  }\n  dispose() {\n    this.lightPlane.geometry.dispose();\n    this.lightPlane.material.dispose();\n    this.targetLine.geometry.dispose();\n    this.targetLine.material.dispose();\n  }\n  update() {\n    _v1.setFromMatrixPosition(this.light.matrixWorld);\n    _v2.setFromMatrixPosition(this.light.target.matrixWorld);\n    _v3.subVectors(_v2, _v1);\n    this.lightPlane.lookAt(_v2);\n    if (this.color !== void 0) {\n      this.lightPlane.material.color.set(this.color);\n      this.targetLine.material.color.set(this.color);\n    } else {\n      this.lightPlane.material.color.copy(this.light.color);\n      this.targetLine.material.color.copy(this.light.color);\n    }\n    this.targetLine.lookAt(_v2);\n    this.targetLine.scale.z = _v3.length();\n  }\n}\nconst _vector$d = /* @__PURE__ */ new Vector3();\nconst _camera$1 = /* @__PURE__ */ new Camera$2();\nclass CameraHelper extends LineSegments {\n  constructor(camera) {\n    const geometry = new BufferGeometry();\n    const material = new LineBasicMaterial({ color: 16777215, vertexColors: true, toneMapped: false });\n    const vertices = [];\n    const colors = [];\n    const pointMap = {};\n    addLine(\"n1\", \"n2\");\n    addLine(\"n2\", \"n4\");\n    addLine(\"n4\", \"n3\");\n    addLine(\"n3\", \"n1\");\n    addLine(\"f1\", \"f2\");\n    addLine(\"f2\", \"f4\");\n    addLine(\"f4\", \"f3\");\n    addLine(\"f3\", \"f1\");\n    addLine(\"n1\", \"f1\");\n    addLine(\"n2\", \"f2\");\n    addLine(\"n3\", \"f3\");\n    addLine(\"n4\", \"f4\");\n    addLine(\"p\", \"n1\");\n    addLine(\"p\", \"n2\");\n    addLine(\"p\", \"n3\");\n    addLine(\"p\", \"n4\");\n    addLine(\"u1\", \"u2\");\n    addLine(\"u2\", \"u3\");\n    addLine(\"u3\", \"u1\");\n    addLine(\"c\", \"t\");\n    addLine(\"p\", \"c\");\n    addLine(\"cn1\", \"cn2\");\n    addLine(\"cn3\", \"cn4\");\n    addLine(\"cf1\", \"cf2\");\n    addLine(\"cf3\", \"cf4\");\n    function addLine(a, b) {\n      addPoint(a);\n      addPoint(b);\n    }\n    function addPoint(id2) {\n      vertices.push(0, 0, 0);\n      colors.push(0, 0, 0);\n      if (pointMap[id2] === void 0) {\n        pointMap[id2] = [];\n      }\n      pointMap[id2].push(vertices.length / 3 - 1);\n    }\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n    super(geometry, material);\n    this.type = \"CameraHelper\";\n    this.camera = camera;\n    if (this.camera.updateProjectionMatrix)\n      this.camera.updateProjectionMatrix();\n    this.matrix = camera.matrixWorld;\n    this.matrixAutoUpdate = false;\n    this.pointMap = pointMap;\n    this.update();\n    const colorFrustum = new Color(16755200);\n    const colorCone = new Color(16711680);\n    const colorUp = new Color(43775);\n    const colorTarget = new Color(16777215);\n    const colorCross = new Color(3355443);\n    this.setColors(colorFrustum, colorCone, colorUp, colorTarget, colorCross);\n  }\n  setColors(frustum, cone, up, target, cross) {\n    const geometry = this.geometry;\n    const colorAttribute = geometry.getAttribute(\"color\");\n    colorAttribute.setXYZ(0, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(1, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(2, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(3, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(4, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(5, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(6, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(7, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(8, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(9, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(10, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(11, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(12, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(13, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(14, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(15, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(16, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(17, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(18, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(19, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(20, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(21, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(22, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(23, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(24, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(25, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(26, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(27, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(28, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(29, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(30, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(31, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(32, up.r, up.g, up.b);\n    colorAttribute.setXYZ(33, up.r, up.g, up.b);\n    colorAttribute.setXYZ(34, up.r, up.g, up.b);\n    colorAttribute.setXYZ(35, up.r, up.g, up.b);\n    colorAttribute.setXYZ(36, up.r, up.g, up.b);\n    colorAttribute.setXYZ(37, up.r, up.g, up.b);\n    colorAttribute.setXYZ(38, target.r, target.g, target.b);\n    colorAttribute.setXYZ(39, target.r, target.g, target.b);\n    colorAttribute.setXYZ(40, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(41, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(42, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(43, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(44, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(45, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(46, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(47, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(48, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(49, cross.r, cross.g, cross.b);\n    colorAttribute.needsUpdate = true;\n  }\n  update() {\n    const geometry = this.geometry;\n    const pointMap = this.pointMap;\n    const w = 1, h = 1;\n    _camera$1.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse);\n    setPoint(\"c\", pointMap, geometry, _camera$1, 0, 0, -1);\n    setPoint(\"t\", pointMap, geometry, _camera$1, 0, 0, 1);\n    setPoint(\"n1\", pointMap, geometry, _camera$1, -w, -h, -1);\n    setPoint(\"n2\", pointMap, geometry, _camera$1, w, -h, -1);\n    setPoint(\"n3\", pointMap, geometry, _camera$1, -w, h, -1);\n    setPoint(\"n4\", pointMap, geometry, _camera$1, w, h, -1);\n    setPoint(\"f1\", pointMap, geometry, _camera$1, -w, -h, 1);\n    setPoint(\"f2\", pointMap, geometry, _camera$1, w, -h, 1);\n    setPoint(\"f3\", pointMap, geometry, _camera$1, -w, h, 1);\n    setPoint(\"f4\", pointMap, geometry, _camera$1, w, h, 1);\n    setPoint(\"u1\", pointMap, geometry, _camera$1, w * 0.7, h * 1.1, -1);\n    setPoint(\"u2\", pointMap, geometry, _camera$1, -w * 0.7, h * 1.1, -1);\n    setPoint(\"u3\", pointMap, geometry, _camera$1, 0, h * 2, -1);\n    setPoint(\"cf1\", pointMap, geometry, _camera$1, -w, 0, 1);\n    setPoint(\"cf2\", pointMap, geometry, _camera$1, w, 0, 1);\n    setPoint(\"cf3\", pointMap, geometry, _camera$1, 0, -h, 1);\n    setPoint(\"cf4\", pointMap, geometry, _camera$1, 0, h, 1);\n    setPoint(\"cn1\", pointMap, geometry, _camera$1, -w, 0, -1);\n    setPoint(\"cn2\", pointMap, geometry, _camera$1, w, 0, -1);\n    setPoint(\"cn3\", pointMap, geometry, _camera$1, 0, -h, -1);\n    setPoint(\"cn4\", pointMap, geometry, _camera$1, 0, h, -1);\n    geometry.getAttribute(\"position\").needsUpdate = true;\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n}\nfunction setPoint(point, pointMap, geometry, camera, x, y, z) {\n  _vector$d.set(x, y, z).unproject(camera);\n  const points = pointMap[point];\n  if (points !== void 0) {\n    const position = geometry.getAttribute(\"position\");\n    for (let i = 0, l = points.length; i < l; i++) {\n      position.setXYZ(points[i], _vector$d.x, _vector$d.y, _vector$d.z);\n    }\n  }\n}\nconst _box = /* @__PURE__ */ new Box3();\nclass BoxHelper extends LineSegments {\n  constructor(object, color = 16776960) {\n    const indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]);\n    const positions = new Float32Array(8 * 3);\n    const geometry = new BufferGeometry();\n    geometry.setIndex(new BufferAttribute(indices, 1));\n    geometry.setAttribute(\"position\", new BufferAttribute(positions, 3));\n    super(geometry, new LineBasicMaterial({ color, toneMapped: false }));\n    this.object = object;\n    this.type = \"BoxHelper\";\n    this.matrixAutoUpdate = false;\n    this.update();\n  }\n  update(object) {\n    if (object !== void 0) {\n      console.warn(\"THREE.BoxHelper: .update() has no longer arguments.\");\n    }\n    if (this.object !== void 0) {\n      _box.setFromObject(this.object);\n    }\n    if (_box.isEmpty())\n      return;\n    const min = _box.min;\n    const max = _box.max;\n    const position = this.geometry.attributes.position;\n    const array = position.array;\n    array[0] = max.x;\n    array[1] = max.y;\n    array[2] = max.z;\n    array[3] = min.x;\n    array[4] = max.y;\n    array[5] = max.z;\n    array[6] = min.x;\n    array[7] = min.y;\n    array[8] = max.z;\n    array[9] = max.x;\n    array[10] = min.y;\n    array[11] = max.z;\n    array[12] = max.x;\n    array[13] = max.y;\n    array[14] = min.z;\n    array[15] = min.x;\n    array[16] = max.y;\n    array[17] = min.z;\n    array[18] = min.x;\n    array[19] = min.y;\n    array[20] = min.z;\n    array[21] = max.x;\n    array[22] = min.y;\n    array[23] = min.z;\n    position.needsUpdate = true;\n    this.geometry.computeBoundingSphere();\n  }\n  setFromObject(object) {\n    this.object = object;\n    this.update();\n    return this;\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.object = source.object;\n    return this;\n  }\n}\nclass Box3Helper extends LineSegments {\n  constructor(box, color = 16776960) {\n    const indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]);\n    const positions = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1];\n    const geometry = new BufferGeometry();\n    geometry.setIndex(new BufferAttribute(indices, 1));\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n    super(geometry, new LineBasicMaterial({ color, toneMapped: false }));\n    this.box = box;\n    this.type = \"Box3Helper\";\n    this.geometry.computeBoundingSphere();\n  }\n  updateMatrixWorld(force) {\n    const box = this.box;\n    if (box.isEmpty())\n      return;\n    box.getCenter(this.position);\n    box.getSize(this.scale);\n    this.scale.multiplyScalar(0.5);\n    super.updateMatrixWorld(force);\n  }\n}\nclass PlaneHelper extends Line {\n  constructor(plane, size = 1, hex = 16776960) {\n    const color = hex;\n    const positions = [1, -1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0];\n    const geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n    geometry.computeBoundingSphere();\n    super(geometry, new LineBasicMaterial({ color, toneMapped: false }));\n    this.type = \"PlaneHelper\";\n    this.plane = plane;\n    this.size = size;\n    const positions2 = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0];\n    const geometry2 = new BufferGeometry();\n    geometry2.setAttribute(\"position\", new Float32BufferAttribute(positions2, 3));\n    geometry2.computeBoundingSphere();\n    this.add(new Mesh(geometry2, new MeshBasicMaterial({ color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false })));\n  }\n  updateMatrixWorld(force) {\n    this.position.set(0, 0, 0);\n    this.scale.set(0.5 * this.size, 0.5 * this.size, 1);\n    this.lookAt(this.plane.normal);\n    this.translateZ(-this.plane.constant);\n    super.updateMatrixWorld(force);\n  }\n}\nconst _axis = /* @__PURE__ */ new Vector3();\nlet _lineGeometry, _coneGeometry;\nclass ArrowHelper extends Object3D$1 {\n  constructor(dir = new Vector3(0, 0, 1), origin = new Vector3(0, 0, 0), length = 1, color = 16776960, headLength = length * 0.2, headWidth = headLength * 0.2) {\n    super();\n    this.type = \"ArrowHelper\";\n    if (_lineGeometry === void 0) {\n      _lineGeometry = new BufferGeometry();\n      _lineGeometry.setAttribute(\"position\", new Float32BufferAttribute([0, 0, 0, 0, 1, 0], 3));\n      _coneGeometry = new CylinderGeometry(0, 0.5, 1, 5, 1);\n      _coneGeometry.translate(0, -0.5, 0);\n    }\n    this.position.copy(origin);\n    this.line = new Line(_lineGeometry, new LineBasicMaterial({ color, toneMapped: false }));\n    this.line.matrixAutoUpdate = false;\n    this.add(this.line);\n    this.cone = new Mesh(_coneGeometry, new MeshBasicMaterial({ color, toneMapped: false }));\n    this.cone.matrixAutoUpdate = false;\n    this.add(this.cone);\n    this.setDirection(dir);\n    this.setLength(length, headLength, headWidth);\n  }\n  setDirection(dir) {\n    if (dir.y > 0.99999) {\n      this.quaternion.set(0, 0, 0, 1);\n    } else if (dir.y < -0.99999) {\n      this.quaternion.set(1, 0, 0, 0);\n    } else {\n      _axis.set(dir.z, 0, -dir.x).normalize();\n      const radians = Math.acos(dir.y);\n      this.quaternion.setFromAxisAngle(_axis, radians);\n    }\n  }\n  setLength(length, headLength = length * 0.2, headWidth = headLength * 0.2) {\n    this.line.scale.set(1, Math.max(1e-4, length - headLength), 1);\n    this.line.updateMatrix();\n    this.cone.scale.set(headWidth, headLength, headWidth);\n    this.cone.position.y = length;\n    this.cone.updateMatrix();\n  }\n  setColor(color) {\n    this.line.material.color.set(color);\n    this.cone.material.color.set(color);\n  }\n  copy(source) {\n    super.copy(source, false);\n    this.line.copy(source.line);\n    this.cone.copy(source.cone);\n    return this;\n  }\n}\nclass AxesHelper extends LineSegments {\n  constructor(size = 1) {\n    const vertices = [\n      0,\n      0,\n      0,\n      size,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      size,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      size\n    ];\n    const colors = [\n      1,\n      0,\n      0,\n      1,\n      0.6,\n      0,\n      0,\n      1,\n      0,\n      0.6,\n      1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0.6,\n      1\n    ];\n    const geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n    const material = new LineBasicMaterial({ vertexColors: true, toneMapped: false });\n    super(geometry, material);\n    this.type = \"AxesHelper\";\n  }\n  setColors(xAxisColor, yAxisColor, zAxisColor) {\n    const color = new Color();\n    const array = this.geometry.attributes.color.array;\n    color.set(xAxisColor);\n    color.toArray(array, 0);\n    color.toArray(array, 3);\n    color.set(yAxisColor);\n    color.toArray(array, 6);\n    color.toArray(array, 9);\n    color.set(zAxisColor);\n    color.toArray(array, 12);\n    color.toArray(array, 15);\n    this.geometry.attributes.color.needsUpdate = true;\n    return this;\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n}\nclass ShapePath {\n  constructor() {\n    this.type = \"ShapePath\";\n    this.color = new Color();\n    this.subPaths = [];\n    this.currentPath = null;\n  }\n  moveTo(x, y) {\n    this.currentPath = new Path();\n    this.subPaths.push(this.currentPath);\n    this.currentPath.moveTo(x, y);\n    return this;\n  }\n  lineTo(x, y) {\n    this.currentPath.lineTo(x, y);\n    return this;\n  }\n  quadraticCurveTo(aCPx, aCPy, aX, aY) {\n    this.currentPath.quadraticCurveTo(aCPx, aCPy, aX, aY);\n    return this;\n  }\n  bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n    this.currentPath.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n    return this;\n  }\n  splineThru(pts) {\n    this.currentPath.splineThru(pts);\n    return this;\n  }\n  toShapes(isCCW, noHoles) {\n    function toShapesNoHoles(inSubpaths) {\n      const shapes2 = [];\n      for (let i = 0, l = inSubpaths.length; i < l; i++) {\n        const tmpPath2 = inSubpaths[i];\n        const tmpShape2 = new Shape$1();\n        tmpShape2.curves = tmpPath2.curves;\n        shapes2.push(tmpShape2);\n      }\n      return shapes2;\n    }\n    function isPointInsidePolygon(inPt, inPolygon) {\n      const polyLen = inPolygon.length;\n      let inside = false;\n      for (let p = polyLen - 1, q = 0; q < polyLen; p = q++) {\n        let edgeLowPt = inPolygon[p];\n        let edgeHighPt = inPolygon[q];\n        let edgeDx = edgeHighPt.x - edgeLowPt.x;\n        let edgeDy = edgeHighPt.y - edgeLowPt.y;\n        if (Math.abs(edgeDy) > Number.EPSILON) {\n          if (edgeDy < 0) {\n            edgeLowPt = inPolygon[q];\n            edgeDx = -edgeDx;\n            edgeHighPt = inPolygon[p];\n            edgeDy = -edgeDy;\n          }\n          if (inPt.y < edgeLowPt.y || inPt.y > edgeHighPt.y)\n            continue;\n          if (inPt.y === edgeLowPt.y) {\n            if (inPt.x === edgeLowPt.x)\n              return true;\n          } else {\n            const perpEdge = edgeDy * (inPt.x - edgeLowPt.x) - edgeDx * (inPt.y - edgeLowPt.y);\n            if (perpEdge === 0)\n              return true;\n            if (perpEdge < 0)\n              continue;\n            inside = !inside;\n          }\n        } else {\n          if (inPt.y !== edgeLowPt.y)\n            continue;\n          if (edgeHighPt.x <= inPt.x && inPt.x <= edgeLowPt.x || edgeLowPt.x <= inPt.x && inPt.x <= edgeHighPt.x)\n            return true;\n        }\n      }\n      return inside;\n    }\n    const isClockWise = ShapeUtils.isClockWise;\n    const subPaths = this.subPaths;\n    if (subPaths.length === 0)\n      return [];\n    if (noHoles === true)\n      return toShapesNoHoles(subPaths);\n    let solid, tmpPath, tmpShape;\n    const shapes = [];\n    if (subPaths.length === 1) {\n      tmpPath = subPaths[0];\n      tmpShape = new Shape$1();\n      tmpShape.curves = tmpPath.curves;\n      shapes.push(tmpShape);\n      return shapes;\n    }\n    let holesFirst = !isClockWise(subPaths[0].getPoints());\n    holesFirst = isCCW ? !holesFirst : holesFirst;\n    const betterShapeHoles = [];\n    const newShapes = [];\n    let newShapeHoles = [];\n    let mainIdx = 0;\n    let tmpPoints;\n    newShapes[mainIdx] = void 0;\n    newShapeHoles[mainIdx] = [];\n    for (let i = 0, l = subPaths.length; i < l; i++) {\n      tmpPath = subPaths[i];\n      tmpPoints = tmpPath.getPoints();\n      solid = isClockWise(tmpPoints);\n      solid = isCCW ? !solid : solid;\n      if (solid) {\n        if (!holesFirst && newShapes[mainIdx])\n          mainIdx++;\n        newShapes[mainIdx] = { s: new Shape$1(), p: tmpPoints };\n        newShapes[mainIdx].s.curves = tmpPath.curves;\n        if (holesFirst)\n          mainIdx++;\n        newShapeHoles[mainIdx] = [];\n      } else {\n        newShapeHoles[mainIdx].push({ h: tmpPath, p: tmpPoints[0] });\n      }\n    }\n    if (!newShapes[0])\n      return toShapesNoHoles(subPaths);\n    if (newShapes.length > 1) {\n      let ambiguous = false;\n      let toChange = 0;\n      for (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n        betterShapeHoles[sIdx] = [];\n      }\n      for (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n        const sho = newShapeHoles[sIdx];\n        for (let hIdx = 0; hIdx < sho.length; hIdx++) {\n          const ho = sho[hIdx];\n          let hole_unassigned = true;\n          for (let s2Idx = 0; s2Idx < newShapes.length; s2Idx++) {\n            if (isPointInsidePolygon(ho.p, newShapes[s2Idx].p)) {\n              if (sIdx !== s2Idx)\n                toChange++;\n              if (hole_unassigned) {\n                hole_unassigned = false;\n                betterShapeHoles[s2Idx].push(ho);\n              } else {\n                ambiguous = true;\n              }\n            }\n          }\n          if (hole_unassigned) {\n            betterShapeHoles[sIdx].push(ho);\n          }\n        }\n      }\n      if (toChange > 0 && ambiguous === false) {\n        newShapeHoles = betterShapeHoles;\n      }\n    }\n    let tmpHoles;\n    for (let i = 0, il = newShapes.length; i < il; i++) {\n      tmpShape = newShapes[i].s;\n      shapes.push(tmpShape);\n      tmpHoles = newShapeHoles[i];\n      for (let j = 0, jl = tmpHoles.length; j < jl; j++) {\n        tmpShape.holes.push(tmpHoles[j].h);\n      }\n    }\n    return shapes;\n  }\n}\nconst _tables = /* @__PURE__ */ _generateTables();\nfunction _generateTables() {\n  const buffer = new ArrayBuffer(4);\n  const floatView = new Float32Array(buffer);\n  const uint32View = new Uint32Array(buffer);\n  const baseTable = new Uint32Array(512);\n  const shiftTable = new Uint32Array(512);\n  for (let i = 0; i < 256; ++i) {\n    const e = i - 127;\n    if (e < -27) {\n      baseTable[i] = 0;\n      baseTable[i | 256] = 32768;\n      shiftTable[i] = 24;\n      shiftTable[i | 256] = 24;\n    } else if (e < -14) {\n      baseTable[i] = 1024 >> -e - 14;\n      baseTable[i | 256] = 1024 >> -e - 14 | 32768;\n      shiftTable[i] = -e - 1;\n      shiftTable[i | 256] = -e - 1;\n    } else if (e <= 15) {\n      baseTable[i] = e + 15 << 10;\n      baseTable[i | 256] = e + 15 << 10 | 32768;\n      shiftTable[i] = 13;\n      shiftTable[i | 256] = 13;\n    } else if (e < 128) {\n      baseTable[i] = 31744;\n      baseTable[i | 256] = 64512;\n      shiftTable[i] = 24;\n      shiftTable[i | 256] = 24;\n    } else {\n      baseTable[i] = 31744;\n      baseTable[i | 256] = 64512;\n      shiftTable[i] = 13;\n      shiftTable[i | 256] = 13;\n    }\n  }\n  const mantissaTable = new Uint32Array(2048);\n  const exponentTable = new Uint32Array(64);\n  const offsetTable = new Uint32Array(64);\n  for (let i = 1; i < 1024; ++i) {\n    let m = i << 13;\n    let e = 0;\n    while ((m & 8388608) === 0) {\n      m <<= 1;\n      e -= 8388608;\n    }\n    m &= ~8388608;\n    e += 947912704;\n    mantissaTable[i] = m | e;\n  }\n  for (let i = 1024; i < 2048; ++i) {\n    mantissaTable[i] = 939524096 + (i - 1024 << 13);\n  }\n  for (let i = 1; i < 31; ++i) {\n    exponentTable[i] = i << 23;\n  }\n  exponentTable[31] = 1199570944;\n  exponentTable[32] = 2147483648;\n  for (let i = 33; i < 63; ++i) {\n    exponentTable[i] = 2147483648 + (i - 32 << 23);\n  }\n  exponentTable[63] = 3347054592;\n  for (let i = 1; i < 64; ++i) {\n    if (i !== 32) {\n      offsetTable[i] = 1024;\n    }\n  }\n  return {\n    floatView,\n    uint32View,\n    baseTable,\n    shiftTable,\n    mantissaTable,\n    exponentTable,\n    offsetTable\n  };\n}\nfunction toHalfFloat(val) {\n  if (Math.abs(val) > 65504)\n    console.warn(\"THREE.DataUtils.toHalfFloat(): Value out of range.\");\n  val = clamp$1(val, -65504, 65504);\n  _tables.floatView[0] = val;\n  const f = _tables.uint32View[0];\n  const e = f >> 23 & 511;\n  return _tables.baseTable[e] + ((f & 8388607) >> _tables.shiftTable[e]);\n}\nfunction fromHalfFloat(val) {\n  const m = val >> 10;\n  _tables.uint32View[0] = _tables.mantissaTable[_tables.offsetTable[m] + (val & 1023)] + _tables.exponentTable[m];\n  return _tables.floatView[0];\n}\nvar DataUtils = /* @__PURE__ */ Object.freeze({\n  __proto__: null,\n  toHalfFloat,\n  fromHalfFloat\n});\nclass ParametricGeometry extends BufferGeometry {\n  constructor() {\n    console.error(\"THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js\");\n    super();\n  }\n}\nclass TextGeometry extends BufferGeometry {\n  constructor() {\n    console.error(\"THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js\");\n    super();\n  }\n}\nfunction FontLoader() {\n  console.error(\"THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js\");\n}\nfunction Font() {\n  console.error(\"THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js\");\n}\nfunction ImmediateRenderObject() {\n  console.error(\"THREE.ImmediateRenderObject has been removed.\");\n}\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n  constructor(width, height, options) {\n    console.error('THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the \"samples\" property to greater 0 to enable multisampling.');\n    super(width, height, options);\n    this.samples = 4;\n  }\n}\nclass DataTexture2DArray extends DataArrayTexture {\n  constructor(data, width, height, depth) {\n    console.warn(\"THREE.DataTexture2DArray has been renamed to DataArrayTexture.\");\n    super(data, width, height, depth);\n  }\n}\nclass DataTexture3D extends Data3DTexture {\n  constructor(data, width, height, depth) {\n    console.warn(\"THREE.DataTexture3D has been renamed to Data3DTexture.\");\n    super(data, width, height, depth);\n  }\n}\nif (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n  __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"register\", { detail: {\n    revision: REVISION\n  } }));\n}\nif (typeof window !== \"undefined\") {\n  if (window.__THREE__) {\n    console.warn(\"WARNING: Multiple instances of Three.js being imported.\");\n  } else {\n    window.__THREE__ = REVISION;\n  }\n}\nconst three_module = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  ACESFilmicToneMapping,\n  AddEquation,\n  AddOperation,\n  AdditiveAnimationBlendMode,\n  AdditiveBlending,\n  AlphaFormat,\n  AlwaysDepth,\n  AlwaysStencilFunc,\n  AmbientLight,\n  AmbientLightProbe,\n  AnimationClip,\n  AnimationLoader,\n  AnimationMixer,\n  AnimationObjectGroup,\n  AnimationUtils,\n  ArcCurve,\n  ArrayCamera,\n  ArrowHelper,\n  Audio,\n  AudioAnalyser,\n  AudioContext,\n  AudioListener,\n  AudioLoader,\n  AxesHelper,\n  BackSide,\n  BasicDepthPacking,\n  BasicShadowMap,\n  Bone,\n  BooleanKeyframeTrack,\n  Box2,\n  Box3,\n  Box3Helper,\n  BoxBufferGeometry: BoxGeometry,\n  BoxGeometry,\n  BoxHelper,\n  BufferAttribute,\n  BufferGeometry,\n  BufferGeometryLoader,\n  ByteType,\n  Cache,\n  Camera: Camera$2,\n  CameraHelper,\n  CanvasTexture,\n  CapsuleBufferGeometry: CapsuleGeometry,\n  CapsuleGeometry,\n  CatmullRomCurve3,\n  CineonToneMapping,\n  CircleBufferGeometry: CircleGeometry,\n  CircleGeometry,\n  ClampToEdgeWrapping,\n  Clock,\n  Color,\n  ColorKeyframeTrack,\n  ColorManagement,\n  CompressedTexture,\n  CompressedTextureLoader,\n  ConeBufferGeometry: ConeGeometry,\n  ConeGeometry,\n  CubeCamera,\n  CubeReflectionMapping,\n  CubeRefractionMapping,\n  CubeTexture,\n  CubeTextureLoader,\n  CubeUVReflectionMapping,\n  CubicBezierCurve,\n  CubicBezierCurve3,\n  CubicInterpolant,\n  CullFaceBack,\n  CullFaceFront,\n  CullFaceFrontBack,\n  CullFaceNone,\n  Curve,\n  CurvePath,\n  CustomBlending,\n  CustomToneMapping,\n  CylinderBufferGeometry: CylinderGeometry,\n  CylinderGeometry,\n  Cylindrical,\n  Data3DTexture,\n  DataArrayTexture,\n  DataTexture,\n  DataTexture2DArray,\n  DataTexture3D,\n  DataTextureLoader,\n  DataUtils,\n  DecrementStencilOp,\n  DecrementWrapStencilOp,\n  DefaultLoadingManager,\n  DepthFormat,\n  DepthStencilFormat,\n  DepthTexture,\n  DirectionalLight,\n  DirectionalLightHelper,\n  DiscreteInterpolant,\n  DodecahedronBufferGeometry: DodecahedronGeometry,\n  DodecahedronGeometry,\n  DoubleSide,\n  DstAlphaFactor,\n  DstColorFactor,\n  DynamicCopyUsage,\n  DynamicDrawUsage,\n  DynamicReadUsage,\n  EdgesGeometry,\n  EllipseCurve,\n  EqualDepth,\n  EqualStencilFunc,\n  EquirectangularReflectionMapping,\n  EquirectangularRefractionMapping,\n  Euler,\n  EventDispatcher,\n  ExtrudeBufferGeometry: ExtrudeGeometry,\n  ExtrudeGeometry,\n  FileLoader,\n  FlatShading,\n  Float16BufferAttribute,\n  Float32BufferAttribute,\n  Float64BufferAttribute,\n  FloatType,\n  Fog,\n  FogExp2,\n  Font,\n  FontLoader,\n  FramebufferTexture,\n  FrontSide,\n  Frustum,\n  GLBufferAttribute,\n  GLSL1,\n  GLSL3,\n  GreaterDepth,\n  GreaterEqualDepth,\n  GreaterEqualStencilFunc,\n  GreaterStencilFunc,\n  GridHelper,\n  Group: Group$1,\n  HalfFloatType,\n  HemisphereLight,\n  HemisphereLightHelper,\n  HemisphereLightProbe,\n  IcosahedronBufferGeometry: IcosahedronGeometry,\n  IcosahedronGeometry,\n  ImageBitmapLoader,\n  ImageLoader,\n  ImageUtils,\n  ImmediateRenderObject,\n  IncrementStencilOp,\n  IncrementWrapStencilOp,\n  InstancedBufferAttribute,\n  InstancedBufferGeometry,\n  InstancedInterleavedBuffer,\n  InstancedMesh: InstancedMesh$1,\n  Int16BufferAttribute,\n  Int32BufferAttribute,\n  Int8BufferAttribute,\n  IntType,\n  InterleavedBuffer,\n  InterleavedBufferAttribute,\n  Interpolant,\n  InterpolateDiscrete,\n  InterpolateLinear,\n  InterpolateSmooth,\n  InvertStencilOp,\n  KeepStencilOp,\n  KeyframeTrack,\n  LOD,\n  LatheBufferGeometry: LatheGeometry,\n  LatheGeometry,\n  Layers,\n  LessDepth,\n  LessEqualDepth,\n  LessEqualStencilFunc,\n  LessStencilFunc,\n  Light,\n  LightProbe,\n  Line,\n  Line3,\n  LineBasicMaterial,\n  LineCurve,\n  LineCurve3,\n  LineDashedMaterial,\n  LineLoop,\n  LineSegments,\n  LinearEncoding,\n  LinearFilter,\n  LinearInterpolant,\n  LinearMipMapLinearFilter,\n  LinearMipMapNearestFilter,\n  LinearMipmapLinearFilter,\n  LinearMipmapNearestFilter,\n  LinearSRGBColorSpace,\n  LinearToneMapping,\n  Loader,\n  LoaderUtils,\n  LoadingManager,\n  LoopOnce,\n  LoopPingPong,\n  LoopRepeat,\n  LuminanceAlphaFormat,\n  LuminanceFormat,\n  MOUSE,\n  Material: Material$1,\n  MaterialLoader,\n  MathUtils,\n  Matrix3,\n  Matrix4,\n  MaxEquation,\n  Mesh,\n  MeshBasicMaterial,\n  MeshDepthMaterial,\n  MeshDistanceMaterial,\n  MeshLambertMaterial,\n  MeshMatcapMaterial,\n  MeshNormalMaterial,\n  MeshPhongMaterial,\n  MeshPhysicalMaterial,\n  MeshStandardMaterial,\n  MeshToonMaterial,\n  MinEquation,\n  MirroredRepeatWrapping,\n  MixOperation,\n  MultiplyBlending,\n  MultiplyOperation,\n  NearestFilter,\n  NearestMipMapLinearFilter,\n  NearestMipMapNearestFilter,\n  NearestMipmapLinearFilter,\n  NearestMipmapNearestFilter,\n  NeverDepth,\n  NeverStencilFunc,\n  NoBlending,\n  NoColorSpace,\n  NoToneMapping,\n  NormalAnimationBlendMode,\n  NormalBlending,\n  NotEqualDepth,\n  NotEqualStencilFunc,\n  NumberKeyframeTrack,\n  Object3D: Object3D$1,\n  ObjectLoader,\n  ObjectSpaceNormalMap,\n  OctahedronBufferGeometry: OctahedronGeometry,\n  OctahedronGeometry,\n  OneFactor,\n  OneMinusDstAlphaFactor,\n  OneMinusDstColorFactor,\n  OneMinusSrcAlphaFactor,\n  OneMinusSrcColorFactor,\n  OrthographicCamera,\n  PCFShadowMap,\n  PCFSoftShadowMap,\n  PMREMGenerator,\n  ParametricGeometry,\n  Path,\n  PerspectiveCamera,\n  Plane,\n  PlaneBufferGeometry: PlaneGeometry,\n  PlaneGeometry,\n  PlaneHelper,\n  PointLight,\n  PointLightHelper,\n  Points,\n  PointsMaterial,\n  PolarGridHelper,\n  PolyhedronBufferGeometry: PolyhedronGeometry,\n  PolyhedronGeometry,\n  PositionalAudio,\n  PropertyBinding,\n  PropertyMixer,\n  QuadraticBezierCurve,\n  QuadraticBezierCurve3,\n  Quaternion,\n  QuaternionKeyframeTrack,\n  QuaternionLinearInterpolant,\n  REVISION,\n  RGBADepthPacking,\n  RGBAFormat,\n  RGBAIntegerFormat,\n  RGBA_ASTC_10x10_Format,\n  RGBA_ASTC_10x5_Format,\n  RGBA_ASTC_10x6_Format,\n  RGBA_ASTC_10x8_Format,\n  RGBA_ASTC_12x10_Format,\n  RGBA_ASTC_12x12_Format,\n  RGBA_ASTC_4x4_Format,\n  RGBA_ASTC_5x4_Format,\n  RGBA_ASTC_5x5_Format,\n  RGBA_ASTC_6x5_Format,\n  RGBA_ASTC_6x6_Format,\n  RGBA_ASTC_8x5_Format,\n  RGBA_ASTC_8x6_Format,\n  RGBA_ASTC_8x8_Format,\n  RGBA_BPTC_Format,\n  RGBA_ETC2_EAC_Format,\n  RGBA_PVRTC_2BPPV1_Format,\n  RGBA_PVRTC_4BPPV1_Format,\n  RGBA_S3TC_DXT1_Format,\n  RGBA_S3TC_DXT3_Format,\n  RGBA_S3TC_DXT5_Format,\n  RGBFormat,\n  RGB_ETC1_Format,\n  RGB_ETC2_Format,\n  RGB_PVRTC_2BPPV1_Format,\n  RGB_PVRTC_4BPPV1_Format,\n  RGB_S3TC_DXT1_Format,\n  RGFormat,\n  RGIntegerFormat,\n  RawShaderMaterial,\n  Ray,\n  Raycaster: Raycaster$1,\n  RectAreaLight,\n  RedFormat,\n  RedIntegerFormat,\n  ReinhardToneMapping,\n  RepeatWrapping,\n  ReplaceStencilOp,\n  ReverseSubtractEquation,\n  RingBufferGeometry: RingGeometry,\n  RingGeometry,\n  SRGBColorSpace,\n  Scene: Scene$1,\n  ShaderChunk,\n  ShaderLib,\n  ShaderMaterial,\n  ShadowMaterial,\n  Shape: Shape$1,\n  ShapeBufferGeometry: ShapeGeometry,\n  ShapeGeometry,\n  ShapePath,\n  ShapeUtils,\n  ShortType,\n  Skeleton,\n  SkeletonHelper,\n  SkinnedMesh,\n  SmoothShading,\n  Source,\n  Sphere,\n  SphereBufferGeometry: SphereGeometry,\n  SphereGeometry,\n  Spherical,\n  SphericalHarmonics3,\n  SplineCurve,\n  SpotLight,\n  SpotLightHelper,\n  Sprite,\n  SpriteMaterial,\n  SrcAlphaFactor,\n  SrcAlphaSaturateFactor,\n  SrcColorFactor,\n  StaticCopyUsage,\n  StaticDrawUsage,\n  StaticReadUsage,\n  StereoCamera,\n  StreamCopyUsage,\n  StreamDrawUsage,\n  StreamReadUsage,\n  StringKeyframeTrack,\n  SubtractEquation,\n  SubtractiveBlending,\n  TOUCH,\n  TangentSpaceNormalMap,\n  TetrahedronBufferGeometry: TetrahedronGeometry,\n  TetrahedronGeometry,\n  TextGeometry,\n  Texture,\n  TextureLoader,\n  TorusBufferGeometry: TorusGeometry,\n  TorusGeometry,\n  TorusKnotBufferGeometry: TorusKnotGeometry,\n  TorusKnotGeometry,\n  Triangle,\n  TriangleFanDrawMode,\n  TriangleStripDrawMode,\n  TrianglesDrawMode,\n  TubeBufferGeometry: TubeGeometry,\n  TubeGeometry,\n  UVMapping,\n  Uint16BufferAttribute,\n  Uint32BufferAttribute,\n  Uint8BufferAttribute,\n  Uint8ClampedBufferAttribute,\n  Uniform,\n  UniformsGroup,\n  UniformsLib,\n  UniformsUtils,\n  UnsignedByteType,\n  UnsignedInt248Type,\n  UnsignedIntType,\n  UnsignedShort4444Type,\n  UnsignedShort5551Type,\n  UnsignedShortType,\n  VSMShadowMap,\n  Vector2,\n  Vector3,\n  Vector4,\n  VectorKeyframeTrack,\n  VideoTexture,\n  WebGL1Renderer,\n  WebGL3DRenderTarget,\n  WebGLArrayRenderTarget,\n  WebGLCubeRenderTarget,\n  WebGLMultipleRenderTargets,\n  WebGLMultisampleRenderTarget,\n  WebGLRenderTarget,\n  WebGLRenderer,\n  WebGLUtils,\n  WireframeGeometry,\n  WrapAroundEnding,\n  ZeroCurvatureEnding,\n  ZeroFactor,\n  ZeroSlopeEnding,\n  ZeroStencilOp,\n  _SRGBAFormat,\n  sRGBEncoding\n}, Symbol.toStringTag, { value: \"Module\" }));\nvar commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nvar dist$3 = {};\nvar bfast = {};\nvar remoteValue = {};\nObject.defineProperty(remoteValue, \"__esModule\", { value: true });\nremoteValue.RemoteValue = void 0;\nclass RemoteValue {\n  constructor(getter, label) {\n    this._getter = getter;\n    this.label = label != null ? label : \"\";\n  }\n  abort() {\n    this._request = void 0;\n  }\n  get() {\n    if (this._value !== void 0) {\n      return Promise.resolve(this._value);\n    }\n    if (this._request) {\n      return this._request;\n    }\n    this._request = this._getter().then((value) => {\n      this._value = value;\n      this._request = void 0;\n      return this._value;\n    });\n    return this._request;\n  }\n}\nremoteValue.RemoteValue = RemoteValue;\nvar remoteBuffer = {};\nvar requestTracker = {};\nvar logging$1 = {};\nObject.defineProperty(logging$1, \"__esModule\", { value: true });\nlogging$1.NoLog = logging$1.DefaultLog = logging$1.Logger = void 0;\nclass Logger$1 {\n}\nlogging$1.Logger = Logger$1;\nclass DefaultLog$1 {\n  constructor() {\n    this.log = (s) => console.log(s);\n    this.warn = (s) => console.warn(s);\n    this.error = (s) => console.error(s);\n  }\n}\nlogging$1.DefaultLog = DefaultLog$1;\nclass NoLog$1 {\n  constructor() {\n    this.log = (s) => {\n    };\n    this.warn = (s) => {\n    };\n    this.error = (s) => {\n    };\n  }\n}\nlogging$1.NoLog = NoLog$1;\nObject.defineProperty(requestTracker, \"__esModule\", { value: true });\nrequestTracker.RequestTracker = void 0;\nconst logging_1$2 = logging$1;\nclass Request$1 {\n  constructor(field) {\n    this.status = \"active\";\n    this.loaded = 0;\n    this.total = 0;\n    this.lengthComputable = true;\n    this.field = field;\n  }\n}\nclass RequestTracker {\n  constructor(source, logger = new logging_1$2.NoLog()) {\n    this.all = /* @__PURE__ */ new Map();\n    this.lastUpdate = 0;\n    this.delay = 500;\n    this.sleeping = false;\n    this.onUpdate = void 0;\n    this.source = source;\n    this.logs = logger;\n  }\n  get loaded() {\n    let result = 0;\n    this.all.forEach((request2) => {\n      result += request2.loaded;\n    });\n    return result;\n  }\n  get total() {\n    let result = 0;\n    this.all.forEach((request2) => {\n      result += request2.total;\n    });\n    return result;\n  }\n  start(field) {\n    this.all.set(field, new Request$1(field));\n    this.signal();\n  }\n  update(field, progress) {\n    const r = this.all.get(field);\n    if (!r)\n      throw new Error(\"Updating missing download\");\n    if (r.status !== \"active\")\n      return;\n    r.loaded = progress.loaded;\n    r.total = progress.total;\n    r.lengthComputable = progress.lengthComputable;\n    this.signal();\n  }\n  fail(field) {\n    this.logs.error(`${field} failed`);\n    const download = this.all.get(field);\n    if (!download)\n      throw new Error(\"Failing missing download\");\n    download.status = \"failed\";\n    this.signal();\n  }\n  end(field) {\n    var _a2;\n    this.logs.log(`${field} completed`);\n    const download = this.all.get(field);\n    if (!download)\n      throw new Error(\"Failing missing download\");\n    download.status = \"completed\";\n    (_a2 = this.onUpdate) == null ? void 0 : _a2.call(this, this);\n  }\n  signal() {\n    var _a2;\n    if (this.sleeping)\n      return;\n    this.sleeping = true;\n    setTimeout(() => this.sleeping = false, this.delay);\n    (_a2 = this.onUpdate) == null ? void 0 : _a2.call(this, this);\n  }\n}\nrequestTracker.RequestTracker = RequestTracker;\nvar retriableRequest = {};\nObject.defineProperty(retriableRequest, \"__esModule\", { value: true });\nretriableRequest.RetriableRequest = void 0;\nclass RetriableRequest {\n  constructor(url, headers, range, responseType) {\n    this.url = url;\n    this.headers = headers != null ? headers : {};\n    this.range = range;\n    this.responseType = responseType;\n  }\n  abort() {\n    var _a2;\n    (_a2 = this.xhr) == null ? void 0 : _a2.abort();\n  }\n  send() {\n    var _a2;\n    (_a2 = this.xhr) == null ? void 0 : _a2.abort();\n    const xhr = new XMLHttpRequest();\n    xhr.open(\"GET\", this.url);\n    xhr.responseType = this.responseType;\n    for (const key in this.headers) {\n      xhr.setRequestHeader(key, this.headers[key]);\n    }\n    if (this.range) {\n      xhr.setRequestHeader(\"Range\", this.range);\n    }\n    xhr.onprogress = (e) => {\n      var _a3;\n      (_a3 = this.onProgress) == null ? void 0 : _a3.call(this, e);\n    };\n    xhr.onload = (e) => {\n      var _a3, _b2;\n      (_a3 = this.onProgress) == null ? void 0 : _a3.call(this, e);\n      (_b2 = this.onLoad) == null ? void 0 : _b2.call(this, xhr.response);\n    };\n    xhr.onerror = (_) => {\n      var _a3;\n      (_a3 = this.onError) == null ? void 0 : _a3.call(this);\n    };\n    xhr.send();\n    this.xhr = xhr;\n  }\n}\nretriableRequest.RetriableRequest = RetriableRequest;\nObject.defineProperty(remoteBuffer, \"__esModule\", { value: true });\nremoteBuffer.RemoteBuffer = remoteBuffer.setRemoteBufferMaxConcurency = void 0;\nconst requestTracker_1$1 = requestTracker;\nconst logging_1$1 = logging$1;\nconst retriableRequest_1$1 = retriableRequest;\nlet RemoteBufferMaxConcurency = 10;\nfunction setRemoteBufferMaxConcurency(value) {\n  RemoteBufferMaxConcurency = value;\n}\nremoteBuffer.setRemoteBufferMaxConcurency = setRemoteBufferMaxConcurency;\nclass RemoteBuffer {\n  constructor(url, headers) {\n    this.headers = {};\n    this.maxConcurency = RemoteBufferMaxConcurency;\n    this._queue = [];\n    this._active = /* @__PURE__ */ new Set();\n    this.url = url;\n    this.logs = new logging_1$1.NoLog();\n    this.headers = headers != null ? headers : {};\n    this._tracker = new requestTracker_1$1.RequestTracker(url, this.logs);\n    this._tracker.onUpdate = (p) => {\n      var _a2;\n      return (_a2 = this.onProgress) == null ? void 0 : _a2.call(this, p);\n    };\n  }\n  abort() {\n    this._active.forEach((request2) => {\n      request2.abort();\n    });\n    this._active.clear();\n    this._queue.length = 0;\n  }\n  async http(range, label) {\n    const rangeStr = range ? `bytes=${range.start}-${range.end - 1}` : void 0;\n    const request2 = new retriableRequest_1$1.RetriableRequest(this.url, this.headers, rangeStr, \"arraybuffer\");\n    request2.msg = range ? `${label} : [${range.start}, ${range.end}] of ${this.url}` : `${label} of ${this.url}`;\n    this.enqueue(request2);\n    return new Promise((resolve, reject) => {\n      this._tracker.start(label);\n      request2.onProgress = (e) => {\n        this._tracker.update(label, e);\n      };\n      request2.onLoad = (result) => {\n        this._tracker.end(label);\n        resolve(result);\n        this.end(request2);\n      };\n      request2.onError = () => {\n        this._tracker.fail(label);\n        this.retry(request2);\n      };\n    });\n  }\n  enqueue(request2) {\n    this._queue.push(request2);\n    this.next();\n  }\n  retry(request2) {\n    this._active.delete(request2);\n    this.maxConcurency = Math.max(1, this.maxConcurency - 1);\n    setTimeout(() => this.enqueue(request2), 2e3);\n  }\n  end(request2) {\n    this.logs.log(\"Finished \" + request2.msg);\n    this._active.delete(request2);\n    this.next();\n  }\n  next() {\n    if (this._queue.length === 0) {\n      return;\n    }\n    if (this._active.size >= this.maxConcurency) {\n      return;\n    }\n    const next = this._queue[0];\n    this._queue.shift();\n    this._active.add(next);\n    next.send();\n    this.logs.log(\"Started \" + next.msg);\n  }\n}\nremoteBuffer.RemoteBuffer = RemoteBuffer;\nvar pako$1 = {};\nvar deflate$4 = {};\nvar deflate$3 = {};\nvar trees = {};\nconst Z_FIXED$1 = 4;\nconst Z_BINARY = 0;\nconst Z_TEXT = 1;\nconst Z_UNKNOWN$1 = 2;\nfunction zero$1(buf) {\n  let len = buf.length;\n  while (--len >= 0) {\n    buf[len] = 0;\n  }\n}\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES = 2;\nconst MIN_MATCH$1 = 3;\nconst MAX_MATCH$1 = 258;\nconst LENGTH_CODES$1 = 29;\nconst LITERALS$1 = 256;\nconst L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\nconst D_CODES$1 = 30;\nconst BL_CODES$1 = 19;\nconst HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\nconst MAX_BITS$1 = 15;\nconst Buf_size = 16;\nconst MAX_BL_BITS = 7;\nconst END_BLOCK = 256;\nconst REP_3_6 = 16;\nconst REPZ_3_10 = 17;\nconst REPZ_11_138 = 18;\nconst extra_lbits = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]);\nconst extra_dbits = new Uint8Array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]);\nconst extra_blbits = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]);\nconst bl_order = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\nconst DIST_CODE_LEN = 512;\nconst static_ltree = new Array((L_CODES$1 + 2) * 2);\nzero$1(static_ltree);\nconst static_dtree = new Array(D_CODES$1 * 2);\nzero$1(static_dtree);\nconst _dist_code = new Array(DIST_CODE_LEN);\nzero$1(_dist_code);\nconst _length_code = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1);\nzero$1(_length_code);\nconst base_length = new Array(LENGTH_CODES$1);\nzero$1(base_length);\nconst base_dist = new Array(D_CODES$1);\nzero$1(base_dist);\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n  this.static_tree = static_tree;\n  this.extra_bits = extra_bits;\n  this.extra_base = extra_base;\n  this.elems = elems;\n  this.max_length = max_length;\n  this.has_stree = static_tree && static_tree.length;\n}\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\nfunction TreeDesc(dyn_tree, stat_desc) {\n  this.dyn_tree = dyn_tree;\n  this.max_code = 0;\n  this.stat_desc = stat_desc;\n}\nconst d_code = (dist2) => {\n  return dist2 < 256 ? _dist_code[dist2] : _dist_code[256 + (dist2 >>> 7)];\n};\nconst put_short = (s, w) => {\n  s.pending_buf[s.pending++] = w & 255;\n  s.pending_buf[s.pending++] = w >>> 8 & 255;\n};\nconst send_bits = (s, value, length) => {\n  if (s.bi_valid > Buf_size - length) {\n    s.bi_buf |= value << s.bi_valid & 65535;\n    put_short(s, s.bi_buf);\n    s.bi_buf = value >> Buf_size - s.bi_valid;\n    s.bi_valid += length - Buf_size;\n  } else {\n    s.bi_buf |= value << s.bi_valid & 65535;\n    s.bi_valid += length;\n  }\n};\nconst send_code = (s, c, tree) => {\n  send_bits(s, tree[c * 2], tree[c * 2 + 1]);\n};\nconst bi_reverse = (code, len) => {\n  let res = 0;\n  do {\n    res |= code & 1;\n    code >>>= 1;\n    res <<= 1;\n  } while (--len > 0);\n  return res >>> 1;\n};\nconst bi_flush = (s) => {\n  if (s.bi_valid === 16) {\n    put_short(s, s.bi_buf);\n    s.bi_buf = 0;\n    s.bi_valid = 0;\n  } else if (s.bi_valid >= 8) {\n    s.pending_buf[s.pending++] = s.bi_buf & 255;\n    s.bi_buf >>= 8;\n    s.bi_valid -= 8;\n  }\n};\nconst gen_bitlen = (s, desc) => {\n  const tree = desc.dyn_tree;\n  const max_code = desc.max_code;\n  const stree = desc.stat_desc.static_tree;\n  const has_stree = desc.stat_desc.has_stree;\n  const extra = desc.stat_desc.extra_bits;\n  const base = desc.stat_desc.extra_base;\n  const max_length = desc.stat_desc.max_length;\n  let h;\n  let n, m;\n  let bits;\n  let xbits;\n  let f;\n  let overflow = 0;\n  for (bits = 0; bits <= MAX_BITS$1; bits++) {\n    s.bl_count[bits] = 0;\n  }\n  tree[s.heap[s.heap_max] * 2 + 1] = 0;\n  for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {\n    n = s.heap[h];\n    bits = tree[tree[n * 2 + 1] * 2 + 1] + 1;\n    if (bits > max_length) {\n      bits = max_length;\n      overflow++;\n    }\n    tree[n * 2 + 1] = bits;\n    if (n > max_code) {\n      continue;\n    }\n    s.bl_count[bits]++;\n    xbits = 0;\n    if (n >= base) {\n      xbits = extra[n - base];\n    }\n    f = tree[n * 2];\n    s.opt_len += f * (bits + xbits);\n    if (has_stree) {\n      s.static_len += f * (stree[n * 2 + 1] + xbits);\n    }\n  }\n  if (overflow === 0) {\n    return;\n  }\n  do {\n    bits = max_length - 1;\n    while (s.bl_count[bits] === 0) {\n      bits--;\n    }\n    s.bl_count[bits]--;\n    s.bl_count[bits + 1] += 2;\n    s.bl_count[max_length]--;\n    overflow -= 2;\n  } while (overflow > 0);\n  for (bits = max_length; bits !== 0; bits--) {\n    n = s.bl_count[bits];\n    while (n !== 0) {\n      m = s.heap[--h];\n      if (m > max_code) {\n        continue;\n      }\n      if (tree[m * 2 + 1] !== bits) {\n        s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2];\n        tree[m * 2 + 1] = bits;\n      }\n      n--;\n    }\n  }\n};\nconst gen_codes = (tree, max_code, bl_count) => {\n  const next_code = new Array(MAX_BITS$1 + 1);\n  let code = 0;\n  let bits;\n  let n;\n  for (bits = 1; bits <= MAX_BITS$1; bits++) {\n    code = code + bl_count[bits - 1] << 1;\n    next_code[bits] = code;\n  }\n  for (n = 0; n <= max_code; n++) {\n    let len = tree[n * 2 + 1];\n    if (len === 0) {\n      continue;\n    }\n    tree[n * 2] = bi_reverse(next_code[len]++, len);\n  }\n};\nconst tr_static_init = () => {\n  let n;\n  let bits;\n  let length;\n  let code;\n  let dist2;\n  const bl_count = new Array(MAX_BITS$1 + 1);\n  length = 0;\n  for (code = 0; code < LENGTH_CODES$1 - 1; code++) {\n    base_length[code] = length;\n    for (n = 0; n < 1 << extra_lbits[code]; n++) {\n      _length_code[length++] = code;\n    }\n  }\n  _length_code[length - 1] = code;\n  dist2 = 0;\n  for (code = 0; code < 16; code++) {\n    base_dist[code] = dist2;\n    for (n = 0; n < 1 << extra_dbits[code]; n++) {\n      _dist_code[dist2++] = code;\n    }\n  }\n  dist2 >>= 7;\n  for (; code < D_CODES$1; code++) {\n    base_dist[code] = dist2 << 7;\n    for (n = 0; n < 1 << extra_dbits[code] - 7; n++) {\n      _dist_code[256 + dist2++] = code;\n    }\n  }\n  for (bits = 0; bits <= MAX_BITS$1; bits++) {\n    bl_count[bits] = 0;\n  }\n  n = 0;\n  while (n <= 143) {\n    static_ltree[n * 2 + 1] = 8;\n    n++;\n    bl_count[8]++;\n  }\n  while (n <= 255) {\n    static_ltree[n * 2 + 1] = 9;\n    n++;\n    bl_count[9]++;\n  }\n  while (n <= 279) {\n    static_ltree[n * 2 + 1] = 7;\n    n++;\n    bl_count[7]++;\n  }\n  while (n <= 287) {\n    static_ltree[n * 2 + 1] = 8;\n    n++;\n    bl_count[8]++;\n  }\n  gen_codes(static_ltree, L_CODES$1 + 1, bl_count);\n  for (n = 0; n < D_CODES$1; n++) {\n    static_dtree[n * 2 + 1] = 5;\n    static_dtree[n * 2] = bi_reverse(n, 5);\n  }\n  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1);\n  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES$1, MAX_BITS$1);\n  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES$1, MAX_BL_BITS);\n};\nconst init_block = (s) => {\n  let n;\n  for (n = 0; n < L_CODES$1; n++) {\n    s.dyn_ltree[n * 2] = 0;\n  }\n  for (n = 0; n < D_CODES$1; n++) {\n    s.dyn_dtree[n * 2] = 0;\n  }\n  for (n = 0; n < BL_CODES$1; n++) {\n    s.bl_tree[n * 2] = 0;\n  }\n  s.dyn_ltree[END_BLOCK * 2] = 1;\n  s.opt_len = s.static_len = 0;\n  s.sym_next = s.matches = 0;\n};\nconst bi_windup = (s) => {\n  if (s.bi_valid > 8) {\n    put_short(s, s.bi_buf);\n  } else if (s.bi_valid > 0) {\n    s.pending_buf[s.pending++] = s.bi_buf;\n  }\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n};\nconst smaller = (tree, n, m, depth) => {\n  const _n2 = n * 2;\n  const _m2 = m * 2;\n  return tree[_n2] < tree[_m2] || tree[_n2] === tree[_m2] && depth[n] <= depth[m];\n};\nconst pqdownheap = (s, tree, k) => {\n  const v = s.heap[k];\n  let j = k << 1;\n  while (j <= s.heap_len) {\n    if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n      j++;\n    }\n    if (smaller(tree, v, s.heap[j], s.depth)) {\n      break;\n    }\n    s.heap[k] = s.heap[j];\n    k = j;\n    j <<= 1;\n  }\n  s.heap[k] = v;\n};\nconst compress_block = (s, ltree, dtree) => {\n  let dist2;\n  let lc;\n  let sx = 0;\n  let code;\n  let extra;\n  if (s.sym_next !== 0) {\n    do {\n      dist2 = s.pending_buf[s.sym_buf + sx++] & 255;\n      dist2 += (s.pending_buf[s.sym_buf + sx++] & 255) << 8;\n      lc = s.pending_buf[s.sym_buf + sx++];\n      if (dist2 === 0) {\n        send_code(s, lc, ltree);\n      } else {\n        code = _length_code[lc];\n        send_code(s, code + LITERALS$1 + 1, ltree);\n        extra = extra_lbits[code];\n        if (extra !== 0) {\n          lc -= base_length[code];\n          send_bits(s, lc, extra);\n        }\n        dist2--;\n        code = d_code(dist2);\n        send_code(s, code, dtree);\n        extra = extra_dbits[code];\n        if (extra !== 0) {\n          dist2 -= base_dist[code];\n          send_bits(s, dist2, extra);\n        }\n      }\n    } while (sx < s.sym_next);\n  }\n  send_code(s, END_BLOCK, ltree);\n};\nconst build_tree = (s, desc) => {\n  const tree = desc.dyn_tree;\n  const stree = desc.stat_desc.static_tree;\n  const has_stree = desc.stat_desc.has_stree;\n  const elems = desc.stat_desc.elems;\n  let n, m;\n  let max_code = -1;\n  let node;\n  s.heap_len = 0;\n  s.heap_max = HEAP_SIZE$1;\n  for (n = 0; n < elems; n++) {\n    if (tree[n * 2] !== 0) {\n      s.heap[++s.heap_len] = max_code = n;\n      s.depth[n] = 0;\n    } else {\n      tree[n * 2 + 1] = 0;\n    }\n  }\n  while (s.heap_len < 2) {\n    node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0;\n    tree[node * 2] = 1;\n    s.depth[node] = 0;\n    s.opt_len--;\n    if (has_stree) {\n      s.static_len -= stree[node * 2 + 1];\n    }\n  }\n  desc.max_code = max_code;\n  for (n = s.heap_len >> 1; n >= 1; n--) {\n    pqdownheap(s, tree, n);\n  }\n  node = elems;\n  do {\n    n = s.heap[1];\n    s.heap[1] = s.heap[s.heap_len--];\n    pqdownheap(s, tree, 1);\n    m = s.heap[1];\n    s.heap[--s.heap_max] = n;\n    s.heap[--s.heap_max] = m;\n    tree[node * 2] = tree[n * 2] + tree[m * 2];\n    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n    tree[n * 2 + 1] = tree[m * 2 + 1] = node;\n    s.heap[1] = node++;\n    pqdownheap(s, tree, 1);\n  } while (s.heap_len >= 2);\n  s.heap[--s.heap_max] = s.heap[1];\n  gen_bitlen(s, desc);\n  gen_codes(tree, max_code, s.bl_count);\n};\nconst scan_tree = (s, tree, max_code) => {\n  let n;\n  let prevlen = -1;\n  let curlen;\n  let nextlen = tree[0 * 2 + 1];\n  let count = 0;\n  let max_count = 7;\n  let min_count = 4;\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n  tree[(max_code + 1) * 2 + 1] = 65535;\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1];\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n    } else if (count < min_count) {\n      s.bl_tree[curlen * 2] += count;\n    } else if (curlen !== 0) {\n      if (curlen !== prevlen) {\n        s.bl_tree[curlen * 2]++;\n      }\n      s.bl_tree[REP_3_6 * 2]++;\n    } else if (count <= 10) {\n      s.bl_tree[REPZ_3_10 * 2]++;\n    } else {\n      s.bl_tree[REPZ_11_138 * 2]++;\n    }\n    count = 0;\n    prevlen = curlen;\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n};\nconst send_tree = (s, tree, max_code) => {\n  let n;\n  let prevlen = -1;\n  let curlen;\n  let nextlen = tree[0 * 2 + 1];\n  let count = 0;\n  let max_count = 7;\n  let min_count = 4;\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1];\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n    } else if (count < min_count) {\n      do {\n        send_code(s, curlen, s.bl_tree);\n      } while (--count !== 0);\n    } else if (curlen !== 0) {\n      if (curlen !== prevlen) {\n        send_code(s, curlen, s.bl_tree);\n        count--;\n      }\n      send_code(s, REP_3_6, s.bl_tree);\n      send_bits(s, count - 3, 2);\n    } else if (count <= 10) {\n      send_code(s, REPZ_3_10, s.bl_tree);\n      send_bits(s, count - 3, 3);\n    } else {\n      send_code(s, REPZ_11_138, s.bl_tree);\n      send_bits(s, count - 11, 7);\n    }\n    count = 0;\n    prevlen = curlen;\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n};\nconst build_bl_tree = (s) => {\n  let max_blindex;\n  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n  build_tree(s, s.bl_desc);\n  for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) {\n    if (s.bl_tree[bl_order[max_blindex] * 2 + 1] !== 0) {\n      break;\n    }\n  }\n  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n  return max_blindex;\n};\nconst send_all_trees = (s, lcodes, dcodes, blcodes) => {\n  let rank2;\n  send_bits(s, lcodes - 257, 5);\n  send_bits(s, dcodes - 1, 5);\n  send_bits(s, blcodes - 4, 4);\n  for (rank2 = 0; rank2 < blcodes; rank2++) {\n    send_bits(s, s.bl_tree[bl_order[rank2] * 2 + 1], 3);\n  }\n  send_tree(s, s.dyn_ltree, lcodes - 1);\n  send_tree(s, s.dyn_dtree, dcodes - 1);\n};\nconst detect_data_type = (s) => {\n  let block_mask = 4093624447;\n  let n;\n  for (n = 0; n <= 31; n++, block_mask >>>= 1) {\n    if (block_mask & 1 && s.dyn_ltree[n * 2] !== 0) {\n      return Z_BINARY;\n    }\n  }\n  if (s.dyn_ltree[9 * 2] !== 0 || s.dyn_ltree[10 * 2] !== 0 || s.dyn_ltree[13 * 2] !== 0) {\n    return Z_TEXT;\n  }\n  for (n = 32; n < LITERALS$1; n++) {\n    if (s.dyn_ltree[n * 2] !== 0) {\n      return Z_TEXT;\n    }\n  }\n  return Z_BINARY;\n};\nlet static_init_done = false;\nconst _tr_init$1 = (s) => {\n  if (!static_init_done) {\n    tr_static_init();\n    static_init_done = true;\n  }\n  s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n  s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n  init_block(s);\n};\nconst _tr_stored_block$1 = (s, buf, stored_len, last) => {\n  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);\n  bi_windup(s);\n  put_short(s, stored_len);\n  put_short(s, ~stored_len);\n  if (stored_len) {\n    s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending);\n  }\n  s.pending += stored_len;\n};\nconst _tr_align$1 = (s) => {\n  send_bits(s, STATIC_TREES << 1, 3);\n  send_code(s, END_BLOCK, static_ltree);\n  bi_flush(s);\n};\nconst _tr_flush_block$1 = (s, buf, stored_len, last) => {\n  let opt_lenb, static_lenb;\n  let max_blindex = 0;\n  if (s.level > 0) {\n    if (s.strm.data_type === Z_UNKNOWN$1) {\n      s.strm.data_type = detect_data_type(s);\n    }\n    build_tree(s, s.l_desc);\n    build_tree(s, s.d_desc);\n    max_blindex = build_bl_tree(s);\n    opt_lenb = s.opt_len + 3 + 7 >>> 3;\n    static_lenb = s.static_len + 3 + 7 >>> 3;\n    if (static_lenb <= opt_lenb) {\n      opt_lenb = static_lenb;\n    }\n  } else {\n    opt_lenb = static_lenb = stored_len + 5;\n  }\n  if (stored_len + 4 <= opt_lenb && buf !== -1) {\n    _tr_stored_block$1(s, buf, stored_len, last);\n  } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) {\n    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n    compress_block(s, static_ltree, static_dtree);\n  } else {\n    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n    compress_block(s, s.dyn_ltree, s.dyn_dtree);\n  }\n  init_block(s);\n  if (last) {\n    bi_windup(s);\n  }\n};\nconst _tr_tally$1 = (s, dist2, lc) => {\n  s.pending_buf[s.sym_buf + s.sym_next++] = dist2;\n  s.pending_buf[s.sym_buf + s.sym_next++] = dist2 >> 8;\n  s.pending_buf[s.sym_buf + s.sym_next++] = lc;\n  if (dist2 === 0) {\n    s.dyn_ltree[lc * 2]++;\n  } else {\n    s.matches++;\n    dist2--;\n    s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]++;\n    s.dyn_dtree[d_code(dist2) * 2]++;\n  }\n  return s.sym_next === s.sym_end;\n};\ntrees._tr_init = _tr_init$1;\ntrees._tr_stored_block = _tr_stored_block$1;\ntrees._tr_flush_block = _tr_flush_block$1;\ntrees._tr_tally = _tr_tally$1;\ntrees._tr_align = _tr_align$1;\nconst adler32$2 = (adler, buf, len, pos) => {\n  let s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n = 0;\n  while (len !== 0) {\n    n = len > 2e3 ? 2e3 : len;\n    len -= n;\n    do {\n      s1 = s1 + buf[pos++] | 0;\n      s2 = s2 + s1 | 0;\n    } while (--n);\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n  return s1 | s2 << 16 | 0;\n};\nvar adler32_1 = adler32$2;\nconst makeTable = () => {\n  let c, table = [];\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1;\n    }\n    table[n] = c;\n  }\n  return table;\n};\nconst crcTable = new Uint32Array(makeTable());\nconst crc32$2 = (crc, buf, len, pos) => {\n  const t = crcTable;\n  const end = pos + len;\n  crc ^= -1;\n  for (let i = pos; i < end; i++) {\n    crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 255];\n  }\n  return crc ^ -1;\n};\nvar crc32_1 = crc32$2;\nvar messages = {\n  2: \"need dictionary\",\n  1: \"stream end\",\n  0: \"\",\n  \"-1\": \"file error\",\n  \"-2\": \"stream error\",\n  \"-3\": \"data error\",\n  \"-4\": \"insufficient memory\",\n  \"-5\": \"buffer error\",\n  \"-6\": \"incompatible version\"\n};\nvar constants$1 = {\n  Z_NO_FLUSH: 0,\n  Z_PARTIAL_FLUSH: 1,\n  Z_SYNC_FLUSH: 2,\n  Z_FULL_FLUSH: 3,\n  Z_FINISH: 4,\n  Z_BLOCK: 5,\n  Z_TREES: 6,\n  Z_OK: 0,\n  Z_STREAM_END: 1,\n  Z_NEED_DICT: 2,\n  Z_ERRNO: -1,\n  Z_STREAM_ERROR: -2,\n  Z_DATA_ERROR: -3,\n  Z_MEM_ERROR: -4,\n  Z_BUF_ERROR: -5,\n  Z_NO_COMPRESSION: 0,\n  Z_BEST_SPEED: 1,\n  Z_BEST_COMPRESSION: 9,\n  Z_DEFAULT_COMPRESSION: -1,\n  Z_FILTERED: 1,\n  Z_HUFFMAN_ONLY: 2,\n  Z_RLE: 3,\n  Z_FIXED: 4,\n  Z_DEFAULT_STRATEGY: 0,\n  Z_BINARY: 0,\n  Z_TEXT: 1,\n  Z_UNKNOWN: 2,\n  Z_DEFLATED: 8\n};\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees;\nconst adler32$1 = adler32_1;\nconst crc32$1 = crc32_1;\nconst msg$2 = messages;\nconst {\n  Z_NO_FLUSH: Z_NO_FLUSH$2,\n  Z_PARTIAL_FLUSH,\n  Z_FULL_FLUSH: Z_FULL_FLUSH$1,\n  Z_FINISH: Z_FINISH$3,\n  Z_BLOCK: Z_BLOCK$1,\n  Z_OK: Z_OK$3,\n  Z_STREAM_END: Z_STREAM_END$3,\n  Z_STREAM_ERROR: Z_STREAM_ERROR$2,\n  Z_DATA_ERROR: Z_DATA_ERROR$2,\n  Z_BUF_ERROR: Z_BUF_ERROR$1,\n  Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1,\n  Z_FILTERED,\n  Z_HUFFMAN_ONLY,\n  Z_RLE,\n  Z_FIXED,\n  Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1,\n  Z_UNKNOWN,\n  Z_DEFLATED: Z_DEFLATED$2\n} = constants$1;\nconst MAX_MEM_LEVEL = 9;\nconst MAX_WBITS$1 = 15;\nconst DEF_MEM_LEVEL = 8;\nconst LENGTH_CODES = 29;\nconst LITERALS = 256;\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\nconst D_CODES = 30;\nconst BL_CODES = 19;\nconst HEAP_SIZE = 2 * L_CODES + 1;\nconst MAX_BITS = 15;\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1;\nconst PRESET_DICT = 32;\nconst INIT_STATE = 42;\nconst GZIP_STATE = 57;\nconst EXTRA_STATE = 69;\nconst NAME_STATE = 73;\nconst COMMENT_STATE = 91;\nconst HCRC_STATE = 103;\nconst BUSY_STATE = 113;\nconst FINISH_STATE = 666;\nconst BS_NEED_MORE = 1;\nconst BS_BLOCK_DONE = 2;\nconst BS_FINISH_STARTED = 3;\nconst BS_FINISH_DONE = 4;\nconst OS_CODE = 3;\nconst err = (strm, errorCode) => {\n  strm.msg = msg$2[errorCode];\n  return errorCode;\n};\nconst rank = (f) => {\n  return f * 2 - (f > 4 ? 9 : 0);\n};\nconst zero = (buf) => {\n  let len = buf.length;\n  while (--len >= 0) {\n    buf[len] = 0;\n  }\n};\nconst slide_hash = (s) => {\n  let n, m;\n  let p;\n  let wsize = s.w_size;\n  n = s.hash_size;\n  p = n;\n  do {\n    m = s.head[--p];\n    s.head[p] = m >= wsize ? m - wsize : 0;\n  } while (--n);\n  n = wsize;\n  p = n;\n  do {\n    m = s.prev[--p];\n    s.prev[p] = m >= wsize ? m - wsize : 0;\n  } while (--n);\n};\nlet HASH_ZLIB = (s, prev, data) => (prev << s.hash_shift ^ data) & s.hash_mask;\nlet HASH = HASH_ZLIB;\nconst flush_pending = (strm) => {\n  const s = strm.state;\n  let len = s.pending;\n  if (len > strm.avail_out) {\n    len = strm.avail_out;\n  }\n  if (len === 0) {\n    return;\n  }\n  strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n  strm.next_out += len;\n  s.pending_out += len;\n  strm.total_out += len;\n  strm.avail_out -= len;\n  s.pending -= len;\n  if (s.pending === 0) {\n    s.pending_out = 0;\n  }\n};\nconst flush_block_only = (s, last) => {\n  _tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last);\n  s.block_start = s.strstart;\n  flush_pending(s.strm);\n};\nconst put_byte = (s, b) => {\n  s.pending_buf[s.pending++] = b;\n};\nconst putShortMSB = (s, b) => {\n  s.pending_buf[s.pending++] = b >>> 8 & 255;\n  s.pending_buf[s.pending++] = b & 255;\n};\nconst read_buf = (strm, buf, start, size) => {\n  let len = strm.avail_in;\n  if (len > size) {\n    len = size;\n  }\n  if (len === 0) {\n    return 0;\n  }\n  strm.avail_in -= len;\n  buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n  if (strm.state.wrap === 1) {\n    strm.adler = adler32$1(strm.adler, buf, len, start);\n  } else if (strm.state.wrap === 2) {\n    strm.adler = crc32$1(strm.adler, buf, len, start);\n  }\n  strm.next_in += len;\n  strm.total_in += len;\n  return len;\n};\nconst longest_match = (s, cur_match) => {\n  let chain_length = s.max_chain_length;\n  let scan = s.strstart;\n  let match;\n  let len;\n  let best_len = s.prev_length;\n  let nice_match = s.nice_match;\n  const limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0;\n  const _win = s.window;\n  const wmask = s.w_mask;\n  const prev = s.prev;\n  const strend = s.strstart + MAX_MATCH;\n  let scan_end1 = _win[scan + best_len - 1];\n  let scan_end = _win[scan + best_len];\n  if (s.prev_length >= s.good_match) {\n    chain_length >>= 2;\n  }\n  if (nice_match > s.lookahead) {\n    nice_match = s.lookahead;\n  }\n  do {\n    match = cur_match;\n    if (_win[match + best_len] !== scan_end || _win[match + best_len - 1] !== scan_end1 || _win[match] !== _win[scan] || _win[++match] !== _win[scan + 1]) {\n      continue;\n    }\n    scan += 2;\n    match++;\n    do {\n    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && scan < strend);\n    len = MAX_MATCH - (strend - scan);\n    scan = strend - MAX_MATCH;\n    if (len > best_len) {\n      s.match_start = cur_match;\n      best_len = len;\n      if (len >= nice_match) {\n        break;\n      }\n      scan_end1 = _win[scan + best_len - 1];\n      scan_end = _win[scan + best_len];\n    }\n  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n  if (best_len <= s.lookahead) {\n    return best_len;\n  }\n  return s.lookahead;\n};\nconst fill_window = (s) => {\n  const _w_size = s.w_size;\n  let n, more, str;\n  do {\n    more = s.window_size - s.lookahead - s.strstart;\n    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n      s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0);\n      s.match_start -= _w_size;\n      s.strstart -= _w_size;\n      s.block_start -= _w_size;\n      if (s.insert > s.strstart) {\n        s.insert = s.strstart;\n      }\n      slide_hash(s);\n      more += _w_size;\n    }\n    if (s.strm.avail_in === 0) {\n      break;\n    }\n    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n    s.lookahead += n;\n    if (s.lookahead + s.insert >= MIN_MATCH) {\n      str = s.strstart - s.insert;\n      s.ins_h = s.window[str];\n      s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n      while (s.insert) {\n        s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n        s.prev[str & s.w_mask] = s.head[s.ins_h];\n        s.head[s.ins_h] = str;\n        str++;\n        s.insert--;\n        if (s.lookahead + s.insert < MIN_MATCH) {\n          break;\n        }\n      }\n    }\n  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n};\nconst deflate_stored = (s, flush) => {\n  let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5;\n  let len, left, have, last = 0;\n  let used = s.strm.avail_in;\n  do {\n    len = 65535;\n    have = s.bi_valid + 42 >> 3;\n    if (s.strm.avail_out < have) {\n      break;\n    }\n    have = s.strm.avail_out - have;\n    left = s.strstart - s.block_start;\n    if (len > left + s.strm.avail_in) {\n      len = left + s.strm.avail_in;\n    }\n    if (len > have) {\n      len = have;\n    }\n    if (len < min_block && (len === 0 && flush !== Z_FINISH$3 || flush === Z_NO_FLUSH$2 || len !== left + s.strm.avail_in)) {\n      break;\n    }\n    last = flush === Z_FINISH$3 && len === left + s.strm.avail_in ? 1 : 0;\n    _tr_stored_block(s, 0, 0, last);\n    s.pending_buf[s.pending - 4] = len;\n    s.pending_buf[s.pending - 3] = len >> 8;\n    s.pending_buf[s.pending - 2] = ~len;\n    s.pending_buf[s.pending - 1] = ~len >> 8;\n    flush_pending(s.strm);\n    if (left) {\n      if (left > len) {\n        left = len;\n      }\n      s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out);\n      s.strm.next_out += left;\n      s.strm.avail_out -= left;\n      s.strm.total_out += left;\n      s.block_start += left;\n      len -= left;\n    }\n    if (len) {\n      read_buf(s.strm, s.strm.output, s.strm.next_out, len);\n      s.strm.next_out += len;\n      s.strm.avail_out -= len;\n      s.strm.total_out += len;\n    }\n  } while (last === 0);\n  used -= s.strm.avail_in;\n  if (used) {\n    if (used >= s.w_size) {\n      s.matches = 2;\n      s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);\n      s.strstart = s.w_size;\n      s.insert = s.strstart;\n    } else {\n      if (s.window_size - s.strstart <= used) {\n        s.strstart -= s.w_size;\n        s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n        if (s.matches < 2) {\n          s.matches++;\n        }\n        if (s.insert > s.strstart) {\n          s.insert = s.strstart;\n        }\n      }\n      s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);\n      s.strstart += used;\n      s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;\n    }\n    s.block_start = s.strstart;\n  }\n  if (s.high_water < s.strstart) {\n    s.high_water = s.strstart;\n  }\n  if (last) {\n    return BS_FINISH_DONE;\n  }\n  if (flush !== Z_NO_FLUSH$2 && flush !== Z_FINISH$3 && s.strm.avail_in === 0 && s.strstart === s.block_start) {\n    return BS_BLOCK_DONE;\n  }\n  have = s.window_size - s.strstart;\n  if (s.strm.avail_in > have && s.block_start >= s.w_size) {\n    s.block_start -= s.w_size;\n    s.strstart -= s.w_size;\n    s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n    if (s.matches < 2) {\n      s.matches++;\n    }\n    have += s.w_size;\n    if (s.insert > s.strstart) {\n      s.insert = s.strstart;\n    }\n  }\n  if (have > s.strm.avail_in) {\n    have = s.strm.avail_in;\n  }\n  if (have) {\n    read_buf(s.strm, s.window, s.strstart, have);\n    s.strstart += have;\n    s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;\n  }\n  if (s.high_water < s.strstart) {\n    s.high_water = s.strstart;\n  }\n  have = s.bi_valid + 42 >> 3;\n  have = s.pending_buf_size - have > 65535 ? 65535 : s.pending_buf_size - have;\n  min_block = have > s.w_size ? s.w_size : have;\n  left = s.strstart - s.block_start;\n  if (left >= min_block || (left || flush === Z_FINISH$3) && flush !== Z_NO_FLUSH$2 && s.strm.avail_in === 0 && left <= have) {\n    len = left > have ? have : left;\n    last = flush === Z_FINISH$3 && s.strm.avail_in === 0 && len === left ? 1 : 0;\n    _tr_stored_block(s, s.block_start, len, last);\n    s.block_start += len;\n    flush_pending(s.strm);\n  }\n  return last ? BS_FINISH_STARTED : BS_NEED_MORE;\n};\nconst deflate_fast = (s, flush) => {\n  let hash_head;\n  let bflush;\n  for (; ; ) {\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break;\n      }\n    }\n    hash_head = 0;\n    if (s.lookahead >= MIN_MATCH) {\n      s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n    }\n    if (hash_head !== 0 && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) {\n      s.match_length = longest_match(s, hash_head);\n    }\n    if (s.match_length >= MIN_MATCH) {\n      bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n      s.lookahead -= s.match_length;\n      if (s.match_length <= s.max_lazy_match && s.lookahead >= MIN_MATCH) {\n        s.match_length--;\n        do {\n          s.strstart++;\n          s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n        } while (--s.match_length !== 0);\n        s.strstart++;\n      } else {\n        s.strstart += s.match_length;\n        s.match_length = 0;\n        s.ins_h = s.window[s.strstart];\n        s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n      }\n    } else {\n      bflush = _tr_tally(s, 0, s.window[s.strstart]);\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    }\n  }\n  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n  if (flush === Z_FINISH$3) {\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n  }\n  return BS_BLOCK_DONE;\n};\nconst deflate_slow = (s, flush) => {\n  let hash_head;\n  let bflush;\n  let max_insert;\n  for (; ; ) {\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break;\n      }\n    }\n    hash_head = 0;\n    if (s.lookahead >= MIN_MATCH) {\n      s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n    }\n    s.prev_length = s.match_length;\n    s.prev_match = s.match_start;\n    s.match_length = MIN_MATCH - 1;\n    if (hash_head !== 0 && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) {\n      s.match_length = longest_match(s, hash_head);\n      if (s.match_length <= 5 && (s.strategy === Z_FILTERED || s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096)) {\n        s.match_length = MIN_MATCH - 1;\n      }\n    }\n    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n      max_insert = s.strstart + s.lookahead - MIN_MATCH;\n      bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n      s.lookahead -= s.prev_length - 1;\n      s.prev_length -= 2;\n      do {\n        if (++s.strstart <= max_insert) {\n          s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n        }\n      } while (--s.prev_length !== 0);\n      s.match_available = 0;\n      s.match_length = MIN_MATCH - 1;\n      s.strstart++;\n      if (bflush) {\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n      }\n    } else if (s.match_available) {\n      bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n      if (bflush) {\n        flush_block_only(s, false);\n      }\n      s.strstart++;\n      s.lookahead--;\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    } else {\n      s.match_available = 1;\n      s.strstart++;\n      s.lookahead--;\n    }\n  }\n  if (s.match_available) {\n    bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n    s.match_available = 0;\n  }\n  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n  if (flush === Z_FINISH$3) {\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n  }\n  return BS_BLOCK_DONE;\n};\nconst deflate_rle = (s, flush) => {\n  let bflush;\n  let prev;\n  let scan, strend;\n  const _win = s.window;\n  for (; ; ) {\n    if (s.lookahead <= MAX_MATCH) {\n      fill_window(s);\n      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break;\n      }\n    }\n    s.match_length = 0;\n    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n      scan = s.strstart - 1;\n      prev = _win[scan];\n      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n        strend = s.strstart + MAX_MATCH;\n        do {\n        } while (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && scan < strend);\n        s.match_length = MAX_MATCH - (strend - scan);\n        if (s.match_length > s.lookahead) {\n          s.match_length = s.lookahead;\n        }\n      }\n    }\n    if (s.match_length >= MIN_MATCH) {\n      bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n      s.lookahead -= s.match_length;\n      s.strstart += s.match_length;\n      s.match_length = 0;\n    } else {\n      bflush = _tr_tally(s, 0, s.window[s.strstart]);\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH$3) {\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n  }\n  return BS_BLOCK_DONE;\n};\nconst deflate_huff = (s, flush) => {\n  let bflush;\n  for (; ; ) {\n    if (s.lookahead === 0) {\n      fill_window(s);\n      if (s.lookahead === 0) {\n        if (flush === Z_NO_FLUSH$2) {\n          return BS_NEED_MORE;\n        }\n        break;\n      }\n    }\n    s.match_length = 0;\n    bflush = _tr_tally(s, 0, s.window[s.strstart]);\n    s.lookahead--;\n    s.strstart++;\n    if (bflush) {\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH$3) {\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n  }\n  return BS_BLOCK_DONE;\n};\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n  this.good_length = good_length;\n  this.max_lazy = max_lazy;\n  this.nice_length = nice_length;\n  this.max_chain = max_chain;\n  this.func = func;\n}\nconst configuration_table = [\n  new Config(0, 0, 0, 0, deflate_stored),\n  new Config(4, 4, 8, 4, deflate_fast),\n  new Config(4, 5, 16, 8, deflate_fast),\n  new Config(4, 6, 32, 32, deflate_fast),\n  new Config(4, 4, 16, 16, deflate_slow),\n  new Config(8, 16, 32, 32, deflate_slow),\n  new Config(8, 16, 128, 128, deflate_slow),\n  new Config(8, 32, 128, 256, deflate_slow),\n  new Config(32, 128, 258, 1024, deflate_slow),\n  new Config(32, 258, 258, 4096, deflate_slow)\n];\nconst lm_init = (s) => {\n  s.window_size = 2 * s.w_size;\n  zero(s.head);\n  s.max_lazy_match = configuration_table[s.level].max_lazy;\n  s.good_match = configuration_table[s.level].good_length;\n  s.nice_match = configuration_table[s.level].nice_length;\n  s.max_chain_length = configuration_table[s.level].max_chain;\n  s.strstart = 0;\n  s.block_start = 0;\n  s.lookahead = 0;\n  s.insert = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  s.ins_h = 0;\n};\nfunction DeflateState() {\n  this.strm = null;\n  this.status = 0;\n  this.pending_buf = null;\n  this.pending_buf_size = 0;\n  this.pending_out = 0;\n  this.pending = 0;\n  this.wrap = 0;\n  this.gzhead = null;\n  this.gzindex = 0;\n  this.method = Z_DEFLATED$2;\n  this.last_flush = -1;\n  this.w_size = 0;\n  this.w_bits = 0;\n  this.w_mask = 0;\n  this.window = null;\n  this.window_size = 0;\n  this.prev = null;\n  this.head = null;\n  this.ins_h = 0;\n  this.hash_size = 0;\n  this.hash_bits = 0;\n  this.hash_mask = 0;\n  this.hash_shift = 0;\n  this.block_start = 0;\n  this.match_length = 0;\n  this.prev_match = 0;\n  this.match_available = 0;\n  this.strstart = 0;\n  this.match_start = 0;\n  this.lookahead = 0;\n  this.prev_length = 0;\n  this.max_chain_length = 0;\n  this.max_lazy_match = 0;\n  this.level = 0;\n  this.strategy = 0;\n  this.good_match = 0;\n  this.nice_match = 0;\n  this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2);\n  this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2);\n  this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2);\n  zero(this.dyn_ltree);\n  zero(this.dyn_dtree);\n  zero(this.bl_tree);\n  this.l_desc = null;\n  this.d_desc = null;\n  this.bl_desc = null;\n  this.bl_count = new Uint16Array(MAX_BITS + 1);\n  this.heap = new Uint16Array(2 * L_CODES + 1);\n  zero(this.heap);\n  this.heap_len = 0;\n  this.heap_max = 0;\n  this.depth = new Uint16Array(2 * L_CODES + 1);\n  zero(this.depth);\n  this.sym_buf = 0;\n  this.lit_bufsize = 0;\n  this.sym_next = 0;\n  this.sym_end = 0;\n  this.opt_len = 0;\n  this.static_len = 0;\n  this.matches = 0;\n  this.insert = 0;\n  this.bi_buf = 0;\n  this.bi_valid = 0;\n}\nconst deflateStateCheck = (strm) => {\n  if (!strm) {\n    return 1;\n  }\n  const s = strm.state;\n  if (!s || s.strm !== strm || s.status !== INIT_STATE && s.status !== GZIP_STATE && s.status !== EXTRA_STATE && s.status !== NAME_STATE && s.status !== COMMENT_STATE && s.status !== HCRC_STATE && s.status !== BUSY_STATE && s.status !== FINISH_STATE) {\n    return 1;\n  }\n  return 0;\n};\nconst deflateResetKeep = (strm) => {\n  if (deflateStateCheck(strm)) {\n    return err(strm, Z_STREAM_ERROR$2);\n  }\n  strm.total_in = strm.total_out = 0;\n  strm.data_type = Z_UNKNOWN;\n  const s = strm.state;\n  s.pending = 0;\n  s.pending_out = 0;\n  if (s.wrap < 0) {\n    s.wrap = -s.wrap;\n  }\n  s.status = s.wrap === 2 ? GZIP_STATE : s.wrap ? INIT_STATE : BUSY_STATE;\n  strm.adler = s.wrap === 2 ? 0 : 1;\n  s.last_flush = -2;\n  _tr_init(s);\n  return Z_OK$3;\n};\nconst deflateReset = (strm) => {\n  const ret = deflateResetKeep(strm);\n  if (ret === Z_OK$3) {\n    lm_init(strm.state);\n  }\n  return ret;\n};\nconst deflateSetHeader = (strm, head) => {\n  if (deflateStateCheck(strm) || strm.state.wrap !== 2) {\n    return Z_STREAM_ERROR$2;\n  }\n  strm.state.gzhead = head;\n  return Z_OK$3;\n};\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n  if (!strm) {\n    return Z_STREAM_ERROR$2;\n  }\n  let wrap = 1;\n  if (level === Z_DEFAULT_COMPRESSION$1) {\n    level = 6;\n  }\n  if (windowBits < 0) {\n    wrap = 0;\n    windowBits = -windowBits;\n  } else if (windowBits > 15) {\n    wrap = 2;\n    windowBits -= 16;\n  }\n  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED || windowBits === 8 && wrap !== 1) {\n    return err(strm, Z_STREAM_ERROR$2);\n  }\n  if (windowBits === 8) {\n    windowBits = 9;\n  }\n  const s = new DeflateState();\n  strm.state = s;\n  s.strm = strm;\n  s.status = INIT_STATE;\n  s.wrap = wrap;\n  s.gzhead = null;\n  s.w_bits = windowBits;\n  s.w_size = 1 << s.w_bits;\n  s.w_mask = s.w_size - 1;\n  s.hash_bits = memLevel + 7;\n  s.hash_size = 1 << s.hash_bits;\n  s.hash_mask = s.hash_size - 1;\n  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n  s.window = new Uint8Array(s.w_size * 2);\n  s.head = new Uint16Array(s.hash_size);\n  s.prev = new Uint16Array(s.w_size);\n  s.lit_bufsize = 1 << memLevel + 6;\n  s.pending_buf_size = s.lit_bufsize * 4;\n  s.pending_buf = new Uint8Array(s.pending_buf_size);\n  s.sym_buf = s.lit_bufsize;\n  s.sym_end = (s.lit_bufsize - 1) * 3;\n  s.level = level;\n  s.strategy = strategy;\n  s.method = method;\n  return deflateReset(strm);\n};\nconst deflateInit = (strm, level) => {\n  return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1);\n};\nconst deflate$2 = (strm, flush) => {\n  if (deflateStateCheck(strm) || flush > Z_BLOCK$1 || flush < 0) {\n    return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2;\n  }\n  const s = strm.state;\n  if (!strm.output || strm.avail_in !== 0 && !strm.input || s.status === FINISH_STATE && flush !== Z_FINISH$3) {\n    return err(strm, strm.avail_out === 0 ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2);\n  }\n  const old_flush = s.last_flush;\n  s.last_flush = flush;\n  if (s.pending !== 0) {\n    flush_pending(strm);\n    if (strm.avail_out === 0) {\n      s.last_flush = -1;\n      return Z_OK$3;\n    }\n  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && flush !== Z_FINISH$3) {\n    return err(strm, Z_BUF_ERROR$1);\n  }\n  if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n    return err(strm, Z_BUF_ERROR$1);\n  }\n  if (s.status === INIT_STATE && s.wrap === 0) {\n    s.status = BUSY_STATE;\n  }\n  if (s.status === INIT_STATE) {\n    let header = Z_DEFLATED$2 + (s.w_bits - 8 << 4) << 8;\n    let level_flags = -1;\n    if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n      level_flags = 0;\n    } else if (s.level < 6) {\n      level_flags = 1;\n    } else if (s.level === 6) {\n      level_flags = 2;\n    } else {\n      level_flags = 3;\n    }\n    header |= level_flags << 6;\n    if (s.strstart !== 0) {\n      header |= PRESET_DICT;\n    }\n    header += 31 - header % 31;\n    putShortMSB(s, header);\n    if (s.strstart !== 0) {\n      putShortMSB(s, strm.adler >>> 16);\n      putShortMSB(s, strm.adler & 65535);\n    }\n    strm.adler = 1;\n    s.status = BUSY_STATE;\n    flush_pending(strm);\n    if (s.pending !== 0) {\n      s.last_flush = -1;\n      return Z_OK$3;\n    }\n  }\n  if (s.status === GZIP_STATE) {\n    strm.adler = 0;\n    put_byte(s, 31);\n    put_byte(s, 139);\n    put_byte(s, 8);\n    if (!s.gzhead) {\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);\n      put_byte(s, OS_CODE);\n      s.status = BUSY_STATE;\n      flush_pending(strm);\n      if (s.pending !== 0) {\n        s.last_flush = -1;\n        return Z_OK$3;\n      }\n    } else {\n      put_byte(\n        s,\n        (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16)\n      );\n      put_byte(s, s.gzhead.time & 255);\n      put_byte(s, s.gzhead.time >> 8 & 255);\n      put_byte(s, s.gzhead.time >> 16 & 255);\n      put_byte(s, s.gzhead.time >> 24 & 255);\n      put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);\n      put_byte(s, s.gzhead.os & 255);\n      if (s.gzhead.extra && s.gzhead.extra.length) {\n        put_byte(s, s.gzhead.extra.length & 255);\n        put_byte(s, s.gzhead.extra.length >> 8 & 255);\n      }\n      if (s.gzhead.hcrc) {\n        strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending, 0);\n      }\n      s.gzindex = 0;\n      s.status = EXTRA_STATE;\n    }\n  }\n  if (s.status === EXTRA_STATE) {\n    if (s.gzhead.extra) {\n      let beg = s.pending;\n      let left = (s.gzhead.extra.length & 65535) - s.gzindex;\n      while (s.pending + left > s.pending_buf_size) {\n        let copy = s.pending_buf_size - s.pending;\n        s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending);\n        s.pending = s.pending_buf_size;\n        if (s.gzhead.hcrc && s.pending > beg) {\n          strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending - beg, beg);\n        }\n        s.gzindex += copy;\n        flush_pending(strm);\n        if (s.pending !== 0) {\n          s.last_flush = -1;\n          return Z_OK$3;\n        }\n        beg = 0;\n        left -= copy;\n      }\n      let gzhead_extra = new Uint8Array(s.gzhead.extra);\n      s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending);\n      s.pending += left;\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      s.gzindex = 0;\n    }\n    s.status = NAME_STATE;\n  }\n  if (s.status === NAME_STATE) {\n    if (s.gzhead.name) {\n      let beg = s.pending;\n      let val;\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          if (s.pending !== 0) {\n            s.last_flush = -1;\n            return Z_OK$3;\n          }\n          beg = 0;\n        }\n        if (s.gzindex < s.gzhead.name.length) {\n          val = s.gzhead.name.charCodeAt(s.gzindex++) & 255;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      s.gzindex = 0;\n    }\n    s.status = COMMENT_STATE;\n  }\n  if (s.status === COMMENT_STATE) {\n    if (s.gzhead.comment) {\n      let beg = s.pending;\n      let val;\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          if (s.pending !== 0) {\n            s.last_flush = -1;\n            return Z_OK$3;\n          }\n          beg = 0;\n        }\n        if (s.gzindex < s.gzhead.comment.length) {\n          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 255;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n    }\n    s.status = HCRC_STATE;\n  }\n  if (s.status === HCRC_STATE) {\n    if (s.gzhead.hcrc) {\n      if (s.pending + 2 > s.pending_buf_size) {\n        flush_pending(strm);\n        if (s.pending !== 0) {\n          s.last_flush = -1;\n          return Z_OK$3;\n        }\n      }\n      put_byte(s, strm.adler & 255);\n      put_byte(s, strm.adler >> 8 & 255);\n      strm.adler = 0;\n    }\n    s.status = BUSY_STATE;\n    flush_pending(strm);\n    if (s.pending !== 0) {\n      s.last_flush = -1;\n      return Z_OK$3;\n    }\n  }\n  if (strm.avail_in !== 0 || s.lookahead !== 0 || flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE) {\n    let bstate = s.level === 0 ? deflate_stored(s, flush) : s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : s.strategy === Z_RLE ? deflate_rle(s, flush) : configuration_table[s.level].func(s, flush);\n    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n      s.status = FINISH_STATE;\n    }\n    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n      if (strm.avail_out === 0) {\n        s.last_flush = -1;\n      }\n      return Z_OK$3;\n    }\n    if (bstate === BS_BLOCK_DONE) {\n      if (flush === Z_PARTIAL_FLUSH) {\n        _tr_align(s);\n      } else if (flush !== Z_BLOCK$1) {\n        _tr_stored_block(s, 0, 0, false);\n        if (flush === Z_FULL_FLUSH$1) {\n          zero(s.head);\n          if (s.lookahead === 0) {\n            s.strstart = 0;\n            s.block_start = 0;\n            s.insert = 0;\n          }\n        }\n      }\n      flush_pending(strm);\n      if (strm.avail_out === 0) {\n        s.last_flush = -1;\n        return Z_OK$3;\n      }\n    }\n  }\n  if (flush !== Z_FINISH$3) {\n    return Z_OK$3;\n  }\n  if (s.wrap <= 0) {\n    return Z_STREAM_END$3;\n  }\n  if (s.wrap === 2) {\n    put_byte(s, strm.adler & 255);\n    put_byte(s, strm.adler >> 8 & 255);\n    put_byte(s, strm.adler >> 16 & 255);\n    put_byte(s, strm.adler >> 24 & 255);\n    put_byte(s, strm.total_in & 255);\n    put_byte(s, strm.total_in >> 8 & 255);\n    put_byte(s, strm.total_in >> 16 & 255);\n    put_byte(s, strm.total_in >> 24 & 255);\n  } else {\n    putShortMSB(s, strm.adler >>> 16);\n    putShortMSB(s, strm.adler & 65535);\n  }\n  flush_pending(strm);\n  if (s.wrap > 0) {\n    s.wrap = -s.wrap;\n  }\n  return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3;\n};\nconst deflateEnd = (strm) => {\n  if (deflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$2;\n  }\n  const status = strm.state.status;\n  strm.state = null;\n  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3;\n};\nconst deflateSetDictionary = (strm, dictionary) => {\n  let dictLength = dictionary.length;\n  if (deflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$2;\n  }\n  const s = strm.state;\n  const wrap = s.wrap;\n  if (wrap === 2 || wrap === 1 && s.status !== INIT_STATE || s.lookahead) {\n    return Z_STREAM_ERROR$2;\n  }\n  if (wrap === 1) {\n    strm.adler = adler32$1(strm.adler, dictionary, dictLength, 0);\n  }\n  s.wrap = 0;\n  if (dictLength >= s.w_size) {\n    if (wrap === 0) {\n      zero(s.head);\n      s.strstart = 0;\n      s.block_start = 0;\n      s.insert = 0;\n    }\n    let tmpDict = new Uint8Array(s.w_size);\n    tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n    dictionary = tmpDict;\n    dictLength = s.w_size;\n  }\n  const avail = strm.avail_in;\n  const next = strm.next_in;\n  const input = strm.input;\n  strm.avail_in = dictLength;\n  strm.next_in = 0;\n  strm.input = dictionary;\n  fill_window(s);\n  while (s.lookahead >= MIN_MATCH) {\n    let str = s.strstart;\n    let n = s.lookahead - (MIN_MATCH - 1);\n    do {\n      s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n      s.prev[str & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = str;\n      str++;\n    } while (--n);\n    s.strstart = str;\n    s.lookahead = MIN_MATCH - 1;\n    fill_window(s);\n  }\n  s.strstart += s.lookahead;\n  s.block_start = s.strstart;\n  s.insert = s.lookahead;\n  s.lookahead = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  strm.next_in = next;\n  strm.input = input;\n  strm.avail_in = avail;\n  s.wrap = wrap;\n  return Z_OK$3;\n};\ndeflate$3.deflateInit = deflateInit;\ndeflate$3.deflateInit2 = deflateInit2;\ndeflate$3.deflateReset = deflateReset;\ndeflate$3.deflateResetKeep = deflateResetKeep;\ndeflate$3.deflateSetHeader = deflateSetHeader;\ndeflate$3.deflate = deflate$2;\ndeflate$3.deflateEnd = deflateEnd;\ndeflate$3.deflateSetDictionary = deflateSetDictionary;\ndeflate$3.deflateInfo = \"pako deflate (from Nodeca project)\";\nvar common = {};\nconst _has = (obj, key) => {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n};\ncommon.assign = function(obj) {\n  const sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    const source = sources.shift();\n    if (!source) {\n      continue;\n    }\n    if (typeof source !== \"object\") {\n      throw new TypeError(source + \"must be non-object\");\n    }\n    for (const p in source) {\n      if (_has(source, p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n  return obj;\n};\ncommon.flattenChunks = (chunks) => {\n  let len = 0;\n  for (let i = 0, l = chunks.length; i < l; i++) {\n    len += chunks[i].length;\n  }\n  const result = new Uint8Array(len);\n  for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n    let chunk = chunks[i];\n    result.set(chunk, pos);\n    pos += chunk.length;\n  }\n  return result;\n};\nvar strings$2 = {};\nlet STR_APPLY_UIA_OK = true;\ntry {\n  String.fromCharCode.apply(null, new Uint8Array(1));\n} catch (__) {\n  STR_APPLY_UIA_OK = false;\n}\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n  _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1;\n}\n_utf8len[254] = _utf8len[254] = 1;\nstrings$2.string2buf = (str) => {\n  if (typeof TextEncoder === \"function\" && TextEncoder.prototype.encode) {\n    return new TextEncoder().encode(str);\n  }\n  let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n  for (m_pos = 0; m_pos < str_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 64512) === 55296 && m_pos + 1 < str_len) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 64512) === 56320) {\n        c = 65536 + (c - 55296 << 10) + (c2 - 56320);\n        m_pos++;\n      }\n    }\n    buf_len += c < 128 ? 1 : c < 2048 ? 2 : c < 65536 ? 3 : 4;\n  }\n  buf = new Uint8Array(buf_len);\n  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 64512) === 55296 && m_pos + 1 < str_len) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 64512) === 56320) {\n        c = 65536 + (c - 55296 << 10) + (c2 - 56320);\n        m_pos++;\n      }\n    }\n    if (c < 128) {\n      buf[i++] = c;\n    } else if (c < 2048) {\n      buf[i++] = 192 | c >>> 6;\n      buf[i++] = 128 | c & 63;\n    } else if (c < 65536) {\n      buf[i++] = 224 | c >>> 12;\n      buf[i++] = 128 | c >>> 6 & 63;\n      buf[i++] = 128 | c & 63;\n    } else {\n      buf[i++] = 240 | c >>> 18;\n      buf[i++] = 128 | c >>> 12 & 63;\n      buf[i++] = 128 | c >>> 6 & 63;\n      buf[i++] = 128 | c & 63;\n    }\n  }\n  return buf;\n};\nconst buf2binstring = (buf, len) => {\n  if (len < 65534) {\n    if (buf.subarray && STR_APPLY_UIA_OK) {\n      return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n    }\n  }\n  let result = \"\";\n  for (let i = 0; i < len; i++) {\n    result += String.fromCharCode(buf[i]);\n  }\n  return result;\n};\nstrings$2.buf2string = (buf, max) => {\n  const len = max || buf.length;\n  if (typeof TextDecoder === \"function\" && TextDecoder.prototype.decode) {\n    return new TextDecoder().decode(buf.subarray(0, max));\n  }\n  let i, out;\n  const utf16buf = new Array(len * 2);\n  for (out = 0, i = 0; i < len; ) {\n    let c = buf[i++];\n    if (c < 128) {\n      utf16buf[out++] = c;\n      continue;\n    }\n    let c_len = _utf8len[c];\n    if (c_len > 4) {\n      utf16buf[out++] = 65533;\n      i += c_len - 1;\n      continue;\n    }\n    c &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7;\n    while (c_len > 1 && i < len) {\n      c = c << 6 | buf[i++] & 63;\n      c_len--;\n    }\n    if (c_len > 1) {\n      utf16buf[out++] = 65533;\n      continue;\n    }\n    if (c < 65536) {\n      utf16buf[out++] = c;\n    } else {\n      c -= 65536;\n      utf16buf[out++] = 55296 | c >> 10 & 1023;\n      utf16buf[out++] = 56320 | c & 1023;\n    }\n  }\n  return buf2binstring(utf16buf, out);\n};\nstrings$2.utf8border = (buf, max) => {\n  max = max || buf.length;\n  if (max > buf.length) {\n    max = buf.length;\n  }\n  let pos = max - 1;\n  while (pos >= 0 && (buf[pos] & 192) === 128) {\n    pos--;\n  }\n  if (pos < 0) {\n    return max;\n  }\n  if (pos === 0) {\n    return max;\n  }\n  return pos + _utf8len[buf[pos]] > max ? pos : max;\n};\nfunction ZStream$2() {\n  this.input = null;\n  this.next_in = 0;\n  this.avail_in = 0;\n  this.total_in = 0;\n  this.output = null;\n  this.next_out = 0;\n  this.avail_out = 0;\n  this.total_out = 0;\n  this.msg = \"\";\n  this.state = null;\n  this.data_type = 2;\n  this.adler = 0;\n}\nvar zstream = ZStream$2;\nconst zlib_deflate = deflate$3;\nconst utils$1 = common;\nconst strings$1 = strings$2;\nconst msg$1 = messages;\nconst ZStream$1 = zstream;\nconst toString$1 = Object.prototype.toString;\nconst {\n  Z_NO_FLUSH: Z_NO_FLUSH$1,\n  Z_SYNC_FLUSH,\n  Z_FULL_FLUSH,\n  Z_FINISH: Z_FINISH$2,\n  Z_OK: Z_OK$2,\n  Z_STREAM_END: Z_STREAM_END$2,\n  Z_DEFAULT_COMPRESSION,\n  Z_DEFAULT_STRATEGY,\n  Z_DEFLATED: Z_DEFLATED$1\n} = constants$1;\nfunction Deflate$1(options) {\n  this.options = utils$1.assign({\n    level: Z_DEFAULT_COMPRESSION,\n    method: Z_DEFLATED$1,\n    chunkSize: 16384,\n    windowBits: 15,\n    memLevel: 8,\n    strategy: Z_DEFAULT_STRATEGY\n  }, options || {});\n  let opt = this.options;\n  if (opt.raw && opt.windowBits > 0) {\n    opt.windowBits = -opt.windowBits;\n  } else if (opt.gzip && opt.windowBits > 0 && opt.windowBits < 16) {\n    opt.windowBits += 16;\n  }\n  this.err = 0;\n  this.msg = \"\";\n  this.ended = false;\n  this.chunks = [];\n  this.strm = new ZStream$1();\n  this.strm.avail_out = 0;\n  let status = zlib_deflate.deflateInit2(\n    this.strm,\n    opt.level,\n    opt.method,\n    opt.windowBits,\n    opt.memLevel,\n    opt.strategy\n  );\n  if (status !== Z_OK$2) {\n    throw new Error(msg$1[status]);\n  }\n  if (opt.header) {\n    zlib_deflate.deflateSetHeader(this.strm, opt.header);\n  }\n  if (opt.dictionary) {\n    let dict;\n    if (typeof opt.dictionary === \"string\") {\n      dict = strings$1.string2buf(opt.dictionary);\n    } else if (toString$1.call(opt.dictionary) === \"[object ArrayBuffer]\") {\n      dict = new Uint8Array(opt.dictionary);\n    } else {\n      dict = opt.dictionary;\n    }\n    status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n    if (status !== Z_OK$2) {\n      throw new Error(msg$1[status]);\n    }\n    this._dict_set = true;\n  }\n}\nDeflate$1.prototype.push = function(data, flush_mode) {\n  const strm = this.strm;\n  const chunkSize = this.options.chunkSize;\n  let status, _flush_mode;\n  if (this.ended) {\n    return false;\n  }\n  if (flush_mode === ~~flush_mode)\n    _flush_mode = flush_mode;\n  else\n    _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1;\n  if (typeof data === \"string\") {\n    strm.input = strings$1.string2buf(data);\n  } else if (toString$1.call(data) === \"[object ArrayBuffer]\") {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n  for (; ; ) {\n    if (strm.avail_out === 0) {\n      strm.output = new Uint8Array(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n    if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n      this.onData(strm.output.subarray(0, strm.next_out));\n      strm.avail_out = 0;\n      continue;\n    }\n    status = zlib_deflate.deflate(strm, _flush_mode);\n    if (status === Z_STREAM_END$2) {\n      if (strm.next_out > 0) {\n        this.onData(strm.output.subarray(0, strm.next_out));\n      }\n      status = zlib_deflate.deflateEnd(this.strm);\n      this.onEnd(status);\n      this.ended = true;\n      return status === Z_OK$2;\n    }\n    if (strm.avail_out === 0) {\n      this.onData(strm.output);\n      continue;\n    }\n    if (_flush_mode > 0 && strm.next_out > 0) {\n      this.onData(strm.output.subarray(0, strm.next_out));\n      strm.avail_out = 0;\n      continue;\n    }\n    if (strm.avail_in === 0)\n      break;\n  }\n  return true;\n};\nDeflate$1.prototype.onData = function(chunk) {\n  this.chunks.push(chunk);\n};\nDeflate$1.prototype.onEnd = function(status) {\n  if (status === Z_OK$2) {\n    this.result = utils$1.flattenChunks(this.chunks);\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\nfunction deflate$1(input, options) {\n  const deflator = new Deflate$1(options);\n  deflator.push(input, true);\n  if (deflator.err) {\n    throw deflator.msg || msg$1[deflator.err];\n  }\n  return deflator.result;\n}\nfunction deflateRaw$1(input, options) {\n  options = options || {};\n  options.raw = true;\n  return deflate$1(input, options);\n}\nfunction gzip$1(input, options) {\n  options = options || {};\n  options.gzip = true;\n  return deflate$1(input, options);\n}\ndeflate$4.Deflate = Deflate$1;\ndeflate$4.deflate = deflate$1;\ndeflate$4.deflateRaw = deflateRaw$1;\ndeflate$4.gzip = gzip$1;\ndeflate$4.constants = constants$1;\nvar inflate$4 = {};\nvar inflate$3 = {};\nconst BAD$1 = 16209;\nconst TYPE$1 = 16191;\nvar inffast = function inflate_fast(strm, start) {\n  let _in;\n  let last;\n  let _out;\n  let beg;\n  let end;\n  let dmax;\n  let wsize;\n  let whave;\n  let wnext;\n  let s_window;\n  let hold;\n  let bits;\n  let lcode;\n  let dcode;\n  let lmask;\n  let dmask;\n  let here;\n  let op;\n  let len;\n  let dist2;\n  let from;\n  let from_source;\n  let input, output;\n  const state = strm.state;\n  _in = strm.next_in;\n  input = strm.input;\n  last = _in + (strm.avail_in - 5);\n  _out = strm.next_out;\n  output = strm.output;\n  beg = _out - (start - strm.avail_out);\n  end = _out + (strm.avail_out - 257);\n  dmax = state.dmax;\n  wsize = state.wsize;\n  whave = state.whave;\n  wnext = state.wnext;\n  s_window = state.window;\n  hold = state.hold;\n  bits = state.bits;\n  lcode = state.lencode;\n  dcode = state.distcode;\n  lmask = (1 << state.lenbits) - 1;\n  dmask = (1 << state.distbits) - 1;\n  top:\n    do {\n      if (bits < 15) {\n        hold += input[_in++] << bits;\n        bits += 8;\n        hold += input[_in++] << bits;\n        bits += 8;\n      }\n      here = lcode[hold & lmask];\n      dolen:\n        for (; ; ) {\n          op = here >>> 24;\n          hold >>>= op;\n          bits -= op;\n          op = here >>> 16 & 255;\n          if (op === 0) {\n            output[_out++] = here & 65535;\n          } else if (op & 16) {\n            len = here & 65535;\n            op &= 15;\n            if (op) {\n              if (bits < op) {\n                hold += input[_in++] << bits;\n                bits += 8;\n              }\n              len += hold & (1 << op) - 1;\n              hold >>>= op;\n              bits -= op;\n            }\n            if (bits < 15) {\n              hold += input[_in++] << bits;\n              bits += 8;\n              hold += input[_in++] << bits;\n              bits += 8;\n            }\n            here = dcode[hold & dmask];\n            dodist:\n              for (; ; ) {\n                op = here >>> 24;\n                hold >>>= op;\n                bits -= op;\n                op = here >>> 16 & 255;\n                if (op & 16) {\n                  dist2 = here & 65535;\n                  op &= 15;\n                  if (bits < op) {\n                    hold += input[_in++] << bits;\n                    bits += 8;\n                    if (bits < op) {\n                      hold += input[_in++] << bits;\n                      bits += 8;\n                    }\n                  }\n                  dist2 += hold & (1 << op) - 1;\n                  if (dist2 > dmax) {\n                    strm.msg = \"invalid distance too far back\";\n                    state.mode = BAD$1;\n                    break top;\n                  }\n                  hold >>>= op;\n                  bits -= op;\n                  op = _out - beg;\n                  if (dist2 > op) {\n                    op = dist2 - op;\n                    if (op > whave) {\n                      if (state.sane) {\n                        strm.msg = \"invalid distance too far back\";\n                        state.mode = BAD$1;\n                        break top;\n                      }\n                    }\n                    from = 0;\n                    from_source = s_window;\n                    if (wnext === 0) {\n                      from += wsize - op;\n                      if (op < len) {\n                        len -= op;\n                        do {\n                          output[_out++] = s_window[from++];\n                        } while (--op);\n                        from = _out - dist2;\n                        from_source = output;\n                      }\n                    } else if (wnext < op) {\n                      from += wsize + wnext - op;\n                      op -= wnext;\n                      if (op < len) {\n                        len -= op;\n                        do {\n                          output[_out++] = s_window[from++];\n                        } while (--op);\n                        from = 0;\n                        if (wnext < len) {\n                          op = wnext;\n                          len -= op;\n                          do {\n                            output[_out++] = s_window[from++];\n                          } while (--op);\n                          from = _out - dist2;\n                          from_source = output;\n                        }\n                      }\n                    } else {\n                      from += wnext - op;\n                      if (op < len) {\n                        len -= op;\n                        do {\n                          output[_out++] = s_window[from++];\n                        } while (--op);\n                        from = _out - dist2;\n                        from_source = output;\n                      }\n                    }\n                    while (len > 2) {\n                      output[_out++] = from_source[from++];\n                      output[_out++] = from_source[from++];\n                      output[_out++] = from_source[from++];\n                      len -= 3;\n                    }\n                    if (len) {\n                      output[_out++] = from_source[from++];\n                      if (len > 1) {\n                        output[_out++] = from_source[from++];\n                      }\n                    }\n                  } else {\n                    from = _out - dist2;\n                    do {\n                      output[_out++] = output[from++];\n                      output[_out++] = output[from++];\n                      output[_out++] = output[from++];\n                      len -= 3;\n                    } while (len > 2);\n                    if (len) {\n                      output[_out++] = output[from++];\n                      if (len > 1) {\n                        output[_out++] = output[from++];\n                      }\n                    }\n                  }\n                } else if ((op & 64) === 0) {\n                  here = dcode[(here & 65535) + (hold & (1 << op) - 1)];\n                  continue dodist;\n                } else {\n                  strm.msg = \"invalid distance code\";\n                  state.mode = BAD$1;\n                  break top;\n                }\n                break;\n              }\n          } else if ((op & 64) === 0) {\n            here = lcode[(here & 65535) + (hold & (1 << op) - 1)];\n            continue dolen;\n          } else if (op & 32) {\n            state.mode = TYPE$1;\n            break top;\n          } else {\n            strm.msg = \"invalid literal/length code\";\n            state.mode = BAD$1;\n            break top;\n          }\n          break;\n        }\n    } while (_in < last && _out < end);\n  len = bits >> 3;\n  _in -= len;\n  bits -= len << 3;\n  hold &= (1 << bits) - 1;\n  strm.next_in = _in;\n  strm.next_out = _out;\n  strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last);\n  strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end);\n  state.hold = hold;\n  state.bits = bits;\n  return;\n};\nconst MAXBITS = 15;\nconst ENOUGH_LENS$1 = 852;\nconst ENOUGH_DISTS$1 = 592;\nconst CODES$1 = 0;\nconst LENS$1 = 1;\nconst DISTS$1 = 2;\nconst lbase = new Uint16Array([\n  3,\n  4,\n  5,\n  6,\n  7,\n  8,\n  9,\n  10,\n  11,\n  13,\n  15,\n  17,\n  19,\n  23,\n  27,\n  31,\n  35,\n  43,\n  51,\n  59,\n  67,\n  83,\n  99,\n  115,\n  131,\n  163,\n  195,\n  227,\n  258,\n  0,\n  0\n]);\nconst lext = new Uint8Array([\n  16,\n  16,\n  16,\n  16,\n  16,\n  16,\n  16,\n  16,\n  17,\n  17,\n  17,\n  17,\n  18,\n  18,\n  18,\n  18,\n  19,\n  19,\n  19,\n  19,\n  20,\n  20,\n  20,\n  20,\n  21,\n  21,\n  21,\n  21,\n  16,\n  72,\n  78\n]);\nconst dbase = new Uint16Array([\n  1,\n  2,\n  3,\n  4,\n  5,\n  7,\n  9,\n  13,\n  17,\n  25,\n  33,\n  49,\n  65,\n  97,\n  129,\n  193,\n  257,\n  385,\n  513,\n  769,\n  1025,\n  1537,\n  2049,\n  3073,\n  4097,\n  6145,\n  8193,\n  12289,\n  16385,\n  24577,\n  0,\n  0\n]);\nconst dext = new Uint8Array([\n  16,\n  16,\n  16,\n  16,\n  17,\n  17,\n  18,\n  18,\n  19,\n  19,\n  20,\n  20,\n  21,\n  21,\n  22,\n  22,\n  23,\n  23,\n  24,\n  24,\n  25,\n  25,\n  26,\n  26,\n  27,\n  27,\n  28,\n  28,\n  29,\n  29,\n  64,\n  64\n]);\nconst inflate_table$1 = (type, lens, lens_index, codes, table, table_index, work, opts) => {\n  const bits = opts.bits;\n  let len = 0;\n  let sym = 0;\n  let min = 0, max = 0;\n  let root = 0;\n  let curr = 0;\n  let drop = 0;\n  let left = 0;\n  let used = 0;\n  let huff = 0;\n  let incr;\n  let fill;\n  let low;\n  let mask;\n  let next;\n  let base = null;\n  let match;\n  const count = new Uint16Array(MAXBITS + 1);\n  const offs = new Uint16Array(MAXBITS + 1);\n  let extra = null;\n  let here_bits, here_op, here_val;\n  for (len = 0; len <= MAXBITS; len++) {\n    count[len] = 0;\n  }\n  for (sym = 0; sym < codes; sym++) {\n    count[lens[lens_index + sym]]++;\n  }\n  root = bits;\n  for (max = MAXBITS; max >= 1; max--) {\n    if (count[max] !== 0) {\n      break;\n    }\n  }\n  if (root > max) {\n    root = max;\n  }\n  if (max === 0) {\n    table[table_index++] = 1 << 24 | 64 << 16 | 0;\n    table[table_index++] = 1 << 24 | 64 << 16 | 0;\n    opts.bits = 1;\n    return 0;\n  }\n  for (min = 1; min < max; min++) {\n    if (count[min] !== 0) {\n      break;\n    }\n  }\n  if (root < min) {\n    root = min;\n  }\n  left = 1;\n  for (len = 1; len <= MAXBITS; len++) {\n    left <<= 1;\n    left -= count[len];\n    if (left < 0) {\n      return -1;\n    }\n  }\n  if (left > 0 && (type === CODES$1 || max !== 1)) {\n    return -1;\n  }\n  offs[1] = 0;\n  for (len = 1; len < MAXBITS; len++) {\n    offs[len + 1] = offs[len] + count[len];\n  }\n  for (sym = 0; sym < codes; sym++) {\n    if (lens[lens_index + sym] !== 0) {\n      work[offs[lens[lens_index + sym]]++] = sym;\n    }\n  }\n  if (type === CODES$1) {\n    base = extra = work;\n    match = 20;\n  } else if (type === LENS$1) {\n    base = lbase;\n    extra = lext;\n    match = 257;\n  } else {\n    base = dbase;\n    extra = dext;\n    match = 0;\n  }\n  huff = 0;\n  sym = 0;\n  len = min;\n  next = table_index;\n  curr = root;\n  drop = 0;\n  low = -1;\n  used = 1 << root;\n  mask = used - 1;\n  if (type === LENS$1 && used > ENOUGH_LENS$1 || type === DISTS$1 && used > ENOUGH_DISTS$1) {\n    return 1;\n  }\n  for (; ; ) {\n    here_bits = len - drop;\n    if (work[sym] + 1 < match) {\n      here_op = 0;\n      here_val = work[sym];\n    } else if (work[sym] >= match) {\n      here_op = extra[work[sym] - match];\n      here_val = base[work[sym] - match];\n    } else {\n      here_op = 32 + 64;\n      here_val = 0;\n    }\n    incr = 1 << len - drop;\n    fill = 1 << curr;\n    min = fill;\n    do {\n      fill -= incr;\n      table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0;\n    } while (fill !== 0);\n    incr = 1 << len - 1;\n    while (huff & incr) {\n      incr >>= 1;\n    }\n    if (incr !== 0) {\n      huff &= incr - 1;\n      huff += incr;\n    } else {\n      huff = 0;\n    }\n    sym++;\n    if (--count[len] === 0) {\n      if (len === max) {\n        break;\n      }\n      len = lens[lens_index + work[sym]];\n    }\n    if (len > root && (huff & mask) !== low) {\n      if (drop === 0) {\n        drop = root;\n      }\n      next += min;\n      curr = len - drop;\n      left = 1 << curr;\n      while (curr + drop < max) {\n        left -= count[curr + drop];\n        if (left <= 0) {\n          break;\n        }\n        curr++;\n        left <<= 1;\n      }\n      used += 1 << curr;\n      if (type === LENS$1 && used > ENOUGH_LENS$1 || type === DISTS$1 && used > ENOUGH_DISTS$1) {\n        return 1;\n      }\n      low = huff & mask;\n      table[low] = root << 24 | curr << 16 | next - table_index | 0;\n    }\n  }\n  if (huff !== 0) {\n    table[next + huff] = len - drop << 24 | 64 << 16 | 0;\n  }\n  opts.bits = root;\n  return 0;\n};\nvar inftrees = inflate_table$1;\nconst adler32 = adler32_1;\nconst crc32 = crc32_1;\nconst inflate_fast2 = inffast;\nconst inflate_table = inftrees;\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\nconst {\n  Z_FINISH: Z_FINISH$1,\n  Z_BLOCK,\n  Z_TREES,\n  Z_OK: Z_OK$1,\n  Z_STREAM_END: Z_STREAM_END$1,\n  Z_NEED_DICT: Z_NEED_DICT$1,\n  Z_STREAM_ERROR: Z_STREAM_ERROR$1,\n  Z_DATA_ERROR: Z_DATA_ERROR$1,\n  Z_MEM_ERROR: Z_MEM_ERROR$1,\n  Z_BUF_ERROR,\n  Z_DEFLATED\n} = constants$1;\nconst HEAD = 16180;\nconst FLAGS = 16181;\nconst TIME = 16182;\nconst OS = 16183;\nconst EXLEN = 16184;\nconst EXTRA = 16185;\nconst NAME = 16186;\nconst COMMENT = 16187;\nconst HCRC = 16188;\nconst DICTID = 16189;\nconst DICT = 16190;\nconst TYPE = 16191;\nconst TYPEDO = 16192;\nconst STORED = 16193;\nconst COPY_ = 16194;\nconst COPY = 16195;\nconst TABLE = 16196;\nconst LENLENS = 16197;\nconst CODELENS = 16198;\nconst LEN_ = 16199;\nconst LEN = 16200;\nconst LENEXT = 16201;\nconst DIST = 16202;\nconst DISTEXT = 16203;\nconst MATCH = 16204;\nconst LIT = 16205;\nconst CHECK = 16206;\nconst LENGTH = 16207;\nconst DONE = 16208;\nconst BAD = 16209;\nconst MEM = 16210;\nconst SYNC = 16211;\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\nconst MAX_WBITS = 15;\nconst DEF_WBITS = MAX_WBITS;\nconst zswap32 = (q) => {\n  return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24);\n};\nfunction InflateState() {\n  this.strm = null;\n  this.mode = 0;\n  this.last = false;\n  this.wrap = 0;\n  this.havedict = false;\n  this.flags = 0;\n  this.dmax = 0;\n  this.check = 0;\n  this.total = 0;\n  this.head = null;\n  this.wbits = 0;\n  this.wsize = 0;\n  this.whave = 0;\n  this.wnext = 0;\n  this.window = null;\n  this.hold = 0;\n  this.bits = 0;\n  this.length = 0;\n  this.offset = 0;\n  this.extra = 0;\n  this.lencode = null;\n  this.distcode = null;\n  this.lenbits = 0;\n  this.distbits = 0;\n  this.ncode = 0;\n  this.nlen = 0;\n  this.ndist = 0;\n  this.have = 0;\n  this.next = null;\n  this.lens = new Uint16Array(320);\n  this.work = new Uint16Array(288);\n  this.lendyn = null;\n  this.distdyn = null;\n  this.sane = 0;\n  this.back = 0;\n  this.was = 0;\n}\nconst inflateStateCheck = (strm) => {\n  if (!strm) {\n    return 1;\n  }\n  const state = strm.state;\n  if (!state || state.strm !== strm || state.mode < HEAD || state.mode > SYNC) {\n    return 1;\n  }\n  return 0;\n};\nconst inflateResetKeep = (strm) => {\n  if (inflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$1;\n  }\n  const state = strm.state;\n  strm.total_in = strm.total_out = state.total = 0;\n  strm.msg = \"\";\n  if (state.wrap) {\n    strm.adler = state.wrap & 1;\n  }\n  state.mode = HEAD;\n  state.last = 0;\n  state.havedict = 0;\n  state.flags = -1;\n  state.dmax = 32768;\n  state.head = null;\n  state.hold = 0;\n  state.bits = 0;\n  state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n  state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n  state.sane = 1;\n  state.back = -1;\n  return Z_OK$1;\n};\nconst inflateReset = (strm) => {\n  if (inflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$1;\n  }\n  const state = strm.state;\n  state.wsize = 0;\n  state.whave = 0;\n  state.wnext = 0;\n  return inflateResetKeep(strm);\n};\nconst inflateReset2 = (strm, windowBits) => {\n  let wrap;\n  if (inflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$1;\n  }\n  const state = strm.state;\n  if (windowBits < 0) {\n    wrap = 0;\n    windowBits = -windowBits;\n  } else {\n    wrap = (windowBits >> 4) + 5;\n    if (windowBits < 48) {\n      windowBits &= 15;\n    }\n  }\n  if (windowBits && (windowBits < 8 || windowBits > 15)) {\n    return Z_STREAM_ERROR$1;\n  }\n  if (state.window !== null && state.wbits !== windowBits) {\n    state.window = null;\n  }\n  state.wrap = wrap;\n  state.wbits = windowBits;\n  return inflateReset(strm);\n};\nconst inflateInit2 = (strm, windowBits) => {\n  if (!strm) {\n    return Z_STREAM_ERROR$1;\n  }\n  const state = new InflateState();\n  strm.state = state;\n  state.strm = strm;\n  state.window = null;\n  state.mode = HEAD;\n  const ret = inflateReset2(strm, windowBits);\n  if (ret !== Z_OK$1) {\n    strm.state = null;\n  }\n  return ret;\n};\nconst inflateInit = (strm) => {\n  return inflateInit2(strm, DEF_WBITS);\n};\nlet virgin = true;\nlet lenfix, distfix;\nconst fixedtables = (state) => {\n  if (virgin) {\n    lenfix = new Int32Array(512);\n    distfix = new Int32Array(32);\n    let sym = 0;\n    while (sym < 144) {\n      state.lens[sym++] = 8;\n    }\n    while (sym < 256) {\n      state.lens[sym++] = 9;\n    }\n    while (sym < 280) {\n      state.lens[sym++] = 7;\n    }\n    while (sym < 288) {\n      state.lens[sym++] = 8;\n    }\n    inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n    sym = 0;\n    while (sym < 32) {\n      state.lens[sym++] = 5;\n    }\n    inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n    virgin = false;\n  }\n  state.lencode = lenfix;\n  state.lenbits = 9;\n  state.distcode = distfix;\n  state.distbits = 5;\n};\nconst updatewindow = (strm, src, end, copy) => {\n  let dist2;\n  const state = strm.state;\n  if (state.window === null) {\n    state.wsize = 1 << state.wbits;\n    state.wnext = 0;\n    state.whave = 0;\n    state.window = new Uint8Array(state.wsize);\n  }\n  if (copy >= state.wsize) {\n    state.window.set(src.subarray(end - state.wsize, end), 0);\n    state.wnext = 0;\n    state.whave = state.wsize;\n  } else {\n    dist2 = state.wsize - state.wnext;\n    if (dist2 > copy) {\n      dist2 = copy;\n    }\n    state.window.set(src.subarray(end - copy, end - copy + dist2), state.wnext);\n    copy -= dist2;\n    if (copy) {\n      state.window.set(src.subarray(end - copy, end), 0);\n      state.wnext = copy;\n      state.whave = state.wsize;\n    } else {\n      state.wnext += dist2;\n      if (state.wnext === state.wsize) {\n        state.wnext = 0;\n      }\n      if (state.whave < state.wsize) {\n        state.whave += dist2;\n      }\n    }\n  }\n  return 0;\n};\nconst inflate$2 = (strm, flush) => {\n  let state;\n  let input, output;\n  let next;\n  let put;\n  let have, left;\n  let hold;\n  let bits;\n  let _in, _out;\n  let copy;\n  let from;\n  let from_source;\n  let here = 0;\n  let here_bits, here_op, here_val;\n  let last_bits, last_op, last_val;\n  let len;\n  let ret;\n  const hbuf = new Uint8Array(4);\n  let opts;\n  let n;\n  const order = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n  if (inflateStateCheck(strm) || !strm.output || !strm.input && strm.avail_in !== 0) {\n    return Z_STREAM_ERROR$1;\n  }\n  state = strm.state;\n  if (state.mode === TYPE) {\n    state.mode = TYPEDO;\n  }\n  put = strm.next_out;\n  output = strm.output;\n  left = strm.avail_out;\n  next = strm.next_in;\n  input = strm.input;\n  have = strm.avail_in;\n  hold = state.hold;\n  bits = state.bits;\n  _in = have;\n  _out = left;\n  ret = Z_OK$1;\n  inf_leave:\n    for (; ; ) {\n      switch (state.mode) {\n        case HEAD:\n          if (state.wrap === 0) {\n            state.mode = TYPEDO;\n            break;\n          }\n          while (bits < 16) {\n            if (have === 0) {\n              break inf_leave;\n            }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          if (state.wrap & 2 && hold === 35615) {\n            if (state.wbits === 0) {\n              state.wbits = 15;\n            }\n            state.check = 0;\n            hbuf[0] = hold & 255;\n            hbuf[1] = hold >>> 8 & 255;\n            state.check = crc32(state.check, hbuf, 2, 0);\n            hold = 0;\n            bits = 0;\n            state.mode = FLAGS;\n            break;\n          }\n          if (state.head) {\n            state.head.done = false;\n          }\n          if (!(state.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) {\n            strm.msg = \"incorrect header check\";\n            state.mode = BAD;\n            break;\n          }\n          if ((hold & 15) !== Z_DEFLATED) {\n            strm.msg = \"unknown compression method\";\n            state.mode = BAD;\n            break;\n          }\n          hold >>>= 4;\n          bits -= 4;\n          len = (hold & 15) + 8;\n          if (state.wbits === 0) {\n            state.wbits = len;\n          }\n          if (len > 15 || len > state.wbits) {\n            strm.msg = \"invalid window size\";\n            state.mode = BAD;\n            break;\n          }\n          state.dmax = 1 << state.wbits;\n          state.flags = 0;\n          strm.adler = state.check = 1;\n          state.mode = hold & 512 ? DICTID : TYPE;\n          hold = 0;\n          bits = 0;\n          break;\n        case FLAGS:\n          while (bits < 16) {\n            if (have === 0) {\n              break inf_leave;\n            }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          state.flags = hold;\n          if ((state.flags & 255) !== Z_DEFLATED) {\n            strm.msg = \"unknown compression method\";\n            state.mode = BAD;\n            break;\n          }\n          if (state.flags & 57344) {\n            strm.msg = \"unknown header flags set\";\n            state.mode = BAD;\n            break;\n          }\n          if (state.head) {\n            state.head.text = hold >> 8 & 1;\n          }\n          if (state.flags & 512 && state.wrap & 4) {\n            hbuf[0] = hold & 255;\n            hbuf[1] = hold >>> 8 & 255;\n            state.check = crc32(state.check, hbuf, 2, 0);\n          }\n          hold = 0;\n          bits = 0;\n          state.mode = TIME;\n        case TIME:\n          while (bits < 32) {\n            if (have === 0) {\n              break inf_leave;\n            }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          if (state.head) {\n            state.head.time = hold;\n          }\n          if (state.flags & 512 && state.wrap & 4) {\n            hbuf[0] = hold & 255;\n            hbuf[1] = hold >>> 8 & 255;\n            hbuf[2] = hold >>> 16 & 255;\n            hbuf[3] = hold >>> 24 & 255;\n            state.check = crc32(state.check, hbuf, 4, 0);\n          }\n          hold = 0;\n          bits = 0;\n          state.mode = OS;\n        case OS:\n          while (bits < 16) {\n            if (have === 0) {\n              break inf_leave;\n            }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          if (state.head) {\n            state.head.xflags = hold & 255;\n            state.head.os = hold >> 8;\n          }\n          if (state.flags & 512 && state.wrap & 4) {\n            hbuf[0] = hold & 255;\n            hbuf[1] = hold >>> 8 & 255;\n            state.check = crc32(state.check, hbuf, 2, 0);\n          }\n          hold = 0;\n          bits = 0;\n          state.mode = EXLEN;\n        case EXLEN:\n          if (state.flags & 1024) {\n            while (bits < 16) {\n              if (have === 0) {\n                break inf_leave;\n              }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            state.length = hold;\n            if (state.head) {\n              state.head.extra_len = hold;\n            }\n            if (state.flags & 512 && state.wrap & 4) {\n              hbuf[0] = hold & 255;\n              hbuf[1] = hold >>> 8 & 255;\n              state.check = crc32(state.check, hbuf, 2, 0);\n            }\n            hold = 0;\n            bits = 0;\n          } else if (state.head) {\n            state.head.extra = null;\n          }\n          state.mode = EXTRA;\n        case EXTRA:\n          if (state.flags & 1024) {\n            copy = state.length;\n            if (copy > have) {\n              copy = have;\n            }\n            if (copy) {\n              if (state.head) {\n                len = state.head.extra_len - state.length;\n                if (!state.head.extra) {\n                  state.head.extra = new Uint8Array(state.head.extra_len);\n                }\n                state.head.extra.set(\n                  input.subarray(\n                    next,\n                    next + copy\n                  ),\n                  len\n                );\n              }\n              if (state.flags & 512 && state.wrap & 4) {\n                state.check = crc32(state.check, input, copy, next);\n              }\n              have -= copy;\n              next += copy;\n              state.length -= copy;\n            }\n            if (state.length) {\n              break inf_leave;\n            }\n          }\n          state.length = 0;\n          state.mode = NAME;\n        case NAME:\n          if (state.flags & 2048) {\n            if (have === 0) {\n              break inf_leave;\n            }\n            copy = 0;\n            do {\n              len = input[next + copy++];\n              if (state.head && len && state.length < 65536) {\n                state.head.name += String.fromCharCode(len);\n              }\n            } while (len && copy < have);\n            if (state.flags & 512 && state.wrap & 4) {\n              state.check = crc32(state.check, input, copy, next);\n            }\n            have -= copy;\n            next += copy;\n            if (len) {\n              break inf_leave;\n            }\n          } else if (state.head) {\n            state.head.name = null;\n          }\n          state.length = 0;\n          state.mode = COMMENT;\n        case COMMENT:\n          if (state.flags & 4096) {\n            if (have === 0) {\n              break inf_leave;\n            }\n            copy = 0;\n            do {\n              len = input[next + copy++];\n              if (state.head && len && state.length < 65536) {\n                state.head.comment += String.fromCharCode(len);\n              }\n            } while (len && copy < have);\n            if (state.flags & 512 && state.wrap & 4) {\n              state.check = crc32(state.check, input, copy, next);\n            }\n            have -= copy;\n            next += copy;\n            if (len) {\n              break inf_leave;\n            }\n          } else if (state.head) {\n            state.head.comment = null;\n          }\n          state.mode = HCRC;\n        case HCRC:\n          if (state.flags & 512) {\n            while (bits < 16) {\n              if (have === 0) {\n                break inf_leave;\n              }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            if (state.wrap & 4 && hold !== (state.check & 65535)) {\n              strm.msg = \"header crc mismatch\";\n              state.mode = BAD;\n              break;\n            }\n            hold = 0;\n            bits = 0;\n          }\n          if (state.head) {\n            state.head.hcrc = state.flags >> 9 & 1;\n            state.head.done = true;\n          }\n          strm.adler = state.check = 0;\n          state.mode = TYPE;\n          break;\n        case DICTID:\n          while (bits < 32) {\n            if (have === 0) {\n              break inf_leave;\n            }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          strm.adler = state.check = zswap32(hold);\n          hold = 0;\n          bits = 0;\n          state.mode = DICT;\n        case DICT:\n          if (state.havedict === 0) {\n            strm.next_out = put;\n            strm.avail_out = left;\n            strm.next_in = next;\n            strm.avail_in = have;\n            state.hold = hold;\n            state.bits = bits;\n            return Z_NEED_DICT$1;\n          }\n          strm.adler = state.check = 1;\n          state.mode = TYPE;\n        case TYPE:\n          if (flush === Z_BLOCK || flush === Z_TREES) {\n            break inf_leave;\n          }\n        case TYPEDO:\n          if (state.last) {\n            hold >>>= bits & 7;\n            bits -= bits & 7;\n            state.mode = CHECK;\n            break;\n          }\n          while (bits < 3) {\n            if (have === 0) {\n              break inf_leave;\n            }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          state.last = hold & 1;\n          hold >>>= 1;\n          bits -= 1;\n          switch (hold & 3) {\n            case 0:\n              state.mode = STORED;\n              break;\n            case 1:\n              fixedtables(state);\n              state.mode = LEN_;\n              if (flush === Z_TREES) {\n                hold >>>= 2;\n                bits -= 2;\n                break inf_leave;\n              }\n              break;\n            case 2:\n              state.mode = TABLE;\n              break;\n            case 3:\n              strm.msg = \"invalid block type\";\n              state.mode = BAD;\n          }\n          hold >>>= 2;\n          bits -= 2;\n          break;\n        case STORED:\n          hold >>>= bits & 7;\n          bits -= bits & 7;\n          while (bits < 32) {\n            if (have === 0) {\n              break inf_leave;\n            }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          if ((hold & 65535) !== (hold >>> 16 ^ 65535)) {\n            strm.msg = \"invalid stored block lengths\";\n            state.mode = BAD;\n            break;\n          }\n          state.length = hold & 65535;\n          hold = 0;\n          bits = 0;\n          state.mode = COPY_;\n          if (flush === Z_TREES) {\n            break inf_leave;\n          }\n        case COPY_:\n          state.mode = COPY;\n        case COPY:\n          copy = state.length;\n          if (copy) {\n            if (copy > have) {\n              copy = have;\n            }\n            if (copy > left) {\n              copy = left;\n            }\n            if (copy === 0) {\n              break inf_leave;\n            }\n            output.set(input.subarray(next, next + copy), put);\n            have -= copy;\n            next += copy;\n            left -= copy;\n            put += copy;\n            state.length -= copy;\n            break;\n          }\n          state.mode = TYPE;\n          break;\n        case TABLE:\n          while (bits < 14) {\n            if (have === 0) {\n              break inf_leave;\n            }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          state.nlen = (hold & 31) + 257;\n          hold >>>= 5;\n          bits -= 5;\n          state.ndist = (hold & 31) + 1;\n          hold >>>= 5;\n          bits -= 5;\n          state.ncode = (hold & 15) + 4;\n          hold >>>= 4;\n          bits -= 4;\n          if (state.nlen > 286 || state.ndist > 30) {\n            strm.msg = \"too many length or distance symbols\";\n            state.mode = BAD;\n            break;\n          }\n          state.have = 0;\n          state.mode = LENLENS;\n        case LENLENS:\n          while (state.have < state.ncode) {\n            while (bits < 3) {\n              if (have === 0) {\n                break inf_leave;\n              }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            state.lens[order[state.have++]] = hold & 7;\n            hold >>>= 3;\n            bits -= 3;\n          }\n          while (state.have < 19) {\n            state.lens[order[state.have++]] = 0;\n          }\n          state.lencode = state.lendyn;\n          state.lenbits = 7;\n          opts = { bits: state.lenbits };\n          ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n          state.lenbits = opts.bits;\n          if (ret) {\n            strm.msg = \"invalid code lengths set\";\n            state.mode = BAD;\n            break;\n          }\n          state.have = 0;\n          state.mode = CODELENS;\n        case CODELENS:\n          while (state.have < state.nlen + state.ndist) {\n            for (; ; ) {\n              here = state.lencode[hold & (1 << state.lenbits) - 1];\n              here_bits = here >>> 24;\n              here_op = here >>> 16 & 255;\n              here_val = here & 65535;\n              if (here_bits <= bits) {\n                break;\n              }\n              if (have === 0) {\n                break inf_leave;\n              }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            if (here_val < 16) {\n              hold >>>= here_bits;\n              bits -= here_bits;\n              state.lens[state.have++] = here_val;\n            } else {\n              if (here_val === 16) {\n                n = here_bits + 2;\n                while (bits < n) {\n                  if (have === 0) {\n                    break inf_leave;\n                  }\n                  have--;\n                  hold += input[next++] << bits;\n                  bits += 8;\n                }\n                hold >>>= here_bits;\n                bits -= here_bits;\n                if (state.have === 0) {\n                  strm.msg = \"invalid bit length repeat\";\n                  state.mode = BAD;\n                  break;\n                }\n                len = state.lens[state.have - 1];\n                copy = 3 + (hold & 3);\n                hold >>>= 2;\n                bits -= 2;\n              } else if (here_val === 17) {\n                n = here_bits + 3;\n                while (bits < n) {\n                  if (have === 0) {\n                    break inf_leave;\n                  }\n                  have--;\n                  hold += input[next++] << bits;\n                  bits += 8;\n                }\n                hold >>>= here_bits;\n                bits -= here_bits;\n                len = 0;\n                copy = 3 + (hold & 7);\n                hold >>>= 3;\n                bits -= 3;\n              } else {\n                n = here_bits + 7;\n                while (bits < n) {\n                  if (have === 0) {\n                    break inf_leave;\n                  }\n                  have--;\n                  hold += input[next++] << bits;\n                  bits += 8;\n                }\n                hold >>>= here_bits;\n                bits -= here_bits;\n                len = 0;\n                copy = 11 + (hold & 127);\n                hold >>>= 7;\n                bits -= 7;\n              }\n              if (state.have + copy > state.nlen + state.ndist) {\n                strm.msg = \"invalid bit length repeat\";\n                state.mode = BAD;\n                break;\n              }\n              while (copy--) {\n                state.lens[state.have++] = len;\n              }\n            }\n          }\n          if (state.mode === BAD) {\n            break;\n          }\n          if (state.lens[256] === 0) {\n            strm.msg = \"invalid code -- missing end-of-block\";\n            state.mode = BAD;\n            break;\n          }\n          state.lenbits = 9;\n          opts = { bits: state.lenbits };\n          ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n          state.lenbits = opts.bits;\n          if (ret) {\n            strm.msg = \"invalid literal/lengths set\";\n            state.mode = BAD;\n            break;\n          }\n          state.distbits = 6;\n          state.distcode = state.distdyn;\n          opts = { bits: state.distbits };\n          ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n          state.distbits = opts.bits;\n          if (ret) {\n            strm.msg = \"invalid distances set\";\n            state.mode = BAD;\n            break;\n          }\n          state.mode = LEN_;\n          if (flush === Z_TREES) {\n            break inf_leave;\n          }\n        case LEN_:\n          state.mode = LEN;\n        case LEN:\n          if (have >= 6 && left >= 258) {\n            strm.next_out = put;\n            strm.avail_out = left;\n            strm.next_in = next;\n            strm.avail_in = have;\n            state.hold = hold;\n            state.bits = bits;\n            inflate_fast2(strm, _out);\n            put = strm.next_out;\n            output = strm.output;\n            left = strm.avail_out;\n            next = strm.next_in;\n            input = strm.input;\n            have = strm.avail_in;\n            hold = state.hold;\n            bits = state.bits;\n            if (state.mode === TYPE) {\n              state.back = -1;\n            }\n            break;\n          }\n          state.back = 0;\n          for (; ; ) {\n            here = state.lencode[hold & (1 << state.lenbits) - 1];\n            here_bits = here >>> 24;\n            here_op = here >>> 16 & 255;\n            here_val = here & 65535;\n            if (here_bits <= bits) {\n              break;\n            }\n            if (have === 0) {\n              break inf_leave;\n            }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          if (here_op && (here_op & 240) === 0) {\n            last_bits = here_bits;\n            last_op = here_op;\n            last_val = here_val;\n            for (; ; ) {\n              here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];\n              here_bits = here >>> 24;\n              here_op = here >>> 16 & 255;\n              here_val = here & 65535;\n              if (last_bits + here_bits <= bits) {\n                break;\n              }\n              if (have === 0) {\n                break inf_leave;\n              }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            hold >>>= last_bits;\n            bits -= last_bits;\n            state.back += last_bits;\n          }\n          hold >>>= here_bits;\n          bits -= here_bits;\n          state.back += here_bits;\n          state.length = here_val;\n          if (here_op === 0) {\n            state.mode = LIT;\n            break;\n          }\n          if (here_op & 32) {\n            state.back = -1;\n            state.mode = TYPE;\n            break;\n          }\n          if (here_op & 64) {\n            strm.msg = \"invalid literal/length code\";\n            state.mode = BAD;\n            break;\n          }\n          state.extra = here_op & 15;\n          state.mode = LENEXT;\n        case LENEXT:\n          if (state.extra) {\n            n = state.extra;\n            while (bits < n) {\n              if (have === 0) {\n                break inf_leave;\n              }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            state.length += hold & (1 << state.extra) - 1;\n            hold >>>= state.extra;\n            bits -= state.extra;\n            state.back += state.extra;\n          }\n          state.was = state.length;\n          state.mode = DIST;\n        case DIST:\n          for (; ; ) {\n            here = state.distcode[hold & (1 << state.distbits) - 1];\n            here_bits = here >>> 24;\n            here_op = here >>> 16 & 255;\n            here_val = here & 65535;\n            if (here_bits <= bits) {\n              break;\n            }\n            if (have === 0) {\n              break inf_leave;\n            }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          if ((here_op & 240) === 0) {\n            last_bits = here_bits;\n            last_op = here_op;\n            last_val = here_val;\n            for (; ; ) {\n              here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];\n              here_bits = here >>> 24;\n              here_op = here >>> 16 & 255;\n              here_val = here & 65535;\n              if (last_bits + here_bits <= bits) {\n                break;\n              }\n              if (have === 0) {\n                break inf_leave;\n              }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            hold >>>= last_bits;\n            bits -= last_bits;\n            state.back += last_bits;\n          }\n          hold >>>= here_bits;\n          bits -= here_bits;\n          state.back += here_bits;\n          if (here_op & 64) {\n            strm.msg = \"invalid distance code\";\n            state.mode = BAD;\n            break;\n          }\n          state.offset = here_val;\n          state.extra = here_op & 15;\n          state.mode = DISTEXT;\n        case DISTEXT:\n          if (state.extra) {\n            n = state.extra;\n            while (bits < n) {\n              if (have === 0) {\n                break inf_leave;\n              }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            state.offset += hold & (1 << state.extra) - 1;\n            hold >>>= state.extra;\n            bits -= state.extra;\n            state.back += state.extra;\n          }\n          if (state.offset > state.dmax) {\n            strm.msg = \"invalid distance too far back\";\n            state.mode = BAD;\n            break;\n          }\n          state.mode = MATCH;\n        case MATCH:\n          if (left === 0) {\n            break inf_leave;\n          }\n          copy = _out - left;\n          if (state.offset > copy) {\n            copy = state.offset - copy;\n            if (copy > state.whave) {\n              if (state.sane) {\n                strm.msg = \"invalid distance too far back\";\n                state.mode = BAD;\n                break;\n              }\n            }\n            if (copy > state.wnext) {\n              copy -= state.wnext;\n              from = state.wsize - copy;\n            } else {\n              from = state.wnext - copy;\n            }\n            if (copy > state.length) {\n              copy = state.length;\n            }\n            from_source = state.window;\n          } else {\n            from_source = output;\n            from = put - state.offset;\n            copy = state.length;\n          }\n          if (copy > left) {\n            copy = left;\n          }\n          left -= copy;\n          state.length -= copy;\n          do {\n            output[put++] = from_source[from++];\n          } while (--copy);\n          if (state.length === 0) {\n            state.mode = LEN;\n          }\n          break;\n        case LIT:\n          if (left === 0) {\n            break inf_leave;\n          }\n          output[put++] = state.length;\n          left--;\n          state.mode = LEN;\n          break;\n        case CHECK:\n          if (state.wrap) {\n            while (bits < 32) {\n              if (have === 0) {\n                break inf_leave;\n              }\n              have--;\n              hold |= input[next++] << bits;\n              bits += 8;\n            }\n            _out -= left;\n            strm.total_out += _out;\n            state.total += _out;\n            if (state.wrap & 4 && _out) {\n              strm.adler = state.check = state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out);\n            }\n            _out = left;\n            if (state.wrap & 4 && (state.flags ? hold : zswap32(hold)) !== state.check) {\n              strm.msg = \"incorrect data check\";\n              state.mode = BAD;\n              break;\n            }\n            hold = 0;\n            bits = 0;\n          }\n          state.mode = LENGTH;\n        case LENGTH:\n          if (state.wrap && state.flags) {\n            while (bits < 32) {\n              if (have === 0) {\n                break inf_leave;\n              }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            if (state.wrap & 4 && hold !== (state.total & 4294967295)) {\n              strm.msg = \"incorrect length check\";\n              state.mode = BAD;\n              break;\n            }\n            hold = 0;\n            bits = 0;\n          }\n          state.mode = DONE;\n        case DONE:\n          ret = Z_STREAM_END$1;\n          break inf_leave;\n        case BAD:\n          ret = Z_DATA_ERROR$1;\n          break inf_leave;\n        case MEM:\n          return Z_MEM_ERROR$1;\n        case SYNC:\n        default:\n          return Z_STREAM_ERROR$1;\n      }\n    }\n  strm.next_out = put;\n  strm.avail_out = left;\n  strm.next_in = next;\n  strm.avail_in = have;\n  state.hold = hold;\n  state.bits = bits;\n  if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH$1)) {\n    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out))\n      ;\n  }\n  _in -= strm.avail_in;\n  _out -= strm.avail_out;\n  strm.total_in += _in;\n  strm.total_out += _out;\n  state.total += _out;\n  if (state.wrap & 4 && _out) {\n    strm.adler = state.check = state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out);\n  }\n  strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n  if ((_in === 0 && _out === 0 || flush === Z_FINISH$1) && ret === Z_OK$1) {\n    ret = Z_BUF_ERROR;\n  }\n  return ret;\n};\nconst inflateEnd = (strm) => {\n  if (inflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$1;\n  }\n  let state = strm.state;\n  if (state.window) {\n    state.window = null;\n  }\n  strm.state = null;\n  return Z_OK$1;\n};\nconst inflateGetHeader = (strm, head) => {\n  if (inflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$1;\n  }\n  const state = strm.state;\n  if ((state.wrap & 2) === 0) {\n    return Z_STREAM_ERROR$1;\n  }\n  state.head = head;\n  head.done = false;\n  return Z_OK$1;\n};\nconst inflateSetDictionary = (strm, dictionary) => {\n  const dictLength = dictionary.length;\n  let state;\n  let dictid;\n  let ret;\n  if (inflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$1;\n  }\n  state = strm.state;\n  if (state.wrap !== 0 && state.mode !== DICT) {\n    return Z_STREAM_ERROR$1;\n  }\n  if (state.mode === DICT) {\n    dictid = 1;\n    dictid = adler32(dictid, dictionary, dictLength, 0);\n    if (dictid !== state.check) {\n      return Z_DATA_ERROR$1;\n    }\n  }\n  ret = updatewindow(strm, dictionary, dictLength, dictLength);\n  if (ret) {\n    state.mode = MEM;\n    return Z_MEM_ERROR$1;\n  }\n  state.havedict = 1;\n  return Z_OK$1;\n};\ninflate$3.inflateReset = inflateReset;\ninflate$3.inflateReset2 = inflateReset2;\ninflate$3.inflateResetKeep = inflateResetKeep;\ninflate$3.inflateInit = inflateInit;\ninflate$3.inflateInit2 = inflateInit2;\ninflate$3.inflate = inflate$2;\ninflate$3.inflateEnd = inflateEnd;\ninflate$3.inflateGetHeader = inflateGetHeader;\ninflate$3.inflateSetDictionary = inflateSetDictionary;\ninflate$3.inflateInfo = \"pako inflate (from Nodeca project)\";\nfunction GZheader$1() {\n  this.text = 0;\n  this.time = 0;\n  this.xflags = 0;\n  this.os = 0;\n  this.extra = null;\n  this.extra_len = 0;\n  this.name = \"\";\n  this.comment = \"\";\n  this.hcrc = 0;\n  this.done = false;\n}\nvar gzheader = GZheader$1;\nconst zlib_inflate = inflate$3;\nconst utils = common;\nconst strings = strings$2;\nconst msg = messages;\nconst ZStream = zstream;\nconst GZheader = gzheader;\nconst toString = Object.prototype.toString;\nconst {\n  Z_NO_FLUSH,\n  Z_FINISH,\n  Z_OK,\n  Z_STREAM_END,\n  Z_NEED_DICT,\n  Z_STREAM_ERROR,\n  Z_DATA_ERROR,\n  Z_MEM_ERROR\n} = constants$1;\nfunction Inflate$1(options) {\n  this.options = utils.assign({\n    chunkSize: 1024 * 64,\n    windowBits: 15,\n    to: \"\"\n  }, options || {});\n  const opt = this.options;\n  if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) {\n    opt.windowBits = -opt.windowBits;\n    if (opt.windowBits === 0) {\n      opt.windowBits = -15;\n    }\n  }\n  if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) {\n    opt.windowBits += 32;\n  }\n  if (opt.windowBits > 15 && opt.windowBits < 48) {\n    if ((opt.windowBits & 15) === 0) {\n      opt.windowBits |= 15;\n    }\n  }\n  this.err = 0;\n  this.msg = \"\";\n  this.ended = false;\n  this.chunks = [];\n  this.strm = new ZStream();\n  this.strm.avail_out = 0;\n  let status = zlib_inflate.inflateInit2(\n    this.strm,\n    opt.windowBits\n  );\n  if (status !== Z_OK) {\n    throw new Error(msg[status]);\n  }\n  this.header = new GZheader();\n  zlib_inflate.inflateGetHeader(this.strm, this.header);\n  if (opt.dictionary) {\n    if (typeof opt.dictionary === \"string\") {\n      opt.dictionary = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === \"[object ArrayBuffer]\") {\n      opt.dictionary = new Uint8Array(opt.dictionary);\n    }\n    if (opt.raw) {\n      status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n      if (status !== Z_OK) {\n        throw new Error(msg[status]);\n      }\n    }\n  }\n}\nInflate$1.prototype.push = function(data, flush_mode) {\n  const strm = this.strm;\n  const chunkSize = this.options.chunkSize;\n  const dictionary = this.options.dictionary;\n  let status, _flush_mode, last_avail_out;\n  if (this.ended)\n    return false;\n  if (flush_mode === ~~flush_mode)\n    _flush_mode = flush_mode;\n  else\n    _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n  if (toString.call(data) === \"[object ArrayBuffer]\") {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n  for (; ; ) {\n    if (strm.avail_out === 0) {\n      strm.output = new Uint8Array(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n    status = zlib_inflate.inflate(strm, _flush_mode);\n    if (status === Z_NEED_DICT && dictionary) {\n      status = zlib_inflate.inflateSetDictionary(strm, dictionary);\n      if (status === Z_OK) {\n        status = zlib_inflate.inflate(strm, _flush_mode);\n      } else if (status === Z_DATA_ERROR) {\n        status = Z_NEED_DICT;\n      }\n    }\n    while (strm.avail_in > 0 && status === Z_STREAM_END && strm.state.wrap > 0 && data[strm.next_in] !== 0) {\n      zlib_inflate.inflateReset(strm);\n      status = zlib_inflate.inflate(strm, _flush_mode);\n    }\n    switch (status) {\n      case Z_STREAM_ERROR:\n      case Z_DATA_ERROR:\n      case Z_NEED_DICT:\n      case Z_MEM_ERROR:\n        this.onEnd(status);\n        this.ended = true;\n        return false;\n    }\n    last_avail_out = strm.avail_out;\n    if (strm.next_out) {\n      if (strm.avail_out === 0 || status === Z_STREAM_END) {\n        if (this.options.to === \"string\") {\n          let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n          let tail = strm.next_out - next_out_utf8;\n          let utf8str = strings.buf2string(strm.output, next_out_utf8);\n          strm.next_out = tail;\n          strm.avail_out = chunkSize - tail;\n          if (tail)\n            strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n          this.onData(utf8str);\n        } else {\n          this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n        }\n      }\n    }\n    if (status === Z_OK && last_avail_out === 0)\n      continue;\n    if (status === Z_STREAM_END) {\n      status = zlib_inflate.inflateEnd(this.strm);\n      this.onEnd(status);\n      this.ended = true;\n      return true;\n    }\n    if (strm.avail_in === 0)\n      break;\n  }\n  return true;\n};\nInflate$1.prototype.onData = function(chunk) {\n  this.chunks.push(chunk);\n};\nInflate$1.prototype.onEnd = function(status) {\n  if (status === Z_OK) {\n    if (this.options.to === \"string\") {\n      this.result = this.chunks.join(\"\");\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\nfunction inflate$1(input, options) {\n  const inflator = new Inflate$1(options);\n  inflator.push(input);\n  if (inflator.err)\n    throw inflator.msg || msg[inflator.err];\n  return inflator.result;\n}\nfunction inflateRaw$1(input, options) {\n  options = options || {};\n  options.raw = true;\n  return inflate$1(input, options);\n}\ninflate$4.Inflate = Inflate$1;\ninflate$4.inflate = inflate$1;\ninflate$4.inflateRaw = inflateRaw$1;\ninflate$4.ungzip = inflate$1;\ninflate$4.constants = constants$1;\nconst { Deflate, deflate, deflateRaw, gzip } = deflate$4;\nconst { Inflate, inflate, inflateRaw, ungzip } = inflate$4;\nconst constants = constants$1;\npako$1.Deflate = Deflate;\npako$1.deflate = deflate;\npako$1.deflateRaw = deflateRaw;\npako$1.gzip = gzip;\npako$1.Inflate = Inflate;\npako$1.inflate = inflate;\npako$1.inflateRaw = inflateRaw;\npako$1.ungzip = ungzip;\npako$1.constants = constants;\nvar __createBinding = commonjsGlobal && commonjsGlobal.__createBinding || (Object.create ? function(o, m, k, k2) {\n  if (k2 === void 0)\n    k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n    desc = { enumerable: true, get: function() {\n      return m[k];\n    } };\n  }\n  Object.defineProperty(o, k2, desc);\n} : function(o, m, k, k2) {\n  if (k2 === void 0)\n    k2 = k;\n  o[k2] = m[k];\n});\nvar __setModuleDefault = commonjsGlobal && commonjsGlobal.__setModuleDefault || (Object.create ? function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n} : function(o, v) {\n  o[\"default\"] = v;\n});\nvar __importStar = commonjsGlobal && commonjsGlobal.__importStar || function(mod) {\n  if (mod && mod.__esModule)\n    return mod;\n  var result = {};\n  if (mod != null) {\n    for (var k in mod)\n      if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k))\n        __createBinding(result, mod, k);\n  }\n  __setModuleDefault(result, mod);\n  return result;\n};\nObject.defineProperty(bfast, \"__esModule\", { value: true });\nbfast.BFast = bfast.BFastHeader = bfast.typeSize = bfast.parseName = bfast.Range = void 0;\nconst remoteValue_1$1 = remoteValue;\nconst remoteBuffer_1 = remoteBuffer;\nconst pako = __importStar(pako$1);\nclass Range {\n  constructor(start, end) {\n    this.start = start;\n    this.end = end;\n  }\n  get length() {\n    return this.end - this.start;\n  }\n  offset(offset) {\n    return new Range(this.start + offset, this.end + offset);\n  }\n}\nbfast.Range = Range;\nfunction parseName(name) {\n  if (name.startsWith(\"g3d\")) {\n    const result = name.includes(\":int8:\") ? [1, Int8Array] : name.includes(\":uint8:\") ? [1, Uint8Array] : name.includes(\":int16:\") ? [2, Int16Array] : name.includes(\":uint16:\") ? [2, Uint16Array] : name.includes(\":int32:\") ? [4, Int32Array] : name.includes(\":uint32:\") ? [4, Uint32Array] : name.includes(\":int64:\") ? [8, BigInt64Array] : name.includes(\":uint64:\") ? [8, BigUint64Array] : name.includes(\":float32:\") ? [4, Float32Array] : name.includes(\":float64:\") ? [8, Float64Array] : [-1, void 0];\n    return result;\n  } else {\n    const result = name.startsWith(\"byte:\") ? [1, Int8Array] : name.startsWith(\"ubyte:\") ? [1, Uint8Array] : name.startsWith(\"short:\") ? [2, Int16Array] : name.startsWith(\"ushort:\") ? [2, Uint16Array] : name.startsWith(\"int:\") ? [4, Int32Array] : name.startsWith(\"uint:\") ? [4, Uint32Array] : name.startsWith(\"long:\") ? [8, BigInt64Array] : name.startsWith(\"ulong:\") ? [8, BigUint64Array] : name.startsWith(\"float:\") ? [4, Float32Array] : name.startsWith(\"double:\") ? [8, Float64Array] : [-1, void 0];\n    return result;\n  }\n}\nbfast.parseName = parseName;\nfunction typeSize(type) {\n  switch (type) {\n    case \"byte\":\n    case \"ubyte\":\n      return 1;\n    case \"short\":\n    case \"ushort\":\n      return 2;\n    case \"int\":\n    case \"uint\":\n    case \"float\":\n      return 4;\n    case \"long\":\n    case \"ulong\":\n    case \"double\":\n      return 8;\n    default:\n      return 4;\n  }\n}\nbfast.typeSize = typeSize;\nfunction typeConstructor(type) {\n  switch (type) {\n    case \"byte\":\n      return Int8Array;\n    case \"ubyte\":\n      return Uint8Array;\n    case \"short\":\n      return Int16Array;\n    case \"ushort\":\n      return Uint16Array;\n    case \"int\":\n      return Int32Array;\n    case \"uint\":\n      return Uint32Array;\n    case \"long\":\n      return BigInt64Array;\n    case \"ulong\":\n      return BigUint64Array;\n    case \"float\":\n      return Float32Array;\n    case \"double\":\n      return Float64Array;\n    default:\n      return Int32Array;\n  }\n}\nclass BFastHeader {\n  constructor(magic, dataStart, dataEnd, numArrays) {\n    if (magic !== 49061) {\n      throw new Error(\"Invalid Bfast. Invalid Magic number\");\n    }\n    if (dataStart <= 32 || dataStart > Number.MAX_SAFE_INTEGER) {\n      throw new Error(\"Invalid Bfast. Data start is out of valid range\");\n    }\n    if (dataEnd < dataStart || dataEnd > Number.MAX_SAFE_INTEGER) {\n      throw new Error(\"Invalid Bfast. Data end is out of valid range\");\n    }\n    if (numArrays < 0 || numArrays > dataEnd) {\n      throw new Error(\"Invalid Bfast. Number of arrays is invalid\");\n    }\n    this.magic = magic;\n    this.dataStart = dataStart;\n    this.dataEnd = dataEnd;\n    this.numArrays = numArrays;\n  }\n  static createFromArray(array) {\n    if (array[1] !== 0) {\n      throw new Error(\"Invalid Bfast. Expected 0 in byte position 0\");\n    }\n    if (array[3] !== 0) {\n      throw new Error(\"Invalid Bfast. Expected 0 in byte position 8\");\n    }\n    if (array[5] !== 0) {\n      throw new Error(\"Invalid Bfast. Expected 0 in position 16\");\n    }\n    if (array[7] !== 0) {\n      throw new Error(\"Invalid Bfast. Expected 0 in position 24\");\n    }\n    return new this(array[0], array[2], array[4], array[6]);\n  }\n  static createFromBuffer(array) {\n    return BFastHeader.createFromArray(new Uint32Array(array));\n  }\n}\nbfast.BFastHeader = BFastHeader;\nclass BFast {\n  constructor(source, offset = 0, name = \"\") {\n    this.source = source.buffer ? source.buffer : new remoteBuffer_1.RemoteBuffer(source.url, source.headers);\n    this.offset = offset;\n    this.name = name != null ? name : \"root\";\n    this._header = new remoteValue_1$1.RemoteValue(() => this.requestHeader(), name + \".header\");\n    this._children = /* @__PURE__ */ new Map();\n    this._ranges = new remoteValue_1$1.RemoteValue(() => this.requestRanges(), name + \".ranges\");\n  }\n  get url() {\n    return this.source instanceof remoteBuffer_1.RemoteBuffer ? this.source.url : void 0;\n  }\n  abort() {\n    if (this.source instanceof remoteBuffer_1.RemoteBuffer) {\n      this.source.abort();\n    }\n    this._header.abort();\n    this._ranges.abort();\n    this._children.forEach((c) => c.abort());\n  }\n  async getHeader() {\n    return this._header.get();\n  }\n  async getRanges() {\n    return this._ranges.get();\n  }\n  async getBfast(name) {\n    let request2 = this._children.get(name);\n    if (!request2) {\n      request2 = new remoteValue_1$1.RemoteValue(() => this.requestBfast(name));\n      this._children.set(name, request2);\n    }\n    return request2.get();\n  }\n  async getLocalBfast(name, inflate2 = false) {\n    let buffer = await this.getBuffer(name);\n    if (!buffer)\n      return void 0;\n    if (inflate2) {\n      buffer = pako.inflateRaw(buffer).buffer;\n    }\n    return new BFast({ buffer }, 0, name);\n  }\n  async getBuffer(name) {\n    const ranges = await this.getRanges();\n    const range = ranges.get(name);\n    if (!range)\n      return void 0;\n    const buffer = await this.request(range, name);\n    return buffer;\n  }\n  async getArray(name) {\n    const buffer = await this.getBuffer(name);\n    if (!buffer)\n      return void 0;\n    const type = name.split(\":\")[0];\n    const Ctor = typeConstructor(type);\n    const array = new Ctor(buffer);\n    return array;\n  }\n  async getInt32Array(name) {\n    const buffer = await this.getBuffer(name);\n    if (!buffer)\n      return;\n    return new Int32Array(buffer);\n  }\n  async getFloat32Array(name) {\n    const buffer = await this.getBuffer(name);\n    if (!buffer)\n      return;\n    return new Float32Array(buffer);\n  }\n  async getBigInt64Array(name) {\n    const buffer = await this.getBuffer(name);\n    if (!buffer)\n      return;\n    return new BigInt64Array(buffer);\n  }\n  async getUint16Array(name) {\n    const buffer = await this.getBuffer(name);\n    if (!buffer)\n      return;\n    return new Uint16Array(buffer);\n  }\n  async getValue(name, index) {\n    const array = await this.getValues(name, index, 1);\n    return array == null ? void 0 : array[0];\n  }\n  async getRange(name) {\n    const ranges = await this.getRanges();\n    return ranges.get(name);\n  }\n  async getValues(name, index, count) {\n    if (index < 0 || count < 1)\n      return void 0;\n    const range = await this.getRange(name);\n    if (!range)\n      return void 0;\n    const [size, ctor] = parseName(name);\n    if (size < 0)\n      return void 0;\n    const start = Math.min(range.start + index * size, range.end);\n    const end = Math.min(start + size * count, range.end);\n    const dataRange = new Range(start, end);\n    if (dataRange.length <= 0)\n      return void 0;\n    const buffer = await this.request(dataRange, `${name}[${index.toString()}]`);\n    if (!buffer)\n      return void 0;\n    const array = new ctor(buffer);\n    return array;\n  }\n  async getBytes(name) {\n    const buffer = await this.getBuffer(name);\n    if (!buffer)\n      return void 0;\n    const array = new Uint8Array(buffer);\n    return array;\n  }\n  async getRow(index) {\n    const ranges = await this.getRanges();\n    if (!ranges)\n      return void 0;\n    const result = /* @__PURE__ */ new Map();\n    const promises = [];\n    for (const name of ranges.keys()) {\n      const p = this.getValue(name, index).then((v) => result.set(name, v));\n      promises.push(p);\n    }\n    await Promise.all(promises);\n    return result;\n  }\n  async forceDownload() {\n    if (this.source instanceof ArrayBuffer) {\n      console.log(\"Ignoring forceDownload on local buffer.\");\n      return;\n    }\n    const buffer = await this.remote(void 0, this.name);\n    if (!buffer)\n      throw new Error(\"Failed to download BFAST.\");\n    this.source = buffer;\n  }\n  async requestBfast(name) {\n    const ranges = await this.getRanges();\n    const range = ranges.get(name);\n    if (!range)\n      return void 0;\n    const result = new BFast({ buffer: this.source }, this.offset + range.start, this.name + \".\" + name);\n    return result;\n  }\n  async requestRanges() {\n    const header = await this.getHeader();\n    const buffer = await this.request(new Range(32, 32 + header.numArrays * 16), \"Ranges\");\n    if (!buffer)\n      throw new Error(\"Could not get BFAST Ranges.\");\n    const array = new Uint32Array(buffer);\n    const ranges = [];\n    for (let i = 0; i < array.length; i += 4) {\n      if (array[i + 1] !== 0 || array[i + 3] !== 0) {\n        throw new Error(\"Invalid Bfast. 64 bit ranges not supported\");\n      }\n      ranges.push(new Range(array[i], array[i + 2]));\n    }\n    const names = await this.requestNames(ranges[0]);\n    if (ranges.length !== names.length + 1) {\n      throw new Error(\"Mismatched ranges and names count\");\n    }\n    const map = /* @__PURE__ */ new Map();\n    for (let i = 0; i < names.length; i++) {\n      map.set(names[i], ranges[i + 1]);\n    }\n    return map;\n  }\n  async requestNames(range) {\n    const buffer = await this.request(range, \"Names\");\n    const names = new TextDecoder(\"utf-8\").decode(buffer);\n    const result = names.slice(0, -1).split(\"\\0\");\n    return result;\n  }\n  async requestHeader() {\n    const buffer = await this.request(new Range(0, 32), \"Header\");\n    if (!buffer)\n      throw new Error(\"Could not get BFAST Header\");\n    const result = BFastHeader.createFromBuffer(buffer);\n    return result;\n  }\n  async request(range, label) {\n    var _a2, _b2;\n    const buffer = (_b2 = (_a2 = this.local(range, label)) != null ? _a2 : await this.remote(range, label)) != null ? _b2 : await this.remote(void 0, label);\n    if (!buffer) {\n      throw new Error(`Could not load vim at ${this.source}`);\n    }\n    if (buffer.byteLength > range.length) {\n      this.source = buffer;\n      return this.local(range, label);\n    }\n    return buffer;\n  }\n  local(range, label) {\n    if (!(this.source instanceof ArrayBuffer))\n      return void 0;\n    const r = range.offset(this.offset);\n    return this.source.slice(r.start, r.end);\n  }\n  async remote(range, label) {\n    var _a2;\n    if (!(this.source instanceof remoteBuffer_1.RemoteBuffer))\n      return void 0;\n    const r = range == null ? void 0 : range.offset(this.offset);\n    const buffer = await this.source.http(r, `${this.name}.${label}`);\n    if (range && ((_a2 = buffer == null ? void 0 : buffer.byteLength) != null ? _a2 : 0) < range.length) {\n      console.log(\"Range request request failed.\");\n      return void 0;\n    }\n    return buffer;\n  }\n  async getSelf() {\n    const header = await this._header.get();\n    const range = new Range(0, header.dataEnd);\n    const buffer = await this.request(range, this.name);\n    const result = new BFast({ buffer }, 0, this.name);\n    return result;\n  }\n}\nbfast.BFast = BFast;\nvar g3d = {};\nObject.defineProperty(g3d, \"__esModule\", { value: true });\ng3d.G3d = g3d.VimAttributes = void 0;\nconst bfast_1 = bfast;\nclass VimAttributes {\n}\ng3d.VimAttributes = VimAttributes;\nVimAttributes.positions = \"g3d:vertex:position:0:float32:3\";\nVimAttributes.indices = \"g3d:corner:index:0:int32:1\";\nVimAttributes.instanceMeshes = \"g3d:instance:mesh:0:int32:1\";\nVimAttributes.instanceTransforms = \"g3d:instance:transform:0:float32:16\";\nVimAttributes.instanceNodes = \"g3d:instance:element:0:int32:1\";\nVimAttributes.instanceFlags = \"g3d:instance:flags:0:uint16:1\";\nVimAttributes.meshSubmeshes = \"g3d:mesh:submeshoffset:0:int32:1\";\nVimAttributes.submeshIndexOffsets = \"g3d:submesh:indexoffset:0:int32:1\";\nVimAttributes.submeshMaterials = \"g3d:submesh:material:0:int32:1\";\nVimAttributes.materialColors = \"g3d:material:color:0:float32:4\";\nVimAttributes.all = [\n  VimAttributes.positions,\n  VimAttributes.indices,\n  VimAttributes.instanceMeshes,\n  VimAttributes.instanceTransforms,\n  VimAttributes.instanceFlags,\n  VimAttributes.meshSubmeshes,\n  VimAttributes.submeshIndexOffsets,\n  VimAttributes.submeshMaterials,\n  VimAttributes.materialColors\n];\nclass G3d {\n  constructor(instanceMeshes, instanceFlags, instanceTransforms, instanceNodes, meshSubmeshes, submeshIndexOffsets, submeshMaterials, indices, positions, materialColors) {\n    this.DEFAULT_COLOR = new Float32Array([1, 1, 1, 1]);\n    this.getVertexCount = () => this.positions.length / G3d.POSITION_SIZE;\n    this.getIndexCount = () => this.indices.length;\n    this.getMeshCount = () => this.meshSubmeshes.length;\n    this.getInstanceCount = () => this.instanceMeshes.length;\n    this.getMaterialCount = () => this.materialColors.length / G3d.COLOR_SIZE;\n    this.instanceMeshes = instanceMeshes;\n    this.instanceFlags = instanceFlags;\n    this.instanceTransforms = instanceTransforms;\n    this.instanceNodes = instanceNodes;\n    this.meshSubmeshes = meshSubmeshes;\n    this.submeshIndexOffset = submeshIndexOffsets;\n    this.submeshMaterial = submeshMaterials;\n    this.indices = indices instanceof Uint32Array ? indices : new Uint32Array(indices.buffer);\n    this.positions = positions;\n    this.materialColors = materialColors;\n    if (this.instanceFlags === void 0) {\n      this.instanceFlags = new Uint16Array(this.instanceMeshes.length);\n    }\n    if (this.instanceNodes === void 0) {\n      this.instanceNodes = new Int32Array(instanceMeshes.length);\n      for (let i = 0; i < this.instanceNodes.length; i++) {\n        this.instanceNodes[i] = i;\n      }\n    }\n    this.meshVertexOffsets = this.computeMeshVertexOffsets();\n    this.rebaseIndices();\n    this.meshInstances = this.computeMeshInstances();\n    this.meshOpaqueCount = this.computeMeshOpaqueCount();\n    this.sortSubmeshes();\n    const range = this.computeSubmeshVertexRange();\n    this.submeshVertexStart = range.start;\n    this.submeshVertexEnd = range.end;\n  }\n  computeSubmeshVertexRange() {\n    const submeshCount = this.getSubmeshCount();\n    const start = new Int32Array(submeshCount);\n    const end = new Int32Array(submeshCount);\n    for (let sub = 0; sub < submeshCount; sub++) {\n      let min = Number.MAX_SAFE_INTEGER;\n      let max = Number.MIN_SAFE_INTEGER;\n      const subStart = this.getSubmeshIndexStart(sub);\n      const subEnd = this.getSubmeshIndexEnd(sub);\n      for (let i = subStart; i < subEnd; i++) {\n        const index = this.indices[i];\n        min = Math.min(min, index);\n        max = Math.max(min, index);\n      }\n      start[sub] = min;\n      end[sub] = max;\n    }\n    return { start, end };\n  }\n  static async createFromPath(path) {\n    const f = await fetch(path);\n    const buffer = await f.arrayBuffer();\n    const bfast2 = new bfast_1.BFast({ buffer });\n    return this.createFromBfast(bfast2);\n  }\n  static async createFromBfast(bfast2) {\n    const values = await Promise.all([\n      bfast2.getInt32Array(VimAttributes.instanceMeshes),\n      bfast2.getUint16Array(VimAttributes.instanceFlags),\n      bfast2.getFloat32Array(VimAttributes.instanceTransforms),\n      bfast2.getInt32Array(VimAttributes.instanceNodes),\n      bfast2.getInt32Array(VimAttributes.meshSubmeshes),\n      bfast2.getInt32Array(VimAttributes.submeshIndexOffsets),\n      bfast2.getInt32Array(VimAttributes.submeshMaterials),\n      bfast2.getInt32Array(VimAttributes.indices),\n      bfast2.getFloat32Array(VimAttributes.positions),\n      bfast2.getFloat32Array(VimAttributes.materialColors)\n    ]);\n    return new G3d(...values);\n  }\n  computeMeshVertexOffsets() {\n    const result = new Int32Array(this.getMeshCount());\n    for (let m = 0; m < result.length; m++) {\n      let min = Number.MAX_SAFE_INTEGER;\n      const start = this.getMeshIndexStart(m, \"all\");\n      const end = this.getMeshIndexEnd(m, \"all\");\n      for (let i = start; i < end; i++) {\n        min = Math.min(min, this.indices[i]);\n      }\n      result[m] = min;\n    }\n    return result;\n  }\n  computeMeshInstances() {\n    const result = new Array(this.getMeshCount());\n    for (let i = 0; i < this.instanceMeshes.length; i++) {\n      const mesh = this.instanceMeshes[i];\n      if (mesh < 0)\n        continue;\n      const instanceIndices = result[mesh];\n      if (instanceIndices)\n        instanceIndices.push(i);\n      else\n        result[mesh] = [i];\n    }\n    return result;\n  }\n  sortSubmeshes() {\n    const submeshEnd = this.computeSubmeshEnd();\n    const meshIndexOffsets = this.computeMeshIndexOffsets();\n    const meshCount = this.getMeshCount();\n    const meshReordered = new Array(meshCount);\n    const submeshArrays = [\n      this.submeshIndexOffset,\n      this.submeshMaterial,\n      submeshEnd\n    ];\n    const largestMesh = this.reorderSubmeshes(submeshArrays, meshReordered);\n    this.reorderIndices(meshIndexOffsets, submeshEnd, meshReordered, largestMesh);\n  }\n  computeSubmeshEnd() {\n    const submeshCount = this.getSubmeshCount();\n    const result = new Int32Array(submeshCount);\n    for (let s = 0; s < submeshCount; s++) {\n      result[s] = this.getSubmeshIndexEnd(s);\n    }\n    return result;\n  }\n  computeMeshIndexOffsets() {\n    const meshCount = this.getMeshCount();\n    const result = new Int32Array(meshCount);\n    for (let m = 0; m < meshCount; m++) {\n      result[m] = this.getMeshIndexStart(m, \"all\");\n    }\n    return result;\n  }\n  reorderSubmeshes(submeshArrays, reordered) {\n    const meshCount = this.getMeshCount();\n    let largestMesh = 0;\n    for (let m = 0; m < meshCount; m++) {\n      const subStart = this.getMeshSubmeshStart(m, \"all\");\n      const subEnd = this.getMeshSubmeshEnd(m, \"all\");\n      if (subEnd - subStart <= 1) {\n        continue;\n      }\n      largestMesh = Math.max(largestMesh, this.getMeshIndexCount(m, \"all\"));\n      reordered[m] = this.Sort(subStart, subEnd, (i) => this.getSubmeshAlpha(i), submeshArrays);\n    }\n    return largestMesh;\n  }\n  Sort(start, end, criterion, arrays) {\n    let swapped = false;\n    while (true) {\n      let loop = false;\n      for (let i = start; i < end - 1; i++) {\n        if (criterion(i) < criterion(i + 1)) {\n          loop = true;\n          swapped = true;\n          for (let j = 0; j < arrays.length; j++) {\n            const array = arrays[j];\n            const t = array[i];\n            array[i] = array[i + 1];\n            array[i + 1] = t;\n          }\n        }\n      }\n      if (!loop) {\n        break;\n      }\n    }\n    return swapped;\n  }\n  reorderIndices(meshIndexOffsets, submeshEnd, meshReordered, bufferSize) {\n    const meshCount = this.getMeshCount();\n    const buffer = new Float32Array(bufferSize);\n    for (let m = 0; m < meshCount; m++) {\n      if (!meshReordered[m])\n        continue;\n      const meshOffset = meshIndexOffsets[m];\n      const subStart = this.getMeshSubmeshStart(m, \"all\");\n      const subEnd = this.getMeshSubmeshEnd(m, \"all\");\n      let index = 0;\n      for (let s = subStart; s < subEnd; s++) {\n        const start = this.submeshIndexOffset[s];\n        const end = submeshEnd[s];\n        this.submeshIndexOffset[s] = meshOffset + index;\n        for (let i = start; i < end; i++) {\n          buffer[index++] = this.indices[i];\n        }\n      }\n      for (let i = 0; i < index; i++) {\n        this.indices[meshOffset + i] = buffer[i];\n      }\n    }\n  }\n  rebaseIndices() {\n    const count = this.getMeshCount();\n    for (let m = 0; m < count; m++) {\n      const offset = this.meshVertexOffsets[m];\n      const start = this.getMeshIndexStart(m, \"all\");\n      const end = this.getMeshIndexEnd(m, \"all\");\n      for (let i = start; i < end; i++) {\n        this.indices[i] -= offset;\n      }\n    }\n  }\n  unbaseIndices() {\n    const count = this.getMeshCount();\n    for (let m = 0; m < count; m++) {\n      const offset = this.meshVertexOffsets[m];\n      const start = this.getMeshIndexStart(m, \"all\");\n      const end = this.getMeshIndexEnd(m, \"all\");\n      for (let i = start; i < end; i++) {\n        this.indices[i] += offset;\n      }\n    }\n  }\n  computeMeshOpaqueCount() {\n    const result = new Int32Array(this.getMeshCount());\n    for (let m = 0; m < result.length; m++) {\n      const subStart = this.getMeshSubmeshStart(m, \"all\");\n      const subEnd = this.getMeshSubmeshEnd(m, \"all\");\n      for (let s = subStart; s < subEnd; s++) {\n        const alpha = this.getSubmeshAlpha(s);\n        result[m] += alpha === 1 ? 1 : 0;\n      }\n    }\n    return result;\n  }\n  remapInstances(instances) {\n    const map = /* @__PURE__ */ new Map();\n    for (let i = 0; i < instances.length; i++) {\n      map.set(this.instanceNodes[i], i);\n    }\n    return instances.map((i) => map.get(i));\n  }\n  getMeshInstanceCount(mesh) {\n    var _a2, _b2;\n    return (_b2 = (_a2 = this.meshInstances[mesh]) == null ? void 0 : _a2.length) != null ? _b2 : 0;\n  }\n  getMeshIndexStart(mesh, section = \"all\") {\n    const sub = this.getMeshSubmeshStart(mesh, section);\n    return this.getSubmeshIndexStart(sub);\n  }\n  getMeshIndexEnd(mesh, section = \"all\") {\n    const sub = this.getMeshSubmeshEnd(mesh, section);\n    return this.getSubmeshIndexEnd(sub - 1);\n  }\n  getMeshIndexCount(mesh, section = \"all\") {\n    return this.getMeshIndexEnd(mesh, section) - this.getMeshIndexStart(mesh, section);\n  }\n  getMeshVertexStart(mesh) {\n    return this.meshVertexOffsets[mesh];\n  }\n  getMeshVertexEnd(mesh) {\n    return mesh < this.meshVertexOffsets.length - 1 ? this.meshVertexOffsets[mesh + 1] : this.getVertexCount();\n  }\n  getMeshVertexCount(mesh) {\n    return this.getMeshVertexEnd(mesh) - this.getMeshVertexStart(mesh);\n  }\n  getMeshSubmeshStart(mesh, section = \"all\") {\n    if (section === \"transparent\") {\n      return this.getMeshSubmeshEnd(mesh, \"opaque\");\n    }\n    return this.meshSubmeshes[mesh];\n  }\n  getMeshSubmeshEnd(mesh, section = \"all\") {\n    if (section === \"opaque\") {\n      return this.meshSubmeshes[mesh] + this.meshOpaqueCount[mesh];\n    }\n    return mesh < this.meshSubmeshes.length - 1 ? this.meshSubmeshes[mesh + 1] : this.getSubmeshCount();\n  }\n  getMeshSubmeshCount(mesh, section = \"all\") {\n    const end = this.getMeshSubmeshEnd(mesh, section);\n    const start = this.getMeshSubmeshStart(mesh, section);\n    return end - start;\n  }\n  getMeshHasTransparency(mesh) {\n    return this.getMeshSubmeshCount(mesh, \"transparent\") > 0;\n  }\n  getSubmeshIndexStart(submesh) {\n    return submesh < this.submeshIndexOffset.length ? this.submeshIndexOffset[submesh] : this.indices.length;\n  }\n  getSubmeshIndexEnd(submesh) {\n    return submesh < this.submeshIndexOffset.length - 1 ? this.submeshIndexOffset[submesh + 1] : this.indices.length;\n  }\n  getSubmeshIndexCount(submesh) {\n    return this.getSubmeshIndexEnd(submesh) - this.getSubmeshIndexStart(submesh);\n  }\n  getSubmeshVertexStart(submesh) {\n    return this.submeshVertexStart[submesh];\n  }\n  getSubmeshVertexEnd(submesh) {\n    return this.submeshVertexEnd[submesh];\n  }\n  getSubmeshVertexCount(submesh) {\n    return this.getSubmeshVertexEnd(submesh) - this.getSubmeshVertexStart(submesh);\n  }\n  getSubmeshColor(submesh) {\n    return this.getMaterialColor(this.submeshMaterial[submesh]);\n  }\n  getSubmeshAlpha(submesh) {\n    return this.getMaterialAlpha(this.submeshMaterial[submesh]);\n  }\n  getSubmeshIsTransparent(submesh) {\n    return this.getSubmeshAlpha(submesh) < 1;\n  }\n  getSubmeshCount() {\n    return this.submeshIndexOffset.length;\n  }\n  getInstanceHasFlag(instance, flag) {\n    return (this.instanceFlags[instance] & flag) > 0;\n  }\n  getInstanceMesh(instance) {\n    return this.instanceMeshes[instance];\n  }\n  getInstanceMatrix(instance) {\n    return this.instanceTransforms.subarray(instance * G3d.MATRIX_SIZE, (instance + 1) * G3d.MATRIX_SIZE);\n  }\n  getMaterialColor(material) {\n    if (material < 0)\n      return this.DEFAULT_COLOR;\n    return this.materialColors.subarray(material * G3d.COLOR_SIZE, (material + 1) * G3d.COLOR_SIZE);\n  }\n  getMaterialAlpha(material) {\n    if (material < 0)\n      return 1;\n    const index = material * G3d.COLOR_SIZE + G3d.COLOR_SIZE - 1;\n    const result = this.materialColors[index];\n    return result;\n  }\n  append(other) {\n    const _instanceFlags = new Uint16Array(this.instanceFlags.length + other.instanceFlags.length);\n    _instanceFlags.set(this.instanceFlags);\n    _instanceFlags.set(other.instanceFlags, this.instanceFlags.length);\n    const _instanceMeshes = new Int32Array(this.instanceMeshes.length + other.instanceMeshes.length);\n    _instanceMeshes.set(this.instanceMeshes);\n    _instanceMeshes.set(other.instanceMeshes.map((m) => m >= 0 ? m + this.meshSubmeshes.length : -1), this.instanceMeshes.length);\n    const _instanceTransforms = new Float32Array(this.instanceTransforms.length + other.instanceTransforms.length);\n    _instanceTransforms.set(this.instanceTransforms);\n    _instanceTransforms.set(other.instanceTransforms, this.instanceTransforms.length);\n    const _positions = new Float32Array(this.positions.length + other.positions.length);\n    _positions.set(this.positions);\n    _positions.set(other.positions, this.positions.length);\n    this.unbaseIndices();\n    other.unbaseIndices();\n    const _indices = new Uint32Array(this.indices.length + other.indices.length);\n    _indices.set(this.indices);\n    _indices.set(other.indices.map((i) => i + this.positions.length / 3), this.indices.length);\n    this.rebaseIndices();\n    other.rebaseIndices();\n    const _meshSubmeshes = new Int32Array(this.meshSubmeshes.length + other.meshSubmeshes.length);\n    _meshSubmeshes.set(this.meshSubmeshes);\n    _meshSubmeshes.set(other.meshSubmeshes.map((s) => s + this.submeshIndexOffset.length), this.meshSubmeshes.length);\n    const _submeshIndexOffsets = new Int32Array(this.submeshIndexOffset.length + other.submeshIndexOffset.length);\n    _submeshIndexOffsets.set(this.submeshIndexOffset);\n    _submeshIndexOffsets.set(other.submeshIndexOffset.map((s) => s + this.indices.length), this.submeshIndexOffset.length);\n    const _submeshMaterials = new Int32Array(this.submeshMaterial.length + other.submeshMaterial.length);\n    _submeshMaterials.set(this.submeshMaterial);\n    _submeshMaterials.set(other.submeshMaterial.map((s) => s >= 0 ? s + this.materialColors.length / 4 : -1), this.submeshMaterial.length);\n    const _materialColors = new Float32Array(this.materialColors.length + other.materialColors.length);\n    _materialColors.set(this.materialColors);\n    _materialColors.set(other.materialColors, this.materialColors.length);\n    const g3d2 = new G3d(_instanceMeshes, _instanceFlags, _instanceTransforms, void 0, _meshSubmeshes, _submeshIndexOffsets, _submeshMaterials, _indices, _positions, _materialColors);\n    return g3d2;\n  }\n  validate() {\n    const isPresent = (attribute, label) => {\n      if (!attribute) {\n        throw new Error(`Missing Attribute Buffer: ${label}`);\n      }\n    };\n    isPresent(this.positions, \"position\");\n    isPresent(this.indices, \"indices\");\n    isPresent(this.instanceMeshes, \"instanceMeshes\");\n    isPresent(this.instanceTransforms, \"instanceTransforms\");\n    isPresent(this.meshSubmeshes, \"meshSubmeshes\");\n    isPresent(this.submeshIndexOffset, \"submeshIndexOffset\");\n    isPresent(this.submeshMaterial, \"submeshMaterial\");\n    isPresent(this.materialColors, \"materialColors\");\n    if (this.positions.length % G3d.POSITION_SIZE !== 0) {\n      throw new Error(\"Invalid position buffer, must be divisible by \" + G3d.POSITION_SIZE);\n    }\n    if (this.indices.length % 3 !== 0) {\n      throw new Error(\"Invalid Index Count, must be divisible by 3\");\n    }\n    for (let i = 0; i < this.indices.length; i++) {\n      if (this.indices[i] < 0 || this.indices[i] >= this.positions.length) {\n        throw new Error(\"Vertex index out of bound\");\n      }\n    }\n    if (this.instanceMeshes.length !== this.instanceTransforms.length / G3d.MATRIX_SIZE) {\n      throw new Error(\"Instance buffers mismatched\");\n    }\n    if (this.instanceTransforms.length % G3d.MATRIX_SIZE !== 0) {\n      throw new Error(\"Invalid InstanceTransform buffer, must respect arity \" + G3d.MATRIX_SIZE);\n    }\n    for (let i = 0; i < this.instanceMeshes.length; i++) {\n      if (this.instanceMeshes[i] >= this.meshSubmeshes.length) {\n        throw new Error(\"Instance Mesh Out of range.\");\n      }\n    }\n    for (let i = 0; i < this.meshSubmeshes.length; i++) {\n      if (this.meshSubmeshes[i] < 0 || this.meshSubmeshes[i] >= this.submeshIndexOffset.length) {\n        throw new Error(\"MeshSubmeshOffset out of bound at\");\n      }\n    }\n    for (let i = 0; i < this.meshSubmeshes.length - 1; i++) {\n      if (this.meshSubmeshes[i] >= this.meshSubmeshes[i + 1]) {\n        throw new Error(\"MeshSubmesh out of sequence.\");\n      }\n    }\n    if (this.submeshIndexOffset.length !== this.submeshMaterial.length) {\n      throw new Error(\"Mismatched submesh buffers\");\n    }\n    for (let i = 0; i < this.submeshIndexOffset.length; i++) {\n      if (this.submeshIndexOffset[i] < 0 || this.submeshIndexOffset[i] >= this.indices.length) {\n        throw new Error(\"SubmeshIndexOffset out of bound\");\n      }\n    }\n    for (let i = 0; i < this.submeshIndexOffset.length; i++) {\n      if (this.submeshIndexOffset[i] % 3 !== 0) {\n        throw new Error(\"Invalid SubmeshIndexOffset, must be divisible by 3\");\n      }\n    }\n    for (let i = 0; i < this.submeshIndexOffset.length - 1; i++) {\n      if (this.submeshIndexOffset[i] >= this.submeshIndexOffset[i + 1]) {\n        throw new Error(\"SubmeshIndexOffset out of sequence.\");\n      }\n    }\n    for (let i = 0; i < this.submeshMaterial.length; i++) {\n      if (this.submeshMaterial[i] >= this.materialColors.length) {\n        throw new Error(\"submeshMaterial out of bound\");\n      }\n    }\n    if (this.materialColors.length % G3d.COLOR_SIZE !== 0) {\n      throw new Error(\"Invalid material color buffer, must be divisible by \" + G3d.COLOR_SIZE);\n    }\n    console.assert(this.meshInstances.length === this.getMeshCount());\n    console.assert(this.meshOpaqueCount.length === this.getMeshCount());\n    console.assert(this.meshSubmeshes.length === this.getMeshCount());\n    console.assert(this.meshVertexOffsets.length === this.getMeshCount());\n    for (let m = 0; m < this.getMeshCount(); m++) {\n      console.assert(this.getMeshSubmeshCount(m, \"opaque\") + this.getMeshSubmeshCount(m, \"transparent\") === this.getMeshSubmeshCount(m, \"all\"));\n      console.assert(this.getMeshIndexCount(m, \"opaque\") + this.getMeshIndexCount(m, \"transparent\") === this.getMeshIndexCount(m, \"all\"));\n    }\n  }\n}\ng3d.G3d = G3d;\nG3d.MATRIX_SIZE = 16;\nG3d.COLOR_SIZE = 4;\nG3d.POSITION_SIZE = 3;\nvar remoteVimx = {};\nvar g3dMaterials = {};\nObject.defineProperty(g3dMaterials, \"__esModule\", { value: true });\ng3dMaterials.G3dMaterial = g3dMaterials.MaterialAttributes = void 0;\nclass MaterialAttributes {\n}\ng3dMaterials.MaterialAttributes = MaterialAttributes;\nMaterialAttributes.materialColors = \"g3d:material:color:0:float32:4\";\nclass G3dMaterial {\n  constructor(materialColors) {\n    this.getMaterialCount = () => this.materialColors.length / G3dMaterial.COLOR_SIZE;\n    this.materialColors = materialColors;\n  }\n  static async createFromBfast(bfast2) {\n    const mats = await bfast2.getFloat32Array(MaterialAttributes.materialColors);\n    return new G3dMaterial(mats);\n  }\n  getMaterialColor(material) {\n    if (material < 0)\n      return G3dMaterial.DEFAULT_COLOR;\n    return this.materialColors.subarray(material * G3dMaterial.COLOR_SIZE, (material + 1) * G3dMaterial.COLOR_SIZE);\n  }\n  getMaterialAlpha(material) {\n    if (material < 0)\n      return 1;\n    const index = material * G3dMaterial.COLOR_SIZE + G3dMaterial.COLOR_SIZE - 1;\n    const result = this.materialColors[index];\n    return result;\n  }\n}\ng3dMaterials.G3dMaterial = G3dMaterial;\nG3dMaterial.COLOR_SIZE = 4;\nG3dMaterial.DEFAULT_COLOR = new Float32Array([1, 1, 1, 1]);\nvar g3dChunk = {};\nObject.defineProperty(g3dChunk, \"__esModule\", { value: true });\ng3dChunk.G3dChunk = g3dChunk.MeshAttributes = void 0;\nclass MeshAttributes {\n}\ng3dChunk.MeshAttributes = MeshAttributes;\nMeshAttributes.meshSubmeshOffset = \"g3d:mesh:submeshoffset:0:int32:1\";\nMeshAttributes.meshOpaqueSubmeshCount = \"g3d:mesh:opaquesubmeshcount:0:int32:1\";\nMeshAttributes.submeshIndexOffsets = \"g3d:submesh:indexoffset:0:int32:1\";\nMeshAttributes.submeshVertexOffsets = \"g3d:submesh:vertexoffset:0:int32:1\";\nMeshAttributes.submeshMaterials = \"g3d:submesh:material:0:int32:1\";\nMeshAttributes.positions = \"g3d:vertex:position:0:float32:3\";\nMeshAttributes.indices = \"g3d:corner:index:0:int32:1\";\nclass G3dChunk {\n  constructor(meshSubmeshOffset, meshOpaqueSubmeshCount, submeshIndexOffsets, submeshVertexOffsets, submeshMaterials, indices, positions) {\n    this.meshSubmeshOffset = meshSubmeshOffset;\n    this.meshOpaqueSubmeshCount = meshOpaqueSubmeshCount;\n    this.submeshIndexOffset = submeshIndexOffsets;\n    this.submeshVertexOffset = submeshVertexOffsets;\n    this.submeshMaterial = submeshMaterials;\n    this.indices = indices instanceof Uint32Array ? indices : new Uint32Array(indices.buffer);\n    this.positions = positions;\n  }\n  static async createFromBfast(bfast2) {\n    const values = await Promise.all([\n      bfast2.getInt32Array(MeshAttributes.meshSubmeshOffset),\n      bfast2.getInt32Array(MeshAttributes.meshOpaqueSubmeshCount),\n      bfast2.getInt32Array(MeshAttributes.submeshIndexOffsets),\n      bfast2.getInt32Array(MeshAttributes.submeshVertexOffsets),\n      bfast2.getInt32Array(MeshAttributes.submeshMaterials),\n      bfast2.getInt32Array(MeshAttributes.indices),\n      bfast2.getFloat32Array(MeshAttributes.positions)\n    ]);\n    return new G3dChunk(...values);\n  }\n}\ng3dChunk.G3dChunk = G3dChunk;\nG3dChunk.COLOR_SIZE = 4;\nG3dChunk.POSITION_SIZE = 3;\nG3dChunk.DEFAULT_COLOR = new Float32Array([1, 1, 1, 1]);\nvar g3dScene = {};\nObject.defineProperty(g3dScene, \"__esModule\", { value: true });\ng3dScene.G3dScene = g3dScene.SceneAttributes = void 0;\nconst g3d_1$1 = g3d;\nclass SceneAttributes {\n}\ng3dScene.SceneAttributes = SceneAttributes;\nSceneAttributes.chunkCount = \"g3d:chunk:count:0:int32:1\";\nSceneAttributes.instanceMesh = \"g3d:instance:mesh:0:int32:1\";\nSceneAttributes.instanceMatrix = \"g3d:instance:transform:0:float32:16\";\nSceneAttributes.instanceNodes = \"g3d:instance:node:0:int32:1\";\nSceneAttributes.instanceGroups = \"g3d:instance:group:0:int32:1\";\nSceneAttributes.instanceTags = \"g3d:instance:tag:0:int64:1\";\nSceneAttributes.instanceFlags = \"g3d:instance:tag:0:uint16:1\";\nSceneAttributes.instanceMins = \"g3d:instance:min:0:float32:3\";\nSceneAttributes.instanceMaxs = \"g3d:instance:max:0:float32:3\";\nSceneAttributes.meshChunk = \"g3d:mesh:chunk:0:int32:1\";\nSceneAttributes.meshChunkIndices = \"g3d:mesh:chunkindex:0:int32:1\";\nSceneAttributes.meshIndexCounts = \"g3d:mesh:indexcount:0:int32:1\";\nSceneAttributes.meshVertexCounts = \"g3d:mesh:vertexcount:0:int32:1\";\nSceneAttributes.meshOpaqueIndexCount = \"g3d:mesh:opaqueindexcount:0:int32:1\";\nSceneAttributes.meshOpaqueVertexCount = \"g3d:mesh:opaquevertexcount:0:int32:1\";\nclass G3dScene {\n  constructor(chunkCount, instanceMeshes, instanceMatrices, instanceNodes, instanceGroups, instanceTags, instanceFlags, instanceMins, instanceMaxs, meshChunks, meshChunkIndices, meshIndexCounts, meshVertexCounts, meshOpaqueIndexCounts, meshOpaqueVertexCounts) {\n    this.chunkCount = chunkCount[0];\n    this.instanceMeshes = instanceMeshes;\n    this.instanceMatrices = instanceMatrices;\n    this.instanceNodes = instanceNodes;\n    this.instanceGroups = instanceGroups;\n    this.instanceTags = instanceTags;\n    this.instanceFlags = instanceFlags;\n    this.instanceMins = instanceMins;\n    this.instanceMaxs = instanceMaxs;\n    this.meshChunks = meshChunks;\n    this.meshChunkIndices = meshChunkIndices;\n    this.meshIndexCounts = meshIndexCounts;\n    this.meshVertexCounts = meshVertexCounts;\n    this.meshOpaqueIndexCounts = meshOpaqueIndexCounts;\n    this.meshOpaqueVertexCounts = meshOpaqueVertexCounts;\n    this.nodeToInstance = /* @__PURE__ */ new Map();\n    for (let i = 0; i < this.instanceNodes.length; i++) {\n      this.nodeToInstance.set(this.instanceNodes[i], i);\n    }\n  }\n  static async createFromBfast(bfast2) {\n    const values = await Promise.all([\n      bfast2.getInt32Array(SceneAttributes.chunkCount),\n      bfast2.getInt32Array(SceneAttributes.instanceMesh),\n      bfast2.getFloat32Array(SceneAttributes.instanceMatrix),\n      bfast2.getInt32Array(SceneAttributes.instanceNodes),\n      bfast2.getInt32Array(SceneAttributes.instanceGroups),\n      bfast2.getBigInt64Array(SceneAttributes.instanceTags),\n      bfast2.getUint16Array(SceneAttributes.instanceFlags),\n      bfast2.getFloat32Array(SceneAttributes.instanceMins),\n      bfast2.getFloat32Array(SceneAttributes.instanceMaxs),\n      bfast2.getInt32Array(SceneAttributes.meshChunk),\n      bfast2.getInt32Array(SceneAttributes.meshChunkIndices),\n      bfast2.getInt32Array(SceneAttributes.meshIndexCounts),\n      bfast2.getInt32Array(SceneAttributes.meshVertexCounts),\n      bfast2.getInt32Array(SceneAttributes.meshOpaqueIndexCount),\n      bfast2.getInt32Array(SceneAttributes.meshOpaqueVertexCount)\n    ]);\n    return new G3dScene(...values);\n  }\n  getMeshCount() {\n    return this.meshChunks.length;\n  }\n  getMeshIndexCount(mesh, section) {\n    const all = this.meshIndexCounts[mesh];\n    if (section === \"all\")\n      return all;\n    const opaque = this.meshOpaqueIndexCounts[mesh];\n    return section === \"opaque\" ? opaque : all - opaque;\n  }\n  getMeshVertexCount(mesh, section) {\n    const all = this.meshVertexCounts[mesh];\n    if (section === \"all\")\n      return all;\n    const opaque = this.meshOpaqueVertexCounts[mesh];\n    return section === \"opaque\" ? opaque : all - opaque;\n  }\n  getInstanceMin(instance) {\n    return this.instanceMins.subarray(instance * g3d_1$1.G3d.POSITION_SIZE);\n  }\n  getInstanceMax(instance) {\n    return this.instanceMaxs.subarray(instance * g3d_1$1.G3d.POSITION_SIZE);\n  }\n  getInstanceMatrix(instance) {\n    return this.instanceMatrices.subarray(instance * g3d_1$1.G3d.MATRIX_SIZE, (instance + 1) * g3d_1$1.G3d.MATRIX_SIZE);\n  }\n}\ng3dScene.G3dScene = G3dScene;\nvar vimHeader = {};\nObject.defineProperty(vimHeader, \"__esModule\", { value: true });\nvimHeader.requestHeader = void 0;\nasync function requestHeader(bfast2) {\n  const header = await bfast2.getBuffer(\"header\");\n  const pairs = new TextDecoder(\"utf-8\").decode(header).split(\"\\n\");\n  const map = new Map(pairs.map((p) => p.split(\"=\")).map((p) => [p[0], p[1]]));\n  return {\n    vim: map.get(\"vim\"),\n    vimx: map.get(\"vimx\"),\n    id: map.get(\"id\"),\n    revision: map.get(\"revision\"),\n    generator: map.get(\"generator\"),\n    created: map.get(\"created\"),\n    schema: map.get(\"schema\")\n  };\n}\nvimHeader.requestHeader = requestHeader;\nvar g3dMesh = {};\nObject.defineProperty(g3dMesh, \"__esModule\", { value: true });\ng3dMesh.G3dMesh = void 0;\nconst g3d_1 = g3d;\nclass G3dMesh {\n  constructor(scene, chunk, index) {\n    this.scene = scene;\n    this.chunk = chunk;\n    this.index = index;\n  }\n  getVertexStart(section = \"all\") {\n    const sub = this.getSubmeshStart(section);\n    return this.getSubmeshVertexStart(sub);\n  }\n  getVertexEnd(section = \"all\") {\n    const sub = this.getSubmeshEnd(section);\n    return this.getSubmeshVertexStart(sub);\n  }\n  getVertexCount(section = \"all\") {\n    return this.getVertexEnd(section) - this.getVertexStart(section);\n  }\n  getIndexStart(section = \"all\") {\n    const sub = this.getSubmeshStart(section);\n    return this.getSubmeshIndexStart(sub);\n  }\n  getIndexEnd(section = \"all\") {\n    const sub = this.getSubmeshEnd(section);\n    return this.getSubmeshIndexStart(sub);\n  }\n  getIndexCount(section = \"all\") {\n    return this.getIndexEnd(section) - this.getIndexStart(section);\n  }\n  getHasTransparency(mesh) {\n    return this.getSubmeshCount(\"transparent\") > 0;\n  }\n  getSubmeshStart(section) {\n    if (section === \"all\" || section === \"opaque\") {\n      return this.chunk.meshSubmeshOffset[this.index];\n    }\n    return this.chunk.meshSubmeshOffset[this.index] + this.chunk.meshOpaqueSubmeshCount[this.index];\n  }\n  getSubmeshEnd(section) {\n    if (section === \"opaque\") {\n      return this.chunk.meshSubmeshOffset[this.index] + this.chunk.meshOpaqueSubmeshCount[this.index];\n    }\n    if (this.index + 1 < this.chunk.meshSubmeshOffset.length) {\n      return this.chunk.meshSubmeshOffset[this.index + 1];\n    }\n    return this.chunk.submeshIndexOffset.length;\n  }\n  getSubmeshCount(section) {\n    return this.getSubmeshEnd(section) - this.getSubmeshStart(section);\n  }\n  getSubmeshIndexStart(submesh) {\n    return submesh < this.chunk.submeshIndexOffset.length ? this.chunk.submeshIndexOffset[submesh] : this.chunk.indices.length;\n  }\n  getSubmeshIndexEnd(submesh) {\n    return submesh < this.chunk.submeshIndexOffset.length - 1 ? this.chunk.submeshIndexOffset[submesh + 1] : this.chunk.indices.length;\n  }\n  getSubmeshIndexCount(submesh) {\n    return this.getSubmeshIndexEnd(submesh) - this.getSubmeshIndexStart(submesh);\n  }\n  getSubmeshVertexStart(submesh) {\n    return submesh < this.chunk.submeshIndexOffset.length ? this.chunk.submeshVertexOffset[submesh] : this.chunk.positions.length / g3d_1.G3d.POSITION_SIZE;\n  }\n  getSubmeshVertexEnd(submesh) {\n    return submesh < this.chunk.submeshVertexOffset.length - 1 ? this.chunk.submeshVertexOffset[submesh + 1] : this.chunk.positions.length / g3d_1.G3d.POSITION_SIZE;\n  }\n  getSubmeshVertexCount(submesh) {\n    return this.getSubmeshVertexEnd(submesh) - this.getSubmeshVertexStart(submesh);\n  }\n}\ng3dMesh.G3dMesh = G3dMesh;\nObject.defineProperty(remoteVimx, \"__esModule\", { value: true });\nremoteVimx.RemoteVimx = void 0;\nconst g3dMaterials_1 = g3dMaterials;\nconst g3dChunk_1 = g3dChunk;\nconst g3dScene_1 = g3dScene;\nconst remoteValue_1 = remoteValue;\nconst vimHeader_1 = vimHeader;\nconst g3dMesh_1 = g3dMesh;\nclass RemoteVimx {\n  constructor(bfast2) {\n    this.chunkCache = /* @__PURE__ */ new Map();\n    this.bfast = bfast2;\n    this.scene = new remoteValue_1.RemoteValue(() => this.requestScene());\n  }\n  abort() {\n    this.bfast.abort();\n    this.scene.abort();\n    this.chunkCache.forEach((c) => c.abort());\n  }\n  async download() {\n    this.bfast.forceDownload();\n  }\n  async requestScene() {\n    const index = await this.bfast.getLocalBfast(\"scene\", true);\n    return g3dScene_1.G3dScene.createFromBfast(index);\n  }\n  async getHeader() {\n    return (0, vimHeader_1.requestHeader)(this.bfast);\n  }\n  async getScene() {\n    return this.scene.get();\n  }\n  async getMaterials() {\n    const mat = await this.bfast.getLocalBfast(\"materials\", true);\n    return g3dMaterials_1.G3dMaterial.createFromBfast(mat);\n  }\n  async getChunk(chunk) {\n    var cached = this.chunkCache.get(chunk);\n    if (cached !== void 0) {\n      return cached.get();\n    }\n    var value = new remoteValue_1.RemoteValue(() => this.requestChunk(chunk));\n    this.chunkCache.set(chunk, value);\n    return value.get();\n  }\n  async requestChunk(chunk) {\n    const chunkBFast = await this.bfast.getLocalBfast(`chunk_${chunk}`, true);\n    return g3dChunk_1.G3dChunk.createFromBfast(chunkBFast);\n  }\n  async getMesh(mesh) {\n    var scene = await this.scene.get();\n    var meshChunk = scene.meshChunks[mesh];\n    if (meshChunk === void 0)\n      return void 0;\n    var chunk = await this.getChunk(meshChunk);\n    if (chunk === void 0)\n      return void 0;\n    return new g3dMesh_1.G3dMesh(scene, chunk, scene.meshChunkIndices[mesh]);\n  }\n}\nremoteVimx.RemoteVimx = RemoteVimx;\nvar requester = {};\nObject.defineProperty(requester, \"__esModule\", { value: true });\nrequester.Requester = void 0;\nconst logging_1 = logging$1;\nconst retriableRequest_1 = retriableRequest;\nconst requestTracker_1 = requestTracker;\nclass Requester {\n  constructor(verbose = false) {\n    this.maxConcurency = 10;\n    this._queue = [];\n    this._active = /* @__PURE__ */ new Set();\n    this._logs = verbose ? new logging_1.DefaultLog() : new logging_1.NoLog();\n    this._tracker = new requestTracker_1.RequestTracker(void 0, this._logs);\n    this._tracker.onUpdate = (p) => {\n      var _a2;\n      return (_a2 = this.onProgress) == null ? void 0 : _a2.call(this, p);\n    };\n  }\n  abort() {\n    this._active.forEach((request2) => {\n      request2.abort();\n    });\n    this._active.clear();\n    this._queue.length = 0;\n  }\n  async http(url, headers = {}, label) {\n    const request2 = new retriableRequest_1.RetriableRequest(url, headers, void 0, \"arraybuffer\");\n    request2.msg = url;\n    this.enqueue(request2);\n    return new Promise((resolve, reject) => {\n      this._tracker.start(label);\n      request2.onProgress = (e) => {\n        this._tracker.update(label, e);\n      };\n      request2.onLoad = (result) => {\n        this._tracker.end(label);\n        resolve(result);\n        this.end(request2);\n      };\n      request2.onError = () => {\n        this._tracker.fail(label);\n        this.retry(request2);\n      };\n    });\n  }\n  enqueue(xhr) {\n    this._queue.push(xhr);\n    this.next();\n  }\n  retry(xhr) {\n    this._active.delete(xhr);\n    this.maxConcurency = Math.max(1, this.maxConcurency - 1);\n    setTimeout(() => this.enqueue(xhr), 2e3);\n  }\n  end(xhr) {\n    this._active.delete(xhr);\n    this.next();\n  }\n  next() {\n    if (this._queue.length === 0) {\n      return;\n    }\n    if (this._active.size >= this.maxConcurency) {\n      return;\n    }\n    const next = this._queue[0];\n    this._queue.shift();\n    this._active.add(next);\n    next.send();\n    this._logs.log(\"Starting \" + next.msg);\n  }\n}\nrequester.Requester = Requester;\nvar objectModel = {};\nvar entityTable = {};\nObject.defineProperty(entityTable, \"__esModule\", { value: true });\nentityTable.EntityTable = void 0;\nclass EntityTable {\n  constructor(bfast2, strings2) {\n    this.bfast = bfast2;\n    this.strings = strings2;\n  }\n  async getLocal() {\n    return new EntityTable(await this.bfast.getSelf(), this.strings);\n  }\n  static getTypeSize(colName) {\n    if (colName.startsWith(\"index:\") || colName.startsWith(\"string:\") || colName.startsWith(\"int:\") || colName.startsWith(\"uint:\") || colName.startsWith(\"float:\")) {\n      return 4;\n    }\n    if (colName.startsWith(\"double:\") || colName.startsWith(\"long:\") || colName.startsWith(\"ulong\")) {\n      return 8;\n    }\n    if (colName.startsWith(\"byte:\") || colName.startsWith(\"ubyte:\")) {\n      return 1;\n    }\n    if (colName.startsWith(\"short:\") || colName.startsWith(\"ushort:\")) {\n      return 2;\n    }\n    return 1;\n  }\n  async getCount() {\n    const ranges = await this.bfast.getRanges();\n    if (!ranges || ranges.size === 0)\n      return 0;\n    const [colName, range] = ranges.entries().next().value;\n    const rangeSize = range.length;\n    const typeSize2 = EntityTable.getTypeSize(colName);\n    return rangeSize / typeSize2;\n  }\n  getArray(columnName) {\n    return this.bfast.getArray(columnName);\n  }\n  async getNumberArray(columnName) {\n    const array = await this.bfast.getArray(columnName);\n    if (!array || array instanceof BigInt64Array || array instanceof BigUint64Array)\n      return void 0;\n    return Array.from(array);\n  }\n  async getNumber(elementIndex, columnName) {\n    var _a2;\n    const array = await this.bfast.getArray(columnName);\n    if (((_a2 = array == null ? void 0 : array.length) != null ? _a2 : -1) <= elementIndex)\n      return void 0;\n    return Number(array[elementIndex]);\n  }\n  async getBigIntArray(columnName) {\n    const array = await this.bfast.getArray(columnName);\n    if (!array)\n      return void 0;\n    if (array instanceof BigInt64Array)\n      return array;\n    const result = new BigInt64Array(array.length);\n    for (var i = 0; i < array.length; ++i) {\n      result[i] = BigInt(array[i]);\n    }\n    return result;\n  }\n  async getBigInt(elementIndex, columnName) {\n    var _a2;\n    const array = await this.bfast.getArray(columnName);\n    if (((_a2 = array == null ? void 0 : array.length) != null ? _a2 : -1) <= elementIndex)\n      return void 0;\n    const element = array[elementIndex];\n    if (element === void 0)\n      return void 0;\n    return BigInt(element);\n  }\n  async getBoolean(elementIndex, columnName) {\n    var _a2;\n    const array = await this.bfast.getArray(columnName);\n    if (((_a2 = array == null ? void 0 : array.length) != null ? _a2 : -1) <= elementIndex)\n      return void 0;\n    const element = array[elementIndex];\n    if (element === void 0)\n      return void 0;\n    return Boolean(element);\n  }\n  async getBooleanArray(columnName) {\n    const array = await this.bfast.getArray(columnName);\n    if (!array)\n      return void 0;\n    const result = new Array(array.length);\n    for (let i = 0; i < array.length; ++i) {\n      result[i] = Boolean(array[i]);\n    }\n    return result;\n  }\n  toIndex(value) {\n    return typeof value === \"bigint\" ? Number(BigInt.asIntN(32, value)) : value;\n  }\n  async getString(elementIndex, columnName) {\n    var _a2;\n    if (this.strings === void 0)\n      return void 0;\n    const array = await this.bfast.getArray(columnName);\n    if (((_a2 = array == null ? void 0 : array.length) != null ? _a2 : -1) <= elementIndex)\n      return void 0;\n    return this.strings[this.toIndex(array[elementIndex])];\n  }\n  async getStringArray(columnName) {\n    if (this.strings === void 0)\n      return void 0;\n    const array = await this.bfast.getArray(columnName);\n    if (!array)\n      return void 0;\n    const result = new Array(array.length);\n    for (let i = 0; i < array.length; ++i) {\n      result[i] = this.strings[this.toIndex(array[i])];\n    }\n    return result;\n  }\n}\nentityTable.EntityTable = EntityTable;\nvar vimLoader = {};\nObject.defineProperty(vimLoader, \"__esModule\", { value: true });\nvimLoader.VimLoader = void 0;\nclass VimLoader {\n  static async loadFromBfast(bfast2, ignoreStrings) {\n    const [entity, strings2] = await Promise.all([\n      VimLoader.requestEntities(bfast2),\n      ignoreStrings ? Promise.resolve(void 0) : VimLoader.requestStrings(bfast2)\n    ]);\n    return [entity, strings2];\n  }\n  static async requestStrings(bfast2) {\n    const buffer = await bfast2.getBuffer(\"strings\");\n    if (!buffer) {\n      console.error(\"Could not get String Data from VIM file. Bim features will be disabled.\");\n      return;\n    }\n    const strings2 = new TextDecoder(\"utf-8\").decode(buffer).split(\"\\0\");\n    return strings2;\n  }\n  static async requestEntities(bfast2) {\n    const entities = await bfast2.getBfast(\"entities\");\n    if (!entities) {\n      console.error(\"Could not get String Data from VIM file. Bim features will be disabled.\");\n    }\n    return entities;\n  }\n}\nvimLoader.VimLoader = VimLoader;\nObject.defineProperty(objectModel, \"__esModule\", { value: true });\nobjectModel.LevelInViewTable = objectModel.LevelInView = objectModel.AssetInViewSheetTable = objectModel.AssetInViewSheet = objectModel.AssetInViewTable = objectModel.AssetInView = objectModel.ShapeInViewTable = objectModel.ShapeInView = objectModel.ElementInViewTable = objectModel.ElementInView = objectModel.ViewTable = objectModel.View = objectModel.FamilyInstanceTable = objectModel.FamilyInstance = objectModel.FamilyTypeTable = objectModel.FamilyType = objectModel.FamilyTable = objectModel.Family = objectModel.CategoryTable = objectModel.Category = objectModel.PhaseOrderInBimDocumentTable = objectModel.PhaseOrderInBimDocument = objectModel.DisplayUnitInBimDocumentTable = objectModel.DisplayUnitInBimDocument = objectModel.BimDocumentTable = objectModel.BimDocument = objectModel.RoomTable = objectModel.Room = objectModel.PhaseTable = objectModel.Phase = objectModel.LevelTable = objectModel.Level = objectModel.DesignOptionTable = objectModel.DesignOption = objectModel.GroupTable = objectModel.Group = objectModel.AssemblyInstanceTable = objectModel.AssemblyInstance = objectModel.WorksetTable = objectModel.Workset = objectModel.ElementTable = objectModel.Element = objectModel.ParameterTable = objectModel.Parameter = objectModel.ParameterDescriptorTable = objectModel.ParameterDescriptor = objectModel.DisplayUnitTable = objectModel.DisplayUnit = objectModel.AssetTable = objectModel.Asset = void 0;\nobjectModel.ViewSheetInViewSheetSetTable = objectModel.ViewSheetInViewSheetSet = objectModel.ViewSheetTable = objectModel.ViewSheet = objectModel.ViewSheetSetTable = objectModel.ViewSheetSet = objectModel.ScheduleCellTable = objectModel.ScheduleCell = objectModel.ScheduleColumnTable = objectModel.ScheduleColumn = objectModel.ScheduleTable = objectModel.Schedule = objectModel.AreaSchemeTable = objectModel.AreaScheme = objectModel.AreaTable = objectModel.Area = objectModel.GridTable = objectModel.Grid = objectModel.PhaseFilterTable = objectModel.PhaseFilter = objectModel.BasePointTable = objectModel.BasePoint = objectModel.ElementInWarningTable = objectModel.ElementInWarning = objectModel.WarningTable = objectModel.Warning = objectModel.ElementInSystemTable = objectModel.ElementInSystem = objectModel.SystemTable = objectModel.System = objectModel.ShapeInShapeCollectionTable = objectModel.ShapeInShapeCollection = objectModel.ShapeCollectionTable = objectModel.ShapeCollection = objectModel.ShapeTable = objectModel.Shape = objectModel.GeometryTable = objectModel.Geometry = objectModel.NodeTable = objectModel.Node = objectModel.CompoundStructureTable = objectModel.CompoundStructure = objectModel.CompoundStructureLayerTable = objectModel.CompoundStructureLayer = objectModel.MaterialInElementTable = objectModel.MaterialInElement = objectModel.MaterialTable = objectModel.Material = objectModel.CameraTable = objectModel.Camera = void 0;\nobjectModel.VimDocument = objectModel.BuildingTable = objectModel.Building = objectModel.SiteTable = objectModel.Site = objectModel.ViewInViewSheetTable = objectModel.ViewInViewSheet = objectModel.ViewInViewSheetSetTable = objectModel.ViewInViewSheetSet = void 0;\nconst entityTable_1 = entityTable;\nconst vimLoader_1 = vimLoader;\nclass Asset {\n  static async createFromTable(table, index) {\n    let result = new Asset();\n    result.index = index;\n    await Promise.all([\n      table.getBufferName(index).then((v) => result.bufferName = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Asset = Asset;\nclass AssetTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Asset\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new AssetTable();\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(assetIndex) {\n    return await Asset.createFromTable(this, assetIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let bufferName;\n    await Promise.all([\n      (async () => {\n        bufferName = await localTable.getStringArray(\"string:BufferName\");\n      })()\n    ]);\n    let asset = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      asset.push({\n        index: i,\n        bufferName: bufferName ? bufferName[i] : void 0\n      });\n    }\n    return asset;\n  }\n  async getBufferName(assetIndex) {\n    return await this.entityTable.getString(assetIndex, \"string:BufferName\");\n  }\n  async getAllBufferName() {\n    return await this.entityTable.getStringArray(\"string:BufferName\");\n  }\n}\nobjectModel.AssetTable = AssetTable;\nclass DisplayUnit {\n  static async createFromTable(table, index) {\n    let result = new DisplayUnit();\n    result.index = index;\n    await Promise.all([\n      table.getSpec(index).then((v) => result.spec = v),\n      table.getType(index).then((v) => result.type = v),\n      table.getLabel(index).then((v) => result.label = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.DisplayUnit = DisplayUnit;\nclass DisplayUnitTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.DisplayUnit\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new DisplayUnitTable();\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(displayUnitIndex) {\n    return await DisplayUnit.createFromTable(this, displayUnitIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let spec;\n    let type;\n    let label;\n    await Promise.all([\n      (async () => {\n        spec = await localTable.getStringArray(\"string:Spec\");\n      })(),\n      (async () => {\n        type = await localTable.getStringArray(\"string:Type\");\n      })(),\n      (async () => {\n        label = await localTable.getStringArray(\"string:Label\");\n      })()\n    ]);\n    let displayUnit = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      displayUnit.push({\n        index: i,\n        spec: spec ? spec[i] : void 0,\n        type: type ? type[i] : void 0,\n        label: label ? label[i] : void 0\n      });\n    }\n    return displayUnit;\n  }\n  async getSpec(displayUnitIndex) {\n    return await this.entityTable.getString(displayUnitIndex, \"string:Spec\");\n  }\n  async getAllSpec() {\n    return await this.entityTable.getStringArray(\"string:Spec\");\n  }\n  async getType(displayUnitIndex) {\n    return await this.entityTable.getString(displayUnitIndex, \"string:Type\");\n  }\n  async getAllType() {\n    return await this.entityTable.getStringArray(\"string:Type\");\n  }\n  async getLabel(displayUnitIndex) {\n    return await this.entityTable.getString(displayUnitIndex, \"string:Label\");\n  }\n  async getAllLabel() {\n    return await this.entityTable.getStringArray(\"string:Label\");\n  }\n}\nobjectModel.DisplayUnitTable = DisplayUnitTable;\nclass ParameterDescriptor {\n  static async createFromTable(table, index) {\n    let result = new ParameterDescriptor();\n    result.index = index;\n    await Promise.all([\n      table.getName(index).then((v) => result.name = v),\n      table.getGroup(index).then((v) => result.group = v),\n      table.getParameterType(index).then((v) => result.parameterType = v),\n      table.getIsInstance(index).then((v) => result.isInstance = v),\n      table.getIsShared(index).then((v) => result.isShared = v),\n      table.getIsReadOnly(index).then((v) => result.isReadOnly = v),\n      table.getFlags(index).then((v) => result.flags = v),\n      table.getGuid(index).then((v) => result.guid = v),\n      table.getStorageType(index).then((v) => result.storageType = v),\n      table.getDisplayUnitIndex(index).then((v) => result.displayUnitIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ParameterDescriptor = ParameterDescriptor;\nclass ParameterDescriptorTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ParameterDescriptor\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ParameterDescriptorTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(parameterDescriptorIndex) {\n    return await ParameterDescriptor.createFromTable(this, parameterDescriptorIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let name;\n    let group;\n    let parameterType;\n    let isInstance;\n    let isShared;\n    let isReadOnly;\n    let flags;\n    let guid;\n    let storageType;\n    let displayUnitIndex;\n    await Promise.all([\n      (async () => {\n        name = await localTable.getStringArray(\"string:Name\");\n      })(),\n      (async () => {\n        group = await localTable.getStringArray(\"string:Group\");\n      })(),\n      (async () => {\n        parameterType = await localTable.getStringArray(\"string:ParameterType\");\n      })(),\n      (async () => {\n        isInstance = await localTable.getBooleanArray(\"byte:IsInstance\");\n      })(),\n      (async () => {\n        isShared = await localTable.getBooleanArray(\"byte:IsShared\");\n      })(),\n      (async () => {\n        isReadOnly = await localTable.getBooleanArray(\"byte:IsReadOnly\");\n      })(),\n      (async () => {\n        flags = await localTable.getNumberArray(\"int:Flags\");\n      })(),\n      (async () => {\n        guid = await localTable.getStringArray(\"string:Guid\");\n      })(),\n      (async () => {\n        storageType = await localTable.getNumberArray(\"int:StorageType\");\n      })(),\n      (async () => {\n        displayUnitIndex = await localTable.getNumberArray(\"index:Vim.DisplayUnit:DisplayUnit\");\n      })()\n    ]);\n    let parameterDescriptor = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      parameterDescriptor.push({\n        index: i,\n        name: name ? name[i] : void 0,\n        group: group ? group[i] : void 0,\n        parameterType: parameterType ? parameterType[i] : void 0,\n        isInstance: isInstance ? isInstance[i] : void 0,\n        isShared: isShared ? isShared[i] : void 0,\n        isReadOnly: isReadOnly ? isReadOnly[i] : void 0,\n        flags: flags ? flags[i] : void 0,\n        guid: guid ? guid[i] : void 0,\n        storageType: storageType ? storageType[i] : void 0,\n        displayUnitIndex: displayUnitIndex ? displayUnitIndex[i] : void 0\n      });\n    }\n    return parameterDescriptor;\n  }\n  async getName(parameterDescriptorIndex) {\n    return await this.entityTable.getString(parameterDescriptorIndex, \"string:Name\");\n  }\n  async getAllName() {\n    return await this.entityTable.getStringArray(\"string:Name\");\n  }\n  async getGroup(parameterDescriptorIndex) {\n    return await this.entityTable.getString(parameterDescriptorIndex, \"string:Group\");\n  }\n  async getAllGroup() {\n    return await this.entityTable.getStringArray(\"string:Group\");\n  }\n  async getParameterType(parameterDescriptorIndex) {\n    return await this.entityTable.getString(parameterDescriptorIndex, \"string:ParameterType\");\n  }\n  async getAllParameterType() {\n    return await this.entityTable.getStringArray(\"string:ParameterType\");\n  }\n  async getIsInstance(parameterDescriptorIndex) {\n    return await this.entityTable.getBoolean(parameterDescriptorIndex, \"byte:IsInstance\");\n  }\n  async getAllIsInstance() {\n    return await this.entityTable.getBooleanArray(\"byte:IsInstance\");\n  }\n  async getIsShared(parameterDescriptorIndex) {\n    return await this.entityTable.getBoolean(parameterDescriptorIndex, \"byte:IsShared\");\n  }\n  async getAllIsShared() {\n    return await this.entityTable.getBooleanArray(\"byte:IsShared\");\n  }\n  async getIsReadOnly(parameterDescriptorIndex) {\n    return await this.entityTable.getBoolean(parameterDescriptorIndex, \"byte:IsReadOnly\");\n  }\n  async getAllIsReadOnly() {\n    return await this.entityTable.getBooleanArray(\"byte:IsReadOnly\");\n  }\n  async getFlags(parameterDescriptorIndex) {\n    return await this.entityTable.getNumber(parameterDescriptorIndex, \"int:Flags\");\n  }\n  async getAllFlags() {\n    return await this.entityTable.getNumberArray(\"int:Flags\");\n  }\n  async getGuid(parameterDescriptorIndex) {\n    return await this.entityTable.getString(parameterDescriptorIndex, \"string:Guid\");\n  }\n  async getAllGuid() {\n    return await this.entityTable.getStringArray(\"string:Guid\");\n  }\n  async getStorageType(parameterDescriptorIndex) {\n    return await this.entityTable.getNumber(parameterDescriptorIndex, \"int:StorageType\");\n  }\n  async getAllStorageType() {\n    return await this.entityTable.getNumberArray(\"int:StorageType\");\n  }\n  async getDisplayUnitIndex(parameterDescriptorIndex) {\n    return await this.entityTable.getNumber(parameterDescriptorIndex, \"index:Vim.DisplayUnit:DisplayUnit\");\n  }\n  async getAllDisplayUnitIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.DisplayUnit:DisplayUnit\");\n  }\n  async getDisplayUnit(parameterDescriptorIndex) {\n    var _a2;\n    const index = await this.getDisplayUnitIndex(parameterDescriptorIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.displayUnit) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ParameterDescriptorTable = ParameterDescriptorTable;\nclass Parameter {\n  static async createFromTable(table, index) {\n    let result = new Parameter();\n    result.index = index;\n    await Promise.all([\n      table.getValue(index).then((v) => result.value = v),\n      table.getParameterDescriptorIndex(index).then((v) => result.parameterDescriptorIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Parameter = Parameter;\nclass ParameterTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Parameter\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ParameterTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(parameterIndex) {\n    return await Parameter.createFromTable(this, parameterIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let value;\n    let parameterDescriptorIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        value = await localTable.getStringArray(\"string:Value\");\n      })(),\n      (async () => {\n        parameterDescriptorIndex = await localTable.getNumberArray(\"index:Vim.ParameterDescriptor:ParameterDescriptor\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let parameter = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      parameter.push({\n        index: i,\n        value: value ? value[i] : void 0,\n        parameterDescriptorIndex: parameterDescriptorIndex ? parameterDescriptorIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return parameter;\n  }\n  async getValue(parameterIndex) {\n    return await this.entityTable.getString(parameterIndex, \"string:Value\");\n  }\n  async getAllValue() {\n    return await this.entityTable.getStringArray(\"string:Value\");\n  }\n  async getParameterDescriptorIndex(parameterIndex) {\n    return await this.entityTable.getNumber(parameterIndex, \"index:Vim.ParameterDescriptor:ParameterDescriptor\");\n  }\n  async getAllParameterDescriptorIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.ParameterDescriptor:ParameterDescriptor\");\n  }\n  async getParameterDescriptor(parameterIndex) {\n    var _a2;\n    const index = await this.getParameterDescriptorIndex(parameterIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.parameterDescriptor) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(parameterIndex) {\n    return await this.entityTable.getNumber(parameterIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(parameterIndex) {\n    var _a2;\n    const index = await this.getElementIndex(parameterIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ParameterTable = ParameterTable;\nclass Element$1 {\n  static async createFromTable(table, index) {\n    let result = new Element$1();\n    result.index = index;\n    await Promise.all([\n      table.getId(index).then((v) => result.id = v),\n      table.getType(index).then((v) => result.type = v),\n      table.getName(index).then((v) => result.name = v),\n      table.getUniqueId(index).then((v) => result.uniqueId = v),\n      table.getLocation_X(index).then((v) => result.location_X = v),\n      table.getLocation_Y(index).then((v) => result.location_Y = v),\n      table.getLocation_Z(index).then((v) => result.location_Z = v),\n      table.getFamilyName(index).then((v) => result.familyName = v),\n      table.getIsPinned(index).then((v) => result.isPinned = v),\n      table.getLevelIndex(index).then((v) => result.levelIndex = v),\n      table.getPhaseCreatedIndex(index).then((v) => result.phaseCreatedIndex = v),\n      table.getPhaseDemolishedIndex(index).then((v) => result.phaseDemolishedIndex = v),\n      table.getCategoryIndex(index).then((v) => result.categoryIndex = v),\n      table.getWorksetIndex(index).then((v) => result.worksetIndex = v),\n      table.getDesignOptionIndex(index).then((v) => result.designOptionIndex = v),\n      table.getOwnerViewIndex(index).then((v) => result.ownerViewIndex = v),\n      table.getGroupIndex(index).then((v) => result.groupIndex = v),\n      table.getAssemblyInstanceIndex(index).then((v) => result.assemblyInstanceIndex = v),\n      table.getBimDocumentIndex(index).then((v) => result.bimDocumentIndex = v),\n      table.getRoomIndex(index).then((v) => result.roomIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Element = Element$1;\nclass ElementTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Element\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ElementTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(elementIndex) {\n    return await Element$1.createFromTable(this, elementIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let id2;\n    let type;\n    let name;\n    let uniqueId;\n    let location_X;\n    let location_Y;\n    let location_Z;\n    let familyName;\n    let isPinned;\n    let levelIndex;\n    let phaseCreatedIndex;\n    let phaseDemolishedIndex;\n    let categoryIndex;\n    let worksetIndex;\n    let designOptionIndex;\n    let ownerViewIndex;\n    let groupIndex;\n    let assemblyInstanceIndex;\n    let bimDocumentIndex;\n    let roomIndex;\n    await Promise.all([\n      (async () => {\n        var _a2;\n        id2 = (_a2 = await localTable.getBigIntArray(\"long:Id\")) != null ? _a2 : await localTable.getBigIntArray(\"int:Id\");\n      })(),\n      (async () => {\n        type = await localTable.getStringArray(\"string:Type\");\n      })(),\n      (async () => {\n        name = await localTable.getStringArray(\"string:Name\");\n      })(),\n      (async () => {\n        uniqueId = await localTable.getStringArray(\"string:UniqueId\");\n      })(),\n      (async () => {\n        location_X = await localTable.getNumberArray(\"float:Location.X\");\n      })(),\n      (async () => {\n        location_Y = await localTable.getNumberArray(\"float:Location.Y\");\n      })(),\n      (async () => {\n        location_Z = await localTable.getNumberArray(\"float:Location.Z\");\n      })(),\n      (async () => {\n        familyName = await localTable.getStringArray(\"string:FamilyName\");\n      })(),\n      (async () => {\n        isPinned = await localTable.getBooleanArray(\"byte:IsPinned\");\n      })(),\n      (async () => {\n        levelIndex = await localTable.getNumberArray(\"index:Vim.Level:Level\");\n      })(),\n      (async () => {\n        phaseCreatedIndex = await localTable.getNumberArray(\"index:Vim.Phase:PhaseCreated\");\n      })(),\n      (async () => {\n        phaseDemolishedIndex = await localTable.getNumberArray(\"index:Vim.Phase:PhaseDemolished\");\n      })(),\n      (async () => {\n        categoryIndex = await localTable.getNumberArray(\"index:Vim.Category:Category\");\n      })(),\n      (async () => {\n        worksetIndex = await localTable.getNumberArray(\"index:Vim.Workset:Workset\");\n      })(),\n      (async () => {\n        designOptionIndex = await localTable.getNumberArray(\"index:Vim.DesignOption:DesignOption\");\n      })(),\n      (async () => {\n        ownerViewIndex = await localTable.getNumberArray(\"index:Vim.View:OwnerView\");\n      })(),\n      (async () => {\n        groupIndex = await localTable.getNumberArray(\"index:Vim.Group:Group\");\n      })(),\n      (async () => {\n        assemblyInstanceIndex = await localTable.getNumberArray(\"index:Vim.AssemblyInstance:AssemblyInstance\");\n      })(),\n      (async () => {\n        bimDocumentIndex = await localTable.getNumberArray(\"index:Vim.BimDocument:BimDocument\");\n      })(),\n      (async () => {\n        roomIndex = await localTable.getNumberArray(\"index:Vim.Room:Room\");\n      })()\n    ]);\n    let element = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      element.push({\n        index: i,\n        id: id2 ? id2[i] : void 0,\n        type: type ? type[i] : void 0,\n        name: name ? name[i] : void 0,\n        uniqueId: uniqueId ? uniqueId[i] : void 0,\n        location_X: location_X ? location_X[i] : void 0,\n        location_Y: location_Y ? location_Y[i] : void 0,\n        location_Z: location_Z ? location_Z[i] : void 0,\n        familyName: familyName ? familyName[i] : void 0,\n        isPinned: isPinned ? isPinned[i] : void 0,\n        levelIndex: levelIndex ? levelIndex[i] : void 0,\n        phaseCreatedIndex: phaseCreatedIndex ? phaseCreatedIndex[i] : void 0,\n        phaseDemolishedIndex: phaseDemolishedIndex ? phaseDemolishedIndex[i] : void 0,\n        categoryIndex: categoryIndex ? categoryIndex[i] : void 0,\n        worksetIndex: worksetIndex ? worksetIndex[i] : void 0,\n        designOptionIndex: designOptionIndex ? designOptionIndex[i] : void 0,\n        ownerViewIndex: ownerViewIndex ? ownerViewIndex[i] : void 0,\n        groupIndex: groupIndex ? groupIndex[i] : void 0,\n        assemblyInstanceIndex: assemblyInstanceIndex ? assemblyInstanceIndex[i] : void 0,\n        bimDocumentIndex: bimDocumentIndex ? bimDocumentIndex[i] : void 0,\n        roomIndex: roomIndex ? roomIndex[i] : void 0\n      });\n    }\n    return element;\n  }\n  async getId(elementIndex) {\n    var _a2;\n    return (_a2 = await this.entityTable.getBigInt(elementIndex, \"long:Id\")) != null ? _a2 : await this.entityTable.getBigInt(elementIndex, \"int:Id\");\n  }\n  async getAllId() {\n    var _a2;\n    return (_a2 = await this.entityTable.getBigIntArray(\"long:Id\")) != null ? _a2 : await this.entityTable.getBigIntArray(\"int:Id\");\n  }\n  async getType(elementIndex) {\n    return await this.entityTable.getString(elementIndex, \"string:Type\");\n  }\n  async getAllType() {\n    return await this.entityTable.getStringArray(\"string:Type\");\n  }\n  async getName(elementIndex) {\n    return await this.entityTable.getString(elementIndex, \"string:Name\");\n  }\n  async getAllName() {\n    return await this.entityTable.getStringArray(\"string:Name\");\n  }\n  async getUniqueId(elementIndex) {\n    return await this.entityTable.getString(elementIndex, \"string:UniqueId\");\n  }\n  async getAllUniqueId() {\n    return await this.entityTable.getStringArray(\"string:UniqueId\");\n  }\n  async getLocation_X(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"float:Location.X\");\n  }\n  async getAllLocation_X() {\n    return await this.entityTable.getNumberArray(\"float:Location.X\");\n  }\n  async getLocation_Y(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"float:Location.Y\");\n  }\n  async getAllLocation_Y() {\n    return await this.entityTable.getNumberArray(\"float:Location.Y\");\n  }\n  async getLocation_Z(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"float:Location.Z\");\n  }\n  async getAllLocation_Z() {\n    return await this.entityTable.getNumberArray(\"float:Location.Z\");\n  }\n  async getFamilyName(elementIndex) {\n    return await this.entityTable.getString(elementIndex, \"string:FamilyName\");\n  }\n  async getAllFamilyName() {\n    return await this.entityTable.getStringArray(\"string:FamilyName\");\n  }\n  async getIsPinned(elementIndex) {\n    return await this.entityTable.getBoolean(elementIndex, \"byte:IsPinned\");\n  }\n  async getAllIsPinned() {\n    return await this.entityTable.getBooleanArray(\"byte:IsPinned\");\n  }\n  async getLevelIndex(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"index:Vim.Level:Level\");\n  }\n  async getAllLevelIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Level:Level\");\n  }\n  async getLevel(elementIndex) {\n    var _a2;\n    const index = await this.getLevelIndex(elementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.level) == null ? void 0 : _a2.get(index));\n  }\n  async getPhaseCreatedIndex(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"index:Vim.Phase:PhaseCreated\");\n  }\n  async getAllPhaseCreatedIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Phase:PhaseCreated\");\n  }\n  async getPhaseCreated(elementIndex) {\n    var _a2;\n    const index = await this.getPhaseCreatedIndex(elementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.phase) == null ? void 0 : _a2.get(index));\n  }\n  async getPhaseDemolishedIndex(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"index:Vim.Phase:PhaseDemolished\");\n  }\n  async getAllPhaseDemolishedIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Phase:PhaseDemolished\");\n  }\n  async getPhaseDemolished(elementIndex) {\n    var _a2;\n    const index = await this.getPhaseDemolishedIndex(elementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.phase) == null ? void 0 : _a2.get(index));\n  }\n  async getCategoryIndex(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"index:Vim.Category:Category\");\n  }\n  async getAllCategoryIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Category:Category\");\n  }\n  async getCategory(elementIndex) {\n    var _a2;\n    const index = await this.getCategoryIndex(elementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.category) == null ? void 0 : _a2.get(index));\n  }\n  async getWorksetIndex(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"index:Vim.Workset:Workset\");\n  }\n  async getAllWorksetIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Workset:Workset\");\n  }\n  async getWorkset(elementIndex) {\n    var _a2;\n    const index = await this.getWorksetIndex(elementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.workset) == null ? void 0 : _a2.get(index));\n  }\n  async getDesignOptionIndex(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"index:Vim.DesignOption:DesignOption\");\n  }\n  async getAllDesignOptionIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.DesignOption:DesignOption\");\n  }\n  async getDesignOption(elementIndex) {\n    var _a2;\n    const index = await this.getDesignOptionIndex(elementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.designOption) == null ? void 0 : _a2.get(index));\n  }\n  async getOwnerViewIndex(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"index:Vim.View:OwnerView\");\n  }\n  async getAllOwnerViewIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.View:OwnerView\");\n  }\n  async getOwnerView(elementIndex) {\n    var _a2;\n    const index = await this.getOwnerViewIndex(elementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.view) == null ? void 0 : _a2.get(index));\n  }\n  async getGroupIndex(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"index:Vim.Group:Group\");\n  }\n  async getAllGroupIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Group:Group\");\n  }\n  async getGroup(elementIndex) {\n    var _a2;\n    const index = await this.getGroupIndex(elementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.group) == null ? void 0 : _a2.get(index));\n  }\n  async getAssemblyInstanceIndex(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"index:Vim.AssemblyInstance:AssemblyInstance\");\n  }\n  async getAllAssemblyInstanceIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.AssemblyInstance:AssemblyInstance\");\n  }\n  async getAssemblyInstance(elementIndex) {\n    var _a2;\n    const index = await this.getAssemblyInstanceIndex(elementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.assemblyInstance) == null ? void 0 : _a2.get(index));\n  }\n  async getBimDocumentIndex(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"index:Vim.BimDocument:BimDocument\");\n  }\n  async getAllBimDocumentIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.BimDocument:BimDocument\");\n  }\n  async getBimDocument(elementIndex) {\n    var _a2;\n    const index = await this.getBimDocumentIndex(elementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.bimDocument) == null ? void 0 : _a2.get(index));\n  }\n  async getRoomIndex(elementIndex) {\n    return await this.entityTable.getNumber(elementIndex, \"index:Vim.Room:Room\");\n  }\n  async getAllRoomIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Room:Room\");\n  }\n  async getRoom(elementIndex) {\n    var _a2;\n    const index = await this.getRoomIndex(elementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.room) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ElementTable = ElementTable;\nclass Workset {\n  static async createFromTable(table, index) {\n    let result = new Workset();\n    result.index = index;\n    await Promise.all([\n      table.getId(index).then((v) => result.id = v),\n      table.getName(index).then((v) => result.name = v),\n      table.getKind(index).then((v) => result.kind = v),\n      table.getIsOpen(index).then((v) => result.isOpen = v),\n      table.getIsEditable(index).then((v) => result.isEditable = v),\n      table.getOwner(index).then((v) => result.owner = v),\n      table.getUniqueId(index).then((v) => result.uniqueId = v),\n      table.getBimDocumentIndex(index).then((v) => result.bimDocumentIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Workset = Workset;\nclass WorksetTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Workset\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new WorksetTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(worksetIndex) {\n    return await Workset.createFromTable(this, worksetIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let id2;\n    let name;\n    let kind;\n    let isOpen;\n    let isEditable;\n    let owner;\n    let uniqueId;\n    let bimDocumentIndex;\n    await Promise.all([\n      (async () => {\n        id2 = await localTable.getNumberArray(\"int:Id\");\n      })(),\n      (async () => {\n        name = await localTable.getStringArray(\"string:Name\");\n      })(),\n      (async () => {\n        kind = await localTable.getStringArray(\"string:Kind\");\n      })(),\n      (async () => {\n        isOpen = await localTable.getBooleanArray(\"byte:IsOpen\");\n      })(),\n      (async () => {\n        isEditable = await localTable.getBooleanArray(\"byte:IsEditable\");\n      })(),\n      (async () => {\n        owner = await localTable.getStringArray(\"string:Owner\");\n      })(),\n      (async () => {\n        uniqueId = await localTable.getStringArray(\"string:UniqueId\");\n      })(),\n      (async () => {\n        bimDocumentIndex = await localTable.getNumberArray(\"index:Vim.BimDocument:BimDocument\");\n      })()\n    ]);\n    let workset = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      workset.push({\n        index: i,\n        id: id2 ? id2[i] : void 0,\n        name: name ? name[i] : void 0,\n        kind: kind ? kind[i] : void 0,\n        isOpen: isOpen ? isOpen[i] : void 0,\n        isEditable: isEditable ? isEditable[i] : void 0,\n        owner: owner ? owner[i] : void 0,\n        uniqueId: uniqueId ? uniqueId[i] : void 0,\n        bimDocumentIndex: bimDocumentIndex ? bimDocumentIndex[i] : void 0\n      });\n    }\n    return workset;\n  }\n  async getId(worksetIndex) {\n    return await this.entityTable.getNumber(worksetIndex, \"int:Id\");\n  }\n  async getAllId() {\n    return await this.entityTable.getNumberArray(\"int:Id\");\n  }\n  async getName(worksetIndex) {\n    return await this.entityTable.getString(worksetIndex, \"string:Name\");\n  }\n  async getAllName() {\n    return await this.entityTable.getStringArray(\"string:Name\");\n  }\n  async getKind(worksetIndex) {\n    return await this.entityTable.getString(worksetIndex, \"string:Kind\");\n  }\n  async getAllKind() {\n    return await this.entityTable.getStringArray(\"string:Kind\");\n  }\n  async getIsOpen(worksetIndex) {\n    return await this.entityTable.getBoolean(worksetIndex, \"byte:IsOpen\");\n  }\n  async getAllIsOpen() {\n    return await this.entityTable.getBooleanArray(\"byte:IsOpen\");\n  }\n  async getIsEditable(worksetIndex) {\n    return await this.entityTable.getBoolean(worksetIndex, \"byte:IsEditable\");\n  }\n  async getAllIsEditable() {\n    return await this.entityTable.getBooleanArray(\"byte:IsEditable\");\n  }\n  async getOwner(worksetIndex) {\n    return await this.entityTable.getString(worksetIndex, \"string:Owner\");\n  }\n  async getAllOwner() {\n    return await this.entityTable.getStringArray(\"string:Owner\");\n  }\n  async getUniqueId(worksetIndex) {\n    return await this.entityTable.getString(worksetIndex, \"string:UniqueId\");\n  }\n  async getAllUniqueId() {\n    return await this.entityTable.getStringArray(\"string:UniqueId\");\n  }\n  async getBimDocumentIndex(worksetIndex) {\n    return await this.entityTable.getNumber(worksetIndex, \"index:Vim.BimDocument:BimDocument\");\n  }\n  async getAllBimDocumentIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.BimDocument:BimDocument\");\n  }\n  async getBimDocument(worksetIndex) {\n    var _a2;\n    const index = await this.getBimDocumentIndex(worksetIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.bimDocument) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.WorksetTable = WorksetTable;\nclass AssemblyInstance {\n  static async createFromTable(table, index) {\n    let result = new AssemblyInstance();\n    result.index = index;\n    await Promise.all([\n      table.getAssemblyTypeName(index).then((v) => result.assemblyTypeName = v),\n      table.getPosition_X(index).then((v) => result.position_X = v),\n      table.getPosition_Y(index).then((v) => result.position_Y = v),\n      table.getPosition_Z(index).then((v) => result.position_Z = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.AssemblyInstance = AssemblyInstance;\nclass AssemblyInstanceTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.AssemblyInstance\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new AssemblyInstanceTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(assemblyInstanceIndex) {\n    return await AssemblyInstance.createFromTable(this, assemblyInstanceIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let assemblyTypeName;\n    let position_X;\n    let position_Y;\n    let position_Z;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        assemblyTypeName = await localTable.getStringArray(\"string:AssemblyTypeName\");\n      })(),\n      (async () => {\n        position_X = await localTable.getNumberArray(\"float:Position.X\");\n      })(),\n      (async () => {\n        position_Y = await localTable.getNumberArray(\"float:Position.Y\");\n      })(),\n      (async () => {\n        position_Z = await localTable.getNumberArray(\"float:Position.Z\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let assemblyInstance = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      assemblyInstance.push({\n        index: i,\n        assemblyTypeName: assemblyTypeName ? assemblyTypeName[i] : void 0,\n        position_X: position_X ? position_X[i] : void 0,\n        position_Y: position_Y ? position_Y[i] : void 0,\n        position_Z: position_Z ? position_Z[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return assemblyInstance;\n  }\n  async getAssemblyTypeName(assemblyInstanceIndex) {\n    return await this.entityTable.getString(assemblyInstanceIndex, \"string:AssemblyTypeName\");\n  }\n  async getAllAssemblyTypeName() {\n    return await this.entityTable.getStringArray(\"string:AssemblyTypeName\");\n  }\n  async getPosition_X(assemblyInstanceIndex) {\n    return await this.entityTable.getNumber(assemblyInstanceIndex, \"float:Position.X\");\n  }\n  async getAllPosition_X() {\n    return await this.entityTable.getNumberArray(\"float:Position.X\");\n  }\n  async getPosition_Y(assemblyInstanceIndex) {\n    return await this.entityTable.getNumber(assemblyInstanceIndex, \"float:Position.Y\");\n  }\n  async getAllPosition_Y() {\n    return await this.entityTable.getNumberArray(\"float:Position.Y\");\n  }\n  async getPosition_Z(assemblyInstanceIndex) {\n    return await this.entityTable.getNumber(assemblyInstanceIndex, \"float:Position.Z\");\n  }\n  async getAllPosition_Z() {\n    return await this.entityTable.getNumberArray(\"float:Position.Z\");\n  }\n  async getElementIndex(assemblyInstanceIndex) {\n    return await this.entityTable.getNumber(assemblyInstanceIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(assemblyInstanceIndex) {\n    var _a2;\n    const index = await this.getElementIndex(assemblyInstanceIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.AssemblyInstanceTable = AssemblyInstanceTable;\nclass Group {\n  static async createFromTable(table, index) {\n    let result = new Group();\n    result.index = index;\n    await Promise.all([\n      table.getGroupType(index).then((v) => result.groupType = v),\n      table.getPosition_X(index).then((v) => result.position_X = v),\n      table.getPosition_Y(index).then((v) => result.position_Y = v),\n      table.getPosition_Z(index).then((v) => result.position_Z = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Group = Group;\nclass GroupTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Group\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new GroupTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(groupIndex) {\n    return await Group.createFromTable(this, groupIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let groupType;\n    let position_X;\n    let position_Y;\n    let position_Z;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        groupType = await localTable.getStringArray(\"string:GroupType\");\n      })(),\n      (async () => {\n        position_X = await localTable.getNumberArray(\"float:Position.X\");\n      })(),\n      (async () => {\n        position_Y = await localTable.getNumberArray(\"float:Position.Y\");\n      })(),\n      (async () => {\n        position_Z = await localTable.getNumberArray(\"float:Position.Z\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let group = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      group.push({\n        index: i,\n        groupType: groupType ? groupType[i] : void 0,\n        position_X: position_X ? position_X[i] : void 0,\n        position_Y: position_Y ? position_Y[i] : void 0,\n        position_Z: position_Z ? position_Z[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return group;\n  }\n  async getGroupType(groupIndex) {\n    return await this.entityTable.getString(groupIndex, \"string:GroupType\");\n  }\n  async getAllGroupType() {\n    return await this.entityTable.getStringArray(\"string:GroupType\");\n  }\n  async getPosition_X(groupIndex) {\n    return await this.entityTable.getNumber(groupIndex, \"float:Position.X\");\n  }\n  async getAllPosition_X() {\n    return await this.entityTable.getNumberArray(\"float:Position.X\");\n  }\n  async getPosition_Y(groupIndex) {\n    return await this.entityTable.getNumber(groupIndex, \"float:Position.Y\");\n  }\n  async getAllPosition_Y() {\n    return await this.entityTable.getNumberArray(\"float:Position.Y\");\n  }\n  async getPosition_Z(groupIndex) {\n    return await this.entityTable.getNumber(groupIndex, \"float:Position.Z\");\n  }\n  async getAllPosition_Z() {\n    return await this.entityTable.getNumberArray(\"float:Position.Z\");\n  }\n  async getElementIndex(groupIndex) {\n    return await this.entityTable.getNumber(groupIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(groupIndex) {\n    var _a2;\n    const index = await this.getElementIndex(groupIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.GroupTable = GroupTable;\nclass DesignOption {\n  static async createFromTable(table, index) {\n    let result = new DesignOption();\n    result.index = index;\n    await Promise.all([\n      table.getIsPrimary(index).then((v) => result.isPrimary = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.DesignOption = DesignOption;\nclass DesignOptionTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.DesignOption\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new DesignOptionTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(designOptionIndex) {\n    return await DesignOption.createFromTable(this, designOptionIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let isPrimary;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        isPrimary = await localTable.getBooleanArray(\"byte:IsPrimary\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let designOption = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      designOption.push({\n        index: i,\n        isPrimary: isPrimary ? isPrimary[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return designOption;\n  }\n  async getIsPrimary(designOptionIndex) {\n    return await this.entityTable.getBoolean(designOptionIndex, \"byte:IsPrimary\");\n  }\n  async getAllIsPrimary() {\n    return await this.entityTable.getBooleanArray(\"byte:IsPrimary\");\n  }\n  async getElementIndex(designOptionIndex) {\n    return await this.entityTable.getNumber(designOptionIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(designOptionIndex) {\n    var _a2;\n    const index = await this.getElementIndex(designOptionIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.DesignOptionTable = DesignOptionTable;\nclass Level {\n  static async createFromTable(table, index) {\n    let result = new Level();\n    result.index = index;\n    await Promise.all([\n      table.getElevation(index).then((v) => result.elevation = v),\n      table.getFamilyTypeIndex(index).then((v) => result.familyTypeIndex = v),\n      table.getBuildingIndex(index).then((v) => result.buildingIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Level = Level;\nclass LevelTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Level\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new LevelTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(levelIndex) {\n    return await Level.createFromTable(this, levelIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let elevation;\n    let familyTypeIndex;\n    let buildingIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        elevation = await localTable.getNumberArray(\"double:Elevation\");\n      })(),\n      (async () => {\n        familyTypeIndex = await localTable.getNumberArray(\"index:Vim.FamilyType:FamilyType\");\n      })(),\n      (async () => {\n        buildingIndex = await localTable.getNumberArray(\"index:Vim.Building:Building\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let level = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      level.push({\n        index: i,\n        elevation: elevation ? elevation[i] : void 0,\n        familyTypeIndex: familyTypeIndex ? familyTypeIndex[i] : void 0,\n        buildingIndex: buildingIndex ? buildingIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return level;\n  }\n  async getElevation(levelIndex) {\n    return await this.entityTable.getNumber(levelIndex, \"double:Elevation\");\n  }\n  async getAllElevation() {\n    return await this.entityTable.getNumberArray(\"double:Elevation\");\n  }\n  async getFamilyTypeIndex(levelIndex) {\n    return await this.entityTable.getNumber(levelIndex, \"index:Vim.FamilyType:FamilyType\");\n  }\n  async getAllFamilyTypeIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.FamilyType:FamilyType\");\n  }\n  async getFamilyType(levelIndex) {\n    var _a2;\n    const index = await this.getFamilyTypeIndex(levelIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.familyType) == null ? void 0 : _a2.get(index));\n  }\n  async getBuildingIndex(levelIndex) {\n    return await this.entityTable.getNumber(levelIndex, \"index:Vim.Building:Building\");\n  }\n  async getAllBuildingIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Building:Building\");\n  }\n  async getBuilding(levelIndex) {\n    var _a2;\n    const index = await this.getBuildingIndex(levelIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.building) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(levelIndex) {\n    return await this.entityTable.getNumber(levelIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(levelIndex) {\n    var _a2;\n    const index = await this.getElementIndex(levelIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.LevelTable = LevelTable;\nclass Phase {\n  static async createFromTable(table, index) {\n    let result = new Phase();\n    result.index = index;\n    await Promise.all([\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Phase = Phase;\nclass PhaseTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Phase\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new PhaseTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(phaseIndex) {\n    return await Phase.createFromTable(this, phaseIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let phase = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      phase.push({\n        index: i,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return phase;\n  }\n  async getElementIndex(phaseIndex) {\n    return await this.entityTable.getNumber(phaseIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(phaseIndex) {\n    var _a2;\n    const index = await this.getElementIndex(phaseIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.PhaseTable = PhaseTable;\nclass Room {\n  static async createFromTable(table, index) {\n    let result = new Room();\n    result.index = index;\n    await Promise.all([\n      table.getBaseOffset(index).then((v) => result.baseOffset = v),\n      table.getLimitOffset(index).then((v) => result.limitOffset = v),\n      table.getUnboundedHeight(index).then((v) => result.unboundedHeight = v),\n      table.getVolume(index).then((v) => result.volume = v),\n      table.getPerimeter(index).then((v) => result.perimeter = v),\n      table.getArea(index).then((v) => result.area = v),\n      table.getNumber(index).then((v) => result.number = v),\n      table.getUpperLimitIndex(index).then((v) => result.upperLimitIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Room = Room;\nclass RoomTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Room\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new RoomTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(roomIndex) {\n    return await Room.createFromTable(this, roomIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let baseOffset;\n    let limitOffset;\n    let unboundedHeight;\n    let volume;\n    let perimeter;\n    let area2;\n    let number;\n    let upperLimitIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        baseOffset = await localTable.getNumberArray(\"double:BaseOffset\");\n      })(),\n      (async () => {\n        limitOffset = await localTable.getNumberArray(\"double:LimitOffset\");\n      })(),\n      (async () => {\n        unboundedHeight = await localTable.getNumberArray(\"double:UnboundedHeight\");\n      })(),\n      (async () => {\n        volume = await localTable.getNumberArray(\"double:Volume\");\n      })(),\n      (async () => {\n        perimeter = await localTable.getNumberArray(\"double:Perimeter\");\n      })(),\n      (async () => {\n        area2 = await localTable.getNumberArray(\"double:Area\");\n      })(),\n      (async () => {\n        number = await localTable.getStringArray(\"string:Number\");\n      })(),\n      (async () => {\n        upperLimitIndex = await localTable.getNumberArray(\"index:Vim.Level:UpperLimit\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let room = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      room.push({\n        index: i,\n        baseOffset: baseOffset ? baseOffset[i] : void 0,\n        limitOffset: limitOffset ? limitOffset[i] : void 0,\n        unboundedHeight: unboundedHeight ? unboundedHeight[i] : void 0,\n        volume: volume ? volume[i] : void 0,\n        perimeter: perimeter ? perimeter[i] : void 0,\n        area: area2 ? area2[i] : void 0,\n        number: number ? number[i] : void 0,\n        upperLimitIndex: upperLimitIndex ? upperLimitIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return room;\n  }\n  async getBaseOffset(roomIndex) {\n    return await this.entityTable.getNumber(roomIndex, \"double:BaseOffset\");\n  }\n  async getAllBaseOffset() {\n    return await this.entityTable.getNumberArray(\"double:BaseOffset\");\n  }\n  async getLimitOffset(roomIndex) {\n    return await this.entityTable.getNumber(roomIndex, \"double:LimitOffset\");\n  }\n  async getAllLimitOffset() {\n    return await this.entityTable.getNumberArray(\"double:LimitOffset\");\n  }\n  async getUnboundedHeight(roomIndex) {\n    return await this.entityTable.getNumber(roomIndex, \"double:UnboundedHeight\");\n  }\n  async getAllUnboundedHeight() {\n    return await this.entityTable.getNumberArray(\"double:UnboundedHeight\");\n  }\n  async getVolume(roomIndex) {\n    return await this.entityTable.getNumber(roomIndex, \"double:Volume\");\n  }\n  async getAllVolume() {\n    return await this.entityTable.getNumberArray(\"double:Volume\");\n  }\n  async getPerimeter(roomIndex) {\n    return await this.entityTable.getNumber(roomIndex, \"double:Perimeter\");\n  }\n  async getAllPerimeter() {\n    return await this.entityTable.getNumberArray(\"double:Perimeter\");\n  }\n  async getArea(roomIndex) {\n    return await this.entityTable.getNumber(roomIndex, \"double:Area\");\n  }\n  async getAllArea() {\n    return await this.entityTable.getNumberArray(\"double:Area\");\n  }\n  async getNumber(roomIndex) {\n    return await this.entityTable.getString(roomIndex, \"string:Number\");\n  }\n  async getAllNumber() {\n    return await this.entityTable.getStringArray(\"string:Number\");\n  }\n  async getUpperLimitIndex(roomIndex) {\n    return await this.entityTable.getNumber(roomIndex, \"index:Vim.Level:UpperLimit\");\n  }\n  async getAllUpperLimitIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Level:UpperLimit\");\n  }\n  async getUpperLimit(roomIndex) {\n    var _a2;\n    const index = await this.getUpperLimitIndex(roomIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.level) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(roomIndex) {\n    return await this.entityTable.getNumber(roomIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(roomIndex) {\n    var _a2;\n    const index = await this.getElementIndex(roomIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.RoomTable = RoomTable;\nclass BimDocument {\n  static async createFromTable(table, index) {\n    let result = new BimDocument();\n    result.index = index;\n    await Promise.all([\n      table.getTitle(index).then((v) => result.title = v),\n      table.getIsMetric(index).then((v) => result.isMetric = v),\n      table.getGuid(index).then((v) => result.guid = v),\n      table.getNumSaves(index).then((v) => result.numSaves = v),\n      table.getIsLinked(index).then((v) => result.isLinked = v),\n      table.getIsDetached(index).then((v) => result.isDetached = v),\n      table.getIsWorkshared(index).then((v) => result.isWorkshared = v),\n      table.getPathName(index).then((v) => result.pathName = v),\n      table.getLatitude(index).then((v) => result.latitude = v),\n      table.getLongitude(index).then((v) => result.longitude = v),\n      table.getTimeZone(index).then((v) => result.timeZone = v),\n      table.getPlaceName(index).then((v) => result.placeName = v),\n      table.getWeatherStationName(index).then((v) => result.weatherStationName = v),\n      table.getElevation(index).then((v) => result.elevation = v),\n      table.getProjectLocation(index).then((v) => result.projectLocation = v),\n      table.getIssueDate(index).then((v) => result.issueDate = v),\n      table.getStatus(index).then((v) => result.status = v),\n      table.getClientName(index).then((v) => result.clientName = v),\n      table.getAddress(index).then((v) => result.address = v),\n      table.getName(index).then((v) => result.name = v),\n      table.getNumber(index).then((v) => result.number = v),\n      table.getAuthor(index).then((v) => result.author = v),\n      table.getBuildingName(index).then((v) => result.buildingName = v),\n      table.getOrganizationName(index).then((v) => result.organizationName = v),\n      table.getOrganizationDescription(index).then((v) => result.organizationDescription = v),\n      table.getProduct(index).then((v) => result.product = v),\n      table.getVersion(index).then((v) => result.version = v),\n      table.getUser(index).then((v) => result.user = v),\n      table.getActiveViewIndex(index).then((v) => result.activeViewIndex = v),\n      table.getOwnerFamilyIndex(index).then((v) => result.ownerFamilyIndex = v),\n      table.getParentIndex(index).then((v) => result.parentIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.BimDocument = BimDocument;\nclass BimDocumentTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.BimDocument\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new BimDocumentTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(bimDocumentIndex) {\n    return await BimDocument.createFromTable(this, bimDocumentIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let title;\n    let isMetric;\n    let guid;\n    let numSaves;\n    let isLinked;\n    let isDetached;\n    let isWorkshared;\n    let pathName;\n    let latitude;\n    let longitude;\n    let timeZone;\n    let placeName;\n    let weatherStationName;\n    let elevation;\n    let projectLocation;\n    let issueDate;\n    let status;\n    let clientName;\n    let address;\n    let name;\n    let number;\n    let author;\n    let buildingName;\n    let organizationName;\n    let organizationDescription;\n    let product;\n    let version;\n    let user;\n    let activeViewIndex;\n    let ownerFamilyIndex;\n    let parentIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        title = await localTable.getStringArray(\"string:Title\");\n      })(),\n      (async () => {\n        isMetric = await localTable.getBooleanArray(\"byte:IsMetric\");\n      })(),\n      (async () => {\n        guid = await localTable.getStringArray(\"string:Guid\");\n      })(),\n      (async () => {\n        numSaves = await localTable.getNumberArray(\"int:NumSaves\");\n      })(),\n      (async () => {\n        isLinked = await localTable.getBooleanArray(\"byte:IsLinked\");\n      })(),\n      (async () => {\n        isDetached = await localTable.getBooleanArray(\"byte:IsDetached\");\n      })(),\n      (async () => {\n        isWorkshared = await localTable.getBooleanArray(\"byte:IsWorkshared\");\n      })(),\n      (async () => {\n        pathName = await localTable.getStringArray(\"string:PathName\");\n      })(),\n      (async () => {\n        latitude = await localTable.getNumberArray(\"double:Latitude\");\n      })(),\n      (async () => {\n        longitude = await localTable.getNumberArray(\"double:Longitude\");\n      })(),\n      (async () => {\n        timeZone = await localTable.getNumberArray(\"double:TimeZone\");\n      })(),\n      (async () => {\n        placeName = await localTable.getStringArray(\"string:PlaceName\");\n      })(),\n      (async () => {\n        weatherStationName = await localTable.getStringArray(\"string:WeatherStationName\");\n      })(),\n      (async () => {\n        elevation = await localTable.getNumberArray(\"double:Elevation\");\n      })(),\n      (async () => {\n        projectLocation = await localTable.getStringArray(\"string:ProjectLocation\");\n      })(),\n      (async () => {\n        issueDate = await localTable.getStringArray(\"string:IssueDate\");\n      })(),\n      (async () => {\n        status = await localTable.getStringArray(\"string:Status\");\n      })(),\n      (async () => {\n        clientName = await localTable.getStringArray(\"string:ClientName\");\n      })(),\n      (async () => {\n        address = await localTable.getStringArray(\"string:Address\");\n      })(),\n      (async () => {\n        name = await localTable.getStringArray(\"string:Name\");\n      })(),\n      (async () => {\n        number = await localTable.getStringArray(\"string:Number\");\n      })(),\n      (async () => {\n        author = await localTable.getStringArray(\"string:Author\");\n      })(),\n      (async () => {\n        buildingName = await localTable.getStringArray(\"string:BuildingName\");\n      })(),\n      (async () => {\n        organizationName = await localTable.getStringArray(\"string:OrganizationName\");\n      })(),\n      (async () => {\n        organizationDescription = await localTable.getStringArray(\"string:OrganizationDescription\");\n      })(),\n      (async () => {\n        product = await localTable.getStringArray(\"string:Product\");\n      })(),\n      (async () => {\n        version = await localTable.getStringArray(\"string:Version\");\n      })(),\n      (async () => {\n        user = await localTable.getStringArray(\"string:User\");\n      })(),\n      (async () => {\n        activeViewIndex = await localTable.getNumberArray(\"index:Vim.View:ActiveView\");\n      })(),\n      (async () => {\n        ownerFamilyIndex = await localTable.getNumberArray(\"index:Vim.Family:OwnerFamily\");\n      })(),\n      (async () => {\n        parentIndex = await localTable.getNumberArray(\"index:Vim.BimDocument:Parent\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let bimDocument = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      bimDocument.push({\n        index: i,\n        title: title ? title[i] : void 0,\n        isMetric: isMetric ? isMetric[i] : void 0,\n        guid: guid ? guid[i] : void 0,\n        numSaves: numSaves ? numSaves[i] : void 0,\n        isLinked: isLinked ? isLinked[i] : void 0,\n        isDetached: isDetached ? isDetached[i] : void 0,\n        isWorkshared: isWorkshared ? isWorkshared[i] : void 0,\n        pathName: pathName ? pathName[i] : void 0,\n        latitude: latitude ? latitude[i] : void 0,\n        longitude: longitude ? longitude[i] : void 0,\n        timeZone: timeZone ? timeZone[i] : void 0,\n        placeName: placeName ? placeName[i] : void 0,\n        weatherStationName: weatherStationName ? weatherStationName[i] : void 0,\n        elevation: elevation ? elevation[i] : void 0,\n        projectLocation: projectLocation ? projectLocation[i] : void 0,\n        issueDate: issueDate ? issueDate[i] : void 0,\n        status: status ? status[i] : void 0,\n        clientName: clientName ? clientName[i] : void 0,\n        address: address ? address[i] : void 0,\n        name: name ? name[i] : void 0,\n        number: number ? number[i] : void 0,\n        author: author ? author[i] : void 0,\n        buildingName: buildingName ? buildingName[i] : void 0,\n        organizationName: organizationName ? organizationName[i] : void 0,\n        organizationDescription: organizationDescription ? organizationDescription[i] : void 0,\n        product: product ? product[i] : void 0,\n        version: version ? version[i] : void 0,\n        user: user ? user[i] : void 0,\n        activeViewIndex: activeViewIndex ? activeViewIndex[i] : void 0,\n        ownerFamilyIndex: ownerFamilyIndex ? ownerFamilyIndex[i] : void 0,\n        parentIndex: parentIndex ? parentIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return bimDocument;\n  }\n  async getTitle(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:Title\");\n  }\n  async getAllTitle() {\n    return await this.entityTable.getStringArray(\"string:Title\");\n  }\n  async getIsMetric(bimDocumentIndex) {\n    return await this.entityTable.getBoolean(bimDocumentIndex, \"byte:IsMetric\");\n  }\n  async getAllIsMetric() {\n    return await this.entityTable.getBooleanArray(\"byte:IsMetric\");\n  }\n  async getGuid(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:Guid\");\n  }\n  async getAllGuid() {\n    return await this.entityTable.getStringArray(\"string:Guid\");\n  }\n  async getNumSaves(bimDocumentIndex) {\n    return await this.entityTable.getNumber(bimDocumentIndex, \"int:NumSaves\");\n  }\n  async getAllNumSaves() {\n    return await this.entityTable.getNumberArray(\"int:NumSaves\");\n  }\n  async getIsLinked(bimDocumentIndex) {\n    return await this.entityTable.getBoolean(bimDocumentIndex, \"byte:IsLinked\");\n  }\n  async getAllIsLinked() {\n    return await this.entityTable.getBooleanArray(\"byte:IsLinked\");\n  }\n  async getIsDetached(bimDocumentIndex) {\n    return await this.entityTable.getBoolean(bimDocumentIndex, \"byte:IsDetached\");\n  }\n  async getAllIsDetached() {\n    return await this.entityTable.getBooleanArray(\"byte:IsDetached\");\n  }\n  async getIsWorkshared(bimDocumentIndex) {\n    return await this.entityTable.getBoolean(bimDocumentIndex, \"byte:IsWorkshared\");\n  }\n  async getAllIsWorkshared() {\n    return await this.entityTable.getBooleanArray(\"byte:IsWorkshared\");\n  }\n  async getPathName(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:PathName\");\n  }\n  async getAllPathName() {\n    return await this.entityTable.getStringArray(\"string:PathName\");\n  }\n  async getLatitude(bimDocumentIndex) {\n    return await this.entityTable.getNumber(bimDocumentIndex, \"double:Latitude\");\n  }\n  async getAllLatitude() {\n    return await this.entityTable.getNumberArray(\"double:Latitude\");\n  }\n  async getLongitude(bimDocumentIndex) {\n    return await this.entityTable.getNumber(bimDocumentIndex, \"double:Longitude\");\n  }\n  async getAllLongitude() {\n    return await this.entityTable.getNumberArray(\"double:Longitude\");\n  }\n  async getTimeZone(bimDocumentIndex) {\n    return await this.entityTable.getNumber(bimDocumentIndex, \"double:TimeZone\");\n  }\n  async getAllTimeZone() {\n    return await this.entityTable.getNumberArray(\"double:TimeZone\");\n  }\n  async getPlaceName(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:PlaceName\");\n  }\n  async getAllPlaceName() {\n    return await this.entityTable.getStringArray(\"string:PlaceName\");\n  }\n  async getWeatherStationName(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:WeatherStationName\");\n  }\n  async getAllWeatherStationName() {\n    return await this.entityTable.getStringArray(\"string:WeatherStationName\");\n  }\n  async getElevation(bimDocumentIndex) {\n    return await this.entityTable.getNumber(bimDocumentIndex, \"double:Elevation\");\n  }\n  async getAllElevation() {\n    return await this.entityTable.getNumberArray(\"double:Elevation\");\n  }\n  async getProjectLocation(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:ProjectLocation\");\n  }\n  async getAllProjectLocation() {\n    return await this.entityTable.getStringArray(\"string:ProjectLocation\");\n  }\n  async getIssueDate(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:IssueDate\");\n  }\n  async getAllIssueDate() {\n    return await this.entityTable.getStringArray(\"string:IssueDate\");\n  }\n  async getStatus(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:Status\");\n  }\n  async getAllStatus() {\n    return await this.entityTable.getStringArray(\"string:Status\");\n  }\n  async getClientName(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:ClientName\");\n  }\n  async getAllClientName() {\n    return await this.entityTable.getStringArray(\"string:ClientName\");\n  }\n  async getAddress(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:Address\");\n  }\n  async getAllAddress() {\n    return await this.entityTable.getStringArray(\"string:Address\");\n  }\n  async getName(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:Name\");\n  }\n  async getAllName() {\n    return await this.entityTable.getStringArray(\"string:Name\");\n  }\n  async getNumber(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:Number\");\n  }\n  async getAllNumber() {\n    return await this.entityTable.getStringArray(\"string:Number\");\n  }\n  async getAuthor(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:Author\");\n  }\n  async getAllAuthor() {\n    return await this.entityTable.getStringArray(\"string:Author\");\n  }\n  async getBuildingName(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:BuildingName\");\n  }\n  async getAllBuildingName() {\n    return await this.entityTable.getStringArray(\"string:BuildingName\");\n  }\n  async getOrganizationName(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:OrganizationName\");\n  }\n  async getAllOrganizationName() {\n    return await this.entityTable.getStringArray(\"string:OrganizationName\");\n  }\n  async getOrganizationDescription(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:OrganizationDescription\");\n  }\n  async getAllOrganizationDescription() {\n    return await this.entityTable.getStringArray(\"string:OrganizationDescription\");\n  }\n  async getProduct(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:Product\");\n  }\n  async getAllProduct() {\n    return await this.entityTable.getStringArray(\"string:Product\");\n  }\n  async getVersion(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:Version\");\n  }\n  async getAllVersion() {\n    return await this.entityTable.getStringArray(\"string:Version\");\n  }\n  async getUser(bimDocumentIndex) {\n    return await this.entityTable.getString(bimDocumentIndex, \"string:User\");\n  }\n  async getAllUser() {\n    return await this.entityTable.getStringArray(\"string:User\");\n  }\n  async getActiveViewIndex(bimDocumentIndex) {\n    return await this.entityTable.getNumber(bimDocumentIndex, \"index:Vim.View:ActiveView\");\n  }\n  async getAllActiveViewIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.View:ActiveView\");\n  }\n  async getActiveView(bimDocumentIndex) {\n    var _a2;\n    const index = await this.getActiveViewIndex(bimDocumentIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.view) == null ? void 0 : _a2.get(index));\n  }\n  async getOwnerFamilyIndex(bimDocumentIndex) {\n    return await this.entityTable.getNumber(bimDocumentIndex, \"index:Vim.Family:OwnerFamily\");\n  }\n  async getAllOwnerFamilyIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Family:OwnerFamily\");\n  }\n  async getOwnerFamily(bimDocumentIndex) {\n    var _a2;\n    const index = await this.getOwnerFamilyIndex(bimDocumentIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.family) == null ? void 0 : _a2.get(index));\n  }\n  async getParentIndex(bimDocumentIndex) {\n    return await this.entityTable.getNumber(bimDocumentIndex, \"index:Vim.BimDocument:Parent\");\n  }\n  async getAllParentIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.BimDocument:Parent\");\n  }\n  async getParent(bimDocumentIndex) {\n    var _a2;\n    const index = await this.getParentIndex(bimDocumentIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.bimDocument) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(bimDocumentIndex) {\n    return await this.entityTable.getNumber(bimDocumentIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(bimDocumentIndex) {\n    var _a2;\n    const index = await this.getElementIndex(bimDocumentIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.BimDocumentTable = BimDocumentTable;\nclass DisplayUnitInBimDocument {\n  static async createFromTable(table, index) {\n    let result = new DisplayUnitInBimDocument();\n    result.index = index;\n    await Promise.all([\n      table.getDisplayUnitIndex(index).then((v) => result.displayUnitIndex = v),\n      table.getBimDocumentIndex(index).then((v) => result.bimDocumentIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.DisplayUnitInBimDocument = DisplayUnitInBimDocument;\nclass DisplayUnitInBimDocumentTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.DisplayUnitInBimDocument\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new DisplayUnitInBimDocumentTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(displayUnitInBimDocumentIndex) {\n    return await DisplayUnitInBimDocument.createFromTable(this, displayUnitInBimDocumentIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let displayUnitIndex;\n    let bimDocumentIndex;\n    await Promise.all([\n      (async () => {\n        displayUnitIndex = await localTable.getNumberArray(\"index:Vim.DisplayUnit:DisplayUnit\");\n      })(),\n      (async () => {\n        bimDocumentIndex = await localTable.getNumberArray(\"index:Vim.BimDocument:BimDocument\");\n      })()\n    ]);\n    let displayUnitInBimDocument = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      displayUnitInBimDocument.push({\n        index: i,\n        displayUnitIndex: displayUnitIndex ? displayUnitIndex[i] : void 0,\n        bimDocumentIndex: bimDocumentIndex ? bimDocumentIndex[i] : void 0\n      });\n    }\n    return displayUnitInBimDocument;\n  }\n  async getDisplayUnitIndex(displayUnitInBimDocumentIndex) {\n    return await this.entityTable.getNumber(displayUnitInBimDocumentIndex, \"index:Vim.DisplayUnit:DisplayUnit\");\n  }\n  async getAllDisplayUnitIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.DisplayUnit:DisplayUnit\");\n  }\n  async getDisplayUnit(displayUnitInBimDocumentIndex) {\n    var _a2;\n    const index = await this.getDisplayUnitIndex(displayUnitInBimDocumentIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.displayUnit) == null ? void 0 : _a2.get(index));\n  }\n  async getBimDocumentIndex(displayUnitInBimDocumentIndex) {\n    return await this.entityTable.getNumber(displayUnitInBimDocumentIndex, \"index:Vim.BimDocument:BimDocument\");\n  }\n  async getAllBimDocumentIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.BimDocument:BimDocument\");\n  }\n  async getBimDocument(displayUnitInBimDocumentIndex) {\n    var _a2;\n    const index = await this.getBimDocumentIndex(displayUnitInBimDocumentIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.bimDocument) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.DisplayUnitInBimDocumentTable = DisplayUnitInBimDocumentTable;\nclass PhaseOrderInBimDocument {\n  static async createFromTable(table, index) {\n    let result = new PhaseOrderInBimDocument();\n    result.index = index;\n    await Promise.all([\n      table.getOrderIndex(index).then((v) => result.orderIndex = v),\n      table.getPhaseIndex(index).then((v) => result.phaseIndex = v),\n      table.getBimDocumentIndex(index).then((v) => result.bimDocumentIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.PhaseOrderInBimDocument = PhaseOrderInBimDocument;\nclass PhaseOrderInBimDocumentTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.PhaseOrderInBimDocument\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new PhaseOrderInBimDocumentTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(phaseOrderInBimDocumentIndex) {\n    return await PhaseOrderInBimDocument.createFromTable(this, phaseOrderInBimDocumentIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let orderIndex;\n    let phaseIndex;\n    let bimDocumentIndex;\n    await Promise.all([\n      (async () => {\n        orderIndex = await localTable.getNumberArray(\"int:OrderIndex\");\n      })(),\n      (async () => {\n        phaseIndex = await localTable.getNumberArray(\"index:Vim.Phase:Phase\");\n      })(),\n      (async () => {\n        bimDocumentIndex = await localTable.getNumberArray(\"index:Vim.BimDocument:BimDocument\");\n      })()\n    ]);\n    let phaseOrderInBimDocument = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      phaseOrderInBimDocument.push({\n        index: i,\n        orderIndex: orderIndex ? orderIndex[i] : void 0,\n        phaseIndex: phaseIndex ? phaseIndex[i] : void 0,\n        bimDocumentIndex: bimDocumentIndex ? bimDocumentIndex[i] : void 0\n      });\n    }\n    return phaseOrderInBimDocument;\n  }\n  async getOrderIndex(phaseOrderInBimDocumentIndex) {\n    return await this.entityTable.getNumber(phaseOrderInBimDocumentIndex, \"int:OrderIndex\");\n  }\n  async getAllOrderIndex() {\n    return await this.entityTable.getNumberArray(\"int:OrderIndex\");\n  }\n  async getPhaseIndex(phaseOrderInBimDocumentIndex) {\n    return await this.entityTable.getNumber(phaseOrderInBimDocumentIndex, \"index:Vim.Phase:Phase\");\n  }\n  async getAllPhaseIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Phase:Phase\");\n  }\n  async getPhase(phaseOrderInBimDocumentIndex) {\n    var _a2;\n    const index = await this.getPhaseIndex(phaseOrderInBimDocumentIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.phase) == null ? void 0 : _a2.get(index));\n  }\n  async getBimDocumentIndex(phaseOrderInBimDocumentIndex) {\n    return await this.entityTable.getNumber(phaseOrderInBimDocumentIndex, \"index:Vim.BimDocument:BimDocument\");\n  }\n  async getAllBimDocumentIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.BimDocument:BimDocument\");\n  }\n  async getBimDocument(phaseOrderInBimDocumentIndex) {\n    var _a2;\n    const index = await this.getBimDocumentIndex(phaseOrderInBimDocumentIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.bimDocument) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.PhaseOrderInBimDocumentTable = PhaseOrderInBimDocumentTable;\nclass Category {\n  static async createFromTable(table, index) {\n    let result = new Category();\n    result.index = index;\n    await Promise.all([\n      table.getName(index).then((v) => result.name = v),\n      table.getId(index).then((v) => result.id = v),\n      table.getCategoryType(index).then((v) => result.categoryType = v),\n      table.getLineColor_X(index).then((v) => result.lineColor_X = v),\n      table.getLineColor_Y(index).then((v) => result.lineColor_Y = v),\n      table.getLineColor_Z(index).then((v) => result.lineColor_Z = v),\n      table.getBuiltInCategory(index).then((v) => result.builtInCategory = v),\n      table.getParentIndex(index).then((v) => result.parentIndex = v),\n      table.getMaterialIndex(index).then((v) => result.materialIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Category = Category;\nclass CategoryTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Category\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new CategoryTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(categoryIndex) {\n    return await Category.createFromTable(this, categoryIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let name;\n    let id2;\n    let categoryType;\n    let lineColor_X;\n    let lineColor_Y;\n    let lineColor_Z;\n    let builtInCategory;\n    let parentIndex;\n    let materialIndex;\n    await Promise.all([\n      (async () => {\n        name = await localTable.getStringArray(\"string:Name\");\n      })(),\n      (async () => {\n        var _a2;\n        id2 = (_a2 = await localTable.getBigIntArray(\"long:Id\")) != null ? _a2 : await localTable.getBigIntArray(\"int:Id\");\n      })(),\n      (async () => {\n        categoryType = await localTable.getStringArray(\"string:CategoryType\");\n      })(),\n      (async () => {\n        lineColor_X = await localTable.getNumberArray(\"double:LineColor.X\");\n      })(),\n      (async () => {\n        lineColor_Y = await localTable.getNumberArray(\"double:LineColor.Y\");\n      })(),\n      (async () => {\n        lineColor_Z = await localTable.getNumberArray(\"double:LineColor.Z\");\n      })(),\n      (async () => {\n        builtInCategory = await localTable.getStringArray(\"string:BuiltInCategory\");\n      })(),\n      (async () => {\n        parentIndex = await localTable.getNumberArray(\"index:Vim.Category:Parent\");\n      })(),\n      (async () => {\n        materialIndex = await localTable.getNumberArray(\"index:Vim.Material:Material\");\n      })()\n    ]);\n    let category = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      category.push({\n        index: i,\n        name: name ? name[i] : void 0,\n        id: id2 ? id2[i] : void 0,\n        categoryType: categoryType ? categoryType[i] : void 0,\n        lineColor_X: lineColor_X ? lineColor_X[i] : void 0,\n        lineColor_Y: lineColor_Y ? lineColor_Y[i] : void 0,\n        lineColor_Z: lineColor_Z ? lineColor_Z[i] : void 0,\n        builtInCategory: builtInCategory ? builtInCategory[i] : void 0,\n        parentIndex: parentIndex ? parentIndex[i] : void 0,\n        materialIndex: materialIndex ? materialIndex[i] : void 0\n      });\n    }\n    return category;\n  }\n  async getName(categoryIndex) {\n    return await this.entityTable.getString(categoryIndex, \"string:Name\");\n  }\n  async getAllName() {\n    return await this.entityTable.getStringArray(\"string:Name\");\n  }\n  async getId(categoryIndex) {\n    var _a2;\n    return (_a2 = await this.entityTable.getBigInt(categoryIndex, \"long:Id\")) != null ? _a2 : await this.entityTable.getBigInt(categoryIndex, \"int:Id\");\n  }\n  async getAllId() {\n    var _a2;\n    return (_a2 = await this.entityTable.getBigIntArray(\"long:Id\")) != null ? _a2 : await this.entityTable.getBigIntArray(\"int:Id\");\n  }\n  async getCategoryType(categoryIndex) {\n    return await this.entityTable.getString(categoryIndex, \"string:CategoryType\");\n  }\n  async getAllCategoryType() {\n    return await this.entityTable.getStringArray(\"string:CategoryType\");\n  }\n  async getLineColor_X(categoryIndex) {\n    return await this.entityTable.getNumber(categoryIndex, \"double:LineColor.X\");\n  }\n  async getAllLineColor_X() {\n    return await this.entityTable.getNumberArray(\"double:LineColor.X\");\n  }\n  async getLineColor_Y(categoryIndex) {\n    return await this.entityTable.getNumber(categoryIndex, \"double:LineColor.Y\");\n  }\n  async getAllLineColor_Y() {\n    return await this.entityTable.getNumberArray(\"double:LineColor.Y\");\n  }\n  async getLineColor_Z(categoryIndex) {\n    return await this.entityTable.getNumber(categoryIndex, \"double:LineColor.Z\");\n  }\n  async getAllLineColor_Z() {\n    return await this.entityTable.getNumberArray(\"double:LineColor.Z\");\n  }\n  async getBuiltInCategory(categoryIndex) {\n    return await this.entityTable.getString(categoryIndex, \"string:BuiltInCategory\");\n  }\n  async getAllBuiltInCategory() {\n    return await this.entityTable.getStringArray(\"string:BuiltInCategory\");\n  }\n  async getParentIndex(categoryIndex) {\n    return await this.entityTable.getNumber(categoryIndex, \"index:Vim.Category:Parent\");\n  }\n  async getAllParentIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Category:Parent\");\n  }\n  async getParent(categoryIndex) {\n    var _a2;\n    const index = await this.getParentIndex(categoryIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.category) == null ? void 0 : _a2.get(index));\n  }\n  async getMaterialIndex(categoryIndex) {\n    return await this.entityTable.getNumber(categoryIndex, \"index:Vim.Material:Material\");\n  }\n  async getAllMaterialIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Material:Material\");\n  }\n  async getMaterial(categoryIndex) {\n    var _a2;\n    const index = await this.getMaterialIndex(categoryIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.material) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.CategoryTable = CategoryTable;\nclass Family {\n  static async createFromTable(table, index) {\n    let result = new Family();\n    result.index = index;\n    await Promise.all([\n      table.getStructuralMaterialType(index).then((v) => result.structuralMaterialType = v),\n      table.getStructuralSectionShape(index).then((v) => result.structuralSectionShape = v),\n      table.getIsSystemFamily(index).then((v) => result.isSystemFamily = v),\n      table.getIsInPlace(index).then((v) => result.isInPlace = v),\n      table.getFamilyCategoryIndex(index).then((v) => result.familyCategoryIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Family = Family;\nclass FamilyTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Family\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new FamilyTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(familyIndex) {\n    return await Family.createFromTable(this, familyIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let structuralMaterialType;\n    let structuralSectionShape;\n    let isSystemFamily;\n    let isInPlace;\n    let familyCategoryIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        structuralMaterialType = await localTable.getStringArray(\"string:StructuralMaterialType\");\n      })(),\n      (async () => {\n        structuralSectionShape = await localTable.getStringArray(\"string:StructuralSectionShape\");\n      })(),\n      (async () => {\n        isSystemFamily = await localTable.getBooleanArray(\"byte:IsSystemFamily\");\n      })(),\n      (async () => {\n        isInPlace = await localTable.getBooleanArray(\"byte:IsInPlace\");\n      })(),\n      (async () => {\n        familyCategoryIndex = await localTable.getNumberArray(\"index:Vim.Category:FamilyCategory\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let family = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      family.push({\n        index: i,\n        structuralMaterialType: structuralMaterialType ? structuralMaterialType[i] : void 0,\n        structuralSectionShape: structuralSectionShape ? structuralSectionShape[i] : void 0,\n        isSystemFamily: isSystemFamily ? isSystemFamily[i] : void 0,\n        isInPlace: isInPlace ? isInPlace[i] : void 0,\n        familyCategoryIndex: familyCategoryIndex ? familyCategoryIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return family;\n  }\n  async getStructuralMaterialType(familyIndex) {\n    return await this.entityTable.getString(familyIndex, \"string:StructuralMaterialType\");\n  }\n  async getAllStructuralMaterialType() {\n    return await this.entityTable.getStringArray(\"string:StructuralMaterialType\");\n  }\n  async getStructuralSectionShape(familyIndex) {\n    return await this.entityTable.getString(familyIndex, \"string:StructuralSectionShape\");\n  }\n  async getAllStructuralSectionShape() {\n    return await this.entityTable.getStringArray(\"string:StructuralSectionShape\");\n  }\n  async getIsSystemFamily(familyIndex) {\n    return await this.entityTable.getBoolean(familyIndex, \"byte:IsSystemFamily\");\n  }\n  async getAllIsSystemFamily() {\n    return await this.entityTable.getBooleanArray(\"byte:IsSystemFamily\");\n  }\n  async getIsInPlace(familyIndex) {\n    return await this.entityTable.getBoolean(familyIndex, \"byte:IsInPlace\");\n  }\n  async getAllIsInPlace() {\n    return await this.entityTable.getBooleanArray(\"byte:IsInPlace\");\n  }\n  async getFamilyCategoryIndex(familyIndex) {\n    return await this.entityTable.getNumber(familyIndex, \"index:Vim.Category:FamilyCategory\");\n  }\n  async getAllFamilyCategoryIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Category:FamilyCategory\");\n  }\n  async getFamilyCategory(familyIndex) {\n    var _a2;\n    const index = await this.getFamilyCategoryIndex(familyIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.category) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(familyIndex) {\n    return await this.entityTable.getNumber(familyIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(familyIndex) {\n    var _a2;\n    const index = await this.getElementIndex(familyIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.FamilyTable = FamilyTable;\nclass FamilyType {\n  static async createFromTable(table, index) {\n    let result = new FamilyType();\n    result.index = index;\n    await Promise.all([\n      table.getIsSystemFamilyType(index).then((v) => result.isSystemFamilyType = v),\n      table.getFamilyIndex(index).then((v) => result.familyIndex = v),\n      table.getCompoundStructureIndex(index).then((v) => result.compoundStructureIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.FamilyType = FamilyType;\nclass FamilyTypeTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.FamilyType\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new FamilyTypeTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(familyTypeIndex) {\n    return await FamilyType.createFromTable(this, familyTypeIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let isSystemFamilyType;\n    let familyIndex;\n    let compoundStructureIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        isSystemFamilyType = await localTable.getBooleanArray(\"byte:IsSystemFamilyType\");\n      })(),\n      (async () => {\n        familyIndex = await localTable.getNumberArray(\"index:Vim.Family:Family\");\n      })(),\n      (async () => {\n        compoundStructureIndex = await localTable.getNumberArray(\"index:Vim.CompoundStructure:CompoundStructure\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let familyType = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      familyType.push({\n        index: i,\n        isSystemFamilyType: isSystemFamilyType ? isSystemFamilyType[i] : void 0,\n        familyIndex: familyIndex ? familyIndex[i] : void 0,\n        compoundStructureIndex: compoundStructureIndex ? compoundStructureIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return familyType;\n  }\n  async getIsSystemFamilyType(familyTypeIndex) {\n    return await this.entityTable.getBoolean(familyTypeIndex, \"byte:IsSystemFamilyType\");\n  }\n  async getAllIsSystemFamilyType() {\n    return await this.entityTable.getBooleanArray(\"byte:IsSystemFamilyType\");\n  }\n  async getFamilyIndex(familyTypeIndex) {\n    return await this.entityTable.getNumber(familyTypeIndex, \"index:Vim.Family:Family\");\n  }\n  async getAllFamilyIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Family:Family\");\n  }\n  async getFamily(familyTypeIndex) {\n    var _a2;\n    const index = await this.getFamilyIndex(familyTypeIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.family) == null ? void 0 : _a2.get(index));\n  }\n  async getCompoundStructureIndex(familyTypeIndex) {\n    return await this.entityTable.getNumber(familyTypeIndex, \"index:Vim.CompoundStructure:CompoundStructure\");\n  }\n  async getAllCompoundStructureIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.CompoundStructure:CompoundStructure\");\n  }\n  async getCompoundStructure(familyTypeIndex) {\n    var _a2;\n    const index = await this.getCompoundStructureIndex(familyTypeIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.compoundStructure) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(familyTypeIndex) {\n    return await this.entityTable.getNumber(familyTypeIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(familyTypeIndex) {\n    var _a2;\n    const index = await this.getElementIndex(familyTypeIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.FamilyTypeTable = FamilyTypeTable;\nclass FamilyInstance {\n  static async createFromTable(table, index) {\n    let result = new FamilyInstance();\n    result.index = index;\n    await Promise.all([\n      table.getFacingFlipped(index).then((v) => result.facingFlipped = v),\n      table.getFacingOrientation_X(index).then((v) => result.facingOrientation_X = v),\n      table.getFacingOrientation_Y(index).then((v) => result.facingOrientation_Y = v),\n      table.getFacingOrientation_Z(index).then((v) => result.facingOrientation_Z = v),\n      table.getHandFlipped(index).then((v) => result.handFlipped = v),\n      table.getMirrored(index).then((v) => result.mirrored = v),\n      table.getHasModifiedGeometry(index).then((v) => result.hasModifiedGeometry = v),\n      table.getScale(index).then((v) => result.scale = v),\n      table.getBasisX_X(index).then((v) => result.basisX_X = v),\n      table.getBasisX_Y(index).then((v) => result.basisX_Y = v),\n      table.getBasisX_Z(index).then((v) => result.basisX_Z = v),\n      table.getBasisY_X(index).then((v) => result.basisY_X = v),\n      table.getBasisY_Y(index).then((v) => result.basisY_Y = v),\n      table.getBasisY_Z(index).then((v) => result.basisY_Z = v),\n      table.getBasisZ_X(index).then((v) => result.basisZ_X = v),\n      table.getBasisZ_Y(index).then((v) => result.basisZ_Y = v),\n      table.getBasisZ_Z(index).then((v) => result.basisZ_Z = v),\n      table.getTranslation_X(index).then((v) => result.translation_X = v),\n      table.getTranslation_Y(index).then((v) => result.translation_Y = v),\n      table.getTranslation_Z(index).then((v) => result.translation_Z = v),\n      table.getHandOrientation_X(index).then((v) => result.handOrientation_X = v),\n      table.getHandOrientation_Y(index).then((v) => result.handOrientation_Y = v),\n      table.getHandOrientation_Z(index).then((v) => result.handOrientation_Z = v),\n      table.getFamilyTypeIndex(index).then((v) => result.familyTypeIndex = v),\n      table.getHostIndex(index).then((v) => result.hostIndex = v),\n      table.getFromRoomIndex(index).then((v) => result.fromRoomIndex = v),\n      table.getToRoomIndex(index).then((v) => result.toRoomIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.FamilyInstance = FamilyInstance;\nclass FamilyInstanceTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.FamilyInstance\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new FamilyInstanceTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(familyInstanceIndex) {\n    return await FamilyInstance.createFromTable(this, familyInstanceIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let facingFlipped;\n    let facingOrientation_X;\n    let facingOrientation_Y;\n    let facingOrientation_Z;\n    let handFlipped;\n    let mirrored;\n    let hasModifiedGeometry;\n    let scale;\n    let basisX_X;\n    let basisX_Y;\n    let basisX_Z;\n    let basisY_X;\n    let basisY_Y;\n    let basisY_Z;\n    let basisZ_X;\n    let basisZ_Y;\n    let basisZ_Z;\n    let translation_X;\n    let translation_Y;\n    let translation_Z;\n    let handOrientation_X;\n    let handOrientation_Y;\n    let handOrientation_Z;\n    let familyTypeIndex;\n    let hostIndex;\n    let fromRoomIndex;\n    let toRoomIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        facingFlipped = await localTable.getBooleanArray(\"byte:FacingFlipped\");\n      })(),\n      (async () => {\n        facingOrientation_X = await localTable.getNumberArray(\"float:FacingOrientation.X\");\n      })(),\n      (async () => {\n        facingOrientation_Y = await localTable.getNumberArray(\"float:FacingOrientation.Y\");\n      })(),\n      (async () => {\n        facingOrientation_Z = await localTable.getNumberArray(\"float:FacingOrientation.Z\");\n      })(),\n      (async () => {\n        handFlipped = await localTable.getBooleanArray(\"byte:HandFlipped\");\n      })(),\n      (async () => {\n        mirrored = await localTable.getBooleanArray(\"byte:Mirrored\");\n      })(),\n      (async () => {\n        hasModifiedGeometry = await localTable.getBooleanArray(\"byte:HasModifiedGeometry\");\n      })(),\n      (async () => {\n        scale = await localTable.getNumberArray(\"float:Scale\");\n      })(),\n      (async () => {\n        basisX_X = await localTable.getNumberArray(\"float:BasisX.X\");\n      })(),\n      (async () => {\n        basisX_Y = await localTable.getNumberArray(\"float:BasisX.Y\");\n      })(),\n      (async () => {\n        basisX_Z = await localTable.getNumberArray(\"float:BasisX.Z\");\n      })(),\n      (async () => {\n        basisY_X = await localTable.getNumberArray(\"float:BasisY.X\");\n      })(),\n      (async () => {\n        basisY_Y = await localTable.getNumberArray(\"float:BasisY.Y\");\n      })(),\n      (async () => {\n        basisY_Z = await localTable.getNumberArray(\"float:BasisY.Z\");\n      })(),\n      (async () => {\n        basisZ_X = await localTable.getNumberArray(\"float:BasisZ.X\");\n      })(),\n      (async () => {\n        basisZ_Y = await localTable.getNumberArray(\"float:BasisZ.Y\");\n      })(),\n      (async () => {\n        basisZ_Z = await localTable.getNumberArray(\"float:BasisZ.Z\");\n      })(),\n      (async () => {\n        translation_X = await localTable.getNumberArray(\"float:Translation.X\");\n      })(),\n      (async () => {\n        translation_Y = await localTable.getNumberArray(\"float:Translation.Y\");\n      })(),\n      (async () => {\n        translation_Z = await localTable.getNumberArray(\"float:Translation.Z\");\n      })(),\n      (async () => {\n        handOrientation_X = await localTable.getNumberArray(\"float:HandOrientation.X\");\n      })(),\n      (async () => {\n        handOrientation_Y = await localTable.getNumberArray(\"float:HandOrientation.Y\");\n      })(),\n      (async () => {\n        handOrientation_Z = await localTable.getNumberArray(\"float:HandOrientation.Z\");\n      })(),\n      (async () => {\n        familyTypeIndex = await localTable.getNumberArray(\"index:Vim.FamilyType:FamilyType\");\n      })(),\n      (async () => {\n        hostIndex = await localTable.getNumberArray(\"index:Vim.Element:Host\");\n      })(),\n      (async () => {\n        fromRoomIndex = await localTable.getNumberArray(\"index:Vim.Room:FromRoom\");\n      })(),\n      (async () => {\n        toRoomIndex = await localTable.getNumberArray(\"index:Vim.Room:ToRoom\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let familyInstance = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      familyInstance.push({\n        index: i,\n        facingFlipped: facingFlipped ? facingFlipped[i] : void 0,\n        facingOrientation_X: facingOrientation_X ? facingOrientation_X[i] : void 0,\n        facingOrientation_Y: facingOrientation_Y ? facingOrientation_Y[i] : void 0,\n        facingOrientation_Z: facingOrientation_Z ? facingOrientation_Z[i] : void 0,\n        handFlipped: handFlipped ? handFlipped[i] : void 0,\n        mirrored: mirrored ? mirrored[i] : void 0,\n        hasModifiedGeometry: hasModifiedGeometry ? hasModifiedGeometry[i] : void 0,\n        scale: scale ? scale[i] : void 0,\n        basisX_X: basisX_X ? basisX_X[i] : void 0,\n        basisX_Y: basisX_Y ? basisX_Y[i] : void 0,\n        basisX_Z: basisX_Z ? basisX_Z[i] : void 0,\n        basisY_X: basisY_X ? basisY_X[i] : void 0,\n        basisY_Y: basisY_Y ? basisY_Y[i] : void 0,\n        basisY_Z: basisY_Z ? basisY_Z[i] : void 0,\n        basisZ_X: basisZ_X ? basisZ_X[i] : void 0,\n        basisZ_Y: basisZ_Y ? basisZ_Y[i] : void 0,\n        basisZ_Z: basisZ_Z ? basisZ_Z[i] : void 0,\n        translation_X: translation_X ? translation_X[i] : void 0,\n        translation_Y: translation_Y ? translation_Y[i] : void 0,\n        translation_Z: translation_Z ? translation_Z[i] : void 0,\n        handOrientation_X: handOrientation_X ? handOrientation_X[i] : void 0,\n        handOrientation_Y: handOrientation_Y ? handOrientation_Y[i] : void 0,\n        handOrientation_Z: handOrientation_Z ? handOrientation_Z[i] : void 0,\n        familyTypeIndex: familyTypeIndex ? familyTypeIndex[i] : void 0,\n        hostIndex: hostIndex ? hostIndex[i] : void 0,\n        fromRoomIndex: fromRoomIndex ? fromRoomIndex[i] : void 0,\n        toRoomIndex: toRoomIndex ? toRoomIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return familyInstance;\n  }\n  async getFacingFlipped(familyInstanceIndex) {\n    return await this.entityTable.getBoolean(familyInstanceIndex, \"byte:FacingFlipped\");\n  }\n  async getAllFacingFlipped() {\n    return await this.entityTable.getBooleanArray(\"byte:FacingFlipped\");\n  }\n  async getFacingOrientation_X(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:FacingOrientation.X\");\n  }\n  async getAllFacingOrientation_X() {\n    return await this.entityTable.getNumberArray(\"float:FacingOrientation.X\");\n  }\n  async getFacingOrientation_Y(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:FacingOrientation.Y\");\n  }\n  async getAllFacingOrientation_Y() {\n    return await this.entityTable.getNumberArray(\"float:FacingOrientation.Y\");\n  }\n  async getFacingOrientation_Z(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:FacingOrientation.Z\");\n  }\n  async getAllFacingOrientation_Z() {\n    return await this.entityTable.getNumberArray(\"float:FacingOrientation.Z\");\n  }\n  async getHandFlipped(familyInstanceIndex) {\n    return await this.entityTable.getBoolean(familyInstanceIndex, \"byte:HandFlipped\");\n  }\n  async getAllHandFlipped() {\n    return await this.entityTable.getBooleanArray(\"byte:HandFlipped\");\n  }\n  async getMirrored(familyInstanceIndex) {\n    return await this.entityTable.getBoolean(familyInstanceIndex, \"byte:Mirrored\");\n  }\n  async getAllMirrored() {\n    return await this.entityTable.getBooleanArray(\"byte:Mirrored\");\n  }\n  async getHasModifiedGeometry(familyInstanceIndex) {\n    return await this.entityTable.getBoolean(familyInstanceIndex, \"byte:HasModifiedGeometry\");\n  }\n  async getAllHasModifiedGeometry() {\n    return await this.entityTable.getBooleanArray(\"byte:HasModifiedGeometry\");\n  }\n  async getScale(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:Scale\");\n  }\n  async getAllScale() {\n    return await this.entityTable.getNumberArray(\"float:Scale\");\n  }\n  async getBasisX_X(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:BasisX.X\");\n  }\n  async getAllBasisX_X() {\n    return await this.entityTable.getNumberArray(\"float:BasisX.X\");\n  }\n  async getBasisX_Y(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:BasisX.Y\");\n  }\n  async getAllBasisX_Y() {\n    return await this.entityTable.getNumberArray(\"float:BasisX.Y\");\n  }\n  async getBasisX_Z(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:BasisX.Z\");\n  }\n  async getAllBasisX_Z() {\n    return await this.entityTable.getNumberArray(\"float:BasisX.Z\");\n  }\n  async getBasisY_X(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:BasisY.X\");\n  }\n  async getAllBasisY_X() {\n    return await this.entityTable.getNumberArray(\"float:BasisY.X\");\n  }\n  async getBasisY_Y(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:BasisY.Y\");\n  }\n  async getAllBasisY_Y() {\n    return await this.entityTable.getNumberArray(\"float:BasisY.Y\");\n  }\n  async getBasisY_Z(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:BasisY.Z\");\n  }\n  async getAllBasisY_Z() {\n    return await this.entityTable.getNumberArray(\"float:BasisY.Z\");\n  }\n  async getBasisZ_X(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:BasisZ.X\");\n  }\n  async getAllBasisZ_X() {\n    return await this.entityTable.getNumberArray(\"float:BasisZ.X\");\n  }\n  async getBasisZ_Y(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:BasisZ.Y\");\n  }\n  async getAllBasisZ_Y() {\n    return await this.entityTable.getNumberArray(\"float:BasisZ.Y\");\n  }\n  async getBasisZ_Z(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:BasisZ.Z\");\n  }\n  async getAllBasisZ_Z() {\n    return await this.entityTable.getNumberArray(\"float:BasisZ.Z\");\n  }\n  async getTranslation_X(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:Translation.X\");\n  }\n  async getAllTranslation_X() {\n    return await this.entityTable.getNumberArray(\"float:Translation.X\");\n  }\n  async getTranslation_Y(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:Translation.Y\");\n  }\n  async getAllTranslation_Y() {\n    return await this.entityTable.getNumberArray(\"float:Translation.Y\");\n  }\n  async getTranslation_Z(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:Translation.Z\");\n  }\n  async getAllTranslation_Z() {\n    return await this.entityTable.getNumberArray(\"float:Translation.Z\");\n  }\n  async getHandOrientation_X(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:HandOrientation.X\");\n  }\n  async getAllHandOrientation_X() {\n    return await this.entityTable.getNumberArray(\"float:HandOrientation.X\");\n  }\n  async getHandOrientation_Y(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:HandOrientation.Y\");\n  }\n  async getAllHandOrientation_Y() {\n    return await this.entityTable.getNumberArray(\"float:HandOrientation.Y\");\n  }\n  async getHandOrientation_Z(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"float:HandOrientation.Z\");\n  }\n  async getAllHandOrientation_Z() {\n    return await this.entityTable.getNumberArray(\"float:HandOrientation.Z\");\n  }\n  async getFamilyTypeIndex(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"index:Vim.FamilyType:FamilyType\");\n  }\n  async getAllFamilyTypeIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.FamilyType:FamilyType\");\n  }\n  async getFamilyType(familyInstanceIndex) {\n    var _a2;\n    const index = await this.getFamilyTypeIndex(familyInstanceIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.familyType) == null ? void 0 : _a2.get(index));\n  }\n  async getHostIndex(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"index:Vim.Element:Host\");\n  }\n  async getAllHostIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Host\");\n  }\n  async getHost(familyInstanceIndex) {\n    var _a2;\n    const index = await this.getHostIndex(familyInstanceIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n  async getFromRoomIndex(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"index:Vim.Room:FromRoom\");\n  }\n  async getAllFromRoomIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Room:FromRoom\");\n  }\n  async getFromRoom(familyInstanceIndex) {\n    var _a2;\n    const index = await this.getFromRoomIndex(familyInstanceIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.room) == null ? void 0 : _a2.get(index));\n  }\n  async getToRoomIndex(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"index:Vim.Room:ToRoom\");\n  }\n  async getAllToRoomIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Room:ToRoom\");\n  }\n  async getToRoom(familyInstanceIndex) {\n    var _a2;\n    const index = await this.getToRoomIndex(familyInstanceIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.room) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(familyInstanceIndex) {\n    return await this.entityTable.getNumber(familyInstanceIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(familyInstanceIndex) {\n    var _a2;\n    const index = await this.getElementIndex(familyInstanceIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.FamilyInstanceTable = FamilyInstanceTable;\nclass View {\n  static async createFromTable(table, index) {\n    let result = new View();\n    result.index = index;\n    await Promise.all([\n      table.getTitle(index).then((v) => result.title = v),\n      table.getViewType(index).then((v) => result.viewType = v),\n      table.getUp_X(index).then((v) => result.up_X = v),\n      table.getUp_Y(index).then((v) => result.up_Y = v),\n      table.getUp_Z(index).then((v) => result.up_Z = v),\n      table.getRight_X(index).then((v) => result.right_X = v),\n      table.getRight_Y(index).then((v) => result.right_Y = v),\n      table.getRight_Z(index).then((v) => result.right_Z = v),\n      table.getOrigin_X(index).then((v) => result.origin_X = v),\n      table.getOrigin_Y(index).then((v) => result.origin_Y = v),\n      table.getOrigin_Z(index).then((v) => result.origin_Z = v),\n      table.getViewDirection_X(index).then((v) => result.viewDirection_X = v),\n      table.getViewDirection_Y(index).then((v) => result.viewDirection_Y = v),\n      table.getViewDirection_Z(index).then((v) => result.viewDirection_Z = v),\n      table.getViewPosition_X(index).then((v) => result.viewPosition_X = v),\n      table.getViewPosition_Y(index).then((v) => result.viewPosition_Y = v),\n      table.getViewPosition_Z(index).then((v) => result.viewPosition_Z = v),\n      table.getScale(index).then((v) => result.scale = v),\n      table.getOutline_Min_X(index).then((v) => result.outline_Min_X = v),\n      table.getOutline_Min_Y(index).then((v) => result.outline_Min_Y = v),\n      table.getOutline_Max_X(index).then((v) => result.outline_Max_X = v),\n      table.getOutline_Max_Y(index).then((v) => result.outline_Max_Y = v),\n      table.getDetailLevel(index).then((v) => result.detailLevel = v),\n      table.getCameraIndex(index).then((v) => result.cameraIndex = v),\n      table.getFamilyTypeIndex(index).then((v) => result.familyTypeIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.View = View;\nclass ViewTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.View\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ViewTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(viewIndex) {\n    return await View.createFromTable(this, viewIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let title;\n    let viewType;\n    let up_X;\n    let up_Y;\n    let up_Z;\n    let right_X;\n    let right_Y;\n    let right_Z;\n    let origin_X;\n    let origin_Y;\n    let origin_Z;\n    let viewDirection_X;\n    let viewDirection_Y;\n    let viewDirection_Z;\n    let viewPosition_X;\n    let viewPosition_Y;\n    let viewPosition_Z;\n    let scale;\n    let outline_Min_X;\n    let outline_Min_Y;\n    let outline_Max_X;\n    let outline_Max_Y;\n    let detailLevel;\n    let cameraIndex;\n    let familyTypeIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        title = await localTable.getStringArray(\"string:Title\");\n      })(),\n      (async () => {\n        viewType = await localTable.getStringArray(\"string:ViewType\");\n      })(),\n      (async () => {\n        up_X = await localTable.getNumberArray(\"double:Up.X\");\n      })(),\n      (async () => {\n        up_Y = await localTable.getNumberArray(\"double:Up.Y\");\n      })(),\n      (async () => {\n        up_Z = await localTable.getNumberArray(\"double:Up.Z\");\n      })(),\n      (async () => {\n        right_X = await localTable.getNumberArray(\"double:Right.X\");\n      })(),\n      (async () => {\n        right_Y = await localTable.getNumberArray(\"double:Right.Y\");\n      })(),\n      (async () => {\n        right_Z = await localTable.getNumberArray(\"double:Right.Z\");\n      })(),\n      (async () => {\n        origin_X = await localTable.getNumberArray(\"double:Origin.X\");\n      })(),\n      (async () => {\n        origin_Y = await localTable.getNumberArray(\"double:Origin.Y\");\n      })(),\n      (async () => {\n        origin_Z = await localTable.getNumberArray(\"double:Origin.Z\");\n      })(),\n      (async () => {\n        viewDirection_X = await localTable.getNumberArray(\"double:ViewDirection.X\");\n      })(),\n      (async () => {\n        viewDirection_Y = await localTable.getNumberArray(\"double:ViewDirection.Y\");\n      })(),\n      (async () => {\n        viewDirection_Z = await localTable.getNumberArray(\"double:ViewDirection.Z\");\n      })(),\n      (async () => {\n        viewPosition_X = await localTable.getNumberArray(\"double:ViewPosition.X\");\n      })(),\n      (async () => {\n        viewPosition_Y = await localTable.getNumberArray(\"double:ViewPosition.Y\");\n      })(),\n      (async () => {\n        viewPosition_Z = await localTable.getNumberArray(\"double:ViewPosition.Z\");\n      })(),\n      (async () => {\n        scale = await localTable.getNumberArray(\"double:Scale\");\n      })(),\n      (async () => {\n        outline_Min_X = await localTable.getNumberArray(\"double:Outline.Min.X\");\n      })(),\n      (async () => {\n        outline_Min_Y = await localTable.getNumberArray(\"double:Outline.Min.Y\");\n      })(),\n      (async () => {\n        outline_Max_X = await localTable.getNumberArray(\"double:Outline.Max.X\");\n      })(),\n      (async () => {\n        outline_Max_Y = await localTable.getNumberArray(\"double:Outline.Max.Y\");\n      })(),\n      (async () => {\n        detailLevel = await localTable.getNumberArray(\"int:DetailLevel\");\n      })(),\n      (async () => {\n        cameraIndex = await localTable.getNumberArray(\"index:Vim.Camera:Camera\");\n      })(),\n      (async () => {\n        familyTypeIndex = await localTable.getNumberArray(\"index:Vim.FamilyType:FamilyType\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let view = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      view.push({\n        index: i,\n        title: title ? title[i] : void 0,\n        viewType: viewType ? viewType[i] : void 0,\n        up_X: up_X ? up_X[i] : void 0,\n        up_Y: up_Y ? up_Y[i] : void 0,\n        up_Z: up_Z ? up_Z[i] : void 0,\n        right_X: right_X ? right_X[i] : void 0,\n        right_Y: right_Y ? right_Y[i] : void 0,\n        right_Z: right_Z ? right_Z[i] : void 0,\n        origin_X: origin_X ? origin_X[i] : void 0,\n        origin_Y: origin_Y ? origin_Y[i] : void 0,\n        origin_Z: origin_Z ? origin_Z[i] : void 0,\n        viewDirection_X: viewDirection_X ? viewDirection_X[i] : void 0,\n        viewDirection_Y: viewDirection_Y ? viewDirection_Y[i] : void 0,\n        viewDirection_Z: viewDirection_Z ? viewDirection_Z[i] : void 0,\n        viewPosition_X: viewPosition_X ? viewPosition_X[i] : void 0,\n        viewPosition_Y: viewPosition_Y ? viewPosition_Y[i] : void 0,\n        viewPosition_Z: viewPosition_Z ? viewPosition_Z[i] : void 0,\n        scale: scale ? scale[i] : void 0,\n        outline_Min_X: outline_Min_X ? outline_Min_X[i] : void 0,\n        outline_Min_Y: outline_Min_Y ? outline_Min_Y[i] : void 0,\n        outline_Max_X: outline_Max_X ? outline_Max_X[i] : void 0,\n        outline_Max_Y: outline_Max_Y ? outline_Max_Y[i] : void 0,\n        detailLevel: detailLevel ? detailLevel[i] : void 0,\n        cameraIndex: cameraIndex ? cameraIndex[i] : void 0,\n        familyTypeIndex: familyTypeIndex ? familyTypeIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return view;\n  }\n  async getTitle(viewIndex) {\n    return await this.entityTable.getString(viewIndex, \"string:Title\");\n  }\n  async getAllTitle() {\n    return await this.entityTable.getStringArray(\"string:Title\");\n  }\n  async getViewType(viewIndex) {\n    return await this.entityTable.getString(viewIndex, \"string:ViewType\");\n  }\n  async getAllViewType() {\n    return await this.entityTable.getStringArray(\"string:ViewType\");\n  }\n  async getUp_X(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Up.X\");\n  }\n  async getAllUp_X() {\n    return await this.entityTable.getNumberArray(\"double:Up.X\");\n  }\n  async getUp_Y(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Up.Y\");\n  }\n  async getAllUp_Y() {\n    return await this.entityTable.getNumberArray(\"double:Up.Y\");\n  }\n  async getUp_Z(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Up.Z\");\n  }\n  async getAllUp_Z() {\n    return await this.entityTable.getNumberArray(\"double:Up.Z\");\n  }\n  async getRight_X(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Right.X\");\n  }\n  async getAllRight_X() {\n    return await this.entityTable.getNumberArray(\"double:Right.X\");\n  }\n  async getRight_Y(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Right.Y\");\n  }\n  async getAllRight_Y() {\n    return await this.entityTable.getNumberArray(\"double:Right.Y\");\n  }\n  async getRight_Z(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Right.Z\");\n  }\n  async getAllRight_Z() {\n    return await this.entityTable.getNumberArray(\"double:Right.Z\");\n  }\n  async getOrigin_X(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Origin.X\");\n  }\n  async getAllOrigin_X() {\n    return await this.entityTable.getNumberArray(\"double:Origin.X\");\n  }\n  async getOrigin_Y(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Origin.Y\");\n  }\n  async getAllOrigin_Y() {\n    return await this.entityTable.getNumberArray(\"double:Origin.Y\");\n  }\n  async getOrigin_Z(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Origin.Z\");\n  }\n  async getAllOrigin_Z() {\n    return await this.entityTable.getNumberArray(\"double:Origin.Z\");\n  }\n  async getViewDirection_X(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:ViewDirection.X\");\n  }\n  async getAllViewDirection_X() {\n    return await this.entityTable.getNumberArray(\"double:ViewDirection.X\");\n  }\n  async getViewDirection_Y(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:ViewDirection.Y\");\n  }\n  async getAllViewDirection_Y() {\n    return await this.entityTable.getNumberArray(\"double:ViewDirection.Y\");\n  }\n  async getViewDirection_Z(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:ViewDirection.Z\");\n  }\n  async getAllViewDirection_Z() {\n    return await this.entityTable.getNumberArray(\"double:ViewDirection.Z\");\n  }\n  async getViewPosition_X(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:ViewPosition.X\");\n  }\n  async getAllViewPosition_X() {\n    return await this.entityTable.getNumberArray(\"double:ViewPosition.X\");\n  }\n  async getViewPosition_Y(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:ViewPosition.Y\");\n  }\n  async getAllViewPosition_Y() {\n    return await this.entityTable.getNumberArray(\"double:ViewPosition.Y\");\n  }\n  async getViewPosition_Z(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:ViewPosition.Z\");\n  }\n  async getAllViewPosition_Z() {\n    return await this.entityTable.getNumberArray(\"double:ViewPosition.Z\");\n  }\n  async getScale(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Scale\");\n  }\n  async getAllScale() {\n    return await this.entityTable.getNumberArray(\"double:Scale\");\n  }\n  async getOutline_Min_X(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Outline.Min.X\");\n  }\n  async getAllOutline_Min_X() {\n    return await this.entityTable.getNumberArray(\"double:Outline.Min.X\");\n  }\n  async getOutline_Min_Y(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Outline.Min.Y\");\n  }\n  async getAllOutline_Min_Y() {\n    return await this.entityTable.getNumberArray(\"double:Outline.Min.Y\");\n  }\n  async getOutline_Max_X(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Outline.Max.X\");\n  }\n  async getAllOutline_Max_X() {\n    return await this.entityTable.getNumberArray(\"double:Outline.Max.X\");\n  }\n  async getOutline_Max_Y(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"double:Outline.Max.Y\");\n  }\n  async getAllOutline_Max_Y() {\n    return await this.entityTable.getNumberArray(\"double:Outline.Max.Y\");\n  }\n  async getDetailLevel(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"int:DetailLevel\");\n  }\n  async getAllDetailLevel() {\n    return await this.entityTable.getNumberArray(\"int:DetailLevel\");\n  }\n  async getCameraIndex(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"index:Vim.Camera:Camera\");\n  }\n  async getAllCameraIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Camera:Camera\");\n  }\n  async getCamera(viewIndex) {\n    var _a2;\n    const index = await this.getCameraIndex(viewIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.camera) == null ? void 0 : _a2.get(index));\n  }\n  async getFamilyTypeIndex(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"index:Vim.FamilyType:FamilyType\");\n  }\n  async getAllFamilyTypeIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.FamilyType:FamilyType\");\n  }\n  async getFamilyType(viewIndex) {\n    var _a2;\n    const index = await this.getFamilyTypeIndex(viewIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.familyType) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(viewIndex) {\n    return await this.entityTable.getNumber(viewIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(viewIndex) {\n    var _a2;\n    const index = await this.getElementIndex(viewIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ViewTable = ViewTable;\nclass ElementInView {\n  static async createFromTable(table, index) {\n    let result = new ElementInView();\n    result.index = index;\n    await Promise.all([\n      table.getViewIndex(index).then((v) => result.viewIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ElementInView = ElementInView;\nclass ElementInViewTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ElementInView\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ElementInViewTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(elementInViewIndex) {\n    return await ElementInView.createFromTable(this, elementInViewIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let viewIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        viewIndex = await localTable.getNumberArray(\"index:Vim.View:View\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let elementInView = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      elementInView.push({\n        index: i,\n        viewIndex: viewIndex ? viewIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return elementInView;\n  }\n  async getViewIndex(elementInViewIndex) {\n    return await this.entityTable.getNumber(elementInViewIndex, \"index:Vim.View:View\");\n  }\n  async getAllViewIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.View:View\");\n  }\n  async getView(elementInViewIndex) {\n    var _a2;\n    const index = await this.getViewIndex(elementInViewIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.view) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(elementInViewIndex) {\n    return await this.entityTable.getNumber(elementInViewIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(elementInViewIndex) {\n    var _a2;\n    const index = await this.getElementIndex(elementInViewIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ElementInViewTable = ElementInViewTable;\nclass ShapeInView {\n  static async createFromTable(table, index) {\n    let result = new ShapeInView();\n    result.index = index;\n    await Promise.all([\n      table.getShapeIndex(index).then((v) => result.shapeIndex = v),\n      table.getViewIndex(index).then((v) => result.viewIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ShapeInView = ShapeInView;\nclass ShapeInViewTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ShapeInView\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ShapeInViewTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(shapeInViewIndex) {\n    return await ShapeInView.createFromTable(this, shapeInViewIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let shapeIndex;\n    let viewIndex;\n    await Promise.all([\n      (async () => {\n        shapeIndex = await localTable.getNumberArray(\"index:Vim.Shape:Shape\");\n      })(),\n      (async () => {\n        viewIndex = await localTable.getNumberArray(\"index:Vim.View:View\");\n      })()\n    ]);\n    let shapeInView = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      shapeInView.push({\n        index: i,\n        shapeIndex: shapeIndex ? shapeIndex[i] : void 0,\n        viewIndex: viewIndex ? viewIndex[i] : void 0\n      });\n    }\n    return shapeInView;\n  }\n  async getShapeIndex(shapeInViewIndex) {\n    return await this.entityTable.getNumber(shapeInViewIndex, \"index:Vim.Shape:Shape\");\n  }\n  async getAllShapeIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Shape:Shape\");\n  }\n  async getShape(shapeInViewIndex) {\n    var _a2;\n    const index = await this.getShapeIndex(shapeInViewIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.shape) == null ? void 0 : _a2.get(index));\n  }\n  async getViewIndex(shapeInViewIndex) {\n    return await this.entityTable.getNumber(shapeInViewIndex, \"index:Vim.View:View\");\n  }\n  async getAllViewIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.View:View\");\n  }\n  async getView(shapeInViewIndex) {\n    var _a2;\n    const index = await this.getViewIndex(shapeInViewIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.view) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ShapeInViewTable = ShapeInViewTable;\nclass AssetInView {\n  static async createFromTable(table, index) {\n    let result = new AssetInView();\n    result.index = index;\n    await Promise.all([\n      table.getAssetIndex(index).then((v) => result.assetIndex = v),\n      table.getViewIndex(index).then((v) => result.viewIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.AssetInView = AssetInView;\nclass AssetInViewTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.AssetInView\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new AssetInViewTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(assetInViewIndex) {\n    return await AssetInView.createFromTable(this, assetInViewIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let assetIndex;\n    let viewIndex;\n    await Promise.all([\n      (async () => {\n        assetIndex = await localTable.getNumberArray(\"index:Vim.Asset:Asset\");\n      })(),\n      (async () => {\n        viewIndex = await localTable.getNumberArray(\"index:Vim.View:View\");\n      })()\n    ]);\n    let assetInView = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      assetInView.push({\n        index: i,\n        assetIndex: assetIndex ? assetIndex[i] : void 0,\n        viewIndex: viewIndex ? viewIndex[i] : void 0\n      });\n    }\n    return assetInView;\n  }\n  async getAssetIndex(assetInViewIndex) {\n    return await this.entityTable.getNumber(assetInViewIndex, \"index:Vim.Asset:Asset\");\n  }\n  async getAllAssetIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Asset:Asset\");\n  }\n  async getAsset(assetInViewIndex) {\n    var _a2;\n    const index = await this.getAssetIndex(assetInViewIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.asset) == null ? void 0 : _a2.get(index));\n  }\n  async getViewIndex(assetInViewIndex) {\n    return await this.entityTable.getNumber(assetInViewIndex, \"index:Vim.View:View\");\n  }\n  async getAllViewIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.View:View\");\n  }\n  async getView(assetInViewIndex) {\n    var _a2;\n    const index = await this.getViewIndex(assetInViewIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.view) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.AssetInViewTable = AssetInViewTable;\nclass AssetInViewSheet {\n  static async createFromTable(table, index) {\n    let result = new AssetInViewSheet();\n    result.index = index;\n    await Promise.all([\n      table.getAssetIndex(index).then((v) => result.assetIndex = v),\n      table.getViewSheetIndex(index).then((v) => result.viewSheetIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.AssetInViewSheet = AssetInViewSheet;\nclass AssetInViewSheetTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.AssetInViewSheet\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new AssetInViewSheetTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(assetInViewSheetIndex) {\n    return await AssetInViewSheet.createFromTable(this, assetInViewSheetIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let assetIndex;\n    let viewSheetIndex;\n    await Promise.all([\n      (async () => {\n        assetIndex = await localTable.getNumberArray(\"index:Vim.Asset:Asset\");\n      })(),\n      (async () => {\n        viewSheetIndex = await localTable.getNumberArray(\"index:Vim.ViewSheet:ViewSheet\");\n      })()\n    ]);\n    let assetInViewSheet = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      assetInViewSheet.push({\n        index: i,\n        assetIndex: assetIndex ? assetIndex[i] : void 0,\n        viewSheetIndex: viewSheetIndex ? viewSheetIndex[i] : void 0\n      });\n    }\n    return assetInViewSheet;\n  }\n  async getAssetIndex(assetInViewSheetIndex) {\n    return await this.entityTable.getNumber(assetInViewSheetIndex, \"index:Vim.Asset:Asset\");\n  }\n  async getAllAssetIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Asset:Asset\");\n  }\n  async getAsset(assetInViewSheetIndex) {\n    var _a2;\n    const index = await this.getAssetIndex(assetInViewSheetIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.asset) == null ? void 0 : _a2.get(index));\n  }\n  async getViewSheetIndex(assetInViewSheetIndex) {\n    return await this.entityTable.getNumber(assetInViewSheetIndex, \"index:Vim.ViewSheet:ViewSheet\");\n  }\n  async getAllViewSheetIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.ViewSheet:ViewSheet\");\n  }\n  async getViewSheet(assetInViewSheetIndex) {\n    var _a2;\n    const index = await this.getViewSheetIndex(assetInViewSheetIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.viewSheet) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.AssetInViewSheetTable = AssetInViewSheetTable;\nclass LevelInView {\n  static async createFromTable(table, index) {\n    let result = new LevelInView();\n    result.index = index;\n    await Promise.all([\n      table.getExtents_Min_X(index).then((v) => result.extents_Min_X = v),\n      table.getExtents_Min_Y(index).then((v) => result.extents_Min_Y = v),\n      table.getExtents_Min_Z(index).then((v) => result.extents_Min_Z = v),\n      table.getExtents_Max_X(index).then((v) => result.extents_Max_X = v),\n      table.getExtents_Max_Y(index).then((v) => result.extents_Max_Y = v),\n      table.getExtents_Max_Z(index).then((v) => result.extents_Max_Z = v),\n      table.getLevelIndex(index).then((v) => result.levelIndex = v),\n      table.getViewIndex(index).then((v) => result.viewIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.LevelInView = LevelInView;\nclass LevelInViewTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.LevelInView\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new LevelInViewTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(levelInViewIndex) {\n    return await LevelInView.createFromTable(this, levelInViewIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let extents_Min_X;\n    let extents_Min_Y;\n    let extents_Min_Z;\n    let extents_Max_X;\n    let extents_Max_Y;\n    let extents_Max_Z;\n    let levelIndex;\n    let viewIndex;\n    await Promise.all([\n      (async () => {\n        extents_Min_X = await localTable.getNumberArray(\"double:Extents.Min.X\");\n      })(),\n      (async () => {\n        extents_Min_Y = await localTable.getNumberArray(\"double:Extents.Min.Y\");\n      })(),\n      (async () => {\n        extents_Min_Z = await localTable.getNumberArray(\"double:Extents.Min.Z\");\n      })(),\n      (async () => {\n        extents_Max_X = await localTable.getNumberArray(\"double:Extents.Max.X\");\n      })(),\n      (async () => {\n        extents_Max_Y = await localTable.getNumberArray(\"double:Extents.Max.Y\");\n      })(),\n      (async () => {\n        extents_Max_Z = await localTable.getNumberArray(\"double:Extents.Max.Z\");\n      })(),\n      (async () => {\n        levelIndex = await localTable.getNumberArray(\"index:Vim.Level:Level\");\n      })(),\n      (async () => {\n        viewIndex = await localTable.getNumberArray(\"index:Vim.View:View\");\n      })()\n    ]);\n    let levelInView = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      levelInView.push({\n        index: i,\n        extents_Min_X: extents_Min_X ? extents_Min_X[i] : void 0,\n        extents_Min_Y: extents_Min_Y ? extents_Min_Y[i] : void 0,\n        extents_Min_Z: extents_Min_Z ? extents_Min_Z[i] : void 0,\n        extents_Max_X: extents_Max_X ? extents_Max_X[i] : void 0,\n        extents_Max_Y: extents_Max_Y ? extents_Max_Y[i] : void 0,\n        extents_Max_Z: extents_Max_Z ? extents_Max_Z[i] : void 0,\n        levelIndex: levelIndex ? levelIndex[i] : void 0,\n        viewIndex: viewIndex ? viewIndex[i] : void 0\n      });\n    }\n    return levelInView;\n  }\n  async getExtents_Min_X(levelInViewIndex) {\n    return await this.entityTable.getNumber(levelInViewIndex, \"double:Extents.Min.X\");\n  }\n  async getAllExtents_Min_X() {\n    return await this.entityTable.getNumberArray(\"double:Extents.Min.X\");\n  }\n  async getExtents_Min_Y(levelInViewIndex) {\n    return await this.entityTable.getNumber(levelInViewIndex, \"double:Extents.Min.Y\");\n  }\n  async getAllExtents_Min_Y() {\n    return await this.entityTable.getNumberArray(\"double:Extents.Min.Y\");\n  }\n  async getExtents_Min_Z(levelInViewIndex) {\n    return await this.entityTable.getNumber(levelInViewIndex, \"double:Extents.Min.Z\");\n  }\n  async getAllExtents_Min_Z() {\n    return await this.entityTable.getNumberArray(\"double:Extents.Min.Z\");\n  }\n  async getExtents_Max_X(levelInViewIndex) {\n    return await this.entityTable.getNumber(levelInViewIndex, \"double:Extents.Max.X\");\n  }\n  async getAllExtents_Max_X() {\n    return await this.entityTable.getNumberArray(\"double:Extents.Max.X\");\n  }\n  async getExtents_Max_Y(levelInViewIndex) {\n    return await this.entityTable.getNumber(levelInViewIndex, \"double:Extents.Max.Y\");\n  }\n  async getAllExtents_Max_Y() {\n    return await this.entityTable.getNumberArray(\"double:Extents.Max.Y\");\n  }\n  async getExtents_Max_Z(levelInViewIndex) {\n    return await this.entityTable.getNumber(levelInViewIndex, \"double:Extents.Max.Z\");\n  }\n  async getAllExtents_Max_Z() {\n    return await this.entityTable.getNumberArray(\"double:Extents.Max.Z\");\n  }\n  async getLevelIndex(levelInViewIndex) {\n    return await this.entityTable.getNumber(levelInViewIndex, \"index:Vim.Level:Level\");\n  }\n  async getAllLevelIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Level:Level\");\n  }\n  async getLevel(levelInViewIndex) {\n    var _a2;\n    const index = await this.getLevelIndex(levelInViewIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.level) == null ? void 0 : _a2.get(index));\n  }\n  async getViewIndex(levelInViewIndex) {\n    return await this.entityTable.getNumber(levelInViewIndex, \"index:Vim.View:View\");\n  }\n  async getAllViewIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.View:View\");\n  }\n  async getView(levelInViewIndex) {\n    var _a2;\n    const index = await this.getViewIndex(levelInViewIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.view) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.LevelInViewTable = LevelInViewTable;\nclass Camera$1 {\n  static async createFromTable(table, index) {\n    let result = new Camera$1();\n    result.index = index;\n    await Promise.all([\n      table.getId(index).then((v) => result.id = v),\n      table.getIsPerspective(index).then((v) => result.isPerspective = v),\n      table.getVerticalExtent(index).then((v) => result.verticalExtent = v),\n      table.getHorizontalExtent(index).then((v) => result.horizontalExtent = v),\n      table.getFarDistance(index).then((v) => result.farDistance = v),\n      table.getNearDistance(index).then((v) => result.nearDistance = v),\n      table.getTargetDistance(index).then((v) => result.targetDistance = v),\n      table.getRightOffset(index).then((v) => result.rightOffset = v),\n      table.getUpOffset(index).then((v) => result.upOffset = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Camera = Camera$1;\nclass CameraTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Camera\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new CameraTable();\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(cameraIndex) {\n    return await Camera$1.createFromTable(this, cameraIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let id2;\n    let isPerspective;\n    let verticalExtent;\n    let horizontalExtent;\n    let farDistance;\n    let nearDistance;\n    let targetDistance;\n    let rightOffset;\n    let upOffset;\n    await Promise.all([\n      (async () => {\n        id2 = await localTable.getNumberArray(\"int:Id\");\n      })(),\n      (async () => {\n        isPerspective = await localTable.getNumberArray(\"int:IsPerspective\");\n      })(),\n      (async () => {\n        verticalExtent = await localTable.getNumberArray(\"double:VerticalExtent\");\n      })(),\n      (async () => {\n        horizontalExtent = await localTable.getNumberArray(\"double:HorizontalExtent\");\n      })(),\n      (async () => {\n        farDistance = await localTable.getNumberArray(\"double:FarDistance\");\n      })(),\n      (async () => {\n        nearDistance = await localTable.getNumberArray(\"double:NearDistance\");\n      })(),\n      (async () => {\n        targetDistance = await localTable.getNumberArray(\"double:TargetDistance\");\n      })(),\n      (async () => {\n        rightOffset = await localTable.getNumberArray(\"double:RightOffset\");\n      })(),\n      (async () => {\n        upOffset = await localTable.getNumberArray(\"double:UpOffset\");\n      })()\n    ]);\n    let camera = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      camera.push({\n        index: i,\n        id: id2 ? id2[i] : void 0,\n        isPerspective: isPerspective ? isPerspective[i] : void 0,\n        verticalExtent: verticalExtent ? verticalExtent[i] : void 0,\n        horizontalExtent: horizontalExtent ? horizontalExtent[i] : void 0,\n        farDistance: farDistance ? farDistance[i] : void 0,\n        nearDistance: nearDistance ? nearDistance[i] : void 0,\n        targetDistance: targetDistance ? targetDistance[i] : void 0,\n        rightOffset: rightOffset ? rightOffset[i] : void 0,\n        upOffset: upOffset ? upOffset[i] : void 0\n      });\n    }\n    return camera;\n  }\n  async getId(cameraIndex) {\n    return await this.entityTable.getNumber(cameraIndex, \"int:Id\");\n  }\n  async getAllId() {\n    return await this.entityTable.getNumberArray(\"int:Id\");\n  }\n  async getIsPerspective(cameraIndex) {\n    return await this.entityTable.getNumber(cameraIndex, \"int:IsPerspective\");\n  }\n  async getAllIsPerspective() {\n    return await this.entityTable.getNumberArray(\"int:IsPerspective\");\n  }\n  async getVerticalExtent(cameraIndex) {\n    return await this.entityTable.getNumber(cameraIndex, \"double:VerticalExtent\");\n  }\n  async getAllVerticalExtent() {\n    return await this.entityTable.getNumberArray(\"double:VerticalExtent\");\n  }\n  async getHorizontalExtent(cameraIndex) {\n    return await this.entityTable.getNumber(cameraIndex, \"double:HorizontalExtent\");\n  }\n  async getAllHorizontalExtent() {\n    return await this.entityTable.getNumberArray(\"double:HorizontalExtent\");\n  }\n  async getFarDistance(cameraIndex) {\n    return await this.entityTable.getNumber(cameraIndex, \"double:FarDistance\");\n  }\n  async getAllFarDistance() {\n    return await this.entityTable.getNumberArray(\"double:FarDistance\");\n  }\n  async getNearDistance(cameraIndex) {\n    return await this.entityTable.getNumber(cameraIndex, \"double:NearDistance\");\n  }\n  async getAllNearDistance() {\n    return await this.entityTable.getNumberArray(\"double:NearDistance\");\n  }\n  async getTargetDistance(cameraIndex) {\n    return await this.entityTable.getNumber(cameraIndex, \"double:TargetDistance\");\n  }\n  async getAllTargetDistance() {\n    return await this.entityTable.getNumberArray(\"double:TargetDistance\");\n  }\n  async getRightOffset(cameraIndex) {\n    return await this.entityTable.getNumber(cameraIndex, \"double:RightOffset\");\n  }\n  async getAllRightOffset() {\n    return await this.entityTable.getNumberArray(\"double:RightOffset\");\n  }\n  async getUpOffset(cameraIndex) {\n    return await this.entityTable.getNumber(cameraIndex, \"double:UpOffset\");\n  }\n  async getAllUpOffset() {\n    return await this.entityTable.getNumberArray(\"double:UpOffset\");\n  }\n}\nobjectModel.CameraTable = CameraTable;\nclass Material {\n  static async createFromTable(table, index) {\n    let result = new Material();\n    result.index = index;\n    await Promise.all([\n      table.getName(index).then((v) => result.name = v),\n      table.getMaterialCategory(index).then((v) => result.materialCategory = v),\n      table.getColor_X(index).then((v) => result.color_X = v),\n      table.getColor_Y(index).then((v) => result.color_Y = v),\n      table.getColor_Z(index).then((v) => result.color_Z = v),\n      table.getColorUvScaling_X(index).then((v) => result.colorUvScaling_X = v),\n      table.getColorUvScaling_Y(index).then((v) => result.colorUvScaling_Y = v),\n      table.getColorUvOffset_X(index).then((v) => result.colorUvOffset_X = v),\n      table.getColorUvOffset_Y(index).then((v) => result.colorUvOffset_Y = v),\n      table.getNormalUvScaling_X(index).then((v) => result.normalUvScaling_X = v),\n      table.getNormalUvScaling_Y(index).then((v) => result.normalUvScaling_Y = v),\n      table.getNormalUvOffset_X(index).then((v) => result.normalUvOffset_X = v),\n      table.getNormalUvOffset_Y(index).then((v) => result.normalUvOffset_Y = v),\n      table.getNormalAmount(index).then((v) => result.normalAmount = v),\n      table.getGlossiness(index).then((v) => result.glossiness = v),\n      table.getSmoothness(index).then((v) => result.smoothness = v),\n      table.getTransparency(index).then((v) => result.transparency = v),\n      table.getColorTextureFileIndex(index).then((v) => result.colorTextureFileIndex = v),\n      table.getNormalTextureFileIndex(index).then((v) => result.normalTextureFileIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Material = Material;\nclass MaterialTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Material\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new MaterialTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(materialIndex) {\n    return await Material.createFromTable(this, materialIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let name;\n    let materialCategory;\n    let color_X;\n    let color_Y;\n    let color_Z;\n    let colorUvScaling_X;\n    let colorUvScaling_Y;\n    let colorUvOffset_X;\n    let colorUvOffset_Y;\n    let normalUvScaling_X;\n    let normalUvScaling_Y;\n    let normalUvOffset_X;\n    let normalUvOffset_Y;\n    let normalAmount;\n    let glossiness;\n    let smoothness;\n    let transparency;\n    let colorTextureFileIndex;\n    let normalTextureFileIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        name = await localTable.getStringArray(\"string:Name\");\n      })(),\n      (async () => {\n        materialCategory = await localTable.getStringArray(\"string:MaterialCategory\");\n      })(),\n      (async () => {\n        color_X = await localTable.getNumberArray(\"double:Color.X\");\n      })(),\n      (async () => {\n        color_Y = await localTable.getNumberArray(\"double:Color.Y\");\n      })(),\n      (async () => {\n        color_Z = await localTable.getNumberArray(\"double:Color.Z\");\n      })(),\n      (async () => {\n        colorUvScaling_X = await localTable.getNumberArray(\"double:ColorUvScaling.X\");\n      })(),\n      (async () => {\n        colorUvScaling_Y = await localTable.getNumberArray(\"double:ColorUvScaling.Y\");\n      })(),\n      (async () => {\n        colorUvOffset_X = await localTable.getNumberArray(\"double:ColorUvOffset.X\");\n      })(),\n      (async () => {\n        colorUvOffset_Y = await localTable.getNumberArray(\"double:ColorUvOffset.Y\");\n      })(),\n      (async () => {\n        normalUvScaling_X = await localTable.getNumberArray(\"double:NormalUvScaling.X\");\n      })(),\n      (async () => {\n        normalUvScaling_Y = await localTable.getNumberArray(\"double:NormalUvScaling.Y\");\n      })(),\n      (async () => {\n        normalUvOffset_X = await localTable.getNumberArray(\"double:NormalUvOffset.X\");\n      })(),\n      (async () => {\n        normalUvOffset_Y = await localTable.getNumberArray(\"double:NormalUvOffset.Y\");\n      })(),\n      (async () => {\n        normalAmount = await localTable.getNumberArray(\"double:NormalAmount\");\n      })(),\n      (async () => {\n        glossiness = await localTable.getNumberArray(\"double:Glossiness\");\n      })(),\n      (async () => {\n        smoothness = await localTable.getNumberArray(\"double:Smoothness\");\n      })(),\n      (async () => {\n        transparency = await localTable.getNumberArray(\"double:Transparency\");\n      })(),\n      (async () => {\n        colorTextureFileIndex = await localTable.getNumberArray(\"index:Vim.Asset:ColorTextureFile\");\n      })(),\n      (async () => {\n        normalTextureFileIndex = await localTable.getNumberArray(\"index:Vim.Asset:NormalTextureFile\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let material = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      material.push({\n        index: i,\n        name: name ? name[i] : void 0,\n        materialCategory: materialCategory ? materialCategory[i] : void 0,\n        color_X: color_X ? color_X[i] : void 0,\n        color_Y: color_Y ? color_Y[i] : void 0,\n        color_Z: color_Z ? color_Z[i] : void 0,\n        colorUvScaling_X: colorUvScaling_X ? colorUvScaling_X[i] : void 0,\n        colorUvScaling_Y: colorUvScaling_Y ? colorUvScaling_Y[i] : void 0,\n        colorUvOffset_X: colorUvOffset_X ? colorUvOffset_X[i] : void 0,\n        colorUvOffset_Y: colorUvOffset_Y ? colorUvOffset_Y[i] : void 0,\n        normalUvScaling_X: normalUvScaling_X ? normalUvScaling_X[i] : void 0,\n        normalUvScaling_Y: normalUvScaling_Y ? normalUvScaling_Y[i] : void 0,\n        normalUvOffset_X: normalUvOffset_X ? normalUvOffset_X[i] : void 0,\n        normalUvOffset_Y: normalUvOffset_Y ? normalUvOffset_Y[i] : void 0,\n        normalAmount: normalAmount ? normalAmount[i] : void 0,\n        glossiness: glossiness ? glossiness[i] : void 0,\n        smoothness: smoothness ? smoothness[i] : void 0,\n        transparency: transparency ? transparency[i] : void 0,\n        colorTextureFileIndex: colorTextureFileIndex ? colorTextureFileIndex[i] : void 0,\n        normalTextureFileIndex: normalTextureFileIndex ? normalTextureFileIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return material;\n  }\n  async getName(materialIndex) {\n    return await this.entityTable.getString(materialIndex, \"string:Name\");\n  }\n  async getAllName() {\n    return await this.entityTable.getStringArray(\"string:Name\");\n  }\n  async getMaterialCategory(materialIndex) {\n    return await this.entityTable.getString(materialIndex, \"string:MaterialCategory\");\n  }\n  async getAllMaterialCategory() {\n    return await this.entityTable.getStringArray(\"string:MaterialCategory\");\n  }\n  async getColor_X(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:Color.X\");\n  }\n  async getAllColor_X() {\n    return await this.entityTable.getNumberArray(\"double:Color.X\");\n  }\n  async getColor_Y(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:Color.Y\");\n  }\n  async getAllColor_Y() {\n    return await this.entityTable.getNumberArray(\"double:Color.Y\");\n  }\n  async getColor_Z(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:Color.Z\");\n  }\n  async getAllColor_Z() {\n    return await this.entityTable.getNumberArray(\"double:Color.Z\");\n  }\n  async getColorUvScaling_X(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:ColorUvScaling.X\");\n  }\n  async getAllColorUvScaling_X() {\n    return await this.entityTable.getNumberArray(\"double:ColorUvScaling.X\");\n  }\n  async getColorUvScaling_Y(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:ColorUvScaling.Y\");\n  }\n  async getAllColorUvScaling_Y() {\n    return await this.entityTable.getNumberArray(\"double:ColorUvScaling.Y\");\n  }\n  async getColorUvOffset_X(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:ColorUvOffset.X\");\n  }\n  async getAllColorUvOffset_X() {\n    return await this.entityTable.getNumberArray(\"double:ColorUvOffset.X\");\n  }\n  async getColorUvOffset_Y(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:ColorUvOffset.Y\");\n  }\n  async getAllColorUvOffset_Y() {\n    return await this.entityTable.getNumberArray(\"double:ColorUvOffset.Y\");\n  }\n  async getNormalUvScaling_X(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:NormalUvScaling.X\");\n  }\n  async getAllNormalUvScaling_X() {\n    return await this.entityTable.getNumberArray(\"double:NormalUvScaling.X\");\n  }\n  async getNormalUvScaling_Y(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:NormalUvScaling.Y\");\n  }\n  async getAllNormalUvScaling_Y() {\n    return await this.entityTable.getNumberArray(\"double:NormalUvScaling.Y\");\n  }\n  async getNormalUvOffset_X(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:NormalUvOffset.X\");\n  }\n  async getAllNormalUvOffset_X() {\n    return await this.entityTable.getNumberArray(\"double:NormalUvOffset.X\");\n  }\n  async getNormalUvOffset_Y(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:NormalUvOffset.Y\");\n  }\n  async getAllNormalUvOffset_Y() {\n    return await this.entityTable.getNumberArray(\"double:NormalUvOffset.Y\");\n  }\n  async getNormalAmount(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:NormalAmount\");\n  }\n  async getAllNormalAmount() {\n    return await this.entityTable.getNumberArray(\"double:NormalAmount\");\n  }\n  async getGlossiness(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:Glossiness\");\n  }\n  async getAllGlossiness() {\n    return await this.entityTable.getNumberArray(\"double:Glossiness\");\n  }\n  async getSmoothness(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:Smoothness\");\n  }\n  async getAllSmoothness() {\n    return await this.entityTable.getNumberArray(\"double:Smoothness\");\n  }\n  async getTransparency(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"double:Transparency\");\n  }\n  async getAllTransparency() {\n    return await this.entityTable.getNumberArray(\"double:Transparency\");\n  }\n  async getColorTextureFileIndex(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"index:Vim.Asset:ColorTextureFile\");\n  }\n  async getAllColorTextureFileIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Asset:ColorTextureFile\");\n  }\n  async getColorTextureFile(materialIndex) {\n    var _a2;\n    const index = await this.getColorTextureFileIndex(materialIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.asset) == null ? void 0 : _a2.get(index));\n  }\n  async getNormalTextureFileIndex(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"index:Vim.Asset:NormalTextureFile\");\n  }\n  async getAllNormalTextureFileIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Asset:NormalTextureFile\");\n  }\n  async getNormalTextureFile(materialIndex) {\n    var _a2;\n    const index = await this.getNormalTextureFileIndex(materialIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.asset) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(materialIndex) {\n    return await this.entityTable.getNumber(materialIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(materialIndex) {\n    var _a2;\n    const index = await this.getElementIndex(materialIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.MaterialTable = MaterialTable;\nclass MaterialInElement {\n  static async createFromTable(table, index) {\n    let result = new MaterialInElement();\n    result.index = index;\n    await Promise.all([\n      table.getArea(index).then((v) => result.area = v),\n      table.getVolume(index).then((v) => result.volume = v),\n      table.getIsPaint(index).then((v) => result.isPaint = v),\n      table.getMaterialIndex(index).then((v) => result.materialIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.MaterialInElement = MaterialInElement;\nclass MaterialInElementTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.MaterialInElement\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new MaterialInElementTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(materialInElementIndex) {\n    return await MaterialInElement.createFromTable(this, materialInElementIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let area2;\n    let volume;\n    let isPaint;\n    let materialIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        area2 = await localTable.getNumberArray(\"double:Area\");\n      })(),\n      (async () => {\n        volume = await localTable.getNumberArray(\"double:Volume\");\n      })(),\n      (async () => {\n        isPaint = await localTable.getBooleanArray(\"byte:IsPaint\");\n      })(),\n      (async () => {\n        materialIndex = await localTable.getNumberArray(\"index:Vim.Material:Material\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let materialInElement = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      materialInElement.push({\n        index: i,\n        area: area2 ? area2[i] : void 0,\n        volume: volume ? volume[i] : void 0,\n        isPaint: isPaint ? isPaint[i] : void 0,\n        materialIndex: materialIndex ? materialIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return materialInElement;\n  }\n  async getArea(materialInElementIndex) {\n    return await this.entityTable.getNumber(materialInElementIndex, \"double:Area\");\n  }\n  async getAllArea() {\n    return await this.entityTable.getNumberArray(\"double:Area\");\n  }\n  async getVolume(materialInElementIndex) {\n    return await this.entityTable.getNumber(materialInElementIndex, \"double:Volume\");\n  }\n  async getAllVolume() {\n    return await this.entityTable.getNumberArray(\"double:Volume\");\n  }\n  async getIsPaint(materialInElementIndex) {\n    return await this.entityTable.getBoolean(materialInElementIndex, \"byte:IsPaint\");\n  }\n  async getAllIsPaint() {\n    return await this.entityTable.getBooleanArray(\"byte:IsPaint\");\n  }\n  async getMaterialIndex(materialInElementIndex) {\n    return await this.entityTable.getNumber(materialInElementIndex, \"index:Vim.Material:Material\");\n  }\n  async getAllMaterialIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Material:Material\");\n  }\n  async getMaterial(materialInElementIndex) {\n    var _a2;\n    const index = await this.getMaterialIndex(materialInElementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.material) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(materialInElementIndex) {\n    return await this.entityTable.getNumber(materialInElementIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(materialInElementIndex) {\n    var _a2;\n    const index = await this.getElementIndex(materialInElementIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.MaterialInElementTable = MaterialInElementTable;\nclass CompoundStructureLayer {\n  static async createFromTable(table, index) {\n    let result = new CompoundStructureLayer();\n    result.index = index;\n    await Promise.all([\n      table.getOrderIndex(index).then((v) => result.orderIndex = v),\n      table.getWidth(index).then((v) => result.width = v),\n      table.getMaterialFunctionAssignment(index).then((v) => result.materialFunctionAssignment = v),\n      table.getMaterialIndex(index).then((v) => result.materialIndex = v),\n      table.getCompoundStructureIndex(index).then((v) => result.compoundStructureIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.CompoundStructureLayer = CompoundStructureLayer;\nclass CompoundStructureLayerTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.CompoundStructureLayer\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new CompoundStructureLayerTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(compoundStructureLayerIndex) {\n    return await CompoundStructureLayer.createFromTable(this, compoundStructureLayerIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let orderIndex;\n    let width;\n    let materialFunctionAssignment;\n    let materialIndex;\n    let compoundStructureIndex;\n    await Promise.all([\n      (async () => {\n        orderIndex = await localTable.getNumberArray(\"int:OrderIndex\");\n      })(),\n      (async () => {\n        width = await localTable.getNumberArray(\"double:Width\");\n      })(),\n      (async () => {\n        materialFunctionAssignment = await localTable.getStringArray(\"string:MaterialFunctionAssignment\");\n      })(),\n      (async () => {\n        materialIndex = await localTable.getNumberArray(\"index:Vim.Material:Material\");\n      })(),\n      (async () => {\n        compoundStructureIndex = await localTable.getNumberArray(\"index:Vim.CompoundStructure:CompoundStructure\");\n      })()\n    ]);\n    let compoundStructureLayer = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      compoundStructureLayer.push({\n        index: i,\n        orderIndex: orderIndex ? orderIndex[i] : void 0,\n        width: width ? width[i] : void 0,\n        materialFunctionAssignment: materialFunctionAssignment ? materialFunctionAssignment[i] : void 0,\n        materialIndex: materialIndex ? materialIndex[i] : void 0,\n        compoundStructureIndex: compoundStructureIndex ? compoundStructureIndex[i] : void 0\n      });\n    }\n    return compoundStructureLayer;\n  }\n  async getOrderIndex(compoundStructureLayerIndex) {\n    return await this.entityTable.getNumber(compoundStructureLayerIndex, \"int:OrderIndex\");\n  }\n  async getAllOrderIndex() {\n    return await this.entityTable.getNumberArray(\"int:OrderIndex\");\n  }\n  async getWidth(compoundStructureLayerIndex) {\n    return await this.entityTable.getNumber(compoundStructureLayerIndex, \"double:Width\");\n  }\n  async getAllWidth() {\n    return await this.entityTable.getNumberArray(\"double:Width\");\n  }\n  async getMaterialFunctionAssignment(compoundStructureLayerIndex) {\n    return await this.entityTable.getString(compoundStructureLayerIndex, \"string:MaterialFunctionAssignment\");\n  }\n  async getAllMaterialFunctionAssignment() {\n    return await this.entityTable.getStringArray(\"string:MaterialFunctionAssignment\");\n  }\n  async getMaterialIndex(compoundStructureLayerIndex) {\n    return await this.entityTable.getNumber(compoundStructureLayerIndex, \"index:Vim.Material:Material\");\n  }\n  async getAllMaterialIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Material:Material\");\n  }\n  async getMaterial(compoundStructureLayerIndex) {\n    var _a2;\n    const index = await this.getMaterialIndex(compoundStructureLayerIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.material) == null ? void 0 : _a2.get(index));\n  }\n  async getCompoundStructureIndex(compoundStructureLayerIndex) {\n    return await this.entityTable.getNumber(compoundStructureLayerIndex, \"index:Vim.CompoundStructure:CompoundStructure\");\n  }\n  async getAllCompoundStructureIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.CompoundStructure:CompoundStructure\");\n  }\n  async getCompoundStructure(compoundStructureLayerIndex) {\n    var _a2;\n    const index = await this.getCompoundStructureIndex(compoundStructureLayerIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.compoundStructure) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.CompoundStructureLayerTable = CompoundStructureLayerTable;\nclass CompoundStructure {\n  static async createFromTable(table, index) {\n    let result = new CompoundStructure();\n    result.index = index;\n    await Promise.all([\n      table.getWidth(index).then((v) => result.width = v),\n      table.getStructuralLayerIndex(index).then((v) => result.structuralLayerIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.CompoundStructure = CompoundStructure;\nclass CompoundStructureTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.CompoundStructure\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new CompoundStructureTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(compoundStructureIndex) {\n    return await CompoundStructure.createFromTable(this, compoundStructureIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let width;\n    let structuralLayerIndex;\n    await Promise.all([\n      (async () => {\n        width = await localTable.getNumberArray(\"double:Width\");\n      })(),\n      (async () => {\n        structuralLayerIndex = await localTable.getNumberArray(\"index:Vim.CompoundStructureLayer:StructuralLayer\");\n      })()\n    ]);\n    let compoundStructure = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      compoundStructure.push({\n        index: i,\n        width: width ? width[i] : void 0,\n        structuralLayerIndex: structuralLayerIndex ? structuralLayerIndex[i] : void 0\n      });\n    }\n    return compoundStructure;\n  }\n  async getWidth(compoundStructureIndex) {\n    return await this.entityTable.getNumber(compoundStructureIndex, \"double:Width\");\n  }\n  async getAllWidth() {\n    return await this.entityTable.getNumberArray(\"double:Width\");\n  }\n  async getStructuralLayerIndex(compoundStructureIndex) {\n    return await this.entityTable.getNumber(compoundStructureIndex, \"index:Vim.CompoundStructureLayer:StructuralLayer\");\n  }\n  async getAllStructuralLayerIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.CompoundStructureLayer:StructuralLayer\");\n  }\n  async getStructuralLayer(compoundStructureIndex) {\n    var _a2;\n    const index = await this.getStructuralLayerIndex(compoundStructureIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.compoundStructureLayer) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.CompoundStructureTable = CompoundStructureTable;\nclass Node {\n  static async createFromTable(table, index) {\n    let result = new Node();\n    result.index = index;\n    await Promise.all([\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Node = Node;\nclass NodeTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Node\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new NodeTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(nodeIndex) {\n    return await Node.createFromTable(this, nodeIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let node = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      node.push({\n        index: i,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return node;\n  }\n  async getElementIndex(nodeIndex) {\n    return await this.entityTable.getNumber(nodeIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(nodeIndex) {\n    var _a2;\n    const index = await this.getElementIndex(nodeIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.NodeTable = NodeTable;\nclass Geometry$1 {\n  static async createFromTable(table, index) {\n    let result = new Geometry$1();\n    result.index = index;\n    await Promise.all([\n      table.getBox_Min_X(index).then((v) => result.box_Min_X = v),\n      table.getBox_Min_Y(index).then((v) => result.box_Min_Y = v),\n      table.getBox_Min_Z(index).then((v) => result.box_Min_Z = v),\n      table.getBox_Max_X(index).then((v) => result.box_Max_X = v),\n      table.getBox_Max_Y(index).then((v) => result.box_Max_Y = v),\n      table.getBox_Max_Z(index).then((v) => result.box_Max_Z = v),\n      table.getVertexCount(index).then((v) => result.vertexCount = v),\n      table.getFaceCount(index).then((v) => result.faceCount = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Geometry = Geometry$1;\nclass GeometryTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Geometry\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new GeometryTable();\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(geometryIndex) {\n    return await Geometry$1.createFromTable(this, geometryIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let box_Min_X;\n    let box_Min_Y;\n    let box_Min_Z;\n    let box_Max_X;\n    let box_Max_Y;\n    let box_Max_Z;\n    let vertexCount;\n    let faceCount;\n    await Promise.all([\n      (async () => {\n        box_Min_X = await localTable.getNumberArray(\"float:Box.Min.X\");\n      })(),\n      (async () => {\n        box_Min_Y = await localTable.getNumberArray(\"float:Box.Min.Y\");\n      })(),\n      (async () => {\n        box_Min_Z = await localTable.getNumberArray(\"float:Box.Min.Z\");\n      })(),\n      (async () => {\n        box_Max_X = await localTable.getNumberArray(\"float:Box.Max.X\");\n      })(),\n      (async () => {\n        box_Max_Y = await localTable.getNumberArray(\"float:Box.Max.Y\");\n      })(),\n      (async () => {\n        box_Max_Z = await localTable.getNumberArray(\"float:Box.Max.Z\");\n      })(),\n      (async () => {\n        vertexCount = await localTable.getNumberArray(\"int:VertexCount\");\n      })(),\n      (async () => {\n        faceCount = await localTable.getNumberArray(\"int:FaceCount\");\n      })()\n    ]);\n    let geometry = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      geometry.push({\n        index: i,\n        box_Min_X: box_Min_X ? box_Min_X[i] : void 0,\n        box_Min_Y: box_Min_Y ? box_Min_Y[i] : void 0,\n        box_Min_Z: box_Min_Z ? box_Min_Z[i] : void 0,\n        box_Max_X: box_Max_X ? box_Max_X[i] : void 0,\n        box_Max_Y: box_Max_Y ? box_Max_Y[i] : void 0,\n        box_Max_Z: box_Max_Z ? box_Max_Z[i] : void 0,\n        vertexCount: vertexCount ? vertexCount[i] : void 0,\n        faceCount: faceCount ? faceCount[i] : void 0\n      });\n    }\n    return geometry;\n  }\n  async getBox_Min_X(geometryIndex) {\n    return await this.entityTable.getNumber(geometryIndex, \"float:Box.Min.X\");\n  }\n  async getAllBox_Min_X() {\n    return await this.entityTable.getNumberArray(\"float:Box.Min.X\");\n  }\n  async getBox_Min_Y(geometryIndex) {\n    return await this.entityTable.getNumber(geometryIndex, \"float:Box.Min.Y\");\n  }\n  async getAllBox_Min_Y() {\n    return await this.entityTable.getNumberArray(\"float:Box.Min.Y\");\n  }\n  async getBox_Min_Z(geometryIndex) {\n    return await this.entityTable.getNumber(geometryIndex, \"float:Box.Min.Z\");\n  }\n  async getAllBox_Min_Z() {\n    return await this.entityTable.getNumberArray(\"float:Box.Min.Z\");\n  }\n  async getBox_Max_X(geometryIndex) {\n    return await this.entityTable.getNumber(geometryIndex, \"float:Box.Max.X\");\n  }\n  async getAllBox_Max_X() {\n    return await this.entityTable.getNumberArray(\"float:Box.Max.X\");\n  }\n  async getBox_Max_Y(geometryIndex) {\n    return await this.entityTable.getNumber(geometryIndex, \"float:Box.Max.Y\");\n  }\n  async getAllBox_Max_Y() {\n    return await this.entityTable.getNumberArray(\"float:Box.Max.Y\");\n  }\n  async getBox_Max_Z(geometryIndex) {\n    return await this.entityTable.getNumber(geometryIndex, \"float:Box.Max.Z\");\n  }\n  async getAllBox_Max_Z() {\n    return await this.entityTable.getNumberArray(\"float:Box.Max.Z\");\n  }\n  async getVertexCount(geometryIndex) {\n    return await this.entityTable.getNumber(geometryIndex, \"int:VertexCount\");\n  }\n  async getAllVertexCount() {\n    return await this.entityTable.getNumberArray(\"int:VertexCount\");\n  }\n  async getFaceCount(geometryIndex) {\n    return await this.entityTable.getNumber(geometryIndex, \"int:FaceCount\");\n  }\n  async getAllFaceCount() {\n    return await this.entityTable.getNumberArray(\"int:FaceCount\");\n  }\n}\nobjectModel.GeometryTable = GeometryTable;\nclass Shape {\n  static async createFromTable(table, index) {\n    let result = new Shape();\n    result.index = index;\n    await Promise.all([\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Shape = Shape;\nclass ShapeTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Shape\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ShapeTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(shapeIndex) {\n    return await Shape.createFromTable(this, shapeIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let shape = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      shape.push({\n        index: i,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return shape;\n  }\n  async getElementIndex(shapeIndex) {\n    return await this.entityTable.getNumber(shapeIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(shapeIndex) {\n    var _a2;\n    const index = await this.getElementIndex(shapeIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ShapeTable = ShapeTable;\nclass ShapeCollection {\n  static async createFromTable(table, index) {\n    let result = new ShapeCollection();\n    result.index = index;\n    await Promise.all([\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ShapeCollection = ShapeCollection;\nclass ShapeCollectionTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ShapeCollection\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ShapeCollectionTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(shapeCollectionIndex) {\n    return await ShapeCollection.createFromTable(this, shapeCollectionIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let shapeCollection = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      shapeCollection.push({\n        index: i,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return shapeCollection;\n  }\n  async getElementIndex(shapeCollectionIndex) {\n    return await this.entityTable.getNumber(shapeCollectionIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(shapeCollectionIndex) {\n    var _a2;\n    const index = await this.getElementIndex(shapeCollectionIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ShapeCollectionTable = ShapeCollectionTable;\nclass ShapeInShapeCollection {\n  static async createFromTable(table, index) {\n    let result = new ShapeInShapeCollection();\n    result.index = index;\n    await Promise.all([\n      table.getShapeIndex(index).then((v) => result.shapeIndex = v),\n      table.getShapeCollectionIndex(index).then((v) => result.shapeCollectionIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ShapeInShapeCollection = ShapeInShapeCollection;\nclass ShapeInShapeCollectionTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ShapeInShapeCollection\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ShapeInShapeCollectionTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(shapeInShapeCollectionIndex) {\n    return await ShapeInShapeCollection.createFromTable(this, shapeInShapeCollectionIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let shapeIndex;\n    let shapeCollectionIndex;\n    await Promise.all([\n      (async () => {\n        shapeIndex = await localTable.getNumberArray(\"index:Vim.Shape:Shape\");\n      })(),\n      (async () => {\n        shapeCollectionIndex = await localTable.getNumberArray(\"index:Vim.ShapeCollection:ShapeCollection\");\n      })()\n    ]);\n    let shapeInShapeCollection = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      shapeInShapeCollection.push({\n        index: i,\n        shapeIndex: shapeIndex ? shapeIndex[i] : void 0,\n        shapeCollectionIndex: shapeCollectionIndex ? shapeCollectionIndex[i] : void 0\n      });\n    }\n    return shapeInShapeCollection;\n  }\n  async getShapeIndex(shapeInShapeCollectionIndex) {\n    return await this.entityTable.getNumber(shapeInShapeCollectionIndex, \"index:Vim.Shape:Shape\");\n  }\n  async getAllShapeIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Shape:Shape\");\n  }\n  async getShape(shapeInShapeCollectionIndex) {\n    var _a2;\n    const index = await this.getShapeIndex(shapeInShapeCollectionIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.shape) == null ? void 0 : _a2.get(index));\n  }\n  async getShapeCollectionIndex(shapeInShapeCollectionIndex) {\n    return await this.entityTable.getNumber(shapeInShapeCollectionIndex, \"index:Vim.ShapeCollection:ShapeCollection\");\n  }\n  async getAllShapeCollectionIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.ShapeCollection:ShapeCollection\");\n  }\n  async getShapeCollection(shapeInShapeCollectionIndex) {\n    var _a2;\n    const index = await this.getShapeCollectionIndex(shapeInShapeCollectionIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.shapeCollection) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ShapeInShapeCollectionTable = ShapeInShapeCollectionTable;\nclass System {\n  static async createFromTable(table, index) {\n    let result = new System();\n    result.index = index;\n    await Promise.all([\n      table.getSystemType(index).then((v) => result.systemType = v),\n      table.getFamilyTypeIndex(index).then((v) => result.familyTypeIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.System = System;\nclass SystemTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.System\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new SystemTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(systemIndex) {\n    return await System.createFromTable(this, systemIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let systemType;\n    let familyTypeIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        systemType = await localTable.getNumberArray(\"int:SystemType\");\n      })(),\n      (async () => {\n        familyTypeIndex = await localTable.getNumberArray(\"index:Vim.FamilyType:FamilyType\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let system = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      system.push({\n        index: i,\n        systemType: systemType ? systemType[i] : void 0,\n        familyTypeIndex: familyTypeIndex ? familyTypeIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return system;\n  }\n  async getSystemType(systemIndex) {\n    return await this.entityTable.getNumber(systemIndex, \"int:SystemType\");\n  }\n  async getAllSystemType() {\n    return await this.entityTable.getNumberArray(\"int:SystemType\");\n  }\n  async getFamilyTypeIndex(systemIndex) {\n    return await this.entityTable.getNumber(systemIndex, \"index:Vim.FamilyType:FamilyType\");\n  }\n  async getAllFamilyTypeIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.FamilyType:FamilyType\");\n  }\n  async getFamilyType(systemIndex) {\n    var _a2;\n    const index = await this.getFamilyTypeIndex(systemIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.familyType) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(systemIndex) {\n    return await this.entityTable.getNumber(systemIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(systemIndex) {\n    var _a2;\n    const index = await this.getElementIndex(systemIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.SystemTable = SystemTable;\nclass ElementInSystem {\n  static async createFromTable(table, index) {\n    let result = new ElementInSystem();\n    result.index = index;\n    await Promise.all([\n      table.getRoles(index).then((v) => result.roles = v),\n      table.getSystemIndex(index).then((v) => result.systemIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ElementInSystem = ElementInSystem;\nclass ElementInSystemTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ElementInSystem\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ElementInSystemTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(elementInSystemIndex) {\n    return await ElementInSystem.createFromTable(this, elementInSystemIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let roles;\n    let systemIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        roles = await localTable.getNumberArray(\"int:Roles\");\n      })(),\n      (async () => {\n        systemIndex = await localTable.getNumberArray(\"index:Vim.System:System\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let elementInSystem = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      elementInSystem.push({\n        index: i,\n        roles: roles ? roles[i] : void 0,\n        systemIndex: systemIndex ? systemIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return elementInSystem;\n  }\n  async getRoles(elementInSystemIndex) {\n    return await this.entityTable.getNumber(elementInSystemIndex, \"int:Roles\");\n  }\n  async getAllRoles() {\n    return await this.entityTable.getNumberArray(\"int:Roles\");\n  }\n  async getSystemIndex(elementInSystemIndex) {\n    return await this.entityTable.getNumber(elementInSystemIndex, \"index:Vim.System:System\");\n  }\n  async getAllSystemIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.System:System\");\n  }\n  async getSystem(elementInSystemIndex) {\n    var _a2;\n    const index = await this.getSystemIndex(elementInSystemIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.system) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(elementInSystemIndex) {\n    return await this.entityTable.getNumber(elementInSystemIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(elementInSystemIndex) {\n    var _a2;\n    const index = await this.getElementIndex(elementInSystemIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ElementInSystemTable = ElementInSystemTable;\nclass Warning {\n  static async createFromTable(table, index) {\n    let result = new Warning();\n    result.index = index;\n    await Promise.all([\n      table.getGuid(index).then((v) => result.guid = v),\n      table.getSeverity(index).then((v) => result.severity = v),\n      table.getDescription(index).then((v) => result.description = v),\n      table.getBimDocumentIndex(index).then((v) => result.bimDocumentIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Warning = Warning;\nclass WarningTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Warning\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new WarningTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(warningIndex) {\n    return await Warning.createFromTable(this, warningIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let guid;\n    let severity;\n    let description;\n    let bimDocumentIndex;\n    await Promise.all([\n      (async () => {\n        guid = await localTable.getStringArray(\"string:Guid\");\n      })(),\n      (async () => {\n        severity = await localTable.getStringArray(\"string:Severity\");\n      })(),\n      (async () => {\n        description = await localTable.getStringArray(\"string:Description\");\n      })(),\n      (async () => {\n        bimDocumentIndex = await localTable.getNumberArray(\"index:Vim.BimDocument:BimDocument\");\n      })()\n    ]);\n    let warning = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      warning.push({\n        index: i,\n        guid: guid ? guid[i] : void 0,\n        severity: severity ? severity[i] : void 0,\n        description: description ? description[i] : void 0,\n        bimDocumentIndex: bimDocumentIndex ? bimDocumentIndex[i] : void 0\n      });\n    }\n    return warning;\n  }\n  async getGuid(warningIndex) {\n    return await this.entityTable.getString(warningIndex, \"string:Guid\");\n  }\n  async getAllGuid() {\n    return await this.entityTable.getStringArray(\"string:Guid\");\n  }\n  async getSeverity(warningIndex) {\n    return await this.entityTable.getString(warningIndex, \"string:Severity\");\n  }\n  async getAllSeverity() {\n    return await this.entityTable.getStringArray(\"string:Severity\");\n  }\n  async getDescription(warningIndex) {\n    return await this.entityTable.getString(warningIndex, \"string:Description\");\n  }\n  async getAllDescription() {\n    return await this.entityTable.getStringArray(\"string:Description\");\n  }\n  async getBimDocumentIndex(warningIndex) {\n    return await this.entityTable.getNumber(warningIndex, \"index:Vim.BimDocument:BimDocument\");\n  }\n  async getAllBimDocumentIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.BimDocument:BimDocument\");\n  }\n  async getBimDocument(warningIndex) {\n    var _a2;\n    const index = await this.getBimDocumentIndex(warningIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.bimDocument) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.WarningTable = WarningTable;\nclass ElementInWarning {\n  static async createFromTable(table, index) {\n    let result = new ElementInWarning();\n    result.index = index;\n    await Promise.all([\n      table.getWarningIndex(index).then((v) => result.warningIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ElementInWarning = ElementInWarning;\nclass ElementInWarningTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ElementInWarning\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ElementInWarningTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(elementInWarningIndex) {\n    return await ElementInWarning.createFromTable(this, elementInWarningIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let warningIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        warningIndex = await localTable.getNumberArray(\"index:Vim.Warning:Warning\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let elementInWarning = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      elementInWarning.push({\n        index: i,\n        warningIndex: warningIndex ? warningIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return elementInWarning;\n  }\n  async getWarningIndex(elementInWarningIndex) {\n    return await this.entityTable.getNumber(elementInWarningIndex, \"index:Vim.Warning:Warning\");\n  }\n  async getAllWarningIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Warning:Warning\");\n  }\n  async getWarning(elementInWarningIndex) {\n    var _a2;\n    const index = await this.getWarningIndex(elementInWarningIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.warning) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(elementInWarningIndex) {\n    return await this.entityTable.getNumber(elementInWarningIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(elementInWarningIndex) {\n    var _a2;\n    const index = await this.getElementIndex(elementInWarningIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ElementInWarningTable = ElementInWarningTable;\nclass BasePoint {\n  static async createFromTable(table, index) {\n    let result = new BasePoint();\n    result.index = index;\n    await Promise.all([\n      table.getIsSurveyPoint(index).then((v) => result.isSurveyPoint = v),\n      table.getPosition_X(index).then((v) => result.position_X = v),\n      table.getPosition_Y(index).then((v) => result.position_Y = v),\n      table.getPosition_Z(index).then((v) => result.position_Z = v),\n      table.getSharedPosition_X(index).then((v) => result.sharedPosition_X = v),\n      table.getSharedPosition_Y(index).then((v) => result.sharedPosition_Y = v),\n      table.getSharedPosition_Z(index).then((v) => result.sharedPosition_Z = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.BasePoint = BasePoint;\nclass BasePointTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.BasePoint\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new BasePointTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(basePointIndex) {\n    return await BasePoint.createFromTable(this, basePointIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let isSurveyPoint;\n    let position_X;\n    let position_Y;\n    let position_Z;\n    let sharedPosition_X;\n    let sharedPosition_Y;\n    let sharedPosition_Z;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        isSurveyPoint = await localTable.getBooleanArray(\"byte:IsSurveyPoint\");\n      })(),\n      (async () => {\n        position_X = await localTable.getNumberArray(\"double:Position.X\");\n      })(),\n      (async () => {\n        position_Y = await localTable.getNumberArray(\"double:Position.Y\");\n      })(),\n      (async () => {\n        position_Z = await localTable.getNumberArray(\"double:Position.Z\");\n      })(),\n      (async () => {\n        sharedPosition_X = await localTable.getNumberArray(\"double:SharedPosition.X\");\n      })(),\n      (async () => {\n        sharedPosition_Y = await localTable.getNumberArray(\"double:SharedPosition.Y\");\n      })(),\n      (async () => {\n        sharedPosition_Z = await localTable.getNumberArray(\"double:SharedPosition.Z\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let basePoint = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      basePoint.push({\n        index: i,\n        isSurveyPoint: isSurveyPoint ? isSurveyPoint[i] : void 0,\n        position_X: position_X ? position_X[i] : void 0,\n        position_Y: position_Y ? position_Y[i] : void 0,\n        position_Z: position_Z ? position_Z[i] : void 0,\n        sharedPosition_X: sharedPosition_X ? sharedPosition_X[i] : void 0,\n        sharedPosition_Y: sharedPosition_Y ? sharedPosition_Y[i] : void 0,\n        sharedPosition_Z: sharedPosition_Z ? sharedPosition_Z[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return basePoint;\n  }\n  async getIsSurveyPoint(basePointIndex) {\n    return await this.entityTable.getBoolean(basePointIndex, \"byte:IsSurveyPoint\");\n  }\n  async getAllIsSurveyPoint() {\n    return await this.entityTable.getBooleanArray(\"byte:IsSurveyPoint\");\n  }\n  async getPosition_X(basePointIndex) {\n    return await this.entityTable.getNumber(basePointIndex, \"double:Position.X\");\n  }\n  async getAllPosition_X() {\n    return await this.entityTable.getNumberArray(\"double:Position.X\");\n  }\n  async getPosition_Y(basePointIndex) {\n    return await this.entityTable.getNumber(basePointIndex, \"double:Position.Y\");\n  }\n  async getAllPosition_Y() {\n    return await this.entityTable.getNumberArray(\"double:Position.Y\");\n  }\n  async getPosition_Z(basePointIndex) {\n    return await this.entityTable.getNumber(basePointIndex, \"double:Position.Z\");\n  }\n  async getAllPosition_Z() {\n    return await this.entityTable.getNumberArray(\"double:Position.Z\");\n  }\n  async getSharedPosition_X(basePointIndex) {\n    return await this.entityTable.getNumber(basePointIndex, \"double:SharedPosition.X\");\n  }\n  async getAllSharedPosition_X() {\n    return await this.entityTable.getNumberArray(\"double:SharedPosition.X\");\n  }\n  async getSharedPosition_Y(basePointIndex) {\n    return await this.entityTable.getNumber(basePointIndex, \"double:SharedPosition.Y\");\n  }\n  async getAllSharedPosition_Y() {\n    return await this.entityTable.getNumberArray(\"double:SharedPosition.Y\");\n  }\n  async getSharedPosition_Z(basePointIndex) {\n    return await this.entityTable.getNumber(basePointIndex, \"double:SharedPosition.Z\");\n  }\n  async getAllSharedPosition_Z() {\n    return await this.entityTable.getNumberArray(\"double:SharedPosition.Z\");\n  }\n  async getElementIndex(basePointIndex) {\n    return await this.entityTable.getNumber(basePointIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(basePointIndex) {\n    var _a2;\n    const index = await this.getElementIndex(basePointIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.BasePointTable = BasePointTable;\nclass PhaseFilter {\n  static async createFromTable(table, index) {\n    let result = new PhaseFilter();\n    result.index = index;\n    await Promise.all([\n      table.getNew(index).then((v) => result._new = v),\n      table.getExisting(index).then((v) => result.existing = v),\n      table.getDemolished(index).then((v) => result.demolished = v),\n      table.getTemporary(index).then((v) => result.temporary = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.PhaseFilter = PhaseFilter;\nclass PhaseFilterTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.PhaseFilter\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new PhaseFilterTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(phaseFilterIndex) {\n    return await PhaseFilter.createFromTable(this, phaseFilterIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let _new;\n    let existing;\n    let demolished;\n    let temporary;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        _new = await localTable.getNumberArray(\"int:New\");\n      })(),\n      (async () => {\n        existing = await localTable.getNumberArray(\"int:Existing\");\n      })(),\n      (async () => {\n        demolished = await localTable.getNumberArray(\"int:Demolished\");\n      })(),\n      (async () => {\n        temporary = await localTable.getNumberArray(\"int:Temporary\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let phaseFilter = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      phaseFilter.push({\n        index: i,\n        _new: _new ? _new[i] : void 0,\n        existing: existing ? existing[i] : void 0,\n        demolished: demolished ? demolished[i] : void 0,\n        temporary: temporary ? temporary[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return phaseFilter;\n  }\n  async getNew(phaseFilterIndex) {\n    return await this.entityTable.getNumber(phaseFilterIndex, \"int:New\");\n  }\n  async getAllNew() {\n    return await this.entityTable.getNumberArray(\"int:New\");\n  }\n  async getExisting(phaseFilterIndex) {\n    return await this.entityTable.getNumber(phaseFilterIndex, \"int:Existing\");\n  }\n  async getAllExisting() {\n    return await this.entityTable.getNumberArray(\"int:Existing\");\n  }\n  async getDemolished(phaseFilterIndex) {\n    return await this.entityTable.getNumber(phaseFilterIndex, \"int:Demolished\");\n  }\n  async getAllDemolished() {\n    return await this.entityTable.getNumberArray(\"int:Demolished\");\n  }\n  async getTemporary(phaseFilterIndex) {\n    return await this.entityTable.getNumber(phaseFilterIndex, \"int:Temporary\");\n  }\n  async getAllTemporary() {\n    return await this.entityTable.getNumberArray(\"int:Temporary\");\n  }\n  async getElementIndex(phaseFilterIndex) {\n    return await this.entityTable.getNumber(phaseFilterIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(phaseFilterIndex) {\n    var _a2;\n    const index = await this.getElementIndex(phaseFilterIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.PhaseFilterTable = PhaseFilterTable;\nclass Grid {\n  static async createFromTable(table, index) {\n    let result = new Grid();\n    result.index = index;\n    await Promise.all([\n      table.getStartPoint_X(index).then((v) => result.startPoint_X = v),\n      table.getStartPoint_Y(index).then((v) => result.startPoint_Y = v),\n      table.getStartPoint_Z(index).then((v) => result.startPoint_Z = v),\n      table.getEndPoint_X(index).then((v) => result.endPoint_X = v),\n      table.getEndPoint_Y(index).then((v) => result.endPoint_Y = v),\n      table.getEndPoint_Z(index).then((v) => result.endPoint_Z = v),\n      table.getIsCurved(index).then((v) => result.isCurved = v),\n      table.getExtents_Min_X(index).then((v) => result.extents_Min_X = v),\n      table.getExtents_Min_Y(index).then((v) => result.extents_Min_Y = v),\n      table.getExtents_Min_Z(index).then((v) => result.extents_Min_Z = v),\n      table.getExtents_Max_X(index).then((v) => result.extents_Max_X = v),\n      table.getExtents_Max_Y(index).then((v) => result.extents_Max_Y = v),\n      table.getExtents_Max_Z(index).then((v) => result.extents_Max_Z = v),\n      table.getFamilyTypeIndex(index).then((v) => result.familyTypeIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Grid = Grid;\nclass GridTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Grid\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new GridTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(gridIndex) {\n    return await Grid.createFromTable(this, gridIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let startPoint_X;\n    let startPoint_Y;\n    let startPoint_Z;\n    let endPoint_X;\n    let endPoint_Y;\n    let endPoint_Z;\n    let isCurved;\n    let extents_Min_X;\n    let extents_Min_Y;\n    let extents_Min_Z;\n    let extents_Max_X;\n    let extents_Max_Y;\n    let extents_Max_Z;\n    let familyTypeIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        startPoint_X = await localTable.getNumberArray(\"double:StartPoint.X\");\n      })(),\n      (async () => {\n        startPoint_Y = await localTable.getNumberArray(\"double:StartPoint.Y\");\n      })(),\n      (async () => {\n        startPoint_Z = await localTable.getNumberArray(\"double:StartPoint.Z\");\n      })(),\n      (async () => {\n        endPoint_X = await localTable.getNumberArray(\"double:EndPoint.X\");\n      })(),\n      (async () => {\n        endPoint_Y = await localTable.getNumberArray(\"double:EndPoint.Y\");\n      })(),\n      (async () => {\n        endPoint_Z = await localTable.getNumberArray(\"double:EndPoint.Z\");\n      })(),\n      (async () => {\n        isCurved = await localTable.getBooleanArray(\"byte:IsCurved\");\n      })(),\n      (async () => {\n        extents_Min_X = await localTable.getNumberArray(\"double:Extents.Min.X\");\n      })(),\n      (async () => {\n        extents_Min_Y = await localTable.getNumberArray(\"double:Extents.Min.Y\");\n      })(),\n      (async () => {\n        extents_Min_Z = await localTable.getNumberArray(\"double:Extents.Min.Z\");\n      })(),\n      (async () => {\n        extents_Max_X = await localTable.getNumberArray(\"double:Extents.Max.X\");\n      })(),\n      (async () => {\n        extents_Max_Y = await localTable.getNumberArray(\"double:Extents.Max.Y\");\n      })(),\n      (async () => {\n        extents_Max_Z = await localTable.getNumberArray(\"double:Extents.Max.Z\");\n      })(),\n      (async () => {\n        familyTypeIndex = await localTable.getNumberArray(\"index:Vim.FamilyType:FamilyType\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let grid = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      grid.push({\n        index: i,\n        startPoint_X: startPoint_X ? startPoint_X[i] : void 0,\n        startPoint_Y: startPoint_Y ? startPoint_Y[i] : void 0,\n        startPoint_Z: startPoint_Z ? startPoint_Z[i] : void 0,\n        endPoint_X: endPoint_X ? endPoint_X[i] : void 0,\n        endPoint_Y: endPoint_Y ? endPoint_Y[i] : void 0,\n        endPoint_Z: endPoint_Z ? endPoint_Z[i] : void 0,\n        isCurved: isCurved ? isCurved[i] : void 0,\n        extents_Min_X: extents_Min_X ? extents_Min_X[i] : void 0,\n        extents_Min_Y: extents_Min_Y ? extents_Min_Y[i] : void 0,\n        extents_Min_Z: extents_Min_Z ? extents_Min_Z[i] : void 0,\n        extents_Max_X: extents_Max_X ? extents_Max_X[i] : void 0,\n        extents_Max_Y: extents_Max_Y ? extents_Max_Y[i] : void 0,\n        extents_Max_Z: extents_Max_Z ? extents_Max_Z[i] : void 0,\n        familyTypeIndex: familyTypeIndex ? familyTypeIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return grid;\n  }\n  async getStartPoint_X(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"double:StartPoint.X\");\n  }\n  async getAllStartPoint_X() {\n    return await this.entityTable.getNumberArray(\"double:StartPoint.X\");\n  }\n  async getStartPoint_Y(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"double:StartPoint.Y\");\n  }\n  async getAllStartPoint_Y() {\n    return await this.entityTable.getNumberArray(\"double:StartPoint.Y\");\n  }\n  async getStartPoint_Z(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"double:StartPoint.Z\");\n  }\n  async getAllStartPoint_Z() {\n    return await this.entityTable.getNumberArray(\"double:StartPoint.Z\");\n  }\n  async getEndPoint_X(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"double:EndPoint.X\");\n  }\n  async getAllEndPoint_X() {\n    return await this.entityTable.getNumberArray(\"double:EndPoint.X\");\n  }\n  async getEndPoint_Y(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"double:EndPoint.Y\");\n  }\n  async getAllEndPoint_Y() {\n    return await this.entityTable.getNumberArray(\"double:EndPoint.Y\");\n  }\n  async getEndPoint_Z(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"double:EndPoint.Z\");\n  }\n  async getAllEndPoint_Z() {\n    return await this.entityTable.getNumberArray(\"double:EndPoint.Z\");\n  }\n  async getIsCurved(gridIndex) {\n    return await this.entityTable.getBoolean(gridIndex, \"byte:IsCurved\");\n  }\n  async getAllIsCurved() {\n    return await this.entityTable.getBooleanArray(\"byte:IsCurved\");\n  }\n  async getExtents_Min_X(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"double:Extents.Min.X\");\n  }\n  async getAllExtents_Min_X() {\n    return await this.entityTable.getNumberArray(\"double:Extents.Min.X\");\n  }\n  async getExtents_Min_Y(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"double:Extents.Min.Y\");\n  }\n  async getAllExtents_Min_Y() {\n    return await this.entityTable.getNumberArray(\"double:Extents.Min.Y\");\n  }\n  async getExtents_Min_Z(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"double:Extents.Min.Z\");\n  }\n  async getAllExtents_Min_Z() {\n    return await this.entityTable.getNumberArray(\"double:Extents.Min.Z\");\n  }\n  async getExtents_Max_X(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"double:Extents.Max.X\");\n  }\n  async getAllExtents_Max_X() {\n    return await this.entityTable.getNumberArray(\"double:Extents.Max.X\");\n  }\n  async getExtents_Max_Y(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"double:Extents.Max.Y\");\n  }\n  async getAllExtents_Max_Y() {\n    return await this.entityTable.getNumberArray(\"double:Extents.Max.Y\");\n  }\n  async getExtents_Max_Z(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"double:Extents.Max.Z\");\n  }\n  async getAllExtents_Max_Z() {\n    return await this.entityTable.getNumberArray(\"double:Extents.Max.Z\");\n  }\n  async getFamilyTypeIndex(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"index:Vim.FamilyType:FamilyType\");\n  }\n  async getAllFamilyTypeIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.FamilyType:FamilyType\");\n  }\n  async getFamilyType(gridIndex) {\n    var _a2;\n    const index = await this.getFamilyTypeIndex(gridIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.familyType) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(gridIndex) {\n    return await this.entityTable.getNumber(gridIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(gridIndex) {\n    var _a2;\n    const index = await this.getElementIndex(gridIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.GridTable = GridTable;\nclass Area {\n  static async createFromTable(table, index) {\n    let result = new Area();\n    result.index = index;\n    await Promise.all([\n      table.getValue(index).then((v) => result.value = v),\n      table.getPerimeter(index).then((v) => result.perimeter = v),\n      table.getNumber(index).then((v) => result.number = v),\n      table.getIsGrossInterior(index).then((v) => result.isGrossInterior = v),\n      table.getAreaSchemeIndex(index).then((v) => result.areaSchemeIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Area = Area;\nclass AreaTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Area\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new AreaTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(areaIndex) {\n    return await Area.createFromTable(this, areaIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let value;\n    let perimeter;\n    let number;\n    let isGrossInterior;\n    let areaSchemeIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        value = await localTable.getNumberArray(\"double:Value\");\n      })(),\n      (async () => {\n        perimeter = await localTable.getNumberArray(\"double:Perimeter\");\n      })(),\n      (async () => {\n        number = await localTable.getStringArray(\"string:Number\");\n      })(),\n      (async () => {\n        isGrossInterior = await localTable.getBooleanArray(\"byte:IsGrossInterior\");\n      })(),\n      (async () => {\n        areaSchemeIndex = await localTable.getNumberArray(\"index:Vim.AreaScheme:AreaScheme\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let area2 = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      area2.push({\n        index: i,\n        value: value ? value[i] : void 0,\n        perimeter: perimeter ? perimeter[i] : void 0,\n        number: number ? number[i] : void 0,\n        isGrossInterior: isGrossInterior ? isGrossInterior[i] : void 0,\n        areaSchemeIndex: areaSchemeIndex ? areaSchemeIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return area2;\n  }\n  async getValue(areaIndex) {\n    return await this.entityTable.getNumber(areaIndex, \"double:Value\");\n  }\n  async getAllValue() {\n    return await this.entityTable.getNumberArray(\"double:Value\");\n  }\n  async getPerimeter(areaIndex) {\n    return await this.entityTable.getNumber(areaIndex, \"double:Perimeter\");\n  }\n  async getAllPerimeter() {\n    return await this.entityTable.getNumberArray(\"double:Perimeter\");\n  }\n  async getNumber(areaIndex) {\n    return await this.entityTable.getString(areaIndex, \"string:Number\");\n  }\n  async getAllNumber() {\n    return await this.entityTable.getStringArray(\"string:Number\");\n  }\n  async getIsGrossInterior(areaIndex) {\n    return await this.entityTable.getBoolean(areaIndex, \"byte:IsGrossInterior\");\n  }\n  async getAllIsGrossInterior() {\n    return await this.entityTable.getBooleanArray(\"byte:IsGrossInterior\");\n  }\n  async getAreaSchemeIndex(areaIndex) {\n    return await this.entityTable.getNumber(areaIndex, \"index:Vim.AreaScheme:AreaScheme\");\n  }\n  async getAllAreaSchemeIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.AreaScheme:AreaScheme\");\n  }\n  async getAreaScheme(areaIndex) {\n    var _a2;\n    const index = await this.getAreaSchemeIndex(areaIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.areaScheme) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(areaIndex) {\n    return await this.entityTable.getNumber(areaIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(areaIndex) {\n    var _a2;\n    const index = await this.getElementIndex(areaIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.AreaTable = AreaTable;\nclass AreaScheme {\n  static async createFromTable(table, index) {\n    let result = new AreaScheme();\n    result.index = index;\n    await Promise.all([\n      table.getIsGrossBuildingArea(index).then((v) => result.isGrossBuildingArea = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.AreaScheme = AreaScheme;\nclass AreaSchemeTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.AreaScheme\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new AreaSchemeTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(areaSchemeIndex) {\n    return await AreaScheme.createFromTable(this, areaSchemeIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let isGrossBuildingArea;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        isGrossBuildingArea = await localTable.getBooleanArray(\"byte:IsGrossBuildingArea\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let areaScheme = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      areaScheme.push({\n        index: i,\n        isGrossBuildingArea: isGrossBuildingArea ? isGrossBuildingArea[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return areaScheme;\n  }\n  async getIsGrossBuildingArea(areaSchemeIndex) {\n    return await this.entityTable.getBoolean(areaSchemeIndex, \"byte:IsGrossBuildingArea\");\n  }\n  async getAllIsGrossBuildingArea() {\n    return await this.entityTable.getBooleanArray(\"byte:IsGrossBuildingArea\");\n  }\n  async getElementIndex(areaSchemeIndex) {\n    return await this.entityTable.getNumber(areaSchemeIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(areaSchemeIndex) {\n    var _a2;\n    const index = await this.getElementIndex(areaSchemeIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.AreaSchemeTable = AreaSchemeTable;\nclass Schedule {\n  static async createFromTable(table, index) {\n    let result = new Schedule();\n    result.index = index;\n    await Promise.all([\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Schedule = Schedule;\nclass ScheduleTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Schedule\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ScheduleTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(scheduleIndex) {\n    return await Schedule.createFromTable(this, scheduleIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let schedule = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      schedule.push({\n        index: i,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return schedule;\n  }\n  async getElementIndex(scheduleIndex) {\n    return await this.entityTable.getNumber(scheduleIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(scheduleIndex) {\n    var _a2;\n    const index = await this.getElementIndex(scheduleIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ScheduleTable = ScheduleTable;\nclass ScheduleColumn {\n  static async createFromTable(table, index) {\n    let result = new ScheduleColumn();\n    result.index = index;\n    await Promise.all([\n      table.getName(index).then((v) => result.name = v),\n      table.getColumnIndex(index).then((v) => result.columnIndex = v),\n      table.getScheduleIndex(index).then((v) => result.scheduleIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ScheduleColumn = ScheduleColumn;\nclass ScheduleColumnTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ScheduleColumn\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ScheduleColumnTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(scheduleColumnIndex) {\n    return await ScheduleColumn.createFromTable(this, scheduleColumnIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let name;\n    let columnIndex;\n    let scheduleIndex;\n    await Promise.all([\n      (async () => {\n        name = await localTable.getStringArray(\"string:Name\");\n      })(),\n      (async () => {\n        columnIndex = await localTable.getNumberArray(\"int:ColumnIndex\");\n      })(),\n      (async () => {\n        scheduleIndex = await localTable.getNumberArray(\"index:Vim.Schedule:Schedule\");\n      })()\n    ]);\n    let scheduleColumn = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      scheduleColumn.push({\n        index: i,\n        name: name ? name[i] : void 0,\n        columnIndex: columnIndex ? columnIndex[i] : void 0,\n        scheduleIndex: scheduleIndex ? scheduleIndex[i] : void 0\n      });\n    }\n    return scheduleColumn;\n  }\n  async getName(scheduleColumnIndex) {\n    return await this.entityTable.getString(scheduleColumnIndex, \"string:Name\");\n  }\n  async getAllName() {\n    return await this.entityTable.getStringArray(\"string:Name\");\n  }\n  async getColumnIndex(scheduleColumnIndex) {\n    return await this.entityTable.getNumber(scheduleColumnIndex, \"int:ColumnIndex\");\n  }\n  async getAllColumnIndex() {\n    return await this.entityTable.getNumberArray(\"int:ColumnIndex\");\n  }\n  async getScheduleIndex(scheduleColumnIndex) {\n    return await this.entityTable.getNumber(scheduleColumnIndex, \"index:Vim.Schedule:Schedule\");\n  }\n  async getAllScheduleIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Schedule:Schedule\");\n  }\n  async getSchedule(scheduleColumnIndex) {\n    var _a2;\n    const index = await this.getScheduleIndex(scheduleColumnIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.schedule) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ScheduleColumnTable = ScheduleColumnTable;\nclass ScheduleCell {\n  static async createFromTable(table, index) {\n    let result = new ScheduleCell();\n    result.index = index;\n    await Promise.all([\n      table.getValue(index).then((v) => result.value = v),\n      table.getRowIndex(index).then((v) => result.rowIndex = v),\n      table.getScheduleColumnIndex(index).then((v) => result.scheduleColumnIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ScheduleCell = ScheduleCell;\nclass ScheduleCellTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ScheduleCell\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ScheduleCellTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(scheduleCellIndex) {\n    return await ScheduleCell.createFromTable(this, scheduleCellIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let value;\n    let rowIndex;\n    let scheduleColumnIndex;\n    await Promise.all([\n      (async () => {\n        value = await localTable.getStringArray(\"string:Value\");\n      })(),\n      (async () => {\n        rowIndex = await localTable.getNumberArray(\"int:RowIndex\");\n      })(),\n      (async () => {\n        scheduleColumnIndex = await localTable.getNumberArray(\"index:Vim.ScheduleColumn:ScheduleColumn\");\n      })()\n    ]);\n    let scheduleCell = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      scheduleCell.push({\n        index: i,\n        value: value ? value[i] : void 0,\n        rowIndex: rowIndex ? rowIndex[i] : void 0,\n        scheduleColumnIndex: scheduleColumnIndex ? scheduleColumnIndex[i] : void 0\n      });\n    }\n    return scheduleCell;\n  }\n  async getValue(scheduleCellIndex) {\n    return await this.entityTable.getString(scheduleCellIndex, \"string:Value\");\n  }\n  async getAllValue() {\n    return await this.entityTable.getStringArray(\"string:Value\");\n  }\n  async getRowIndex(scheduleCellIndex) {\n    return await this.entityTable.getNumber(scheduleCellIndex, \"int:RowIndex\");\n  }\n  async getAllRowIndex() {\n    return await this.entityTable.getNumberArray(\"int:RowIndex\");\n  }\n  async getScheduleColumnIndex(scheduleCellIndex) {\n    return await this.entityTable.getNumber(scheduleCellIndex, \"index:Vim.ScheduleColumn:ScheduleColumn\");\n  }\n  async getAllScheduleColumnIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.ScheduleColumn:ScheduleColumn\");\n  }\n  async getScheduleColumn(scheduleCellIndex) {\n    var _a2;\n    const index = await this.getScheduleColumnIndex(scheduleCellIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.scheduleColumn) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ScheduleCellTable = ScheduleCellTable;\nclass ViewSheetSet {\n  static async createFromTable(table, index) {\n    let result = new ViewSheetSet();\n    result.index = index;\n    await Promise.all([\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ViewSheetSet = ViewSheetSet;\nclass ViewSheetSetTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ViewSheetSet\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ViewSheetSetTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(viewSheetSetIndex) {\n    return await ViewSheetSet.createFromTable(this, viewSheetSetIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let viewSheetSet = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      viewSheetSet.push({\n        index: i,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return viewSheetSet;\n  }\n  async getElementIndex(viewSheetSetIndex) {\n    return await this.entityTable.getNumber(viewSheetSetIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(viewSheetSetIndex) {\n    var _a2;\n    const index = await this.getElementIndex(viewSheetSetIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ViewSheetSetTable = ViewSheetSetTable;\nclass ViewSheet {\n  static async createFromTable(table, index) {\n    let result = new ViewSheet();\n    result.index = index;\n    await Promise.all([\n      table.getFamilyTypeIndex(index).then((v) => result.familyTypeIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ViewSheet = ViewSheet;\nclass ViewSheetTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ViewSheet\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ViewSheetTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(viewSheetIndex) {\n    return await ViewSheet.createFromTable(this, viewSheetIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let familyTypeIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        familyTypeIndex = await localTable.getNumberArray(\"index:Vim.FamilyType:FamilyType\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let viewSheet = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      viewSheet.push({\n        index: i,\n        familyTypeIndex: familyTypeIndex ? familyTypeIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return viewSheet;\n  }\n  async getFamilyTypeIndex(viewSheetIndex) {\n    return await this.entityTable.getNumber(viewSheetIndex, \"index:Vim.FamilyType:FamilyType\");\n  }\n  async getAllFamilyTypeIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.FamilyType:FamilyType\");\n  }\n  async getFamilyType(viewSheetIndex) {\n    var _a2;\n    const index = await this.getFamilyTypeIndex(viewSheetIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.familyType) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(viewSheetIndex) {\n    return await this.entityTable.getNumber(viewSheetIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(viewSheetIndex) {\n    var _a2;\n    const index = await this.getElementIndex(viewSheetIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ViewSheetTable = ViewSheetTable;\nclass ViewSheetInViewSheetSet {\n  static async createFromTable(table, index) {\n    let result = new ViewSheetInViewSheetSet();\n    result.index = index;\n    await Promise.all([\n      table.getViewSheetIndex(index).then((v) => result.viewSheetIndex = v),\n      table.getViewSheetSetIndex(index).then((v) => result.viewSheetSetIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ViewSheetInViewSheetSet = ViewSheetInViewSheetSet;\nclass ViewSheetInViewSheetSetTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ViewSheetInViewSheetSet\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ViewSheetInViewSheetSetTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(viewSheetInViewSheetSetIndex) {\n    return await ViewSheetInViewSheetSet.createFromTable(this, viewSheetInViewSheetSetIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let viewSheetIndex;\n    let viewSheetSetIndex;\n    await Promise.all([\n      (async () => {\n        viewSheetIndex = await localTable.getNumberArray(\"index:Vim.ViewSheet:ViewSheet\");\n      })(),\n      (async () => {\n        viewSheetSetIndex = await localTable.getNumberArray(\"index:Vim.ViewSheetSet:ViewSheetSet\");\n      })()\n    ]);\n    let viewSheetInViewSheetSet = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      viewSheetInViewSheetSet.push({\n        index: i,\n        viewSheetIndex: viewSheetIndex ? viewSheetIndex[i] : void 0,\n        viewSheetSetIndex: viewSheetSetIndex ? viewSheetSetIndex[i] : void 0\n      });\n    }\n    return viewSheetInViewSheetSet;\n  }\n  async getViewSheetIndex(viewSheetInViewSheetSetIndex) {\n    return await this.entityTable.getNumber(viewSheetInViewSheetSetIndex, \"index:Vim.ViewSheet:ViewSheet\");\n  }\n  async getAllViewSheetIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.ViewSheet:ViewSheet\");\n  }\n  async getViewSheet(viewSheetInViewSheetSetIndex) {\n    var _a2;\n    const index = await this.getViewSheetIndex(viewSheetInViewSheetSetIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.viewSheet) == null ? void 0 : _a2.get(index));\n  }\n  async getViewSheetSetIndex(viewSheetInViewSheetSetIndex) {\n    return await this.entityTable.getNumber(viewSheetInViewSheetSetIndex, \"index:Vim.ViewSheetSet:ViewSheetSet\");\n  }\n  async getAllViewSheetSetIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.ViewSheetSet:ViewSheetSet\");\n  }\n  async getViewSheetSet(viewSheetInViewSheetSetIndex) {\n    var _a2;\n    const index = await this.getViewSheetSetIndex(viewSheetInViewSheetSetIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.viewSheetSet) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ViewSheetInViewSheetSetTable = ViewSheetInViewSheetSetTable;\nclass ViewInViewSheetSet {\n  static async createFromTable(table, index) {\n    let result = new ViewInViewSheetSet();\n    result.index = index;\n    await Promise.all([\n      table.getViewIndex(index).then((v) => result.viewIndex = v),\n      table.getViewSheetSetIndex(index).then((v) => result.viewSheetSetIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ViewInViewSheetSet = ViewInViewSheetSet;\nclass ViewInViewSheetSetTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ViewInViewSheetSet\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ViewInViewSheetSetTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(viewInViewSheetSetIndex) {\n    return await ViewInViewSheetSet.createFromTable(this, viewInViewSheetSetIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let viewIndex;\n    let viewSheetSetIndex;\n    await Promise.all([\n      (async () => {\n        viewIndex = await localTable.getNumberArray(\"index:Vim.View:View\");\n      })(),\n      (async () => {\n        viewSheetSetIndex = await localTable.getNumberArray(\"index:Vim.ViewSheetSet:ViewSheetSet\");\n      })()\n    ]);\n    let viewInViewSheetSet = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      viewInViewSheetSet.push({\n        index: i,\n        viewIndex: viewIndex ? viewIndex[i] : void 0,\n        viewSheetSetIndex: viewSheetSetIndex ? viewSheetSetIndex[i] : void 0\n      });\n    }\n    return viewInViewSheetSet;\n  }\n  async getViewIndex(viewInViewSheetSetIndex) {\n    return await this.entityTable.getNumber(viewInViewSheetSetIndex, \"index:Vim.View:View\");\n  }\n  async getAllViewIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.View:View\");\n  }\n  async getView(viewInViewSheetSetIndex) {\n    var _a2;\n    const index = await this.getViewIndex(viewInViewSheetSetIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.view) == null ? void 0 : _a2.get(index));\n  }\n  async getViewSheetSetIndex(viewInViewSheetSetIndex) {\n    return await this.entityTable.getNumber(viewInViewSheetSetIndex, \"index:Vim.ViewSheetSet:ViewSheetSet\");\n  }\n  async getAllViewSheetSetIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.ViewSheetSet:ViewSheetSet\");\n  }\n  async getViewSheetSet(viewInViewSheetSetIndex) {\n    var _a2;\n    const index = await this.getViewSheetSetIndex(viewInViewSheetSetIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.viewSheetSet) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ViewInViewSheetSetTable = ViewInViewSheetSetTable;\nclass ViewInViewSheet {\n  static async createFromTable(table, index) {\n    let result = new ViewInViewSheet();\n    result.index = index;\n    await Promise.all([\n      table.getViewIndex(index).then((v) => result.viewIndex = v),\n      table.getViewSheetIndex(index).then((v) => result.viewSheetIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.ViewInViewSheet = ViewInViewSheet;\nclass ViewInViewSheetTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.ViewInViewSheet\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new ViewInViewSheetTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(viewInViewSheetIndex) {\n    return await ViewInViewSheet.createFromTable(this, viewInViewSheetIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let viewIndex;\n    let viewSheetIndex;\n    await Promise.all([\n      (async () => {\n        viewIndex = await localTable.getNumberArray(\"index:Vim.View:View\");\n      })(),\n      (async () => {\n        viewSheetIndex = await localTable.getNumberArray(\"index:Vim.ViewSheet:ViewSheet\");\n      })()\n    ]);\n    let viewInViewSheet = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      viewInViewSheet.push({\n        index: i,\n        viewIndex: viewIndex ? viewIndex[i] : void 0,\n        viewSheetIndex: viewSheetIndex ? viewSheetIndex[i] : void 0\n      });\n    }\n    return viewInViewSheet;\n  }\n  async getViewIndex(viewInViewSheetIndex) {\n    return await this.entityTable.getNumber(viewInViewSheetIndex, \"index:Vim.View:View\");\n  }\n  async getAllViewIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.View:View\");\n  }\n  async getView(viewInViewSheetIndex) {\n    var _a2;\n    const index = await this.getViewIndex(viewInViewSheetIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.view) == null ? void 0 : _a2.get(index));\n  }\n  async getViewSheetIndex(viewInViewSheetIndex) {\n    return await this.entityTable.getNumber(viewInViewSheetIndex, \"index:Vim.ViewSheet:ViewSheet\");\n  }\n  async getAllViewSheetIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.ViewSheet:ViewSheet\");\n  }\n  async getViewSheet(viewInViewSheetIndex) {\n    var _a2;\n    const index = await this.getViewSheetIndex(viewInViewSheetIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.viewSheet) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.ViewInViewSheetTable = ViewInViewSheetTable;\nclass Site {\n  static async createFromTable(table, index) {\n    let result = new Site();\n    result.index = index;\n    await Promise.all([\n      table.getLatitude(index).then((v) => result.latitude = v),\n      table.getLongitude(index).then((v) => result.longitude = v),\n      table.getAddress(index).then((v) => result.address = v),\n      table.getElevation(index).then((v) => result.elevation = v),\n      table.getNumber(index).then((v) => result.number = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Site = Site;\nclass SiteTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Site\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new SiteTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(siteIndex) {\n    return await Site.createFromTable(this, siteIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let latitude;\n    let longitude;\n    let address;\n    let elevation;\n    let number;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        latitude = await localTable.getNumberArray(\"double:Latitude\");\n      })(),\n      (async () => {\n        longitude = await localTable.getNumberArray(\"double:Longitude\");\n      })(),\n      (async () => {\n        address = await localTable.getStringArray(\"string:Address\");\n      })(),\n      (async () => {\n        elevation = await localTable.getNumberArray(\"double:Elevation\");\n      })(),\n      (async () => {\n        number = await localTable.getStringArray(\"string:Number\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let site = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      site.push({\n        index: i,\n        latitude: latitude ? latitude[i] : void 0,\n        longitude: longitude ? longitude[i] : void 0,\n        address: address ? address[i] : void 0,\n        elevation: elevation ? elevation[i] : void 0,\n        number: number ? number[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return site;\n  }\n  async getLatitude(siteIndex) {\n    return await this.entityTable.getNumber(siteIndex, \"double:Latitude\");\n  }\n  async getAllLatitude() {\n    return await this.entityTable.getNumberArray(\"double:Latitude\");\n  }\n  async getLongitude(siteIndex) {\n    return await this.entityTable.getNumber(siteIndex, \"double:Longitude\");\n  }\n  async getAllLongitude() {\n    return await this.entityTable.getNumberArray(\"double:Longitude\");\n  }\n  async getAddress(siteIndex) {\n    return await this.entityTable.getString(siteIndex, \"string:Address\");\n  }\n  async getAllAddress() {\n    return await this.entityTable.getStringArray(\"string:Address\");\n  }\n  async getElevation(siteIndex) {\n    return await this.entityTable.getNumber(siteIndex, \"double:Elevation\");\n  }\n  async getAllElevation() {\n    return await this.entityTable.getNumberArray(\"double:Elevation\");\n  }\n  async getNumber(siteIndex) {\n    return await this.entityTable.getString(siteIndex, \"string:Number\");\n  }\n  async getAllNumber() {\n    return await this.entityTable.getStringArray(\"string:Number\");\n  }\n  async getElementIndex(siteIndex) {\n    return await this.entityTable.getNumber(siteIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(siteIndex) {\n    var _a2;\n    const index = await this.getElementIndex(siteIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.SiteTable = SiteTable;\nclass Building {\n  static async createFromTable(table, index) {\n    let result = new Building();\n    result.index = index;\n    await Promise.all([\n      table.getElevation(index).then((v) => result.elevation = v),\n      table.getTerrainElevation(index).then((v) => result.terrainElevation = v),\n      table.getAddress(index).then((v) => result.address = v),\n      table.getSiteIndex(index).then((v) => result.siteIndex = v),\n      table.getElementIndex(index).then((v) => result.elementIndex = v)\n    ]);\n    return result;\n  }\n}\nobjectModel.Building = Building;\nclass BuildingTable {\n  static async createFromDocument(document2) {\n    const entity = await document2.entities.getBfast(\"Vim.Building\");\n    if (!entity) {\n      return void 0;\n    }\n    let table = new BuildingTable();\n    table.document = document2;\n    table.entityTable = new entityTable_1.EntityTable(entity, document2.strings);\n    return table;\n  }\n  getCount() {\n    return this.entityTable.getCount();\n  }\n  async get(buildingIndex) {\n    return await Building.createFromTable(this, buildingIndex);\n  }\n  async getAll() {\n    const localTable = await this.entityTable.getLocal();\n    let elevation;\n    let terrainElevation;\n    let address;\n    let siteIndex;\n    let elementIndex;\n    await Promise.all([\n      (async () => {\n        elevation = await localTable.getNumberArray(\"double:Elevation\");\n      })(),\n      (async () => {\n        terrainElevation = await localTable.getNumberArray(\"double:TerrainElevation\");\n      })(),\n      (async () => {\n        address = await localTable.getStringArray(\"string:Address\");\n      })(),\n      (async () => {\n        siteIndex = await localTable.getNumberArray(\"index:Vim.Site:Site\");\n      })(),\n      (async () => {\n        elementIndex = await localTable.getNumberArray(\"index:Vim.Element:Element\");\n      })()\n    ]);\n    let building = [];\n    const rowCount = await this.getCount();\n    for (let i = 0; i < rowCount; i++) {\n      building.push({\n        index: i,\n        elevation: elevation ? elevation[i] : void 0,\n        terrainElevation: terrainElevation ? terrainElevation[i] : void 0,\n        address: address ? address[i] : void 0,\n        siteIndex: siteIndex ? siteIndex[i] : void 0,\n        elementIndex: elementIndex ? elementIndex[i] : void 0\n      });\n    }\n    return building;\n  }\n  async getElevation(buildingIndex) {\n    return await this.entityTable.getNumber(buildingIndex, \"double:Elevation\");\n  }\n  async getAllElevation() {\n    return await this.entityTable.getNumberArray(\"double:Elevation\");\n  }\n  async getTerrainElevation(buildingIndex) {\n    return await this.entityTable.getNumber(buildingIndex, \"double:TerrainElevation\");\n  }\n  async getAllTerrainElevation() {\n    return await this.entityTable.getNumberArray(\"double:TerrainElevation\");\n  }\n  async getAddress(buildingIndex) {\n    return await this.entityTable.getString(buildingIndex, \"string:Address\");\n  }\n  async getAllAddress() {\n    return await this.entityTable.getStringArray(\"string:Address\");\n  }\n  async getSiteIndex(buildingIndex) {\n    return await this.entityTable.getNumber(buildingIndex, \"index:Vim.Site:Site\");\n  }\n  async getAllSiteIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Site:Site\");\n  }\n  async getSite(buildingIndex) {\n    var _a2;\n    const index = await this.getSiteIndex(buildingIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.site) == null ? void 0 : _a2.get(index));\n  }\n  async getElementIndex(buildingIndex) {\n    return await this.entityTable.getNumber(buildingIndex, \"index:Vim.Element:Element\");\n  }\n  async getAllElementIndex() {\n    return await this.entityTable.getNumberArray(\"index:Vim.Element:Element\");\n  }\n  async getElement(buildingIndex) {\n    var _a2;\n    const index = await this.getElementIndex(buildingIndex);\n    if (index === void 0) {\n      return void 0;\n    }\n    return await ((_a2 = this.document.element) == null ? void 0 : _a2.get(index));\n  }\n}\nobjectModel.BuildingTable = BuildingTable;\nclass VimDocument {\n  constructor(entities, strings2) {\n    this.entities = entities;\n    this.strings = strings2;\n  }\n  static async createFromBfast(bfast2, ignoreStrings = false) {\n    const loaded = await vimLoader_1.VimLoader.loadFromBfast(bfast2, ignoreStrings);\n    if (loaded[0] === void 0)\n      return void 0;\n    let doc = new VimDocument(loaded[0], loaded[1]);\n    doc.asset = await AssetTable.createFromDocument(doc);\n    doc.displayUnit = await DisplayUnitTable.createFromDocument(doc);\n    doc.parameterDescriptor = await ParameterDescriptorTable.createFromDocument(doc);\n    doc.parameter = await ParameterTable.createFromDocument(doc);\n    doc.element = await ElementTable.createFromDocument(doc);\n    doc.workset = await WorksetTable.createFromDocument(doc);\n    doc.assemblyInstance = await AssemblyInstanceTable.createFromDocument(doc);\n    doc.group = await GroupTable.createFromDocument(doc);\n    doc.designOption = await DesignOptionTable.createFromDocument(doc);\n    doc.level = await LevelTable.createFromDocument(doc);\n    doc.phase = await PhaseTable.createFromDocument(doc);\n    doc.room = await RoomTable.createFromDocument(doc);\n    doc.bimDocument = await BimDocumentTable.createFromDocument(doc);\n    doc.displayUnitInBimDocument = await DisplayUnitInBimDocumentTable.createFromDocument(doc);\n    doc.phaseOrderInBimDocument = await PhaseOrderInBimDocumentTable.createFromDocument(doc);\n    doc.category = await CategoryTable.createFromDocument(doc);\n    doc.family = await FamilyTable.createFromDocument(doc);\n    doc.familyType = await FamilyTypeTable.createFromDocument(doc);\n    doc.familyInstance = await FamilyInstanceTable.createFromDocument(doc);\n    doc.view = await ViewTable.createFromDocument(doc);\n    doc.elementInView = await ElementInViewTable.createFromDocument(doc);\n    doc.shapeInView = await ShapeInViewTable.createFromDocument(doc);\n    doc.assetInView = await AssetInViewTable.createFromDocument(doc);\n    doc.assetInViewSheet = await AssetInViewSheetTable.createFromDocument(doc);\n    doc.levelInView = await LevelInViewTable.createFromDocument(doc);\n    doc.camera = await CameraTable.createFromDocument(doc);\n    doc.material = await MaterialTable.createFromDocument(doc);\n    doc.materialInElement = await MaterialInElementTable.createFromDocument(doc);\n    doc.compoundStructureLayer = await CompoundStructureLayerTable.createFromDocument(doc);\n    doc.compoundStructure = await CompoundStructureTable.createFromDocument(doc);\n    doc.node = await NodeTable.createFromDocument(doc);\n    doc.geometry = await GeometryTable.createFromDocument(doc);\n    doc.shape = await ShapeTable.createFromDocument(doc);\n    doc.shapeCollection = await ShapeCollectionTable.createFromDocument(doc);\n    doc.shapeInShapeCollection = await ShapeInShapeCollectionTable.createFromDocument(doc);\n    doc.system = await SystemTable.createFromDocument(doc);\n    doc.elementInSystem = await ElementInSystemTable.createFromDocument(doc);\n    doc.warning = await WarningTable.createFromDocument(doc);\n    doc.elementInWarning = await ElementInWarningTable.createFromDocument(doc);\n    doc.basePoint = await BasePointTable.createFromDocument(doc);\n    doc.phaseFilter = await PhaseFilterTable.createFromDocument(doc);\n    doc.grid = await GridTable.createFromDocument(doc);\n    doc.area = await AreaTable.createFromDocument(doc);\n    doc.areaScheme = await AreaSchemeTable.createFromDocument(doc);\n    doc.schedule = await ScheduleTable.createFromDocument(doc);\n    doc.scheduleColumn = await ScheduleColumnTable.createFromDocument(doc);\n    doc.scheduleCell = await ScheduleCellTable.createFromDocument(doc);\n    doc.viewSheetSet = await ViewSheetSetTable.createFromDocument(doc);\n    doc.viewSheet = await ViewSheetTable.createFromDocument(doc);\n    doc.viewSheetInViewSheetSet = await ViewSheetInViewSheetSetTable.createFromDocument(doc);\n    doc.viewInViewSheetSet = await ViewInViewSheetSetTable.createFromDocument(doc);\n    doc.viewInViewSheet = await ViewInViewSheetTable.createFromDocument(doc);\n    doc.site = await SiteTable.createFromDocument(doc);\n    doc.building = await BuildingTable.createFromDocument(doc);\n    return doc;\n  }\n}\nobjectModel.VimDocument = VimDocument;\nvar structures = {};\nObject.defineProperty(structures, \"__esModule\", { value: true });\nvar vimHelpers = {};\nObject.defineProperty(vimHelpers, \"__esModule\", { value: true });\nvimHelpers.getElementsParameters = vimHelpers.getFamilyElements = vimHelpers.getElementParameters = void 0;\nasync function getElementParameters(document2, element) {\n  const elements = /* @__PURE__ */ new Map();\n  elements.set(element, true);\n  const familyElements = await getFamilyElements(document2, element);\n  familyElements.forEach((element2) => elements.set(element2, false));\n  return getElementsParameters(document2, elements);\n}\nvimHelpers.getElementParameters = getElementParameters;\nasync function getFamilyElements(document2, element) {\n  const familyInstance = await getElementFamilyInstance(document2, element);\n  const familyType = Number.isInteger(familyInstance) ? await document2.familyInstance.getFamilyTypeIndex(familyInstance) : void 0;\n  const getFamilyElement = async (familyType2) => {\n    const family = await document2.familyType.getFamilyIndex(familyType2);\n    return Number.isInteger(family) ? await document2.family.getElementIndex(family) : void 0;\n  };\n  return Number.isInteger(familyType) ? await Promise.all([\n    getFamilyElement(familyType),\n    document2.familyType.getElementIndex(familyType)\n  ]) : [void 0, void 0];\n}\nvimHelpers.getFamilyElements = getFamilyElements;\nasync function getElementsParameters(document2, elements) {\n  const [parameterElements, parameterValues, getParameterDescriptorIndices, parameterDescriptorNames, parameterDescriptorGroups] = await Promise.all([\n    document2.parameter.getAllElementIndex(),\n    document2.parameter.getAllValue(),\n    document2.parameter.getAllParameterDescriptorIndex(),\n    document2.parameterDescriptor.getAllName(),\n    document2.parameterDescriptor.getAllGroup()\n  ]);\n  if (!parameterElements)\n    return void 0;\n  if (!parameterValues)\n    return void 0;\n  if (!getParameterDescriptorIndices)\n    return void 0;\n  const getParameterDisplayValue = (index) => {\n    const value = parameterValues[index];\n    const split = value.indexOf(\"|\");\n    if (split >= 0) {\n      return value.substring(split + 1, value.length);\n    } else\n      return value;\n  };\n  const parameters = new Array();\n  parameterElements.forEach((e, i) => {\n    if (elements.has(e)) {\n      parameters.push([i, elements.get(e)]);\n    }\n  });\n  return parameters.map(([parameter, isInstance]) => {\n    const descriptor = getParameterDescriptorIndices[parameter];\n    const value = getParameterDisplayValue(parameter);\n    const name = Number.isInteger(descriptor) ? parameterDescriptorNames == null ? void 0 : parameterDescriptorNames[descriptor] : void 0;\n    const group = Number.isInteger(descriptor) ? parameterDescriptorGroups == null ? void 0 : parameterDescriptorGroups[descriptor] : void 0;\n    return { name, value, group, isInstance };\n  });\n}\nvimHelpers.getElementsParameters = getElementsParameters;\nasync function getElementFamilyInstance(document2, element) {\n  const familyInstanceElement = await document2.familyInstance.getAllElementIndex();\n  const result = familyInstanceElement.findIndex((e) => e === element);\n  return result < 0 ? void 0 : result;\n}\n(function(exports) {\n  var __createBinding2 = commonjsGlobal && commonjsGlobal.__createBinding || (Object.create ? function(o, m, k, k2) {\n    if (k2 === void 0)\n      k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() {\n        return m[k];\n      } };\n    }\n    Object.defineProperty(o, k2, desc);\n  } : function(o, m, k, k2) {\n    if (k2 === void 0)\n      k2 = k;\n    o[k2] = m[k];\n  });\n  var __setModuleDefault2 = commonjsGlobal && commonjsGlobal.__setModuleDefault || (Object.create ? function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n  } : function(o, v) {\n    o[\"default\"] = v;\n  });\n  var __exportStar = commonjsGlobal && commonjsGlobal.__exportStar || function(m, exports2) {\n    for (var p in m)\n      if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports2, p))\n        __createBinding2(exports2, m, p);\n  };\n  var __importStar2 = commonjsGlobal && commonjsGlobal.__importStar || function(mod) {\n    if (mod && mod.__esModule)\n      return mod;\n    var result = {};\n    if (mod != null) {\n      for (var k in mod)\n        if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k))\n          __createBinding2(result, mod, k);\n    }\n    __setModuleDefault2(result, mod);\n    return result;\n  };\n  Object.defineProperty(exports, \"__esModule\", { value: true });\n  exports.VimHelpers = void 0;\n  __exportStar(bfast, exports);\n  __exportStar(g3d, exports);\n  __exportStar(remoteVimx, exports);\n  __exportStar(g3dMaterials, exports);\n  __exportStar(g3dMesh, exports);\n  __exportStar(g3dChunk, exports);\n  __exportStar(g3dScene, exports);\n  __exportStar(remoteBuffer, exports);\n  __exportStar(requestTracker, exports);\n  __exportStar(requester, exports);\n  __exportStar(remoteValue, exports);\n  __exportStar(vimHeader, exports);\n  __exportStar(objectModel, exports);\n  __exportStar(structures, exports);\n  exports.VimHelpers = __importStar2(vimHelpers);\n})(dist$3);\nvar isMergeableObject = function isMergeableObject2(value) {\n  return isNonNullObject(value) && !isSpecial(value);\n};\nfunction isNonNullObject(value) {\n  return !!value && typeof value === \"object\";\n}\nfunction isSpecial(value) {\n  var stringValue = Object.prototype.toString.call(value);\n  return stringValue === \"[object RegExp]\" || stringValue === \"[object Date]\" || isReactElement(value);\n}\nvar canUseSymbol = typeof Symbol === \"function\" && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for(\"react.element\") : 60103;\nfunction isReactElement(value) {\n  return value.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction emptyTarget(val) {\n  return Array.isArray(val) ? [] : {};\n}\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n  return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;\n}\nfunction defaultArrayMerge(target, source, options) {\n  return target.concat(source).map(function(element) {\n    return cloneUnlessOtherwiseSpecified(element, options);\n  });\n}\nfunction getMergeFunction(key, options) {\n  if (!options.customMerge) {\n    return deepmerge;\n  }\n  var customMerge = options.customMerge(key);\n  return typeof customMerge === \"function\" ? customMerge : deepmerge;\n}\nfunction getEnumerableOwnPropertySymbols(target) {\n  return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n    return target.propertyIsEnumerable(symbol);\n  }) : [];\n}\nfunction getKeys(target) {\n  return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\nfunction propertyIsOnObject(object, property) {\n  try {\n    return property in object;\n  } catch (_) {\n    return false;\n  }\n}\nfunction propertyIsUnsafe(target, key) {\n  return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key));\n}\nfunction mergeObject(target, source, options) {\n  var destination = {};\n  if (options.isMergeableObject(target)) {\n    getKeys(target).forEach(function(key) {\n      destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n    });\n  }\n  getKeys(source).forEach(function(key) {\n    if (propertyIsUnsafe(target, key)) {\n      return;\n    }\n    if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n      destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n    } else {\n      destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n    }\n  });\n  return destination;\n}\nfunction deepmerge(target, source, options) {\n  options = options || {};\n  options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n  options.isMergeableObject = options.isMergeableObject || isMergeableObject;\n  options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n  var sourceIsArray = Array.isArray(source);\n  var targetIsArray = Array.isArray(target);\n  var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n  if (!sourceAndTargetTypesMatch) {\n    return cloneUnlessOtherwiseSpecified(source, options);\n  } else if (sourceIsArray) {\n    return options.arrayMerge(target, source, options);\n  } else {\n    return mergeObject(target, source, options);\n  }\n}\ndeepmerge.all = function deepmergeAll(array, options) {\n  if (!Array.isArray(array)) {\n    throw new Error(\"first argument should be an array\");\n  }\n  return array.reduce(function(prev, next) {\n    return deepmerge(prev, next, options);\n  }, {});\n};\nvar deepmerge_1 = deepmerge;\nvar cjs = deepmerge_1;\nvar Transparency;\n((Transparency2) => {\n  function isValid(value) {\n    if (!value)\n      return false;\n    return [\"all\", \"opaqueOnly\", \"transparentOnly\", \"allAsOpaque\"].includes(\n      value\n    );\n  }\n  Transparency2.isValid = isValid;\n  function requiresAlpha(mode) {\n    return mode === \"all\" || mode === \"transparentOnly\";\n  }\n  Transparency2.requiresAlpha = requiresAlpha;\n})(Transparency || (Transparency = {}));\nvar Geometry;\n((Geometry2) => {\n  function createGeometryFromInstances(g3d2, args) {\n    var _a2;\n    return (_a2 = Geometry2.mergeInstanceMeshes(g3d2, args)) == null ? void 0 : _a2.geometry;\n  }\n  Geometry2.createGeometryFromInstances = createGeometryFromInstances;\n  function createGeometryFromMesh(g3d2, mesh, section, transparent) {\n    const colors = createVertexColors(g3d2, mesh, transparent);\n    const positions = g3d2.positions.subarray(\n      g3d2.getMeshVertexStart(mesh) * 3,\n      g3d2.getMeshVertexEnd(mesh) * 3\n    );\n    const start = g3d2.getMeshIndexStart(mesh, section);\n    const end = g3d2.getMeshIndexEnd(mesh, section);\n    const indices = g3d2.indices.subarray(start, end);\n    return createGeometryFromArrays(\n      positions,\n      indices,\n      colors,\n      transparent ? 4 : 3\n    );\n  }\n  Geometry2.createGeometryFromMesh = createGeometryFromMesh;\n  function createVertexColors(g3d2, mesh, useAlpha) {\n    const colorSize = useAlpha ? 4 : 3;\n    const result = new Float32Array(g3d2.getMeshVertexCount(mesh) * colorSize);\n    const subStart = g3d2.getMeshSubmeshStart(mesh);\n    const subEnd = g3d2.getMeshSubmeshEnd(mesh);\n    for (let submesh = subStart; submesh < subEnd; submesh++) {\n      const color = g3d2.getSubmeshColor(submesh);\n      const start = g3d2.getSubmeshIndexStart(submesh);\n      const end = g3d2.getSubmeshIndexEnd(submesh);\n      for (let i = start; i < end; i++) {\n        const v = g3d2.indices[i] * colorSize;\n        result[v] = color[0];\n        result[v + 1] = color[1];\n        result[v + 2] = color[2];\n        if (useAlpha)\n          result[v + 3] = color[3];\n      }\n    }\n    return result;\n  }\n  function getInstanceMatrix(g3d2, instance, target = new Matrix4()) {\n    const matrixAsArray = g3d2.getInstanceMatrix(instance);\n    target.fromArray(matrixAsArray);\n    return target;\n  }\n  Geometry2.getInstanceMatrix = getInstanceMatrix;\n  function createGeometryFromArrays(vertices, indices, vertexColors = void 0, colorSize = 3) {\n    const geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new BufferAttribute(vertices, 3));\n    geometry.setIndex(new Uint32BufferAttribute(indices, 1));\n    if (vertexColors) {\n      geometry.setAttribute(\n        \"color\",\n        new BufferAttribute(vertexColors, colorSize)\n      );\n    }\n    return geometry;\n  }\n  Geometry2.createGeometryFromArrays = createGeometryFromArrays;\n  function mergeInstanceMeshes(g3d2, mergeArgs) {\n    const info = getInstanceMergeInfo(g3d2, mergeArgs);\n    if (info.instances.length === 0 || info.indexCount === 0)\n      return;\n    return merge(g3d2, info);\n  }\n  Geometry2.mergeInstanceMeshes = mergeInstanceMeshes;\n  function mergeUniqueMeshes(g3d2, args) {\n    const info = getUniqueMeshMergeInfo(g3d2, args);\n    if (info.instances.length === 0 || info.indexCount === 0)\n      return;\n    return merge(g3d2, info);\n  }\n  Geometry2.mergeUniqueMeshes = mergeUniqueMeshes;\n  function merge(g3d2, info) {\n    const buffer = info.createBuffer();\n    fillBuffers(g3d2, buffer, info);\n    const geometry = buffer.toBufferGeometry();\n    return new MergeResult(\n      geometry,\n      info.instances,\n      buffer.groups,\n      buffer.boxes\n    );\n  }\n  function getUniqueMeshMergeInfo(g3d2, args) {\n    let vertexCount = 0;\n    let indexCount = 0;\n    const instances = [];\n    const meshCount = g3d2.getMeshCount();\n    for (let mesh = 0; mesh < meshCount; mesh++) {\n      const meshInstances = g3d2.meshInstances[mesh];\n      if (!meshInstances || meshInstances.length !== 1)\n        continue;\n      const instance = meshInstances[0];\n      if (!args.legacyLoadRooms && g3d2.getInstanceHasFlag(instance, 1))\n        continue;\n      const count = g3d2.getMeshIndexCount(mesh, args.section);\n      if (count <= 0)\n        continue;\n      indexCount += count;\n      vertexCount += g3d2.getMeshVertexCount(mesh);\n      instances.push(instance);\n    }\n    return new MergeInfo(\n      args.section,\n      args.transparent,\n      instances,\n      indexCount,\n      vertexCount\n    );\n  }\n  function getInstanceMergeInfo(g3d2, args) {\n    let vertexCount = 0;\n    let indexCount = 0;\n    const instancesFiltered = [];\n    for (let i = 0; i < args.legacyInstances.length; i++) {\n      const instance = args.legacyInstances[i];\n      if (!args.legacyLoadRooms && g3d2.getInstanceHasFlag(instance, 1)) {\n        continue;\n      }\n      const mesh = g3d2.instanceMeshes[instance];\n      const start = g3d2.getMeshIndexStart(mesh, args.section);\n      const end = g3d2.getMeshIndexEnd(mesh, args.section);\n      const count = end - start;\n      if (count <= 0)\n        continue;\n      indexCount += count;\n      vertexCount += g3d2.getMeshVertexCount(mesh);\n      instancesFiltered.push(instance);\n    }\n    return new MergeInfo(\n      args.section,\n      args.transparent,\n      instancesFiltered,\n      indexCount,\n      vertexCount\n    );\n  }\n  function fillBuffers(g3d2, buffer, info) {\n    let index = 0;\n    let vertex2 = 0;\n    let offset = 0;\n    const matrix = new Matrix4();\n    const vector = new Vector3();\n    for (let i = 0; i < info.instances.length; i++) {\n      const instance = info.instances[i];\n      const mesh = g3d2.getInstanceMesh(instance);\n      buffer.groups[i] = index;\n      const subStart = g3d2.getMeshSubmeshStart(mesh, info.section);\n      const subEnd = g3d2.getMeshSubmeshEnd(mesh, info.section);\n      for (let sub = subStart; sub < subEnd; sub++) {\n        const subColor = g3d2.getSubmeshColor(sub);\n        const start = g3d2.getSubmeshIndexStart(sub);\n        const end = g3d2.getSubmeshIndexEnd(sub);\n        for (let s = start; s < end; s++) {\n          const newIndex = g3d2.indices[s] + offset;\n          buffer.indices[index++] = newIndex;\n          const v = newIndex * buffer.colorSize;\n          buffer.colors[v] = subColor[0];\n          buffer.colors[v + 1] = subColor[1];\n          buffer.colors[v + 2] = subColor[2];\n          if (buffer.colorSize > 3) {\n            buffer.colors[v + 3] = subColor[3];\n          }\n        }\n      }\n      getInstanceMatrix(g3d2, instance, matrix);\n      const vertexStart = g3d2.getMeshVertexStart(mesh);\n      const vertexEnd = g3d2.getMeshVertexEnd(mesh);\n      if (vertexEnd > vertexStart) {\n        vector.fromArray(g3d2.positions, vertexStart * dist$3.G3d.POSITION_SIZE);\n        vector.applyMatrix4(matrix);\n        vector.toArray(buffer.vertices, vertex2);\n        vertex2 += dist$3.G3d.POSITION_SIZE;\n        buffer.boxes[i] = new Box3(vector.clone(), vector.clone());\n      }\n      for (let p = vertexStart + 1; p < vertexEnd; p++) {\n        vector.fromArray(g3d2.positions, p * dist$3.G3d.POSITION_SIZE);\n        vector.applyMatrix4(matrix);\n        vector.toArray(buffer.vertices, vertex2);\n        vertex2 += dist$3.G3d.POSITION_SIZE;\n        buffer.boxes[i].expandByPoint(vector);\n      }\n      offset += vertexEnd - vertexStart;\n    }\n  }\n  class MergeInfo {\n    constructor(section, transparent, instance, indexCount, vertexCount) {\n      __publicField(this, \"section\");\n      __publicField(this, \"transparent\");\n      __publicField(this, \"instances\");\n      __publicField(this, \"indexCount\");\n      __publicField(this, \"vertexCount\");\n      this.section = section;\n      this.transparent = transparent;\n      this.instances = instance;\n      this.indexCount = indexCount;\n      this.vertexCount = vertexCount;\n    }\n    createBuffer() {\n      return new MergeBuffer(this, dist$3.G3d.POSITION_SIZE, this.transparent ? 4 : 3);\n    }\n  }\n  Geometry2.MergeInfo = MergeInfo;\n  class MergeBuffer {\n    constructor(info, positionSize, colorSize) {\n      __publicField(this, \"indices\");\n      __publicField(this, \"vertices\");\n      __publicField(this, \"colors\");\n      __publicField(this, \"groups\");\n      __publicField(this, \"colorSize\");\n      __publicField(this, \"boxes\");\n      this.indices = new Uint32Array(info.indexCount);\n      this.vertices = new Float32Array(info.vertexCount * positionSize);\n      this.colors = new Float32Array(info.vertexCount * colorSize);\n      this.groups = new Array(info.instances.length);\n      this.boxes = new Array(info.instances.length);\n      this.colorSize = colorSize;\n    }\n    toBufferGeometry() {\n      const geometry = createGeometryFromArrays(\n        this.vertices,\n        this.indices,\n        this.colors,\n        this.colorSize\n      );\n      return geometry;\n    }\n  }\n  Geometry2.MergeBuffer = MergeBuffer;\n  class MergeResult {\n    constructor(geometry, instance, submeshes, boxes) {\n      __publicField(this, \"geometry\");\n      __publicField(this, \"instances\");\n      __publicField(this, \"submeshes\");\n      __publicField(this, \"boxes\");\n      this.geometry = geometry;\n      this.instances = instance;\n      this.submeshes = submeshes;\n      this.boxes = boxes;\n    }\n  }\n  Geometry2.MergeResult = MergeResult;\n})(Geometry || (Geometry = {}));\nconst defaultConfig = {\n  position: new Vector3(),\n  rotation: new Vector3(),\n  scale: 1,\n  matrix: void 0,\n  transparency: \"all\",\n  verboseHttp: false,\n  fileType: void 0,\n  progressive: false,\n  progressiveInterval: 1e3\n};\nfunction getFullSettings$1(options) {\n  var _a2;\n  const merge = options ? cjs(defaultConfig, options, void 0) : defaultConfig;\n  merge.transparency = Transparency.isValid(merge.transparency) ? merge.transparency : \"all\";\n  merge.matrix = (_a2 = merge.matrix) != null ? _a2 : new Matrix4().compose(\n    merge.position,\n    new Quaternion().setFromEuler(\n      new Euler(\n        merge.rotation.x * Math.PI / 180,\n        merge.rotation.y * Math.PI / 180,\n        merge.rotation.z * Math.PI / 180\n      )\n    ),\n    new Vector3(merge.scale, merge.scale, merge.scale)\n  );\n  return merge;\n}\nclass ObjectAttribute {\n  constructor(value, vertexAttribute, instanceAttribute, meshes, toNumber) {\n    __publicField(this, \"vertexAttribute\");\n    __publicField(this, \"instanceAttribute\");\n    __publicField(this, \"defaultValue\");\n    __publicField(this, \"toNumber\");\n    __publicField(this, \"_value\");\n    __publicField(this, \"_meshes\");\n    this._value = value;\n    this.defaultValue = value;\n    this.vertexAttribute = vertexAttribute;\n    this.instanceAttribute = instanceAttribute;\n    this._meshes = meshes;\n    this.toNumber = toNumber;\n  }\n  updateMeshes(meshes) {\n    this._meshes = meshes;\n    const v = this._value;\n    this._value = this.defaultValue;\n    this.apply(v);\n  }\n  get value() {\n    return this._value;\n  }\n  apply(value) {\n    if (this._value === value)\n      return false;\n    this._value = value;\n    if (!this._meshes)\n      return false;\n    const number = this.toNumber(value);\n    for (let m = 0; m < this._meshes.length; m++) {\n      const sub = this._meshes[m];\n      if (sub.merged) {\n        this.applyMerged(sub, number);\n      } else {\n        this.applyInstanced(sub, number);\n      }\n    }\n    return true;\n  }\n  applyInstanced(sub, number) {\n    const mesh = sub.three;\n    const geometry = mesh.geometry;\n    let attribute = geometry.getAttribute(\n      this.instanceAttribute\n    );\n    if (!attribute || attribute.count < mesh.instanceMatrix.count) {\n      const array = new Float32Array(mesh.instanceMatrix.count);\n      attribute = new InstancedBufferAttribute(array, 1);\n      geometry.setAttribute(this.instanceAttribute, attribute);\n    }\n    attribute.setX(sub.index, number);\n    attribute.needsUpdate = true;\n    attribute.updateRange.offset = 0;\n    attribute.updateRange.count = -1;\n  }\n  applyMerged(sub, number) {\n    const geometry = sub.three.geometry;\n    const positions = geometry.getAttribute(\"position\");\n    let attribute = geometry.getAttribute(\n      this.vertexAttribute\n    );\n    if (!attribute) {\n      const count = positions.array.length / positions.itemSize;\n      const array = new Float32Array(count);\n      attribute = new Float32BufferAttribute(array, 1);\n      geometry.setAttribute(this.vertexAttribute, attribute);\n    }\n    const start = sub.meshStart;\n    const end = sub.meshEnd;\n    const indices = sub.three.geometry.index;\n    for (let i = start; i < end; i++) {\n      const v = indices.getX(i);\n      attribute.setX(v, number);\n    }\n    attribute.needsUpdate = true;\n    attribute.updateRange.offset = 0;\n    attribute.updateRange.count = -1;\n  }\n}\nclass InsertableSubmesh {\n  constructor(mesh, index) {\n    __publicField(this, \"mesh\");\n    __publicField(this, \"index\");\n    __publicField(this, \"_colors\");\n    this.mesh = mesh;\n    this.index = index;\n  }\n  equals(other) {\n    return this.mesh === other.mesh && this.index === other.index;\n  }\n  get three() {\n    return this.mesh.mesh;\n  }\n  get merged() {\n    return true;\n  }\n  get submesh() {\n    return this.mesh.geometry.submeshes[this.index];\n  }\n  get instance() {\n    return this.submesh.instance;\n  }\n  get boundingBox() {\n    return this.submesh.boundingBox;\n  }\n  get meshStart() {\n    return this.submesh.start;\n  }\n  get meshEnd() {\n    return this.submesh.end;\n  }\n  get object() {\n    return this.mesh.vim.getObjectFromInstance(this.instance);\n  }\n  saveColors(colors) {\n    if (this._colors)\n      return;\n    this._colors = colors;\n  }\n  popColors() {\n    const result = this._colors;\n    this._colors = void 0;\n    return result;\n  }\n}\nclass ColorAttribute {\n  constructor(meshes, value, vim) {\n    __publicField(this, \"vim\");\n    __publicField(this, \"_meshes\");\n    __publicField(this, \"_value\");\n    this._meshes = meshes;\n    this._value = value;\n    this.vim = vim;\n  }\n  updateMeshes(meshes) {\n    this._meshes = meshes;\n    if (this._value !== void 0) {\n      this.apply(this._value);\n    }\n  }\n  get value() {\n    return this._value;\n  }\n  apply(color) {\n    this._value = color;\n    if (!this._meshes)\n      return;\n    for (let m = 0; m < this._meshes.length; m++) {\n      const sub = this._meshes[m];\n      if (sub.merged) {\n        this.applyMergedColor(sub, color);\n      } else {\n        this.applyInstancedColor(sub, color);\n      }\n    }\n  }\n  applyMergedColor(sub, color) {\n    if (!color) {\n      this.resetMergedColor(sub);\n      return;\n    }\n    const start = sub.meshStart;\n    const end = sub.meshEnd;\n    const colors = sub.three.geometry.getAttribute(\n      \"color\"\n    );\n    const indices = sub.three.geometry.index;\n    if (sub instanceof InsertableSubmesh) {\n      let c = 0;\n      const previous = new Float32Array((end - start) * 3);\n      for (let i = start; i < end; i++) {\n        const v = indices.getX(i);\n        previous[c++] = colors.getX(v);\n        previous[c++] = colors.getY(v);\n        previous[c++] = colors.getZ(v);\n      }\n      sub.saveColors(previous);\n    }\n    for (let i = start; i < end; i++) {\n      const v = indices.getX(i);\n      colors.setXYZ(v, color.r, color.g, color.b);\n    }\n    colors.needsUpdate = true;\n    colors.updateRange.offset = 0;\n    colors.updateRange.count = -1;\n  }\n  resetMergedColor(sub) {\n    if (!this.vim)\n      return;\n    if (sub instanceof InsertableSubmesh) {\n      this.resetMergedInsertableColor(sub);\n      return;\n    }\n    const colors = sub.three.geometry.getAttribute(\n      \"color\"\n    );\n    const indices = sub.three.geometry.index;\n    let mergedIndex = sub.meshStart;\n    const g3d2 = this.vim.g3d;\n    const g3dMesh2 = g3d2.instanceMeshes[sub.instance];\n    const subStart = g3d2.getMeshSubmeshStart(g3dMesh2);\n    const subEnd = g3d2.getMeshSubmeshEnd(g3dMesh2);\n    for (let sub2 = subStart; sub2 < subEnd; sub2++) {\n      const start = g3d2.getSubmeshIndexStart(sub2);\n      const end = g3d2.getSubmeshIndexEnd(sub2);\n      const color = g3d2.getSubmeshColor(sub2);\n      for (let i = start; i < end; i++) {\n        const v = indices.getX(mergedIndex);\n        colors.setXYZ(v, color[0], color[1], color[2]);\n        mergedIndex++;\n      }\n    }\n    colors.needsUpdate = true;\n    colors.updateRange.offset = 0;\n    colors.updateRange.count = -1;\n  }\n  resetMergedInsertableColor(sub) {\n    const previous = sub.popColors();\n    if (previous === void 0)\n      return;\n    const indices = sub.three.geometry.index;\n    const colors = sub.three.geometry.getAttribute(\n      \"color\"\n    );\n    let c = 0;\n    for (let i = sub.meshStart; i < sub.meshEnd; i++) {\n      const v = indices.getX(i);\n      colors.setXYZ(v, previous[c], previous[c + 1], previous[c + 2]);\n      c += 3;\n    }\n    colors.needsUpdate = true;\n    colors.updateRange.offset = 0;\n    colors.updateRange.count = -1;\n  }\n  applyInstancedColor(sub, color) {\n    const colors = this.getOrAddInstanceColorAttribute(\n      sub.three\n    );\n    if (color) {\n      colors.setXYZ(sub.index, color.r, color.g, color.b);\n      colors.needsUpdate = true;\n      colors.updateRange.offset = 0;\n      colors.updateRange.count = -1;\n    }\n  }\n  getOrAddInstanceColorAttribute(mesh) {\n    if (mesh.instanceColor && mesh.instanceColor.count <= mesh.instanceMatrix.count) {\n      return mesh.instanceColor;\n    }\n    const count = mesh.instanceMatrix.count;\n    const colors = new Float32Array(count * 3);\n    const attribute = new InstancedBufferAttribute(colors, 3);\n    mesh.instanceColor = attribute;\n    return attribute;\n  }\n}\nclass Object3D {\n  constructor(vim, element, instances, meshes) {\n    __publicField(this, \"_color\");\n    __publicField(this, \"_boundingBox\");\n    __publicField(this, \"_meshes\");\n    __publicField(this, \"_outlineAttribute\");\n    __publicField(this, \"_visibleAttribute\");\n    __publicField(this, \"_coloredAttribute\");\n    __publicField(this, \"_focusedAttribute\");\n    __publicField(this, \"_colorAttribute\");\n    __publicField(this, \"type\", \"Object3D\");\n    __publicField(this, \"vim\");\n    __publicField(this, \"element\");\n    __publicField(this, \"instances\");\n    this.vim = vim;\n    this.element = element;\n    this.instances = instances;\n    this._meshes = meshes;\n    this._outlineAttribute = new ObjectAttribute(\n      false,\n      \"selected\",\n      \"selected\",\n      meshes,\n      (v) => v ? 1 : 0\n    );\n    this._visibleAttribute = new ObjectAttribute(\n      true,\n      \"ignore\",\n      \"ignore\",\n      meshes,\n      (v) => v ? 0 : 1\n    );\n    this._focusedAttribute = new ObjectAttribute(\n      false,\n      \"focused\",\n      \"focused\",\n      meshes,\n      (v) => v ? 1 : 0\n    );\n    this._coloredAttribute = new ObjectAttribute(\n      false,\n      \"colored\",\n      \"colored\",\n      meshes,\n      (v) => v ? 1 : 0\n    );\n    this._colorAttribute = new ColorAttribute(meshes, void 0, vim);\n  }\n  get elementId() {\n    return this.vim.map.getElementId(this.element);\n  }\n  get hasMesh() {\n    var _a2, _b2;\n    return ((_b2 = (_a2 = this._meshes) == null ? void 0 : _a2.length) != null ? _b2 : 0) > 0;\n  }\n  get outline() {\n    return this._outlineAttribute.value;\n  }\n  set outline(value) {\n    if (this._outlineAttribute.apply(value)) {\n      if (value)\n        this.vim.scene.addOutline();\n      else\n        this.vim.scene.removeOutline();\n    }\n  }\n  get focused() {\n    return this._focusedAttribute.value;\n  }\n  set focused(value) {\n    if (this._focusedAttribute.apply(value)) {\n      this.vim.scene.setDirty();\n    }\n  }\n  get visible() {\n    return this._visibleAttribute.value;\n  }\n  set visible(value) {\n    if (this._visibleAttribute.apply(value)) {\n      this.vim.scene.setDirty();\n    }\n  }\n  get color() {\n    return this._color;\n  }\n  set color(color) {\n    this._color = color;\n    this.vim.scene.setDirty();\n    this._coloredAttribute.apply(this._color !== void 0);\n    this._colorAttribute.apply(this._color);\n  }\n  async getBimElement() {\n    return this.vim.bim.element.get(this.element);\n  }\n  async getBimParameters() {\n    return dist$3.VimHelpers.getElementParameters(this.vim.bim, this.element);\n  }\n  getBoundingBox() {\n    if (!this.instances || !this._meshes)\n      return;\n    if (this._boundingBox)\n      return this._boundingBox;\n    let box;\n    this._meshes.forEach((m) => {\n      const sub = m;\n      const b = sub.boundingBox;\n      box = box ? box.union(b) : b.clone();\n    });\n    if (box) {\n      box.applyMatrix4(this.vim.getMatrix());\n      this._boundingBox = box;\n    }\n    return this._boundingBox;\n  }\n  getCenter(target = new Vector3()) {\n    var _a2;\n    return (_a2 = this.getBoundingBox()) == null ? void 0 : _a2.getCenter(target);\n  }\n  _addMesh(mesh) {\n    if (this.instances.findIndex((i) => i === mesh.instance) < 0) {\n      throw new Error(\"Cannot update mismatched instance\");\n    }\n    if (this._meshes) {\n      if (this._meshes.findIndex((m) => m.equals(mesh)) < 0) {\n        this._meshes.push(mesh);\n        this.updateMeshes(this._meshes);\n      }\n    } else {\n      this._meshes = [mesh];\n      this.updateMeshes(this._meshes);\n    }\n  }\n  updateMeshes(meshes) {\n    this._meshes = meshes;\n    this.vim.scene.setDirty();\n    this._outlineAttribute.updateMeshes(meshes);\n    this._visibleAttribute.updateMeshes(meshes);\n    this._focusedAttribute.updateMeshes(meshes);\n    this._coloredAttribute.updateMeshes(meshes);\n    this._colorAttribute.updateMeshes(meshes);\n  }\n}\nclass ElementNoMapping {\n  getElementsFromElementId(id2) {\n    return void 0;\n  }\n  hasElement(element) {\n    return false;\n  }\n  getElements() {\n    return [];\n  }\n  getInstancesFromElement(element) {\n    return void 0;\n  }\n  getElementFromInstance(instance) {\n    return void 0;\n  }\n  getElementId(element) {\n    return void 0;\n  }\n}\nclass ElementMapping {\n  constructor(instances, instanceToElement, elementIds, instanceMeshes) {\n    __publicField(this, \"_instanceToElement\");\n    __publicField(this, \"_instanceMeshes\");\n    __publicField(this, \"_elementToInstances\");\n    __publicField(this, \"_elementIds\");\n    __publicField(this, \"_elementIdToElements\");\n    this._instanceToElement = /* @__PURE__ */ new Map();\n    instances.forEach(\n      (i) => this._instanceToElement.set(i, instanceToElement[i])\n    );\n    this._elementToInstances = ElementMapping.invertMap(\n      this._instanceToElement\n    );\n    this._elementIds = elementIds;\n    this._elementIdToElements = ElementMapping.invertArray(elementIds);\n    this._instanceMeshes = instanceMeshes;\n  }\n  static async fromG3d(g3d2, bim) {\n    const instanceToElement = await bim.node.getAllElementIndex();\n    const elementIds = await bim.element.getAllId();\n    return new ElementMapping(\n      Array.from(g3d2.instanceNodes),\n      instanceToElement,\n      elementIds,\n      g3d2.instanceMeshes\n    );\n  }\n  getElementsFromElementId(id2) {\n    return this._elementIdToElements.get(BigInt(id2));\n  }\n  hasElement(element) {\n    return element >= 0 && element < this._elementIds.length;\n  }\n  hasMesh(element) {\n    if (!this._instanceMeshes)\n      return true;\n    const instances = this._elementToInstances.get(element);\n    for (const i of instances) {\n      if (this._instanceMeshes[i] >= 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n  getElements() {\n    return this._elementIds.keys();\n  }\n  getInstancesFromElement(element) {\n    var _a2;\n    if (!this.hasElement(element))\n      return;\n    return (_a2 = this._elementToInstances.get(element)) != null ? _a2 : [];\n  }\n  getElementFromInstance(instance) {\n    return this._instanceToElement.get(instance);\n  }\n  getElementId(element) {\n    return this._elementIds[element];\n  }\n  static invertArray(data) {\n    const result = /* @__PURE__ */ new Map();\n    for (let i = 0; i < data.length; i++) {\n      const value = data[i];\n      const list = result.get(value);\n      if (list) {\n        list.push(i);\n      } else {\n        result.set(value, [i]);\n      }\n    }\n    return result;\n  }\n  static invertMap(data) {\n    const result = /* @__PURE__ */ new Map();\n    for (const [key, value] of data.entries()) {\n      const list = result.get(value);\n      if (list) {\n        list.push(key);\n      } else {\n        result.set(value, [key]);\n      }\n    }\n    return result;\n  }\n}\nclass ElementMapping2 {\n  constructor(scene) {\n    __publicField(this, \"_instanceToElement\");\n    __publicField(this, \"_elementToInstances\");\n    __publicField(this, \"_instanceToElementId\");\n    this._instanceToElement = /* @__PURE__ */ new Map();\n    this._instanceToElementId = /* @__PURE__ */ new Map();\n    for (let i = 0; i < scene.instanceNodes.length; i++) {\n      this._instanceToElement.set(\n        scene.instanceNodes[i],\n        scene.instanceGroups[i]\n      );\n      this._instanceToElementId.set(\n        scene.instanceNodes[i],\n        scene.instanceTags[i]\n      );\n    }\n    this._elementToInstances = ElementMapping2.invertMap(\n      this._instanceToElement\n    );\n  }\n  getElementsFromElementId(id2) {\n    return void 0;\n  }\n  hasElement(element) {\n    return this._elementToInstances.has(element);\n  }\n  hasMesh(element) {\n    return this.hasElement(element);\n  }\n  getElements() {\n    return this._elementToInstances.keys();\n  }\n  getInstancesFromElement(element) {\n    var _a2;\n    if (!this.hasElement(element))\n      return;\n    return (_a2 = this._elementToInstances.get(element)) != null ? _a2 : [];\n  }\n  getElementFromInstance(instance) {\n    return this._instanceToElement.get(instance);\n  }\n  getElementId(element) {\n    var _a2;\n    const instance = (_a2 = this.getInstancesFromElement(element)) == null ? void 0 : _a2[0];\n    return this._instanceToElementId.get(instance);\n  }\n  static invertMap(data) {\n    const result = /* @__PURE__ */ new Map();\n    for (const [key, value] of data.entries()) {\n      const list = result.get(value);\n      if (list) {\n        list.push(key);\n      } else {\n        result.set(value, [key]);\n      }\n    }\n    return result;\n  }\n}\nvar dist$2 = {};\nvar SignalDispatcher$1 = {};\nvar dist$1 = {};\nvar DispatcherBase$1 = {};\nvar DispatcherWrapper$1 = {};\nObject.defineProperty(DispatcherWrapper$1, \"__esModule\", { value: true });\nDispatcherWrapper$1.DispatcherWrapper = void 0;\nclass DispatcherWrapper {\n  constructor(dispatcher) {\n    this._subscribe = (fn) => dispatcher.subscribe(fn);\n    this._unsubscribe = (fn) => dispatcher.unsubscribe(fn);\n    this._one = (fn) => dispatcher.one(fn);\n    this._has = (fn) => dispatcher.has(fn);\n    this._clear = () => dispatcher.clear();\n    this._count = () => dispatcher.count;\n    this._onSubscriptionChange = () => dispatcher.onSubscriptionChange;\n  }\n  get onSubscriptionChange() {\n    return this._onSubscriptionChange();\n  }\n  get count() {\n    return this._count();\n  }\n  subscribe(fn) {\n    return this._subscribe(fn);\n  }\n  sub(fn) {\n    return this.subscribe(fn);\n  }\n  unsubscribe(fn) {\n    this._unsubscribe(fn);\n  }\n  unsub(fn) {\n    this.unsubscribe(fn);\n  }\n  one(fn) {\n    return this._one(fn);\n  }\n  has(fn) {\n    return this._has(fn);\n  }\n  clear() {\n    this._clear();\n  }\n}\nDispatcherWrapper$1.DispatcherWrapper = DispatcherWrapper;\nvar Subscription$1 = {};\nObject.defineProperty(Subscription$1, \"__esModule\", { value: true });\nSubscription$1.Subscription = void 0;\nclass Subscription {\n  constructor(handler, isOnce) {\n    this.handler = handler;\n    this.isOnce = isOnce;\n    this.isExecuted = false;\n  }\n  execute(executeAsync, scope, args) {\n    if (!this.isOnce || !this.isExecuted) {\n      this.isExecuted = true;\n      var fn = this.handler;\n      if (executeAsync) {\n        setTimeout(() => {\n          fn.apply(scope, args);\n        }, 1);\n      } else {\n        fn.apply(scope, args);\n      }\n    }\n  }\n}\nSubscription$1.Subscription = Subscription;\nvar EventManagement$1 = {};\nObject.defineProperty(EventManagement$1, \"__esModule\", { value: true });\nEventManagement$1.EventManagement = void 0;\nclass EventManagement {\n  constructor(unsub) {\n    this.unsub = unsub;\n    this.propagationStopped = false;\n  }\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n}\nEventManagement$1.EventManagement = EventManagement;\nObject.defineProperty(DispatcherBase$1, \"__esModule\", { value: true });\nDispatcherBase$1.SubscriptionChangeEventDispatcher = DispatcherBase$1.DispatcherBase = void 0;\nconst DispatcherWrapper_1 = DispatcherWrapper$1;\nconst Subscription_1 = Subscription$1;\nconst EventManagement_1$1 = EventManagement$1;\nclass DispatcherBase {\n  constructor() {\n    this._subscriptions = new Array();\n  }\n  get count() {\n    return this._subscriptions.length;\n  }\n  get onSubscriptionChange() {\n    if (this._onSubscriptionChange == null) {\n      this._onSubscriptionChange = new SubscriptionChangeEventDispatcher();\n    }\n    return this._onSubscriptionChange.asEvent();\n  }\n  subscribe(fn) {\n    if (fn) {\n      this._subscriptions.push(this.createSubscription(fn, false));\n      this.triggerSubscriptionChange();\n    }\n    return () => {\n      this.unsubscribe(fn);\n    };\n  }\n  sub(fn) {\n    return this.subscribe(fn);\n  }\n  one(fn) {\n    if (fn) {\n      this._subscriptions.push(this.createSubscription(fn, true));\n      this.triggerSubscriptionChange();\n    }\n    return () => {\n      this.unsubscribe(fn);\n    };\n  }\n  has(fn) {\n    if (!fn)\n      return false;\n    return this._subscriptions.some((sub) => sub.handler == fn);\n  }\n  unsubscribe(fn) {\n    if (!fn)\n      return;\n    let changes = false;\n    for (let i = 0; i < this._subscriptions.length; i++) {\n      if (this._subscriptions[i].handler == fn) {\n        this._subscriptions.splice(i, 1);\n        changes = true;\n        break;\n      }\n    }\n    if (changes) {\n      this.triggerSubscriptionChange();\n    }\n  }\n  unsub(fn) {\n    this.unsubscribe(fn);\n  }\n  _dispatch(executeAsync, scope, args) {\n    for (let sub of [...this._subscriptions]) {\n      let ev = new EventManagement_1$1.EventManagement(() => this.unsub(sub.handler));\n      let nargs = Array.prototype.slice.call(args);\n      nargs.push(ev);\n      let s = sub;\n      s.execute(executeAsync, scope, nargs);\n      this.cleanup(sub);\n      if (!executeAsync && ev.propagationStopped) {\n        return { propagationStopped: true };\n      }\n    }\n    if (executeAsync) {\n      return null;\n    }\n    return { propagationStopped: false };\n  }\n  createSubscription(handler, isOnce) {\n    return new Subscription_1.Subscription(handler, isOnce);\n  }\n  cleanup(sub) {\n    let changes = false;\n    if (sub.isOnce && sub.isExecuted) {\n      let i = this._subscriptions.indexOf(sub);\n      if (i > -1) {\n        this._subscriptions.splice(i, 1);\n        changes = true;\n      }\n    }\n    if (changes) {\n      this.triggerSubscriptionChange();\n    }\n  }\n  asEvent() {\n    if (this._wrap == null) {\n      this._wrap = new DispatcherWrapper_1.DispatcherWrapper(this);\n    }\n    return this._wrap;\n  }\n  clear() {\n    if (this._subscriptions.length != 0) {\n      this._subscriptions.splice(0, this._subscriptions.length);\n      this.triggerSubscriptionChange();\n    }\n  }\n  triggerSubscriptionChange() {\n    if (this._onSubscriptionChange != null) {\n      this._onSubscriptionChange.dispatch(this.count);\n    }\n  }\n}\nDispatcherBase$1.DispatcherBase = DispatcherBase;\nclass SubscriptionChangeEventDispatcher extends DispatcherBase {\n  dispatch(count) {\n    this._dispatch(false, this, arguments);\n  }\n}\nDispatcherBase$1.SubscriptionChangeEventDispatcher = SubscriptionChangeEventDispatcher;\nvar DispatchError$1 = {};\nObject.defineProperty(DispatchError$1, \"__esModule\", { value: true });\nDispatchError$1.DispatchError = void 0;\nclass DispatchError extends Error {\n  constructor(message) {\n    super(message);\n  }\n}\nDispatchError$1.DispatchError = DispatchError;\nvar EventListBase$1 = {};\nObject.defineProperty(EventListBase$1, \"__esModule\", { value: true });\nEventListBase$1.EventListBase = void 0;\nclass EventListBase {\n  constructor() {\n    this._events = {};\n  }\n  get(name) {\n    let event = this._events[name];\n    if (event) {\n      return event;\n    }\n    event = this.createDispatcher();\n    this._events[name] = event;\n    return event;\n  }\n  remove(name) {\n    delete this._events[name];\n  }\n}\nEventListBase$1.EventListBase = EventListBase;\nvar HandlingBase$1 = {};\nObject.defineProperty(HandlingBase$1, \"__esModule\", { value: true });\nHandlingBase$1.HandlingBase = void 0;\nclass HandlingBase {\n  constructor(events) {\n    this.events = events;\n  }\n  one(name, fn) {\n    this.events.get(name).one(fn);\n  }\n  has(name, fn) {\n    return this.events.get(name).has(fn);\n  }\n  subscribe(name, fn) {\n    this.events.get(name).subscribe(fn);\n  }\n  sub(name, fn) {\n    this.subscribe(name, fn);\n  }\n  unsubscribe(name, fn) {\n    this.events.get(name).unsubscribe(fn);\n  }\n  unsub(name, fn) {\n    this.unsubscribe(name, fn);\n  }\n}\nHandlingBase$1.HandlingBase = HandlingBase;\nvar PromiseDispatcherBase$1 = {};\nvar PromiseSubscription$1 = {};\nObject.defineProperty(PromiseSubscription$1, \"__esModule\", { value: true });\nPromiseSubscription$1.PromiseSubscription = void 0;\nclass PromiseSubscription {\n  constructor(handler, isOnce) {\n    this.handler = handler;\n    this.isOnce = isOnce;\n    this.isExecuted = false;\n  }\n  async execute(executeAsync, scope, args) {\n    if (!this.isOnce || !this.isExecuted) {\n      this.isExecuted = true;\n      var fn = this.handler;\n      if (executeAsync) {\n        setTimeout(() => {\n          fn.apply(scope, args);\n        }, 1);\n        return;\n      }\n      let result = fn.apply(scope, args);\n      await result;\n    }\n  }\n}\nPromiseSubscription$1.PromiseSubscription = PromiseSubscription;\nObject.defineProperty(PromiseDispatcherBase$1, \"__esModule\", { value: true });\nPromiseDispatcherBase$1.PromiseDispatcherBase = void 0;\nconst PromiseSubscription_1 = PromiseSubscription$1;\nconst EventManagement_1 = EventManagement$1;\nconst DispatcherBase_1 = DispatcherBase$1;\nconst DispatchError_1 = DispatchError$1;\nclass PromiseDispatcherBase extends DispatcherBase_1.DispatcherBase {\n  _dispatch(executeAsync, scope, args) {\n    throw new DispatchError_1.DispatchError(\"_dispatch not supported. Use _dispatchAsPromise.\");\n  }\n  createSubscription(handler, isOnce) {\n    return new PromiseSubscription_1.PromiseSubscription(handler, isOnce);\n  }\n  async _dispatchAsPromise(executeAsync, scope, args) {\n    for (let sub of [...this._subscriptions]) {\n      let ev = new EventManagement_1.EventManagement(() => this.unsub(sub.handler));\n      let nargs = Array.prototype.slice.call(args);\n      nargs.push(ev);\n      let ps = sub;\n      await ps.execute(executeAsync, scope, nargs);\n      this.cleanup(sub);\n      if (!executeAsync && ev.propagationStopped) {\n        return { propagationStopped: true };\n      }\n    }\n    if (executeAsync) {\n      return null;\n    }\n    return { propagationStopped: false };\n  }\n}\nPromiseDispatcherBase$1.PromiseDispatcherBase = PromiseDispatcherBase;\n(function(exports) {\n  /*!\n   * Strongly Typed Events for TypeScript - Core\n   * https://github.com/KeesCBakker/StronlyTypedEvents/\n   * http://keestalkstech.com\n   *\n   * Copyright Kees C. Bakker / KeesTalksTech\n   * Released under the MIT license\n   */\n  Object.defineProperty(exports, \"__esModule\", { value: true });\n  exports.SubscriptionChangeEventDispatcher = exports.HandlingBase = exports.PromiseDispatcherBase = exports.PromiseSubscription = exports.DispatchError = exports.EventManagement = exports.EventListBase = exports.DispatcherWrapper = exports.DispatcherBase = exports.Subscription = void 0;\n  const DispatcherBase_12 = DispatcherBase$1;\n  Object.defineProperty(exports, \"DispatcherBase\", { enumerable: true, get: function() {\n    return DispatcherBase_12.DispatcherBase;\n  } });\n  Object.defineProperty(exports, \"SubscriptionChangeEventDispatcher\", { enumerable: true, get: function() {\n    return DispatcherBase_12.SubscriptionChangeEventDispatcher;\n  } });\n  const DispatchError_12 = DispatchError$1;\n  Object.defineProperty(exports, \"DispatchError\", { enumerable: true, get: function() {\n    return DispatchError_12.DispatchError;\n  } });\n  const DispatcherWrapper_12 = DispatcherWrapper$1;\n  Object.defineProperty(exports, \"DispatcherWrapper\", { enumerable: true, get: function() {\n    return DispatcherWrapper_12.DispatcherWrapper;\n  } });\n  const EventListBase_1 = EventListBase$1;\n  Object.defineProperty(exports, \"EventListBase\", { enumerable: true, get: function() {\n    return EventListBase_1.EventListBase;\n  } });\n  const EventManagement_12 = EventManagement$1;\n  Object.defineProperty(exports, \"EventManagement\", { enumerable: true, get: function() {\n    return EventManagement_12.EventManagement;\n  } });\n  const HandlingBase_1 = HandlingBase$1;\n  Object.defineProperty(exports, \"HandlingBase\", { enumerable: true, get: function() {\n    return HandlingBase_1.HandlingBase;\n  } });\n  const PromiseDispatcherBase_1 = PromiseDispatcherBase$1;\n  Object.defineProperty(exports, \"PromiseDispatcherBase\", { enumerable: true, get: function() {\n    return PromiseDispatcherBase_1.PromiseDispatcherBase;\n  } });\n  const PromiseSubscription_12 = PromiseSubscription$1;\n  Object.defineProperty(exports, \"PromiseSubscription\", { enumerable: true, get: function() {\n    return PromiseSubscription_12.PromiseSubscription;\n  } });\n  const Subscription_12 = Subscription$1;\n  Object.defineProperty(exports, \"Subscription\", { enumerable: true, get: function() {\n    return Subscription_12.Subscription;\n  } });\n})(dist$1);\nObject.defineProperty(SignalDispatcher$1, \"__esModule\", { value: true });\nSignalDispatcher$1.SignalDispatcher = void 0;\nconst ste_core_1$5 = dist$1;\nclass SignalDispatcher extends ste_core_1$5.DispatcherBase {\n  dispatch() {\n    const result = this._dispatch(false, this, arguments);\n    if (result == null) {\n      throw new ste_core_1$5.DispatchError(\"Got `null` back from dispatch.\");\n    }\n    return result;\n  }\n  dispatchAsync() {\n    this._dispatch(true, this, arguments);\n  }\n  asEvent() {\n    return super.asEvent();\n  }\n}\nSignalDispatcher$1.SignalDispatcher = SignalDispatcher;\nvar SignalHandlingBase$1 = {};\nvar SignalList$1 = {};\nObject.defineProperty(SignalList$1, \"__esModule\", { value: true });\nSignalList$1.SignalList = void 0;\nconst ste_core_1$4 = dist$1;\nconst SignalDispatcher_1 = SignalDispatcher$1;\nclass SignalList extends ste_core_1$4.EventListBase {\n  constructor() {\n    super();\n  }\n  createDispatcher() {\n    return new SignalDispatcher_1.SignalDispatcher();\n  }\n}\nSignalList$1.SignalList = SignalList;\nObject.defineProperty(SignalHandlingBase$1, \"__esModule\", { value: true });\nSignalHandlingBase$1.SignalHandlingBase = void 0;\nconst ste_core_1$3 = dist$1;\nconst SignalList_1 = SignalList$1;\nclass SignalHandlingBase extends ste_core_1$3.HandlingBase {\n  constructor() {\n    super(new SignalList_1.SignalList());\n  }\n}\nSignalHandlingBase$1.SignalHandlingBase = SignalHandlingBase;\n(function(exports) {\n  /*!\n   * Strongly Typed Events for TypeScript - Promise Signals\n   * https://github.com/KeesCBakker/StronlyTypedEvents/\n   * http://keestalkstech.com\n   *\n   * Copyright Kees C. Bakker / KeesTalksTech\n   * Released under the MIT license\n   */\n  Object.defineProperty(exports, \"__esModule\", { value: true });\n  exports.SignalList = exports.SignalHandlingBase = exports.SignalDispatcher = void 0;\n  const SignalDispatcher_12 = SignalDispatcher$1;\n  Object.defineProperty(exports, \"SignalDispatcher\", { enumerable: true, get: function() {\n    return SignalDispatcher_12.SignalDispatcher;\n  } });\n  const SignalHandlingBase_1 = SignalHandlingBase$1;\n  Object.defineProperty(exports, \"SignalHandlingBase\", { enumerable: true, get: function() {\n    return SignalHandlingBase_1.SignalHandlingBase;\n  } });\n  const SignalList_12 = SignalList$1;\n  Object.defineProperty(exports, \"SignalList\", { enumerable: true, get: function() {\n    return SignalList_12.SignalList;\n  } });\n})(dist$2);\nclass Vim {\n  constructor(header, document2, g3d2, scene, settings, map, builder, source, format) {\n    __publicField(this, \"format\");\n    __publicField(this, \"source\");\n    __publicField(this, \"header\");\n    __publicField(this, \"bim\");\n    __publicField(this, \"g3d\");\n    __publicField(this, \"settings\");\n    __publicField(this, \"scene\");\n    __publicField(this, \"map\");\n    __publicField(this, \"_builder\");\n    __publicField(this, \"_loadedInstances\", /* @__PURE__ */ new Set());\n    __publicField(this, \"_elementToObject\", /* @__PURE__ */ new Map());\n    __publicField(this, \"_onDispose\", new dist$2.SignalDispatcher());\n    this.header = header;\n    this.bim = document2;\n    this.g3d = g3d2;\n    scene.vim = this;\n    this.scene = scene;\n    this.settings = settings;\n    this.map = map != null ? map : new ElementNoMapping();\n    this._builder = builder;\n    this.source = source;\n    this.format = format;\n  }\n  get onLoadingUpdate() {\n    return this._builder.onUpdate;\n  }\n  get isLoading() {\n    return this._builder.isLoading;\n  }\n  get onDispose() {\n    return this._onDispose;\n  }\n  getMatrix() {\n    return this.settings.matrix;\n  }\n  getObjectFromInstance(instance) {\n    const element = this.map.getElementFromInstance(instance);\n    if (element === void 0)\n      return;\n    return this.getObjectFromElement(element);\n  }\n  getObjectsFromElementId(id2) {\n    var _a2;\n    const elements = this.map.getElementsFromElementId(id2);\n    return (_a2 = elements == null ? void 0 : elements.map((e) => this.getObjectFromElement(e)).filter((o) => o !== void 0)) != null ? _a2 : [];\n  }\n  getObjectFromElement(element) {\n    if (!this.map.hasElement(element))\n      return;\n    if (this._elementToObject.has(element)) {\n      return this._elementToObject.get(element);\n    }\n    const instances = this.map.getInstancesFromElement(element);\n    const meshes = this.scene.getMeshesFromInstances(instances);\n    const result = new Object3D(this, element, instances, meshes);\n    this._elementToObject.set(element, result);\n    return result;\n  }\n  getObjectsInBox(box) {\n    const result = [];\n    for (const obj of this.getObjects()) {\n      const b = obj.getBoundingBox();\n      if (!b)\n        continue;\n      if (box.containsBox(b)) {\n        result.push(obj);\n      }\n    }\n    return result;\n  }\n  getObjects() {\n    const result = [];\n    for (const e of this.map.getElements()) {\n      const obj = this.getObjectFromElement(e);\n      result.push(obj);\n    }\n    return result;\n  }\n  getObjectsInSubset(subset) {\n    const set = /* @__PURE__ */ new Set();\n    const result = [];\n    const count = subset.getInstanceCount();\n    for (let i = 0; i < count; i++) {\n      const instance = subset.getVimInstance(i);\n      const obj = this.getObjectFromInstance(instance);\n      if (!set.has(obj)) {\n        result.push(obj);\n        set.add(obj);\n      }\n    }\n    return result;\n  }\n  getFullSet() {\n    return this._builder.getFullSet();\n  }\n  async loadAll(settings) {\n    return this.loadSubset(this.getFullSet(), settings);\n  }\n  async loadSubset(subset, settings) {\n    subset = subset.except(\"instance\", this._loadedInstances);\n    const count = subset.getInstanceCount();\n    for (let i = 0; i < count; i++) {\n      this._loadedInstances.add(subset.getVimInstance(i));\n    }\n    const box = subset.getBoundingBox();\n    this.scene.updateBox(box);\n    if (subset.getInstanceCount() === 0) {\n      console.log(\"Empty subset. Ignoring\");\n      return;\n    }\n    await this._builder.loadSubset(subset, settings);\n  }\n  async loadFilter(filterMode, filter, settings) {\n    const subset = this.getFullSet().filter(filterMode, filter);\n    await this.loadSubset(subset, settings);\n  }\n  clear() {\n    this._elementToObject.clear();\n    this._loadedInstances.clear();\n    this.scene.clear();\n    this._builder.clear();\n  }\n  dispose() {\n    this._builder.dispose();\n    this._onDispose.dispatch();\n    this._onDispose.clear();\n    this.scene.dispose();\n  }\n}\nfunction estimateBytesUsed(geometry) {\n  let mem = 0;\n  for (const name in geometry.attributes) {\n    const attr = geometry.getAttribute(name);\n    mem += attr.count * attr.itemSize * attr.array.BYTES_PER_ELEMENT;\n  }\n  const indices = geometry.getIndex();\n  mem += indices ? indices.count * indices.itemSize * indices.array.BYTES_PER_ELEMENT : 0;\n  return mem;\n}\nfunction getAverageBoundingBox(positions, thresholdSpan = 1e3, framingDistanceMultiplier = 2) {\n  if (positions.length === 0) {\n    return new Box3();\n  }\n  const { centroid, aabb } = calculateCentroidAndBoundingBox(positions);\n  const span = aabb.getSize(new Vector3()).length();\n  const center = span > thresholdSpan ? centroid : aabb.getCenter(new Vector3());\n  const avgDist = new Vector3();\n  for (const pos of positions) {\n    avgDist.set(\n      avgDist.x + Math.abs(pos.x - center.x),\n      avgDist.y + Math.abs(pos.y - center.y),\n      avgDist.z + Math.abs(pos.z - center.z)\n    );\n  }\n  const scaledDist = avgDist.multiplyScalar(framingDistanceMultiplier / positions.length);\n  return new Box3(\n    center.clone().sub(scaledDist),\n    center.clone().add(scaledDist)\n  );\n}\nfunction calculateCentroidAndBoundingBox(positions) {\n  const sum = new Vector3();\n  const aabb = new Box3();\n  for (const pos of positions) {\n    sum.add(pos);\n    aabb.expandByPoint(pos);\n  }\n  const centroid = sum.divideScalar(positions.length);\n  return { centroid, aabb };\n}\nclass Scene {\n  constructor(matrix) {\n    __publicField(this, \"_renderer\");\n    __publicField(this, \"_vim\");\n    __publicField(this, \"_matrix\", new Matrix4());\n    __publicField(this, \"insertables\", []);\n    __publicField(this, \"meshes\", []);\n    __publicField(this, \"_outlineCount\", 0);\n    __publicField(this, \"_boundingBox\");\n    __publicField(this, \"_averageBoundingBox\");\n    __publicField(this, \"_instanceToMeshes\", /* @__PURE__ */ new Map());\n    __publicField(this, \"_material\");\n    this._matrix = matrix;\n  }\n  setDirty() {\n    var _a2;\n    (_a2 = this.renderer) == null ? void 0 : _a2.notifySceneUpdate();\n  }\n  hasOutline() {\n    return this._outlineCount > 0;\n  }\n  addOutline() {\n    this._outlineCount++;\n    this.setDirty();\n  }\n  removeOutline() {\n    this._outlineCount--;\n    this.setDirty();\n  }\n  clearUpdateFlag() {\n    this.insertables.forEach((mesh) => mesh.clearUpdate());\n  }\n  getBoundingBox(target = new Box3()) {\n    return this._boundingBox ? target.copy(this._boundingBox) : void 0;\n  }\n  getAverageBoundingBox() {\n    if (this._averageBoundingBox) {\n      return this._averageBoundingBox;\n    }\n    const points = [];\n    this.meshes.forEach((m) => {\n      const subs = m.getSubmeshes();\n      subs.forEach((s) => {\n        const p = s.boundingBox.getCenter(new Vector3());\n        p.applyMatrix4(this._matrix);\n        points.push(p);\n      });\n    });\n    this._averageBoundingBox = getAverageBoundingBox(points);\n    return this._averageBoundingBox;\n  }\n  updateBox(box) {\n    var _a2, _b2, _c;\n    if (box !== void 0) {\n      const b = box.clone().applyMatrix4(this._matrix);\n      this._boundingBox = (_b2 = (_a2 = this._boundingBox) == null ? void 0 : _a2.union(b)) != null ? _b2 : b;\n      (_c = this.renderer) == null ? void 0 : _c.updateBox(this._boundingBox);\n      this._averageBoundingBox = void 0;\n    }\n  }\n  getMemory() {\n    return this.meshes.map((m) => estimateBytesUsed(m.mesh.geometry)).reduce((n1, n2) => n1 + n2, 0);\n  }\n  getMeshFromInstance(instance) {\n    return this._instanceToMeshes.get(instance);\n  }\n  getMeshesFromInstances(instances) {\n    if (!(instances == null ? void 0 : instances.length))\n      return;\n    const meshes = [];\n    for (let i = 0; i < instances.length; i++) {\n      const instance = instances[i];\n      if (instance < 0)\n        continue;\n      const submeshes = this.getMeshFromInstance(instance);\n      submeshes == null ? void 0 : submeshes.forEach((s) => meshes.push(s));\n    }\n    if (meshes.length === 0)\n      return;\n    return meshes;\n  }\n  get renderer() {\n    return this._renderer;\n  }\n  set renderer(value) {\n    this._renderer = value;\n  }\n  get vim() {\n    return this._vim;\n  }\n  set vim(value) {\n    this._vim = value;\n    this.meshes.forEach((m) => m.vim = value);\n  }\n  addSubmesh(submesh) {\n    var _a2;\n    const meshes = (_a2 = this._instanceToMeshes.get(submesh.instance)) != null ? _a2 : [];\n    meshes.push(submesh);\n    this._instanceToMeshes.set(submesh.instance, meshes);\n    this.setDirty();\n    if (this.vim) {\n      const obj = this.vim.getObjectFromInstance(submesh.instance);\n      obj._addMesh(submesh);\n    }\n  }\n  addMesh(mesh) {\n    var _a2;\n    (_a2 = this.renderer) == null ? void 0 : _a2.add(mesh.mesh);\n    mesh.vim = this.vim;\n    mesh.mesh.matrixAutoUpdate = false;\n    mesh.mesh.matrix.copy(this._matrix);\n    this.updateBox(mesh.boundingBox);\n    mesh.getSubmeshes().forEach((s) => this.addSubmesh(s));\n    mesh.setMaterial(this.material);\n    this.meshes.push(mesh);\n    this.setDirty();\n    return this;\n  }\n  merge(other) {\n    var _a2, _b2;\n    if (!other)\n      return this;\n    other.meshes.forEach((mesh) => this.meshes.push(mesh));\n    other._instanceToMeshes.forEach((meshes, instance) => {\n      var _a3;\n      const set = (_a3 = this._instanceToMeshes.get(instance)) != null ? _a3 : [];\n      meshes.forEach((m) => set.push(m));\n      this._instanceToMeshes.set(instance, set);\n    });\n    if (other._boundingBox) {\n      this._boundingBox = (_b2 = (_a2 = this._boundingBox) == null ? void 0 : _a2.union(other._boundingBox)) != null ? _b2 : other._boundingBox.clone();\n      this._averageBoundingBox = void 0;\n    }\n    this.setDirty();\n    return this;\n  }\n  get material() {\n    return this._material;\n  }\n  set material(value) {\n    if (this._material === value)\n      return;\n    this.setDirty();\n    this._material = value;\n    this.meshes.forEach((m) => m.setMaterial(value));\n  }\n  clear() {\n    var _a2, _b2;\n    (_a2 = this.renderer) == null ? void 0 : _a2.remove(this);\n    for (const m of this.meshes) {\n      m.mesh.geometry.dispose();\n    }\n    this.meshes.length = 0;\n    this._instanceToMeshes.clear();\n    (_b2 = this.renderer) == null ? void 0 : _b2.add(this);\n    this._boundingBox = void 0;\n    this._averageBoundingBox = void 0;\n  }\n  dispose() {\n    this.clear();\n    this._renderer = null;\n  }\n}\nclass Vimx {\n  constructor(vimx, header, scene, material) {\n    __publicField(this, \"vimx\");\n    __publicField(this, \"scene\");\n    __publicField(this, \"materials\");\n    __publicField(this, \"header\");\n    this.vimx = vimx;\n    this.header = header;\n    this.scene = scene;\n    this.materials = material;\n  }\n  static async fromRemote(vimx, downloadMeshes) {\n    if (downloadMeshes) {\n      await vimx.bfast.forceDownload();\n    }\n    const [header, scene, materials] = await Promise.all([\n      await vimx.getHeader(),\n      await vimx.getScene(),\n      await vimx.getMaterials()\n    ]);\n    return new Vimx(vimx, header, scene, materials);\n  }\n  getMesh(mesh) {\n    return this.vimx.getMesh(mesh);\n  }\n  abort() {\n    this.vimx.abort();\n  }\n}\nclass GeometrySubmesh {\n  constructor() {\n    __publicField(this, \"instance\");\n    __publicField(this, \"start\");\n    __publicField(this, \"end\");\n    __publicField(this, \"boundingBox\", new Box3());\n  }\n  expandBox(point) {\n    var _a2, _b2;\n    this.boundingBox = (_b2 = (_a2 = this.boundingBox) == null ? void 0 : _a2.expandByPoint(point)) != null ? _b2 : new Box3().set(point, point);\n  }\n}\nclass InsertableGeometry {\n  constructor(offsets, materials, transparent) {\n    __publicField(this, \"_scene\");\n    __publicField(this, \"materials\");\n    __publicField(this, \"offsets\");\n    __publicField(this, \"geometry\");\n    __publicField(this, \"submeshes\", []);\n    __publicField(this, \"boundingBox\");\n    __publicField(this, \"_computeBoundingBox\", false);\n    __publicField(this, \"_indexAttribute\");\n    __publicField(this, \"_vertexAttribute\");\n    __publicField(this, \"_colorAttribute\");\n    __publicField(this, \"_updateStartMesh\", 0);\n    __publicField(this, \"_updateEndMesh\", 0);\n    __publicField(this, \"_meshToUpdate\", /* @__PURE__ */ new Set());\n    this.offsets = offsets;\n    this.materials = materials;\n    this._indexAttribute = new Uint32BufferAttribute(\n      offsets.counts.indices,\n      1\n    );\n    this._vertexAttribute = new Float32BufferAttribute(\n      offsets.counts.vertices * dist$3.G3d.POSITION_SIZE,\n      dist$3.G3d.POSITION_SIZE\n    );\n    const colorSize = transparent ? 4 : 3;\n    this._colorAttribute = new Float32BufferAttribute(\n      offsets.counts.vertices * colorSize,\n      colorSize\n    );\n    this._indexAttribute.count = 0;\n    this._vertexAttribute.count = 0;\n    this._colorAttribute.count = 0;\n    this.geometry = new BufferGeometry();\n    this.geometry.setIndex(this._indexAttribute);\n    this.geometry.setAttribute(\"position\", this._vertexAttribute);\n    this.geometry.setAttribute(\"color\", this._colorAttribute);\n    this.boundingBox = offsets.subset.getBoundingBox();\n    if (this.boundingBox) {\n      this.geometry.boundingBox = this.boundingBox;\n      this.geometry.boundingSphere = new Sphere();\n      this.boundingBox.getBoundingSphere(this.geometry.boundingSphere);\n    } else {\n      this._computeBoundingBox = true;\n    }\n  }\n  get progress() {\n    return this._indexAttribute.count / this._indexAttribute.array.length;\n  }\n  insert(mesh, at) {\n    const added = [];\n    const section = this.offsets.section;\n    const indexStart = mesh.getIndexStart(section);\n    const indexEnd = mesh.getIndexEnd(section);\n    if (indexStart === indexEnd) {\n      this._meshToUpdate.add(at);\n      return added;\n    }\n    const matrix = new Matrix4();\n    const vector = new Vector3();\n    const vertexStart = mesh.getVertexStart(section);\n    const vertexEnd = mesh.getVertexEnd(section);\n    const vertexCount = vertexEnd - vertexStart;\n    const sectionOffset = mesh.getVertexStart(section);\n    const subStart = mesh.getSubmeshStart(section);\n    const subEnd = mesh.getSubmeshEnd(section);\n    const indexOffset = this.offsets.getIndexOffset(at);\n    const vertexOffset = this.offsets.getVertexOffset(at);\n    let indexOut = 0;\n    let vertexOut = 0;\n    let colorOut = 0;\n    const instanceCount = this.offsets.getMeshInstanceCount(at);\n    for (let instanceIndex = 0; instanceIndex < instanceCount; instanceIndex++) {\n      const instance = this.offsets.getMeshInstance(at, instanceIndex);\n      const arr1 = mesh.scene.getInstanceMatrix(instance);\n      matrix.fromArray(arr1);\n      const submesh = new GeometrySubmesh();\n      submesh.instance = mesh.scene.instanceNodes[instance];\n      submesh.start = indexOffset + indexOut;\n      const vertexMergeOffset = vertexCount * instanceIndex;\n      for (let index = indexStart; index < indexEnd; index++) {\n        this.setIndex(\n          indexOffset + indexOut,\n          vertexOffset + vertexMergeOffset + mesh.chunk.indices[index] - sectionOffset\n        );\n        indexOut++;\n      }\n      submesh.end = indexOffset + indexOut;\n      for (let vertex2 = vertexStart; vertex2 < vertexEnd; vertex2++) {\n        vector.fromArray(mesh.chunk.positions, vertex2 * dist$3.G3d.POSITION_SIZE);\n        vector.applyMatrix4(matrix);\n        this.setVertex(vertexOffset + vertexOut, vector);\n        vertexOut++;\n      }\n      for (let sub = subStart; sub < subEnd; sub++) {\n        const color = this.materials.getMaterialColor(\n          mesh.chunk.submeshMaterial[sub]\n        );\n        const vertexCount2 = mesh.getSubmeshVertexCount(sub);\n        for (let v = 0; v < vertexCount2; v++) {\n          this.setColor(vertexOffset + colorOut, color, 0.25);\n          colorOut++;\n        }\n      }\n      submesh.boundingBox.min.fromArray(mesh.scene.getInstanceMin(instance));\n      submesh.boundingBox.max.fromArray(mesh.scene.getInstanceMax(instance));\n      this.submeshes.push(submesh);\n      added.push(this.submeshes.length - 1);\n    }\n    this._meshToUpdate.add(at);\n    return added;\n  }\n  float32ArraysAreEqual(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (let i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n  insertFromG3d(g3d2, mesh) {\n    const added = [];\n    const meshG3dIndex = this.offsets.getSourceMesh(mesh);\n    const subStart = g3d2.getMeshSubmeshStart(meshG3dIndex, this.offsets.section);\n    const subEnd = g3d2.getMeshSubmeshEnd(meshG3dIndex, this.offsets.section);\n    if (subStart === subEnd) {\n      this._meshToUpdate.add(mesh);\n      return added;\n    }\n    const matrix = new Matrix4();\n    const vector = new Vector3();\n    const indexOffset = this.offsets.getIndexOffset(mesh);\n    const vertexOffset = this.offsets.getVertexOffset(mesh);\n    const vertexStart = g3d2.getMeshVertexStart(meshG3dIndex);\n    const vertexEnd = g3d2.getMeshVertexEnd(meshG3dIndex);\n    const vertexCount = vertexEnd - vertexStart;\n    let indexOut = 0;\n    let vertexOut = 0;\n    const instanceCount = this.offsets.getMeshInstanceCount(mesh);\n    for (let instance = 0; instance < instanceCount; instance++) {\n      const g3dInstance = this.offsets.getMeshInstance(mesh, instance);\n      matrix.fromArray(g3d2.getInstanceMatrix(g3dInstance));\n      const submesh = new GeometrySubmesh();\n      submesh.instance = g3d2.instanceNodes[g3dInstance];\n      submesh.start = indexOffset + indexOut;\n      const mergeOffset = instance * vertexCount;\n      for (let sub = subStart; sub < subEnd; sub++) {\n        const color = g3d2.getSubmeshColor(sub);\n        const indexStart = g3d2.getSubmeshIndexStart(sub);\n        const indexEnd = g3d2.getSubmeshIndexEnd(sub);\n        for (let index = indexStart; index < indexEnd; index++) {\n          const v = vertexOffset + mergeOffset + g3d2.indices[index];\n          this.setIndex(indexOffset + indexOut, v);\n          this.setColor(v, color, 0.25);\n          indexOut++;\n        }\n      }\n      for (let vertex2 = vertexStart; vertex2 < vertexEnd; vertex2++) {\n        vector.fromArray(g3d2.positions, vertex2 * dist$3.G3d.POSITION_SIZE);\n        vector.applyMatrix4(matrix);\n        this.setVertex(vertexOffset + vertexOut, vector);\n        submesh.expandBox(vector);\n        vertexOut++;\n      }\n      submesh.end = indexOffset + indexOut;\n      this.expandBox(submesh.boundingBox);\n      this.submeshes.push(submesh);\n      added.push(this.submeshes.length - 1);\n    }\n    this._meshToUpdate.add(mesh);\n    return added;\n  }\n  setIndex(index, value) {\n    this._indexAttribute.setX(index, value);\n  }\n  setVertex(index, vector) {\n    this._vertexAttribute.setXYZ(index, vector.x, vector.y, vector.z);\n  }\n  setColor(index, color, alpha) {\n    this._colorAttribute.setXYZ(index, color[0], color[1], color[2]);\n    if (this._colorAttribute.itemSize === 4) {\n      this._colorAttribute.setW(index, alpha);\n    }\n  }\n  expandBox(box) {\n    var _a2, _b2;\n    if (!box)\n      return;\n    this.boundingBox = (_b2 = (_a2 = this.boundingBox) == null ? void 0 : _a2.union(box)) != null ? _b2 : box.clone();\n  }\n  flushUpdate() {\n    this._updateStartMesh = this._updateEndMesh;\n  }\n  update() {\n    while (this._meshToUpdate.has(this._updateEndMesh)) {\n      this._meshToUpdate.delete(this._updateEndMesh);\n      this._updateEndMesh++;\n    }\n    if (this._updateStartMesh === this._updateEndMesh)\n      return;\n    const indexStart = this.offsets.getIndexOffset(this._updateStartMesh);\n    const indexEnd = this.offsets.getIndexOffset(this._updateEndMesh);\n    this._indexAttribute.updateRange.offset = indexStart;\n    this._indexAttribute.updateRange.count = indexEnd - indexStart;\n    this._indexAttribute.count = indexEnd;\n    this._indexAttribute.needsUpdate = true;\n    const vertexStart = this.offsets.getVertexOffset(this._updateStartMesh);\n    const vertexEnd = this.offsets.getVertexOffset(this._updateEndMesh);\n    const vSize = this._vertexAttribute.itemSize;\n    this._vertexAttribute.updateRange.offset = vertexStart * vSize;\n    this._vertexAttribute.updateRange.count = (vertexEnd - vertexStart) * vSize;\n    this._vertexAttribute.count = vertexEnd;\n    this._vertexAttribute.needsUpdate = true;\n    const cSize = this._colorAttribute.itemSize;\n    this._colorAttribute.updateRange.offset = vertexStart * cSize;\n    this._colorAttribute.updateRange.count = (vertexEnd - vertexStart) * cSize;\n    this._colorAttribute.count = vertexEnd;\n    this._colorAttribute.needsUpdate = true;\n    if (this._computeBoundingBox) {\n      this.geometry.computeBoundingBox();\n      this.geometry.computeBoundingSphere();\n    }\n  }\n}\nfunction createOpaque() {\n  return new StandardMaterial(createBasicOpaque());\n}\nfunction createTransparent() {\n  return new StandardMaterial(createBasicTransparent());\n}\nfunction createBasicOpaque() {\n  return new MeshPhongMaterial({\n    color: 13421772,\n    vertexColors: true,\n    flatShading: true,\n    side: DoubleSide,\n    shininess: 20\n  });\n}\nfunction createBasicTransparent() {\n  const mat = createBasicOpaque();\n  mat.transparent = true;\n  mat.shininess = 70;\n  return mat;\n}\nclass StandardMaterial {\n  constructor(material) {\n    __publicField(this, \"material\");\n    __publicField(this, \"uniforms\");\n    __publicField(this, \"_focusIntensity\", 0.5);\n    __publicField(this, \"_focusColor\", new Color(16777215));\n    __publicField(this, \"_sectionStrokeWitdh\", 0.01);\n    __publicField(this, \"_sectionStrokeFallof\", 0.75);\n    __publicField(this, \"_sectionStrokeColor\", new Color(16185078));\n    this.material = material;\n    this.patchShader(material);\n  }\n  get color() {\n    if (this.material instanceof MeshPhongMaterial) {\n      return this.material.color;\n    }\n    return new Color(16777215);\n  }\n  set color(color) {\n    this.material.color = color;\n  }\n  get focusIntensity() {\n    return this._focusIntensity;\n  }\n  set focusIntensity(value) {\n    this._focusIntensity = value;\n    if (this.uniforms) {\n      this.uniforms.focusIntensity.value = value;\n    }\n  }\n  get focusColor() {\n    return this._focusColor;\n  }\n  set focusColor(value) {\n    this._focusColor = value;\n    if (this.uniforms) {\n      this.uniforms.focusColor.value = value;\n    }\n  }\n  get sectionStrokeWitdh() {\n    return this._sectionStrokeWitdh;\n  }\n  set sectionStrokeWitdh(value) {\n    this._sectionStrokeWitdh = value;\n    if (this.uniforms) {\n      this.uniforms.sectionStrokeWitdh.value = value;\n    }\n  }\n  get sectionStrokeFallof() {\n    return this._sectionStrokeFallof;\n  }\n  set sectionStrokeFallof(value) {\n    this._sectionStrokeFallof = value;\n    if (this.uniforms) {\n      this.uniforms.sectionStrokeFallof.value = value;\n    }\n  }\n  get sectionStrokeColor() {\n    return this._sectionStrokeColor;\n  }\n  set sectionStrokeColor(value) {\n    this._sectionStrokeColor = value;\n    if (this.uniforms) {\n      this.uniforms.sectionStrokeColor.value = value;\n    }\n  }\n  get clippingPlanes() {\n    return this.material.clippingPlanes;\n  }\n  set clippingPlanes(value) {\n    this.material.clippingPlanes = value;\n  }\n  dispose() {\n    this.material.dispose();\n  }\n  patchShader(material) {\n    material.onBeforeCompile = (shader) => {\n      this.uniforms = shader.uniforms;\n      this.uniforms.focusIntensity = { value: this._focusIntensity };\n      this.uniforms.focusColor = { value: this._focusColor };\n      this.uniforms.sectionStrokeWidth = { value: this._sectionStrokeWitdh };\n      this.uniforms.sectionStrokeFalloff = { value: this._sectionStrokeFallof };\n      this.uniforms.sectionStrokeColor = { value: this._sectionStrokeColor };\n      shader.vertexShader = shader.vertexShader.replace(\n        \"#include <color_pars_vertex>\",\n        `\n        #include <color_pars_vertex>\n        \n        // COLORING\n\n        // attribute for color override\n        // merged meshes use it as vertex attribute\n        // instanced meshes use it as an instance attribute\n        attribute float colored;\n\n        // There seems to be an issue where setting mehs.instanceColor\n        // doesn't properly set USE_INSTANCING_COLOR\n        // so we always use it as a fix\n        #ifndef USE_INSTANCING_COLOR\n        attribute vec3 instanceColor;\n        #endif\n\n        // Passed to fragment to ignore phong model\n        varying float vColored;\n        \n        // VISIBILITY\n\n        // Instance or vertex attribute to hide objects\n        // Used as instance attribute for instanced mesh and as vertex attribute for merged meshes. \n        attribute float ignore; \n\n        // Passed to fragment to discard them\n        varying float vIgnore;\n\n        // FOCUS\n        // Instance or vertex attribute to higlight objects\n        // Used as instance attribute for instanced mesh and as vertex attribute for merged meshes. \n        attribute float focused; \n        varying float vHighlight;\n        `\n      ).replace(\n        \"#include <color_vertex>\",\n        `\n          // COLORING\n          vColor = color;\n          vColored = colored;\n\n          // colored == 1 -> instance color\n          // colored == 0 -> vertex color\n          #ifdef USE_INSTANCING\n            vColor.xyz = colored * instanceColor.xyz + (1.0f - colored) * color.xyz;\n          #endif\n\n          // VISIBILITY\n          vIgnore = ignore;\n          \n          // FOCUS\n          vHighlight = focused;\n        `\n      );\n      shader.fragmentShader = shader.fragmentShader.replace(\n        \"#include <clipping_planes_pars_fragment>\",\n        `\n        #include <clipping_planes_pars_fragment>\n        // VISIBILITY\n        varying float vIgnore;\n\n        // COLORING\n        varying float vColored;\n\n        // SECTION\n        uniform float sectionStrokeWidth;\n        uniform float sectionStrokeFalloff;\n        uniform vec3 sectionStrokeColor;\n\n        // FOCUS\n        varying float vHighlight;\n        uniform float focusIntensity;\n        uniform vec3 focusColor; \n        `\n      ).replace(\n        \"#include <output_fragment>\",\n        `\n          // VISIBILITY\n          if (vIgnore > 0.0f)\n            discard;\n         \n          // COLORING\n          // vColored == 1 -> Vertex Color * light \n          // vColored == 0 -> Phong Color \n          float d = length(outgoingLight);\n          gl_FragColor = vec4(vColored * vColor.xyz * d + (1.0f - vColored) * outgoingLight.xyz, diffuseColor.a);\n\n          // FOCUS\n          gl_FragColor = mix(gl_FragColor, vec4(focusColor,1.0f), vHighlight * focusIntensity);\n          \n          // STROKES WHERE GEOMETRY INTERSECTS CLIPPING PLANE\n          #if NUM_CLIPPING_PLANES > 0\n            vec4 strokePlane;\n            float strokeDot;\n            vec3 worldNormal;\n            vec3 worldPlane;\n            float worldDot;\n            float thick = pow(vFragDepth,sectionStrokeFalloff) * sectionStrokeWidth;\n            #pragma unroll_loop_start\n            for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n              strokePlane = clippingPlanes[ i ];\n              strokeDot = dot(vClipPosition, strokePlane.xyz);\n\n              // We don't want fully perpendicular surface to become colored.\n              worldNormal =  inverseTransformDirection(normal, viewMatrix);\n              worldPlane = inverseTransformDirection(strokePlane.xyz, viewMatrix);\n              worldDot = abs(dot(worldNormal, worldPlane));\n\n              if (strokeDot > strokePlane.w) discard;\n              if ((strokePlane.w - strokeDot) < thick) {\n                float strength = (strokePlane.w - strokeDot) * pow(1.0f - worldDot, 2.0f) / thick;\n                gl_FragColor = vec4(mix(gl_FragColor.xyz, sectionStrokeColor, strength), 1.0f);\n                return;\n              }\n            }\n            #pragma unroll_loop_end\n          #endif  \n        `\n      );\n    };\n  }\n}\nfunction createMaskMaterial() {\n  return new ShaderMaterial({\n    uniforms: {},\n    clipping: true,\n    vertexShader: `\n      #include <common>\n      #include <logdepthbuf_pars_vertex>\n      #include <clipping_planes_pars_vertex>\n      \n      // Used as instance attribute for instanced mesh and as vertex attribute for merged meshes. \n      attribute float selected;\n\n      varying float vKeep;\n\n      void main() {\n        #include <begin_vertex>\n        #include <project_vertex>\n        #include <clipping_planes_vertex>\n        #include <logdepthbuf_vertex>\n\n        // SELECTION\n        // selected \n        vKeep = selected;\n      }\n    `,\n    fragmentShader: `\n      #include <clipping_planes_pars_fragment>\n      varying float vKeep;\n\n      void main() {\n        #include <clipping_planes_fragment>\n        if(vKeep == 0.0f) discard;\n\n        gl_FragColor =  vec4(1.0f,1.0f,1.0f,1.0f);\n      }\n    `\n  });\n}\nfunction createIsolationMaterial() {\n  return new ShaderMaterial({\n    uniforms: {\n      opacity: { value: 0.1 },\n      fillColor: { value: new Vector3(0, 0, 0) }\n    },\n    vertexColors: true,\n    transparent: true,\n    clipping: true,\n    vertexShader: `\n\n      #include <common>\n      #include <logdepthbuf_pars_vertex>\n      #include <clipping_planes_pars_vertex>\n        \n      // VISIBILITY\n      // Instance or vertex attribute to hide objects\n      // Used as instance attribute for instanced mesh and as vertex attribute for merged meshes. \n      attribute float ignore;\n\n      // Passed to fragment to discard them\n      varying float vIgnore;\n      varying vec3 vPosition;\n\n\n      // COLORING\n      varying vec3 vColor;\n\n      // attribute for color override\n      // merged meshes use it as vertex attribute\n      // instanced meshes use it as an instance attribute\n      attribute float colored;\n\n      // There seems to be an issue where setting mehs.instanceColor\n      // doesn't properly set USE_INSTANCING_COLOR\n      // so we always use it as a fix\n      #ifndef USE_INSTANCING_COLOR\n        attribute vec3 instanceColor;\n      #endif\n\n      void main() {\n        #include <begin_vertex>\n        #include <project_vertex>\n        #include <clipping_planes_vertex>\n        #include <logdepthbuf_vertex>\n\n        // VISIBILITY\n        // Set frag ignore from instance or vertex attribute\n        vIgnore = ignore;\n\n        // COLORING\n        vColor = color.xyz;\n\n        // colored == 1 -> instance color\n        // colored == 0 -> vertex color\n        #ifdef USE_INSTANCING\n          vColor.xyz = colored * instanceColor.xyz + (1.0f - colored) * color.xyz;\n        #endif\n\n\n        // ORDERING\n        if(vIgnore > 0.0f){\n          gl_Position.z = 1.0f;\n        }else{\n          gl_Position.z = -1.0f;\n        }\n        \n        // LIGHTING\n        vPosition = vec3(mvPosition ) / mvPosition .w;\n      }\n      `,\n    fragmentShader: `\n      #include <clipping_planes_pars_fragment>\n      varying float vIgnore;\n      uniform float opacity;\n      uniform vec3 fillColor;\n      varying vec3 vPosition;\n      varying vec3 vColor;\n\n      void main() {\n        #include <clipping_planes_fragment>\n\n        if (vIgnore > 0.0f){\n          gl_FragColor = vec4(fillColor, opacity);\n        }\n        else{ \n          gl_FragColor = vec4(vColor.x, vColor.y, vColor.z, 1.0f);\n\n          // LIGHTING\n          vec3 normal = normalize( cross(dFdx(vPosition), dFdy(vPosition)) );\n          float light = dot(normal, normalize(vec3(1.4142f, 1.732f, 2.2360f)));\n          light = 0.5 + (light *0.5);\n          gl_FragColor.xyz *= light;\n        }\n      }\n      `\n  });\n}\nclass OutlineMaterial {\n  constructor(options) {\n    __publicField(this, \"material\");\n    __publicField(this, \"_camera\");\n    __publicField(this, \"_resolution\");\n    var _a2;\n    this.material = createOutlineMaterial();\n    this._resolution = (_a2 = options == null ? void 0 : options.resolution) != null ? _a2 : new Vector2(1, 1);\n    this.resolution = this._resolution;\n    if (options == null ? void 0 : options.sceneBuffer) {\n      this.sceneBuffer = options.sceneBuffer;\n    }\n    this.camera = options == null ? void 0 : options.camera;\n  }\n  get resolution() {\n    return this._resolution;\n  }\n  set resolution(value) {\n    var _a2, _b2;\n    this.material.uniforms.screenSize.value.set(\n      (_a2 = value == null ? void 0 : value.x) != null ? _a2 : 1,\n      (_b2 = value == null ? void 0 : value.y) != null ? _b2 : 1,\n      1 / (value == null ? void 0 : value.x),\n      1 / (value == null ? void 0 : value.y)\n    );\n    this._resolution = value;\n  }\n  get camera() {\n    return this._camera;\n  }\n  set camera(value) {\n    var _a2, _b2;\n    this.material.uniforms.cameraNear.value = (_a2 = value == null ? void 0 : value.near) != null ? _a2 : 1;\n    this.material.uniforms.cameraFar.value = (_b2 = value == null ? void 0 : value.far) != null ? _b2 : 1e3;\n    this._camera = value;\n  }\n  get strokeBlur() {\n    return this.material.uniforms.strokeBlur.value;\n  }\n  set strokeBlur(value) {\n    this.material.uniforms.strokeBlur.value = value;\n  }\n  get strokeBias() {\n    return this.material.uniforms.strokeBias.value;\n  }\n  set strokeBias(value) {\n    this.material.uniforms.strokeBias.value = value;\n  }\n  get strokeMultiplier() {\n    return this.material.uniforms.strokeMultiplier.value;\n  }\n  set strokeMultiplier(value) {\n    this.material.uniforms.strokeMultiplier.value = value;\n  }\n  get color() {\n    return this.material.uniforms.outlineColor.value;\n  }\n  set color(value) {\n    this.material.uniforms.outlineColor.value.set(value);\n  }\n  get sceneBuffer() {\n    return this.material.uniforms.sceneBuffer.value;\n  }\n  set sceneBuffer(value) {\n    this.material.uniforms.sceneBuffer.value = value;\n  }\n  get depthBuffer() {\n    return this.material.uniforms.depthBuffer.value;\n  }\n  set depthBuffer(value) {\n    this.material.uniforms.depthBuffer.value = value;\n  }\n  dispose() {\n    this.material.dispose();\n  }\n}\nfunction createOutlineMaterial() {\n  return new ShaderMaterial({\n    uniforms: {\n      sceneBuffer: { value: null },\n      depthBuffer: { value: null },\n      cameraNear: { value: 1 },\n      cameraFar: { value: 1e3 },\n      screenSize: {\n        value: new Vector4(1, 1, 1, 1)\n      },\n      outlineColor: { value: new Color(16777215) },\n      strokeMultiplier: { value: 2 },\n      strokeBias: { value: 2 },\n      strokeBlur: { value: 3 }\n    },\n    vertexShader: `\n      varying vec2 vUv;\n      void main() {\n        vUv = uv;\n        gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n      }\n      `,\n    fragmentShader: `\n      #include <packing>\n      // The above include imports \"perspectiveDepthToViewZ\"\n      // and other GLSL functions from ThreeJS we need for reading depth.\n      uniform sampler2D depthBuffer;\n      uniform float cameraNear;\n      uniform float cameraFar;\n      uniform vec4 screenSize;\n      uniform vec3 outlineColor;\n      uniform float strokeMultiplier;\n      uniform float strokeBias;\n      uniform int strokeBlur;\n  \n      varying vec2 vUv;\n  \n      // Helper functions for reading from depth buffer.\n      float readDepth (sampler2D depthSampler, vec2 coord) {\n        float fragCoordZ = texture2D(depthSampler, coord).x;\n        float viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n        return viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n      }\n      float getLinearDepth(vec3 pos) {\n        return -(viewMatrix * vec4(pos, 1.0)).z;\n      }\n  \n      float getLinearScreenDepth(sampler2D map) {\n          vec2 uv = gl_FragCoord.xy * screenSize.zw;\n          return readDepth(map,uv);\n      }\n      // Helper functions for reading normals and depth of neighboring pixels.\n      float getPixelDepth(int x, int y) {\n        // screenSize.zw is pixel size \n        // vUv is current position\n        return readDepth(depthBuffer, vUv + screenSize.zw * vec2(x, y));\n      }\n  \n      float saturate(float num) {\n        return clamp(num, 0.0, 1.0);\n      }\n  \n      void main() {\n        float depth = getPixelDepth(0, 0);\n  \n        // Get the difference between depth of neighboring pixels and current.\n        float depthDiff = 0.0;\n        int start = -strokeBlur / 2;\n        for(int i=0; i < strokeBlur; i ++){\n          for(int j=0; j < strokeBlur; j ++){\n            depthDiff += abs(depth - getPixelDepth(start +i, start + j));\n          }\n        }\n  \n        depthDiff = depthDiff / (float(strokeBlur*strokeBlur) -1.0); \n        \n        depthDiff = depthDiff * strokeMultiplier;\n        depthDiff = saturate(depthDiff);\n        depthDiff = pow(depthDiff, strokeBias);\n  \n        float outline = depthDiff;\n  \n        // Combine outline with scene color.\n        vec4 outlineColor = vec4(outlineColor, 1.0f);\n        gl_FragColor = vec4(mix(vec4(0.0,0.0,0.0,0.0), outlineColor, outline));\n      }\n      `\n  });\n}\nclass MergeMaterial {\n  constructor() {\n    __publicField(this, \"material\");\n    this.material = createMergeMaterial();\n  }\n  get color() {\n    return this.material.uniforms.color.value;\n  }\n  set color(value) {\n    this.material.uniforms.color.value.copy(value);\n    this.material.uniformsNeedUpdate = true;\n  }\n  get sourceA() {\n    return this.material.uniforms.sourceA.value;\n  }\n  set sourceA(value) {\n    this.material.uniforms.sourceA.value = value;\n    this.material.uniformsNeedUpdate = true;\n  }\n  get sourceB() {\n    return this.material.uniforms.sourceB.value;\n  }\n  set sourceB(value) {\n    this.material.uniforms.sourceB.value = value;\n    this.material.uniformsNeedUpdate = true;\n  }\n}\nfunction createMergeMaterial() {\n  return new ShaderMaterial({\n    uniforms: {\n      sourceA: { value: null },\n      sourceB: { value: null },\n      color: { value: new Color(16777215) }\n    },\n    vertexShader: `\n       varying vec2 vUv;\n       void main() {\n         vUv = uv;\n         gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n       }\n       `,\n    fragmentShader: `\n       uniform vec3 color;\n       uniform sampler2D sourceA;\n       uniform sampler2D sourceB;\n       varying vec2 vUv;\n       \n       void main() {\n        vec4 A = texture2D(sourceA, vUv);\n        vec4 B = texture2D(sourceB, vUv);\n\n        gl_FragColor = vec4(mix(A.xyz, color, B.x),1.0f);\n       }\n       `\n  });\n}\nfunction createSimpleMaterial() {\n  return new ShaderMaterial({\n    uniforms: {\n      opacity: { value: 0.1 },\n      fillColor: { value: new Vector3(0, 0, 0) }\n    },\n    vertexColors: true,\n    clipping: true,\n    vertexShader: `\n\n      #include <common>\n      #include <logdepthbuf_pars_vertex>\n      #include <clipping_planes_pars_vertex>\n        \n      // VISIBILITY\n      // Instance or vertex attribute to hide objects\n      // Used as instance attribute for instanced mesh and as vertex attribute for merged meshes. \n      attribute float ignore;\n\n      // Passed to fragment to discard them\n      varying float vIgnore;\n      varying vec3 vPosition;\n\n\n      // COLORING\n      varying vec3 vColor;\n\n      // attribute for color override\n      // merged meshes use it as vertex attribute\n      // instanced meshes use it as an instance attribute\n      attribute float colored;\n\n      // There seems to be an issue where setting mehs.instanceColor\n      // doesn't properly set USE_INSTANCING_COLOR\n      // so we always use it as a fix\n      #ifndef USE_INSTANCING_COLOR\n        attribute vec3 instanceColor;\n      #endif\n\n      void main() {\n        #include <begin_vertex>\n        #include <project_vertex>\n        #include <clipping_planes_vertex>\n        #include <logdepthbuf_vertex>\n\n        // VISIBILITY\n        // Set frag ignore from instance or vertex attribute\n        vIgnore = ignore;\n\n        // COLORING\n        vColor = color.xyz;\n\n        // colored == 1 -> instance color\n        // colored == 0 -> vertex color\n        #ifdef USE_INSTANCING\n          vColor.xyz = colored * instanceColor.xyz + (1.0f - colored) * color.xyz;\n        #endif\n\n        gl_Position.z = -10.0f;\n        \n        // LIGHTING\n        vPosition = vec3(mvPosition ) / mvPosition .w;\n      }\n      `,\n    fragmentShader: `\n      #include <clipping_planes_pars_fragment>\n      varying float vIgnore;\n      varying vec3 vPosition;\n      varying vec3 vColor;\n\n      void main() {\n        #include <clipping_planes_fragment>\n\n        if (vIgnore > 0.0f){\n          discard;\n        }\n        else{ \n          gl_FragColor = vec4(vColor.x, vColor.y, vColor.z, 1.0f);\n\n          // LIGHTING\n          vec3 normal = normalize( cross(dFdx(vPosition), dFdy(vPosition)) );\n          float light = dot(normal, normalize(vec3(1.4142f, 1.732f, 2.2360f)));\n          light = 0.5 + (light *0.5);\n          gl_FragColor.xyz *= light;\n        }\n      }\n      `\n  });\n}\nclass SkyboxMaterial extends ShaderMaterial {\n  get skyColor() {\n    return this.uniforms.skyColor.value;\n  }\n  set skyColor(value) {\n    this.uniforms.skyColor.value = value;\n    this.uniformsNeedUpdate = true;\n  }\n  get groundColor() {\n    return this.uniforms.groundColor.value;\n  }\n  set groundColor(value) {\n    this.uniforms.groundColor.value = value;\n    this.uniformsNeedUpdate = true;\n  }\n  get sharpness() {\n    return this.uniforms.sharpness.value;\n  }\n  set sharpness(value) {\n    this.uniforms.sharpness.value = value;\n    this.uniformsNeedUpdate = true;\n  }\n  constructor(skyColor = new Color(0.68, 0.85, 0.9), groundColor = new Color(0.8, 0.7, 0.5), sharpness = 2) {\n    super({\n      uniforms: {\n        skyColor: { value: skyColor },\n        groundColor: { value: groundColor },\n        sharpness: { value: sharpness }\n      },\n      vertexShader: `\n        varying vec3 vPosition;\n        varying vec3 vCameraPosition;\n\n        void main() {\n          // Compute vertex position\n          vec4 mvPosition = modelViewMatrix * vec4(position, 1.0 );\n          gl_Position = projectionMatrix * mvPosition;\n\n          // Set z to camera.far so that the skybox is always rendered behind everything else\n          gl_Position.z = gl_Position.w;\n\n          // Pass the vertex world position to the fragment shader\n          vPosition = (modelMatrix * vec4(position, 1.0)).xyz;\n\n          // Pass the camera position to the fragment shader\n          mat4 inverseViewMatrix = inverse(viewMatrix);\n          vCameraPosition = (inverseViewMatrix * vec4(0.0, 0.0, 0.0, 1.0)).xyz;\n        }\n        `,\n      fragmentShader: `\n        uniform vec3 skyColor;\n        uniform vec3 groundColor;\n        uniform float sharpness;\n\n        varying vec3 vPosition;\n        varying vec3 vCameraPosition;\n\n        void main() {\n          // Define the up vector\n          vec3 up = vec3(0.0, 1.0, 0.0);\n\n          // Calculate the direction from the pixel to the camera\n          vec3 directionToCamera = normalize(vCameraPosition - vPosition);\n\n          // Calculate the dot product between the normal and the up vector\n          float dotProduct = dot(directionToCamera, up);\n\n          // Normalize the dot product to be between 0 and 1\n          float t = (dotProduct + 1.0) / 2.0;\n\n          // Apply a power function to create a sharper transition\n          t = pow(t, sharpness);\n\n          // Interpolate between colors\n          vec3 pastelSkyBlue = vec3(0.68, 0.85, 0.9); // Light sky blue pastel\n          vec3 pastelEarthyBrown = vec3(0.8, 0.7, 0.5); // Light earthy brown pastel\n          vec3 color = mix(skyColor, groundColor, t);\n\n          // Output the final color\n          gl_FragColor = vec4(color, 1.0);\n        }\n        `\n    });\n  }\n}\nconst _ViewerMaterials = class {\n  constructor(opaque, transparent, simple, wireframe, isolation, mask, outline, merge, skyBox) {\n    __publicField(this, \"opaque\");\n    __publicField(this, \"transparent\");\n    __publicField(this, \"simple\");\n    __publicField(this, \"wireframe\");\n    __publicField(this, \"isolation\");\n    __publicField(this, \"mask\");\n    __publicField(this, \"outline\");\n    __publicField(this, \"skyBox\");\n    __publicField(this, \"merge\");\n    __publicField(this, \"_clippingPlanes\");\n    __publicField(this, \"_sectionStrokeWitdh\", 0.01);\n    __publicField(this, \"_sectionStrokeFallof\", 0.75);\n    __publicField(this, \"_sectionStrokeColor\", new Color(16185078));\n    __publicField(this, \"_focusIntensity\", 0.75);\n    __publicField(this, \"_focusColor\", new Color(16777215));\n    __publicField(this, \"_onUpdate\", new dist$2.SignalDispatcher());\n    this.opaque = opaque != null ? opaque : createOpaque();\n    this.transparent = transparent != null ? transparent : createTransparent();\n    this.simple = simple != null ? simple : createSimpleMaterial();\n    this.wireframe = wireframe != null ? wireframe : createWireframe();\n    this.isolation = isolation != null ? isolation : createIsolationMaterial();\n    this.mask = mask != null ? mask : createMaskMaterial();\n    this.outline = outline != null ? outline : new OutlineMaterial();\n    this.merge = merge != null ? merge : new MergeMaterial();\n    this.skyBox = skyBox != null ? skyBox : new SkyboxMaterial();\n  }\n  static createInstance(instance) {\n    this.instance = instance;\n  }\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new _ViewerMaterials();\n    }\n    return this.instance;\n  }\n  applySettings(settings) {\n    this.opaque.color = settings.materials.standard.color;\n    this.transparent.color = settings.materials.standard.color;\n    this.isolationOpacity = settings.materials.isolation.opacity;\n    this.isolationColor = settings.materials.isolation.color;\n    this.wireframeColor = settings.materials.highlight.color;\n    this.wireframeOpacity = settings.materials.highlight.opacity;\n    this.sectionStrokeWitdh = settings.materials.section.strokeWidth;\n    this.sectionStrokeFallof = settings.materials.section.strokeFalloff;\n    this.sectionStrokeColor = settings.materials.section.strokeColor;\n    this.outlineIntensity = settings.materials.outline.intensity;\n    this.outlineFalloff = settings.materials.outline.falloff;\n    this.outlineBlur = settings.materials.outline.blur;\n    this.outlineColor = settings.materials.outline.color;\n  }\n  get onUpdate() {\n    return this._onUpdate.asEvent();\n  }\n  get modelColor() {\n    return this.opaque.color;\n  }\n  set modelColor(color) {\n    this.opaque.color = color;\n    this.transparent.color = color;\n    this._onUpdate.dispatch();\n  }\n  get isolationOpacity() {\n    return this.isolation.opacity;\n  }\n  set isolationOpacity(opacity) {\n    const mat = this.isolation;\n    mat.uniforms.opacity.value = opacity;\n    mat.uniformsNeedUpdate = true;\n    this._onUpdate.dispatch();\n  }\n  get isolationColor() {\n    const mat = this.isolation;\n    return mat.uniforms.fillColor.value;\n  }\n  set isolationColor(color) {\n    const mat = this.isolation;\n    mat.uniforms.fillColor.value = color;\n    mat.uniformsNeedUpdate = true;\n    this._onUpdate.dispatch();\n  }\n  get focusIntensity() {\n    return this._focusIntensity;\n  }\n  set focusIntensity(value) {\n    if (this._focusIntensity === value)\n      return;\n    this._focusIntensity = value;\n    this.opaque.focusIntensity = value;\n    this.transparent.focusIntensity = value;\n    this._onUpdate.dispatch();\n  }\n  get focusColor() {\n    return this._focusColor;\n  }\n  set focusColor(value) {\n    if (this._focusColor === value)\n      return;\n    this._focusColor = value;\n    this.opaque.focusColor = value;\n    this.transparent.focusColor = value;\n    this._onUpdate.dispatch();\n  }\n  get wireframeColor() {\n    return this.wireframe.color;\n  }\n  set wireframeColor(value) {\n    if (this.wireframe.color === value)\n      return;\n    this.wireframe.color = value;\n    this._onUpdate.dispatch();\n  }\n  get wireframeOpacity() {\n    return this.wireframe.opacity;\n  }\n  set wireframeOpacity(value) {\n    if (this.wireframe.opacity === value)\n      return;\n    this.wireframe.opacity = value;\n    this._onUpdate.dispatch();\n  }\n  get clippingPlanes() {\n    return this._clippingPlanes;\n  }\n  set clippingPlanes(value) {\n    this._clippingPlanes = value;\n    this.opaque.clippingPlanes = value != null ? value : null;\n    this.transparent.clippingPlanes = value != null ? value : null;\n    this.wireframe.clippingPlanes = value != null ? value : null;\n    this.isolation.clippingPlanes = value != null ? value : null;\n    this.mask.clippingPlanes = value != null ? value : null;\n    this._onUpdate.dispatch();\n  }\n  get sectionStrokeWitdh() {\n    return this._sectionStrokeWitdh;\n  }\n  set sectionStrokeWitdh(value) {\n    if (this._sectionStrokeWitdh === value)\n      return;\n    this._sectionStrokeWitdh = value;\n    this.opaque.sectionStrokeWitdh = value;\n    this.transparent.sectionStrokeWitdh = value;\n    this._onUpdate.dispatch();\n  }\n  get sectionStrokeFallof() {\n    return this._sectionStrokeFallof;\n  }\n  set sectionStrokeFallof(value) {\n    if (this._sectionStrokeFallof === value)\n      return;\n    this._sectionStrokeFallof = value;\n    this.opaque.sectionStrokeFallof = value;\n    this.transparent.sectionStrokeFallof = value;\n    this._onUpdate.dispatch();\n  }\n  get sectionStrokeColor() {\n    return this._sectionStrokeColor;\n  }\n  set sectionStrokeColor(value) {\n    if (this._sectionStrokeColor === value)\n      return;\n    this._sectionStrokeColor = value;\n    this.opaque.sectionStrokeColor = value;\n    this.transparent.sectionStrokeColor = value;\n    this._onUpdate.dispatch();\n  }\n  get outlineColor() {\n    return this.merge.color;\n  }\n  set outlineColor(value) {\n    if (this.merge.color === value)\n      return;\n    this.merge.color = value;\n    this._onUpdate.dispatch();\n  }\n  get outlineBlur() {\n    return this.outline.strokeBlur;\n  }\n  set outlineBlur(value) {\n    if (this.outline.strokeBlur === value)\n      return;\n    this.outline.strokeBlur = value;\n    this._onUpdate.dispatch();\n  }\n  get outlineFalloff() {\n    return this.outline.strokeBias;\n  }\n  set outlineFalloff(value) {\n    if (this.outline.strokeBias === value)\n      return;\n    this.outline.strokeBias = value;\n    this._onUpdate.dispatch();\n  }\n  get outlineIntensity() {\n    return this.outline.strokeMultiplier;\n  }\n  set outlineIntensity(value) {\n    if (this.outline.strokeMultiplier === value)\n      return;\n    this.outline.strokeMultiplier = value;\n    this._onUpdate.dispatch();\n  }\n  get skyboxSkyColor() {\n    return this.skyBox.skyColor;\n  }\n  set skyboxSkyColor(value) {\n    this.skyBox.skyColor = value;\n    this._onUpdate.dispatch();\n  }\n  get skyboxGroundColor() {\n    return this.skyBox.groundColor;\n  }\n  set skyboxGroundColor(value) {\n    this.skyBox.groundColor = value;\n    this._onUpdate.dispatch();\n  }\n  get skyboxSharpness() {\n    return this.skyBox.sharpness;\n  }\n  set skyboxSharpness(value) {\n    this.skyBox.sharpness = value;\n    this._onUpdate.dispatch();\n  }\n  dispose() {\n    this.opaque.dispose();\n    this.transparent.dispose();\n    this.wireframe.dispose();\n    this.isolation.dispose();\n    this.mask.dispose();\n    this.outline.dispose();\n  }\n};\nlet ViewerMaterials = _ViewerMaterials;\n__publicField(ViewerMaterials, \"instance\");\nfunction createWireframe() {\n  const material = new LineBasicMaterial({\n    depthTest: false,\n    opacity: 1,\n    color: new Color(255),\n    transparent: true\n  });\n  return material;\n}\nclass InsertableMesh {\n  constructor(offsets, materials, transparent) {\n    __publicField(this, \"offsets\");\n    __publicField(this, \"mesh\");\n    __publicField(this, \"vim\");\n    __publicField(this, \"transparent\");\n    __publicField(this, \"ignoreSceneMaterial\");\n    __publicField(this, \"_material\");\n    __publicField(this, \"geometry\");\n    this.offsets = offsets;\n    this.transparent = transparent;\n    this.geometry = new InsertableGeometry(offsets, materials, transparent);\n    this._material = transparent ? ViewerMaterials.getInstance().transparent.material : ViewerMaterials.getInstance().opaque.material;\n    this.mesh = new Mesh(this.geometry.geometry, this._material);\n    this.mesh.userData.vim = this;\n  }\n  get merged() {\n    return true;\n  }\n  get boundingBox() {\n    return this.geometry.boundingBox;\n  }\n  get progress() {\n    return this.geometry.progress;\n  }\n  insert(g3d2, mesh) {\n    const added = this.geometry.insert(g3d2, mesh);\n    if (!this.vim) {\n      return;\n    }\n    for (const i of added) {\n      this.vim.scene.addSubmesh(new InsertableSubmesh(this, i));\n    }\n  }\n  insertFromVim(g3d2, mesh) {\n    this.geometry.insertFromG3d(g3d2, mesh);\n  }\n  update() {\n    this.geometry.update();\n  }\n  clearUpdate() {\n    this.geometry.flushUpdate();\n  }\n  getSubmeshFromFace(faceIndex) {\n    const hitIndex = faceIndex * 3;\n    for (const [instance, submesh] of this.geometry.submeshes.entries()) {\n      if (hitIndex >= submesh.start && hitIndex < submesh.end) {\n        return new InsertableSubmesh(this, instance);\n      }\n    }\n  }\n  getSubmeshes() {\n    const submeshes = new Array(\n      this.geometry.submeshes.length\n    );\n    for (let i = 0; i < submeshes.length; i++) {\n      submeshes[i] = new InsertableSubmesh(this, i);\n    }\n    return submeshes;\n  }\n  getSubmesh(index) {\n    return new InsertableSubmesh(this, index);\n  }\n  setMaterial(value) {\n    if (this._material === value)\n      return;\n    if (this.ignoreSceneMaterial)\n      return;\n    if (value) {\n      if (!this._material) {\n        this._material = this.mesh.material;\n      }\n      this.mesh.material = value;\n    } else {\n      if (this._material) {\n        this.mesh.material = this._material;\n        this._material = void 0;\n      }\n    }\n  }\n}\nclass InstancedSubmesh {\n  constructor(mesh, index) {\n    __publicField(this, \"mesh\");\n    __publicField(this, \"index\");\n    this.mesh = mesh;\n    this.index = index;\n  }\n  equals(other) {\n    return this.mesh === other.mesh && this.index === other.index;\n  }\n  get three() {\n    return this.mesh.mesh;\n  }\n  get merged() {\n    return false;\n  }\n  get instance() {\n    return this.mesh.bimInstances[this.index];\n  }\n  get boundingBox() {\n    return this.mesh.boxes[this.index];\n  }\n  get object() {\n    return this.mesh.vim.getObjectFromInstance(this.instance);\n  }\n}\nclass InstancedMesh {\n  constructor(g3d2, mesh, instances) {\n    __publicField(this, \"g3dMesh\");\n    __publicField(this, \"vim\");\n    __publicField(this, \"mesh\");\n    __publicField(this, \"bimInstances\");\n    __publicField(this, \"meshInstances\");\n    __publicField(this, \"boundingBox\");\n    __publicField(this, \"boxes\");\n    __publicField(this, \"ignoreSceneMaterial\");\n    __publicField(this, \"_material\");\n    this.g3dMesh = g3d2;\n    this.mesh = mesh;\n    this.mesh.userData.vim = this;\n    this.bimInstances = g3d2 instanceof dist$3.G3dMesh ? instances.map((i) => g3d2.scene.instanceNodes[i]) : instances;\n    this.meshInstances = instances;\n    this.boxes = g3d2 instanceof dist$3.G3dMesh ? this.importBoundingBoxes() : this.computeBoundingBoxes();\n    this.boundingBox = this.computeBoundingBox(this.boxes);\n  }\n  get merged() {\n    return false;\n  }\n  getSubMesh(index) {\n    return new InstancedSubmesh(this, index);\n  }\n  getSubmeshes() {\n    const submeshes = new Array(this.bimInstances.length);\n    for (let i = 0; i < this.bimInstances.length; i++) {\n      submeshes[i] = new InstancedSubmesh(this, i);\n    }\n    return submeshes;\n  }\n  setMaterial(value) {\n    if (this._material === value)\n      return;\n    if (this.ignoreSceneMaterial)\n      return;\n    if (value) {\n      if (!this._material) {\n        this._material = this.mesh.material;\n      }\n      this.mesh.material = value;\n    } else {\n      if (this._material) {\n        this.mesh.material = this._material;\n        this._material = void 0;\n      }\n    }\n  }\n  computeBoundingBoxes() {\n    this.mesh.geometry.computeBoundingBox();\n    const boxes = new Array(this.mesh.count);\n    const matrix = new Matrix4();\n    for (let i = 0; i < this.mesh.count; i++) {\n      this.mesh.getMatrixAt(i, matrix);\n      boxes[i] = this.mesh.geometry.boundingBox.clone().applyMatrix4(matrix);\n    }\n    return boxes;\n  }\n  importBoundingBoxes() {\n    if (this.g3dMesh instanceof dist$3.G3d)\n      throw new Error(\"Wrong type\");\n    const boxes = new Array(this.meshInstances.length);\n    for (let i = 0; i < this.meshInstances.length; i++) {\n      const box = new Box3();\n      const instance = this.meshInstances[i];\n      box.min.fromArray(this.g3dMesh.scene.getInstanceMin(instance));\n      box.max.fromArray(this.g3dMesh.scene.getInstanceMax(instance));\n      boxes[i] = box;\n    }\n    return boxes;\n  }\n  computeBoundingBox(boxes) {\n    const box = boxes[0].clone();\n    for (let i = 1; i < boxes.length; i++) {\n      box.union(boxes[i]);\n    }\n    return box;\n  }\n}\nclass InstancedMeshFactory {\n  constructor(materials) {\n    __publicField(this, \"materials\");\n    this.materials = materials;\n  }\n  createTransparent(mesh, instances) {\n    return this.createFromVimx(mesh, instances, \"transparent\", true);\n  }\n  createOpaque(mesh, instances) {\n    return this.createFromVimx(mesh, instances, \"opaque\", false);\n  }\n  createOpaqueFromVim(g3d2, mesh, instances) {\n    return this.createFromVim(g3d2, mesh, instances, \"opaque\", false);\n  }\n  createTransparentFromVim(g3d2, mesh, instances) {\n    return this.createFromVim(g3d2, mesh, instances, \"transparent\", true);\n  }\n  createFromVimx(mesh, instances, section, transparent) {\n    if (mesh.getIndexCount(section) <= 1) {\n      return void 0;\n    }\n    const geometry = this.createGeometry(\n      this.computeIndices(mesh, section),\n      this.computeVertices(mesh, section),\n      this.computeColors(mesh, section, transparent ? 4 : 3)\n    );\n    const material = transparent ? ViewerMaterials.getInstance().transparent : ViewerMaterials.getInstance().opaque;\n    const threeMesh = new InstancedMesh$1(\n      geometry,\n      material.material,\n      instances.length\n    );\n    this.setMatricesFromVimx(threeMesh, mesh.scene, instances);\n    const result = new InstancedMesh(mesh, threeMesh, instances);\n    return result;\n  }\n  createFromVim(g3d2, mesh, instances, section, transparent) {\n    var _a2;\n    const geometry = Geometry.createGeometryFromMesh(\n      g3d2,\n      mesh,\n      section,\n      transparent\n    );\n    const material = transparent ? ViewerMaterials.getInstance().transparent : ViewerMaterials.getInstance().opaque;\n    const threeMesh = new InstancedMesh$1(\n      geometry,\n      material.material,\n      (_a2 = instances == null ? void 0 : instances.length) != null ? _a2 : g3d2.getMeshInstanceCount(mesh)\n    );\n    this.setMatricesFromVimx(threeMesh, g3d2, instances);\n    const result = new InstancedMesh(g3d2, threeMesh, instances);\n    return result;\n  }\n  createGeometry(indices, positions, colors) {\n    const geometry = new BufferGeometry();\n    geometry.setIndex(indices);\n    geometry.setAttribute(\"position\", positions);\n    geometry.setAttribute(\"color\", colors);\n    return geometry;\n  }\n  computeIndices(mesh, section) {\n    const indexStart = mesh.getIndexStart(section);\n    const indexCount = mesh.getIndexCount(section);\n    const vertexOffset = mesh.getVertexStart(section);\n    const indices = new Uint32Array(indexCount);\n    for (let i = 0; i < indexCount; i++) {\n      indices[i] = mesh.chunk.indices[indexStart + i] - vertexOffset;\n    }\n    return new Uint32BufferAttribute(indices, 1);\n  }\n  computeVertices(mesh, section) {\n    const vertexStart = mesh.getVertexStart(section);\n    const vertexEnd = mesh.getVertexEnd(section);\n    const vertices = mesh.chunk.positions.subarray(\n      vertexStart * dist$3.G3d.POSITION_SIZE,\n      vertexEnd * dist$3.G3d.POSITION_SIZE\n    );\n    return new Float32BufferAttribute(vertices, dist$3.G3d.POSITION_SIZE);\n  }\n  computeColors(mesh, section, colorSize) {\n    const colors = new Float32Array(mesh.getVertexCount(section) * colorSize);\n    let c = 0;\n    const submeshStart = mesh.getSubmeshStart(section);\n    const submeshEnd = mesh.getSubmeshEnd(section);\n    for (let sub = submeshStart; sub < submeshEnd; sub++) {\n      const mat = mesh.chunk.submeshMaterial[sub];\n      const color = this.materials.getMaterialColor(mat);\n      const subVertexCount = mesh.getSubmeshVertexCount(sub);\n      for (let i = 0; i < subVertexCount; i++) {\n        colors[c] = color[0];\n        colors[c + 1] = color[1];\n        colors[c + 2] = color[2];\n        if (colorSize > 3) {\n          colors[c + 3] = color[3];\n        }\n        c += colorSize;\n      }\n    }\n    return new Float32BufferAttribute(colors, colorSize);\n  }\n  setMatricesFromVimx(three, source, instances) {\n    const matrix = new Matrix4();\n    for (let i = 0; i < instances.length; i++) {\n      const array = source.getInstanceMatrix(instances[i]);\n      matrix.fromArray(array);\n      three.setMatrixAt(i, matrix);\n    }\n  }\n}\nclass LoadingSynchronizer {\n  constructor(uniques, nonUniques, getMesh, mergeAction, instanceAction) {\n    __publicField(this, \"done\", false);\n    __publicField(this, \"uniques\");\n    __publicField(this, \"nonUniques\");\n    __publicField(this, \"getMesh\");\n    __publicField(this, \"mergeAction\");\n    __publicField(this, \"instanceAction\");\n    __publicField(this, \"mergeQueue\", []);\n    __publicField(this, \"instanceQueue\", []);\n    this.uniques = uniques;\n    this.nonUniques = nonUniques;\n    this.getMesh = getMesh;\n    this.mergeAction = mergeAction;\n    this.instanceAction = instanceAction;\n  }\n  get isDone() {\n    return this.done;\n  }\n  abort() {\n    this.done = true;\n    this.mergeQueue.length = 0;\n    this.instanceQueue.length = 0;\n  }\n  async loadAll() {\n    const promises = this.getSortedPromises();\n    Promise.all(promises).then(() => this.done = true);\n    await this.consumeQueues();\n  }\n  async consumeQueues() {\n    while (!(this.done && this.mergeQueue.length === 0 && this.instanceQueue.length === 0)) {\n      while (this.mergeQueue.length > 0) {\n        this.mergeQueue.pop()();\n      }\n      while (this.instanceQueue.length > 0) {\n        this.instanceQueue.pop()();\n      }\n      await new Promise((resolve) => setTimeout(resolve, 0));\n    }\n  }\n  getSortedPromises() {\n    const promises = [];\n    const uniqueCount = this.uniques.getMeshCount();\n    const nonUniquesCount = this.nonUniques.getMeshCount();\n    let uniqueIndex = 0;\n    let nonUniqueIndex = 0;\n    let uniqueMesh = 0;\n    let nonUniqueMesh = 0;\n    while (!this.isDone) {\n      const mergeDone = uniqueIndex >= uniqueCount;\n      const instanceDone = nonUniqueIndex >= nonUniquesCount;\n      if (mergeDone && instanceDone) {\n        break;\n      }\n      if (!mergeDone && (uniqueMesh <= nonUniqueMesh || instanceDone)) {\n        uniqueMesh = this.uniques.getSourceMesh(uniqueIndex);\n        promises.push(this.merge(uniqueMesh, uniqueIndex++));\n      }\n      if (!instanceDone && (nonUniqueMesh <= uniqueMesh || mergeDone)) {\n        nonUniqueMesh = this.nonUniques.getSourceMesh(nonUniqueIndex);\n        promises.push(this.instance(nonUniqueMesh, nonUniqueIndex++));\n      }\n    }\n    return promises;\n  }\n  async merge(mesh, index) {\n    const m = await this.getMesh(mesh);\n    this.mergeQueue.push(() => this.mergeAction(m, index));\n  }\n  async instance(mesh, index) {\n    const m = await this.getMesh(mesh);\n    this.instanceQueue.push(() => this.instanceAction(m, index));\n  }\n}\nfunction getFullSettings(option) {\n  var _a2, _b2;\n  return {\n    updateDelayMs: (_a2 = option == null ? void 0 : option.updateDelayMs) != null ? _a2 : 400,\n    delayRender: (_b2 = option == null ? void 0 : option.delayRender) != null ? _b2 : false\n  };\n}\nclass SubsetRequest {\n  constructor(scene, localVimx, subset) {\n    __publicField(this, \"_subset\");\n    __publicField(this, \"_uniques\");\n    __publicField(this, \"_nonUniques\");\n    __publicField(this, \"_opaqueMesh\");\n    __publicField(this, \"_transparentMesh\");\n    __publicField(this, \"_synchronizer\");\n    __publicField(this, \"_meshFactory\");\n    __publicField(this, \"_meshes\", []);\n    __publicField(this, \"_pushedMesh\", 0);\n    __publicField(this, \"_disposed\", false);\n    __publicField(this, \"_started\", false);\n    __publicField(this, \"_scene\");\n    this._subset = subset;\n    this._scene = scene;\n    this._uniques = this._subset.filterUniqueMeshes();\n    this._nonUniques = this._subset.filterNonUniqueMeshes();\n    const opaqueOffsets = this._uniques.getOffsets(\"opaque\");\n    this._opaqueMesh = new InsertableMesh(\n      opaqueOffsets,\n      localVimx.materials,\n      false\n    );\n    this._opaqueMesh.mesh.name = \"Opaque_Merged_Mesh\";\n    const transparentOffsets = this._uniques.getOffsets(\"transparent\");\n    this._transparentMesh = new InsertableMesh(\n      transparentOffsets,\n      localVimx.materials,\n      true\n    );\n    this._transparentMesh.mesh.name = \"Transparent_Merged_Mesh\";\n    this._scene.addMesh(this._transparentMesh);\n    this._scene.addMesh(this._opaqueMesh);\n    this._meshFactory = new InstancedMeshFactory(localVimx.materials);\n    this._synchronizer = new LoadingSynchronizer(\n      this._uniques,\n      this._nonUniques,\n      (mesh) => localVimx.getMesh(mesh),\n      (mesh, index) => this.mergeMesh(mesh, index),\n      (mesh, index) => this.instanceMesh(mesh, this._nonUniques.getMeshInstances(index))\n    );\n    return this;\n  }\n  getBoundingBox() {\n    return this._subset.getBoundingBox();\n  }\n  dispose() {\n    if (!this._disposed) {\n      this._disposed = true;\n      this._synchronizer.abort();\n    }\n  }\n  async start(settings) {\n    if (this._started) {\n      return;\n    }\n    this._started = true;\n    const fullSettings = getFullSettings(settings);\n    this._synchronizer.loadAll();\n    let lastUpdate = Date.now();\n    while (true) {\n      await this.nextFrame();\n      if (this._disposed) {\n        return;\n      }\n      if (this._synchronizer.isDone) {\n        this.updateMeshes();\n        return;\n      }\n      if (!fullSettings.delayRender && Date.now() - lastUpdate > fullSettings.updateDelayMs) {\n        this.updateMeshes();\n        lastUpdate = Date.now();\n      }\n    }\n  }\n  async nextFrame() {\n    return new Promise((resolve) => setTimeout(resolve, 0));\n  }\n  mergeMesh(g3dMesh2, index) {\n    this._transparentMesh.insert(g3dMesh2, index);\n    this._opaqueMesh.insert(g3dMesh2, index);\n  }\n  instanceMesh(g3dMesh2, instances) {\n    const opaque = this._meshFactory.createOpaque(g3dMesh2, instances);\n    const transparent = this._meshFactory.createTransparent(g3dMesh2, instances);\n    if (opaque) {\n      this._meshes.push(opaque);\n    }\n    if (transparent) {\n      this._meshes.push(transparent);\n    }\n  }\n  updateMeshes() {\n    while (this._pushedMesh < this._meshes.length) {\n      const mesh = this._meshes[this._pushedMesh++];\n      this._scene.addMesh(mesh);\n    }\n    this._transparentMesh.update();\n    this._opaqueMesh.update();\n    this._scene.setDirty();\n  }\n}\nclass G3dMeshCounts {\n  constructor() {\n    __publicField(this, \"instances\", 0);\n    __publicField(this, \"meshes\", 0);\n    __publicField(this, \"indices\", 0);\n    __publicField(this, \"vertices\", 0);\n  }\n}\nclass G3dMeshOffsets {\n  constructor(subset, section) {\n    __publicField(this, \"subset\");\n    __publicField(this, \"section\");\n    __publicField(this, \"counts\");\n    __publicField(this, \"_indexOffsets\");\n    __publicField(this, \"_vertexOffsets\");\n    this.subset = subset;\n    this.section = section;\n    this.counts = subset.getAttributeCounts(section);\n    this._indexOffsets = this.computeOffsets(\n      subset,\n      (m) => subset.getMeshIndexCount(m, section)\n    );\n    this._vertexOffsets = this.computeOffsets(\n      subset,\n      (m) => subset.getMeshVertexCount(m, section)\n    );\n  }\n  computeOffsets(subset, getter) {\n    const meshCount = subset.getMeshCount();\n    const offsets = new Int32Array(meshCount);\n    for (let i = 1; i < meshCount; i++) {\n      offsets[i] = offsets[i - 1] + getter(i - 1);\n    }\n    return offsets;\n  }\n  getIndexOffset(mesh) {\n    return mesh < this.counts.meshes ? this._indexOffsets[mesh] : this.counts.indices;\n  }\n  getVertexOffset(mesh) {\n    return mesh < this.counts.meshes ? this._vertexOffsets[mesh] : this.counts.vertices;\n  }\n  getMeshInstanceCount(mesh) {\n    return this.subset.getMeshInstanceCount(mesh);\n  }\n  getMeshInstance(mesh, index) {\n    return this.subset.getMeshInstance(mesh, index);\n  }\n  getSourceMesh(index) {\n    return this.subset.getSourceMesh(index);\n  }\n}\nclass G3dSubset {\n  constructor(source, instances) {\n    __publicField(this, \"_source\");\n    __publicField(this, \"_instances\");\n    __publicField(this, \"_meshes\");\n    __publicField(this, \"_meshInstances\");\n    var _a2;\n    this._source = source;\n    if (!instances) {\n      instances = [];\n      for (let i = 0; i < source.instanceMeshes.length; i++) {\n        if (source.instanceMeshes[i] >= 0) {\n          instances.push(i);\n        }\n      }\n    }\n    this._instances = instances;\n    this._meshes = [];\n    const map = /* @__PURE__ */ new Map();\n    for (const instance of instances) {\n      const mesh = source.instanceMeshes[instance];\n      if (!map.has(mesh)) {\n        this._meshes.push(mesh);\n        map.set(mesh, [instance]);\n      } else {\n        (_a2 = map.get(mesh)) == null ? void 0 : _a2.push(instance);\n      }\n    }\n    this._meshInstances = new Array(this._meshes.length);\n    for (let i = 0; i < this._meshes.length; i++) {\n      this._meshInstances[i] = map.get(this._meshes[i]);\n    }\n  }\n  getInstanceCount() {\n    return this._instances.length;\n  }\n  getVimInstance(subsetIndex) {\n    const vimIndex = this._instances[subsetIndex];\n    return this._source.instanceNodes[vimIndex];\n  }\n  getVimInstances() {\n    const results = new Array(this._instances.length);\n    for (let i = 0; i < results.length; i++) {\n      results[i] = this.getVimInstance(i);\n    }\n    return results;\n  }\n  getSourceMesh(index) {\n    return this._meshes[index];\n  }\n  getMeshCount() {\n    return this._meshes.length;\n  }\n  getMeshIndexCount(mesh, section) {\n    const instances = this.getMeshInstanceCount(mesh);\n    const indices = this._source.getMeshIndexCount(\n      this.getSourceMesh(mesh),\n      section\n    );\n    return indices * instances;\n  }\n  getMeshVertexCount(mesh, section) {\n    const instances = this.getMeshInstanceCount(mesh);\n    const vertices = this._source.getMeshVertexCount(\n      this.getSourceMesh(mesh),\n      section\n    );\n    return vertices * instances;\n  }\n  getMeshInstanceCount(mesh) {\n    return this._meshInstances[mesh].length;\n  }\n  getMeshInstances(mesh) {\n    return this._meshInstances[mesh];\n  }\n  getMeshInstance(mesh, index) {\n    return this._meshInstances[mesh][index];\n  }\n  filterUniqueMeshes() {\n    return this.filterByCount((count) => count === 1);\n  }\n  filterLargests(count) {\n    if (this._source instanceof dist$3.G3d) {\n      throw new Error(\"Feature requires a vimx file\");\n    }\n    const min = new Vector3();\n    const max = new Vector3();\n    const values = new Array(this._instances.length);\n    for (let i = 0; i < this._instances.length; i++) {\n      const instance = this._instances[i];\n      min.fromArray(this._source.getInstanceMin(instance));\n      max.fromArray(this._source.getInstanceMax(instance));\n      const size = min.distanceToSquared(max);\n      values.push([i, size]);\n    }\n    values.sort((v1, v2) => v2[1] - v1[1]);\n    const instances = values.slice(0, count).map((v) => v[0]);\n    return new G3dSubset(this._source, instances);\n  }\n  filterNonUniqueMeshes() {\n    return this.filterByCount((count) => count > 1);\n  }\n  filterByCount(predicate) {\n    const set = /* @__PURE__ */ new Set();\n    this._meshInstances.forEach((instances2, i) => {\n      if (predicate(instances2.length)) {\n        set.add(this._meshes[i]);\n      }\n    });\n    const instances = this._instances.filter(\n      (instance) => set.has(this._source.instanceMeshes[instance])\n    );\n    return new G3dSubset(this._source, instances);\n  }\n  getOffsets(section) {\n    return new G3dMeshOffsets(this, section);\n  }\n  getAttributeCounts(section = \"all\") {\n    const result = new G3dMeshCounts();\n    const count = this.getMeshCount();\n    for (let i = 0; i < count; i++) {\n      result.instances += this.getMeshInstanceCount(i);\n      result.indices += this.getMeshIndexCount(i, section);\n      result.vertices += this.getMeshVertexCount(i, section);\n    }\n    result.meshes = count;\n    return result;\n  }\n  reverse() {\n    const reverse = [...this._instances].reverse();\n    return new G3dSubset(this._source, reverse);\n  }\n  except(mode, filter) {\n    return this._filter(mode, filter, false);\n  }\n  filter(mode, filter) {\n    return this._filter(mode, filter, true);\n  }\n  _filter(mode, filter, has) {\n    if (filter === void 0 || mode === void 0) {\n      return new G3dSubset(this._source, void 0);\n    }\n    if (mode === \"instance\") {\n      const instances = this.filterOnArray(\n        filter,\n        this._source.instanceNodes,\n        has\n      );\n      return new G3dSubset(this._source, instances);\n    }\n    if (mode === \"mesh\") {\n      const instances = this.filterOnArray(\n        filter,\n        this._source.instanceMeshes,\n        has\n      );\n      return new G3dSubset(this._source, instances);\n    }\n    if (mode === \"tag\" || mode === \"group\") {\n      throw new Error(\"Filter Mode Not implemented\");\n    }\n  }\n  filterOnArray(filter, array, has = true) {\n    const set = filter instanceof Set ? filter : new Set(filter);\n    const result = [];\n    for (const i of this._instances) {\n      const value = array[i];\n      if (set.has(value) === has && this._source.instanceMeshes[i] >= 0) {\n        result.push(i);\n      }\n    }\n    return result;\n  }\n  getBoundingBox() {\n    if (this._instances.length === 0)\n      return;\n    if (this._source instanceof dist$3.G3dScene) {\n      const box = new Box3();\n      const first = this._instances[0];\n      box.min.fromArray(this._source.getInstanceMin(first));\n      box.max.fromArray(this._source.getInstanceMax(first));\n      for (let i = 1; i < this._instances.length; i++) {\n        const instance = this._instances[i];\n        minBox(box, this._source.getInstanceMin(instance));\n        maxBox(box, this._source.getInstanceMax(instance));\n      }\n      return box;\n    }\n  }\n}\nfunction minBox(box, other) {\n  box.min.x = Math.min(box.min.x, other[0]);\n  box.min.y = Math.min(box.min.y, other[1]);\n  box.min.z = Math.min(box.min.z, other[2]);\n}\nfunction maxBox(box, other) {\n  box.max.x = Math.max(box.max.x, other[0]);\n  box.max.y = Math.max(box.max.y, other[1]);\n  box.max.z = Math.max(box.max.z, other[2]);\n}\nclass VimSubsetBuilder {\n  constructor(factory) {\n    __publicField(this, \"factory\");\n    __publicField(this, \"_onUpdate\", new dist$2.SignalDispatcher());\n    this.factory = factory;\n  }\n  get onUpdate() {\n    return this._onUpdate.asEvent();\n  }\n  get isLoading() {\n    return false;\n  }\n  getFullSet() {\n    return new G3dSubset(this.factory.g3d);\n  }\n  loadSubset(subset, settings) {\n    this.factory.add(subset);\n    this._onUpdate.dispatch();\n  }\n  clear() {\n    this._onUpdate.dispatch();\n  }\n  dispose() {\n  }\n}\nclass VimxSubsetBuilder {\n  constructor(localVimx, scene) {\n    __publicField(this, \"_localVimx\");\n    __publicField(this, \"_scene\");\n    __publicField(this, \"_set\", /* @__PURE__ */ new Set());\n    __publicField(this, \"_onUpdate\", new dist$2.SignalDispatcher());\n    this._localVimx = localVimx;\n    this._scene = scene;\n  }\n  get onUpdate() {\n    return this._onUpdate.asEvent();\n  }\n  get isLoading() {\n    return this._set.size > 0;\n  }\n  getFullSet() {\n    return new G3dSubset(this._localVimx.scene);\n  }\n  async loadSubset(subset, settings) {\n    const request2 = new SubsetRequest(this._scene, this._localVimx, subset);\n    this._set.add(request2);\n    this._onUpdate.dispatch();\n    await request2.start(settings);\n    this._set.delete(request2);\n    this._onUpdate.dispatch();\n  }\n  clear() {\n    this._localVimx.abort();\n    this._set.forEach((s) => s.dispose());\n    this._set.clear();\n    this._onUpdate.dispatch();\n  }\n  dispose() {\n    this.clear();\n  }\n}\nclass VimMeshFactory {\n  constructor(g3d2, materials, scene) {\n    __publicField(this, \"g3d\");\n    __publicField(this, \"_materials\");\n    __publicField(this, \"_instancedFactory\");\n    __publicField(this, \"_scene\");\n    this.g3d = g3d2;\n    this._materials = materials;\n    this._scene = scene;\n    this._instancedFactory = new InstancedMeshFactory(materials);\n  }\n  add(subset) {\n    const uniques = subset.filterUniqueMeshes();\n    const nonUniques = subset.filterNonUniqueMeshes();\n    this.addInstancedMeshes(this._scene, nonUniques);\n    this.addMergedMesh(this._scene, uniques);\n  }\n  addMergedMesh(scene, subset) {\n    const opaque = this.createMergedMesh(subset, \"opaque\", false);\n    const transparents = this.createMergedMesh(subset, \"transparent\", true);\n    scene.addMesh(opaque);\n    scene.addMesh(transparents);\n  }\n  createMergedMesh(subset, section, transparent) {\n    const offsets = subset.getOffsets(section);\n    const opaque = new InsertableMesh(offsets, this._materials, transparent);\n    const count = subset.getMeshCount();\n    for (let m = 0; m < count; m++) {\n      opaque.insertFromVim(this.g3d, m);\n    }\n    opaque.update();\n    return opaque;\n  }\n  addInstancedMeshes(scene, subset) {\n    var _a2;\n    const count2 = subset.getMeshCount();\n    for (let m = 0; m < count2; m++) {\n      const mesh = subset.getSourceMesh(m);\n      const instances = (_a2 = subset.getMeshInstances(m)) != null ? _a2 : this.g3d.meshInstances[mesh];\n      const opaque = this._instancedFactory.createOpaqueFromVim(\n        this.g3d,\n        mesh,\n        instances\n      );\n      const transparent = this._instancedFactory.createTransparentFromVim(\n        this.g3d,\n        mesh,\n        instances\n      );\n      scene.addMesh(opaque);\n      scene.addMesh(transparent);\n    }\n  }\n}\nvar logging = {};\nObject.defineProperty(logging, \"__esModule\", { value: true });\nlogging.NoLog = DefaultLog_1 = logging.DefaultLog = logging.Logger = void 0;\nclass Logger {\n}\nlogging.Logger = Logger;\nclass DefaultLog {\n  constructor() {\n    this.log = (s) => console.log(s);\n    this.warn = (s) => console.warn(s);\n    this.error = (s) => console.error(s);\n  }\n}\nvar DefaultLog_1 = logging.DefaultLog = DefaultLog;\nclass NoLog {\n  constructor() {\n    this.log = (s) => {\n    };\n    this.warn = (s) => {\n    };\n    this.error = (s) => {\n    };\n  }\n}\nlogging.NoLog = NoLog;\nasync function open(source, settings, onProgress) {\n  const bfast2 = source instanceof dist$3.BFast ? source : new dist$3.BFast(source);\n  const fullSettings = getFullSettings$1(settings);\n  const type = await determineFileType(bfast2, fullSettings);\n  if (type === \"vim\") {\n    return loadFromVim(bfast2, fullSettings, onProgress);\n  }\n  if (type === \"vimx\") {\n    return loadFromVimX(bfast2, fullSettings, onProgress);\n  }\n  throw new Error(\"Cannot determine the appropriate loading strategy.\");\n}\nasync function determineFileType(bfast2, settings) {\n  if ((settings == null ? void 0 : settings.fileType) === \"vim\")\n    return \"vim\";\n  if ((settings == null ? void 0 : settings.fileType) === \"vimx\")\n    return \"vimx\";\n  return requestFileType(bfast2);\n}\nasync function requestFileType(bfast2) {\n  if (bfast2.url) {\n    if (bfast2.url.endsWith(\"vim\"))\n      return \"vim\";\n    if (bfast2.url.endsWith(\"vimx\"))\n      return \"vimx\";\n  }\n  const header = await dist$3.requestHeader(bfast2);\n  if (header.vim !== void 0)\n    return \"vim\";\n  if (header.vimx !== void 0)\n    return \"vimx\";\n  throw new Error(\"Cannot determine file type from header.\");\n}\nasync function loadFromVimX(bfast2, settings, onProgress) {\n  const remoteVimx2 = new dist$3.RemoteVimx(bfast2);\n  if (remoteVimx2.bfast.source instanceof dist$3.RemoteBuffer) {\n    remoteVimx2.bfast.source.onProgress = onProgress;\n  }\n  const vimx = await Vimx.fromRemote(remoteVimx2, !settings.progressive);\n  const scene = new Scene(settings.matrix);\n  const mapping = new ElementMapping2(vimx.scene);\n  const builder = new VimxSubsetBuilder(vimx, scene);\n  const vim = new Vim(\n    vimx.header,\n    void 0,\n    void 0,\n    scene,\n    settings,\n    mapping,\n    builder,\n    bfast2.url,\n    \"vimx\"\n  );\n  if (remoteVimx2.bfast.source instanceof dist$3.RemoteBuffer) {\n    remoteVimx2.bfast.source.onProgress = void 0;\n  }\n  return vim;\n}\nasync function loadFromVim(bfast2, settings, onProgress) {\n  const fullSettings = getFullSettings$1(settings);\n  if (bfast2.source instanceof dist$3.RemoteBuffer) {\n    bfast2.source.onProgress = onProgress;\n    if (settings.verboseHttp) {\n      bfast2.source.logs = new DefaultLog_1();\n    }\n  }\n  const geometry = await bfast2.getBfast(\"geometry\");\n  const g3d2 = await dist$3.G3d.createFromBfast(geometry);\n  const materials = new dist$3.G3dMaterial(g3d2.materialColors);\n  const scene = new Scene(settings.matrix);\n  const factory = new VimMeshFactory(g3d2, materials, scene);\n  const doc = await dist$3.VimDocument.createFromBfast(bfast2);\n  const mapping = await ElementMapping.fromG3d(g3d2, doc);\n  const header = await dist$3.requestHeader(bfast2);\n  const builder = new VimSubsetBuilder(factory);\n  const vim = new Vim(\n    header,\n    doc,\n    g3d2,\n    scene,\n    fullSettings,\n    mapping,\n    builder,\n    bfast2.url,\n    \"vim\"\n  );\n  if (bfast2.source instanceof dist$3.RemoteBuffer) {\n    bfast2.source.onProgress = void 0;\n  }\n  return vim;\n}\nclass DeferredPromise extends Promise {\n  constructor(executor = () => {\n  }) {\n    var _a2;\n    let resolver;\n    let rejector;\n    super((resolve, reject) => {\n      resolver = resolve;\n      rejector = reject;\n      return executor(resolve, reject);\n    });\n    __publicField(this, \"resolve\");\n    __publicField(this, \"reject\");\n    __publicField(this, \"initialCallStack\");\n    this.resolve = resolver;\n    this.reject = rejector;\n    this.initialCallStack = (_a2 = Error().stack) == null ? void 0 : _a2.split(\"\\n\").slice(2).join(\"\\n\");\n  }\n  rejectWithError(error) {\n    var _a2;\n    error.stack = [(_a2 = error.stack) == null ? void 0 : _a2.split(\"\\n\")[0], this.initialCallStack].join(\"\\n\");\n    this.reject(error);\n  }\n}\nclass SuccessResult {\n  constructor(result) {\n    __publicField(this, \"result\");\n    this.result = result;\n  }\n  isSuccess() {\n    return true;\n  }\n  isError() {\n    return false;\n  }\n}\nclass ErrorResult {\n  constructor(error) {\n    __publicField(this, \"error\");\n    this.error = error;\n  }\n  isSuccess() {\n    return false;\n  }\n  isError() {\n    return true;\n  }\n}\nfunction request(options, settings) {\n  return new VimRequest(options, settings);\n}\nclass VimRequest {\n  constructor(source, settings) {\n    __publicField(this, \"_source\");\n    __publicField(this, \"_settings\");\n    __publicField(this, \"_bfast\");\n    __publicField(this, \"_isDone\", false);\n    __publicField(this, \"_vimResult\");\n    __publicField(this, \"_error\");\n    __publicField(this, \"_progress\", { loaded: 0, total: 0, all: /* @__PURE__ */ new Map() });\n    __publicField(this, \"_progressPromise\", new DeferredPromise());\n    __publicField(this, \"_completionPromise\", new DeferredPromise());\n    this._source = source;\n    this._settings = settings;\n    this.startRequest();\n  }\n  async startRequest() {\n    var _a2;\n    try {\n      this._bfast = new dist$3.BFast(this._source);\n      const vim = await open(this._bfast, this._settings, (progress) => {\n        this._progress = progress;\n        this._progressPromise.resolve(progress);\n        this._progressPromise = new DeferredPromise();\n      });\n      this._vimResult = vim;\n    } catch (err2) {\n      this._error = (_a2 = err2.message) != null ? _a2 : JSON.stringify(err2);\n      console.error(\"Error loading VIM:\", err2);\n    } finally {\n      this.end();\n    }\n  }\n  end() {\n    this._isDone = true;\n    this._progressPromise.resolve(this._progress);\n    this._completionPromise.resolve();\n  }\n  async getResult() {\n    await this._completionPromise;\n    return this._error ? new ErrorResult(this._error) : new SuccessResult(this._vimResult);\n  }\n  async *getProgress() {\n    while (!this._isDone) {\n      yield await this._progressPromise;\n    }\n  }\n  abort() {\n    this._bfast.abort();\n    this._error = \"Request aborted\";\n    this.end();\n  }\n}\n/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\nfunction isObject(o) {\n  return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction isPlainObject(o) {\n  var ctor, prot;\n  if (isObject(o) === false)\n    return false;\n  ctor = o.constructor;\n  if (ctor === void 0)\n    return true;\n  prot = ctor.prototype;\n  if (isObject(prot) === false)\n    return false;\n  if (prot.hasOwnProperty(\"isPrototypeOf\") === false) {\n    return false;\n  }\n  return true;\n}\nconst floor = `\ndata:image/png;base64,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\n`;\nclass AxesSettings {\n  constructor(init) {\n    __publicField(this, \"size\", 84);\n    __publicField(this, \"padding\", 4);\n    __publicField(this, \"bubbleSizePrimary\", 8);\n    __publicField(this, \"bubbleSizeSecondary\", 6);\n    __publicField(this, \"lineWidth\", 2);\n    __publicField(this, \"fontPxSize\", 12);\n    __publicField(this, \"fontFamily\", \"arial\");\n    __publicField(this, \"fontWeight\", \"bold\");\n    __publicField(this, \"fontColor\", \"#222222\");\n    __publicField(this, \"className\", \"gizmo-axis-canvas\");\n    __publicField(this, \"colorX\", \"#f73c3c\");\n    __publicField(this, \"colorY\", \"#6ccb26\");\n    __publicField(this, \"colorZ\", \"#178cf0\");\n    __publicField(this, \"colorXSub\", \"#942424\");\n    __publicField(this, \"colorYSub\", \"#417a17\");\n    __publicField(this, \"colorZSub\", \"#0e5490\");\n    var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;\n    this.size = (_a2 = init == null ? void 0 : init.size) != null ? _a2 : this.size;\n    this.padding = (_b2 = init == null ? void 0 : init.padding) != null ? _b2 : this.padding;\n    this.bubbleSizePrimary = (_c = init == null ? void 0 : init.bubbleSizePrimary) != null ? _c : this.bubbleSizePrimary;\n    this.bubbleSizeSecondary = (_d = init == null ? void 0 : init.bubbleSizeSecondary) != null ? _d : this.bubbleSizeSecondary;\n    this.lineWidth = (_e = init == null ? void 0 : init.lineWidth) != null ? _e : this.lineWidth;\n    this.fontPxSize = (_f = init == null ? void 0 : init.fontPxSize) != null ? _f : this.fontPxSize;\n    this.fontFamily = (_g = init == null ? void 0 : init.fontFamily) != null ? _g : this.fontFamily;\n    this.fontWeight = (_h = init == null ? void 0 : init.fontWeight) != null ? _h : this.fontWeight;\n    this.fontColor = (_i = init == null ? void 0 : init.fontColor) != null ? _i : this.fontColor;\n    this.className = (_j = init == null ? void 0 : init.className) != null ? _j : this.className;\n    this.colorX = (_k = init == null ? void 0 : init.colorX) != null ? _k : this.colorX;\n    this.colorY = (_l = init == null ? void 0 : init.colorY) != null ? _l : this.colorY;\n    this.colorZ = (_m = init == null ? void 0 : init.colorZ) != null ? _m : this.colorZ;\n    this.colorXSub = (_n = init == null ? void 0 : init.colorXSub) != null ? _n : this.colorXSub;\n    this.colorYSub = (_o = init == null ? void 0 : init.colorYSub) != null ? _o : this.colorYSub;\n    this.colorZSub = (_p = init == null ? void 0 : init.colorZSub) != null ? _p : this.colorZSub;\n  }\n}\nconst defaultViewerSettings = {\n  canvas: {\n    id: void 0,\n    resizeDelay: 200\n  },\n  camera: {\n    orthographic: false,\n    allowedMovement: new Vector3(1, 1, 1),\n    allowedRotation: new Vector2(1, 1),\n    near: 1e-3,\n    far: 15e3,\n    fov: 50,\n    zoom: 1,\n    forward: new Vector3(1, -1, 1),\n    controls: {\n      orbit: true,\n      rotateSpeed: 1,\n      orbitSpeed: 1,\n      moveSpeed: 1,\n      scrollSpeed: 1.5\n    },\n    gizmo: {\n      enable: true,\n      size: 0.01,\n      color: new Color(4473924),\n      opacity: 0.3,\n      opacityAlways: 0.02\n    }\n  },\n  background: { color: new Color(12698310) },\n  skybox: {\n    enable: true,\n    skyColor: new Color(15135994),\n    groundColor: new Color(14671841),\n    sharpness: 2\n  },\n  groundPlane: {\n    visible: false,\n    encoding: \"base64\",\n    texture: floor,\n    opacity: 1,\n    color: new Color(16777215),\n    size: 5\n  },\n  skylight: {\n    skyColor: new Color(16777215),\n    groundColor: new Color(16777215),\n    intensity: 0.8\n  },\n  sunlights: [\n    {\n      followCamera: true,\n      position: new Vector3(1e3, 1e3, 1e3),\n      color: new Color(16777215),\n      intensity: 0.8\n    },\n    {\n      followCamera: true,\n      position: new Vector3(-1e3, -1e3, -1e3),\n      color: new Color(16777215),\n      intensity: 0.2\n    }\n  ],\n  materials: {\n    standard: {\n      color: new Color(10066329)\n    },\n    highlight: {\n      color: new Color(7000831),\n      opacity: 0.5\n    },\n    isolation: {\n      color: new Color(5132892),\n      opacity: 0.08\n    },\n    section: {\n      strokeWidth: 0.01,\n      strokeFalloff: 0.75,\n      strokeColor: new Color(16185078)\n    },\n    outline: {\n      intensity: 3,\n      falloff: 3,\n      blur: 2,\n      color: new Color(65535)\n    }\n  },\n  axes: new AxesSettings(),\n  rendering: {\n    onDemand: true\n  }\n};\nfunction getViewerSettings(settings) {\n  return settings ? cjs(defaultViewerSettings, settings, { arrayMerge: combineMerge, isMergeableObject: isPlainObject }) : defaultViewerSettings;\n}\nconst combineMerge = (target, source, options) => {\n  const destination = target.slice();\n  source.forEach((item, index) => {\n    if (typeof destination[index] === \"undefined\") {\n      destination[index] = options.cloneUnlessOtherwiseSpecified(item, options);\n    } else if (options.isMergeableObject(item)) {\n      destination[index] = cjs(target[index], item, options);\n    } else if (target.indexOf(item) === -1) {\n      destination.push(item);\n    }\n  });\n  return destination;\n};\nfunction clamp(value, min, max) {\n  return Math.max(min, Math.min(max, value));\n}\nclass PerspectiveWrapper {\n  constructor(camera) {\n    __publicField(this, \"camera\");\n    this.camera = camera;\n  }\n  applySettings(settings) {\n    this.camera.fov = settings.camera.fov;\n    this.camera.zoom = settings.camera.zoom;\n    this.camera.near = settings.camera.near;\n    this.camera.far = settings.camera.far;\n    this.camera.updateProjectionMatrix();\n  }\n  updateProjection(aspect2) {\n    this.camera.aspect = aspect2;\n    this.camera.updateProjectionMatrix();\n  }\n  frustrumSizeAt(point) {\n    const dist2 = this.camera.position.distanceTo(point);\n    const size = 2 * dist2 * Math.tan(this.camera.fov / 2 * (Math.PI / 180));\n    return new Vector2(size * this.camera.aspect, size);\n  }\n}\nclass OrthographicWrapper {\n  constructor(camera) {\n    __publicField(this, \"camera\");\n    this.camera = camera;\n  }\n  frustrumSizeAt(point) {\n    return new Vector2(\n      this.camera.right - this.camera.left,\n      this.camera.top - this.camera.bottom\n    );\n  }\n  applySettings(settings) {\n    this.camera.zoom = settings.camera.zoom;\n    this.camera.near = -settings.camera.far;\n    this.camera.far = settings.camera.far;\n    this.camera.updateProjectionMatrix();\n  }\n  updateProjection(size, aspect2) {\n    const max = Math.max(size.x, size.y);\n    this.camera.left = -max * aspect2;\n    this.camera.right = max * aspect2;\n    this.camera.top = max;\n    this.camera.bottom = -max;\n    this.camera.updateProjectionMatrix();\n  }\n}\nclass GizmoMarker {\n  constructor(viewer, submesh) {\n    __publicField(this, \"type\", \"Marker\");\n    __publicField(this, \"_viewer\");\n    __publicField(this, \"_submesh\");\n    __publicField(this, \"vim\");\n    __publicField(this, \"element\");\n    __publicField(this, \"instances\");\n    __publicField(this, \"_outlineAttribute\");\n    __publicField(this, \"_visibleAttribute\");\n    __publicField(this, \"_coloredAttribute\");\n    __publicField(this, \"_focusedAttribute\");\n    __publicField(this, \"_colorAttribute\");\n    this._viewer = viewer;\n    this._submesh = submesh;\n    const array = [submesh];\n    this._outlineAttribute = new ObjectAttribute(\n      false,\n      \"selected\",\n      \"selected\",\n      array,\n      (v) => v ? 1 : 0\n    );\n    this._visibleAttribute = new ObjectAttribute(\n      true,\n      \"ignore\",\n      \"ignore\",\n      array,\n      (v) => v ? 0 : 1\n    );\n    this._focusedAttribute = new ObjectAttribute(\n      false,\n      \"focused\",\n      \"focused\",\n      array,\n      (v) => v ? 1 : 0\n    );\n    this._coloredAttribute = new ObjectAttribute(\n      false,\n      \"colored\",\n      \"colored\",\n      array,\n      (v) => v ? 1 : 0\n    );\n    this._colorAttribute = new ColorAttribute(array, void 0, void 0);\n    this.color = new Color(16718362);\n  }\n  updateMesh(mesh) {\n    this._submesh = mesh;\n    const array = [this._submesh];\n    this._visibleAttribute.updateMeshes(array);\n    this._focusedAttribute.updateMeshes(array);\n    this._outlineAttribute.updateMeshes(array);\n    this._colorAttribute.updateMeshes(array);\n    this._coloredAttribute.updateMeshes(array);\n    this._viewer.renderer.needsUpdate = true;\n  }\n  set position(value) {\n    const m = new Matrix4();\n    m.compose(value, new Quaternion(), new Vector3(1, 1, 1));\n    this._submesh.mesh.setMatrixAt(this._submesh.index, m);\n    this._submesh.mesh.instanceMatrix.needsUpdate = true;\n  }\n  get position() {\n    const m = new Matrix4();\n    this._submesh.mesh.getMatrixAt(0, m);\n    return new Vector3().setFromMatrixPosition(m);\n  }\n  get hasMesh() {\n    return false;\n  }\n  get outline() {\n    return this._outlineAttribute.value;\n  }\n  set outline(value) {\n    this._outlineAttribute.apply(value);\n  }\n  get focused() {\n    return this._focusedAttribute.value;\n  }\n  set focused(value) {\n    this._focusedAttribute.apply(value);\n    this._viewer.renderer.needsUpdate = true;\n  }\n  get visible() {\n    return this._visibleAttribute.value;\n  }\n  set visible(value) {\n    this._visibleAttribute.apply(value);\n    this._viewer.renderer.needsUpdate = true;\n  }\n  get color() {\n    return this._colorAttribute.value;\n  }\n  set color(color) {\n    if (color) {\n      this._coloredAttribute.apply(true);\n      this._colorAttribute.apply(color);\n    } else {\n      this._coloredAttribute.apply(false);\n    }\n    this._viewer.renderer.needsUpdate = true;\n  }\n  get size() {\n    const matrix = new Matrix4();\n    this._submesh.mesh.getMatrixAt(this._submesh.index, matrix);\n    return matrix.elements[0];\n  }\n  set size(value) {\n    const matrix = new Matrix4();\n    this._submesh.mesh.getMatrixAt(this._submesh.index, matrix);\n    matrix.elements[0] = value;\n    matrix.elements[5] = value;\n    matrix.elements[10] = value;\n    this._submesh.mesh.setMatrixAt(this._submesh.index, matrix);\n    this._submesh.mesh.instanceMatrix.needsUpdate = true;\n    this._viewer.renderer.needsUpdate = true;\n  }\n  getBoundingBox() {\n    return new Box3().setFromCenterAndSize(this.position.clone(), new Vector3(1, 1, 1));\n  }\n}\nclass CameraMovement {\n  constructor(camera) {\n    __publicField(this, \"_camera\");\n    this._camera = camera;\n  }\n  move2(vector, axes) {\n    const direction = axes === \"XY\" ? new Vector3(-vector.x, vector.y, 0) : axes === \"XZ\" ? new Vector3(-vector.x, 0, vector.y) : void 0;\n    if (direction)\n      this.move3(direction);\n  }\n  move1(amount, axis) {\n    const direction = new Vector3(\n      axis === \"X\" ? -amount : 0,\n      axis === \"Y\" ? amount : 0,\n      axis === \"Z\" ? amount : 0\n    );\n    this.move3(direction);\n  }\n  orbitTowards(direction) {\n    const forward = this._camera.forward;\n    const _direction = direction.clone();\n    if (_direction.x === 0 && _direction.z === 0) {\n      _direction.x = this._camera.forward.x * 1e-3;\n      _direction.z = this._camera.forward.z * 1e-3;\n      _direction.normalize();\n    }\n    const flatForward = forward.clone().setY(0);\n    const flatDirection = _direction.clone().setY(0);\n    const cross = flatForward.clone().cross(flatDirection);\n    const clockwise = cross.y === 0 ? 1 : Math.sign(cross.y);\n    const azimuth = flatForward.angleTo(flatDirection) * clockwise;\n    const angleForward = flatForward.angleTo(forward) * Math.sign(forward.y);\n    const angleDirection = flatDirection.angleTo(_direction) * Math.sign(_direction.y);\n    const declination = angleForward - angleDirection;\n    const angle = new Vector2(-declination, azimuth);\n    angle.multiplyScalar(180 / Math.PI);\n    this.orbit(angle);\n  }\n  frame(target, forward) {\n    if (target instanceof GizmoMarker || target instanceof Object3D) {\n      target = target.getBoundingBox();\n    }\n    if (target instanceof Vim) {\n      target = target.scene.getAverageBoundingBox();\n    }\n    if (target === \"all\") {\n      target = this._camera._scene.getAverageBoundingBox();\n    }\n    if (target instanceof Box3) {\n      target = target.getBoundingSphere(new Sphere());\n    }\n    if (target instanceof Sphere) {\n      this.frameSphere(target, forward);\n    }\n  }\n  frameSphere(sphere, forward) {\n    const direction = this.getNormalizedDirection(forward);\n    const fov2 = this._camera.camPerspective.camera.fov * Math.PI / 180;\n    const dist2 = sphere.radius * 1.2 / Math.tan(fov2 / 2);\n    const safeDist = Math.max(dist2, this._camera.camPerspective.camera.near * 2);\n    const pos = direction.multiplyScalar(-safeDist).add(sphere.center);\n    this.set(pos, sphere.center);\n  }\n  getNormalizedDirection(forward) {\n    if (!forward) {\n      return this._camera.forward;\n    }\n    if (forward.x === 0 && forward.y === 0 && forward.z === 0) {\n      return this._camera.forward;\n    }\n    return forward.clone().normalize();\n  }\n}\nclass CameraLerp extends CameraMovement {\n  constructor(camera, movement) {\n    super(camera);\n    __publicField(this, \"_movement\");\n    __publicField(this, \"_clock\", new Clock());\n    __publicField(this, \"onProgress\");\n    __publicField(this, \"_duration\", 1);\n    this._movement = movement;\n  }\n  get isLerping() {\n    return this._clock.running;\n  }\n  init(duration) {\n    this.cancel();\n    this._duration = duration;\n    this._clock.start();\n  }\n  cancel() {\n    this._clock.stop();\n    this.onProgress = void 0;\n  }\n  easeOutCubic(x) {\n    return 1 - Math.pow(1 - x, 3);\n  }\n  update() {\n    var _a2;\n    if (!this._clock.running)\n      return;\n    let t = this._clock.getElapsedTime() / this._duration;\n    t = this.easeOutCubic(t);\n    if (t >= 1) {\n      t = 1;\n      this._clock.stop();\n      this.onProgress = void 0;\n    }\n    (_a2 = this.onProgress) == null ? void 0 : _a2.call(this, t);\n  }\n  move3(vector) {\n    const v = vector.clone();\n    v.applyQuaternion(this._camera.quaternion);\n    const start = this._camera.position.clone();\n    const end = this._camera.position.clone().add(v);\n    const pos = new Vector3();\n    this.onProgress = (progress) => {\n      pos.copy(start);\n      pos.lerp(end, progress);\n      this._movement.move3(pos);\n    };\n  }\n  rotate(angle) {\n    const euler = new Euler(0, 0, 0, \"YXZ\");\n    euler.setFromQuaternion(this._camera.quaternion);\n    euler.x += angle.x;\n    euler.y += angle.y;\n    euler.z = 0;\n    const max = Math.PI * 0.48;\n    euler.x = Math.max(-max, Math.min(max, euler.x));\n    const start = this._camera.quaternion.clone();\n    const end = new Quaternion().setFromEuler(euler);\n    const rot = new Quaternion();\n    this.onProgress = (progress) => {\n      rot.copy(start);\n      rot.slerp(end, progress);\n      this._movement.applyRotation(rot);\n    };\n  }\n  zoom(amount) {\n    const dist2 = this._camera.orbitDistance * amount;\n    this.setDistance(dist2);\n  }\n  setDistance(dist2) {\n    const start = this._camera.position.clone();\n    const end = this._camera.target.clone().lerp(start, dist2 / this._camera.orbitDistance);\n    this.onProgress = (progress) => {\n      this._camera.position.copy(start);\n      this._camera.position.lerp(end, progress);\n    };\n  }\n  orbit(angle) {\n    const startPos = this._camera.position.clone();\n    const startTarget = this._camera.target.clone();\n    const a = new Vector2();\n    this.onProgress = (progress) => {\n      a.set(0, 0);\n      a.lerp(angle, progress);\n      this._movement.set(startPos, startTarget);\n      this._movement.orbit(a);\n    };\n  }\n  target(target) {\n    const pos = target instanceof Object3D ? target.getCenter() : target;\n    const next = pos.clone().sub(this._camera.position);\n    const start = this._camera.quaternion.clone();\n    const rot = new Quaternion().setFromUnitVectors(\n      new Vector3(0, 0, -1),\n      next.normalize()\n    );\n    this.onProgress = (progress) => {\n      const r = start.clone().slerp(rot, progress);\n      this._movement.applyRotation(r);\n    };\n  }\n  reset() {\n    this.set(this._camera._savedPosition, this._camera._savedTarget);\n  }\n  set(position, target) {\n    const endTarget = target != null ? target : this._camera.target;\n    const startPos = this._camera.position.clone();\n    const startTarget = this._camera.target.clone();\n    this.onProgress = (progress) => {\n      this._movement.set(\n        startPos.clone().lerp(position, progress),\n        startTarget.clone().lerp(endTarget, progress)\n      );\n    };\n  }\n}\nclass CameraMovementSnap extends CameraMovement {\n  zoom(amount) {\n    const dist2 = this._camera.orbitDistance * amount;\n    this.setDistance(dist2);\n  }\n  reset() {\n    this.set(this._camera._savedPosition, this._camera._savedTarget);\n  }\n  setDistance(dist2) {\n    const pos = this._camera.target.clone().sub(this._camera.forward.multiplyScalar(dist2));\n    this.set(pos, this._camera.target);\n  }\n  rotate(angle) {\n    const locked = angle.clone().multiply(this._camera.allowedRotation);\n    const rotation = this.predictRotate(locked);\n    this.applyRotation(rotation);\n  }\n  applyRotation(quaternion) {\n    this._camera.quaternion.copy(quaternion);\n    const target = this._camera.forward.multiplyScalar(this._camera.orbitDistance).add(this._camera.position);\n    this.set(this._camera.position, target);\n  }\n  target(target) {\n    const pos = target instanceof Object3D ? target.getCenter() : target;\n    if (!pos)\n      return;\n    this.set(this._camera.position, pos);\n  }\n  orbit(angle) {\n    const locked = angle.clone().multiply(this._camera.allowedRotation);\n    const pos = this.predictOrbit(locked);\n    this.set(pos);\n  }\n  move3(vector) {\n    const v = vector.clone();\n    v.applyQuaternion(this._camera.quaternion);\n    const locked = this.lockVector(v, new Vector3());\n    const pos = this._camera.position.clone().add(locked);\n    const target = this._camera.target.clone().add(locked);\n    this.set(pos, target);\n  }\n  set(position, target) {\n    const locked = this.lockVector(position, this._camera.position);\n    this._camera.position.copy(locked);\n    target = target != null ? target : this._camera.target;\n    this._camera.target.copy(target);\n    this._camera.camPerspective.camera.lookAt(target);\n    this._camera.camPerspective.camera.up.set(0, 1, 0);\n  }\n  lockVector(position, fallback) {\n    const x = this._camera.allowedMovement.x === 0 ? fallback.x : position.x;\n    const y = this._camera.allowedMovement.y === 0 ? fallback.y : position.y;\n    const z = this._camera.allowedMovement.z === 0 ? fallback.z : position.z;\n    return new Vector3(x, y, z);\n  }\n  predictOrbit(angle) {\n    const rotation = this.predictRotate(angle);\n    const delta = new Vector3(0, 0, 1).applyQuaternion(rotation).multiplyScalar(this._camera.orbitDistance);\n    return this._camera.target.clone().add(delta);\n  }\n  predictRotate(angle) {\n    const euler = new Euler(0, 0, 0, \"YXZ\");\n    euler.setFromQuaternion(this._camera.quaternion);\n    euler.x += angle.x * Math.PI / 180;\n    euler.y += angle.y * Math.PI / 180;\n    euler.z = 0;\n    const max = Math.PI * 0.4999;\n    euler.x = Math.max(-max, Math.min(max, euler.x));\n    const rotation = new Quaternion().setFromEuler(euler);\n    return rotation;\n  }\n}\nclass Camera {\n  constructor(scene, viewport, settings) {\n    __publicField(this, \"camPerspective\");\n    __publicField(this, \"camOrthographic\");\n    __publicField(this, \"_viewport\");\n    __publicField(this, \"_scene\");\n    __publicField(this, \"_lerp\");\n    __publicField(this, \"_movement\");\n    __publicField(this, \"_inputVelocity\", new Vector3());\n    __publicField(this, \"_velocity\", new Vector3());\n    __publicField(this, \"_speed\", 0);\n    __publicField(this, \"_orthographic\", false);\n    __publicField(this, \"_target\", new Vector3());\n    __publicField(this, \"_lastPosition\", new Vector3());\n    __publicField(this, \"_lastQuaternion\", new Quaternion());\n    __publicField(this, \"_lastTarget\", new Vector3());\n    __publicField(this, \"_tmp1\", new Vector3());\n    __publicField(this, \"_tmp2\", new Vector3());\n    __publicField(this, \"_savedPosition\", new Vector3(0, 0, -5));\n    __publicField(this, \"_savedTarget\", new Vector3(0, 0, 0));\n    __publicField(this, \"_onValueChanged\", new dist$2.SignalDispatcher());\n    __publicField(this, \"_hasMoved\");\n    __publicField(this, \"_onMoved\", new dist$2.SignalDispatcher());\n    __publicField(this, \"_force\", false);\n    __publicField(this, \"_allowedMovement\", new Vector3(1, 1, 1));\n    __publicField(this, \"_allowedRotation\", new Vector2(1, 1));\n    __publicField(this, \"_defaultForward\", new Vector3(1, -1, 1).normalize());\n    __publicField(this, \"_velocityBlendFactor\", 1e-4);\n    __publicField(this, \"_moveSpeed\", 1);\n    this.camPerspective = new PerspectiveWrapper(new PerspectiveCamera());\n    this.camOrthographic = new OrthographicWrapper(\n      new OrthographicCamera()\n    );\n    this._movement = new CameraMovementSnap(this);\n    this._lerp = new CameraLerp(this, this._movement);\n    this._scene = scene;\n    this._viewport = viewport;\n    this._viewport.onResize.sub(() => this.updateProjection());\n    this.applySettings(settings);\n    this.snap(true).setDistance(-1e3);\n    this.snap(true).orbitTowards(this._defaultForward);\n    this.updateProjection();\n  }\n  get onSettingsChanged() {\n    return this._onValueChanged.asEvent();\n  }\n  get hasMoved() {\n    return this._hasMoved;\n  }\n  get isLerping() {\n    return this._lerp.isLerping;\n  }\n  get onMoved() {\n    return this._onMoved.asEvent();\n  }\n  get allowedMovement() {\n    return this._force ? new Vector3(1, 1, 1) : this._allowedMovement;\n  }\n  set allowedMovement(axes) {\n    this._allowedMovement.copy(axes);\n    this._allowedMovement.x = this._allowedMovement.x === 0 ? 0 : 1;\n    this._allowedMovement.y = this._allowedMovement.y === 0 ? 0 : 1;\n    this._allowedMovement.z = this._allowedMovement.z === 0 ? 0 : 1;\n  }\n  get allowedRotation() {\n    return this._force ? new Vector2(1, 1) : this._allowedRotation;\n  }\n  set allowedRotation(axes) {\n    this._allowedRotation.copy(axes);\n    this._allowedRotation.x = this._allowedRotation.x === 0 ? 0 : 1;\n    this._allowedRotation.y = this._allowedRotation.y === 0 ? 0 : 1;\n  }\n  get defaultForward() {\n    return this._defaultForward;\n  }\n  set defaultForward(value) {\n    if (value.x === 0 && value.y === 0 && value.z === 0) {\n      this._defaultForward.set(1, -1, 1).normalize();\n    } else {\n      this._defaultForward.copy(value).normalize();\n    }\n  }\n  snap(force = false) {\n    this._force = force;\n    this._lerp.cancel();\n    return this._movement;\n  }\n  lerp(duration = 1, force = false) {\n    this.stop();\n    this._force = force;\n    this._lerp.init(duration);\n    return this._lerp;\n  }\n  frustrumSizeAt(point) {\n    return this.orthographic ? this.camOrthographic.frustrumSizeAt(point) : this.camPerspective.frustrumSizeAt(point);\n  }\n  get three() {\n    return this._orthographic ? this.camOrthographic.camera : this.camPerspective.camera;\n  }\n  get quaternion() {\n    return this.camPerspective.camera.quaternion;\n  }\n  get position() {\n    return this.camPerspective.camera.position;\n  }\n  get matrix() {\n    this.camPerspective.camera.updateMatrix();\n    return this.camPerspective.camera.matrix;\n  }\n  get forward() {\n    return this.camPerspective.camera.getWorldDirection(new Vector3());\n  }\n  get speed() {\n    return this._speed;\n  }\n  set speed(value) {\n    this._speed = clamp(value, -25, 25);\n    this._onValueChanged.dispatch();\n  }\n  get localVelocity() {\n    const result = this._velocity.clone();\n    result.applyQuaternion(this.quaternion.clone().invert());\n    result.setZ(-result.z);\n    return result;\n  }\n  set localVelocity(vector) {\n    this._lerp.cancel();\n    this._inputVelocity.copy(vector);\n    this._inputVelocity.setZ(-this._inputVelocity.z);\n  }\n  stop() {\n    this._lerp.cancel();\n    this._inputVelocity.set(0, 0, 0);\n    this._velocity.set(0, 0, 0);\n  }\n  get target() {\n    return this._target;\n  }\n  applySettings(settings) {\n    this.defaultForward = settings.camera.forward;\n    this._orthographic = settings.camera.orthographic;\n    this.allowedMovement = settings.camera.allowedMovement;\n    this.allowedRotation = settings.camera.allowedRotation;\n    this.camPerspective.applySettings(settings);\n    this.camOrthographic.applySettings(settings);\n    this._moveSpeed = settings.camera.controls.moveSpeed;\n    this._onValueChanged.dispatch();\n  }\n  get orbitDistance() {\n    return this.position.distanceTo(this._target);\n  }\n  save() {\n    this._lerp.cancel();\n    this._savedPosition.copy(this.position);\n    this._savedTarget.copy(this._target);\n  }\n  get orthographic() {\n    return this._orthographic;\n  }\n  set orthographic(value) {\n    if (value === this._orthographic)\n      return;\n    this._orthographic = value;\n    this._onValueChanged.dispatch();\n    this._onMoved.dispatch();\n  }\n  update(deltaTime) {\n    this._lerp.update();\n    if (this.applyVelocity(deltaTime)) {\n      this.applyVelocityOrthographic();\n    }\n    this._hasMoved = this.checkForMovement();\n    if (this._hasMoved) {\n      this.updateOrthographic();\n      this._onMoved.dispatch();\n    }\n    return this._hasMoved;\n  }\n  updateProjection() {\n    const aspect2 = this._viewport.getAspectRatio();\n    this.camPerspective.updateProjection(aspect2);\n    this.updateOrthographic();\n    this._onMoved.dispatch();\n  }\n  updateOrthographic() {\n    const aspect2 = this._viewport.getAspectRatio();\n    const size = this.camPerspective.frustrumSizeAt(this.target);\n    this.camOrthographic.updateProjection(size, aspect2);\n    this.camOrthographic.camera.position.copy(this.position);\n    this.camOrthographic.camera.quaternion.copy(this.quaternion);\n  }\n  applyVelocity(deltaTime) {\n    if (this._inputVelocity.x === 0 && this._inputVelocity.y === 0 && this._inputVelocity.z === 0 && this._velocity.x === 0 && this._velocity.y === 0 && this._velocity.z === 0) {\n      return false;\n    }\n    const invBlendFactor = Math.pow(this._velocityBlendFactor, deltaTime);\n    const blendFactor = 1 - invBlendFactor;\n    this._velocity.multiplyScalar(invBlendFactor);\n    this._tmp1.copy(this._inputVelocity).multiplyScalar(blendFactor);\n    this._velocity.add(this._tmp1);\n    if (this._velocity.lengthSq() < deltaTime / 10) {\n      this._velocity.set(0, 0, 0);\n      return false;\n    }\n    this._tmp1.copy(this._velocity).multiplyScalar(deltaTime * this.getVelocityMultiplier());\n    this.snap().move3(this._tmp1);\n    return true;\n  }\n  getVelocityMultiplier() {\n    const rotated = !this._lastQuaternion.equals(this.quaternion);\n    const mod = rotated ? 1 : 1.66;\n    const frustrum = this.frustrumSizeAt(this.target).length();\n    return Math.pow(1.25, this.speed) * this._moveSpeed * mod * frustrum;\n  }\n  checkForMovement() {\n    let result = false;\n    if (!this._lastPosition.equals(this.position) || !this._lastQuaternion.equals(this.quaternion) || !this._lastTarget.equals(this._target)) {\n      result = true;\n    }\n    this._lastPosition.copy(this.position);\n    this._lastQuaternion.copy(this.quaternion);\n    this._lastTarget.copy(this._target);\n    return result;\n  }\n  applyVelocityOrthographic() {\n    if (this.orthographic) {\n      const delta = this._tmp1.copy(this._lastTarget).sub(this.position);\n      const dist2 = delta.dot(this.forward);\n      this.target.copy(this.forward).multiplyScalar(dist2).add(this.position);\n      const prev = this._tmp1.copy(this._lastPosition).sub(this._target);\n      const next = this._tmp2.copy(this.position).sub(this._target);\n      if (prev.dot(next) < 0 || next.lengthSq() < 1) {\n        this.position.copy(this._target).add(this.forward.multiplyScalar(-1));\n      }\n    }\n  }\n}\nclass InputHandler {\n  constructor(viewer) {\n    __publicField(this, \"_viewer\");\n    __publicField(this, \"_unregisters\", []);\n    __publicField(this, \"reg\", (handler, type, listener) => {\n      handler.addEventListener(type, listener);\n      this._unregisters.push(() => handler.removeEventListener(type, listener));\n    });\n    this._viewer = viewer;\n  }\n  register() {\n    if (this._unregisters.length > 0)\n      return;\n    this.addListeners();\n  }\n  addListeners() {\n  }\n  unregister() {\n    this._unregisters.forEach((f) => f());\n    this._unregisters.length = 0;\n    this.reset();\n  }\n  reset() {\n  }\n}\nconst KEYS = {\n  KEY_0: 48,\n  KEY_1: 49,\n  KEY_2: 50,\n  KEY_3: 51,\n  KEY_4: 52,\n  KEY_5: 53,\n  KEY_6: 54,\n  KEY_7: 55,\n  KEY_8: 56,\n  KEY_9: 57,\n  KEY_LEFT: 37,\n  KEY_RIGHT: 39,\n  KEY_UP: 38,\n  KEY_DOWN: 40,\n  KEY_CTRL: 17,\n  KEY_SHIFT: 16,\n  KEY_ENTER: 13,\n  KEY_SPACE: 32,\n  KEY_TAB: 9,\n  KEY_ESCAPE: 27,\n  KEY_BACKSPACE: 8,\n  KEY_HOME: 36,\n  KEY_END: 35,\n  KEY_INSERT: 45,\n  KEY_DELETE: 46,\n  KEY_ALT: 18,\n  KEY_F1: 112,\n  KEY_F2: 113,\n  KEY_F3: 114,\n  KEY_F4: 115,\n  KEY_F5: 116,\n  KEY_F6: 117,\n  KEY_F7: 118,\n  KEY_F8: 119,\n  KEY_F9: 120,\n  KEY_F10: 121,\n  KEY_F11: 122,\n  KEY_F12: 123,\n  KEY_NUMPAD0: 96,\n  KEY_NUMPAD1: 97,\n  KEY_NUMPAD2: 98,\n  KEY_NUMPAD3: 99,\n  KEY_NUMPAD4: 100,\n  KEY_NUMPAD5: 101,\n  KEY_NUMPAD6: 102,\n  KEY_NUMPAD7: 103,\n  KEY_NUMPAD8: 104,\n  KEY_NUMPAD9: 105,\n  KEY_ADD: 107,\n  KEY_SUBTRACT: 109,\n  KEY_MULTIPLY: 106,\n  KEY_DIVIDE: 111,\n  KEY_SEPARATOR: 108,\n  KEY_DECIMAL: 110,\n  KEY_OEM_PLUS: 187,\n  KEY_OEM_MINUS: 189,\n  KEY_A: 65,\n  KEY_B: 66,\n  KEY_C: 67,\n  KEY_D: 68,\n  KEY_E: 69,\n  KEY_F: 70,\n  KEY_G: 71,\n  KEY_H: 72,\n  KEY_I: 73,\n  KEY_J: 74,\n  KEY_K: 75,\n  KEY_L: 76,\n  KEY_M: 77,\n  KEY_N: 78,\n  KEY_O: 79,\n  KEY_P: 80,\n  KEY_Q: 81,\n  KEY_R: 82,\n  KEY_S: 83,\n  KEY_T: 84,\n  KEY_U: 85,\n  KEY_V: 86,\n  KEY_W: 87,\n  KEY_X: 88,\n  KEY_Y: 89,\n  KEY_Z: 90\n};\nconst KeySet = new Set(Object.values(KEYS));\nclass KeyboardHandler extends InputHandler {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"SHIFT_MULTIPLIER\", 3);\n    __publicField(this, \"isUpPressed\", false);\n    __publicField(this, \"isDownPressed\", false);\n    __publicField(this, \"isLeftPressed\", false);\n    __publicField(this, \"isRightPressed\", false);\n    __publicField(this, \"isEPressed\", false);\n    __publicField(this, \"isQPressed\", false);\n    __publicField(this, \"isShiftPressed\", false);\n    __publicField(this, \"isCtrlPressed\", false);\n    __publicField(this, \"arrowsEnabled\", true);\n  }\n  addListeners() {\n    this.reg(document, \"keydown\", (e) => this.onKeyDown(e));\n    this.reg(document, \"keyup\", (e) => this.onKeyUp(e));\n    this.reg(this._viewer.viewport.canvas, \"focusout\", () => this.reset());\n    this.reg(window, \"resize\", () => this.reset());\n  }\n  reset() {\n    this.isUpPressed = false;\n    this.isDownPressed = false;\n    this.isLeftPressed = false;\n    this.isRightPressed = false;\n    this.isEPressed = false;\n    this.isQPressed = false;\n    this.isShiftPressed = false;\n    this.isCtrlPressed = false;\n    this.applyMove();\n  }\n  get camera() {\n    return this._viewer.camera;\n  }\n  onKeyUp(event) {\n    this.onKey(event, false);\n  }\n  onKeyDown(event) {\n    this.onKey(event, true);\n  }\n  onKey(event, keyDown) {\n    if (!keyDown && KeySet.has(event.keyCode)) {\n      if (this._viewer.inputs.KeyAction(event.keyCode)) {\n        event.preventDefault();\n      }\n    }\n    switch (event.keyCode) {\n      case KEYS.KEY_W:\n      case KEYS.KEY_UP:\n        this.isUpPressed = keyDown;\n        this.applyMove();\n        event.preventDefault();\n        break;\n      case KEYS.KEY_S:\n      case KEYS.KEY_DOWN:\n        this.isDownPressed = keyDown;\n        this.applyMove();\n        event.preventDefault();\n        break;\n      case KEYS.KEY_D:\n      case KEYS.KEY_RIGHT:\n        this.isRightPressed = keyDown;\n        this.applyMove();\n        event.preventDefault();\n        break;\n      case KEYS.KEY_A:\n      case KEYS.KEY_LEFT:\n        this.isLeftPressed = keyDown;\n        this.applyMove();\n        event.preventDefault();\n        break;\n      case KEYS.KEY_E:\n        this.isEPressed = keyDown;\n        this.applyMove();\n        event.preventDefault();\n        break;\n      case KEYS.KEY_Q:\n        this.isQPressed = keyDown;\n        this.applyMove();\n        event.preventDefault();\n        break;\n      case KEYS.KEY_SHIFT:\n        this.isShiftPressed = keyDown;\n        this.applyMove();\n        event.preventDefault();\n        break;\n      case KEYS.KEY_CTRL:\n        this.isCtrlPressed = keyDown;\n        event.preventDefault();\n        break;\n    }\n  }\n  applyMove() {\n    const move = new Vector3(\n      (this.isRightPressed ? 1 : 0) - (this.isLeftPressed ? 1 : 0),\n      (this.isEPressed ? 1 : 0) - (this.isQPressed ? 1 : 0),\n      (this.isUpPressed ? 1 : 0) - (this.isDownPressed ? 1 : 0)\n    );\n    const speed = this.isShiftPressed ? this.SHIFT_MULTIPLIER : 1;\n    move.multiplyScalar(speed);\n    if (this.arrowsEnabled) {\n      this.camera.localVelocity = move;\n    }\n  }\n}\nclass SimpleInstanceSubmesh {\n  constructor(mesh, index) {\n    __publicField(this, \"mesh\");\n    __publicField(this, \"index\");\n    __publicField(this, \"merged\", false);\n    this.mesh = mesh;\n    this.index = index;\n  }\n  get three() {\n    return this.mesh;\n  }\n}\nclass GizmoMarkers {\n  constructor(viewer) {\n    __publicField(this, \"_viewer\");\n    __publicField(this, \"_markers\", []);\n    __publicField(this, \"_mesh\");\n    this._viewer = viewer;\n    this._mesh = this.createMesh(void 0, 1, 0);\n    this._mesh.count = 0;\n  }\n  getMarkerFromIndex(index) {\n    return this._markers[index];\n  }\n  createMesh(previous, capacity, count) {\n    var _a2, _b2;\n    const geometry = (_a2 = previous == null ? void 0 : previous.geometry) != null ? _a2 : new SphereGeometry(1, 8, 8);\n    const mat = (_b2 = previous == null ? void 0 : previous.material) != null ? _b2 : new StandardMaterial(new MeshPhongMaterial({\n      color: 10066329,\n      vertexColors: true,\n      flatShading: true,\n      shininess: 1,\n      transparent: true,\n      depthTest: false\n    })).material;\n    const mesh = new InstancedMesh$1(geometry, mat, capacity);\n    mesh.renderOrder = 100;\n    mesh.userData.vim = this;\n    mesh.count = count;\n    this._viewer.renderer.add(mesh);\n    return mesh;\n  }\n  resizeMesh() {\n    const larger = this.createMesh(this._mesh, this._mesh.count * 2, this._mesh.count);\n    for (let i = 0; i < this._mesh.count; i++) {\n      const m = new Matrix4();\n      this._mesh.getMatrixAt(i, m);\n      larger.setMatrixAt(i, m);\n      const sub = new SimpleInstanceSubmesh(larger, i);\n      this._markers[i].updateMesh(sub);\n    }\n    this._viewer.renderer.remove(this._mesh);\n    this._mesh = larger;\n  }\n  add(position) {\n    if (this._mesh.count === this._mesh.instanceMatrix.count) {\n      this.resizeMesh();\n    }\n    this._mesh.count += 1;\n    const sub = new SimpleInstanceSubmesh(this._mesh, this._mesh.count - 1);\n    const marker = new GizmoMarker(this._viewer, sub);\n    marker.position = position;\n    this._markers.push(marker);\n    return marker;\n  }\n  remove(marker) {\n    const index = this._markers.findIndex((m) => m === marker);\n    if (index < 0)\n      return;\n    this._markers[index] = this._markers[this._markers.length - 1];\n    this._markers.length -= 1;\n    this._mesh.count -= 1;\n    const replacement = this._markers[index];\n    if (replacement) {\n      const sub = new SimpleInstanceSubmesh(this._mesh, index);\n      replacement.updateMesh(sub);\n    }\n    this._viewer.renderer.needsUpdate = true;\n  }\n  clear() {\n    this._mesh.count = 0;\n    this._markers.length = 0;\n    this._viewer.renderer.needsUpdate = true;\n  }\n}\nclass RaycastResult {\n  constructor(intersections) {\n    __publicField(this, \"object\");\n    __publicField(this, \"intersections\");\n    __publicField(this, \"firstHit\");\n    this.intersections = intersections;\n    const [markerHit, marker] = this.GetFirstMarkerHit(intersections);\n    if (marker) {\n      this.object = marker;\n      this.firstHit = markerHit;\n      return;\n    }\n    const [objectHit, obj] = this.GetFirstVimHit(intersections);\n    this.firstHit = objectHit;\n    this.object = obj;\n  }\n  GetFirstVimHit(intersections) {\n    for (let i = 0; i < intersections.length; i++) {\n      const obj = this.getVimObjectFromHit(intersections[i]);\n      if (obj == null ? void 0 : obj.visible)\n        return [intersections[i], obj];\n    }\n    return [];\n  }\n  GetFirstMarkerHit(intersections) {\n    for (let i = 0; i < intersections.length; i++) {\n      const data = intersections[i].object.userData.vim;\n      if (data instanceof GizmoMarkers) {\n        const instance = intersections[i].instanceId;\n        const marker = data.getMarkerFromIndex(instance);\n        return [intersections[i], marker];\n      }\n    }\n    return [];\n  }\n  getVimObjectFromHit(hit) {\n    const mesh = hit.object.userData.vim;\n    if (!mesh)\n      return;\n    const sub = mesh.merged ? mesh.getSubmeshFromFace(hit.faceIndex) : mesh.getSubMesh(hit.instanceId);\n    return sub.object;\n  }\n  get isHit() {\n    return !!this.firstHit;\n  }\n  get distance() {\n    var _a2;\n    return (_a2 = this.firstHit) == null ? void 0 : _a2.distance;\n  }\n  get position() {\n    var _a2;\n    return (_a2 = this.firstHit) == null ? void 0 : _a2.point;\n  }\n  get threeId() {\n    var _a2, _b2;\n    return (_b2 = (_a2 = this.firstHit) == null ? void 0 : _a2.object) == null ? void 0 : _b2.id;\n  }\n  get faceIndex() {\n    var _a2;\n    return (_a2 = this.firstHit) == null ? void 0 : _a2.faceIndex;\n  }\n}\nclass Raycaster {\n  constructor(viewport, camera, scene, renderer) {\n    __publicField(this, \"_viewport\");\n    __publicField(this, \"_camera\");\n    __publicField(this, \"_scene\");\n    __publicField(this, \"_renderer\");\n    __publicField(this, \"_raycaster\", new Raycaster$1());\n    this._viewport = viewport;\n    this._camera = camera;\n    this._scene = scene;\n    this._renderer = renderer;\n  }\n  raycast2(position) {\n    this._raycaster = this.fromPoint2(position, this._raycaster);\n    let hits = this._raycaster.intersectObjects(this._scene.scene.children);\n    hits = this.filterHits(hits);\n    return new RaycastResult(hits);\n  }\n  filterHits(hits) {\n    return this._renderer.section.active ? hits.filter((i) => this._renderer.section.box.containsPoint(i.point)) : hits;\n  }\n  raycast3(position) {\n    this._raycaster = this.fromPoint3(position, this._raycaster);\n    let hits = this._raycaster.intersectObjects(this._scene.scene.children);\n    hits = this.filterHits(hits);\n    return new RaycastResult(hits);\n  }\n  raycastForward() {\n    return this.raycast3(this._camera.target);\n  }\n  fromPoint2(position, target = new Raycaster$1()) {\n    const size = this._viewport.getSize();\n    const x = position.x / size.x * 2 - 1;\n    const y = -(position.y / size.y) * 2 + 1;\n    target.setFromCamera(new Vector2(x, y), this._camera.three);\n    return target;\n  }\n  fromPoint3(position, target = new Raycaster$1()) {\n    const direction = position.clone().sub(this._camera.position).normalize();\n    target.set(this._camera.position, direction);\n    return target;\n  }\n}\nclass InputAction {\n  constructor(type, modifier, position, raycaster) {\n    __publicField(this, \"position\");\n    __publicField(this, \"modifier\");\n    __publicField(this, \"type\");\n    __publicField(this, \"_raycaster\");\n    __publicField(this, \"_raycast\");\n    this.type = type;\n    this.modifier = modifier;\n    this.position = position;\n    this._raycaster = raycaster;\n  }\n  get raycaster() {\n    return this._raycaster.fromPoint2(this.position);\n  }\n  get raycast() {\n    var _a2;\n    return (_a2 = this._raycast) != null ? _a2 : this._raycast = this._raycaster.raycast2(this.position);\n  }\n  get object() {\n    return this.raycast.object;\n  }\n}\nclass TouchHandler extends InputHandler {\n  constructor(viewer) {\n    super(viewer);\n    __publicField(this, \"TAP_DURATION_MS\", 500);\n    __publicField(this, \"DOUBLE_TAP_DELAY_MS\", 500);\n    __publicField(this, \"TAP_MAX_MOVE_PIXEL\", 5);\n    __publicField(this, \"ZOOM_SPEED\", 1);\n    __publicField(this, \"MOVE_SPEED\", 100);\n    __publicField(this, \"rotateSpeed\", 1);\n    __publicField(this, \"orbitSpeed\", 1);\n    __publicField(this, \"_touch\");\n    __publicField(this, \"_touch1\");\n    __publicField(this, \"_touch2\");\n    __publicField(this, \"_touchStartTime\");\n    __publicField(this, \"_lastTapMs\");\n    __publicField(this, \"_touchStart\");\n    __publicField(this, \"reset\", () => {\n      this._touch = this._touch1 = this._touch2 = this._touchStartTime = void 0;\n    });\n    __publicField(this, \"onTap\", (position) => {\n      const time = Date.now();\n      const double = this._lastTapMs && time - this._lastTapMs < this.DOUBLE_TAP_DELAY_MS;\n      this._lastTapMs = time;\n      const action = new InputAction(\n        double ? \"double\" : \"main\",\n        \"none\",\n        position,\n        this._viewer.raycaster\n      );\n      this._viewer.inputs.MainAction(action);\n    });\n    __publicField(this, \"onTouchStart\", (event) => {\n      event.preventDefault();\n      if (!event || !event.touches || !event.touches.length) {\n        return;\n      }\n      this._touchStartTime = Date.now();\n      if (event.touches.length === 1) {\n        this._touch = this.touchToVector(event.touches[0]);\n        this._touch1 = this._touch2 = void 0;\n      } else if (event.touches.length === 2) {\n        this._touch1 = this.touchToVector(event.touches[0]);\n        this._touch2 = this.touchToVector(event.touches[1]);\n        this._touch = this.average(this._touch1, this._touch2);\n      }\n      this._touchStart = this._touch;\n    });\n    __publicField(this, \"onDrag\", (delta) => {\n      if (this._viewer.inputs.pointerActive === \"orbit\") {\n        this.camera.snap().orbit(this.toRotation(delta, this.orbitSpeed));\n      } else {\n        this.camera.snap().rotate(this.toRotation(delta, this.rotateSpeed));\n      }\n    });\n    __publicField(this, \"onDoubleDrag\", (delta) => {\n      const move = delta.clone().multiplyScalar(this.MOVE_SPEED);\n      this.camera.snap().move2(move, \"XY\");\n    });\n    __publicField(this, \"onPinchOrSpread\", (delta) => {\n      if (this._viewer.inputs.pointerActive === \"orbit\") {\n        this.camera.snap().zoom(1 + delta * this.ZOOM_SPEED);\n      } else {\n        this.camera.snap().move1(delta * this.ZOOM_SPEED, \"Z\");\n      }\n    });\n    __publicField(this, \"onTouchMove\", (event) => {\n      event.preventDefault();\n      if (!event || !event.touches || !event.touches.length)\n        return;\n      if (!this._touch)\n        return;\n      if (event.touches.length === 1) {\n        const pos = this.touchToVector(event.touches[0]);\n        const size = this.viewport.getSize();\n        const delta = pos.clone().sub(this._touch).multiply(new Vector2(1 / size.x, 1 / size.y));\n        this._touch = pos;\n        this.onDrag(delta);\n        return;\n      }\n      if (!this._touch1 || !this._touch2)\n        return;\n      if (event.touches.length >= 2) {\n        const p1 = this.touchToVector(event.touches[0]);\n        const p2 = this.touchToVector(event.touches[1]);\n        const p = this.average(p1, p2);\n        const size = this.viewport.getSize();\n        const moveDelta = this._touch.clone().sub(p).multiply(\n          new Vector2(-1 / size.x, -1 / size.y)\n        );\n        const zoom = p1.distanceTo(p2);\n        const prevZoom = this._touch1.distanceTo(this._touch2);\n        const min = Math.min(size.x, size.y);\n        const zoomDelta = (zoom - prevZoom) / -min;\n        this._touch = p;\n        this._touch1 = p1;\n        this._touch2 = p2;\n        if (moveDelta.length() > Math.abs(zoomDelta)) {\n          this.onDoubleDrag(moveDelta);\n        } else {\n          this.onPinchOrSpread(zoomDelta);\n        }\n      }\n    });\n    __publicField(this, \"onTouchEnd\", (event) => {\n      if (this.isSingleTouch() && this._touchStart && this._touch) {\n        const touchDurationMs = Date.now() - this._touchStartTime;\n        const length = this._touch.distanceTo(this._touchStart);\n        if (touchDurationMs < this.TAP_DURATION_MS && length < this.TAP_MAX_MOVE_PIXEL) {\n          this.onTap(this._touch);\n        }\n      }\n      this.reset();\n    });\n    this.rotateSpeed = viewer.settings.camera.controls.rotateSpeed;\n    this.orbitSpeed = viewer.settings.camera.controls.orbitSpeed;\n  }\n  get camera() {\n    return this._viewer.camera;\n  }\n  get viewport() {\n    return this._viewer.viewport;\n  }\n  addListeners() {\n    const canvas = this.viewport.canvas;\n    this.reg(canvas, \"touchstart\", this.onTouchStart);\n    this.reg(canvas, \"touchend\", this.onTouchEnd);\n    this.reg(canvas, \"touchmove\", this.onTouchMove);\n  }\n  toRotation(delta, speed) {\n    const rotation = new Vector2();\n    rotation.x = delta.y;\n    rotation.y = delta.x;\n    rotation.multiplyScalar(-180 * speed);\n    return rotation;\n  }\n  isSingleTouch() {\n    return this._touch !== void 0 && this._touchStartTime !== void 0 && this._touch1 === void 0 && this._touch2 === void 0;\n  }\n  touchToVector(touch) {\n    return new Vector2(touch.pageX, touch.pageY);\n  }\n  average(p1, p2) {\n    return p1.clone().lerp(p2, 0.5);\n  }\n}\nclass MouseHandler extends InputHandler {\n  constructor(viewer) {\n    super(viewer);\n    __publicField(this, \"_idleDelayMs\", 150);\n    __publicField(this, \"_scrollSpeed\", 1.5);\n    __publicField(this, \"zoomSpeed\", 1);\n    __publicField(this, \"rotateSpeed\", 1);\n    __publicField(this, \"orbitSpeed\", 1);\n    __publicField(this, \"_buttonDown\");\n    __publicField(this, \"_hasMouseMoved\", false);\n    __publicField(this, \"_hasCameraMoved\", false);\n    __publicField(this, \"_idleTimeout\");\n    __publicField(this, \"_idlePosition\");\n    __publicField(this, \"_lastPosition\");\n    __publicField(this, \"_downPosition\");\n    __publicField(this, \"reset\", () => {\n      this._buttonDown = void 0;\n      this._hasMouseMoved = false;\n      this._lastPosition = this._downPosition = void 0;\n      clearTimeout(this._idleTimeout);\n    });\n    __publicField(this, \"onMouseOut\", (event) => {\n      event.stopImmediatePropagation();\n      this._buttonDown = void 0;\n      this._hasMouseMoved = false;\n      this._lastPosition = void 0;\n      this.resetIdle();\n    });\n    __publicField(this, \"onMouseIdle\", (position) => {\n      if (this._buttonDown || !position)\n        return;\n      const action = new InputAction(\"idle\", \"none\", position, this.raycaster);\n      this._viewer.inputs.IdleAction(action);\n      this._idlePosition = position;\n    });\n    __publicField(this, \"onCameraMoved\", () => {\n      this.resetIdle();\n      this._hasCameraMoved = true;\n      this.gizmoRect.visible = false;\n    });\n    __publicField(this, \"onMouseMove\", (event) => {\n      this._lastPosition = new Vector2(event.offsetX, event.offsetY);\n      if (!this._idlePosition || this._lastPosition.distanceTo(this._idlePosition) > 5) {\n        this.resetIdle();\n      }\n      if (!this._buttonDown)\n        return;\n      this.onMouseDrag(event);\n    });\n    __publicField(this, \"onMouseDown\", (event) => {\n      event.stopImmediatePropagation();\n      event.preventDefault();\n      if (this._buttonDown)\n        return;\n      this.inputs.ContextMenu(void 0);\n      this._hasCameraMoved = false;\n      this._downPosition = new Vector2(event.offsetX, event.offsetY);\n      this._hasMouseMoved = false;\n      this.viewport.canvas.focus();\n      this._buttonDown = this.getButton(event);\n      const pointer = this._buttonDown === \"middle\" ? \"pan\" : this._buttonDown === \"right\" ? \"look\" : void 0;\n      this.inputs.pointerOverride = pointer;\n    });\n    __publicField(this, \"onMouseWheel\", (event) => {\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      const scrollValue = Math.sign(event.deltaY);\n      if (event.ctrlKey) {\n        this.camera.speed -= scrollValue;\n      } else {\n        const zoom = Math.pow(this.scrollSpeed, scrollValue);\n        this.camera.lerp(0.75).zoom(zoom);\n      }\n    });\n    __publicField(this, \"onMouseUp\", (event) => {\n      event.stopImmediatePropagation();\n      const btn = this.getButton(event);\n      if (btn === this._buttonDown)\n        return;\n      this._viewer.gizmos.rectangle.visible = false;\n      event.preventDefault();\n      if (!this._buttonDown)\n        return;\n      if (this.inputs.pointerActive === \"rect\" && this._hasMouseMoved && !this._hasCameraMoved) {\n        this.onRectEnd();\n      } else if (event.button === 0 && !this._hasMouseMoved) {\n        this.onMouseClick(\n          new Vector2(event.offsetX, event.offsetY),\n          false,\n          this.getModifier(event)\n        );\n      } else if (event.button === 2 && !this._hasMouseMoved) {\n        this.inputs.ContextMenu(new Vector2(event.clientX, event.clientY));\n      }\n      this._buttonDown = void 0;\n      this.inputs.pointerOverride = void 0;\n    });\n    __publicField(this, \"onDoubleClick\", (event) => {\n      event.stopImmediatePropagation();\n      this.onMouseClick(\n        new Vector2(event.offsetX, event.offsetY),\n        true,\n        this.getModifier(event)\n      );\n    });\n    __publicField(this, \"onMouseClick\", (position, doubleClick, modifier) => {\n      const action = new InputAction(\n        doubleClick ? \"double\" : \"main\",\n        modifier,\n        position,\n        this.raycaster\n      );\n      this._viewer.inputs.MainAction(action);\n    });\n    this.rotateSpeed = viewer.settings.camera.controls.rotateSpeed;\n    this.orbitSpeed = viewer.settings.camera.controls.orbitSpeed;\n    this.scrollSpeed = viewer.settings.camera.controls.scrollSpeed;\n  }\n  get scrollSpeed() {\n    return this._scrollSpeed;\n  }\n  set scrollSpeed(value) {\n    this._scrollSpeed = Math.min(Math.max(0.1, value), 10);\n  }\n  get camera() {\n    return this._viewer.camera;\n  }\n  get viewport() {\n    return this._viewer.viewport;\n  }\n  get canvas() {\n    return this.viewport.canvas;\n  }\n  get raycaster() {\n    return this._viewer.raycaster;\n  }\n  get inputs() {\n    return this._viewer.inputs;\n  }\n  get gizmoRect() {\n    return this._viewer.gizmos.rectangle;\n  }\n  addListeners() {\n    this.reg(this.canvas, \"mousedown\", this.onMouseDown);\n    this.reg(this.canvas, \"wheel\", this.onMouseWheel);\n    this.reg(this.canvas, \"mousemove\", this.onMouseMove);\n    this.reg(this.canvas, \"mouseup\", this.onMouseUp);\n    this.reg(this.canvas, \"mouseout\", this.onMouseOut);\n    this.reg(this.canvas, \"dblclick\", this.onDoubleClick);\n    this.reg(this.canvas, \"contextmenu\", (e) => e.preventDefault());\n    this._unregisters.push(\n      this.camera.onMoved.subscribe(() => this.onCameraMoved())\n    );\n  }\n  resetIdle() {\n    if (this._idlePosition) {\n      this._viewer.inputs.IdleAction(void 0);\n      this._idlePosition = void 0;\n    }\n    clearTimeout(this._idleTimeout);\n    this._idleTimeout = setTimeout(() => {\n      this.onMouseIdle(this._lastPosition);\n    }, this._idleDelayMs);\n  }\n  onMouseDrag(event) {\n    var _a2;\n    event.stopImmediatePropagation();\n    event.preventDefault();\n    const deltaX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;\n    const deltaY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;\n    const size = this.viewport.getSize();\n    const delta = new Vector2(deltaX / size.x, deltaY / size.y);\n    const position = new Vector2(event.offsetX, event.offsetY);\n    this._hasMouseMoved = this._hasMouseMoved || this._downPosition && ((_a2 = this._downPosition) == null ? void 0 : _a2.distanceTo(position)) > 4;\n    switch (this._buttonDown) {\n      case \"main\":\n        this.onMouseMainDrag(delta);\n        break;\n      case \"middle\":\n        this.onMouseMiddleDrag(delta);\n        break;\n      case \"right\":\n        this.onMouseRightDrag(delta);\n        break;\n    }\n  }\n  toRotation(delta, speed) {\n    const rot = delta.clone();\n    rot.x = -delta.y;\n    rot.y = -delta.x;\n    rot.multiplyScalar(180 * speed);\n    return rot;\n  }\n  onMouseMainDrag(delta) {\n    switch (this.inputs.pointerActive) {\n      case \"orbit\":\n        this.camera.snap().orbit(this.toRotation(delta, this.orbitSpeed));\n        break;\n      case \"look\":\n        this.camera.snap().rotate(this.toRotation(delta, this.rotateSpeed));\n        break;\n      case \"pan\":\n        this.pan(delta);\n        break;\n      case \"zoom\":\n        this.camera.snap().zoom(1 + delta.y * this.zoomSpeed);\n        break;\n      case \"rect\":\n        if (!this._hasCameraMoved) {\n          this.updateRectangle();\n          this.gizmoRect.visible = true;\n        }\n        break;\n    }\n  }\n  onMouseMiddleDrag(delta) {\n    this.pan(delta);\n  }\n  pan(delta) {\n    const size = this.camera.frustrumSizeAt(this.camera.target);\n    size.multiply(delta);\n    this.camera.snap().move2(size, \"XY\");\n  }\n  onMouseRightDrag(delta) {\n    this.camera.snap().rotate(this.toRotation(delta, this.rotateSpeed));\n  }\n  getButton(event) {\n    return event.buttons & 1 ? \"main\" : event.buttons & 2 ? \"right\" : event.buttons & 4 ? \"middle\" : void 0;\n  }\n  onRectEnd() {\n    const box = this.gizmoRect.getBoundingBox();\n    if (!box)\n      return;\n    const center = box.getCenter(new Vector3());\n    const size = box.getSize(new Vector3());\n    size.multiplyScalar(0.5);\n    box.setFromCenterAndSize(center, size);\n    this._viewer.camera.lerp(1).frame(box);\n  }\n  getModifier(event) {\n    return event.ctrlKey ? \"ctrl\" : event.shiftKey ? \"shift\" : \"none\";\n  }\n  updateRectangle() {\n    if (this._downPosition && this._lastPosition) {\n      this.gizmoRect.setCorners(this._downPosition, this._lastPosition);\n    }\n  }\n}\nvar dist = {};\nvar SimpleEventDispatcher$1 = {};\nObject.defineProperty(SimpleEventDispatcher$1, \"__esModule\", { value: true });\nSimpleEventDispatcher$1.SimpleEventDispatcher = void 0;\nconst ste_core_1$2 = dist$1;\nclass SimpleEventDispatcher extends ste_core_1$2.DispatcherBase {\n  constructor() {\n    super();\n  }\n  dispatch(args) {\n    const result = this._dispatch(false, this, arguments);\n    if (result == null) {\n      throw new ste_core_1$2.DispatchError(\"Got `null` back from dispatch.\");\n    }\n    return result;\n  }\n  dispatchAsync(args) {\n    this._dispatch(true, this, arguments);\n  }\n  asEvent() {\n    return super.asEvent();\n  }\n}\nSimpleEventDispatcher$1.SimpleEventDispatcher = SimpleEventDispatcher;\nvar SimpleEventHandlingBase$1 = {};\nvar SimpleEventList$1 = {};\nObject.defineProperty(SimpleEventList$1, \"__esModule\", { value: true });\nSimpleEventList$1.SimpleEventList = void 0;\nconst ste_core_1$1 = dist$1;\nconst SimpleEventDispatcher_1$1 = SimpleEventDispatcher$1;\nclass SimpleEventList extends ste_core_1$1.EventListBase {\n  constructor() {\n    super();\n  }\n  createDispatcher() {\n    return new SimpleEventDispatcher_1$1.SimpleEventDispatcher();\n  }\n}\nSimpleEventList$1.SimpleEventList = SimpleEventList;\nObject.defineProperty(SimpleEventHandlingBase$1, \"__esModule\", { value: true });\nSimpleEventHandlingBase$1.SimpleEventHandlingBase = void 0;\nconst ste_core_1 = dist$1;\nconst SimpleEventList_1 = SimpleEventList$1;\nclass SimpleEventHandlingBase extends ste_core_1.HandlingBase {\n  constructor() {\n    super(new SimpleEventList_1.SimpleEventList());\n  }\n}\nSimpleEventHandlingBase$1.SimpleEventHandlingBase = SimpleEventHandlingBase;\nvar NonUniformSimpleEventList$1 = {};\nObject.defineProperty(NonUniformSimpleEventList$1, \"__esModule\", { value: true });\nNonUniformSimpleEventList$1.NonUniformSimpleEventList = void 0;\nconst SimpleEventDispatcher_1 = SimpleEventDispatcher$1;\nclass NonUniformSimpleEventList {\n  constructor() {\n    this._events = {};\n  }\n  get(name) {\n    if (this._events[name]) {\n      return this._events[name];\n    }\n    const event = this.createDispatcher();\n    this._events[name] = event;\n    return event;\n  }\n  remove(name) {\n    delete this._events[name];\n  }\n  createDispatcher() {\n    return new SimpleEventDispatcher_1.SimpleEventDispatcher();\n  }\n}\nNonUniformSimpleEventList$1.NonUniformSimpleEventList = NonUniformSimpleEventList;\n(function(exports) {\n  Object.defineProperty(exports, \"__esModule\", { value: true });\n  exports.NonUniformSimpleEventList = exports.SimpleEventList = exports.SimpleEventHandlingBase = exports.SimpleEventDispatcher = void 0;\n  const SimpleEventDispatcher_12 = SimpleEventDispatcher$1;\n  Object.defineProperty(exports, \"SimpleEventDispatcher\", { enumerable: true, get: function() {\n    return SimpleEventDispatcher_12.SimpleEventDispatcher;\n  } });\n  const SimpleEventHandlingBase_1 = SimpleEventHandlingBase$1;\n  Object.defineProperty(exports, \"SimpleEventHandlingBase\", { enumerable: true, get: function() {\n    return SimpleEventHandlingBase_1.SimpleEventHandlingBase;\n  } });\n  const NonUniformSimpleEventList_1 = NonUniformSimpleEventList$1;\n  Object.defineProperty(exports, \"NonUniformSimpleEventList\", { enumerable: true, get: function() {\n    return NonUniformSimpleEventList_1.NonUniformSimpleEventList;\n  } });\n  const SimpleEventList_12 = SimpleEventList$1;\n  Object.defineProperty(exports, \"SimpleEventList\", { enumerable: true, get: function() {\n    return SimpleEventList_12.SimpleEventList;\n  } });\n})(dist);\nclass DefaultInputScheme {\n  constructor(viewer) {\n    __publicField(this, \"_viewer\");\n    this._viewer = viewer;\n  }\n  onMainAction(action) {\n    const camera = this._viewer.camera;\n    const selection = this._viewer.selection;\n    if (!(action == null ? void 0 : action.object)) {\n      selection.select(void 0);\n      if (action.type === \"double\") {\n        camera.lerp(1).frame(\"all\");\n      }\n      return;\n    }\n    if (action.modifier !== \"none\") {\n      selection.toggle(action.object);\n    } else {\n      selection.select(action.object);\n    }\n    if (action.type === \"double\") {\n      camera.lerp(1).frame(action.object);\n    }\n  }\n  onIdleAction(hit) {\n    if (!this._viewer.gizmos.section.interactive) {\n      this._viewer.selection.focus(hit == null ? void 0 : hit.object);\n    }\n  }\n  onKeyAction(key) {\n    const camera = this._viewer.camera;\n    const selection = this._viewer.selection;\n    switch (key) {\n      case KEYS.KEY_P:\n        camera.orthographic = !camera.orthographic;\n        return true;\n      case KEYS.KEY_ADD:\n      case KEYS.KEY_OEM_PLUS:\n        camera.speed += 1;\n        return true;\n      case KEYS.KEY_SUBTRACT:\n      case KEYS.KEY_OEM_MINUS:\n        camera.speed -= 1;\n        return true;\n      case KEYS.KEY_F8:\n      case KEYS.KEY_SPACE:\n        this._viewer.inputs.pointerActive = this._viewer.inputs.pointerFallback;\n        return true;\n      case KEYS.KEY_HOME:\n        camera.lerp(1).reset();\n        return true;\n      case KEYS.KEY_ESCAPE:\n        selection.clear();\n        return true;\n      case KEYS.KEY_Z:\n      case KEYS.KEY_F:\n        if (selection.count > 0) {\n          camera.lerp(1).frame(selection.getBoundingBox());\n        } else {\n          camera.lerp(1).frame(\"all\");\n        }\n        return true;\n      default:\n        return false;\n    }\n  }\n}\nclass Input {\n  constructor(viewer) {\n    __publicField(this, \"_viewer\");\n    __publicField(this, \"touch\");\n    __publicField(this, \"mouse\");\n    __publicField(this, \"keyboard\");\n    __publicField(this, \"_pointerActive\", \"orbit\");\n    __publicField(this, \"_pointerFallback\", \"look\");\n    __publicField(this, \"_pointerOverride\");\n    __publicField(this, \"_onPointerModeChanged\", new dist$2.SignalDispatcher());\n    __publicField(this, \"_onPointerOverrideChanged\", new dist$2.SignalDispatcher());\n    __publicField(this, \"_onContextMenu\", new dist.SimpleEventDispatcher());\n    __publicField(this, \"_scheme\");\n    __publicField(this, \"unregisterAll\", () => {\n      this.mouse.unregister();\n      this.keyboard.unregister();\n      this.touch.unregister();\n    });\n    this._viewer = viewer;\n    this.keyboard = new KeyboardHandler(viewer);\n    this.mouse = new MouseHandler(viewer);\n    this.touch = new TouchHandler(viewer);\n    this._scheme = new DefaultInputScheme(viewer);\n    this.pointerActive = viewer.settings.camera.controls.orbit ? \"orbit\" : \"look\";\n    this._pointerFallback = viewer.settings.camera.controls.orbit ? \"look\" : \"orbit\";\n  }\n  get pointerFallback() {\n    return this._pointerFallback;\n  }\n  get pointerActive() {\n    return this._pointerActive;\n  }\n  get pointerOverride() {\n    return this._pointerOverride;\n  }\n  set pointerOverride(value) {\n    if (value === this._pointerOverride)\n      return;\n    this._pointerOverride = value;\n    this._onPointerOverrideChanged.dispatch();\n  }\n  set pointerActive(value) {\n    if (value === this._pointerActive)\n      return;\n    if (value === \"look\")\n      this._pointerFallback = \"orbit\";\n    else if (value === \"orbit\")\n      this._pointerFallback = \"look\";\n    this._viewer.gizmos.rectangle.visible = false;\n    this._pointerActive = value;\n    this._onPointerModeChanged.dispatch();\n  }\n  get onPointerModeChanged() {\n    return this._onPointerModeChanged.asEvent();\n  }\n  get onPointerOverrideChanged() {\n    return this._onPointerOverrideChanged.asEvent();\n  }\n  get onContextMenu() {\n    return this._onContextMenu.asEvent();\n  }\n  get scheme() {\n    return this._scheme;\n  }\n  set scheme(value) {\n    this._scheme = value != null ? value : new DefaultInputScheme(this._viewer);\n  }\n  MainAction(action) {\n    this._scheme.onMainAction(action);\n  }\n  IdleAction(action) {\n    this._scheme.onIdleAction(action);\n  }\n  KeyAction(key) {\n    return this._scheme.onKeyAction(key);\n  }\n  ContextMenu(position) {\n    this._onContextMenu.dispatch(position);\n  }\n  registerAll() {\n    this.keyboard.register();\n    this.mouse.register();\n    this.touch.register();\n  }\n  resetAll() {\n    this.mouse.reset();\n    this.keyboard.reset();\n    this.touch.reset();\n  }\n}\nclass Selection {\n  constructor(materials) {\n    __publicField(this, \"_materials\");\n    __publicField(this, \"_objects\", /* @__PURE__ */ new Set());\n    __publicField(this, \"_focusedObject\");\n    __publicField(this, \"_vim\");\n    __publicField(this, \"_lastFocusTime\", Date.now());\n    __publicField(this, \"_onValueChanged\", new dist$2.SignalDispatcher());\n    __publicField(this, \"_unsub\", []);\n    this._materials = materials;\n  }\n  get onValueChanged() {\n    return this._onValueChanged.asEvent();\n  }\n  get vim() {\n    return this._vim;\n  }\n  get objects() {\n    return this._objects.values();\n  }\n  getBoundingBox(target = new Box3()) {\n    if (this._objects.size === 0)\n      return;\n    let initialized = false;\n    for (const o of this._objects) {\n      const other = o.getBoundingBox();\n      if (!other)\n        continue;\n      if (!initialized) {\n        target.copy(other);\n      } else {\n        target.union(other);\n      }\n      initialized = true;\n    }\n    if (!initialized) {\n      return;\n    }\n    return target;\n  }\n  focus(object) {\n    if (this._focusedObject === object)\n      return;\n    if (this._focusedObject)\n      this._focusedObject.focused = false;\n    if (object)\n      object.focused = true;\n    this._focusedObject = object;\n    this._lastFocusTime = Date.now();\n    this._materials.focusIntensity = 0;\n  }\n  select(object) {\n    object = object === void 0 ? [] : Array.isArray(object) ? object : [object];\n    object = object.filter((o) => o);\n    if (object.length === this._objects.size && object.every((o) => this._objects.has(o))) {\n      return;\n    }\n    this._objects.forEach((o) => o.outline = false);\n    this._objects.clear();\n    this._vim = void 0;\n    object == null ? void 0 : object.forEach((o) => {\n      this.clearOnNewVim(o.vim);\n      this._objects.add(o);\n      o.outline = true;\n    });\n    this._onValueChanged.dispatch();\n  }\n  has(object) {\n    return this._objects.has(object);\n  }\n  get count() {\n    return this._objects.size;\n  }\n  add(...objects) {\n    if (!objects)\n      return;\n    if (objects.length === 0)\n      return;\n    const count = this._objects.size;\n    const oldVim = this._vim;\n    objects.forEach((o) => {\n      this.clearOnNewVim(o.vim);\n      this._objects.add(o);\n      o.outline = true;\n    });\n    if (oldVim === this._vim && this._objects.size === count)\n      return;\n    this._onValueChanged.dispatch();\n  }\n  remove(...objects) {\n    if (!objects)\n      return;\n    if (objects.length === 0)\n      return;\n    const count = this._objects.size;\n    objects.forEach((o) => {\n      o.outline = false;\n      this._objects.delete(o);\n    });\n    if (this._objects.size === count)\n      return;\n    if (this._objects.size === 0) {\n      this._vim = void 0;\n    }\n    this._onValueChanged.dispatch();\n  }\n  toggle(...objects) {\n    if (!objects)\n      return;\n    if (objects.length === 0)\n      return;\n    const count = this._objects.size;\n    const oldVim = this.vim;\n    objects.forEach((o) => {\n      if (this._objects.has(o)) {\n        this._objects.delete(o);\n        o.outline = false;\n      } else {\n        this.clearOnNewVim(o.vim);\n        this._objects.add(o);\n        o.outline = true;\n      }\n    });\n    if (oldVim === this._vim && this._objects.size === count)\n      return;\n    this._onValueChanged.dispatch();\n  }\n  clear() {\n    this._vim = void 0;\n    if (this._objects.size === 0)\n      return;\n    this._objects.forEach((o) => o.outline = false);\n    this._objects.clear();\n    this._onValueChanged.dispatch();\n  }\n  dispose() {\n    this._unsub.forEach((u) => u());\n    this._unsub.length = 0;\n  }\n  clearOnNewVim(vim) {\n    if (this._vim) {\n      if (this._vim !== vim) {\n        console.log(\"Cross vim selection. Clearing selection.\");\n        this._objects.clear();\n        this._vim = vim;\n      }\n    } else {\n      this._vim = vim;\n    }\n  }\n  update() {\n    if (!this._focusedObject)\n      return;\n    const time = Date.now();\n    const timeElapsed = time - this._lastFocusTime;\n    const focus = Math.min(timeElapsed / 100, 1);\n    this._materials.focusIntensity = focus / 2;\n  }\n}\nclass GroundPlane {\n  constructor(settings) {\n    __publicField(this, \"mesh\");\n    __publicField(this, \"_source\");\n    __publicField(this, \"_size\", 1);\n    __publicField(this, \"_geometry\");\n    __publicField(this, \"_material\");\n    __publicField(this, \"_texture\");\n    this._geometry = new PlaneGeometry();\n    this._material = new MeshBasicMaterial({\n      transparent: true,\n      depthTest: true,\n      depthWrite: false\n    });\n    this.mesh = new Mesh(this._geometry, this._material);\n    this.mesh.renderOrder = -1;\n    this._size = settings.groundPlane.size;\n    this.mesh.visible = settings.groundPlane.visible;\n    this.applyTexture(\n      settings.groundPlane.encoding,\n      settings.groundPlane.texture\n    );\n    this._material.color.copy(settings.groundPlane.color);\n    this._material.opacity = settings.groundPlane.opacity;\n  }\n  get visible() {\n    return this.mesh.visible;\n  }\n  set visible(value) {\n    this.mesh.visible = value;\n  }\n  adaptToContent(box) {\n    var _a2;\n    const center = box.getCenter(new Vector3());\n    const position = new Vector3(\n      center.x,\n      box.min.y - Math.abs(box.min.y) * 0.01,\n      center.z\n    );\n    this.mesh.position.copy(position);\n    this.mesh.quaternion.copy(\n      new Quaternion().setFromEuler(new Euler(1.5 * Math.PI, 0, 0))\n    );\n    const sphere = box == null ? void 0 : box.getBoundingSphere(new Sphere());\n    const size = ((_a2 = sphere == null ? void 0 : sphere.radius) != null ? _a2 : 1) * this._size;\n    const scale = new Vector3(1, 1, 1).multiplyScalar(size);\n    this.mesh.scale.copy(scale);\n  }\n  applyTexture(encoding, source) {\n    var _a2;\n    if (source === this._source)\n      return;\n    this._source = source;\n    (_a2 = this._texture) == null ? void 0 : _a2.dispose();\n    this._texture = void 0;\n    if (!source || !encoding)\n      return;\n    if (encoding === \"url\") {\n      const loader = new TextureLoader();\n      this._texture = loader.load(source);\n    }\n    if (encoding === \"base64\") {\n      const image = new Image();\n      image.src = source;\n      const txt = new Texture();\n      this._texture = txt;\n      this._texture.image = image;\n      image.onload = () => {\n        txt.needsUpdate = true;\n      };\n    }\n    if (!this._texture) {\n      console.error(\"Failed to load texture: \" + source);\n      return;\n    }\n    this._material.map = this._texture;\n  }\n  dispose() {\n    var _a2, _b2, _c;\n    (_a2 = this._geometry) == null ? void 0 : _a2.dispose();\n    (_b2 = this._material) == null ? void 0 : _b2.dispose();\n    (_c = this._texture) == null ? void 0 : _c.dispose();\n    this._texture = void 0;\n  }\n}\nclass Skybox {\n  constructor(camera, renderer, materials, settings) {\n    __publicField(this, \"mesh\");\n    __publicField(this, \"_plane\");\n    __publicField(this, \"_material\");\n    __publicField(this, \"_renderer\");\n    this._renderer = renderer;\n    this._plane = new PlaneGeometry();\n    this._material = materials.skyBox;\n    this.mesh = new Mesh(this._plane, materials.skyBox);\n    this.enable = settings.skybox.enable;\n    this.skyColor = settings.skybox.skyColor;\n    this.groundColor = settings.skybox.groundColor;\n    this.sharpness = settings.skybox.sharpness;\n    camera.onMoved.subscribe(() => {\n      this.mesh.position.copy(camera.position).add(camera.forward);\n      this.mesh.quaternion.copy(camera.quaternion);\n      const size = camera.frustrumSizeAt(this.mesh.position);\n      this.mesh.scale.set(size.x, size.y, 1);\n    });\n  }\n  get enable() {\n    return this.mesh.visible;\n  }\n  set enable(value) {\n    this.mesh.visible = value;\n    this._renderer.needsUpdate = true;\n  }\n  get skyColor() {\n    return this._material.skyColor;\n  }\n  set skyColor(value) {\n    this._material.skyColor = value;\n    this._renderer.needsUpdate = true;\n  }\n  get groundColor() {\n    return this._material.groundColor;\n  }\n  set groundColor(value) {\n    this._material.groundColor = value;\n    this._renderer.needsUpdate = true;\n  }\n  get sharpness() {\n    return this._material.sharpness;\n  }\n  set sharpness(value) {\n    this._material.sharpness = value;\n    this._renderer.needsUpdate = true;\n  }\n  dispose() {\n    this._plane.dispose();\n  }\n}\nclass CameraLight {\n  constructor(camera, options) {\n    __publicField(this, \"light\");\n    __publicField(this, \"_camera\");\n    __publicField(this, \"_unsubscribe\");\n    __publicField(this, \"position\");\n    this._camera = camera;\n    this.position = options.position.clone();\n    this.light = new DirectionalLight(options.color, options.intensity);\n    this.followCamera = options.followCamera;\n  }\n  get color() {\n    return this.light.color;\n  }\n  set color(value) {\n    this.light.color = value;\n  }\n  get intensity() {\n    return this.light.intensity;\n  }\n  set intensity(value) {\n    this.light.intensity = value;\n  }\n  get followCamera() {\n    return this._unsubscribe !== void 0;\n  }\n  set followCamera(value) {\n    var _a2;\n    if (this.followCamera === value)\n      return;\n    (_a2 = this._unsubscribe) == null ? void 0 : _a2.call(this);\n    this._unsubscribe = void 0;\n    if (value) {\n      this._unsubscribe = this._camera.onMoved.subscribe(() => this.updateLightPosition());\n      this.updateLightPosition();\n    }\n  }\n  updateLightPosition() {\n    this.light.position.copy(this.position).applyQuaternion(this._camera.quaternion);\n  }\n  dispose() {\n    var _a2;\n    (_a2 = this._unsubscribe) == null ? void 0 : _a2.call(this);\n    this._unsubscribe = void 0;\n    this.light.dispose();\n  }\n}\nclass Environment {\n  constructor(camera, renderer, viewerMaterials, settings) {\n    __publicField(this, \"_renderer\");\n    __publicField(this, \"_camera\");\n    __publicField(this, \"skyLight\");\n    __publicField(this, \"sunLights\");\n    __publicField(this, \"groundPlane\");\n    __publicField(this, \"skybox\");\n    this._camera = camera;\n    this._renderer = renderer;\n    this.groundPlane = new GroundPlane(settings);\n    this.skyLight = this.createSkyLight(settings);\n    this.skybox = new Skybox(camera, renderer, viewerMaterials, settings);\n    this.sunLights = this.createSunLights(settings);\n    this.setupRendererListeners();\n    this.addObjectsToRenderer();\n  }\n  getObjects() {\n    return [this.groundPlane.mesh, this.skyLight, ...this.sunLights.map((l) => l.light), this.skybox.mesh];\n  }\n  createSkyLight(settings) {\n    const { skyColor, groundColor, intensity } = settings.skylight;\n    return new HemisphereLight(skyColor, groundColor, intensity);\n  }\n  createSunLights(settings) {\n    return settings.sunlights.map(\n      (s) => new CameraLight(this._camera, s)\n    );\n  }\n  addObjectsToRenderer() {\n    this.getObjects().forEach((o) => this._renderer.add(o));\n  }\n  setupRendererListeners() {\n    this._renderer.onBoxUpdated.subscribe(() => {\n      const box = this._renderer.getBoundingBox();\n      this.groundPlane.adaptToContent(box);\n    });\n  }\n  dispose() {\n    this.getObjects().forEach((o) => this._renderer.remove(o));\n    this.sunLights.forEach((s) => s.dispose());\n    this.skyLight.dispose();\n    this.groundPlane.dispose();\n    this.skybox.dispose();\n  }\n}\nclass CSS2DObject extends Object3D$1 {\n  constructor(element = document.createElement(\"div\")) {\n    super();\n    this.isCSS2DObject = true;\n    this.element = element;\n    this.element.style.position = \"absolute\";\n    this.element.style.userSelect = \"none\";\n    this.element.setAttribute(\"draggable\", false);\n    this.addEventListener(\"removed\", function() {\n      this.traverse(function(object) {\n        if (object.element instanceof Element && object.element.parentNode !== null) {\n          object.element.parentNode.removeChild(object.element);\n        }\n      });\n    });\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.element = source.element.cloneNode(true);\n    return this;\n  }\n}\nconst _vector = new Vector3();\nconst _viewMatrix = new Matrix4();\nconst _viewProjectionMatrix = new Matrix4();\nconst _a = new Vector3();\nconst _b = new Vector3();\nclass CSS2DRenderer {\n  constructor(parameters = {}) {\n    const _this = this;\n    let _width, _height;\n    let _widthHalf, _heightHalf;\n    const cache = {\n      objects: /* @__PURE__ */ new WeakMap()\n    };\n    const domElement = parameters.element !== void 0 ? parameters.element : document.createElement(\"div\");\n    domElement.style.overflow = \"hidden\";\n    this.domElement = domElement;\n    this.getSize = function() {\n      return {\n        width: _width,\n        height: _height\n      };\n    };\n    this.render = function(scene, camera) {\n      if (scene.autoUpdate === true)\n        scene.updateMatrixWorld();\n      if (camera.parent === null)\n        camera.updateMatrixWorld();\n      _viewMatrix.copy(camera.matrixWorldInverse);\n      _viewProjectionMatrix.multiplyMatrices(camera.projectionMatrix, _viewMatrix);\n      renderObject(scene, scene, camera);\n      zOrder2(scene);\n    };\n    this.setSize = function(width, height) {\n      _width = width;\n      _height = height;\n      _widthHalf = _width / 2;\n      _heightHalf = _height / 2;\n      domElement.style.width = width + \"px\";\n      domElement.style.height = height + \"px\";\n    };\n    function renderObject(object, scene, camera) {\n      if (object.isCSS2DObject) {\n        _vector.setFromMatrixPosition(object.matrixWorld);\n        _vector.applyMatrix4(_viewProjectionMatrix);\n        const visible = object.visible === true && (_vector.z >= -1 && _vector.z <= 1) && object.layers.test(camera.layers) === true;\n        object.element.style.display = visible === true ? \"\" : \"none\";\n        if (visible === true) {\n          object.onBeforeRender(_this, scene, camera);\n          const element = object.element;\n          element.style.transform = \"translate(-50%,-50%) translate(\" + (_vector.x * _widthHalf + _widthHalf) + \"px,\" + (-_vector.y * _heightHalf + _heightHalf) + \"px)\";\n          if (element.parentNode !== domElement) {\n            domElement.appendChild(element);\n          }\n          object.onAfterRender(_this, scene, camera);\n        }\n        const objectData = {\n          distanceToCameraSquared: getDistanceToSquared(camera, object)\n        };\n        cache.objects.set(object, objectData);\n      }\n      for (let i = 0, l = object.children.length; i < l; i++) {\n        renderObject(object.children[i], scene, camera);\n      }\n    }\n    function getDistanceToSquared(object1, object2) {\n      _a.setFromMatrixPosition(object1.matrixWorld);\n      _b.setFromMatrixPosition(object2.matrixWorld);\n      return _a.distanceToSquared(_b);\n    }\n    function filterAndFlatten(scene) {\n      const result = [];\n      scene.traverse(function(object) {\n        if (object.isCSS2DObject)\n          result.push(object);\n      });\n      return result;\n    }\n    function zOrder2(scene) {\n      const sorted = filterAndFlatten(scene).sort(function(a, b) {\n        if (a.renderOrder !== b.renderOrder) {\n          return b.renderOrder - a.renderOrder;\n        }\n        const distanceA = cache.objects.get(a).distanceToCameraSquared;\n        const distanceB = cache.objects.get(b).distanceToCameraSquared;\n        return distanceA - distanceB;\n      });\n      const zMax = sorted.length;\n      for (let i = 0, l = sorted.length; i < l; i++) {\n        sorted[i].element.style.zIndex = zMax - i;\n      }\n    }\n  }\n}\nclass RenderScene {\n  constructor() {\n    __publicField(this, \"scene\");\n    __publicField(this, \"boxUpdated\", false);\n    __publicField(this, \"_vimScenes\", []);\n    __publicField(this, \"_boundingBox\");\n    __publicField(this, \"_memory\", 0);\n    __publicField(this, \"_2dCount\", 0);\n    this.scene = new Scene$1();\n  }\n  get estimatedMemory() {\n    return this._memory;\n  }\n  has2dObjects() {\n    return this._2dCount > 0;\n  }\n  hasOutline() {\n    for (const s of this._vimScenes) {\n      if (s.hasOutline)\n        return true;\n    }\n    return false;\n  }\n  clearUpdateFlags() {\n    this._vimScenes.forEach((s) => s.clearUpdateFlag());\n  }\n  getBoundingBox(target = new Box3()) {\n    return this._boundingBox ? target.copy(this._boundingBox) : target.set(new Vector3(-1, -1, -1), new Vector3(1, 1, 1));\n  }\n  getAverageBoundingBox() {\n    if (this._vimScenes.length === 0) {\n      return new Box3();\n    }\n    const result = new Box3();\n    result.copy(this._vimScenes[0].getAverageBoundingBox());\n    for (let i = 1; i < this._vimScenes.length; i++) {\n      result.union(this._vimScenes[i].getAverageBoundingBox());\n    }\n    return result;\n  }\n  add(target) {\n    if (target instanceof Scene) {\n      this.addScene(target);\n      return;\n    }\n    this._2dCount += this.count2dObjects(target);\n    this.scene.add(target);\n  }\n  count2dObjects(target) {\n    if (target instanceof CSS2DObject) {\n      return 1;\n    }\n    if (target instanceof Group$1) {\n      let result = 0;\n      for (const child of target.children) {\n        if (child instanceof CSS2DObject) {\n          result++;\n        }\n      }\n      return result;\n    }\n    return 0;\n  }\n  unparent2dObjects(target) {\n    if (target instanceof Group$1) {\n      for (const child of target.children) {\n        if (child instanceof CSS2DObject) {\n          target.remove(child);\n        }\n      }\n    }\n  }\n  remove(target) {\n    if (target instanceof Scene) {\n      this.removeScene(target);\n      return;\n    }\n    this._2dCount -= this.count2dObjects(target);\n    this.unparent2dObjects(target);\n    this.scene.remove(target);\n  }\n  clear() {\n    this.scene.clear();\n    this._boundingBox = void 0;\n    this._memory = 0;\n  }\n  addScene(scene) {\n    this._vimScenes.push(scene);\n    scene.meshes.forEach((m) => {\n      this.scene.add(m.mesh);\n    });\n    this.updateBox(scene.getBoundingBox());\n    this._memory += scene.getMemory();\n  }\n  updateBox(box) {\n    if (!box)\n      return;\n    this.boxUpdated = true;\n    this._boundingBox = this._boundingBox ? this._boundingBox.union(box) : box;\n  }\n  removeScene(scene) {\n    this._vimScenes = this._vimScenes.filter((f) => f !== scene);\n    for (let i = 0; i < scene.meshes.length; i++) {\n      this.scene.remove(scene.meshes[i].mesh);\n    }\n    this._boundingBox = this._vimScenes.length > 0 ? this._vimScenes.map((s) => s.getBoundingBox()).reduce((b1, b2) => b1.union(b2)) : void 0;\n    this._memory -= scene.getMemory();\n  }\n}\nclass Viewport {\n  constructor(settings) {\n    __publicField(this, \"canvas\");\n    __publicField(this, \"textRenderer\");\n    __publicField(this, \"_unregisterResize\");\n    __publicField(this, \"_ownedCanvas\");\n    __publicField(this, \"_onResize\", new dist$2.SignalDispatcher());\n    __publicField(this, \"_onReparent\", new dist$2.SignalDispatcher());\n    const { canvas, owned } = Viewport.getOrCreateCanvas(settings.canvas.id);\n    this.canvas = canvas;\n    this.textRenderer = this.createTextRenderer();\n    this._ownedCanvas = owned;\n    this.watchResize(settings.canvas.resizeDelay);\n  }\n  get text() {\n    return this.textRenderer.domElement;\n  }\n  get onReparent() {\n    return this._onReparent.asEvent();\n  }\n  get onResize() {\n    return this._onResize.asEvent();\n  }\n  static getOrCreateCanvas(canvasId) {\n    const canvas = canvasId ? document.getElementById(canvasId) : void 0;\n    return canvas ? { canvas, owned: false } : { canvas: this.createCanvas(), owned: true };\n  }\n  static createCanvas() {\n    const canvas = document.createElement(\"canvas\");\n    canvas.className = \"vim-canvas\";\n    canvas.tabIndex = 0;\n    canvas.style.backgroundColor = \"black\";\n    document.body.appendChild(canvas);\n    return canvas;\n  }\n  createTextRenderer() {\n    if (!this.canvas.parentElement) {\n      throw new Error(\"Cannot create text renderer without a canvas\");\n    }\n    const size = this.getParentSize();\n    const renderer = new CSS2DRenderer();\n    renderer.setSize(size.x, size.y);\n    const text = renderer.domElement;\n    text.className = \"vim-text-renderer\";\n    text.style.position = \"absolute\";\n    text.style.top = \"0px\";\n    text.style.pointerEvents = \"none\";\n    this.canvas.parentElement.append(text);\n    return renderer;\n  }\n  get parent() {\n    return this.canvas.parentElement;\n  }\n  reparent(parent) {\n    if (this.parent === parent)\n      return;\n    parent.appendChild(this.canvas);\n    parent.appendChild(this.text);\n    this._onReparent.dispatch();\n  }\n  dispose() {\n    var _a2;\n    (_a2 = this._unregisterResize) == null ? void 0 : _a2.call(this);\n    this._unregisterResize = void 0;\n    if (this._ownedCanvas)\n      this.canvas.remove();\n  }\n  getParentSize() {\n    return new Vector2(\n      this.getParentWidth(),\n      this.getParentHeight()\n    );\n  }\n  getParentWidth() {\n    var _a2, _b2;\n    return (_b2 = (_a2 = this.canvas.parentElement) == null ? void 0 : _a2.clientWidth) != null ? _b2 : this.canvas.clientWidth;\n  }\n  getParentHeight() {\n    var _a2, _b2;\n    return (_b2 = (_a2 = this.canvas.parentElement) == null ? void 0 : _a2.clientHeight) != null ? _b2 : this.canvas.clientHeight;\n  }\n  getSize() {\n    return new Vector2(this.canvas.clientWidth, this.canvas.clientHeight);\n  }\n  getAspectRatio() {\n    return this.getParentWidth() / this.getParentHeight();\n  }\n  ResizeToParent() {\n    this._onResize.dispatch();\n  }\n  watchResize(timeout) {\n    let timerId;\n    const onResize = () => {\n      if (timerId !== void 0) {\n        clearTimeout(timerId);\n        timerId = void 0;\n      }\n      timerId = setTimeout(() => {\n        timerId = void 0;\n        this._onResize.dispatch();\n      }, timeout);\n    };\n    window.addEventListener(\"resize\", onResize);\n    this._unregisterResize = () => window.removeEventListener(\"resize\", onResize);\n  }\n}\nclass Axis {\n  constructor(init) {\n    __publicField(this, \"axis\");\n    __publicField(this, \"direction\");\n    __publicField(this, \"size\");\n    __publicField(this, \"color\");\n    __publicField(this, \"colorSub\");\n    __publicField(this, \"position\");\n    __publicField(this, \"label\");\n    __publicField(this, \"line\");\n    this.axis = init.axis;\n    this.direction = init.direction;\n    this.size = init.size;\n    this.position = init.position;\n    this.color = init.color;\n    this.colorSub = init.colorSub;\n    this.line = init.line;\n    this.label = init.label;\n  }\n}\nfunction createAxes(settings) {\n  return [\n    new Axis({\n      axis: \"x\",\n      direction: new Vector3(1, 0, 0),\n      size: settings.bubbleSizePrimary,\n      color: settings.colorX,\n      colorSub: settings.colorXSub,\n      line: settings.lineWidth,\n      label: \"X\",\n      position: new Vector3(0, 0, 0)\n    }),\n    new Axis({\n      axis: \"y\",\n      direction: new Vector3(0, 1, 0),\n      size: settings.bubbleSizePrimary,\n      color: settings.colorY,\n      colorSub: settings.colorYSub,\n      line: settings.lineWidth,\n      label: \"Y\",\n      position: new Vector3(0, 0, 0)\n    }),\n    new Axis({\n      axis: \"z\",\n      direction: new Vector3(0, 0, 1),\n      size: settings.bubbleSizePrimary,\n      color: settings.colorZ,\n      colorSub: settings.colorZSub,\n      line: settings.lineWidth,\n      label: \"Z\",\n      position: new Vector3(0, 0, 0)\n    }),\n    new Axis({\n      axis: \"-x\",\n      direction: new Vector3(-1, 0, 0),\n      size: settings.bubbleSizeSecondary,\n      color: settings.colorX,\n      colorSub: settings.colorXSub,\n      line: void 0,\n      label: void 0,\n      position: new Vector3(0, 0, 0)\n    }),\n    new Axis({\n      axis: \"-y\",\n      direction: new Vector3(0, -1, 0),\n      size: settings.bubbleSizeSecondary,\n      color: settings.colorY,\n      colorSub: settings.colorYSub,\n      line: void 0,\n      label: void 0,\n      position: new Vector3(0, 0, 0)\n    }),\n    new Axis({\n      axis: \"-z\",\n      direction: new Vector3(0, 0, -1),\n      size: settings.bubbleSizeSecondary,\n      color: settings.colorZ,\n      colorSub: settings.colorZSub,\n      line: void 0,\n      label: void 0,\n      position: new Vector3(0, 0, 0)\n    })\n  ];\n}\nclass GizmoAxes {\n  constructor(camera, viewport, options) {\n    __publicField(this, \"_initialOptions\");\n    __publicField(this, \"_options\");\n    __publicField(this, \"_camera\");\n    __publicField(this, \"_canvas\");\n    __publicField(this, \"_context\");\n    __publicField(this, \"_rect\");\n    __publicField(this, \"_reparentConnection\");\n    __publicField(this, \"_axes\");\n    __publicField(this, \"_pointerInside\", false);\n    __publicField(this, \"_isDragging\", false);\n    __publicField(this, \"_isDragSignificant\", false);\n    __publicField(this, \"_dragStart\", new Vector2());\n    __publicField(this, \"_dragLast\", new Vector2());\n    __publicField(this, \"_pointer\", new Vector3());\n    __publicField(this, \"_center\");\n    __publicField(this, \"_invRotMat\", new Matrix4());\n    __publicField(this, \"_selectedAxis\", null);\n    __publicField(this, \"onTouchMove\", (e) => {\n      if (e.touches.length > 1)\n        return;\n      const touch = e.touches[0];\n      this.updateDrag(touch.clientX, touch.clientY);\n    });\n    __publicField(this, \"onTouchEnd\", (e) => {\n      e.preventDefault();\n      this.endDrag();\n      this._selectedAxis = null;\n      window.removeEventListener(\"touchmove\", this.onTouchMove, false);\n      window.removeEventListener(\"touchend\", this.onTouchEnd, false);\n    });\n    __publicField(this, \"onPointerDown\", (e) => {\n      this.initDrag(e.clientX, e.clientY);\n      window.addEventListener(\"pointermove\", this.onPointerDrag, false);\n      window.addEventListener(\"pointerup\", this.onPointerUp, false);\n    });\n    __publicField(this, \"onPointerUp\", (event) => {\n      this.endDrag();\n      if (event.pointerType !== \"mouse\") {\n        this._pointer.set(0, 0, 0);\n      }\n      window.removeEventListener(\"pointermove\", this.onPointerDrag, false);\n      window.removeEventListener(\"pointerup\", this.onPointerUp, false);\n    });\n    __publicField(this, \"onPointerEnter\", () => {\n      this._pointerInside = true;\n      this._rect = this._canvas.getBoundingClientRect();\n    });\n    __publicField(this, \"onPointerLeave\", () => {\n      this._pointerInside = false;\n      this._rect = this._canvas.getBoundingClientRect();\n    });\n    __publicField(this, \"onPointerMove\", (e) => {\n      if (this._isDragging)\n        return;\n      if (e) {\n        this._pointer = this.toMouseVector(e, this._pointer);\n      }\n    });\n    __publicField(this, \"onPointerDrag\", (e) => {\n      this.updateDrag(e.clientX, e.clientY);\n    });\n    __publicField(this, \"onMouseClick\", () => {\n      if (this._isDragging || !this._selectedAxis)\n        return;\n      this._camera.lerp(1).orbitTowards(this._selectedAxis.direction.clone().multiplyScalar(-1));\n      this._selectedAxis = null;\n    });\n    __publicField(this, \"update\", () => {\n      if (!this._camera.hasMoved && !this._pointerInside && !this._isDragging) {\n        return;\n      }\n      this._invRotMat.extractRotation(this._camera.matrix).invert();\n      for (let i = 0, length = this._axes.length; i < length; i++) {\n        this.setAxisPosition(this._axes[i]);\n      }\n      this._axes.sort((a, b) => a.position.z > b.position.z ? 1 : -1);\n      this.drawLayers(true);\n      if (!this._isDragging) {\n        this.pickAxes(this._pointer);\n      }\n    });\n    this._initialOptions = new AxesSettings(options);\n    this._options = new AxesSettings(options);\n    this._camera = camera;\n    this._reparentConnection = viewport.onReparent.subscribe(() => this.reparent(viewport.parent));\n    this._canvas = this.createCanvas();\n    this._context = this._canvas.getContext(\"2d\");\n    this._context.imageSmoothingEnabled = true;\n    this._context.imageSmoothingQuality = \"high\";\n    this.resize(this._options.size);\n  }\n  get canvas() {\n    return this._canvas;\n  }\n  reparent(parent) {\n    parent.appendChild(this._canvas);\n  }\n  resize(size) {\n    const ratio = size / this._initialOptions.size;\n    this._options.size = size;\n    this._options.bubbleSizePrimary = ratio * this._initialOptions.bubbleSizePrimary;\n    this._options.bubbleSizeSecondary = ratio * this._initialOptions.bubbleSizeSecondary;\n    this._options.fontPxSize = ratio * this._initialOptions.fontPxSize;\n    this._canvas.width = size;\n    this._canvas.height = size;\n    this._rect = this._canvas.getBoundingClientRect();\n    const margin = 24 * ratio;\n    this._canvas.style.top = `${margin}px`;\n    this._canvas.style.right = `${margin}px`;\n    this._center = new Vector3(size / 2, size / 2, 0);\n    this._axes = createAxes(this._options);\n  }\n  createCanvas() {\n    const canvas = document.createElement(\"canvas\");\n    canvas.classList.add(this._options.className);\n    canvas.style.position = \"absolute\";\n    canvas.addEventListener(\"pointerdown\", this.onPointerDown, false);\n    canvas.addEventListener(\"pointerenter\", this.onPointerEnter, false);\n    canvas.addEventListener(\"pointerleave\", this.onPointerLeave, false);\n    canvas.addEventListener(\"pointermove\", this.onPointerMove, false);\n    return canvas;\n  }\n  toMouseVector(e, target) {\n    return target.set(e.clientX - this._rect.left, e.clientY - this._rect.top, 0);\n  }\n  initDrag(x, y) {\n    this._dragStart.set(x, y);\n    this._dragLast.set(x, y);\n    this._isDragging = true;\n    this._isDragSignificant = false;\n    if (!this._isDragging) {\n      this._canvas.classList.add(\"dragging\");\n    }\n  }\n  updateDrag(x, y) {\n    if (new Vector2(x, y).sub(this._dragStart).length() > 3) {\n      this._isDragSignificant = true;\n    }\n    const drag = new Vector2(x, y).sub(this._dragLast);\n    this._dragLast.set(x, y);\n    const rotX = drag.y / this._canvas.height;\n    const rotY = drag.x / this._canvas.width;\n    this._camera.snap().orbit(new Vector2(rotX * -180, rotY * -180));\n  }\n  endDrag() {\n    this._isDragging = false;\n    if (!this._isDragSignificant) {\n      this.onMouseClick();\n      this._isDragSignificant = false;\n    }\n    this._canvas.classList.remove(\"dragging\");\n  }\n  drawLayers(clear) {\n    if (clear) {\n      this._context.clearRect(0, 0, this._canvas.width, this._canvas.height);\n    }\n    for (let i = 0, length = this._axes.length; i < length; i++) {\n      const axis = this._axes[i];\n      const highlight = this._selectedAxis === axis;\n      const color = axis.position.z >= -0.01 ? axis.color : axis.colorSub;\n      const center2 = new Vector2(this._center.x, this._center.y);\n      const pos2 = new Vector2(axis.position.x, axis.position.y);\n      if (axis.line)\n        this.drawLine(center2, pos2, axis.line, color);\n      const circleColor = new Color(color);\n      circleColor.multiplyScalar(highlight ? 1.5 : 1);\n      this.drawCircle(axis.position, axis.size, `#${circleColor.getHexString()}`);\n      if (axis.label) {\n        this._context.font = [\n          this._options.fontWeight,\n          `${this._options.fontPxSize}px`,\n          this._options.fontFamily\n        ].join(\" \");\n        this._context.fillStyle = this._options.fontColor;\n        this._context.textBaseline = \"middle\";\n        this._context.textAlign = \"center\";\n        this._context.fillText(axis.label, axis.position.x, axis.position.y);\n      }\n    }\n  }\n  drawCircle(pos, radius = 10, color = \"#FF0000\") {\n    this._context.beginPath();\n    this._context.arc(pos.x, pos.y, radius, 0, 2 * Math.PI, false);\n    this._context.fillStyle = color;\n    this._context.fill();\n    this._context.closePath();\n  }\n  drawLine(p1, p2, width = 1, color = \"#FF0000\") {\n    this._context.beginPath();\n    this._context.moveTo(p1.x, p1.y);\n    this._context.lineTo(p2.x, p2.y);\n    this._context.lineWidth = width;\n    this._context.strokeStyle = color;\n    this._context.stroke();\n    this._context.closePath();\n  }\n  setAxisPosition(axis) {\n    const position = axis.direction.clone().applyMatrix4(this._invRotMat);\n    const size = axis.size;\n    axis.position.set(\n      position.x * (this._center.x - size / 2 - this._options.padding) + this._center.x,\n      this._center.y - position.y * (this._center.y - size / 2 - this._options.padding),\n      position.z\n    );\n  }\n  pickAxes(mouse) {\n    const currentAxis = this._selectedAxis;\n    this._selectedAxis = null;\n    for (let i = 0, length = this._axes.length; i < length; i++) {\n      const distance = mouse.distanceTo(this._axes[i].position);\n      if (distance < this._axes[i].size)\n        this._selectedAxis = this._axes[i];\n    }\n    if (currentAxis !== this._selectedAxis)\n      this.drawLayers(false);\n  }\n  dispose() {\n    var _a2;\n    (_a2 = this._reparentConnection) == null ? void 0 : _a2.call(this);\n    this._reparentConnection = void 0;\n    this._canvas.removeEventListener(\"pointerdown\", this.onPointerDown, false);\n    this._canvas.removeEventListener(\"pointerenter\", this.onPointerEnter, false);\n    this._canvas.removeEventListener(\"pointermove\", this.onPointerDrag, false);\n    window.removeEventListener(\"pointermove\", this.onPointerDrag, false);\n    window.removeEventListener(\"pointerup\", this.onPointerUp, false);\n    this._canvas.remove();\n  }\n}\nclass GizmoLoading {\n  constructor(viewer) {\n    __publicField(this, \"_viewer\");\n    __publicField(this, \"_spinner\");\n    __publicField(this, \"_visible\");\n    this._viewer = viewer;\n    this._spinner = this.createBar();\n    this._visible = false;\n  }\n  createBar() {\n    const div = document.createElement(\"span\");\n    div.className = \"loader\";\n    return div;\n  }\n  get visible() {\n    return this._visible;\n  }\n  set visible(value) {\n    if (!this._visible && value) {\n      this._viewer.viewport.canvas.parentElement.appendChild(this._spinner);\n      this._visible = true;\n    }\n    if (this._visible && !value) {\n      this._spinner.parentElement.removeChild(this._spinner);\n      this._visible = false;\n    }\n  }\n  dispose() {\n    this.visible = false;\n  }\n}\nclass GizmoOrbit {\n  constructor(renderer, camera, input, settings) {\n    __publicField(this, \"_renderer\");\n    __publicField(this, \"_camera\");\n    __publicField(this, \"_inputs\");\n    __publicField(this, \"_size\", 1);\n    __publicField(this, \"_color\", new Color(0));\n    __publicField(this, \"_opacity\", 0.2);\n    __publicField(this, \"_opacityAlways\", 0.5);\n    __publicField(this, \"_showDurationMs\", 1e3);\n    __publicField(this, \"_box\");\n    __publicField(this, \"_wireframe\");\n    __publicField(this, \"_material\");\n    __publicField(this, \"_materialAlways\");\n    __publicField(this, \"_gizmos\");\n    __publicField(this, \"_disconnectCamera\");\n    __publicField(this, \"_timeout\");\n    __publicField(this, \"_active\", true);\n    __publicField(this, \"_animation\", 0);\n    this._renderer = renderer;\n    this._camera = camera;\n    this._inputs = input;\n    this.applySettings(settings);\n    this.connect();\n  }\n  connect() {\n    const onMode = this._inputs.onPointerModeChanged.subscribe(\n      () => this.onUpdate()\n    );\n    const onMove = this._camera.onMoved.subscribe(() => this.onUpdate());\n    const onChange = this._camera.onSettingsChanged.subscribe(\n      () => this.onUpdate()\n    );\n    this._disconnectCamera = () => {\n      onMode();\n      onMove();\n      onChange();\n    };\n  }\n  onUpdate() {\n    this.updateScale();\n    this.setPosition(this._camera.target);\n    this.show(true);\n  }\n  get enabled() {\n    return this._active;\n  }\n  set enabled(value) {\n    this._active = value;\n  }\n  show(show = true) {\n    if (!this._active)\n      return;\n    if (!this._gizmos) {\n      this.createGizmo();\n    }\n    clearTimeout(this._timeout);\n    this._gizmos.visible = show;\n    if (show) {\n      this._timeout = setTimeout(() => {\n        this._gizmos.visible = false;\n        this._renderer.needsUpdate = true;\n      }, this._showDurationMs);\n    }\n  }\n  setPosition(position) {\n    var _a2;\n    (_a2 = this._gizmos) == null ? void 0 : _a2.position.copy(position);\n    this.updateScale();\n  }\n  setSize(size) {\n    this._size = size;\n  }\n  setOpacity(opacity, opacityAlways) {\n    this._opacity = opacity;\n    this._opacityAlways = opacityAlways;\n    if (!this._gizmos)\n      return;\n    this._material.opacity = opacity;\n    this._materialAlways.opacity = opacityAlways;\n  }\n  setColor(color) {\n    this._color = color;\n    if (!this._gizmos)\n      return;\n    this._material.color = color;\n    this._materialAlways.color = color;\n  }\n  applySettings(settings) {\n    this._active = settings.camera.gizmo.enable;\n    this.setColor(settings.camera.gizmo.color);\n    this.setSize(settings.camera.gizmo.size);\n    this.setOpacity(\n      settings.camera.gizmo.opacity,\n      settings.camera.gizmo.opacityAlways\n    );\n  }\n  updateScale() {\n    if (!this._gizmos)\n      return;\n    const frustrum = this._camera.frustrumSizeAt(this._gizmos.position);\n    const min = Math.min(frustrum.x, frustrum.y) / 2;\n    const h = min * this._size;\n    this._gizmos.scale.set(h, h, h);\n  }\n  createGizmo() {\n    this._box = new SphereGeometry(1);\n    this._wireframe = new WireframeGeometry(this._box);\n    this._wireframe.addGroup(0, Infinity, 0);\n    this._wireframe.addGroup(0, Infinity, 1);\n    this._material = new LineBasicMaterial({\n      depthTest: true,\n      opacity: this._opacity,\n      color: this._color,\n      transparent: true\n    });\n    this._materialAlways = new LineBasicMaterial({\n      depthTest: false,\n      opacity: this._opacityAlways,\n      color: this._color,\n      transparent: true\n    });\n    this._gizmos = new LineSegments(this._wireframe, [\n      this._material,\n      this._materialAlways\n    ]);\n    this._renderer.add(this._gizmos);\n    this.updateScale();\n  }\n  dispose() {\n    var _a2, _b2, _c, _d, _e;\n    cancelAnimationFrame(this._animation);\n    clearTimeout(this._timeout);\n    (_a2 = this._box) == null ? void 0 : _a2.dispose();\n    (_b2 = this._wireframe) == null ? void 0 : _b2.dispose();\n    (_c = this._material) == null ? void 0 : _c.dispose();\n    (_d = this._materialAlways) == null ? void 0 : _d.dispose();\n    (_e = this._disconnectCamera) == null ? void 0 : _e.call(this);\n    this._box = void 0;\n    this._wireframe = void 0;\n    this._material = void 0;\n    this._materialAlways = void 0;\n    this._disconnectCamera = void 0;\n    if (this._gizmos) {\n      this._renderer.remove(this._gizmos);\n      this._gizmos = void 0;\n    }\n  }\n}\nclass GizmoRectangle {\n  constructor(viewer) {\n    __publicField(this, \"line\");\n    __publicField(this, \"viewer\");\n    __publicField(this, \"points\");\n    this.viewer = viewer;\n    const mat = new LineBasicMaterial({\n      depthTest: false,\n      color: new Color(65280),\n      transparent: true,\n      opacity: 1\n    });\n    const vertices = new Float32Array([\n      -0.5,\n      -0.5,\n      0,\n      0.5,\n      -0.5,\n      0,\n      0.5,\n      -0.5,\n      0,\n      0.5,\n      0.5,\n      0,\n      0.5,\n      0.5,\n      0,\n      -0.5,\n      0.5,\n      0,\n      -0.5,\n      0.5,\n      0,\n      -0.5,\n      -0.5,\n      0\n    ]);\n    const geo = new BufferGeometry();\n    geo.setAttribute(\"position\", new BufferAttribute(vertices, 3));\n    this.line = new LineSegments(geo, mat);\n    this.line.renderOrder = 1;\n    this.line.name = \"GizmoSelection\";\n    this.line.visible = false;\n    this.viewer.renderer.add(this.line);\n  }\n  dispose() {\n    this.viewer.renderer.remove(this.line);\n    this.line.geometry.dispose();\n    this.line.material.dispose();\n  }\n  get visible() {\n    return this.line.visible;\n  }\n  set visible(value) {\n    if (value === this.line.visible)\n      return;\n    this.viewer.renderer.needsUpdate = true;\n    this.line.visible = value;\n  }\n  setCorners(posA, posB) {\n    const plane = new Plane().setFromNormalAndCoplanarPoint(\n      this.viewer.camera.forward,\n      this.viewer.camera.target\n    );\n    const A = this.getIntersection(plane, posA);\n    const B = this.getIntersection(plane, posB);\n    if (!A || !B)\n      return;\n    const center = A.clone().add(B).multiplyScalar(0.5);\n    const [dx, dy] = this.getBoxSize(A, B);\n    this.updateRect(center, dx, dy);\n    const AB = this.getIntersection(plane, new Vector2(posA.x, posB.y));\n    const BA = this.getIntersection(plane, new Vector2(posB.x, posA.y));\n    if (!AB || !BA)\n      return;\n    this.points = [A, B, AB, BA, center];\n  }\n  getIntersection(plane, position) {\n    var _a2;\n    const raycaster = this.viewer.raycaster.fromPoint2(position);\n    return (_a2 = raycaster.ray.intersectPlane(plane, new Vector3())) != null ? _a2 : void 0;\n  }\n  updateRect(position, dx, dy) {\n    this.line.quaternion.copy(this.viewer.camera.quaternion);\n    this.line.position.copy(position);\n    this.line.scale.set(dx, dy, 1);\n    this.line.updateMatrix();\n    this.viewer.renderer.needsUpdate = true;\n  }\n  getBoxSize(A, B) {\n    const cam = this.viewer.camera;\n    const up = new Vector3(0, 1, 0).applyQuaternion(cam.quaternion);\n    const right = new Vector3(1, 0, 0).applyQuaternion(cam.quaternion);\n    const Ax = A.dot(right);\n    const Ay = A.dot(up);\n    const Bx = B.dot(right);\n    const By = B.dot(up);\n    const dx = Math.abs(Ax - Bx);\n    const dy = Math.abs(Ay - By);\n    return [dx, dy];\n  }\n  getBoundingBox(target = new Box3()) {\n    const position = this.getClosestHit();\n    const projections = position ? this.projectPoints(position) : this.points;\n    if (!projections)\n      return;\n    return target.setFromPoints(projections);\n  }\n  getClosestHit() {\n    if (!this.points)\n      return;\n    const hits = this.points.map((p) => this.viewer.raycaster.raycast3(p)).filter((h) => h.isHit);\n    let position;\n    let dist2;\n    hits.forEach((h) => {\n      if (h.distance !== void 0 && h.position !== void 0 && (dist2 === void 0 || h.distance < dist2)) {\n        dist2 = h.distance;\n        position = h.position;\n      }\n    });\n    return position;\n  }\n  projectPoints(position) {\n    var _a2;\n    const plane = new Plane().setFromNormalAndCoplanarPoint(\n      this.viewer.camera.forward,\n      position\n    );\n    return (_a2 = this.points) == null ? void 0 : _a2.map((p) => plane.projectPoint(p, new Vector3()));\n  }\n}\nclass MeasureFlow {\n  constructor(gizmoMeasure) {\n    __publicField(this, \"_gizmoMeasure\");\n    __publicField(this, \"_stage\");\n    __publicField(this, \"removeMouseListener\");\n    __publicField(this, \"onProgress\");\n    __publicField(this, \"onComplete\");\n    this._gizmoMeasure = gizmoMeasure;\n    this._stage = \"ready\";\n  }\n  get stage() {\n    return this._stage;\n  }\n  unregister() {\n    var _a2;\n    (_a2 = this.removeMouseListener) == null ? void 0 : _a2.call(this);\n    this.removeMouseListener = void 0;\n  }\n  abort() {\n    var _a2;\n    if (this.stage === \"active\" || this.stage === \"ready\") {\n      this._stage = void 0;\n      (_a2 = this.onComplete) == null ? void 0 : _a2.call(this, false);\n      this.unregister();\n    }\n  }\n  onMainAction(action) {\n    var _a2, _b2, _c;\n    switch (this._stage) {\n      case \"ready\":\n        if (!action.object)\n          return;\n        this._gizmoMeasure.onFirstClick(action);\n        this._stage = \"active\";\n        (_a2 = this.onProgress) == null ? void 0 : _a2.call(this, this._stage);\n        break;\n      case \"active\":\n        this._stage = this._gizmoMeasure.onSecondClick(action) ? \"done\" : \"failed\";\n        (_b2 = this.onProgress) == null ? void 0 : _b2.call(this, this._stage);\n        (_c = this.onComplete) == null ? void 0 : _c.call(this, this._stage === \"done\");\n        this.unregister();\n        break;\n    }\n  }\n  onIdleAction(action) {\n    if (this._stage === \"active\")\n      this._gizmoMeasure.onMouseIdle(action);\n  }\n  onKeyAction(key) {\n    return false;\n  }\n}\nclass MeshLine extends BufferGeometry {\n  constructor() {\n    super();\n    this.isMeshLine = true;\n    this.type = \"MeshLine\";\n    this.positions = [];\n    this.previous = [];\n    this.next = [];\n    this.side = [];\n    this.width = [];\n    this.indices_array = [];\n    this.uvs = [];\n    this.counters = [];\n    this._points = [];\n    this._geom = null;\n    this.widthCallback = null;\n    this.matrixWorld = new Matrix4();\n    Object.defineProperties(this, {\n      geometry: {\n        enumerable: true,\n        get: function() {\n          return this;\n        }\n      },\n      geom: {\n        enumerable: true,\n        get: function() {\n          return this._geom;\n        },\n        set: function(value) {\n          this.setGeometry(value, this.widthCallback);\n        }\n      },\n      points: {\n        enumerable: true,\n        get: function() {\n          return this._points;\n        },\n        set: function(value) {\n          this.setPoints(value, this.widthCallback);\n        }\n      }\n    });\n  }\n}\nMeshLine.prototype.setMatrixWorld = function(matrixWorld) {\n  this.matrixWorld = matrixWorld;\n};\nMeshLine.prototype.setGeometry = function(g, c) {\n  this._geometry = g;\n  this.setPoints(g.getAttribute(\"position\").array, c);\n};\nMeshLine.prototype.setPoints = function(points, wcb) {\n  if (!(points instanceof Float32Array) && !(points instanceof Array)) {\n    console.error(\n      \"ERROR: The BufferArray of points is not instancied correctly.\"\n    );\n    return;\n  }\n  this._points = points;\n  this.widthCallback = wcb;\n  this.positions = [];\n  this.counters = [];\n  if (points.length && points[0] instanceof Vector3) {\n    for (let j = 0; j < points.length; j++) {\n      const p = points[j];\n      const c = j / points.length;\n      this.positions.push(p.x, p.y, p.z);\n      this.positions.push(p.x, p.y, p.z);\n      this.counters.push(c);\n      this.counters.push(c);\n    }\n  } else {\n    for (let j = 0; j < points.length; j += 3) {\n      const c = j / points.length;\n      this.positions.push(points[j], points[j + 1], points[j + 2]);\n      this.positions.push(points[j], points[j + 1], points[j + 2]);\n      this.counters.push(c);\n      this.counters.push(c);\n    }\n  }\n  this.process();\n};\nfunction MeshLineRaycast(raycaster, intersects2) {\n  const inverseMatrix = new Matrix4();\n  const ray = new Ray();\n  const sphere = new Sphere();\n  const interRay = new Vector3();\n  const geometry = this.geometry;\n  if (!geometry.boundingSphere)\n    geometry.computeBoundingSphere();\n  sphere.copy(geometry.boundingSphere);\n  sphere.applyMatrix4(this.matrixWorld);\n  if (raycaster.ray.intersectSphere(sphere, interRay) === false) {\n    return;\n  }\n  inverseMatrix.copy(this.matrixWorld).invert();\n  ray.copy(raycaster.ray).applyMatrix4(inverseMatrix);\n  const vStart = new Vector3();\n  const vEnd = new Vector3();\n  const interSegment = new Vector3();\n  const step = this instanceof LineSegments ? 2 : 1;\n  const index = geometry.index;\n  const attributes = geometry.attributes;\n  if (index !== null) {\n    const indices = index.array;\n    const positions = attributes.position.array;\n    const widths = attributes.width.array;\n    for (let i = 0, l = indices.length - 1; i < l; i += step) {\n      const a = indices[i];\n      const b = indices[i + 1];\n      vStart.fromArray(positions, a * 3);\n      vEnd.fromArray(positions, b * 3);\n      const width = widths[Math.floor(i / 3)] !== void 0 ? widths[Math.floor(i / 3)] : 1;\n      const precision = raycaster.params.Line.threshold + this.material.lineWidth * width / 2;\n      const precisionSq = precision * precision;\n      const distSq = ray.distanceSqToSegment(\n        vStart,\n        vEnd,\n        interRay,\n        interSegment\n      );\n      if (distSq > precisionSq)\n        continue;\n      interRay.applyMatrix4(this.matrixWorld);\n      const distance = raycaster.ray.origin.distanceTo(interRay);\n      if (distance < raycaster.near || distance > raycaster.far)\n        continue;\n      intersects2.push({\n        distance,\n        point: interSegment.clone().applyMatrix4(this.matrixWorld),\n        index: i,\n        face: null,\n        faceIndex: null,\n        object: this\n      });\n      i = l;\n    }\n  }\n}\nMeshLine.prototype.raycast = MeshLineRaycast;\nMeshLine.prototype.compareV3 = function(a, b) {\n  const aa = a * 6;\n  const ab = b * 6;\n  return this.positions[aa] === this.positions[ab] && this.positions[aa + 1] === this.positions[ab + 1] && this.positions[aa + 2] === this.positions[ab + 2];\n};\nMeshLine.prototype.copyV3 = function(a) {\n  const aa = a * 6;\n  return [this.positions[aa], this.positions[aa + 1], this.positions[aa + 2]];\n};\nMeshLine.prototype.process = function() {\n  const l = this.positions.length / 6;\n  this.previous = [];\n  this.next = [];\n  this.side = [];\n  this.width = [];\n  this.indices_array = [];\n  this.uvs = [];\n  let w;\n  let v;\n  if (this.compareV3(0, l - 1)) {\n    v = this.copyV3(l - 2);\n  } else {\n    v = this.copyV3(0);\n  }\n  this.previous.push(v[0], v[1], v[2]);\n  this.previous.push(v[0], v[1], v[2]);\n  for (let j = 0; j < l; j++) {\n    this.side.push(1);\n    this.side.push(-1);\n    if (this.widthCallback)\n      w = this.widthCallback(j / (l - 1));\n    else\n      w = 1;\n    this.width.push(w);\n    this.width.push(w);\n    this.uvs.push(j / (l - 1), 0);\n    this.uvs.push(j / (l - 1), 1);\n    if (j < l - 1) {\n      v = this.copyV3(j);\n      this.previous.push(v[0], v[1], v[2]);\n      this.previous.push(v[0], v[1], v[2]);\n      const n = j * 2;\n      this.indices_array.push(n, n + 1, n + 2);\n      this.indices_array.push(n + 2, n + 1, n + 3);\n    }\n    if (j > 0) {\n      v = this.copyV3(j);\n      this.next.push(v[0], v[1], v[2]);\n      this.next.push(v[0], v[1], v[2]);\n    }\n  }\n  if (this.compareV3(l - 1, 0)) {\n    v = this.copyV3(1);\n  } else {\n    v = this.copyV3(l - 1);\n  }\n  this.next.push(v[0], v[1], v[2]);\n  this.next.push(v[0], v[1], v[2]);\n  if (!this._attributes || this._attributes.position.count !== this.positions.length) {\n    this._attributes = {\n      position: new BufferAttribute(new Float32Array(this.positions), 3),\n      previous: new BufferAttribute(new Float32Array(this.previous), 3),\n      next: new BufferAttribute(new Float32Array(this.next), 3),\n      side: new BufferAttribute(new Float32Array(this.side), 1),\n      width: new BufferAttribute(new Float32Array(this.width), 1),\n      uv: new BufferAttribute(new Float32Array(this.uvs), 2),\n      index: new BufferAttribute(new Uint16Array(this.indices_array), 1),\n      counters: new BufferAttribute(new Float32Array(this.counters), 1)\n    };\n  } else {\n    this._attributes.position.copyArray(new Float32Array(this.positions));\n    this._attributes.position.needsUpdate = true;\n    this._attributes.previous.copyArray(new Float32Array(this.previous));\n    this._attributes.previous.needsUpdate = true;\n    this._attributes.next.copyArray(new Float32Array(this.next));\n    this._attributes.next.needsUpdate = true;\n    this._attributes.side.copyArray(new Float32Array(this.side));\n    this._attributes.side.needsUpdate = true;\n    this._attributes.width.copyArray(new Float32Array(this.width));\n    this._attributes.width.needsUpdate = true;\n    this._attributes.uv.copyArray(new Float32Array(this.uvs));\n    this._attributes.uv.needsUpdate = true;\n    this._attributes.index.copyArray(new Uint16Array(this.indices_array));\n    this._attributes.index.needsUpdate = true;\n  }\n  this.setAttribute(\"position\", this._attributes.position);\n  this.setAttribute(\"previous\", this._attributes.previous);\n  this.setAttribute(\"next\", this._attributes.next);\n  this.setAttribute(\"side\", this._attributes.side);\n  this.setAttribute(\"width\", this._attributes.width);\n  this.setAttribute(\"uv\", this._attributes.uv);\n  this.setAttribute(\"counters\", this._attributes.counters);\n  this.setIndex(this._attributes.index);\n  this.computeBoundingSphere();\n  this.computeBoundingBox();\n};\nfunction memcpy(src, srcOffset, dst, dstOffset, length) {\n  let i;\n  src = src.subarray || src.slice ? src : src.buffer;\n  dst = dst.subarray || dst.slice ? dst : dst.buffer;\n  src = srcOffset ? src.subarray ? src.subarray(srcOffset, length && srcOffset + length) : src.slice(srcOffset, length && srcOffset + length) : src;\n  if (dst.set) {\n    dst.set(src, dstOffset);\n  } else {\n    for (i = 0; i < src.length; i++) {\n      dst[i + dstOffset] = src[i];\n    }\n  }\n  return dst;\n}\nMeshLine.prototype.advance = function(position) {\n  const positions = this._attributes.position.array;\n  const previous = this._attributes.previous.array;\n  const next = this._attributes.next.array;\n  const l = positions.length;\n  memcpy(positions, 0, previous, 0, l);\n  memcpy(positions, 6, positions, 0, l - 6);\n  positions[l - 6] = position.x;\n  positions[l - 5] = position.y;\n  positions[l - 4] = position.z;\n  positions[l - 3] = position.x;\n  positions[l - 2] = position.y;\n  positions[l - 1] = position.z;\n  memcpy(positions, 6, next, 0, l - 6);\n  next[l - 6] = position.x;\n  next[l - 5] = position.y;\n  next[l - 4] = position.z;\n  next[l - 3] = position.x;\n  next[l - 2] = position.y;\n  next[l - 1] = position.z;\n  this._attributes.position.needsUpdate = true;\n  this._attributes.previous.needsUpdate = true;\n  this._attributes.next.needsUpdate = true;\n};\nShaderChunk.meshline_vert = [\n  \"\",\n  ShaderChunk.common,\n  ShaderChunk.logdepthbuf_pars_vertex,\n  ShaderChunk.fog_pars_vertex,\n  \"\",\n  \"attribute vec3 previous;\",\n  \"attribute vec3 next;\",\n  \"attribute float side;\",\n  \"attribute float width;\",\n  \"attribute float counters;\",\n  \"\",\n  \"uniform vec2 resolution;\",\n  \"uniform float lineWidth;\",\n  \"uniform vec3 color;\",\n  \"uniform float opacity;\",\n  \"uniform float sizeAttenuation;\",\n  \"\",\n  \"varying vec2 vUV;\",\n  \"varying vec4 vColor;\",\n  \"varying float vCounters;\",\n  \"\",\n  \"vec2 fix( vec4 i, float aspect ) {\",\n  \"\",\n  \"    vec2 res = i.xy / i.w;\",\n  \"    res.x *= aspect;\",\n  \"    vCounters = counters;\",\n  \"    return res;\",\n  \"\",\n  \"}\",\n  \"\",\n  \"void main() {\",\n  \"\",\n  \"    float aspect = resolution.x / resolution.y;\",\n  \"\",\n  \"    vColor = vec4( color, opacity );\",\n  \"    vUV = uv;\",\n  \"\",\n  \"    mat4 m = projectionMatrix * modelViewMatrix;\",\n  \"    vec4 finalPosition = m * vec4( position, 1.0 );\",\n  \"    vec4 prevPos = m * vec4( previous, 1.0 );\",\n  \"    vec4 nextPos = m * vec4( next, 1.0 );\",\n  \"\",\n  \"    vec2 currentP = fix( finalPosition, aspect );\",\n  \"    vec2 prevP = fix( prevPos, aspect );\",\n  \"    vec2 nextP = fix( nextPos, aspect );\",\n  \"\",\n  \"    float w = lineWidth * width;\",\n  \"\",\n  \"    vec2 dir;\",\n  \"    if( nextP == currentP ) dir = normalize( currentP - prevP );\",\n  \"    else if( prevP == currentP ) dir = normalize( nextP - currentP );\",\n  \"    else {\",\n  \"        vec2 dir1 = normalize( currentP - prevP );\",\n  \"        vec2 dir2 = normalize( nextP - currentP );\",\n  \"        dir = normalize( dir1 + dir2 );\",\n  \"\",\n  \"        vec2 perp = vec2( -dir1.y, dir1.x );\",\n  \"        vec2 miter = vec2( -dir.y, dir.x );\",\n  \"        //w = clamp( w / dot( miter, perp ), 0., 4. * lineWidth * width );\",\n  \"\",\n  \"    }\",\n  \"\",\n  \"    //vec2 normal = ( cross( vec3( dir, 0. ), vec3( 0., 0., 1. ) ) ).xy;\",\n  \"    vec4 normal = vec4( -dir.y, dir.x, 0., 1. );\",\n  \"    normal.xy *= .5 * w;\",\n  \"    normal *= projectionMatrix;\",\n  \"    if( sizeAttenuation == 0. ) {\",\n  \"        normal.xy *= finalPosition.w;\",\n  \"        normal.xy /= ( vec4( resolution, 0., 1. ) * projectionMatrix ).xy;\",\n  \"    }\",\n  \"\",\n  \"    finalPosition.xy += normal.xy * side;\",\n  \"\",\n  \"    gl_Position = finalPosition;\",\n  \"\",\n  ShaderChunk.logdepthbuf_vertex,\n  ShaderChunk.fog_vertex && \"    vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\",\n  ShaderChunk.fog_vertex,\n  \"}\"\n].join(\"\\n\");\nShaderChunk.meshline_frag = [\n  \"\",\n  ShaderChunk.fog_pars_fragment,\n  ShaderChunk.logdepthbuf_pars_fragment,\n  \"\",\n  \"uniform sampler2D map;\",\n  \"uniform sampler2D alphaMap;\",\n  \"uniform float useMap;\",\n  \"uniform float useAlphaMap;\",\n  \"uniform float useDash;\",\n  \"uniform float dashArray;\",\n  \"uniform float dashOffset;\",\n  \"uniform float dashRatio;\",\n  \"uniform float visibility;\",\n  \"uniform float alphaTest;\",\n  \"uniform vec2 repeat;\",\n  \"\",\n  \"varying vec2 vUV;\",\n  \"varying vec4 vColor;\",\n  \"varying float vCounters;\",\n  \"\",\n  \"void main() {\",\n  \"\",\n  ShaderChunk.logdepthbuf_fragment,\n  \"\",\n  \"    vec4 c = vColor;\",\n  \"    if( useMap == 1. ) c *= texture2D( map, vUV * repeat );\",\n  \"    if( useAlphaMap == 1. ) c.a *= texture2D( alphaMap, vUV * repeat ).a;\",\n  \"    if( c.a < alphaTest ) discard;\",\n  \"    if( useDash == 1. ){\",\n  \"        c.a *= ceil(mod(vCounters + dashOffset, dashArray) - (dashArray * dashRatio));\",\n  \"    }\",\n  \"    gl_FragColor = c;\",\n  \"    gl_FragColor.a *= step(vCounters, visibility);\",\n  \"\",\n  ShaderChunk.fog_fragment,\n  \"}\"\n].join(\"\\n\");\nclass MeshLineMaterial extends ShaderMaterial {\n  constructor(parameters) {\n    super({\n      uniforms: Object.assign({}, UniformsLib.fog, {\n        lineWidth: { value: 1 },\n        map: { value: null },\n        useMap: { value: 0 },\n        alphaMap: { value: null },\n        useAlphaMap: { value: 0 },\n        color: { value: new Color(16777215) },\n        opacity: { value: 1 },\n        resolution: { value: new Vector2(1, 1) },\n        sizeAttenuation: { value: 1 },\n        dashArray: { value: 0 },\n        dashOffset: { value: 0 },\n        dashRatio: { value: 0.5 },\n        useDash: { value: 0 },\n        visibility: { value: 1 },\n        alphaTest: { value: 0 },\n        repeat: { value: new Vector2(1, 1) }\n      }),\n      vertexShader: ShaderChunk.meshline_vert,\n      fragmentShader: ShaderChunk.meshline_frag\n    });\n    this.isMeshLineMaterial = true;\n    this.type = \"MeshLineMaterial\";\n    Object.defineProperties(this, {\n      lineWidth: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.lineWidth.value;\n        },\n        set: function(value) {\n          this.uniforms.lineWidth.value = value;\n        }\n      },\n      map: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.map.value;\n        },\n        set: function(value) {\n          this.uniforms.map.value = value;\n        }\n      },\n      useMap: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.useMap.value;\n        },\n        set: function(value) {\n          this.uniforms.useMap.value = value;\n        }\n      },\n      alphaMap: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.alphaMap.value;\n        },\n        set: function(value) {\n          this.uniforms.alphaMap.value = value;\n        }\n      },\n      useAlphaMap: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.useAlphaMap.value;\n        },\n        set: function(value) {\n          this.uniforms.useAlphaMap.value = value;\n        }\n      },\n      color: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.color.value;\n        },\n        set: function(value) {\n          this.uniforms.color.value = value;\n        }\n      },\n      opacity: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.opacity.value;\n        },\n        set: function(value) {\n          this.uniforms.opacity.value = value;\n        }\n      },\n      resolution: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.resolution.value;\n        },\n        set: function(value) {\n          this.uniforms.resolution.value.copy(value);\n        }\n      },\n      sizeAttenuation: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.sizeAttenuation.value;\n        },\n        set: function(value) {\n          this.uniforms.sizeAttenuation.value = value;\n        }\n      },\n      dashArray: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.dashArray.value;\n        },\n        set: function(value) {\n          this.uniforms.dashArray.value = value;\n          this.useDash = value !== 0 ? 1 : 0;\n        }\n      },\n      dashOffset: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.dashOffset.value;\n        },\n        set: function(value) {\n          this.uniforms.dashOffset.value = value;\n        }\n      },\n      dashRatio: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.dashRatio.value;\n        },\n        set: function(value) {\n          this.uniforms.dashRatio.value = value;\n        }\n      },\n      useDash: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.useDash.value;\n        },\n        set: function(value) {\n          this.uniforms.useDash.value = value;\n        }\n      },\n      visibility: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.visibility.value;\n        },\n        set: function(value) {\n          this.uniforms.visibility.value = value;\n        }\n      },\n      alphaTest: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.alphaTest.value;\n        },\n        set: function(value) {\n          this.uniforms.alphaTest.value = value;\n        }\n      },\n      repeat: {\n        enumerable: true,\n        get: function() {\n          return this.uniforms.repeat.value;\n        },\n        set: function(value) {\n          this.uniforms.repeat.value.copy(value);\n        }\n      }\n    });\n    this.setValues(parameters);\n  }\n}\nMeshLineMaterial.prototype.copy = function(source) {\n  ShaderMaterial.prototype.copy.call(this, source);\n  this.lineWidth = source.lineWidth;\n  this.map = source.map;\n  this.useMap = source.useMap;\n  this.alphaMap = source.alphaMap;\n  this.useAlphaMap = source.useAlphaMap;\n  this.color.copy(source.color);\n  this.opacity = source.opacity;\n  this.resolution.copy(source.resolution);\n  this.sizeAttenuation = source.sizeAttenuation;\n  this.dashArray.copy(source.dashArray);\n  this.dashOffset.copy(source.dashOffset);\n  this.dashRatio.copy(source.dashRatio);\n  this.useDash = source.useDash;\n  this.visibility = source.visibility;\n  this.alphaTest = source.alphaTest;\n  this.repeat.copy(source.repeat);\n  return this;\n};\nfunction createMeasureElement(style2) {\n  const div = document.createElement(\"div\");\n  div.className = \"vim-measure\";\n  const table = document.createElement(\"table\");\n  div.appendChild(table);\n  let distValue;\n  let xValue;\n  let yValue;\n  let zValue;\n  if (style2 === \"all\" || style2 === \"Dist\") {\n    const trDist = document.createElement(\"tr\");\n    const tdDistLabel = document.createElement(\"td\");\n    const tdDistValue = document.createElement(\"td\");\n    table.appendChild(trDist);\n    trDist.appendChild(tdDistLabel);\n    trDist.appendChild(tdDistValue);\n    tdDistLabel.className = \"vim-measure-label-d\";\n    tdDistValue.className = \"vim-measure-value-d\";\n    tdDistLabel.textContent = \"Dist\";\n    distValue = tdDistValue;\n  }\n  if (style2 === \"all\" || style2 === \"X\") {\n    const trX = document.createElement(\"tr\");\n    const tdXLabel = document.createElement(\"td\");\n    const tdXValue = document.createElement(\"td\");\n    table.appendChild(trX);\n    trX.appendChild(tdXLabel);\n    trX.appendChild(tdXValue);\n    tdXLabel.className = \"vim-measure-label-x\";\n    tdXValue.className = \"vim-measure-value-x\";\n    tdXLabel.textContent = \"X\";\n    xValue = tdXValue;\n  }\n  if (style2 === \"all\" || style2 === \"Y\") {\n    const trY = document.createElement(\"tr\");\n    const tdYLabel = document.createElement(\"td\");\n    const tdYValue = document.createElement(\"td\");\n    table.appendChild(trY);\n    trY.appendChild(tdYLabel);\n    trY.appendChild(tdYValue);\n    tdYLabel.className = \"vim-measure-label-y\";\n    tdYValue.className = \"vim-measure-value-y\";\n    tdYLabel.textContent = \"Y\";\n    yValue = tdYValue;\n  }\n  if (style2 === \"all\" || style2 === \"Z\") {\n    const trZ = document.createElement(\"tr\");\n    const tdZLabel = document.createElement(\"td\");\n    const tdZValue = document.createElement(\"td\");\n    table.appendChild(trZ);\n    trZ.appendChild(tdZLabel);\n    trZ.appendChild(tdZValue);\n    tdZLabel.className = \"vim-measure-label-z\";\n    tdZValue.className = \"vim-measure-value-z\";\n    tdZLabel.textContent = \"Z\";\n    zValue = tdZValue;\n  }\n  return {\n    div,\n    value: style2 === \"Dist\" ? distValue : style2 === \"X\" ? xValue : style2 === \"Y\" ? yValue : style2 === \"Z\" ? zValue : void 0,\n    values: { dist: distValue, x: xValue, y: yValue, z: zValue }\n  };\n}\nclass MeasureLine {\n  constructor(canvasSize, color, style2) {\n    __publicField(this, \"mesh\");\n    __publicField(this, \"label\");\n    __publicField(this, \"position\");\n    __publicField(this, \"length\");\n    __publicField(this, \"_meshLine\");\n    __publicField(this, \"_material\");\n    __publicField(this, \"_materialAlways\");\n    __publicField(this, \"_text\");\n    this._material = new MeshLineMaterial({\n      sizeAttenuation: 0,\n      lineWidth: 5,\n      resolution: canvasSize,\n      color\n    });\n    this._materialAlways = new MeshLineMaterial({\n      lineWidth: 5,\n      sizeAttenuation: 0,\n      depthTest: false,\n      transparent: true,\n      opacity: 0.5,\n      resolution: canvasSize,\n      color\n    });\n    this._meshLine = new MeshLine();\n    this.mesh = new Mesh(this._meshLine, [\n      this._material,\n      this._materialAlways\n    ]);\n    const element = createMeasureElement(style2);\n    if (element.value)\n      this._text = element.value;\n    this.label = new CSS2DObject(element.div);\n    this.label.visible = false;\n    this._meshLine.geometry.addGroup(0, Infinity, 0);\n    this._meshLine.geometry.addGroup(0, Infinity, 1);\n    this.mesh.frustumCulled = false;\n  }\n  setPoints(start, end) {\n    this.position = start.clone().add(end).multiplyScalar(0.5);\n    this._meshLine.setPoints([start, end]);\n    this.label.position.copy(this.position);\n    this.length = start.distanceTo(end);\n    this.label.visible = this.length > 0;\n    if (this._text) {\n      this._text.textContent = `~${start.distanceTo(end).toFixed(2)}`;\n    }\n  }\n  dispose() {\n    this._meshLine.dispose();\n    this._material.dispose();\n    this._materialAlways.dispose();\n  }\n}\nclass MeasureMarker {\n  constructor(color, camera) {\n    __publicField(this, \"MARKER_SIZE\", 0.01);\n    __publicField(this, \"mesh\");\n    __publicField(this, \"_material\");\n    __publicField(this, \"_materialAlways\");\n    __publicField(this, \"_camera\");\n    __publicField(this, \"disconnect\");\n    this._material = new MeshBasicMaterial({\n      color\n    });\n    this._materialAlways = new MeshBasicMaterial({\n      transparent: true,\n      opacity: 0.2,\n      depthTest: false,\n      color: new Color(49151)\n    });\n    const g = new SphereGeometry(1);\n    g.addGroup(0, Infinity, 0);\n    g.addGroup(0, Infinity, 1);\n    this.mesh = new Mesh(g, [this._material, this._materialAlways]);\n    this.mesh.visible = false;\n    this.disconnect = camera.onMoved.subscribe(() => this.updateScale());\n    this._camera = camera;\n    this.updateScale();\n  }\n  updateScale() {\n    const scale = this._camera.frustrumSizeAt(this.mesh.position).y / 2 * this.MARKER_SIZE;\n    this.mesh.scale.set(scale, scale, scale);\n    this.mesh.updateMatrix();\n  }\n  setPosition(position) {\n    this.mesh.position.copy(position);\n    this.updateScale();\n  }\n  dispose() {\n    this.mesh.geometry.dispose();\n    this._material.dispose();\n    this.disconnect();\n  }\n}\nclass MeasureGizmo {\n  constructor(viewer) {\n    __publicField(this, \"_viewer\");\n    __publicField(this, \"_startMarker\");\n    __publicField(this, \"_endMarker\");\n    __publicField(this, \"_line\");\n    __publicField(this, \"_lineX\");\n    __publicField(this, \"_lineY\");\n    __publicField(this, \"_lineZ\");\n    __publicField(this, \"_group\");\n    __publicField(this, \"_label\");\n    __publicField(this, \"_html\");\n    __publicField(this, \"_animId\");\n    this._viewer = viewer;\n    const canvasSize = this._viewer.viewport.getSize();\n    this._startMarker = new MeasureMarker(\n      new Color(16758528),\n      viewer.camera\n    );\n    this._endMarker = new MeasureMarker(\n      new Color(364748),\n      viewer.camera\n    );\n    this._line = new MeasureLine(canvasSize, new Color(0), \"Dist\");\n    this._lineX = new MeasureLine(canvasSize, new Color(16711680), \"X\");\n    this._lineY = new MeasureLine(canvasSize, new Color(65280), \"Y\");\n    this._lineZ = new MeasureLine(canvasSize, new Color(255), \"Z\");\n    this._html = createMeasureElement(\"all\");\n    this._label = new CSS2DObject(this._html.div);\n    this._label.visible = false;\n    this._group = new Group$1();\n    this._group.name = \"GizmoMeasure\";\n    this._group.add(\n      this._startMarker.mesh,\n      this._endMarker.mesh,\n      this._line.mesh,\n      this._line.label,\n      this._lineX.mesh,\n      this._lineX.label,\n      this._lineY.mesh,\n      this._lineY.label,\n      this._lineZ.mesh,\n      this._lineZ.label,\n      this._label\n    );\n    this._viewer.renderer.add(this._group);\n  }\n  _animate() {\n    this._animId = requestAnimationFrame(() => this._animate());\n    const lx = this.screenDist(this._line.position, this._lineX.position);\n    const ly = this.screenDist(this._line.position, this._lineY.position);\n    const lz = this.screenDist(this._line.position, this._lineZ.position);\n    const xy = this.screenDist(this._lineX.position, this._lineY.position);\n    const xz = this.screenDist(this._lineX.position, this._lineZ.position);\n    const yz = this.screenDist(this._lineY.position, this._lineZ.position);\n    let conflicts = 0;\n    if (lx !== void 0 && lx < 0.1)\n      conflicts++;\n    if (ly !== void 0 && ly < 0.1)\n      conflicts++;\n    if (lz !== void 0 && lz < 0.1)\n      conflicts++;\n    if (xy !== void 0 && xy < 0.1)\n      conflicts++;\n    if (xz !== void 0 && xz < 0.1)\n      conflicts++;\n    if (yz !== void 0 && yz < 0.1)\n      conflicts++;\n    const collapse = conflicts > 1;\n    this._label.visible = collapse;\n    this._line.label.visible = !collapse;\n    this._lineX.label.visible = !collapse;\n    this._lineY.label.visible = !collapse;\n    this._lineZ.label.visible = !collapse;\n  }\n  screenDist(first, second) {\n    if (!first || !second)\n      return;\n    const length = first.distanceTo(second);\n    const ratio = length / (this._viewer.camera.frustrumSizeAt(first).y / 2);\n    return ratio;\n  }\n  start(start) {\n    this._startMarker.setPosition(start);\n    this._startMarker.mesh.visible = true;\n    this._viewer.renderer.needsUpdate = true;\n  }\n  hide() {\n    if (this._line) {\n      this._line.mesh.visible = false;\n      this._line.label.visible = false;\n    }\n    this._viewer.renderer.needsUpdate = true;\n  }\n  update(start, pos) {\n    if (this._line) {\n      this._line.setPoints(start, pos);\n      this._line.mesh.visible = true;\n    }\n    this._viewer.renderer.needsUpdate = true;\n  }\n  finish(start, end) {\n    var _a2, _b2, _c, _d, _e, _f, _g, _h;\n    this._line.mesh.visible = true;\n    this._startMarker.setPosition(start);\n    this._endMarker.setPosition(end);\n    this._endMarker.mesh.visible = true;\n    const delta = end.clone().sub(start);\n    const endX = start.clone().setX(start.x + delta.x);\n    const endY = endX.clone().setY(endX.y + delta.y);\n    this._line.setPoints(start, end);\n    this._lineX.setPoints(start, endX);\n    this._lineY.setPoints(endX, endY);\n    this._lineZ.setPoints(endY, end);\n    this._label.position.copy(this._line.label.position);\n    if (this._html.values.dist) {\n      this._html.values.dist.textContent = (_b2 = (_a2 = this._line.length) == null ? void 0 : _a2.toFixed(2)) != null ? _b2 : \"\";\n    }\n    if (this._html.values.x) {\n      this._html.values.x.textContent = (_d = (_c = this._lineX.length) == null ? void 0 : _c.toFixed(2)) != null ? _d : \"\";\n    }\n    if (this._html.values.y) {\n      this._html.values.y.textContent = (_f = (_e = this._lineY.length) == null ? void 0 : _e.toFixed(2)) != null ? _f : \"\";\n    }\n    if (this._html.values.z) {\n      this._html.values.z.textContent = (_h = (_g = this._lineZ.length) == null ? void 0 : _g.toFixed(2)) != null ? _h : \"\";\n    }\n    this._animate();\n    this._viewer.renderer.needsUpdate = true;\n    return true;\n  }\n  dispose() {\n    if (this._animId !== void 0)\n      cancelAnimationFrame(this._animId);\n    this._viewer.renderer.remove(this._group);\n    this._startMarker.dispose();\n    this._endMarker.dispose();\n    this._line.dispose();\n    this._lineX.dispose();\n    this._lineY.dispose();\n    this._lineZ.dispose();\n  }\n}\nclass Measure {\n  constructor(viewer) {\n    __publicField(this, \"_viewer\");\n    __publicField(this, \"_meshes\");\n    __publicField(this, \"_startPos\");\n    __publicField(this, \"_endPos\");\n    __publicField(this, \"_measurement\");\n    __publicField(this, \"_flow\");\n    __publicField(this, \"_previousScheme\");\n    this._viewer = viewer;\n  }\n  get startPoint() {\n    return this._startPos;\n  }\n  get endPoint() {\n    return this._endPos;\n  }\n  get measurement() {\n    return this._measurement;\n  }\n  get stage() {\n    var _a2;\n    return (_a2 = this._flow) == null ? void 0 : _a2.stage;\n  }\n  async start(onProgress) {\n    this.abort();\n    this._flow = new MeasureFlow(this);\n    this._previousScheme = this._viewer.inputs.scheme;\n    this._viewer.inputs.scheme = this._flow;\n    this._flow.onProgress = () => onProgress == null ? void 0 : onProgress();\n    return new Promise((resolve, reject) => {\n      if (this._flow) {\n        this._flow.onComplete = (success) => {\n          if (this._previousScheme) {\n            this._viewer.inputs.scheme = this._previousScheme;\n            this._previousScheme = void 0;\n          }\n          if (success)\n            resolve();\n          else {\n            reject(new Error(\"Measurement Aborted\"));\n          }\n        };\n      }\n    });\n  }\n  onFirstClick(action) {\n    this.clear();\n    this._meshes = new MeasureGizmo(this._viewer);\n    this._startPos = action.raycast.position;\n    if (this._startPos) {\n      this._meshes.start(this._startPos);\n    }\n  }\n  onMouseMove() {\n    var _a2;\n    (_a2 = this._meshes) == null ? void 0 : _a2.hide();\n  }\n  onMouseIdle(action) {\n    var _a2, _b2, _c;\n    if (!action) {\n      (_a2 = this._meshes) == null ? void 0 : _a2.hide();\n      return;\n    }\n    const position = action.raycast.position;\n    if (position && this._startPos) {\n      this._measurement = action.object ? position.clone().sub(this._startPos) : void 0;\n    }\n    if (action.object && position && this._startPos) {\n      (_b2 = this._meshes) == null ? void 0 : _b2.update(this._startPos, position);\n    } else {\n      (_c = this._meshes) == null ? void 0 : _c.hide();\n    }\n  }\n  onSecondClick(action) {\n    var _a2;\n    if (!action.object || !this._startPos) {\n      return false;\n    }\n    this._endPos = action.raycast.position;\n    if (!this._endPos)\n      return false;\n    this._measurement = this._endPos.clone().sub(this._startPos);\n    console.log(`Distance: ${this._measurement.length()}`);\n    console.log(\n      `\n      X: ${this._measurement.x},\n      Y: ${this._measurement.y},\n      Z: ${this._measurement.z} \n      `\n    );\n    (_a2 = this._meshes) == null ? void 0 : _a2.finish(this._startPos, this._endPos);\n    return true;\n  }\n  abort() {\n    var _a2;\n    (_a2 = this._flow) == null ? void 0 : _a2.abort();\n    this._flow = void 0;\n    this._startPos = void 0;\n    this._endPos = void 0;\n    this._measurement = void 0;\n  }\n  clear() {\n    var _a2;\n    (_a2 = this._meshes) == null ? void 0 : _a2.dispose();\n    this._meshes = void 0;\n  }\n}\nclass BoxOutline extends LineSegments {\n  constructor() {\n    const vertices = new Float32Array([\n      -0.5,\n      -0.5,\n      -0.5,\n      0.5,\n      -0.5,\n      -0.5,\n      0.5,\n      0.5,\n      -0.5,\n      -0.5,\n      0.5,\n      -0.5,\n      -0.5,\n      -0.5,\n      0.5,\n      0.5,\n      -0.5,\n      0.5,\n      0.5,\n      0.5,\n      0.5,\n      -0.5,\n      0.5,\n      0.5\n    ]);\n    const indices = [\n      0.5,\n      1,\n      1,\n      2,\n      2,\n      3,\n      3,\n      0,\n      4,\n      5,\n      5,\n      6,\n      6,\n      7,\n      7,\n      4,\n      0,\n      4,\n      1,\n      5,\n      2,\n      6,\n      3,\n      7\n    ];\n    const geo = new BufferGeometry();\n    const mat = new LineBasicMaterial({\n      opacity: 1,\n      color: new Color(0)\n    });\n    geo.setAttribute(\"position\", new BufferAttribute(vertices, 3));\n    geo.setIndex(indices);\n    super(geo, mat);\n  }\n  fitBox(box) {\n    this.scale.set(\n      box.max.x - box.min.x,\n      box.max.y - box.min.y,\n      box.max.z - box.min.z\n    );\n    this.position.set(\n      (box.max.x + box.min.x) / 2,\n      (box.max.y + box.min.y) / 2,\n      (box.max.z + box.min.z) / 2\n    );\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n}\nclass BoxMesh extends Mesh {\n  constructor() {\n    const geo = new BoxGeometry();\n    const mat = new MeshBasicMaterial({\n      opacity: 0.3,\n      transparent: true,\n      color: new Color(20667),\n      depthTest: false\n    });\n    super(geo, mat);\n  }\n  fitBox(box) {\n    this.scale.set(\n      box.max.x - box.min.x,\n      box.max.y - box.min.y,\n      box.max.z - box.min.z\n    );\n    this.position.set(\n      (box.max.x + box.min.x) / 2,\n      (box.max.y + box.min.y) / 2,\n      (box.max.z + box.min.z) / 2\n    );\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n}\nclass BoxHighlight extends Mesh {\n  constructor() {\n    const geo = new BufferGeometry();\n    geo.setAttribute(\n      \"position\",\n      new BufferAttribute(new Float32Array(12), 3)\n    );\n    geo.setIndex([0, 1, 2, 0, 2, 3]);\n    const mat = new MeshBasicMaterial({\n      opacity: 0.7,\n      transparent: true,\n      depthTest: false,\n      side: DoubleSide\n    });\n    super(geo, mat);\n    this.renderOrder = 1;\n    this.frustumCulled = false;\n  }\n  highlight(box, normal) {\n    this.visible = false;\n    const positions = this.geometry.getAttribute(\"position\");\n    if (normal.x > 0.1) {\n      positions.setXYZ(0, box.max.x, box.max.y, box.max.z);\n      positions.setXYZ(1, box.max.x, box.min.y, box.max.z);\n      positions.setXYZ(2, box.max.x, box.min.y, box.min.z);\n      positions.setXYZ(3, box.max.x, box.max.y, box.min.z);\n      this.visible = true;\n    }\n    if (normal.x < -0.1) {\n      positions.setXYZ(0, box.min.x, box.max.y, box.max.z);\n      positions.setXYZ(1, box.min.x, box.min.y, box.max.z);\n      positions.setXYZ(2, box.min.x, box.min.y, box.min.z);\n      positions.setXYZ(3, box.min.x, box.max.y, box.min.z);\n      this.visible = true;\n    }\n    if (normal.y > 0.1) {\n      positions.setXYZ(0, box.max.x, box.max.y, box.max.z);\n      positions.setXYZ(1, box.min.x, box.max.y, box.max.z);\n      positions.setXYZ(2, box.min.x, box.max.y, box.min.z);\n      positions.setXYZ(3, box.max.x, box.max.y, box.min.z);\n      this.visible = true;\n    }\n    if (normal.y < -0.1) {\n      positions.setXYZ(0, box.max.x, box.min.y, box.max.z);\n      positions.setXYZ(1, box.min.x, box.min.y, box.max.z);\n      positions.setXYZ(2, box.min.x, box.min.y, box.min.z);\n      positions.setXYZ(3, box.max.x, box.min.y, box.min.z);\n      this.visible = true;\n    }\n    if (normal.z > 0.1) {\n      positions.setXYZ(0, box.max.x, box.max.y, box.max.z);\n      positions.setXYZ(1, box.min.x, box.max.y, box.max.z);\n      positions.setXYZ(2, box.min.x, box.min.y, box.max.z);\n      positions.setXYZ(3, box.max.x, box.min.y, box.max.z);\n      this.visible = true;\n    }\n    if (normal.z < -0.1) {\n      positions.setXYZ(0, box.max.x, box.max.y, box.min.z);\n      positions.setXYZ(1, box.min.x, box.max.y, box.min.z);\n      positions.setXYZ(2, box.min.x, box.min.y, box.min.z);\n      positions.setXYZ(3, box.max.x, box.min.y, box.min.z);\n      this.visible = true;\n    }\n    positions.needsUpdate = true;\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n}\nclass BoxInputs {\n  constructor(viewer, cube, box) {\n    __publicField(this, \"viewer\");\n    __publicField(this, \"cube\");\n    __publicField(this, \"sharedBox\");\n    __publicField(this, \"faceNormal\", new Vector3());\n    __publicField(this, \"dragOrigin\", new Vector3());\n    __publicField(this, \"dragpPlane\", new Plane());\n    __publicField(this, \"mouseDown\");\n    __publicField(this, \"raycaster\", new Raycaster$1());\n    __publicField(this, \"lastBox\", new Box3());\n    __publicField(this, \"unregisters\", []);\n    __publicField(this, \"lastMouse\");\n    __publicField(this, \"ctrlDown\", false);\n    __publicField(this, \"capturedId\");\n    __publicField(this, \"onFaceEnter\");\n    __publicField(this, \"onBoxStretch\");\n    __publicField(this, \"onBoxConfirm\");\n    __publicField(this, \"reg\", (handler, type, listener) => {\n      handler.addEventListener(type, listener);\n      this.unregisters.push(() => handler.removeEventListener(type, listener));\n    });\n    this.viewer = viewer;\n    this.cube = cube;\n    this.sharedBox = box;\n  }\n  register() {\n    if (this.unregister.length > 0)\n      return;\n    const canvas = this.viewer.viewport.canvas;\n    this.reg(window, \"keydown\", this.onKey.bind(this));\n    this.reg(window, \"keyup\", this.onKey.bind(this));\n    this.reg(canvas, \"pointerdown\", this.onMouseDown.bind(this));\n    this.reg(canvas, \"pointermove\", this.onMouseMove.bind(this));\n    this.reg(canvas, \"pointerup\", this.onMouseUp.bind(this));\n  }\n  capturePointer(pointerId) {\n    this.releasePointer();\n    this.viewer.viewport.canvas.setPointerCapture(pointerId);\n    this.capturedId = pointerId;\n  }\n  releasePointer() {\n    if (this.capturedId === void 0)\n      return;\n    this.viewer.viewport.canvas.releasePointerCapture(this.capturedId);\n    this.capturedId = void 0;\n  }\n  unregister() {\n    this.ctrlDown = false;\n    this.mouseDown = false;\n    this.releasePointer();\n    this.viewer.inputs.registerAll();\n    this.unregisters.forEach((unreg) => unreg());\n    this.unregisters.length = 0;\n  }\n  onKey(event) {\n    if (this.ctrlDown !== event.ctrlKey) {\n      this.ctrlDown = event.ctrlKey;\n      this.onMouseMove(this.lastMouse);\n    }\n  }\n  onMouseMove(event) {\n    var _a2, _b2, _c;\n    this.lastMouse = event;\n    if (this.mouseDown) {\n      this.onDrag(event);\n      return;\n    }\n    const hits = this.raycast(\n      new Vector2(event.offsetX, event.offsetY),\n      this.ctrlDown\n    );\n    const hit = hits == null ? void 0 : hits[0];\n    const norm = (_a2 = hit == null ? void 0 : hit.face) == null ? void 0 : _a2.normal;\n    if (!norm) {\n      if (this.faceNormal.x !== 0 || this.faceNormal.y !== 0 || this.faceNormal.z !== 0) {\n        this.faceNormal.set(0, 0, 0);\n        (_b2 = this.onFaceEnter) == null ? void 0 : _b2.call(this, this.faceNormal);\n      }\n      return;\n    }\n    if (this.faceNormal.equals(norm)) {\n      return;\n    }\n    this.faceNormal = norm;\n    (_c = this.onFaceEnter) == null ? void 0 : _c.call(this, this.faceNormal);\n  }\n  onMouseUp(event) {\n    var _a2, _b2;\n    this.releasePointer();\n    if (this.mouseDown) {\n      this.mouseDown = false;\n      this.viewer.inputs.registerAll();\n      if (event.pointerType === \"mouse\") {\n        this.onMouseMove(event);\n      } else {\n        this.faceNormal = new Vector3();\n        (_a2 = this.onFaceEnter) == null ? void 0 : _a2.call(this, this.faceNormal);\n      }\n      (_b2 = this.onBoxConfirm) == null ? void 0 : _b2.call(this, this.sharedBox);\n    }\n  }\n  onMouseDown(event) {\n    var _a2, _b2;\n    const hits = this.raycast(\n      new Vector2(event.offsetX, event.offsetY),\n      this.ctrlDown\n    );\n    const hit = hits == null ? void 0 : hits[0];\n    if (!((_a2 = hit == null ? void 0 : hit.face) == null ? void 0 : _a2.normal))\n      return;\n    this.capturePointer(event.pointerId);\n    this.lastBox.copy(this.sharedBox);\n    this.faceNormal = hit.face.normal;\n    this.dragOrigin.copy(hit.point);\n    const dist2 = hit.point.clone().dot(this.viewer.camera.forward);\n    this.dragpPlane.set(this.viewer.camera.forward, -dist2);\n    this.mouseDown = true;\n    this.viewer.inputs.unregisterAll();\n    (_b2 = this.onFaceEnter) == null ? void 0 : _b2.call(this, this.faceNormal);\n  }\n  onDrag(event) {\n    var _a2, _b2;\n    this.raycaster = this.viewer.raycaster.fromPoint2(\n      new Vector2(event.offsetX, event.offsetY),\n      this.raycaster\n    );\n    const point = (_a2 = this.raycaster.ray.intersectPlane(this.dragpPlane, new Vector3())) != null ? _a2 : this.dragOrigin.clone();\n    const delta = point.sub(this.dragOrigin);\n    const amount = delta.dot(this.faceNormal);\n    const box = this.stretch(this.faceNormal, amount);\n    (_b2 = this.onBoxStretch) == null ? void 0 : _b2.call(this, box);\n  }\n  stretch(normal, amount) {\n    const result = this.sharedBox.clone();\n    if (normal.x > 0.1) {\n      result.max.setX(Math.max(this.lastBox.max.x + amount, result.min.x - 1));\n    }\n    if (normal.x < -0.1) {\n      result.min.setX(Math.min(this.lastBox.min.x - amount, result.max.x + 1));\n    }\n    if (normal.y > 0.1) {\n      result.max.setY(Math.max(this.lastBox.max.y + amount, result.min.y - 1));\n    }\n    if (normal.y < -0.1) {\n      result.min.setY(Math.min(this.lastBox.min.y - amount, result.max.y + 1));\n    }\n    if (normal.z > 0.1) {\n      result.max.setZ(Math.max(this.lastBox.max.z + amount, result.min.z - 1));\n    }\n    if (normal.z < -0.1) {\n      result.min.setZ(Math.min(this.lastBox.min.z - amount, result.max.z + 1));\n    }\n    return result;\n  }\n  raycast(position, reverse) {\n    this.raycaster = this.viewer.raycaster.fromPoint2(position, this.raycaster);\n    if (reverse) {\n      this.raycaster.ray.set(\n        this.raycaster.ray.origin.clone().add(this.raycaster.ray.direction.clone().multiplyScalar(this.viewer.settings.camera.far)),\n        this.raycaster.ray.direction.negate()\n      );\n    }\n    return this.raycaster.intersectObject(this.cube);\n  }\n}\nclass SectionBox {\n  constructor(viewer) {\n    __publicField(this, \"_viewer\");\n    __publicField(this, \"_inputs\");\n    __publicField(this, \"_cube\");\n    __publicField(this, \"_outline\");\n    __publicField(this, \"_highlight\");\n    __publicField(this, \"_normal\");\n    __publicField(this, \"_clip\");\n    __publicField(this, \"_visible\");\n    __publicField(this, \"_interactive\");\n    __publicField(this, \"_onStateChanged\", new dist$2.SignalDispatcher());\n    __publicField(this, \"_onBoxConfirm\", new dist.SimpleEventDispatcher());\n    __publicField(this, \"_onHover\", new dist.SimpleEventDispatcher());\n    this._viewer = viewer;\n    this._normal = new Vector3();\n    this._cube = new BoxMesh();\n    this._outline = new BoxOutline();\n    this._highlight = new BoxHighlight();\n    this.renderer.add(this._cube);\n    this.renderer.add(this._outline);\n    this.renderer.add(this._highlight);\n    this._inputs = new BoxInputs(\n      viewer,\n      this._cube,\n      this._viewer.renderer.section.box\n    );\n    this._inputs.onFaceEnter = (normal) => {\n      this._normal = normal;\n      if (this.visible)\n        this._highlight.highlight(this.section.box, normal);\n      this._onHover.dispatch(normal.x !== 0 || normal.y !== 0 || normal.z !== 0);\n      this.renderer.needsUpdate = true;\n    };\n    this._inputs.onBoxStretch = (box) => {\n      this.renderer.section.fitBox(box);\n      this.update();\n    };\n    this._inputs.onBoxConfirm = (box) => this._onBoxConfirm.dispatch(box);\n    this.clip = false;\n    this.visible = false;\n    this.interactive = false;\n    this.update();\n  }\n  get onStateChanged() {\n    return this._onStateChanged.asEvent();\n  }\n  get onBoxConfirm() {\n    return this._onBoxConfirm.asEvent();\n  }\n  get onHover() {\n    return this._onHover.asEvent();\n  }\n  get renderer() {\n    return this._viewer.renderer;\n  }\n  get section() {\n    return this._viewer.renderer.section;\n  }\n  get box() {\n    return this.section.box;\n  }\n  get clip() {\n    var _a2;\n    return (_a2 = this._clip) != null ? _a2 : false;\n  }\n  set clip(value) {\n    if (value === this._clip)\n      return;\n    this._clip = value;\n    this.renderer.section.active = value;\n    this._onStateChanged.dispatch();\n  }\n  get interactive() {\n    var _a2;\n    return (_a2 = this._interactive) != null ? _a2 : false;\n  }\n  set interactive(value) {\n    if (value === this._interactive)\n      return;\n    if (!this._interactive && value)\n      this._inputs.register();\n    if (this._interactive && !value)\n      this._inputs.unregister();\n    this._interactive = value;\n    this._highlight.visible = false;\n    this.renderer.needsUpdate = true;\n    this._onStateChanged.dispatch();\n  }\n  get visible() {\n    var _a2;\n    return (_a2 = this._visible) != null ? _a2 : false;\n  }\n  set visible(value) {\n    if (value === this._visible)\n      return;\n    this._visible = value;\n    this._cube.visible = value;\n    this._outline.visible = value;\n    this._highlight.visible = value;\n    if (value)\n      this.update();\n    this.renderer.needsUpdate = true;\n    this._onStateChanged.dispatch();\n  }\n  fitBox(box, padding = 1) {\n    if (!box)\n      return;\n    const b = box.expandByScalar(padding);\n    this._cube.fitBox(b);\n    this._outline.fitBox(b);\n    this.renderer.section.fitBox(b);\n    this._onBoxConfirm.dispatch(this.box);\n    this.renderer.needsUpdate = true;\n  }\n  update() {\n    this.fitBox(this.section.box, 0);\n    this._highlight.highlight(this.section.box, this._normal);\n    this.renderer.needsUpdate = true;\n  }\n  dispose() {\n    this.renderer.remove(this._cube);\n    this.renderer.remove(this._outline);\n    this.renderer.remove(this._highlight);\n    this._inputs.unregister();\n    this._cube.dispose();\n    this._outline.dispose();\n    this._highlight.dispose();\n  }\n}\nclass Gizmos {\n  constructor(viewer, camera) {\n    __publicField(this, \"viewer\");\n    __publicField(this, \"_measure\");\n    __publicField(this, \"section\");\n    __publicField(this, \"loading\");\n    __publicField(this, \"orbit\");\n    __publicField(this, \"rectangle\");\n    __publicField(this, \"axes\");\n    __publicField(this, \"markers\");\n    var _a2;\n    this.viewer = viewer;\n    this._measure = new Measure(viewer);\n    this.section = new SectionBox(viewer);\n    this.loading = new GizmoLoading(viewer);\n    this.orbit = new GizmoOrbit(\n      viewer.renderer,\n      camera,\n      viewer.inputs,\n      viewer.settings\n    );\n    this.rectangle = new GizmoRectangle(viewer);\n    this.axes = new GizmoAxes(camera, viewer.viewport, viewer.settings.axes);\n    this.markers = new GizmoMarkers(viewer);\n    (_a2 = viewer.viewport.canvas.parentElement) == null ? void 0 : _a2.prepend(this.axes.canvas);\n  }\n  get measure() {\n    return this._measure;\n  }\n  updateAfterCamera() {\n    this.axes.update();\n  }\n  dispose() {\n    var _a2;\n    (_a2 = this.viewer.viewport.canvas.parentElement) == null ? void 0 : _a2.removeChild(this.axes.canvas);\n    this._measure.clear();\n    this.section.dispose();\n    this.loading.dispose();\n    this.orbit.dispose();\n    this.rectangle.dispose();\n    this.axes.dispose();\n  }\n}\nclass RenderingSection {\n  constructor(renderer, materials) {\n    __publicField(this, \"_renderer\");\n    __publicField(this, \"_materials\");\n    __publicField(this, \"_active\", true);\n    __publicField(this, \"box\", new Box3(\n      new Vector3(-100, -100, -100),\n      new Vector3(100, 100, 100)\n    ));\n    __publicField(this, \"maxX\", new Plane(new Vector3(-1, 0, 0)));\n    __publicField(this, \"minX\", new Plane(new Vector3(1, 0, 0)));\n    __publicField(this, \"maxY\", new Plane(new Vector3(0, -1, 0)));\n    __publicField(this, \"minY\", new Plane(new Vector3(0, 1, 0)));\n    __publicField(this, \"maxZ\", new Plane(new Vector3(0, 0, -1)));\n    __publicField(this, \"minZ\", new Plane(new Vector3(0, 0, 1)));\n    __publicField(this, \"planes\", [\n      this.maxX,\n      this.minX,\n      this.maxY,\n      this.minY,\n      this.maxZ,\n      this.minZ\n    ]);\n    this._renderer = renderer;\n    this._materials = materials;\n  }\n  fitBox(box) {\n    this.maxX.constant = box.max.x;\n    this.minX.constant = -box.min.x;\n    this.maxY.constant = box.max.y;\n    this.minY.constant = -box.min.y;\n    this.maxZ.constant = box.max.z;\n    this.minZ.constant = -box.min.z;\n    this.box.copy(box);\n    this._renderer.needsUpdate = true;\n    this._renderer.skipAntialias = true;\n  }\n  set active(value) {\n    this._materials.clippingPlanes = this.planes;\n    this._renderer.renderer.localClippingEnabled = value;\n    this._active = value;\n    this._renderer.needsUpdate = true;\n  }\n  get active() {\n    return this._active;\n  }\n}\nconst CopyShader = {\n  uniforms: {\n    \"tDiffuse\": { value: null },\n    \"opacity\": { value: 1 }\n  },\n  vertexShader: `\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n  fragmentShader: `\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor.a *= opacity;\n\n\n\t\t}`\n};\nclass Pass {\n  constructor() {\n    this.enabled = true;\n    this.needsSwap = true;\n    this.clear = false;\n    this.renderToScreen = false;\n  }\n  setSize() {\n  }\n  render() {\n    console.error(\"THREE.Pass: .render() must be implemented in derived pass.\");\n  }\n}\nconst _camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\nconst _geometry$1 = new BufferGeometry();\n_geometry$1.setAttribute(\"position\", new Float32BufferAttribute([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3));\n_geometry$1.setAttribute(\"uv\", new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\nclass FullScreenQuad {\n  constructor(material) {\n    this._mesh = new Mesh(_geometry$1, material);\n  }\n  dispose() {\n    this._mesh.geometry.dispose();\n  }\n  render(renderer) {\n    renderer.render(this._mesh, _camera);\n  }\n  get material() {\n    return this._mesh.material;\n  }\n  set material(value) {\n    this._mesh.material = value;\n  }\n}\nclass ShaderPass extends Pass {\n  constructor(shader, textureID) {\n    super();\n    this.textureID = textureID !== void 0 ? textureID : \"tDiffuse\";\n    if (shader instanceof ShaderMaterial) {\n      this.uniforms = shader.uniforms;\n      this.material = shader;\n    } else if (shader) {\n      this.uniforms = UniformsUtils.clone(shader.uniforms);\n      this.material = new ShaderMaterial({\n        defines: Object.assign({}, shader.defines),\n        uniforms: this.uniforms,\n        vertexShader: shader.vertexShader,\n        fragmentShader: shader.fragmentShader\n      });\n    }\n    this.fsQuad = new FullScreenQuad(this.material);\n  }\n  render(renderer, writeBuffer, readBuffer) {\n    if (this.uniforms[this.textureID]) {\n      this.uniforms[this.textureID].value = readBuffer.texture;\n    }\n    this.fsQuad.material = this.material;\n    if (this.renderToScreen) {\n      renderer.setRenderTarget(null);\n      this.fsQuad.render(renderer);\n    } else {\n      renderer.setRenderTarget(writeBuffer);\n      if (this.clear)\n        renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil);\n      this.fsQuad.render(renderer);\n    }\n  }\n}\nclass MaskPass extends Pass {\n  constructor(scene, camera) {\n    super();\n    this.scene = scene;\n    this.camera = camera;\n    this.clear = true;\n    this.needsSwap = false;\n    this.inverse = false;\n  }\n  render(renderer, writeBuffer, readBuffer) {\n    const context = renderer.getContext();\n    const state = renderer.state;\n    state.buffers.color.setMask(false);\n    state.buffers.depth.setMask(false);\n    state.buffers.color.setLocked(true);\n    state.buffers.depth.setLocked(true);\n    let writeValue, clearValue;\n    if (this.inverse) {\n      writeValue = 0;\n      clearValue = 1;\n    } else {\n      writeValue = 1;\n      clearValue = 0;\n    }\n    state.buffers.stencil.setTest(true);\n    state.buffers.stencil.setOp(context.REPLACE, context.REPLACE, context.REPLACE);\n    state.buffers.stencil.setFunc(context.ALWAYS, writeValue, 4294967295);\n    state.buffers.stencil.setClear(clearValue);\n    state.buffers.stencil.setLocked(true);\n    renderer.setRenderTarget(readBuffer);\n    if (this.clear)\n      renderer.clear();\n    renderer.render(this.scene, this.camera);\n    renderer.setRenderTarget(writeBuffer);\n    if (this.clear)\n      renderer.clear();\n    renderer.render(this.scene, this.camera);\n    state.buffers.color.setLocked(false);\n    state.buffers.depth.setLocked(false);\n    state.buffers.stencil.setLocked(false);\n    state.buffers.stencil.setFunc(context.EQUAL, 1, 4294967295);\n    state.buffers.stencil.setOp(context.KEEP, context.KEEP, context.KEEP);\n    state.buffers.stencil.setLocked(true);\n  }\n}\nclass ClearMaskPass extends Pass {\n  constructor() {\n    super();\n    this.needsSwap = false;\n  }\n  render(renderer) {\n    renderer.state.buffers.stencil.setLocked(false);\n    renderer.state.buffers.stencil.setTest(false);\n  }\n}\nclass EffectComposer {\n  constructor(renderer, renderTarget) {\n    this.renderer = renderer;\n    if (renderTarget === void 0) {\n      const size = renderer.getSize(new Vector2());\n      this._pixelRatio = renderer.getPixelRatio();\n      this._width = size.width;\n      this._height = size.height;\n      renderTarget = new WebGLRenderTarget(this._width * this._pixelRatio, this._height * this._pixelRatio);\n      renderTarget.texture.name = \"EffectComposer.rt1\";\n    } else {\n      this._pixelRatio = 1;\n      this._width = renderTarget.width;\n      this._height = renderTarget.height;\n    }\n    this.renderTarget1 = renderTarget;\n    this.renderTarget2 = renderTarget.clone();\n    this.renderTarget2.texture.name = \"EffectComposer.rt2\";\n    this.writeBuffer = this.renderTarget1;\n    this.readBuffer = this.renderTarget2;\n    this.renderToScreen = true;\n    this.passes = [];\n    if (CopyShader === void 0) {\n      console.error(\"THREE.EffectComposer relies on CopyShader\");\n    }\n    if (ShaderPass === void 0) {\n      console.error(\"THREE.EffectComposer relies on ShaderPass\");\n    }\n    this.copyPass = new ShaderPass(CopyShader);\n    this.clock = new Clock();\n  }\n  swapBuffers() {\n    const tmp2 = this.readBuffer;\n    this.readBuffer = this.writeBuffer;\n    this.writeBuffer = tmp2;\n  }\n  addPass(pass) {\n    this.passes.push(pass);\n    pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);\n  }\n  insertPass(pass, index) {\n    this.passes.splice(index, 0, pass);\n    pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);\n  }\n  removePass(pass) {\n    const index = this.passes.indexOf(pass);\n    if (index !== -1) {\n      this.passes.splice(index, 1);\n    }\n  }\n  isLastEnabledPass(passIndex) {\n    for (let i = passIndex + 1; i < this.passes.length; i++) {\n      if (this.passes[i].enabled) {\n        return false;\n      }\n    }\n    return true;\n  }\n  render(deltaTime) {\n    if (deltaTime === void 0) {\n      deltaTime = this.clock.getDelta();\n    }\n    const currentRenderTarget = this.renderer.getRenderTarget();\n    let maskActive = false;\n    for (let i = 0, il = this.passes.length; i < il; i++) {\n      const pass = this.passes[i];\n      if (pass.enabled === false)\n        continue;\n      pass.renderToScreen = this.renderToScreen && this.isLastEnabledPass(i);\n      pass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive);\n      if (pass.needsSwap) {\n        if (maskActive) {\n          const context = this.renderer.getContext();\n          const stencil = this.renderer.state.buffers.stencil;\n          stencil.setFunc(context.NOTEQUAL, 1, 4294967295);\n          this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime);\n          stencil.setFunc(context.EQUAL, 1, 4294967295);\n        }\n        this.swapBuffers();\n      }\n      if (MaskPass !== void 0) {\n        if (pass instanceof MaskPass) {\n          maskActive = true;\n        } else if (pass instanceof ClearMaskPass) {\n          maskActive = false;\n        }\n      }\n    }\n    this.renderer.setRenderTarget(currentRenderTarget);\n  }\n  reset(renderTarget) {\n    if (renderTarget === void 0) {\n      const size = this.renderer.getSize(new Vector2());\n      this._pixelRatio = this.renderer.getPixelRatio();\n      this._width = size.width;\n      this._height = size.height;\n      renderTarget = this.renderTarget1.clone();\n      renderTarget.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);\n    }\n    this.renderTarget1.dispose();\n    this.renderTarget2.dispose();\n    this.renderTarget1 = renderTarget;\n    this.renderTarget2 = renderTarget.clone();\n    this.writeBuffer = this.renderTarget1;\n    this.readBuffer = this.renderTarget2;\n  }\n  setSize(width, height) {\n    this._width = width;\n    this._height = height;\n    const effectiveWidth = this._width * this._pixelRatio;\n    const effectiveHeight = this._height * this._pixelRatio;\n    this.renderTarget1.setSize(effectiveWidth, effectiveHeight);\n    this.renderTarget2.setSize(effectiveWidth, effectiveHeight);\n    for (let i = 0; i < this.passes.length; i++) {\n      this.passes[i].setSize(effectiveWidth, effectiveHeight);\n    }\n  }\n  setPixelRatio(pixelRatio) {\n    this._pixelRatio = pixelRatio;\n    this.setSize(this._width, this._height);\n  }\n}\nnew OrthographicCamera(-1, 1, 1, -1, 0, 1);\nconst _geometry = new BufferGeometry();\n_geometry.setAttribute(\"position\", new Float32BufferAttribute([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3));\n_geometry.setAttribute(\"uv\", new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\nclass RenderPass extends Pass {\n  constructor(scene, camera, overrideMaterial, clearColor, clearAlpha) {\n    super();\n    this.scene = scene;\n    this.camera = camera;\n    this.overrideMaterial = overrideMaterial;\n    this.clearColor = clearColor;\n    this.clearAlpha = clearAlpha !== void 0 ? clearAlpha : 0;\n    this.clear = true;\n    this.clearDepth = false;\n    this.needsSwap = false;\n    this._oldClearColor = new Color();\n  }\n  render(renderer, writeBuffer, readBuffer) {\n    const oldAutoClear = renderer.autoClear;\n    renderer.autoClear = false;\n    let oldClearAlpha, oldOverrideMaterial;\n    if (this.overrideMaterial !== void 0) {\n      oldOverrideMaterial = this.scene.overrideMaterial;\n      this.scene.overrideMaterial = this.overrideMaterial;\n    }\n    if (this.clearColor) {\n      renderer.getClearColor(this._oldClearColor);\n      oldClearAlpha = renderer.getClearAlpha();\n      renderer.setClearColor(this.clearColor, this.clearAlpha);\n    }\n    if (this.clearDepth) {\n      renderer.clearDepth();\n    }\n    renderer.setRenderTarget(this.renderToScreen ? null : readBuffer);\n    if (this.clear)\n      renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil);\n    renderer.render(this.scene, this.camera);\n    if (this.clearColor) {\n      renderer.setClearColor(this._oldClearColor, oldClearAlpha);\n    }\n    if (this.overrideMaterial !== void 0) {\n      this.scene.overrideMaterial = oldOverrideMaterial;\n    }\n    renderer.autoClear = oldAutoClear;\n  }\n}\nclass SSAARenderPass extends Pass {\n  constructor(scene, camera, clearColor, clearAlpha) {\n    super();\n    this.scene = scene;\n    this.camera = camera;\n    this.sampleLevel = 4;\n    this.unbiased = true;\n    this.clearColor = clearColor !== void 0 ? clearColor : 0;\n    this.clearAlpha = clearAlpha !== void 0 ? clearAlpha : 0;\n    this._oldClearColor = new Color();\n    if (CopyShader === void 0)\n      console.error(\"THREE.SSAARenderPass relies on CopyShader\");\n    const copyShader = CopyShader;\n    this.copyUniforms = UniformsUtils.clone(copyShader.uniforms);\n    this.copyMaterial = new ShaderMaterial({\n      uniforms: this.copyUniforms,\n      vertexShader: copyShader.vertexShader,\n      fragmentShader: copyShader.fragmentShader,\n      transparent: true,\n      blending: AdditiveBlending,\n      depthTest: false,\n      depthWrite: false\n    });\n    this.fsQuad = new FullScreenQuad(this.copyMaterial);\n  }\n  dispose() {\n    if (this.sampleRenderTarget) {\n      this.sampleRenderTarget.dispose();\n      this.sampleRenderTarget = null;\n    }\n  }\n  setSize(width, height) {\n    if (this.sampleRenderTarget)\n      this.sampleRenderTarget.setSize(width, height);\n  }\n  render(renderer, writeBuffer, readBuffer) {\n    if (!this.sampleRenderTarget) {\n      this.sampleRenderTarget = new WebGLRenderTarget(readBuffer.width, readBuffer.height);\n      this.sampleRenderTarget.texture.name = \"SSAARenderPass.sample\";\n    }\n    const jitterOffsets = _JitterVectors[Math.max(0, Math.min(this.sampleLevel, 5))];\n    const autoClear = renderer.autoClear;\n    renderer.autoClear = false;\n    renderer.getClearColor(this._oldClearColor);\n    const oldClearAlpha = renderer.getClearAlpha();\n    const baseSampleWeight = 1 / jitterOffsets.length;\n    const roundingRange = 1 / 32;\n    this.copyUniforms[\"tDiffuse\"].value = this.sampleRenderTarget.texture;\n    const viewOffset = {\n      fullWidth: readBuffer.width,\n      fullHeight: readBuffer.height,\n      offsetX: 0,\n      offsetY: 0,\n      width: readBuffer.width,\n      height: readBuffer.height\n    };\n    const originalViewOffset = Object.assign({}, this.camera.view);\n    if (originalViewOffset.enabled)\n      Object.assign(viewOffset, originalViewOffset);\n    for (let i = 0; i < jitterOffsets.length; i++) {\n      const jitterOffset = jitterOffsets[i];\n      if (this.camera.setViewOffset) {\n        this.camera.setViewOffset(\n          viewOffset.fullWidth,\n          viewOffset.fullHeight,\n          viewOffset.offsetX + jitterOffset[0] * 0.0625,\n          viewOffset.offsetY + jitterOffset[1] * 0.0625,\n          viewOffset.width,\n          viewOffset.height\n        );\n      }\n      let sampleWeight = baseSampleWeight;\n      if (this.unbiased) {\n        const uniformCenteredDistribution = -0.5 + (i + 0.5) / jitterOffsets.length;\n        sampleWeight += roundingRange * uniformCenteredDistribution;\n      }\n      this.copyUniforms[\"opacity\"].value = sampleWeight;\n      renderer.setClearColor(this.clearColor, this.clearAlpha);\n      renderer.setRenderTarget(this.sampleRenderTarget);\n      renderer.clear();\n      renderer.render(this.scene, this.camera);\n      renderer.setRenderTarget(this.renderToScreen ? null : writeBuffer);\n      if (i === 0) {\n        renderer.setClearColor(0, 0);\n        renderer.clear();\n      }\n      this.fsQuad.render(renderer);\n    }\n    if (this.camera.setViewOffset && originalViewOffset.enabled) {\n      this.camera.setViewOffset(\n        originalViewOffset.fullWidth,\n        originalViewOffset.fullHeight,\n        originalViewOffset.offsetX,\n        originalViewOffset.offsetY,\n        originalViewOffset.width,\n        originalViewOffset.height\n      );\n    } else if (this.camera.clearViewOffset) {\n      this.camera.clearViewOffset();\n    }\n    renderer.autoClear = autoClear;\n    renderer.setClearColor(this._oldClearColor, oldClearAlpha);\n  }\n}\nconst _JitterVectors = [\n  [\n    [0, 0]\n  ],\n  [\n    [4, 4],\n    [-4, -4]\n  ],\n  [\n    [-2, -6],\n    [6, -2],\n    [-6, 2],\n    [2, 6]\n  ],\n  [\n    [1, -3],\n    [-1, 3],\n    [5, 1],\n    [-3, -5],\n    [-5, 5],\n    [-7, -1],\n    [3, 7],\n    [7, -7]\n  ],\n  [\n    [1, 1],\n    [-1, -3],\n    [-3, 2],\n    [4, -1],\n    [-5, -2],\n    [2, 5],\n    [5, 3],\n    [3, -5],\n    [-2, 6],\n    [0, -7],\n    [-4, -6],\n    [-6, 4],\n    [-8, 0],\n    [7, -4],\n    [6, 7],\n    [-7, -8]\n  ],\n  [\n    [-4, -7],\n    [-7, -5],\n    [-3, -5],\n    [-5, -4],\n    [-1, -4],\n    [-2, -2],\n    [-6, -1],\n    [-4, 0],\n    [-7, 1],\n    [-1, 2],\n    [-6, 3],\n    [-3, 3],\n    [-7, 6],\n    [-3, 6],\n    [-5, 7],\n    [-1, 7],\n    [5, -7],\n    [1, -6],\n    [6, -5],\n    [4, -4],\n    [2, -3],\n    [7, -2],\n    [1, -1],\n    [4, -1],\n    [2, 1],\n    [6, 2],\n    [0, 4],\n    [4, 4],\n    [2, 5],\n    [7, 5],\n    [5, 6],\n    [3, 7]\n  ]\n];\nconst FXAAShader = {\n  uniforms: {\n    \"tDiffuse\": { value: null },\n    \"resolution\": { value: new Vector2(1 / 1024, 1 / 512) }\n  },\n  vertexShader: `\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n  fragmentShader: `\n\tprecision highp float;\n\n\tuniform sampler2D tDiffuse;\n\n\tuniform vec2 resolution;\n\n\tvarying vec2 vUv;\n\n\t// FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)\n\n\t//----------------------------------------------------------------------------------\n\t// File:        es3-keplerFXAAassetsshaders/FXAA_DefaultES.frag\n\t// SDK Version: v3.00\n\t// Email:       gameworks@nvidia.com\n\t// Site:        http://developer.nvidia.com/\n\t//\n\t// Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.\n\t//\n\t// Redistribution and use in source and binary forms, with or without\n\t// modification, are permitted provided that the following conditions\n\t// are met:\n\t//  * Redistributions of source code must retain the above copyright\n\t//    notice, this list of conditions and the following disclaimer.\n\t//  * Redistributions in binary form must reproduce the above copyright\n\t//    notice, this list of conditions and the following disclaimer in the\n\t//    documentation and/or other materials provided with the distribution.\n\t//  * Neither the name of NVIDIA CORPORATION nor the names of its\n\t//    contributors may be used to endorse or promote products derived\n\t//    from this software without specific prior written permission.\n\t//\n\t// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY\n\t// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n\t// PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n\t// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n\t// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n\t// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n\t// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n\t// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t//\n\t//----------------------------------------------------------------------------------\n\n\t#ifndef FXAA_DISCARD\n\t\t\t//\n\t\t\t// Only valid for PC OpenGL currently.\n\t\t\t// Probably will not work when FXAA_GREEN_AS_LUMA = 1.\n\t\t\t//\n\t\t\t// 1 = Use discard on pixels which don't need AA.\n\t\t\t//     For APIs which enable concurrent TEX+ROP from same surface.\n\t\t\t// 0 = Return unchanged color on pixels which don't need AA.\n\t\t\t//\n\t\t\t#define FXAA_DISCARD 0\n\t#endif\n\n\t/*--------------------------------------------------------------------------*/\n\t#define FxaaTexTop(t, p) texture2D(t, p, -100.0)\n\t#define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), -100.0)\n\t/*--------------------------------------------------------------------------*/\n\n\t#define NUM_SAMPLES 5\n\n\t// assumes colors have premultipliedAlpha, so that the calculated color contrast is scaled by alpha\n\tfloat contrast( vec4 a, vec4 b ) {\n\t\t\tvec4 diff = abs( a - b );\n\t\t\treturn max( max( max( diff.r, diff.g ), diff.b ), diff.a );\n\t}\n\n\t/*============================================================================\n\n\t\t\t\t\t\t\t\t\tFXAA3 QUALITY - PC\n\n\t============================================================================*/\n\n\t/*--------------------------------------------------------------------------*/\n\tvec4 FxaaPixelShader(\n\t\t\tvec2 posM,\n\t\t\tsampler2D tex,\n\t\t\tvec2 fxaaQualityRcpFrame,\n\t\t\tfloat fxaaQualityEdgeThreshold,\n\t\t\tfloat fxaaQualityinvEdgeThreshold\n\t) {\n\t\t\tvec4 rgbaM = FxaaTexTop(tex, posM);\n\t\t\tvec4 rgbaS = FxaaTexOff(tex, posM, vec2( 0.0, 1.0), fxaaQualityRcpFrame.xy);\n\t\t\tvec4 rgbaE = FxaaTexOff(tex, posM, vec2( 1.0, 0.0), fxaaQualityRcpFrame.xy);\n\t\t\tvec4 rgbaN = FxaaTexOff(tex, posM, vec2( 0.0,-1.0), fxaaQualityRcpFrame.xy);\n\t\t\tvec4 rgbaW = FxaaTexOff(tex, posM, vec2(-1.0, 0.0), fxaaQualityRcpFrame.xy);\n\t\t\t// . S .\n\t\t\t// W M E\n\t\t\t// . N .\n\n\t\t\tbool earlyExit = max( max( max(\n\t\t\t\t\tcontrast( rgbaM, rgbaN ),\n\t\t\t\t\tcontrast( rgbaM, rgbaS ) ),\n\t\t\t\t\tcontrast( rgbaM, rgbaE ) ),\n\t\t\t\t\tcontrast( rgbaM, rgbaW ) )\n\t\t\t\t\t< fxaaQualityEdgeThreshold;\n\t\t\t// . 0 .\n\t\t\t// 0 0 0\n\t\t\t// . 0 .\n\n\t\t\t#if (FXAA_DISCARD == 1)\n\t\t\t\t\tif(earlyExit) FxaaDiscard;\n\t\t\t#else\n\t\t\t\t\tif(earlyExit) return rgbaM;\n\t\t\t#endif\n\n\t\t\tfloat contrastN = contrast( rgbaM, rgbaN );\n\t\t\tfloat contrastS = contrast( rgbaM, rgbaS );\n\t\t\tfloat contrastE = contrast( rgbaM, rgbaE );\n\t\t\tfloat contrastW = contrast( rgbaM, rgbaW );\n\n\t\t\tfloat relativeVContrast = ( contrastN + contrastS ) - ( contrastE + contrastW );\n\t\t\trelativeVContrast *= fxaaQualityinvEdgeThreshold;\n\n\t\t\tbool horzSpan = relativeVContrast > 0.;\n\t\t\t// . 1 .\n\t\t\t// 0 0 0\n\t\t\t// . 1 .\n\n\t\t\t// 45 deg edge detection and corners of objects, aka V/H contrast is too similar\n\t\t\tif( abs( relativeVContrast ) < .3 ) {\n\t\t\t\t\t// locate the edge\n\t\t\t\t\tvec2 dirToEdge;\n\t\t\t\t\tdirToEdge.x = contrastE > contrastW ? 1. : -1.;\n\t\t\t\t\tdirToEdge.y = contrastS > contrastN ? 1. : -1.;\n\t\t\t\t\t// . 2 .      . 1 .\n\t\t\t\t\t// 1 0 2  ~=  0 0 1\n\t\t\t\t\t// . 1 .      . 0 .\n\n\t\t\t\t\t// tap 2 pixels and see which ones are \"outside\" the edge, to\n\t\t\t\t\t// determine if the edge is vertical or horizontal\n\n\t\t\t\t\tvec4 rgbaAlongH = FxaaTexOff(tex, posM, vec2( dirToEdge.x, -dirToEdge.y ), fxaaQualityRcpFrame.xy);\n\t\t\t\t\tfloat matchAlongH = contrast( rgbaM, rgbaAlongH );\n\t\t\t\t\t// . 1 .\n\t\t\t\t\t// 0 0 1\n\t\t\t\t\t// . 0 H\n\n\t\t\t\t\tvec4 rgbaAlongV = FxaaTexOff(tex, posM, vec2( -dirToEdge.x, dirToEdge.y ), fxaaQualityRcpFrame.xy);\n\t\t\t\t\tfloat matchAlongV = contrast( rgbaM, rgbaAlongV );\n\t\t\t\t\t// V 1 .\n\t\t\t\t\t// 0 0 1\n\t\t\t\t\t// . 0 .\n\n\t\t\t\t\trelativeVContrast = matchAlongV - matchAlongH;\n\t\t\t\t\trelativeVContrast *= fxaaQualityinvEdgeThreshold;\n\n\t\t\t\t\tif( abs( relativeVContrast ) < .3 ) { // 45 deg edge\n\t\t\t\t\t\t\t// 1 1 .\n\t\t\t\t\t\t\t// 0 0 1\n\t\t\t\t\t\t\t// . 0 1\n\n\t\t\t\t\t\t\t// do a simple blur\n\t\t\t\t\t\t\treturn mix(\n\t\t\t\t\t\t\t\t\trgbaM,\n\t\t\t\t\t\t\t\t\t(rgbaN + rgbaS + rgbaE + rgbaW) * .25,\n\t\t\t\t\t\t\t\t\t.4\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\thorzSpan = relativeVContrast > 0.;\n\t\t\t}\n\n\t\t\tif(!horzSpan) rgbaN = rgbaW;\n\t\t\tif(!horzSpan) rgbaS = rgbaE;\n\t\t\t// . 0 .      1\n\t\t\t// 1 0 1  ->  0\n\t\t\t// . 0 .      1\n\n\t\t\tbool pairN = contrast( rgbaM, rgbaN ) > contrast( rgbaM, rgbaS );\n\t\t\tif(!pairN) rgbaN = rgbaS;\n\n\t\t\tvec2 offNP;\n\t\t\toffNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;\n\t\t\toffNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;\n\n\t\t\tbool doneN = false;\n\t\t\tbool doneP = false;\n\n\t\t\tfloat nDist = 0.;\n\t\t\tfloat pDist = 0.;\n\n\t\t\tvec2 posN = posM;\n\t\t\tvec2 posP = posM;\n\n\t\t\tint iterationsUsed = 0;\n\t\t\tint iterationsUsedN = 0;\n\t\t\tint iterationsUsedP = 0;\n\t\t\tfor( int i = 0; i < NUM_SAMPLES; i++ ) {\n\t\t\t\t\titerationsUsed = i;\n\n\t\t\t\t\tfloat increment = float(i + 1);\n\n\t\t\t\t\tif(!doneN) {\n\t\t\t\t\t\t\tnDist += increment;\n\t\t\t\t\t\t\tposN = posM + offNP * nDist;\n\t\t\t\t\t\t\tvec4 rgbaEndN = FxaaTexTop(tex, posN.xy);\n\t\t\t\t\t\t\tdoneN = contrast( rgbaEndN, rgbaM ) > contrast( rgbaEndN, rgbaN );\n\t\t\t\t\t\t\titerationsUsedN = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!doneP) {\n\t\t\t\t\t\t\tpDist += increment;\n\t\t\t\t\t\t\tposP = posM - offNP * pDist;\n\t\t\t\t\t\t\tvec4 rgbaEndP = FxaaTexTop(tex, posP.xy);\n\t\t\t\t\t\t\tdoneP = contrast( rgbaEndP, rgbaM ) > contrast( rgbaEndP, rgbaN );\n\t\t\t\t\t\t\titerationsUsedP = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(doneN || doneP) break;\n\t\t\t}\n\n\n\t\t\tif ( !doneP && !doneN ) return rgbaM; // failed to find end of edge\n\n\t\t\tfloat dist = min(\n\t\t\t\t\tdoneN ? float( iterationsUsedN ) / float( NUM_SAMPLES - 1 ) : 1.,\n\t\t\t\t\tdoneP ? float( iterationsUsedP ) / float( NUM_SAMPLES - 1 ) : 1.\n\t\t\t);\n\n\t\t\t// hacky way of reduces blurriness of mostly diagonal edges\n\t\t\t// but reduces AA quality\n\t\t\tdist = pow(dist, .5);\n\n\t\t\tdist = 1. - dist;\n\n\t\t\treturn mix(\n\t\t\t\t\trgbaM,\n\t\t\t\t\trgbaN,\n\t\t\t\t\tdist * .5\n\t\t\t);\n\t}\n\n\tvoid main() {\n\t\t\tconst float edgeDetectionQuality = .2;\n\t\t\tconst float invEdgeDetectionQuality = 1. / edgeDetectionQuality;\n\n\t\t\tgl_FragColor = FxaaPixelShader(\n\t\t\t\t\tvUv,\n\t\t\t\t\ttDiffuse,\n\t\t\t\t\tresolution,\n\t\t\t\t\tedgeDetectionQuality, // [0,1] contrast needed, otherwise early discard\n\t\t\t\t\tinvEdgeDetectionQuality\n\t\t\t);\n\n\t}\n\t`\n};\nclass OutlinePass extends Pass {\n  constructor(sceneBuffer, camera, material) {\n    super();\n    __publicField(this, \"_fsQuad\");\n    __publicField(this, \"material\");\n    this.material = material != null ? material : new OutlineMaterial();\n    this.material.sceneBuffer = sceneBuffer;\n    this.material.camera = camera;\n    this._fsQuad = new FullScreenQuad(this.material.material);\n  }\n  setSize(width, height) {\n    this.material.resolution = new Vector2(width, height);\n  }\n  get camera() {\n    return this.material.camera;\n  }\n  set camera(value) {\n    this.material.camera = value;\n  }\n  dispose() {\n    this._fsQuad.dispose();\n    this.material.dispose();\n  }\n  render(renderer, writeBuffer, readBuffer) {\n    const depthBufferValue = writeBuffer.depthBuffer;\n    writeBuffer.depthBuffer = false;\n    this.material.depthBuffer = readBuffer.depthTexture;\n    if (this.renderToScreen) {\n      renderer.setRenderTarget(null);\n      this._fsQuad.render(renderer);\n    } else {\n      renderer.setRenderTarget(writeBuffer);\n      this._fsQuad.render(renderer);\n    }\n    writeBuffer.depthBuffer = depthBufferValue;\n  }\n}\nclass MergePass extends Pass {\n  constructor(source, materials) {\n    var _a2;\n    super();\n    __publicField(this, \"_fsQuad\");\n    __publicField(this, \"_material\");\n    this._fsQuad = new FullScreenQuad();\n    this._material = (_a2 = materials == null ? void 0 : materials.merge) != null ? _a2 : new MergeMaterial();\n    this._fsQuad.material = this._material.material;\n    this._material.sourceA = source;\n  }\n  dispose() {\n    this._fsQuad.dispose();\n  }\n  render(renderer, writeBuffer, readBuffer) {\n    this._material.sourceB = readBuffer.texture;\n    if (this.renderToScreen) {\n      renderer.setRenderTarget(null);\n      this._fsQuad.render(renderer);\n    } else {\n      renderer.setRenderTarget(writeBuffer);\n      this._fsQuad.render(renderer);\n    }\n  }\n}\nfunction createTransferMaterial() {\n  return new ShaderMaterial({\n    uniforms: {\n      source: { value: null }\n    },\n    vertexShader: `\n      varying vec2 vUv;\n      void main() {\n        vUv = uv;\n        gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n      }\n      `,\n    fragmentShader: `\n      uniform sampler2D source;\n      varying vec2 vUv;\n      \n      void main() {\n        gl_FragColor = texture2D(source, vUv);\n      }\n      `\n  });\n}\nclass TransferPass extends Pass {\n  constructor(sceneTexture) {\n    super();\n    __publicField(this, \"_fsQuad\");\n    __publicField(this, \"_uniforms\");\n    this._fsQuad = new FullScreenQuad();\n    const mat = createTransferMaterial();\n    this._fsQuad.material = mat;\n    this._uniforms = mat.uniforms;\n    this._uniforms.source.value = sceneTexture;\n  }\n  dispose() {\n    this._fsQuad.dispose();\n  }\n  render(renderer, writeBuffer, readBuffer) {\n    if (this.renderToScreen) {\n      renderer.setRenderTarget(null);\n      this._fsQuad.render(renderer);\n    } else {\n      renderer.setRenderTarget(writeBuffer);\n      this._fsQuad.render(renderer);\n    }\n  }\n}\nclass RenderingComposer {\n  constructor(renderer, scene, viewport, materials, camera) {\n    __publicField(this, \"_renderer\");\n    __publicField(this, \"_scene\");\n    __publicField(this, \"_materials\");\n    __publicField(this, \"_camera\");\n    __publicField(this, \"_samples\", 4);\n    __publicField(this, \"_size\");\n    __publicField(this, \"_composer\");\n    __publicField(this, \"_renderPass\");\n    __publicField(this, \"_ssaaRenderPass\");\n    __publicField(this, \"_selectionRenderPass\");\n    __publicField(this, \"_transferPass\");\n    __publicField(this, \"_outlines\");\n    __publicField(this, \"_clock\");\n    __publicField(this, \"_nextAATime\");\n    __publicField(this, \"onDemand\");\n    __publicField(this, \"_outlinePass\");\n    __publicField(this, \"_fxaaPass\");\n    __publicField(this, \"_mergePass\");\n    __publicField(this, \"_outlineTarget\");\n    __publicField(this, \"_sceneTarget\");\n    this._samples = renderer.capabilities.isWebGL2 ? 8 : 0;\n    this._renderer = renderer;\n    this._scene = scene;\n    this._materials = materials;\n    this._size = viewport.getSize();\n    this._camera = camera.three;\n    this.setup();\n    this._clock = new Clock();\n  }\n  setup() {\n    this.setupRendering();\n    this.setupOutline();\n  }\n  setupRendering() {\n    this._sceneTarget = new WebGLRenderTarget(\n      this._size.x,\n      this._size.y,\n      {\n        samples: this._samples\n      }\n    );\n    this._sceneTarget.texture.name = \"sceneTarget\";\n    this._renderPass = new RenderPass(this._scene.scene, this._camera);\n    this._renderPass.renderToScreen = false;\n    this._renderPass.clearColor = new Color(0);\n    this._renderPass.clearAlpha = 0;\n    this._ssaaRenderPass = new SSAARenderPass(\n      this._scene.scene,\n      this._camera,\n      new Color(0),\n      0\n    );\n    this._ssaaRenderPass.renderToScreen = false;\n    this._ssaaRenderPass.sampleRenderTarget = this._sceneTarget.clone();\n    this._ssaaRenderPass.sampleLevel = 2;\n    this._ssaaRenderPass.unbiased = true;\n  }\n  setupOutline() {\n    this._outlineTarget = new WebGLRenderTarget(\n      this._size.x,\n      this._size.y,\n      {\n        depthTexture: new DepthTexture(this._size.x, this._size.y),\n        samples: this._samples\n      }\n    );\n    this._outlineTarget.texture.name = \"selectionTarget\";\n    this._composer = new EffectComposer(this._renderer, this._outlineTarget);\n    this._selectionRenderPass = new RenderPass(\n      this._scene.scene,\n      this._camera,\n      this._materials.mask\n    );\n    this._composer.addPass(this._selectionRenderPass);\n    this._outlinePass = new OutlinePass(\n      this._sceneTarget.texture,\n      this._camera,\n      this._materials.outline\n    );\n    this._composer.addPass(this._outlinePass);\n    this._fxaaPass = new ShaderPass(FXAAShader);\n    this._composer.addPass(this._fxaaPass);\n    this._mergePass = new MergePass(this._sceneTarget.texture, this._materials);\n    this._mergePass.needsSwap = false;\n    this._composer.addPass(this._mergePass);\n    this._transferPass = new TransferPass(this._sceneTarget.texture);\n    this._transferPass.needsSwap = false;\n    this._transferPass.enabled = true;\n    this._composer.addPass(this._transferPass);\n  }\n  get outlines() {\n    return this._outlines;\n  }\n  set outlines(value) {\n    this._outlines = value;\n    this._selectionRenderPass.enabled = this.outlines;\n    this._outlinePass.enabled = this.outlines;\n    this._fxaaPass.enabled = this.outlines;\n    this._mergePass.enabled = this.outlines;\n    this._transferPass.enabled = !this.outlines;\n  }\n  get camera() {\n    return this._camera;\n  }\n  set camera(value) {\n    this._renderPass.camera = value;\n    this._ssaaRenderPass.camera = value;\n    this._selectionRenderPass.camera = value;\n    this._outlinePass.material.camera = value;\n    this._camera = value;\n  }\n  setSize(width, height) {\n    this._size = new Vector2(width, height);\n    this._sceneTarget.setSize(width, height);\n    this._renderPass.setSize(width, height);\n    this._ssaaRenderPass.setSize(width, height);\n    this._composer.setSize(width, height);\n    this._fxaaPass.uniforms.resolution.value.set(1 / width, 1 / height);\n  }\n  get samples() {\n    return this._samples;\n  }\n  set samples(value) {\n    this.dispose();\n    this._samples = value;\n    this.setup();\n  }\n  render(updated, antialias) {\n    const time = Date.now();\n    if (updated) {\n      this._nextAATime = time + 20;\n    }\n    if (updated && !antialias) {\n      this._renderPass.render(\n        this._renderer,\n        void 0,\n        this._sceneTarget,\n        this._clock.getDelta(),\n        false\n      );\n      this._composer.render();\n    } else if (!this.onDemand || time > this._nextAATime) {\n      this._ssaaRenderPass.render(\n        this._renderer,\n        this._sceneTarget,\n        this._ssaaRenderPass.sampleRenderTarget,\n        this._clock.getDelta(),\n        false\n      );\n      this._nextAATime = Number.MAX_VALUE;\n      this._composer.render();\n    }\n  }\n  dispose() {\n    this._sceneTarget.dispose();\n    this._outlineTarget.dispose();\n    this._outlinePass.dispose();\n  }\n}\nclass Renderer {\n  constructor(scene, viewport, materials, camera, settings) {\n    __publicField(this, \"renderer\");\n    __publicField(this, \"textRenderer\");\n    __publicField(this, \"section\");\n    __publicField(this, \"antialias\", true);\n    __publicField(this, \"_scene\");\n    __publicField(this, \"_viewport\");\n    __publicField(this, \"_camera\");\n    __publicField(this, \"_composer\");\n    __publicField(this, \"_materials\");\n    __publicField(this, \"_renderText\");\n    __publicField(this, \"_skipAntialias\");\n    __publicField(this, \"_needsUpdate\");\n    __publicField(this, \"_onSceneUpdate\", new dist$2.SignalDispatcher());\n    __publicField(this, \"_onBoxUpdated\", new dist$2.SignalDispatcher());\n    __publicField(this, \"_sceneUpdated\", false);\n    __publicField(this, \"maxMemory\", 3 * Math.pow(10, 9));\n    __publicField(this, \"fitViewport\", () => {\n      const size = this._viewport.getParentSize();\n      this.renderer.setPixelRatio(window.devicePixelRatio);\n      this.renderer.setSize(size.x, size.y);\n      this._composer.setSize(size.x, size.y);\n      this.textRenderer.setSize(size.x, size.y);\n      this.needsUpdate = true;\n    });\n    this._viewport = viewport;\n    this._scene = scene;\n    this._materials = materials;\n    this._camera = camera;\n    this.renderer = new WebGLRenderer({\n      canvas: viewport.canvas,\n      antialias: true,\n      precision: \"highp\",\n      alpha: true,\n      stencil: false,\n      powerPreference: \"high-performance\",\n      logarithmicDepthBuffer: true\n    });\n    this.textRenderer = this._viewport.textRenderer;\n    this.textEnabled = true;\n    this._composer = new RenderingComposer(\n      this.renderer,\n      scene,\n      viewport,\n      materials,\n      camera\n    );\n    this._composer.onDemand = settings.rendering.onDemand;\n    this.section = new RenderingSection(this, this._materials);\n    this.fitViewport();\n    this._viewport.onResize.subscribe(() => this.fitViewport());\n    this._camera.onSettingsChanged.sub(() => {\n      this._composer.camera = this._camera.three;\n      this.needsUpdate = true;\n    });\n    this._materials.onUpdate.sub(() => this.needsUpdate = true);\n    this.background = settings.background.color;\n  }\n  get needsUpdate() {\n    return this._needsUpdate;\n  }\n  set needsUpdate(value) {\n    this._needsUpdate = this._needsUpdate || value;\n  }\n  get skipAntialias() {\n    return this._skipAntialias;\n  }\n  set skipAntialias(value) {\n    this._skipAntialias = this._skipAntialias || value;\n  }\n  dispose() {\n    this.clear();\n    this.renderer.clear();\n    this.renderer.forceContextLoss();\n    this.renderer.dispose();\n    this._composer.dispose();\n  }\n  get background() {\n    return this._scene.scene.background;\n  }\n  set background(color) {\n    this._scene.scene.background = color;\n    this.needsUpdate = true;\n  }\n  get onSceneUpdated() {\n    return this._onSceneUpdate.asEvent();\n  }\n  get onBoxUpdated() {\n    return this._onBoxUpdated.asEvent();\n  }\n  get textEnabled() {\n    var _a2;\n    return (_a2 = this._renderText) != null ? _a2 : false;\n  }\n  set textEnabled(value) {\n    if (value === this._renderText)\n      return;\n    this.needsUpdate = true;\n    this._renderText = value;\n    this.textRenderer.domElement.style.display = value ? \"block\" : \"none\";\n  }\n  getBoundingBox(target = new Box3()) {\n    return this._scene.getBoundingBox(target);\n  }\n  updateBox(box) {\n    this._scene.updateBox(box);\n  }\n  notifySceneUpdate() {\n    this._sceneUpdated = true;\n    this.needsUpdate = true;\n  }\n  render() {\n    if (this._scene.boxUpdated) {\n      this._onBoxUpdated.dispatch();\n      this._scene.boxUpdated = false;\n    }\n    if (this._sceneUpdated) {\n      this._onSceneUpdate.dispatch();\n      this._sceneUpdated = false;\n    }\n    this._composer.outlines = this._scene.hasOutline();\n    this._composer.render(\n      this.needsUpdate,\n      this.antialias && !this.skipAntialias && !this._camera.hasMoved\n    );\n    this._needsUpdate = false;\n    this.skipAntialias = false;\n    if (this.textEnabled && this._scene.has2dObjects()) {\n      this.textRenderer.render(this._scene.scene, this._camera.three);\n    }\n    this._scene.clearUpdateFlags();\n  }\n  add(target) {\n    if (target instanceof Scene) {\n      const mem = target.getMemory();\n      const remaining = this.maxMemory - this.estimatedMemory;\n      if (mem > remaining) {\n        return false;\n      }\n      target.renderer = this;\n      this._sceneUpdated = true;\n    }\n    this._scene.add(target);\n    this.notifySceneUpdate();\n    return true;\n  }\n  remove(target) {\n    this._scene.remove(target);\n    this.notifySceneUpdate();\n  }\n  clear() {\n    this._scene.clear();\n    this._needsUpdate = true;\n  }\n  get estimatedMemory() {\n    return this._scene.estimatedMemory;\n  }\n  get samples() {\n    return this._composer.samples;\n  }\n  set samples(value) {\n    this._composer.samples = value;\n  }\n}\nclass Viewer {\n  constructor(settings) {\n    __publicField(this, \"settings\");\n    __publicField(this, \"renderer\");\n    __publicField(this, \"viewport\");\n    __publicField(this, \"selection\");\n    __publicField(this, \"inputs\");\n    __publicField(this, \"raycaster\");\n    __publicField(this, \"materials\");\n    __publicField(this, \"environment\");\n    __publicField(this, \"gizmos\");\n    __publicField(this, \"_camera\");\n    __publicField(this, \"_clock\", new Clock());\n    __publicField(this, \"_vims\", /* @__PURE__ */ new Set());\n    __publicField(this, \"_onVimLoaded\", new dist$2.SignalDispatcher());\n    __publicField(this, \"_updateId\");\n    this.settings = getViewerSettings(settings);\n    this.materials = ViewerMaterials.getInstance();\n    const scene = new RenderScene();\n    this.viewport = new Viewport(this.settings);\n    this._camera = new Camera(scene, this.viewport, this.settings);\n    this.renderer = new Renderer(\n      scene,\n      this.viewport,\n      this.materials,\n      this._camera,\n      this.settings\n    );\n    this.inputs = new Input(this);\n    this.gizmos = new Gizmos(this, this._camera);\n    this.materials.applySettings(this.settings);\n    this.environment = new Environment(this.camera, this.renderer, this.materials, this.settings);\n    this.selection = new Selection(this.materials);\n    this.raycaster = new Raycaster(\n      this.viewport,\n      this._camera,\n      scene,\n      this.renderer\n    );\n    this.inputs.registerAll();\n    this.animate();\n  }\n  get camera() {\n    return this._camera;\n  }\n  get onVimLoaded() {\n    return this._onVimLoaded.asEvent();\n  }\n  animate() {\n    const deltaTime = this._clock.getDelta();\n    this._updateId = requestAnimationFrame(() => this.animate());\n    this.renderer.needsUpdate = this._camera.update(deltaTime);\n    this.selection.update();\n    this.gizmos.updateAfterCamera();\n    this.renderer.render();\n  }\n  get vims() {\n    return [...this._vims];\n  }\n  get vimCount() {\n    return this._vims.size;\n  }\n  add(vim) {\n    if (this._vims.has(vim)) {\n      throw new Error(\"Vim cannot be added again, unless removed first.\");\n    }\n    const success = this.renderer.add(vim.scene);\n    if (!success) {\n      throw new Error(\"Could not load vim. Max geometry memory reached.\");\n    }\n    this._vims.add(vim);\n    this._onVimLoaded.dispatch();\n  }\n  remove(vim) {\n    if (!this._vims.has(vim)) {\n      throw new Error(\"Cannot remove missing vim from viewer.\");\n    }\n    this._vims.delete(vim);\n    this.renderer.remove(vim.scene);\n    if (this.selection.vim === vim) {\n      this.selection.clear();\n    }\n    this._onVimLoaded.dispatch();\n  }\n  clear() {\n    this.vims.forEach((v) => this.remove(v));\n  }\n  dispose() {\n    cancelAnimationFrame(this._updateId);\n    this.selection.dispose();\n    this.environment.dispose();\n    this.selection.clear();\n    this.viewport.dispose();\n    this.renderer.dispose();\n    this.inputs.unregisterAll();\n    this._vims.forEach((v) => v == null ? void 0 : v.dispose());\n    this.materials.dispose();\n    this.gizmos.dispose();\n  }\n}\nfunction getViewerSettingsFromUrl(url, settings) {\n  const urlSettings = parseSettingsFromUrl(url);\n  return cjs(settings, urlSettings != null ? urlSettings : {});\n}\nfunction parseSettingsFromUrl(url) {\n  const params = new URLSearchParams(url);\n  function get(key, parse) {\n    var _a2;\n    const p = (_a2 = params.get(key)) != null ? _a2 : params.get(key.toLowerCase());\n    if (p) {\n      try {\n        return parse == null ? void 0 : parse(p);\n      } catch {\n      }\n    }\n  }\n  const parsed = {\n    canvas: {\n      id: get(\"canvas.id\"),\n      resizeDelay: get(\"canvas.resizeDelay\", Number.parseInt)\n    },\n    camera: {\n      orthographic: get(\"camera.orthographic\", strToBool),\n      allowedMovement: get(\"camera.allowedMovement\", strToVector3),\n      allowedRotation: get(\"camera.allowedRotation\", strToVector2),\n      near: get(\"camera.near\", Number.parseFloat),\n      far: get(\"camera.far\", Number.parseFloat),\n      fov: get(\"camera.fov\", Number.parseInt),\n      zoom: get(\"camera.zoom\", Number.parseFloat),\n      forward: get(\"camera.forward\", strToVector3),\n      controls: {\n        orbit: get(\"camera.controls.orbit\", strToBool),\n        rotateSpeed: get(\"camera.controls.rotateSpeed\", Number.parseFloat),\n        orbitSpeed: get(\"camera.controls.orbitSpeed\", Number.parseFloat),\n        moveSpeed: get(\"camera.controls.moveSpeed\", Number.parseFloat),\n        scrollSpeed: get(\"camera.controls.scrollSpeed\", Number.parseFloat)\n      },\n      gizmo: {\n        enable: get(\"camera.gizmo.enable\", strToBool),\n        size: get(\"camera.gizmo.size\", Number.parseFloat),\n        color: get(\"camera.gizmo.color\", strToColor),\n        opacity: get(\"camera.gizmo.opacity\", Number.parseFloat),\n        opacityAlways: get(\"camera.gizmo.opacityAlways\", Number.parseFloat)\n      }\n    },\n    background: {\n      color: get(\"background.color\", strToColor)\n    },\n    skybox: {\n      skyColor: get(\"skybox.skyColor\", strToColor),\n      groundColor: get(\"skybox.groundColor\", strToColor),\n      sharpness: get(\"skybox.sharpness\", Number.parseFloat)\n    },\n    groundPlane: {\n      visible: get(\"groundPlane.visible\", strToBool),\n      encoding: get(\"groundPlane.encoding\"),\n      texture: get(\"groundPlane.texture\"),\n      opacity: get(\"groundPlane.opacity\", Number.parseFloat),\n      color: get(\"groundPlane.color\", strToColor),\n      size: get(\"groundPlane.size\", Number.parseFloat)\n    },\n    skylight: {\n      skyColor: get(\"skylight.skyColor\", strToColor),\n      groundColor: get(\"skylight.groundColor\", strToColor),\n      intensity: get(\"skylight.intensity\", Number.parseFloat)\n    },\n    sunlights: [\n      {\n        followCamera: get(\"sunlights.0.followCamera\", strToBool),\n        color: get(\"sunlights.0.color\", strToColor),\n        intensity: get(\"sunlights.0.intensity\", Number.parseFloat),\n        position: get(\"sunlights.0.position\", strToVector3)\n      },\n      {\n        followCamera: get(\"sunlights.1.followCamera\", strToBool),\n        color: get(\"sunlights.1.color\", strToColor),\n        intensity: get(\"sunlights.1.intensity\", Number.parseFloat),\n        position: get(\"sunlights.1.position\", strToVector3)\n      }\n    ],\n    materials: {\n      standard: {\n        color: get(\"materials.standard.color\", strToColor)\n      },\n      highlight: {\n        color: get(\"materials.highlight.color\", strToColor),\n        opacity: get(\"materials.highlight.opacity\", Number.parseFloat)\n      },\n      isolation: {\n        color: get(\"materials.isolation.color\", strToColor),\n        opacity: get(\"materials.isolation.opacity\", Number.parseFloat)\n      },\n      section: {\n        strokeWidth: get(\"materials.section.strokeWidth\", Number.parseFloat),\n        strokeFalloff: get(\"materials.section.strokeFalloff\", Number.parseFloat),\n        strokeColor: get(\"materials.section.strokeColor\", strToColor)\n      },\n      outline: {\n        intensity: get(\"materials.outline.intensity\", Number.parseFloat),\n        falloff: get(\"materials.outline.falloff\", Number.parseFloat),\n        blur: get(\"materials.outline.blur\", Number.parseFloat),\n        color: get(\"materials.outline.color\", strToColor)\n      }\n    },\n    axes: void 0,\n    rendering: {\n      onDemand: get(\"rendering.onDemand\", strToBool)\n    }\n  };\n  const result = removeUndefinedProperties(parsed);\n  return result;\n}\nfunction strToBool(str) {\n  return JSON.parse(str.toLowerCase());\n}\nfunction strToVector3(str) {\n  if (str[0] !== \"(\")\n    return;\n  if (str[str.length - 1] !== \")\")\n    return;\n  const split = str.slice(1, -1).split(\",\");\n  if (split.length !== 3)\n    return;\n  try {\n    const x = Number.parseFloat(split[0]);\n    const y = Number.parseFloat(split[1]);\n    const z = Number.parseFloat(split[2]);\n    return new Vector3(x, y, z);\n  } catch {\n  }\n}\nfunction strToVector2(str) {\n  if (str[0] !== \"(\")\n    return;\n  if (str[str.length - 1] !== \")\")\n    return;\n  const split = str.split(\",\");\n  if (split.length !== 2)\n    return;\n  try {\n    const x = Number.parseFloat(split[0]);\n    const y = Number.parseFloat(split[1]);\n    return new Vector2(x, y);\n  } catch {\n  }\n}\nfunction strToColor(str) {\n  if (str.startsWith(\"0x\")) {\n    return new Color(parseInt(str));\n  }\n  return new Color(str);\n}\nfunction removeUndefinedProperties(obj) {\n  if (typeof obj !== \"object\" || obj === null) {\n    return obj;\n  }\n  if (Array.isArray(obj)) {\n    const array = obj.map(removeUndefinedProperties).filter((value) => value !== void 0);\n    return array.length === 0 ? void 0 : array;\n  }\n  const result = {};\n  for (const key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key)) {\n      const value = removeUndefinedProperties(obj[key]);\n      if (value !== void 0) {\n        result[key] = value;\n      }\n    }\n  }\n  if (Object.keys(result).length === 0) {\n    return void 0;\n  }\n  return result;\n}\nfunction createBoxes(boxes) {\n  const center = new Vector3();\n  const size = new Vector3();\n  const quaternion = new Quaternion();\n  const matrices = boxes.map((b) => {\n    b.getCenter(center);\n    b.getSize(size);\n    return new Matrix4().compose(center, quaternion, size);\n  });\n  const cube = new BoxGeometry(1, 1, 1);\n  const mat = new MeshBasicMaterial({\n    transparent: true,\n    opacity: 0.2,\n    color: new Color(65535),\n    depthTest: false\n  });\n  const mesh = new InstancedMesh$1(cube, mat, matrices.length);\n  matrices.forEach((m, i) => mesh.setMatrixAt(i, m));\n  return mesh;\n}\nconst IProgressLogs = dist$3.IProgressLogs;\nexport {\n  AxesSettings,\n  DefaultInputScheme,\n  G3dSubset,\n  Geometry,\n  RaycastResult as HitTestResult,\n  IProgressLogs,\n  InputAction,\n  InsertableMesh,\n  KEYS,\n  Object3D,\n  Scene,\n  three_module as THREE,\n  Transparency,\n  Viewer,\n  ViewerMaterials,\n  Vim,\n  VimRequest,\n  Vimx,\n  createBoxes,\n  createWireframe,\n  defaultConfig,\n  defaultViewerSettings,\n  getFullSettings$1 as getFullSettings,\n  getViewerSettings,\n  getViewerSettingsFromUrl,\n  open,\n  request\n};\n//# sourceMappingURL=vim-webgl-viewer.mjs.map\n","/**\r\n * @module icons\r\n */\r\n\r\n/**\r\n * Defines all icons for the VIM component.\r\n * @packageDocumentation\r\n */\r\n\r\nimport React from 'react'\r\n\r\n/**\r\n * Common Icon Options.\r\n */\r\nexport type IconOptions = {\r\n  height: number | string\r\n  width: number | string\r\n  fill: string\r\n  className?: string\r\n}\r\n\r\n// Common\r\nexport function settings ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path\r\n        fill={fill}\r\n        d=\"M110.325,241.773c-2.567,7.495-10.811,11.566-18.271,9.145l-7.218-2.346c-7.522-2.44-11.739-10.548-9.41-18.133l.849-2.764c1.939-6.314-.798-14.567-6.152-18.465l-1.461-1.066c-5.339-3.882-14.046-3.953-19.452-.162l-2.369,1.662c-6.48,4.553-15.542,3.001-20.158-3.341l-4.466-6.136c-4.652-6.397-3.246-15.472,3.037-20.195l2.314-1.741c5.28-3.965,7.913-12.249,5.864-18.552l-.557-1.722c-2.038-6.279-9.043-11.455-15.646-11.563l-2.894-.047c-7.913-.13-14.334-6.709-14.334-14.552v-7.593c0-7.909,6.476-14.425,14.334-14.552l2.894-.047c6.602-.107,13.6-5.264,15.646-11.566l.557-1.718c2.041-6.279-.584-14.587-5.864-18.555l-2.314-1.738c-6.33-4.758-7.649-13.852-3.037-20.195l4.466-6.14c4.656-6.393,13.73-7.854,20.158-3.341l2.369,1.662c5.406,3.795,14.093,3.736,19.452-.162l1.461-1.062c5.335-3.882,8.091-12.151,6.152-18.465l-.849-2.768c-2.326-7.57,1.951-15.708,9.41-18.129l7.218-2.346c7.522-2.444,15.7,1.639,18.271,9.142l.94,2.74c2.144,6.247,9.209,11.313,15.835,11.313h1.805c6.602,0,13.69-5.066,15.831-11.313l.94-2.74c2.571-7.491,10.816-11.563,18.275-9.141l7.218,2.346c7.522,2.44,11.739,10.544,9.41,18.129l-.849,2.768c-1.939,6.314,.798,14.567,6.152,18.465l1.461,1.062c5.339,3.886,14.046,3.957,19.448,.162l2.369-1.662c6.48-4.549,15.546-2.997,20.158,3.341l4.47,6.14c4.652,6.397,3.246,15.472-3.037,20.195l-2.314,1.738c-5.28,3.969-7.913,12.253-5.868,18.555l.561,1.718c2.038,6.282,9.043,11.459,15.646,11.566l2.891,.047c7.917,.126,14.334,6.709,14.334,14.552v7.593c0,7.905-6.476,14.425-14.334,14.552l-2.891,.047c-6.602,.107-13.6,5.26-15.646,11.563l-.561,1.722c-2.038,6.279,.588,14.587,5.868,18.552l2.314,1.741c6.33,4.758,7.649,13.852,3.037,20.195l-4.47,6.136c-4.652,6.397-13.726,7.858-20.158,3.341l-2.369-1.662c-5.402-3.791-14.09-3.736-19.448,.162l-1.461,1.066c-5.335,3.882-8.091,12.151-6.152,18.465l.849,2.764c2.326,7.574-1.951,15.712-9.41,18.133l-7.218,2.346c-7.522,2.44-15.7-1.639-18.275-9.145l-.94-2.736c-2.14-6.247-9.205-11.313-15.831-11.313h-1.805c-6.602,0-13.69,5.066-15.835,11.313l-.94,2.736Zm17.674-45.77c37.559,0,68.002-30.443,68.002-68.002s-30.443-67.998-68.002-67.998-67.998,30.443-67.998,67.998,30.443,68.002,67.998,68.002Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function help ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg\r\n      height={height}\r\n      width={width}\r\n      viewBox=\"0 0 256 256\"\r\n      className={className}\r\n    >\r\n      <path\r\n        fill={fill}\r\n        d=\"M128 0C57.308 0 0 57.308 0 128s57.308 128 128 128 128-57.308 128-128S198.692 0 128 0Zm0 232c-57.346 0-104-46.654-104-104S70.654 24 128 24s104 46.654 104 104-46.654 104-104 104Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"M124.365 160.615c-8.46 1.295-15.374 8.209-16.669 16.669-2.079 13.576 9.446 25.101 23.021 23.021 8.46-1.295 15.374-8.209 16.669-16.669 2.079-13.576-9.446-25.101-23.021-23.021ZM163.386 68.844a52.951 52.951 0 0 0-33.074-12.25c-17.985-.747-34.607 7.896-45.516 21.957-3.202 4.128-2.75 9.046 1.601 13.371 3.147 3.129 6.892 5.802 6.892 5.802a10.286 10.286 0 0 0 14.183-1.691l.484-.593a24.146 24.146 0 0 1 20.212-10.412c8.988 0 19.032 5.926 19.032 13.781 0 5.114-3.414 8.161-9.31 11.713l-7.809 4.456a30.622 30.622 0 0 0-19.201 27.423v1.118a8.773 8.773 0 0 0 8.773 8.774h15.771a8.773 8.773 0 0 0 8.773-8.774c0-4.486 4.9-7.319 11.117-10.902a37.039 37.039 0 0 0 23.519-33.533 39.43 39.43 0 0 0-15.45-30.241Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function trash ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path\r\n        fill={fill}\r\n        d=\"M117.317 197.644v-95.33c0-5.467-3.715-10.632-9.129-11.395-6.591-.929-12.238 4.163-12.238 10.574v95.329c0 5.468 3.715 10.633 9.129 11.396 6.591.929 12.238-4.163 12.238-10.574ZM160.05 197.644v-95.33c0-5.467-3.715-10.632-9.129-11.395-6.591-.929-12.238 4.163-12.238 10.574v95.329c0 5.468 3.715 10.633 9.129 11.396 6.591.929 12.238-4.163 12.238-10.574ZM232 42.734h-39.68V10.995C192.32 4.923 187.397 0 181.325 0H74.995C68.923 0 64 4.923 64 10.995v31.739H24c-8.837 0-16 7.163-16 16v.05c0 8.837 7.163 16 16 16h208c8.837 0 16-7.163 16-16v-.05c0-8.837-7.163-16-16-16Zm-66.389-14.025v14.025H90.709V28.709a2 2 0 0 1 2-2h70.902a2 2 0 0 1 2 2Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"M183.95 207.924c0 8.85-7.175 16.025-16.025 16.025H88.076c-8.85 0-16.025-7.175-16.025-16.025V98.81a8 8 0 0 0-8-8h-16.05a8 8 0 0 0-8 8v114.456c0 23.601 19.133 42.734 42.734 42.734h90.532c23.601 0 42.734-19.133 42.734-42.734V98.81a8 8 0 0 0-8-8h-16.05a8 8 0 0 0-8 8v109.115Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function checkmark ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path\r\n        fill={fill}\r\n        d=\"M228.693 61.741c5.379-7.011 4.057-17.055-2.954-22.434-7.01-5.379-17.054-4.057-22.434 2.954l-.008.011L99.864 177.069l-39.607-47.203c-5.68-6.769-15.772-7.652-22.542-1.972s-7.652 15.772-1.972 22.542l52.416 62.467.006.007c.018.021.038.039.056.06.214.252.448.492.681.733.153.159.3.326.458.478s.331.291.497.437c.251.222.5.445.763.648l.062.053c.108.083.225.151.334.231.304.221.608.44.924.638.166.104.335.192.503.289.284.164.567.328.859.473.221.11.447.204.671.303.245.107.487.219.736.313.268.103.54.188.812.275.214.069.428.142.645.202.293.081.588.144.884.208.206.044.411.093.619.129.294.051.589.085.884.12.219.026.437.055.656.071.275.021.55.026.825.033.245.006.489.015.735.009.246-.005.491-.024.736-.042.274-.018.548-.036.821-.068.22-.026.437-.065.654-.101.293-.047.585-.094.876-.158.207-.045.41-.103.615-.157.292-.076.584-.152.873-.245.215-.069.425-.152.637-.23.267-.099.535-.196.798-.31.245-.105.483-.228.723-.346.219-.108.44-.211.656-.331.286-.158.562-.334.839-.511.163-.104.328-.199.488-.31.307-.211.603-.444.896-.678.106-.085.219-.157.324-.245.021-.018.039-.038.06-.056.253-.215.492-.449.733-.681.159-.153.326-.301.478-.458.152-.159.292-.332.438-.498.221-.25.444-.5.647-.761.017-.022.037-.041.054-.063L228.693 61.741Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function undo ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path\r\n        fill={fill}\r\n        d=\"M167.055,76.799H56.971l27.112-27.112c4.687-4.687,4.687-12.285,0-16.971h0c-4.686-4.687-12.284-4.687-16.97,0L19.515,80.313c-4.686,4.687-4.686,12.285,0,16.971h0s0,0,0,0l47.598,47.598c4.686,4.686,12.284,4.686,16.97,0s4.687-12.284,0-16.971l-27.112-27.113h111.029c12.742,0,24.774,5.015,33.879,14.121,9.106,9.105,14.121,21.138,14.121,33.879s-5.015,24.774-14.121,33.879c-9.105,9.106-21.138,14.121-33.879,14.121h-60c-6.627,0-12,5.373-12,12h0c0,6.627,5.373,12,12,12h60c39.925,0,72.531-32.933,71.994-72.975-.531-39.538-33.397-71.025-72.938-71.025Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function close ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path\r\n        fill={fill}\r\n        d=\"m150.627 128 68.686-68.687c6.249-6.248 6.249-16.379 0-22.627-6.248-6.249-16.379-6.249-22.627 0l-68.687 68.686-68.686-68.685c-6.248-6.249-16.379-6.249-22.627 0-6.249 6.248-6.249 16.379 0 22.627l68.686 68.687-68.685 68.686c-6.249 6.248-6.249 16.379 0 22.627 6.248 6.249 16.379 6.249 22.627 0l68.687-68.686 68.687 68.686c6.248 6.249 16.379 6.249 22.627 0 6.249-6.248 6.249-16.379 0-22.627L150.629 128Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function home ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"M247.312 97.494 140.194 15.107C136.599 12.342 132.3 10.96 128 10.96s-8.6 1.382-12.194 4.147L8.688 97.494c-5.254 4.039-6.24 11.573-2.201 16.827s11.573 6.24 16.827 2.201l.687-.528v109.731c0 11.046 8.954 20 20 20h49.16c11.046 0 20-8.954 20-20v-51.726a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v51.726c0 11.046 8.954 20 20 20h46.84c11.046 0 20-8.954 20-20v-109.73l.687.528c5.254 4.039 12.789 3.053 16.827-2.201s3.054-12.788-2.201-16.827ZM208 221.726h-38.84V166c0-13.255-10.745-24-24-24h-32c-13.255 0-24 10.745-24 24v55.726H48V97.547l80-61.541 80 61.542v124.179Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function fullsScreen ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path\r\n        fill={fill}\r\n        d=\"M136,36c0,6.627,5.373,12,12,12h43.03s-51.515,51.515-51.515,51.515c-4.686,4.687-4.686,12.284,0,16.971,4.686,4.686,12.284,4.686,16.971,0l51.515-51.515v43.029c0,6.627,5.373,12,12,12,6.627,0,12-5.373,12-12V36c0-3.071-1.172-6.142-3.515-8.485-2.343-2.343-5.414-3.515-8.485-3.515h-72c-6.627,0-12,5.373-12,12Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"M120,220c0-6.627-5.373-12-12-12h-43.03s51.515-51.515,51.515-51.515c4.686-4.687,4.686-12.284,0-16.971-4.686-4.686-12.284-4.686-16.971,0l-51.515,51.515v-43.029c0-6.627-5.373-12-12-12s-12,5.373-12,12v72c0,3.071,1.172,6.142,3.515,8.485,2.343,2.343,5.414,3.515,8.485,3.515H108c6.627,0,12-5.373,12-12Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function minimize ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"M232 108c0-6.627-5.373-12-12-12h-43.03l51.515-51.515c4.686-4.687 4.686-12.284 0-16.971-4.686-4.686-12.284-4.686-16.971 0l-51.515 51.515V36c0-6.627-5.373-12-12-12s-12 5.373-12 12v72c0 3.071 1.172 6.142 3.515 8.485a11.963 11.963 0 0 0 8.485 3.515h72c6.627 0 12-5.373 12-12ZM24 148c0 6.627 5.373 12 12 12h43.03l-51.515 51.515c-4.686 4.687-4.686 12.284 0 16.971 4.686 4.686 12.284 4.686 16.971 0l51.515-51.515V220c0 6.627 5.373 12 12 12s12-5.373 12-12v-72c0-3.071-1.172-6.142-3.515-8.485a11.963 11.963 0 0 0-8.485-3.515H36c-6.627 0-12 5.373-12 12Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function treeView ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path\r\n        fill={fill}\r\n        d=\"M160 140h17.834c5.097 16.228 20.256 28 38.166 28 22.091 0 40-17.909 40-40s-17.909-40-40-40c-17.91 0-33.069 11.772-38.166 28H160V52h17.834C182.931 68.228 198.09 80 216 80c22.091 0 40-17.909 40-40S238.091 0 216 0c-17.91 0-33.069 11.772-38.166 28H156c-11 0-20 9-20 20v68h-24V92c0-11-9-20-20-20H20C9 72 0 81 0 92v72c0 11 9 20 20 20h72c11 0 20-9 20-20v-24h24v68c0 11 9 20 20 20h21.834c5.097 16.228 20.256 28 38.166 28 22.091 0 40-17.909 40-40s-17.909-40-40-40c-17.91 0-33.069 11.772-38.166 28H160v-64Zm56-28c8.822 0 16 7.178 16 16s-7.178 16-16 16-16-7.178-16-16 7.178-16 16-16Zm0-88c8.822 0 16 7.178 16 16s-7.178 16-16 16-16-7.178-16-16 7.178-16 16-16ZM88 160H24V96h64v64Zm128 40c8.822 0 16 7.178 16 16s-7.178 16-16 16-16-7.178-16-16 7.178-16 16-16Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\nexport function more ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} fill={fill} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path\r\n        fill={fill}\r\n        d=\"M48,156c-15.438,0-28-12.562-28-28s12.562-28,28-28,28,12.562,28,28-12.562,28-28,28Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"M128,156c-15.438,0-28-12.562-28-28s12.562-28,28-28,28,12.562,28,28-12.562,28-28,28Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"M208,156c-15.438,0-28-12.562-28-28s12.562-28,28-28,28,12.562,28,28-12.562,28-28,28Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function collapse ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg\r\n      height={height}\r\n      width={width}\r\n      className={className}\r\n      viewBox=\"0 0 256 256\"\r\n    >\r\n      <path\r\n        fill={fill}\r\n        d=\"m226.207 82.919-.017-.019c-5.937-6.547-16.057-7.04-22.602-1.102L128 150.367l-75.588-68.57c-6.546-5.938-16.666-5.444-22.602 1.102l-.017.019c-5.935 6.545-5.442 16.662 1.102 22.599l86.348 78.33c6.103 5.536 15.411 5.536 21.514 0l86.348-78.33c6.544-5.936 7.038-16.054 1.102-22.599Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function arrowLeft ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path d=\"m161.905 202.207.019-.017c6.547-5.937 7.04-16.057 1.102-22.602L118.457 128l44.569-51.588c5.938-6.546 5.444-16.666-1.102-22.602l-.019-.017c-6.545-5.935-16.662-5.442-22.599 1.102l-54.33 62.348c-5.536 6.103-5.536 15.411 0 21.514l54.33 62.348c5.936 6.544 16.054 7.038 22.599 1.102Z\" />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function fullArrowLeft ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <circle cx=\"128\" cy=\"32\" r=\"16\" />\r\n      <circle cx=\"128\" cy=\"224\" r=\"16\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"M224 112H70.627l68.686-68.686c6.249-6.248 6.249-16.379 0-22.627-6.248-6.248-16.379-6.248-22.627 0l-95.999 95.999C17.791 119.582 16 123.582 16 128s1.791 8.418 4.687 11.314l96 96c6.248 6.248 16.379 6.248 22.627 0 6.249-6.248 6.249-16.379 0-22.627l-68.686-68.686H224c8.836 0 16-7.164 16-16s-7.164-16-16-16Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function visible ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg\r\n      className={className}\r\n      height={height}\r\n      width={width}\r\n      viewBox=\"0 0 256 256\"\r\n    >\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"M128 36C57.308 36 0 97.054 0 128c0 32.943 57.308 92 128 92s128-59.057 128-92c0-30.946-57.308-92-128-92Zm75.346 131.751C190.404 178.301 163.406 196 128 196s-62.403-17.699-75.346-28.249C31.004 150.103 24 133.349 24 128c0-.047.071-4.846 6.247-14.452 5.34-8.308 13.341-17.061 22.527-24.648 6.833-5.643 17.521-13.282 31.163-19.291C71.664 81.27 64 97.734 64 116c0 35.346 28.654 64 64 64s64-28.654 64-64a63.79 63.79 0 0 0-5.004-24.847C186.913 106.546 174.413 119 159 119s-28-12.536-28-28c0-13.851 10.06-25.346 23.271-27.594 22.243 5.762 39.382 17.586 48.956 25.494 9.186 7.587 17.187 16.341 22.527 24.648 6.176 9.606 6.247 14.405 6.247 14.452 0 5.349-7.004 22.103-28.654 39.751Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function hidden ({ height, width, fill, className = '' }: IconOptions) {\r\n  return (\r\n    <svg\r\n      className={className}\r\n      height={height}\r\n      width={width}\r\n      viewBox=\"0 0 256 256\"\r\n    >\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"M154.271 63.406c22.243 5.762 39.382 17.586 48.956 25.494 9.186 7.587 17.187 16.341 22.527 24.648 6.176 9.606 6.247 14.405 6.247 14.452 0 4.764-5.566 18.577-22.079 34.01l16.973 16.972c18.185-17.247 29.106-36.602 29.106-50.982 0-30.946-57.308-92-128-92-13.307 0-26.139 2.165-38.205 5.884l42.099 42.099c2.731-10.572 11.479-18.722 22.376-20.577Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"m166.022 118.111 21.472 21.472A63.801 63.801 0 0 0 191.999 116a63.79 63.79 0 0 0-5.004-24.847c-.07 12.971-8.957 23.853-20.974 26.958ZM31.833 17.863c-4.687-4.686-12.284-4.686-16.971 0-4.686 4.687-4.686 12.285 0 16.971l29.92 29.92C17.38 84.825 0 110.966 0 128c0 32.943 57.308 92 128 92 21.088 0 40.972-5.269 58.51-13.52l37.657 37.657c4.687 4.686 12.284 4.686 16.971 0 4.686-4.687 4.686-12.285 0-16.971L31.833 17.863ZM128 196c-35.405 0-62.403-17.699-75.346-28.249C31.004 150.103 24 133.349 24 128c0-.047.071-4.846 6.247-14.452 5.34-8.308 13.341-17.061 22.527-24.648a134.832 134.832 0 0 1 9.205-6.95l7.708 7.708a63.612 63.612 0 0 0-5.686 26.343c0 35.346 28.654 64 64 64 9.397 0 18.31-2.043 26.345-5.684l13.936 13.936c-11.606 4.516-25.17 7.749-40.281 7.749Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\n// Camera\r\nexport function orbit ({ height, width, fill = '', className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"M128 60.602c-.531 0-1.061.002-1.591.006-7.079.05-12.565 6.208-11.833 13.249.64 6.151 5.849 10.797 12.033 10.751.463-.003.926-.005 1.39-.005 29.699 0 58.4 6.563 78.743 18.006 16.051 9.029 25.257 19.961 25.257 29.994s-9.206 20.965-25.257 29.994c-20.343 11.443-49.044 18.006-78.743 18.006s-58.4-6.563-78.743-18.006c-16.051-9.028-25.257-19.961-25.257-29.994s9.206-20.965 25.257-29.994c2.522-1.419 5.189-2.751 7.957-4.015l-1.947 5.262c-1.787 4.831-1.549 11.646 5.003 14.956.328.166.661.314.997.446 5.46 2.136 11.577-.208 14.225-5.453l13.87-27.458c3.673-7.271.745-16.173-6.525-19.845L55.374 52.631a11.58 11.58 0 0 0-.996-.446c-5.459-2.135-11.576.209-14.225 5.452-2.772 5.493-.462 12.349 5.151 15.284l4.682 2.448.046.146C19.615 88.676 0 109.346 0 132.602c0 39.764 57.308 72 128 72s128-32.236 128-72-57.308-72-128-72Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        fillRule=\"evenodd\"\r\n        d=\"M128 160.602c-15.44 0-28-12.561-28-28s12.56-28 28-28 28 12.561 28 28-12.56 28-28 28Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function look ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"m221.08 221.465-60.889-33.212c13.199-17.151 20.56-38.386 20.56-60.253s-7.36-43.102-20.56-60.253l60.889-33.212c5.818-3.174 7.962-10.463 4.789-16.281-3.174-5.818-10.463-7.961-16.281-4.789l-190.668 104a12.002 12.002 0 0 0 0 21.07l190.667 104a11.999 11.999 0 0 0 16.281-4.789c3.173-5.818 1.029-13.107-4.789-16.281ZM49.727 128l89.041-48.567a74.846 74.846 0 0 1 6.321 8.582c-.113-.003-.225-.014-.338-.014-13.255 0-24 17.909-24 40s10.745 40 24 40c.113 0 .225-.012.338-.014a74.846 74.846 0 0 1-6.321 8.582l-89.041-48.567Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function perspective ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"m228.729 46.855-188-37.961a34.146 34.146 0 0 0-6.75-.676C15.243 8.218 0 23.471 0 42.221v171.558c0 18.75 15.243 34.003 33.979 34.003 2.258 0 4.529-.227 6.75-.676l188-37.962c15.802-3.19 27.271-17.207 27.271-33.327V80.183c0-16.121-11.469-30.137-27.271-33.327ZM154 56.25v143.5l-52 10.5V45.75l52 10.5ZM35.979 223.581c-.674.136-1.343.201-2 .201-5.384 0-9.979-4.373-9.979-10.003V42.221c0-5.63 4.596-10.003 9.979-10.003.657 0 1.326.065 2 .201L78 40.904v174.192l-42.021 8.485ZM232 175.817a10 10 0 0 1-8.021 9.802L178 194.903V61.096l45.979 9.284A10 10 0 0 1 232 80.182v95.635Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function orthographic ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"M238.851 77.857v-2.31a20.002 20.002 0 0 0-10-17.321L138 5.774a19.991 19.991 0 0 0-20 0L27.149 58.226a20 20 0 0 0-10 17.321v104.906a20.002 20.002 0 0 0 10 17.321L118 250.227a19.991 19.991 0 0 0 20 0l90.851-52.453a20 20 0 0 0 10-17.321V77.857ZM128 27.713l74.852 43.216L128 114.145 53.148 70.929 128 27.713ZM41.149 91.714 116 134.929v86.43l-74.851-43.215v-86.43Zm173.702 86.43L140 221.359v-86.43l74.851-43.215v86.43Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function camera ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        id=\"noun-walking-4952413\"\r\n        d=\"M136.693,8c-13.243,.037-23.948,10.802-23.911,24.044,.037,13.243,10.802,23.948,24.044,23.911,13.217-.037,23.912-10.761,23.912-23.978s-10.735-23.978-23.978-23.978c-.022,0-.045,0-.067,0Zm-13.867,54.936c-21.612,1.291-41.372,12.631-53.391,30.639-6.568,13.483-9.23,28.535-7.686,43.454,0,5.19,4.208,9.398,9.398,9.398s9.398-4.208,9.398-9.398c-1.308-11.482,.414-23.106,4.995-33.716,5.052-6.952,11.735-12.556,19.462-16.318-3.344,15.466-6.407,30.958-9.538,46.371l44.626,106.009c2.654,6.925,10.42,10.386,17.344,7.732,6.925-2.654,10.386-10.42,7.732-17.344-.104-.272-.217-.54-.339-.805l-35.901-85.255,4.569-19.076,3.344-13.974c9.591,17.424,31.878,22.14,47.117,25.763,5.051,1.188,10.108-1.943,11.296-6.994,1.188-5.051-1.943-10.108-6.994-11.296-11.472-1.392-22.38-5.765-31.638-12.682-3.628-3.641-6.363-8.073-7.993-12.948-2.198-6.128-3.224-12.882-5.182-18.929h0c-4.103-10.577-11.496-10.524-20.661-10.55l.04-.08Zm-30.292,84.443l-9.098,45.119-20.821,34.795c-3.996,6.247-2.171,14.551,4.076,18.547,6.247,3.996,14.551,2.171,18.547-4.076,.143-.224,.279-.452,.409-.684l22.646-37.859c1.207-2.015,1.864-4.312,1.905-6.661v-7.087l-17.717-42.108,.053,.013Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function pan ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"M195.493,44.007c-3.01-.07-5.896,.42-8.567,1.365v-.808c0-13.274-10.857-24.635-24.13-24.563-3.077,.017-6.014,.618-8.714,1.69-2.841-10.448-12.557-18.064-23.992-17.676-13.011,.442-23.164,11.483-23.164,24.501v.856c-2.671-.944-5.556-1.435-8.567-1.365-13.12,.305-23.433,11.398-23.433,24.521V127.111l-10.434-15.696c-4.696-6.464-12.014-9.895-19.436-9.895-4.891,0-9.828,1.49-14.087,4.585-10.724,7.791-13.101,22.8-5.31,33.523l54.159,86.902s.004,.006,.007,.009c.003,.005,0,.011,.003,.016,11.686,15.453,30.233,25.445,51.098,25.445h24c35.346,0,64-28.654,64-64V68.528c0-13.124-10.313-24.216-23.433-24.521Zm7.433,143.993c0,26.467-21.533,48-48,48h-24c-12.635,0-24.139-4.916-32.719-12.925-.696-.672-4.407-4.544-5.93-6.641l-53.673-86.21c-1.695-2.333-1.623-4.731-1.43-5.954,.194-1.222,.867-3.526,3.2-5.221,1.739-1.264,3.507-1.529,4.684-1.53,2.601,0,4.967,1.203,6.49,3.3l24.791,35.986c4.455,6.467,14.588,3.314,14.588-4.539V52.282c0-4.257,3.205-7.98,7.452-8.264,4.658-.312,8.548,3.389,8.548,7.982V121.065c0,4.261,3.215,7.981,7.467,8.257,4.659,.302,8.533-3.388,8.533-7.983V28.282c0-4.257,3.205-7.98,7.452-8.264,4.658-.312,8.548,3.389,8.548,7.982V113.065c0,4.261,3.215,7.981,7.467,8.257,4.659,.302,8.533-3.388,8.533-7.983V44.282c0-4.257,3.205-7.98,7.452-8.264,4.658-.312,8.548,3.389,8.548,7.982v85.065c0,4.261,3.215,7.981,7.467,8.257,4.659,.302,8.533-3.388,8.533-7.983v-61.057c0-4.257,3.205-7.98,7.452-8.264,4.658-.312,8.548,3.389,8.548,7.982v120Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function zoom ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path\r\n        fill={fill}\r\n        id=\"Path_15078\"\r\n        d=\"M127.995,10c-.714,0-1.428,.033-2.137,.101s-1.417,.168-2.116,.302-1.38,.303-2.058,.505c-.673,.201-1.334,.437-1.982,.708l-54.032,22.533c-1.975,.805-3.791,1.954-5.363,3.395-1.377,1.262-2.474,2.799-3.219,4.511-.692,1.598-.977,3.343-.829,5.078,.177,1.813,.813,3.55,1.85,5.048,.755,1.105,1.672,2.091,2.72,2.925,1.09,.868,2.286,1.595,3.558,2.162,1.332,.597,2.726,1.047,4.156,1.339,1.483,.306,2.994,.46,4.509,.46,.73,0,1.463-.036,2.196-.107s1.466-.178,2.193-.323c.73-.144,1.452-.326,2.164-.544,.716-.22,1.42-.477,2.108-.771l28.901-12.348-9.857,153.04-42.33-21.972c-.749-.389-1.523-.729-2.316-1.019-.789-.289-1.595-.529-2.414-.719-.817-.189-1.643-.331-2.476-.425-.833-.094-1.67-.141-2.508-.14-1.627,0-3.248,.173-4.839,.515-1.582,.338-3.124,.846-4.598,1.513-1.465,.662-2.85,1.489-4.126,2.467-1.276,.976-2.421,2.111-3.41,3.378-1.425,1.804-2.445,3.894-2.989,6.127-.496,2.076-.514,4.238-.053,6.323,.476,2.111,1.419,4.088,2.759,5.786,1.478,1.86,3.329,3.389,5.434,4.49l80.749,43.116c.794,.422,1.614,.794,2.456,1.112,.84,.318,1.7,.584,2.573,.797,3.51,.849,7.171,.849,10.681,0,.873-.213,1.732-.479,2.573-.797,.841-.318,1.662-.689,2.456-1.112l80.733-43.116c2.105-1.101,3.955-2.631,5.433-4.49,1.34-1.698,2.283-3.676,2.759-5.786,.462-2.084,.443-4.246-.053-6.323-.545-2.234-1.564-4.323-2.989-6.127-.989-1.266-2.134-2.401-3.41-3.378-1.277-.977-2.661-1.805-4.126-2.467-1.474-.667-3.016-1.174-4.598-1.513-1.59-.342-3.211-.514-4.838-.515-.838,0-1.676,.046-2.508,.14-.833,.093-1.66,.235-2.476,.425-.819,.19-1.625,.429-2.414,.717-.793,.29-1.567,.631-2.316,1.02l-42.327,21.972-9.885-153.046,28.903,12.348c.689,.294,1.392,.552,2.108,.771,.712,.218,1.434,.399,2.165,.544,.728,.145,1.46,.252,2.192,.323s1.467,.107,2.196,.107c1.515,0,3.026-.153,4.51-.46,1.43-.293,2.824-.742,4.156-1.339,1.272-.568,2.467-1.295,3.557-2.162,1.048-.833,1.965-1.819,2.72-2.925,1.038-1.497,1.676-3.235,1.853-5.048,.148-1.731-.135-3.472-.824-5.068-.748-1.713-1.847-3.25-3.226-4.511-1.574-1.44-3.39-2.589-5.365-3.395l-54.024-22.537c-.648-.271-1.309-.507-1.982-.708-.671-.201-1.361-.37-2.06-.505s-1.401-.236-2.111-.302-1.423-.101-2.134-.101\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function frameRect ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\"></path>\r\n      <rect\r\n        fill={fill}\r\n        width=\"40\"\r\n        height=\"24\"\r\n        x=\"148\"\r\n        y=\"6.979\"\r\n        rx=\"10\"\r\n        ry=\"10\"\r\n      ></rect>\r\n      <path\r\n        fill={fill}\r\n        d=\"M216 6.979h-10c-5.5 0-10 4.5-10 10v4c0 5.5 4.5 10 10 10a6 6 0 016 6c0 5.5 4.5 10 10 10h4c5.5 0 10-4.5 10-10v-10c0-11-9-20-20-20z\"\r\n      ></path>\r\n      <rect\r\n        fill={fill}\r\n        width=\"24\"\r\n        height=\"40\"\r\n        x=\"212\"\r\n        y=\"54.979\"\r\n        rx=\"10\"\r\n        ry=\"10\"\r\n      ></rect>\r\n      <rect\r\n        fill={fill}\r\n        width=\"40\"\r\n        height=\"24\"\r\n        x=\"52\"\r\n        y=\"6.979\"\r\n        rx=\"10\"\r\n        ry=\"10\"\r\n      ></rect>\r\n      <rect\r\n        fill={fill}\r\n        width=\"40\"\r\n        height=\"24\"\r\n        x=\"52\"\r\n        y=\"214.979\"\r\n        rx=\"10\"\r\n        ry=\"10\"\r\n      ></rect>\r\n      <rect\r\n        fill={fill}\r\n        width=\"40\"\r\n        height=\"24\"\r\n        x=\"100\"\r\n        y=\"6.979\"\r\n        rx=\"10\"\r\n        ry=\"10\"\r\n      ></rect>\r\n      <path\r\n        fill={fill}\r\n        d=\"M24 6.979h10c5.5 0 10 4.5 10 10v4c0 5.5-4.5 10-10 10a6 6 0 00-6 6c0 5.5-4.5 10-10 10h-4c-5.5 0-10-4.5-10-10v-10c0-11 9-20 20-20z\"\r\n      ></path>\r\n      <rect\r\n        fill={fill}\r\n        width=\"24\"\r\n        height=\"40\"\r\n        x=\"4\"\r\n        y=\"54.979\"\r\n        rx=\"10\"\r\n        ry=\"10\"\r\n      ></rect>\r\n      <rect\r\n        fill={fill}\r\n        width=\"24\"\r\n        height=\"40\"\r\n        x=\"4\"\r\n        y=\"102.979\"\r\n        rx=\"10\"\r\n        ry=\"10\"\r\n      ></rect>\r\n      <rect\r\n        fill={fill}\r\n        width=\"24\"\r\n        height=\"40\"\r\n        x=\"4\"\r\n        y=\"150.979\"\r\n        rx=\"10\"\r\n        ry=\"10\"\r\n      ></rect>\r\n      <path\r\n        fill={fill}\r\n        d=\"M14 198.979h4c5.5 0 10 4.5 10 10a6 6 0 006 6c5.5 0 10 4.5 10 10v4c0 5.5-4.5 10-10 10H24c-11 0-20-9-20-20v-10c0-5.5 4.5-10 10-10zM188 154.979h-12v-12c0-4.4-3.6-8-8-8h-8c-4.4 0-8 3.6-8 8v12h-12c-4.4 0-8 3.6-8 8v8c0 4.4 3.6 8 8 8h12v12c0 4.4 3.6 8 8 8h8c4.4 0 8-3.6 8-8v-12h12c4.4 0 8-3.6 8-8v-8c0-4.4-3.6-8-8-8z\"\r\n      ></path>\r\n      <path\r\n        fill={fill}\r\n        d=\"M252.5 229.872l-17.706-17.706A83.578 83.578 0 00248 166.979c0-46.392-37.608-84-84-84s-84 37.608-84 84 37.608 84 84 84c18.179 0 34.995-5.794 48.742-15.61l17.13 17.13c4.667 4.667 12.304 4.667 16.971 0l5.657-5.657c4.667-4.667 4.667-12.304 0-16.971zm-141.955-62.893c0-29.475 23.98-53.455 53.455-53.455s53.455 23.98 53.455 53.455-23.98 53.455-53.455 53.455-53.455-23.98-53.455-53.455z\"\r\n      ></path>\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function frameSelection ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path\r\n        fill={fill}\r\n        d=\"M32,52c.032-11.032,8.968-19.968,20-20h28c4.418,0,8-3.582,8-8v-8c0-4.418-3.582-8-8-8h-28c-24.289,.027-43.973,19.711-44,44v28c0,4.418,3.582,8,8,8h8c4.418,0,8-3.582,8-8v-28Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"M32,204v-28c0-4.418-3.582-8-8-8h-8c-4.418,0-8,3.582-8,8v28c.027,24.289,19.711,43.973,44,44h28c4.418,0,8-3.582,8-8v-8c0-4.418-3.582-8-8-8h-28c-11.032-.032-19.968-8.968-20-20Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"M224,204c-.032,11.032-8.968,19.968-20,20h-28c-4.418,0-8,3.582-8,8v8c0,4.418,3.582,8,8,8h28c24.289-.027,43.973-19.711,44-44v-28c0-4.418-3.582-8-8-8h-8c-4.418,0-8,3.582-8,8v28Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"M204,8h-28c-4.418,0-8,3.582-8,8v8c0,4.418,3.582,8,8,8h28c11.032,.032,19.968,8.968,20,20v28c0,4.418,3.582,8,8,8h8c4.418,0,8-3.582,8-8v-28c-.027-24.289-19.711-43.973-44-44Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"M77.018,162.384l45.779,22.8c1.607,.801,3.406,1.225,5.203,1.225s3.596-.424,5.203-1.225l45.779-22.8c2.766-1.041,4.554-3.595,4.585-6.554l4.461-61.767,.005-.145c0-3.036-1.847-5.656-4.759-6.694l-53.103-17.293c-.702-.226-1.434-.341-2.172-.34-.738,0-1.47,.114-2.179,.343l-53.148,17.308c-2.859,1.021-4.706,3.641-4.706,6.677v.072l4.466,61.839c.031,2.959,1.819,5.513,4.585,6.554Zm89.894-12.383l-29.278,14.302v-45.521l31.595-12.086-2.316,43.305Zm-38.911-65.139l29.611,9.827-29.611,9.827-29.611-9.827,29.611-9.827Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\n// Isolation\r\n\r\n// Measure\r\nexport function toggleIsolation ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"M252 48V24c0-11-9-20-20-20h-24c-11 0-20 9-20 20H68c0-11-9-20-20-20H24C13 4 4 13 4 24v24c0 11 9 20 20 20v120c-11 0-20 9-20 20v24c0 11 9 20 20 20h24c11 0 20-9 20-20h120c0 11 9 20 20 20h24c11 0 20-9 20-20v-24c0-11-9-20-20-20V68c11 0 20-9 20-20Zm-40-20h16v16h-16V28ZM28 28h16v16H28V28Zm16 200H28v-16h16v16Zm184 0h-16v-16h16v16Zm-20-40c-11 0-20 9-20 20H68c0-11-9-20-20-20V68c11 0 20-9 20-20h120c0 11 9 20 20 20v120Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"m183.274 87.225-53.103-17.293a7.053 7.053 0 0 0-2.172-.34c-.738 0-1.47.114-2.179.343L72.672 87.243c-2.859 1.021-4.706 3.641-4.706 6.677v.072l4.466 61.839c.031 2.959 1.819 5.513 4.585 6.554l45.779 22.8c1.607.801 3.406 1.225 5.203 1.225s3.596-.424 5.203-1.225l45.779-22.8c2.766-1.041 4.554-3.595 4.585-6.554l4.461-61.767.005-.145c0-3.036-1.847-5.656-4.759-6.694ZM128 104.517 98.389 94.69 128 84.863l29.611 9.827L128 104.517Zm38.911 45.484-29.278 14.302v-45.521l31.595-12.086-2.316 43.305Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\n// Measure\r\nexport function measure ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"M248 8H8c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8V16c0-4.4-3.6-8-8-8Zm-16 120h-16V92c0-6.627-5.373-12-12-12s-12 5.373-12 12v36h-14V68c0-6.627-5.373-12-12-12s-12 5.373-12 12v60h-14V92c0-6.627-5.373-12-12-12s-12 5.373-12 12v36h-14V68c0-6.627-5.373-12-12-12s-12 5.373-12 12v60H64V92c0-6.627-5.373-12-12-12s-12 5.373-12 12v36H24V32h208v96ZM244 168c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12s12-5.373 12-12v-56c0-6.627-5.373-12-12-12ZM12 168c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12s12-5.373 12-12v-56c0-6.627-5.373-12-12-12ZM192.494 171.539c-4.686-4.686-12.284-4.686-16.97 0-4.687 4.686-4.687 12.284 0 16.971l7.505 7.506L72.97 196l7.49-7.49c4.687-4.686 4.687-12.284 0-16.971s-12.284-4.686-16.971 0l-27.976 27.976c-2.171 2.171-3.515 5.172-3.515 8.485s1.343 6.314 3.515 8.485l27.991 27.991c4.686 4.686 12.284 4.686 16.97 0 4.687-4.686 4.687-12.284 0-16.971l-7.505-7.506 110.059.016-7.49 7.49c-4.686 4.686-4.686 12.284 0 16.971 4.687 4.686 12.284 4.686 16.971 0l27.976-27.975c2.171-2.172 3.515-5.172 3.515-8.485s-1.343-6.314-3.515-8.485l-27.991-27.991Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\n// Section Box\r\nexport function sectionBox ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path\r\n        fill={fill}\r\n        d=\"m110.051 2.173-92.41 53.253a16.213 16.213 0 0 0-8.125 14.047V175.98a16.215 16.215 0 0 0 8.125 14.047l95.112 54.792c1.354.78 3.047-.195 3.047-1.756V121.339l105.613-60.862c1.354-.78 1.354-2.731 0-3.512L126.301 2.173a16.278 16.278 0 0 0-16.25 0ZM95.488 211.458l-65.659-37.82V82.577l65.66 37.82v91.062Zm10.266-107.741L40.096 65.898l78.08-44.996 65.66 37.819-78.081 44.996Z\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"M138.483 135.324v118.658c0 1.551 1.682 2.521 3.028 1.745l96.896-55.839a16.117 16.117 0 0 0 8.076-13.961V74.25c0-1.551-1.682-2.521-3.028-1.745l-102.953 59.329a4.029 4.029 0 0 0-2.019 3.49Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function sectionBoxClip ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <rect fill={fill} width=\"32\" height=\"24\" x=\"170\" y=\"33\" rx=\"10\" ry=\"10\" />\r\n      <rect\r\n        fill={fill}\r\n        width=\"32\"\r\n        height=\"24\"\r\n        x=\"170\"\r\n        y=\"199\"\r\n        rx=\"10\"\r\n        ry=\"10\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"M146 33.064h-2V11.997C144 5.371 138.627 0 132 0h-8c-6.627 0-12 5.371-12 11.997v21.067H32c-17.645 0-32 14.351-32 31.991v125.964c0 17.639 14.355 31.991 32 31.991h80v20.994c0 6.625 5.373 11.997 12 11.997h8c6.627 0 12-5.371 12-11.997V223.01h2c5.5 0 10-4.499 10-9.997v-3.999c0-5.498-4.5-9.997-10-9.997h-2V57.057h2c5.5 0 10-4.499 10-9.997v-3.999c0-5.498-4.5-9.997-10-9.997ZM32 199.016c-4.337 0-8-3.662-8-7.998V65.055c0-4.335 3.663-7.998 8-7.998h80v141.959H32ZM236 33h-10c-5.5 0-10 4.5-10 10v4c0 5.5 4.5 10 10 10a6 6 0 0 1 6 6c0 5.5 4.5 10 10 10h4c5.5 0 10-4.5 10-10V53c0-11-9-20-20-20Z\"\r\n      />\r\n      <rect fill={fill} width=\"24\" height=\"32\" x=\"232\" y=\"87\" rx=\"10\" ry=\"10\" />\r\n      <rect\r\n        fill={fill}\r\n        width=\"24\"\r\n        height=\"32\"\r\n        x=\"232\"\r\n        y=\"137\"\r\n        rx=\"10\"\r\n        ry=\"10\"\r\n      />\r\n      <path\r\n        fill={fill}\r\n        d=\"M246 183h-4c-5.5 0-10 4.5-10 10a6 6 0 0 1-6 6c-5.5 0-10 4.5-10 10v4c0 5.5 4.5 10 10 10h10c11 0 20-9 20-20v-10c0-5.5-4.5-10-10-10Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function sectionBoxIgnore ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"M224 33h-80V11.963c0-6.627-5.373-12-12-12h-8c-6.627 0-12 5.373-12 12V33H32C14.355 33 0 47.355 0 65v126c0 17.645 14.355 32 32 32h80v21.037c0 6.627 5.373 12 12 12h8c6.627 0 12-5.373 12-12V223h80c17.645 0 32-14.355 32-32V65c0-17.645-14.355-32-32-32ZM32 199c-4.337 0-8-3.663-8-8V65c0-4.337 3.663-8 8-8h80v142H32Zm200-8c0 4.337-3.663 8-8 8h-80V57h80c4.337 0 8 3.663 8 8v126Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function sectionBoxReset ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <path fill=\"none\" d=\"M0 0h256v256H0z\" />\r\n      <path\r\n        fill={fill}\r\n        d=\"M250.744 223.115c-.002-.19.003-.379-.008-.571a12.236 12.236 0 0 0-.118-1.098c-.004-.026-.004-.052-.008-.078l-6.96-43.944c-1.037-6.547-7.185-11.013-13.731-9.976a11.966 11.966 0 0 0-7.833 4.799 11.963 11.963 0 0 0-2.145 8.932l2.427 15.326-22.708-16.498v-62.372a16 16 0 0 0-8-13.856L140 73.953V46.974l10.972 10.972c2.344 2.343 5.415 3.515 8.487 3.515s6.143-1.172 8.486-3.516c4.687-4.687 4.687-12.286 0-16.972l-31.46-31.46c-.019-.019-.039-.034-.058-.053a12.229 12.229 0 0 0-.819-.74c-.148-.122-.305-.228-.457-.342-.161-.12-.318-.245-.486-.357-.177-.119-.362-.222-.544-.331-.154-.092-.304-.188-.463-.273-.184-.098-.373-.182-.561-.27-.168-.079-.333-.163-.505-.234-.181-.075-.366-.136-.55-.202-.186-.066-.369-.138-.558-.195-.184-.055-.37-.096-.555-.143-.195-.049-.387-.104-.585-.143-.21-.042-.423-.066-.636-.097-.176-.025-.348-.059-.526-.076a12.166 12.166 0 0 0-2.368 0c-.178.018-.351.051-.526.076-.212.03-.425.055-.635.097-.2.04-.393.095-.589.144-.144.036-.289.063-.432.105l-.051.013c-.023.007-.045.017-.068.024-.191.058-.375.129-.562.196-.183.065-.367.126-.547.2-.174.072-.34.157-.51.237-.186.087-.373.17-.555.267-.161.086-.314.185-.471.278-.18.107-.362.209-.537.326-.17.114-.33.24-.493.362-.15.112-.304.217-.45.337-.286.235-.559.484-.821.743-.018.018-.038.033-.056.051l-31.46 31.46c-4.687 4.687-4.687 12.286 0 16.973 2.344 2.344 5.415 3.515 8.487 3.515s6.143-1.172 8.486-3.515l10.972-10.972v26.979l-51.66 29.826a16 16 0 0 0-8 13.856v62.475l-22.655 16.46 2.427-15.326c.518-3.274-.339-6.447-2.145-8.932s-4.559-4.281-7.833-4.799c-6.546-1.037-12.694 3.429-13.731 9.976l-6.96 43.944c-.004.026-.005.052-.008.078-.055.364-.096.73-.118 1.098-.011.192-.005.381-.008.571-.002.201-.011.402-.003.603.008.213.033.423.052.634.017.179.026.357.051.535.029.206.072.408.111.612.035.182.064.365.108.546.045.191.105.376.16.564.055.189.105.379.17.566.063.181.14.356.211.533.075.186.144.374.229.558.09.195.195.382.295.571.083.157.157.316.247.47.401.683.867 1.324 1.392 1.916.119.134.247.254.371.381.149.154.294.311.451.457.149.138.308.262.463.392.113.095.221.197.338.288.014.01.026.023.041.034.019.015.041.027.06.041.159.121.325.227.489.339.161.11.318.223.483.325.161.098.327.183.492.273.179.099.356.202.542.292.165.08.334.146.501.217.192.083.382.17.58.242.192.071.388.125.583.186.179.056.354.119.537.167.358.093.719.168 1.083.228.025.004.049.012.074.016l43.944 6.96c6.547 1.037 12.694-3.429 13.731-9.976a11.963 11.963 0 0 0-2.145-8.932 11.97 11.97 0 0 0-7.832-4.8l-15.326-2.427 22.838-16.593 49.369 28.503a15.989 15.989 0 0 0 16 0l49.448-28.549 22.812 16.574-15.326 2.427a11.962 11.962 0 0 0-7.832 4.8 11.963 11.963 0 0 0-2.145 8.932c1.037 6.547 7.185 11.013 13.731 9.976l43.944-6.96c.025-.004.049-.012.074-.016.364-.06.726-.135 1.083-.228.183-.048.358-.111.537-.167.195-.061.391-.115.583-.186.197-.073.387-.16.579-.242.167-.072.337-.138.501-.217.186-.09.363-.193.542-.292.165-.09.331-.175.492-.273.166-.102.323-.215.483-.325.164-.112.33-.219.489-.339l.06-.041c.014-.011.027-.024.041-.034.117-.091.225-.192.338-.288.155-.129.313-.253.463-.392.157-.145.302-.303.451-.457.124-.127.252-.247.371-.381a12.12 12.12 0 0 0 1.392-1.916c.09-.154.165-.313.247-.47.101-.19.206-.376.295-.571.084-.184.154-.371.229-.558.071-.177.147-.352.211-.533.064-.187.115-.377.17-.566.055-.188.115-.373.16-.564.043-.181.073-.364.108-.546.039-.204.082-.406.11-.612.025-.178.035-.356.051-.535.019-.211.044-.421.052-.634.008-.201 0-.402-.003-.603ZM91.443 115.843 128 94.737l36.556 21.105L128 136.947l-36.557-21.105Zm-11.104 21.302L116 157.733v40.145l-35.661-20.589v-40.144ZM140 197.877v-40.145l35.661-20.589v40.145L140 197.877Z\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\nexport function sectionBoxShrink ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} height={height} width={width} viewBox=\"0 0 256 256\">\r\n      <g data-name=\"FRAMES\">\r\n        <path fill=\"none\" d=\"M0 0h256v256H0z\" data-name=\"frame\" />\r\n      </g>\r\n      <g data-name=\"ICONS\">\r\n        <path\r\n          fill={fill}\r\n          d=\"M191.661 82.008 136 49.872a15.991 15.991 0 0 0-16 0L64.339 82.008a16 16 0 0 0-8 13.856v64.272a16 16 0 0 0 8 13.856L120 206.128a15.991 15.991 0 0 0 16 0l55.661-32.136a16 16 0 0 0 8-13.856V95.864a16 16 0 0 0-8-13.856ZM128 72.966l36.556 21.105L128 115.176 91.443 94.071 128 72.965Zm-47.661 42.408L116 135.961v40.145l-35.661-20.589v-40.143ZM140 176.106v-40.145l35.661-20.589v40.145L140 176.106ZM228.971 212H240c6.627 0 12-5.373 12-12s-5.373-12-12-12h-40a11.963 11.963 0 0 0-8.485 3.515A11.963 11.963 0 0 0 188 200v40c0 6.627 5.373 12 12 12s12-5.373 12-12v-11.03l19.515 19.515c4.687 4.686 12.284 4.686 16.971 0 4.686-4.686 4.686-12.284 0-16.971l-19.515-19.515ZM44 228.971V240c0 6.627 5.373 12 12 12s12-5.373 12-12v-40c0-3.071-1.172-6.142-3.515-8.485A11.963 11.963 0 0 0 56 188H16c-6.627 0-12 5.373-12 12s5.373 12 12 12h11.03L7.515 231.515c-4.686 4.687-4.686 12.284 0 16.971 4.686 4.686 12.284 4.686 16.971 0l19.515-19.515ZM27.029 44H16C9.373 44 4 49.373 4 56s5.373 12 12 12h40c3.071 0 6.142-1.172 8.485-3.515A11.963 11.963 0 0 0 68 56V16c0-6.627-5.373-12-12-12S44 9.373 44 16v11.03L24.485 7.515c-4.687-4.686-12.284-4.686-16.971 0-4.686 4.686-4.686 12.284 0 16.971l19.515 19.515ZM212 27.029V16c0-6.627-5.373-12-12-12s-12 5.373-12 12v40c0 3.071 1.172 6.142 3.515 8.485A11.963 11.963 0 0 0 200 68h40c6.627 0 12-5.373 12-12s-5.373-12-12-12h-11.03l19.515-19.515c4.686-4.687 4.686-12.284 0-16.971-4.686-4.686-12.284-4.686-16.971 0l-19.515 19.515Z\"\r\n        />\r\n      </g>\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function ghost ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} width={height} height={width} viewBox=\"0 0 20 20\">\r\n      <g data-name=\"ICONS\">\r\n        <path\r\n          d=\"M7.19 6.4955C6.47991 6.4955 5.90428 7.45488 5.90428 8.63837C5.90428 9.82186 6.47991 10.7812 7.19 10.7812C7.90009 10.7812 8.47572 9.82186 8.47572 8.63837C8.47572 7.45488 7.90009 6.4955 7.19 6.4955Z\"\r\n          fill={fill}\r\n        />\r\n        <path\r\n          d=\"M11.0115 8.63837C11.0115 7.45488 11.5871 6.4955 12.2972 6.4955C13.0073 6.4955 13.583 7.45488 13.583 8.63837C13.583 9.82186 13.0073 10.7812 12.2972 10.7812C11.5871 10.7812 11.0115 9.82186 11.0115 8.63837Z\"\r\n          fill={fill}\r\n        />\r\n        <path\r\n          d=\"M9.74357 0.000762939C5.30132 0.000762939 1.66666 3.63542 1.66666 8.07767V18.0777C1.66666 19.1354 2.27836 20.0008 3.5897 20.0008C4.23039 20.0008 4.61799 19.8172 5.01444 19.6293C5.42944 19.4328 5.85414 19.2316 6.589 19.2316C7.30908 19.2316 7.74211 19.4247 8.17416 19.6175C8.60425 19.8093 9.03336 20.0008 9.74366 20.0008C10.4921 20.0008 11.0123 19.7882 11.5057 19.5866C11.9509 19.4046 12.3744 19.2316 12.9243 19.2316C13.4865 19.2316 13.8951 19.4125 14.316 19.5988C14.763 19.7967 15.2239 20.0008 15.8975 20.0008C17.2053 20.0008 17.8206 19.1354 17.8206 18.0777V8.07767C17.8206 3.63533 14.1858 0.000762939 9.74357 0.000762939ZM3.80952 17.8216V8.07767C3.80952 6.50151 4.42926 5.01382 5.55444 3.88855C6.67963 2.76328 8.1674 2.14354 9.74357 2.14354C11.3197 2.14354 12.8074 2.76328 13.9327 3.88855C15.058 5.01382 15.6776 6.50151 15.6776 8.07767V17.832C15.5535 17.8014 15.4136 17.7414 15.1834 17.6394C14.6585 17.407 13.9396 17.0887 12.9242 17.0887C11.9534 17.0887 11.2261 17.3859 10.695 17.603C10.2624 17.7798 10.0579 17.8579 9.74357 17.8579C9.49892 17.8579 9.40508 17.8202 9.04714 17.6605C8.53668 17.4328 7.765 17.0886 6.589 17.0886C5.37252 17.0886 4.60528 17.452 4.09741 17.6925C3.95938 17.7579 3.87354 17.7977 3.80952 17.8216Z\"\r\n          fill={fill}\r\n        />\r\n      </g>\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport function ghostDead ({ height, width, fill, className }: IconOptions) {\r\n  return (\r\n    <svg className={className} width={height} height={width} viewBox=\"0 0 20 20\">\r\n      <g data-name=\"ICONS\">\r\n        <path\r\n          d=\"M1.66666 8.07787C1.66666 3.63566 5.30128 0.00103311 9.74341 0.000854492C14.1856 0.000854492 17.8205 3.63557 17.8205 8.07787V18.0778C17.8205 19.1355 17.2053 20.0009 15.8975 20.0009C15.2239 20.0009 14.763 19.7968 14.316 19.5989C13.8951 19.4126 13.4865 19.2317 12.9243 19.2317C12.3744 19.2317 11.9508 19.4047 11.5056 19.5867C11.0122 19.7883 10.492 20.0009 9.74359 20.0009C9.03329 20.0009 8.60419 19.8094 8.17411 19.6176C7.74206 19.4248 7.30903 19.2317 6.58896 19.2317C5.8541 19.2317 5.42941 19.4328 5.01441 19.6294C4.61796 19.8172 4.23037 20.0009 3.58968 20.0009C2.27835 20.0009 1.66666 19.1355 1.66666 18.0778V8.07787ZM13.5284 6.73466L12.7791 7.48395L12.0298 6.73466C11.8705 6.57529 11.6615 6.49556 11.4526 6.49556C11.2437 6.49556 11.0347 6.57529 10.8754 6.73466C10.5566 7.05341 10.5566 7.57028 10.8754 7.88912L11.6246 8.63841L10.8754 9.38769C10.5566 9.70644 10.5566 10.2233 10.8754 10.5421C11.0347 10.7015 11.2437 10.7813 11.4526 10.7813C11.6615 10.7813 11.8705 10.7015 12.0298 10.5421L12.7791 9.79286L13.5284 10.5421C13.6878 10.7015 13.8967 10.7813 14.1056 10.7813C14.3145 10.7813 14.5235 10.7015 14.6828 10.5421C15.0016 10.2234 15.0016 9.70653 14.6828 9.38769L13.9336 8.63841L14.6828 7.88912C15.0016 7.57028 15.0016 7.05341 14.6828 6.73466C14.5235 6.57529 14.3145 6.49556 14.1056 6.49556C13.8967 6.49556 13.6878 6.57529 13.5284 6.73466ZM7.45699 6.73466L6.70771 7.48395L5.95842 6.73466C5.79905 6.57529 5.59012 6.49556 5.38119 6.49556C5.17227 6.49556 4.96334 6.57529 4.80396 6.73466C4.48522 7.05341 4.48522 7.57028 4.80396 7.88912L5.55325 8.63841L4.80396 9.38769C4.48522 9.70644 4.48522 10.2233 4.80396 10.5421C4.96334 10.7015 5.17227 10.7813 5.38119 10.7813C5.59012 10.7813 5.79905 10.7015 5.95842 10.5421L6.70771 9.79286L7.45699 10.5421C7.61636 10.7015 7.82529 10.7813 8.03422 10.7813C8.24315 10.7813 8.45207 10.7015 8.61145 10.5421C8.9302 10.2234 8.9302 9.70653 8.61145 9.38769L7.86216 8.63841L8.61145 7.88912C8.9302 7.57028 8.9302 7.05341 8.61145 6.73466C8.45207 6.57529 8.24315 6.49556 8.03422 6.49556C7.82529 6.49556 7.61636 6.57529 7.45699 6.73466Z\"\r\n          fill={fill}\r\n        />\r\n      </g>\r\n    </svg>\r\n  )\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\n/**\r\n * Makes all fields optional recursively\r\n * https://stackoverflow.com/questions/41980195/recursive-partialt-in-typescript\r\n */\r\nexport type RecursivePartial<T> = {\r\n  [P in keyof T]?: T[P] extends (infer U)[]\r\n    ? RecursivePartial<U>[]\r\n    : T[P] extends object\r\n    ? RecursivePartial<T[P]>\r\n    : T[P]\r\n}\r\n/**\r\n * true, false or restricted\r\n * Restricted: is false and cannot be changed by the user.\r\n */\r\nexport type UserBoolean = boolean | 'AlwaysTrue' | 'AlwaysFalse'\r\nexport function isTrue (value:UserBoolean | boolean) {\r\n  return value === true || value === 'AlwaysTrue'\r\n}\r\nexport function isFalse (value:UserBoolean | boolean) {\r\n  return value === false || value === 'AlwaysFalse'\r\n}\r\n\r\n/**\r\n * Vim component settings, can either be set at component intialization or by user using UI.\r\n */\r\nexport type ComponentSettings = {\r\n  peformance: {\r\n    useFastMaterial: boolean\r\n  }\r\n  isolation: {\r\n    enable: boolean\r\n    useIsolationMaterial: boolean\r\n  }\r\n  capacity: {\r\n    canFollowUrl: boolean\r\n    canGoFullScreen: boolean\r\n    useOrthographicCamera: boolean\r\n    canDownload: boolean\r\n  }\r\n  ui: {\r\n    // panels\r\n    logo: UserBoolean\r\n    bimTreePanel: UserBoolean\r\n    bimInfoPanel: UserBoolean\r\n    performance: UserBoolean\r\n\r\n    // axesPanel\r\n    axesPanel: UserBoolean\r\n    orthographic: UserBoolean\r\n    resetCamera: UserBoolean\r\n    enableGhost: UserBoolean\r\n\r\n    // Control bar\r\n    controlBar: UserBoolean\r\n    // Control bar - cursors\r\n    orbit: UserBoolean\r\n    lookAround: UserBoolean\r\n    pan: UserBoolean\r\n    zoom: UserBoolean\r\n    zoomWindow: UserBoolean\r\n    zoomToFit: UserBoolean\r\n\r\n    // Control bar - tools\r\n    sectioningMode: UserBoolean\r\n    measuringMode: UserBoolean\r\n    toggleIsolation: UserBoolean\r\n\r\n    // Control bar - tools\r\n    projectInspector: UserBoolean\r\n    settings: UserBoolean\r\n    help: UserBoolean\r\n    maximise: UserBoolean\r\n  }\r\n}\r\n\r\nexport type PartialComponentSettings = RecursivePartial<ComponentSettings>\r\n\r\nexport function anyUiAxesButton (settings: ComponentSettings) {\r\n  return (\r\n    settings.ui.orthographic ||\r\n    settings.ui.resetCamera ||\r\n    settings.ui.enableGhost\r\n  )\r\n}\r\n\r\nexport function anyUiCursorButton (settings: ComponentSettings) {\r\n  return (\r\n    isTrue(settings.ui.orbit) ||\r\n    isTrue(settings.ui.lookAround) ||\r\n    isTrue(settings.ui.pan) ||\r\n    isTrue(settings.ui.zoom) ||\r\n    isTrue(settings.ui.zoomWindow) ||\r\n    isTrue(settings.ui.zoomToFit)\r\n  )\r\n}\r\nexport function anyUiToolButton (settings: ComponentSettings) {\r\n  return (\r\n    isTrue(settings.ui.sectioningMode) ||\r\n    isTrue(settings.ui.measuringMode) ||\r\n    isTrue(settings.ui.toggleIsolation)\r\n  )\r\n}\r\n\r\nexport function anyUiSettingButton (settings: ComponentSettings) {\r\n  return (\r\n    isTrue(settings.ui.projectInspector) ||\r\n    isTrue(settings.ui.settings) ||\r\n    isTrue(settings.ui.help) ||\r\n    isTrue(settings.ui.maximise)\r\n  )\r\n}\r\n\r\nexport const defaultSettings: ComponentSettings = {\r\n  peformance: {\r\n    useFastMaterial: false\r\n  },\r\n  isolation: {\r\n    enable: true,\r\n    useIsolationMaterial: true\r\n  },\r\n  capacity: {\r\n    canFollowUrl: true,\r\n    canGoFullScreen: true,\r\n    useOrthographicCamera: true,\r\n    canDownload: true\r\n  },\r\n  ui: {\r\n    logo: true,\r\n    performance: false,\r\n    bimTreePanel: true,\r\n    bimInfoPanel: true,\r\n\r\n    // axesPanel\r\n    axesPanel: true,\r\n    orthographic: true,\r\n    resetCamera: true,\r\n    enableGhost: true,\r\n\r\n    // Control bar\r\n    controlBar: true,\r\n    // Control bar - cursors\r\n    orbit: true,\r\n    lookAround: true,\r\n    pan: true,\r\n    zoom: true,\r\n    zoomWindow: true,\r\n    zoomToFit: true,\r\n\r\n    // Control bar - tools\r\n    sectioningMode: true,\r\n    measuringMode: true,\r\n    toggleIsolation: true,\r\n\r\n    // Control bar - settings\r\n    projectInspector: true,\r\n    settings: true,\r\n    help: true,\r\n    maximise: true\r\n  }\r\n}\r\n","import { isTrue, isFalse, UserBoolean } from '../settings/settings'\r\n\r\nexport function whenTrue (value: UserBoolean | boolean, element: JSX.Element) {\r\n  return isTrue(value) ? element : null\r\n}\r\n\r\nexport function whenFalse (value: UserBoolean | boolean, element: JSX.Element) {\r\n  return isFalse(value) ? element : null\r\n}\r\n\r\nexport function whenAllTrue (value: (UserBoolean| boolean)[], element: JSX.Element) {\r\n  return value.every(isTrue) ? element : null\r\n}\r\n\r\nexport function whenAllFalse (value: (UserBoolean| boolean)[], element: JSX.Element) {\r\n  return value.every(isFalse) ? element : null\r\n}\r\n\r\nexport function whenSomeTrue (value: (UserBoolean| boolean)[], element: JSX.Element) {\r\n  return value.some(isTrue) ? element : null\r\n}\r\n\r\nexport function whenSomeFalse (value: (UserBoolean| boolean)[], element: JSX.Element) {\r\n  return value.some(isFalse) ? element : null\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport React, { useEffect, useRef, useState } from 'react'\r\nimport * as Icons from './icons'\r\nimport { ComponentCamera } from '../helpers/camera'\r\nimport { anyUiAxesButton, isTrue } from '../settings/settings'\r\nimport { SettingsState } from '../settings/settingsState'\r\nimport { VIM } from '../webgl/webglComponent'\r\nimport { whenAllTrue, whenTrue } from '../helpers/utils'\r\n\r\n/**\r\n * Memoized version of the AxesPanelMemo.\r\n */\r\nexport const AxesPanelMemo = React.memo(AxesPanel)\r\n\r\n/**\r\n * JSX Component for axes gizmo.\r\n */\r\nfunction AxesPanel (props: { viewer: VIM.Viewer, camera: ComponentCamera, settings: SettingsState }) {\r\n  const viewer = props.viewer\r\n\r\n  const [ortho, setOrtho] = useState<boolean>(viewer.camera.orthographic)\r\n\r\n  const gizmoDiv = useRef<HTMLDivElement>(null)\r\n  const resize = useRef<ResizeObserver>()\r\n\r\n  useEffect(() => {\r\n    const gizmo = gizmoDiv.current!\r\n    resize.current = new ResizeObserver(() => {\r\n      viewer.gizmos.axes.resize(gizmo.clientWidth)\r\n      // Remove default styling of the axes\r\n      viewer.gizmos.axes.canvas.style.top = '0px'\r\n      viewer.gizmos.axes.canvas.style.right = '0px'\r\n    })\r\n    resize.current.observe(gizmo)\r\n\r\n    const subCam = viewer.camera.onSettingsChanged.subscribe(() =>\r\n      setOrtho(viewer.camera.orthographic)\r\n    )\r\n\r\n    if (viewer.gizmos.axes.canvas) {\r\n      gizmo.appendChild(viewer.gizmos.axes.canvas)\r\n      viewer.gizmos.axes.canvas.classList.add(\r\n        'vc-absolute',\r\n        'vc-inset-0',\r\n        'vc-order-1'\r\n      )\r\n    }\r\n\r\n    // Clean up\r\n    return () => {\r\n      subCam()\r\n      resize.current?.disconnect()\r\n    }\r\n  }, [])\r\n\r\n  const onIsolationBtn = () => {\r\n    props.settings.update(\r\n      (s) => (s.isolation.useIsolationMaterial = !s.isolation.useIsolationMaterial)\r\n    )\r\n  }\r\n\r\n  const onHomeBtn = () => {\r\n    props.camera.reset()\r\n  }\r\n\r\n  const btnStyle =\r\n    'vim-axes-button vc-flex vc-items-center vc-justify-center vc-text-gray-medium vc-transition-all hover:vc-text-primary-royal'\r\n\r\n  const btnIsolation = (\r\n    <button\r\n      data-tip={\r\n        props.settings.value.isolation.useIsolationMaterial\r\n          ? 'Disable Ghosting'\r\n          : 'Enable Ghosting'\r\n      }\r\n      onClick={onIsolationBtn}\r\n      className={'vim-isolation-btn ' + btnStyle}\r\n      type=\"button\"\r\n    >\r\n      {props.settings.value.isolation.useIsolationMaterial\r\n        ? (\r\n        <Icons.ghost height={20} width={20} fill=\"currentColor\" />\r\n          )\r\n        : (\r\n        <Icons.ghostDead height={20} width={20} fill=\"currentColor\" />\r\n          )}\r\n    </button>\r\n  )\r\n\r\n  const btnHome = (\r\n    <button\r\n      data-tip=\"Reset Camera\"\r\n      onClick={onHomeBtn}\r\n      className={'vim-home-btn ' + btnStyle}\r\n      type=\"button\"\r\n    >\r\n      <Icons.home height={20} width={20} fill=\"currentColor\" />{' '}\r\n    </button>\r\n  )\r\n  const btnOrtho = (\r\n    <button\r\n      data-tip={ortho ? 'Orthographic' : 'Perspective'}\r\n      onClick={() => (props.viewer.camera.orthographic = !ortho)}\r\n      className={'vim-camera-btn ' + btnStyle}\r\n      type=\"button\"\r\n    >\r\n      {ortho\r\n        ? (\r\n        <Icons.orthographic height={20} width={20} fill=\"currentColor\" />\r\n          )\r\n        : (\r\n        <Icons.perspective height={20} width={20} fill=\"currentColor\" />\r\n          )}\r\n    </button>\r\n  )\r\n\r\n  const hidden = isTrue(props.settings.value.ui.axesPanel) ? '' : ' vc-hidden'\r\n\r\n  const createBar = () => {\r\n    if (!anyUiAxesButton(props.settings.value)) {\r\n      return (\r\n        // Keeps layout when all buttons are disabled.\r\n        <span className=\"vc-pointer-events-auto vc-absolute vc-inset-0 vc-order-2 vc-flex justify-evenly vc-bg-white\" />\r\n      )\r\n    }\r\n    return (\r\n      <div className=\"vim-axes-panel-buttons vc-absolute vc-inset-0 vc-pointer-events-auto vc-order-2 vc-flex vc-items-center vc-justify-evenly vc-bg-white\">\r\n        {whenAllTrue([\r\n          props.settings.value.capacity.useOrthographicCamera,\r\n          props.settings.value.ui.orthographic\r\n        ], btnOrtho)}\r\n        {whenTrue(props.settings.value.ui.resetCamera, btnHome)}\r\n        {whenTrue(props.settings.value.ui.enableGhost, btnIsolation)}\r\n      </div>\r\n    )\r\n  }\r\n\r\n  return (\r\n    <div\r\n      className={\r\n        'vim-axes-panel vc-pointer-events-none vc-absolute vc-overflow-hidden vc-z-20 vc-flex vc-flex-col vc-border vc-border-white vc-opacity-50 vc-shadow-lg vc-saturate-0 vc-transition-all hover:vc-opacity-100 hover:vc-saturate-100' +\r\n        hidden\r\n      }\r\n    >\r\n      <div ref={gizmoDiv} className='vim-axes-panel-gizmo vc-absolute vc-pointer-events-auto'/>\r\n      <div className='vim-axes-panel-bar vc-absolute vc-top-[75%] vc-bottom-0 vc-right-0 vc-left-0'>\r\n        {createBar()}\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n","import React from 'react'\r\n\r\nconst btnStyle = 'vim-control-bar-button vc-rounded-full vc-items-center vc-justify-center vc-flex vc-transition-all hover:vc-scale-110'\r\nexport function buttonDefaultStyle (on: boolean) {\r\n  return on\r\n    ? btnStyle + ' vc-text-primary'\r\n    : btnStyle + ' vc-text-gray-medium'\r\n}\r\n\r\nexport function buttonBlueStyle (on: boolean) {\r\n  return btnStyle + ' vc-text-white'\r\n}\r\n\r\nexport interface IControlBarButtonItem {\r\n  id: string,\r\n  enabled?: (() => boolean) | undefined\r\n  tip: string\r\n  action: () => void\r\n  icon: ({ height, width, fill, className }) => JSX.Element\r\n  isOn?: () => boolean\r\n  style: (on: boolean) => string\r\n}\r\n\r\nexport function createButton (button: IControlBarButtonItem) {\r\n  if (button.enabled !== undefined && !button.enabled()) return null\r\n  const style = button.style(button.isOn?.())\r\n\r\n  return (\r\n    <button key={button.id} data-tip={button.tip} onClick={button.action} className={style} type=\"button\">\r\n      {button.icon({ height: '20', width: '20', fill: 'currentColor', className: 'vc-max-h-[80%]' })}\r\n    </button>\r\n  )\r\n}\r\n","import React from 'react'\r\nimport { createButton, IControlBarButtonItem } from './controlBarButton'\r\n\r\nconst sectionStyle = 'vc-flex vc-items-center vc-rounded-full vc-mb-2 vc-px-2 vc-shadow-md'\r\nexport const sectionDefaultStyle = sectionStyle + ' vc-bg-white'\r\nexport const sectionBlueStyle = sectionStyle + ' vc-bg-primary'\r\n\r\nexport interface IControlBarSection {\r\n  id: string,\r\n  enable? : (() => boolean) | undefined\r\n  buttons: IControlBarButtonItem[]\r\n  style: string\r\n}\r\n\r\nexport function createSection (section: IControlBarSection) {\r\n  if (section.enable !== undefined && !section.enable()) return null\r\n  return <div key={section.id} className={`vim-control-bar-section ${section.style}`}>\r\n      {section.buttons.map(b => createButton(b))}\r\n    </div>\r\n}\r\n","import { useEffect, useState } from 'react'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\n\r\nexport function getPointerState (viewer: VIM.Viewer) {\r\n  const [mode, setMode] = useState<VIM.PointerMode>(viewer.inputs.pointerActive)\r\n\r\n  useEffect(() => {\r\n    const sub = viewer.inputs.onPointerModeChanged.subscribe(() => {\r\n      setMode(viewer.inputs.pointerActive)\r\n    })\r\n    return () => sub()\r\n  }, [])\r\n\r\n  const onModeBtn = (target: VIM.PointerMode) => {\r\n    const next = mode === target ? viewer.inputs.pointerFallback : target\r\n    viewer.inputs.pointerActive = next\r\n    setMode(next)\r\n  }\r\n\r\n  return {\r\n    mode,\r\n    setMode,\r\n    onButton: onModeBtn\r\n  }\r\n}\r\n","\r\nexport class FullScreenObserver {\r\n  onFullScreenChange: ((value: boolean) => void) | undefined\r\n  private fullScreen: boolean = this.isFullScreen()\r\n  private timeout: ReturnType<typeof setTimeout>\r\n\r\n  constructor () {\r\n    this.loop()\r\n  }\r\n\r\n  isFullScreen () {\r\n    return !!document.fullscreenElement\r\n  }\r\n\r\n  private loop () {\r\n    this.timeout = setTimeout(() => this.loop(), 250)\r\n    const next = this.isFullScreen()\r\n    if (this.fullScreen !== next) {\r\n      this.onFullScreenChange?.(next)\r\n    }\r\n  }\r\n\r\n  dispose () {\r\n    this.onFullScreenChange = undefined\r\n    clearTimeout(this.timeout)\r\n  }\r\n}\r\n","import { useEffect, useState, useRef } from 'react'\r\nimport { FullScreenObserver } from '../helpers/fullScreenObserver'\r\n\r\nexport function getFullScreenState () {\r\n  const fullScreenRef = useRef(new FullScreenObserver())\r\n  const isFullScren = () => fullScreenRef.current.isFullScreen()\r\n  const [, setFullScreen] = useState<boolean>(isFullScren())\r\n  useEffect(() => {\r\n    fullScreenRef.current.onFullScreenChange = (value) => setFullScreen(value)\r\n\r\n    // Clean up\r\n    return () => fullScreenRef.current.dispose()\r\n  }, [])\r\n\r\n  return {\r\n    get: () => isFullScren(),\r\n    toggle: () => {\r\n      if (isFullScren()) {\r\n        document.exitFullscreen()\r\n      } else {\r\n        document.body.requestFullscreen()\r\n      }\r\n    }\r\n  }\r\n}\r\n","import { useEffect, useState, useRef } from 'react'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\n\r\nexport type SectionState = {\r\n  clip: boolean\r\n  active: boolean\r\n}\r\n\r\nexport function getSectionBoxState (viewer: VIM.Viewer) {\r\n  const sectionGizmo = viewer.gizmos.section\r\n\r\n  const first = useRef(true)\r\n  const [section, setSection] = useState<SectionState>({\r\n    clip: sectionGizmo.clip,\r\n    active: sectionGizmo.visible && sectionGizmo.interactive\r\n  })\r\n\r\n  // On First Render\r\n  useEffect(() => {\r\n    const subSection = sectionGizmo.onStateChanged.subscribe(() =>\r\n      setSection({\r\n        clip: sectionGizmo.clip,\r\n        active: sectionGizmo.visible && sectionGizmo.interactive\r\n      })\r\n    )\r\n\r\n    // Clean up\r\n    return () => subSection()\r\n  }, [])\r\n\r\n  const toggle = () => {\r\n    ReactTooltip.hide()\r\n\r\n    if (viewer.inputs.pointerActive === 'rect') {\r\n      viewer.inputs.pointerActive = viewer.inputs.pointerFallback\r\n    }\r\n\r\n    const next = !(\r\n      sectionGizmo.visible && sectionGizmo.interactive\r\n    )\r\n\r\n    sectionGizmo.interactive = next\r\n    sectionGizmo.visible = next\r\n\r\n    if (next && first.current) {\r\n      sectionGizmo.clip = true\r\n      sectionGizmo.fitBox(viewer.renderer.getBoundingBox())\r\n      first.current = false\r\n    }\r\n  }\r\n\r\n  return {\r\n    clip: section.clip,\r\n    active: section.active,\r\n    set: setSection,\r\n    toggle,\r\n    hide: () => {\r\n      sectionGizmo.visible = false\r\n      sectionGizmo.interactive = false\r\n    },\r\n    reset: () => sectionGizmo.fitBox(viewer.renderer.getBoundingBox()),\r\n    shrinkToSelection: () => sectionGizmo.fitBox(viewer.selection.getBoundingBox()),\r\n    toggleClip: () => { sectionGizmo.clip = (!section.clip) }\r\n  }\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport * as VIM from 'vim-webgl-viewer/'\r\n\r\n/**\r\n * Css classes for custom cursors.\r\n */\r\nexport type Cursor =\r\n  | 'cursor-regular'\r\n  | 'cursor-orbit'\r\n  | 'cursor-look'\r\n  | 'cursor-pan'\r\n  | 'cursor-zoom'\r\n  | 'cursor-rect'\r\n  | 'cursor-measure'\r\n  | 'cursor-section-box'\r\n\r\n/**\r\n * Maps between viewer pointers and cursor css classes\r\n */\r\nexport function pointerToCursor (pointer: VIM.PointerMode): Cursor {\r\n  switch (pointer) {\r\n    case 'orbit':\r\n      return 'cursor-orbit'\r\n    case 'look':\r\n      return 'cursor-look'\r\n    case 'pan':\r\n      return 'cursor-pan'\r\n    case 'zoom':\r\n      return 'cursor-zoom'\r\n    case 'rect':\r\n      return 'cursor-rect'\r\n    default:\r\n      return 'cursor-regular'\r\n  }\r\n}\r\n\r\n/**\r\n * Listens to the vim viewer and updates css cursors classes on the canvas accordingly.\r\n */\r\nexport class CursorManager {\r\n  private _viewer: VIM.Viewer\r\n  private cursor: Cursor\r\n  private _boxHover: boolean\r\n  private _subscriptions: (() => void)[]\r\n  constructor (viewer: VIM.Viewer) {\r\n    this._viewer = viewer\r\n  }\r\n\r\n  /**\r\n   * Register to viewer events\r\n   */\r\n  register () {\r\n    // Update and Register cursor for pointers\r\n    this.setCursor(pointerToCursor(this._viewer.inputs.pointerActive))\r\n\r\n    const sub1 = this._viewer.inputs.onPointerModeChanged.subscribe(() =>\r\n      this._updateCursor()\r\n    )\r\n    const sub2 = this._viewer.inputs.onPointerOverrideChanged.subscribe(() =>\r\n      this._updateCursor()\r\n    )\r\n    const sub3 = this._viewer.gizmos.section.onStateChanged.subscribe(() => {\r\n      if (!this._viewer.gizmos.section.visible) {\r\n        this._boxHover = false\r\n        this._updateCursor()\r\n      }\r\n    })\r\n    const sub4 = this._viewer.gizmos.section.onHover.subscribe((hover) => {\r\n      this._boxHover = hover\r\n      this._updateCursor()\r\n    })\r\n    this._subscriptions = [sub1, sub2, sub3, sub4]\r\n  }\r\n\r\n  /**\r\n   * Unregister from viewer events\r\n   */\r\n  unregister () {\r\n    this._subscriptions?.forEach((s) => s())\r\n    this._subscriptions = null\r\n  }\r\n\r\n  /**\r\n   * Set a specific cursor.\r\n   */\r\n  setCursor = (value: Cursor) => {\r\n    if (value === this.cursor) return\r\n    if (!this.cursor) {\r\n      this._viewer.viewport.canvas.classList.add(value)\r\n    } else {\r\n      this._viewer.viewport.canvas.classList.replace(this.cursor, value)\r\n    }\r\n    this.cursor = value\r\n  }\r\n\r\n  private _updateCursor = () => {\r\n    const cursor = this._viewer.inputs.pointerOverride\r\n      ? pointerToCursor(this._viewer.inputs.pointerOverride)\r\n      : this._boxHover\r\n        ? 'cursor-section-box'\r\n        : pointerToCursor(this._viewer.inputs.pointerActive)\r\n    this.setCursor(cursor)\r\n  }\r\n}\r\n","import ReactTooltip from 'react-tooltip'\r\nimport { useRef, useState } from 'react'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport { CursorManager, pointerToCursor } from '../helpers/cursor'\r\n\r\nexport function getMeasureState (viewer: VIM.Viewer, cursor: CursorManager) {\r\n  const measuringRef = useRef<boolean>(false)\r\n  const activeRef = useRef<boolean>(false)\r\n  const [active, setActive] = useState(measuringRef.current)\r\n  const [, setMeasurement] = useState<VIM.THREE.Vector3>()\r\n\r\n  const toggle = () => {\r\n    ReactTooltip.hide()\r\n\r\n    if (activeRef.current) {\r\n      viewer.gizmos.measure.abort()\r\n      activeRef.current = false\r\n      setActive(false)\r\n    } else {\r\n      activeRef.current = true\r\n      setActive(true)\r\n      loop()\r\n    }\r\n  }\r\n\r\n  const clear = () => {\r\n    ReactTooltip.hide()\r\n    viewer.gizmos.measure.abort()\r\n    toggle()\r\n  }\r\n\r\n  /**\r\n * Behaviour to have measure gizmo loop over and over.\r\n */\r\n  const loop = () => {\r\n    const onMouseMove = () => {\r\n      setMeasurement(viewer.gizmos.measure.measurement)\r\n    }\r\n    cursor.setCursor('cursor-measure')\r\n    viewer.viewport.canvas.addEventListener('mousemove', onMouseMove)\r\n    viewer.gizmos.measure\r\n      .start()\r\n      .then(() => {\r\n        setMeasurement(viewer.gizmos.measure.measurement)\r\n      })\r\n      .catch(() => {\r\n        setMeasurement(undefined)\r\n      })\r\n      .finally(() => {\r\n        cursor.setCursor(pointerToCursor(viewer.inputs.pointerActive))\r\n        viewer.viewport.canvas.removeEventListener('mousemove', onMouseMove)\r\n        if (activeRef.current) {\r\n          loop()\r\n        } else {\r\n          viewer.gizmos.measure.clear()\r\n        }\r\n      })\r\n  }\r\n\r\n  return {\r\n    active,\r\n    toggle,\r\n    clear\r\n  }\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport React, { useEffect } from 'react'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport { ComponentCamera } from '../helpers/camera'\r\nimport { CursorManager } from '../helpers/cursor'\r\nimport { Isolation } from '../helpers/isolation'\r\n// import { HelpState } from '../panels/help'\r\nimport {\r\n  ComponentSettings,\r\n  anyUiCursorButton,\r\n  anyUiSettingButton,\r\n  anyUiToolButton,\r\n  isFalse,\r\n  isTrue\r\n} from '../settings/settings'\r\nimport { SideState } from '../sidePanel/sideState'\r\nimport * as Icons from '../panels/icons'\r\nimport { buttonBlueStyle, buttonDefaultStyle } from './controlBarButton'\r\nimport { createSection, IControlBarSection, sectionDefaultStyle, sectionBlueStyle } from './controlBarSection'\r\n\r\nimport { getPointerState } from './pointerState'\r\nimport { getFullScreenState } from './fullScreenState'\r\nimport { getSectionBoxState } from './sectionBoxState'\r\nimport { getMeasureState } from './measureState'\r\nimport { ModalRef } from '../panels/modal'\r\n\r\nexport { buttonDefaultStyle, buttonBlueStyle } from './controlBarButton'\r\nexport { sectionDefaultStyle, sectionBlueStyle } from './controlBarSection'\r\n\r\n/**\r\n * A map function that changes the context menu.\r\n */\r\nexport type ControlBarCustomization = (\r\n  e: IControlBarSection[]\r\n) => IControlBarSection[]\r\n\r\nexport const elementIds = {\r\n  // Sections\r\n  sectionCamera: 'controlBar.sectionCamera',\r\n  sectionTools: 'controlBar.sectionTools',\r\n  sectionSettings: 'controlBar.sectionSettings',\r\n  sectionMeasure: 'controlBar.sectionMeasure',\r\n  sectionSectionBox: 'controlBar.sectionSectionBox',\r\n\r\n  // Camera buttons\r\n  buttonCameraOrbit: 'controlBar.camera.orbit',\r\n  buttonCameraLook: 'controlBarcamera.look',\r\n  buttonCameraPan: 'controlBar.camera.pan',\r\n  buttonCameraZoom: 'controlBar.camera.zoom',\r\n  buttonCameraZoomWindow: 'controlBar.camera.zoomWindow',\r\n  buttonCameraZoomToFit: 'controlBar.camera.zoomToFit',\r\n\r\n  // Settings buttons\r\n  buttonProjectInspector: 'controlBar.projectInspector',\r\n  buttonSettings: 'controlBar.settings',\r\n  buttonHelp: 'controlBar.help',\r\n  buttonMaximize: 'controlBar.maximize',\r\n\r\n  // Tools buttons\r\n  buttonSectionBox: 'controlBar.sectionBox',\r\n  buttonMeasure: 'controlBar.measure',\r\n  buttonToggleIsolation: 'controlBar.toggleIsolation',\r\n\r\n  // Measure buttons\r\n  buttonMeasureDelete: 'controlBar.measure.delete',\r\n  buttonMeasureDone: 'controlBar.measure.done',\r\n\r\n  // Section box buttons\r\n  buttonSectionBoxReset: 'controlBar.sectionBox.reset',\r\n  buttonSectionBoxShrinkToSelection: 'controlBar.sectionBox.shrinkToSelection',\r\n  buttonSectionBoxClip: 'controlBar.sectionBox.clip',\r\n  buttonSectionBoxIgnore: 'controlBar.sectionBox.ignore',\r\n  buttonSectionBoxDone: 'controlBar.sectionBox.done'\r\n}\r\n\r\n/**\r\n * JSX Component for the control bar.\r\n */\r\nexport function ControlBar (props: {\r\n  viewer: VIM.Viewer\r\n  camera: ComponentCamera\r\n  modal: ModalRef\r\n  side: SideState\r\n  isolation: Isolation\r\n  cursor: CursorManager\r\n  settings: ComponentSettings\r\n  customization: ControlBarCustomization | undefined\r\n}) {\r\n  const pointer = getPointerState(props.viewer)\r\n  const fullScreen = getFullScreenState()\r\n  const section = getSectionBoxState(props.viewer)\r\n  const measure = getMeasureState(props.viewer, props.cursor)\r\n\r\n  // On Each Render\r\n  useEffect(() => {\r\n    ReactTooltip.rebuild()\r\n  })\r\n  if (isFalse(props.settings.ui.controlBar)) {\r\n    return null\r\n  }\r\n\r\n  const cameraSection : IControlBarSection = {\r\n    id: elementIds.sectionCamera,\r\n    enable: () => anyUiCursorButton(props.settings),\r\n    style: sectionDefaultStyle,\r\n    buttons: [\r\n      {\r\n        id: elementIds.buttonCameraOrbit,\r\n        enabled: () => isTrue(props.settings.ui.orbit),\r\n        tip: 'Orbit',\r\n        action: () => pointer.onButton('orbit'),\r\n        icon: Icons.orbit,\r\n        isOn: () => pointer.mode === 'orbit',\r\n        style: buttonDefaultStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonCameraLook,\r\n        enabled: () => isTrue(props.settings.ui.lookAround),\r\n        tip: 'Look Around',\r\n        action: () => pointer.onButton('look'),\r\n        icon: Icons.look,\r\n        isOn: () => pointer.mode === 'look',\r\n        style: buttonDefaultStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonCameraPan,\r\n        enabled: () => isTrue(props.settings.ui.pan),\r\n        tip: 'Pan',\r\n        action: () => pointer.onButton('pan'),\r\n        icon: Icons.pan,\r\n        isOn: () => pointer.mode === 'pan',\r\n        style: buttonDefaultStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonCameraZoom,\r\n        enabled: () => isTrue(props.settings.ui.zoom),\r\n        tip: 'Zoom',\r\n        action: () => pointer.onButton('zoom'),\r\n        icon: Icons.zoom,\r\n        isOn: () => pointer.mode === 'zoom',\r\n        style: buttonDefaultStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonCameraZoomWindow,\r\n        enabled: () => isTrue(props.settings.ui.zoomWindow),\r\n        tip: 'Zoom Window',\r\n        action: () => {\r\n          pointer.onButton('rect')\r\n          section.hide()\r\n        },\r\n        icon: Icons.frameRect,\r\n        isOn: () => pointer.mode === 'rect',\r\n        style: buttonDefaultStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonCameraZoomToFit,\r\n        enabled: () => isTrue(props.settings.ui.zoomToFit),\r\n        tip: 'Zoom to Fit',\r\n        action: () => props.camera.frameContext(),\r\n        icon: Icons.frameSelection,\r\n        isOn: () => false,\r\n        style: buttonDefaultStyle\r\n      }\r\n    ]\r\n  }\r\n\r\n  const settingsSection : IControlBarSection = {\r\n    id: elementIds.sectionSettings,\r\n    enable: () => anyUiSettingButton(props.settings),\r\n    style: sectionDefaultStyle,\r\n    buttons: [\r\n      {\r\n        id: elementIds.buttonProjectInspector,\r\n        enabled: () => isTrue(props.settings.ui.projectInspector) && (\r\n          isTrue(props.settings.ui.bimTreePanel) ||\r\n          isTrue(props.settings.ui.bimInfoPanel)),\r\n        tip: 'Project Inspector',\r\n        action: () => props.side.toggleContent('bim'),\r\n        icon: Icons.treeView,\r\n        style: buttonDefaultStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonSettings,\r\n        enabled: () => isTrue(props.settings.ui.settings),\r\n        tip: 'Settings',\r\n        action: () => props.side.toggleContent('settings'),\r\n        icon: Icons.settings,\r\n        style: buttonDefaultStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonHelp,\r\n        enabled: () => isTrue(props.settings.ui.help),\r\n        tip: 'Help',\r\n        action: () => props.modal.help(true),\r\n        icon: Icons.help,\r\n        style: buttonDefaultStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonMaximize,\r\n        enabled: () =>\r\n          isTrue(props.settings.ui.maximise) &&\r\n          props.settings.capacity.canGoFullScreen,\r\n        tip: fullScreen.get() ? 'Minimize' : 'Fullscreen',\r\n        action: () => fullScreen.toggle(),\r\n        icon: fullScreen.get() ? Icons.minimize : Icons.fullsScreen,\r\n        style: buttonDefaultStyle\r\n      }\r\n    ]\r\n  }\r\n\r\n  const sectionBoxSection : IControlBarSection = {\r\n    id: elementIds.sectionSectionBox,\r\n    enable: () => !measure.active && section.active,\r\n    style: sectionBlueStyle,\r\n    buttons: [\r\n      {\r\n        id: elementIds.buttonSectionBoxReset,\r\n        tip: 'Reset Section Box',\r\n        action: () => section.reset(),\r\n        icon: Icons.sectionBoxReset,\r\n        style: buttonBlueStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonSectionBoxShrinkToSelection,\r\n        tip: 'Shrink to Selection',\r\n        action: () => section.shrinkToSelection(),\r\n        icon: Icons.sectionBoxShrink,\r\n        style: buttonBlueStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonSectionBoxClip,\r\n        tip: section.clip ? 'Ignore Section Box' : 'Clip Section Box',\r\n        action: () => section.toggleClip(),\r\n        icon: section.clip ? Icons.sectionBoxIgnore : Icons.sectionBoxClip,\r\n        style: buttonBlueStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonSectionBoxDone,\r\n        tip: 'Done',\r\n        action: () => section.toggle(),\r\n        icon: Icons.checkmark,\r\n        style: buttonBlueStyle\r\n      }\r\n    ]\r\n  }\r\n\r\n  const measureSection : IControlBarSection = {\r\n    id: elementIds.sectionMeasure,\r\n    enable: () => measure.active && !section.active,\r\n    style: sectionBlueStyle,\r\n    buttons: [\r\n      {\r\n        id: elementIds.buttonMeasureDelete,\r\n        tip: 'Delete',\r\n        action: () => measure.clear(),\r\n        icon: Icons.trash,\r\n        style: buttonBlueStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonMeasureDone,\r\n        tip: 'Done',\r\n        action: () => measure.toggle(),\r\n        icon: Icons.checkmark,\r\n        style: buttonBlueStyle\r\n      }\r\n    ]\r\n  }\r\n\r\n  const toolSections: IControlBarSection = {\r\n    id: elementIds.sectionTools,\r\n    enable: () => anyUiToolButton(props.settings) && !measure.active && !section.active,\r\n    style: measure.active || section.active ? sectionBlueStyle : sectionDefaultStyle,\r\n    buttons: [\r\n      {\r\n        id: elementIds.buttonSectionBox,\r\n        enabled: () => isTrue(props.settings.ui.sectioningMode),\r\n        tip: 'Sectioning Mode',\r\n        action: () => section.toggle(),\r\n        icon: Icons.sectionBox,\r\n        style: buttonDefaultStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonMeasure,\r\n        enabled: () => isTrue(props.settings.ui.measuringMode),\r\n        tip: 'Measuring Mode',\r\n        action: () => measure.toggle(),\r\n        icon: Icons.measure,\r\n        style: buttonDefaultStyle\r\n      },\r\n      {\r\n        id: elementIds.buttonToggleIsolation,\r\n        enabled: () => isTrue(props.settings.ui.toggleIsolation),\r\n        tip: 'Toggle Isolation',\r\n        action: () => props.isolation.toggleIsolation('controlBar'),\r\n        icon: Icons.toggleIsolation,\r\n        style: buttonDefaultStyle\r\n      }\r\n    ]\r\n  }\r\n\r\n  // Apply user customization\r\n  let controlBar = [cameraSection, toolSections, measureSection, sectionBoxSection, settingsSection]\r\n  controlBar = props.customization?.(controlBar) ?? controlBar\r\n\r\n  return createBar(controlBar)\r\n}\r\n\r\nfunction createBar (sections: IControlBarSection[]) {\r\n  return <div style={{\r\n    gap: 'min(10px, 2%)',\r\n    bottom: 'min(36px, 10%)'\r\n  }} className='vim-control-bar vc-pointer-events-auto vc-flex-wrap vc-mx-2 vc-min-w-0 vc-absolute vc-left-0 vc-right-0 vc-z-20 vc-flex vc-items-center vc-justify-center transition-all'>\r\n    {sections.map(createSection)}\r\n  </div>\r\n}\r\n","\r\nimport React, { useEffect, useRef, useState } from 'react'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport { SideState } from '../sidePanel/sideState'\r\n\r\nexport function RestOfScreen (props:{\r\n  side: SideState,\r\n  content: () => JSX.Element\r\n}) {\r\n  const [, setVersion] = useState(0)\r\n  const resizeObserver = useRef<ResizeObserver>()\r\n\r\n  // On Each Render\r\n  useEffect(() => {\r\n    ReactTooltip.rebuild()\r\n  })\r\n\r\n  useEffect(() => {\r\n    resizeObserver.current = new ResizeObserver(() => {\r\n      setVersion((prev) => prev ^ 1)\r\n    })\r\n    resizeObserver.current.observe(document.body)\r\n\r\n    return () => {\r\n      resizeObserver.current?.disconnect()\r\n    }\r\n  }, [])\r\n\r\n  return (\r\n    <div className='vim-rest-of-screen vc-absolute vc-right-0 vc-top-0 vc-bottom-0' style={{\r\n      left: props.side.getWidth(),\r\n      width: `calc(100% - ${props.side.getWidth()}px)`\r\n    }}>\r\n      {props.content()}\r\n    </div>)\r\n}\r\n","export var InteractionMode;\n(function (InteractionMode) {\n    InteractionMode[\"DoubleClickItemToExpand\"] = \"double-click-item-to-expand\";\n    InteractionMode[\"ClickItemToExpand\"] = \"click-item-to-expand\";\n    InteractionMode[\"ClickArrowToExpand\"] = \"click-arrow-to-expand\";\n})(InteractionMode || (InteractionMode = {}));\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nexport var mergeInteractionManagers = function (main, fallback) { return ({\n    mode: main.mode,\n    createInteractiveElementProps: function (item, treeId, actions, renderFlags) { return (__assign(__assign({}, fallback.createInteractiveElementProps(item, treeId, actions, renderFlags)), main.createInteractiveElementProps(item, treeId, actions, renderFlags))); },\n}); };\n","export var isControlKey = function (e) {\n    return e.ctrlKey ||\n        (navigator.platform.toUpperCase().indexOf('MAC') >= 0 && e.metaKey);\n};\n","import { InteractionMode, } from '../types';\nimport { isControlKey } from '../isControlKey';\nvar DoubleClickItemToExpandInteractionManager = /** @class */ (function () {\n    function DoubleClickItemToExpandInteractionManager(environment) {\n        this.mode = InteractionMode.DoubleClickItemToExpand;\n        this.environment = environment;\n    }\n    DoubleClickItemToExpandInteractionManager.prototype.createInteractiveElementProps = function (item, treeId, actions, renderFlags) {\n        var _this = this;\n        return {\n            onClick: function (e) {\n                actions.focusItem();\n                if (e.shiftKey) {\n                    actions.selectUpTo(!e.ctrlKey);\n                }\n                else if (isControlKey(e)) {\n                    if (renderFlags.isSelected) {\n                        actions.unselectItem();\n                    }\n                    else {\n                        actions.addToSelectedItems();\n                    }\n                }\n                else {\n                    actions.selectItem();\n                }\n            },\n            onDoubleClick: function () {\n                actions.focusItem();\n                actions.selectItem();\n                if (item.isFolder) {\n                    actions.toggleExpandedState();\n                }\n                if (!item.isFolder ||\n                    _this.environment.canInvokePrimaryActionOnItemContainer) {\n                    actions.primaryAction();\n                }\n            },\n            onFocus: function () {\n                actions.focusItem();\n            },\n            onDragStart: function (e) {\n                e.dataTransfer.dropEffect = 'move'; // TODO\n                // e.dataTransfer.setDragImage(environment.renderDraggingItem(viewState.selectedItems), 0, 0);\n                actions.startDragging();\n            },\n            onDragOver: function (e) {\n                e.preventDefault(); // Allow drop\n            },\n            draggable: renderFlags.canDrag && !renderFlags.isRenaming,\n            tabIndex: !renderFlags.isRenaming\n                ? renderFlags.isFocused\n                    ? 0\n                    : -1\n                : undefined,\n        };\n    };\n    return DoubleClickItemToExpandInteractionManager;\n}());\nexport { DoubleClickItemToExpandInteractionManager };\n","import { InteractionMode, } from '../types';\nimport { isControlKey } from '../isControlKey';\nvar ClickItemToExpandInteractionManager = /** @class */ (function () {\n    function ClickItemToExpandInteractionManager(environment) {\n        this.mode = InteractionMode.ClickItemToExpand;\n        this.environment = environment;\n    }\n    ClickItemToExpandInteractionManager.prototype.createInteractiveElementProps = function (item, treeId, actions, renderFlags) {\n        var _this = this;\n        return {\n            onClick: function (e) {\n                actions.focusItem();\n                if (e.shiftKey) {\n                    actions.selectUpTo(!e.ctrlKey);\n                }\n                else if (isControlKey(e)) {\n                    if (renderFlags.isSelected) {\n                        actions.unselectItem();\n                    }\n                    else {\n                        actions.addToSelectedItems();\n                    }\n                }\n                else {\n                    if (item.isFolder) {\n                        actions.toggleExpandedState();\n                    }\n                    actions.selectItem();\n                    if (!item.isFolder ||\n                        _this.environment.canInvokePrimaryActionOnItemContainer) {\n                        actions.primaryAction();\n                    }\n                }\n            },\n            onFocus: function () {\n                actions.focusItem();\n            },\n            onDragStart: function (e) {\n                e.dataTransfer.dropEffect = 'move'; // TODO\n                // e.dataTransfer.setDragImage(environment.renderDraggingItem(viewState.selectedItems), 0, 0);\n                actions.startDragging();\n            },\n            onDragOver: function (e) {\n                e.preventDefault(); // Allow drop\n            },\n            draggable: renderFlags.canDrag && !renderFlags.isRenaming,\n            tabIndex: !renderFlags.isRenaming\n                ? renderFlags.isFocused\n                    ? 0\n                    : -1\n                : undefined,\n        };\n    };\n    return ClickItemToExpandInteractionManager;\n}());\nexport { ClickItemToExpandInteractionManager };\n","import { InteractionMode, } from '../types';\nimport { isControlKey } from '../isControlKey';\nvar ClickArrowToExpandInteractionManager = /** @class */ (function () {\n    function ClickArrowToExpandInteractionManager(environment) {\n        this.mode = InteractionMode.ClickItemToExpand;\n        this.environment = environment;\n    }\n    ClickArrowToExpandInteractionManager.prototype.createInteractiveElementProps = function (item, treeId, actions, renderFlags) {\n        var _this = this;\n        return {\n            onClick: function (e) {\n                actions.focusItem();\n                if (e.shiftKey) {\n                    actions.selectUpTo(!e.ctrlKey);\n                }\n                else if (isControlKey(e)) {\n                    if (renderFlags.isSelected) {\n                        actions.unselectItem();\n                    }\n                    else {\n                        actions.addToSelectedItems();\n                    }\n                }\n                else {\n                    actions.selectItem();\n                    if (!item.isFolder ||\n                        _this.environment.canInvokePrimaryActionOnItemContainer) {\n                        actions.primaryAction();\n                    }\n                }\n            },\n            onFocus: function () {\n                actions.focusItem();\n            },\n            onDragStart: function (e) {\n                e.dataTransfer.dropEffect = 'move'; // TODO\n                // e.dataTransfer.setDragImage(environment.renderDraggingItem(viewState.selectedItems), 0, 0);\n                actions.startDragging();\n            },\n            onDragOver: function (e) {\n                e.preventDefault(); // Allow drop\n            },\n            draggable: renderFlags.canDrag && !renderFlags.isRenaming,\n            tabIndex: !renderFlags.isRenaming\n                ? renderFlags.isFocused\n                    ? 0\n                    : -1\n                : undefined,\n        };\n    };\n    return ClickArrowToExpandInteractionManager;\n}());\nexport { ClickArrowToExpandInteractionManager };\n","import { InteractionMode } from '../types';\nimport { DoubleClickItemToExpandInteractionManager } from '../interactionMode/DoubleClickItemToExpandInteractionManager';\nimport { ClickItemToExpandInteractionManager } from '../interactionMode/ClickItemToExpandInteractionManager';\nimport { ClickArrowToExpandInteractionManager } from '../interactionMode/ClickArrowToExpandInteractionManager';\nexport var buildInteractionMode = function (mode, environment) {\n    switch (mode) {\n        case InteractionMode.DoubleClickItemToExpand:\n            return new DoubleClickItemToExpandInteractionManager(environment);\n        case InteractionMode.ClickItemToExpand:\n            return new ClickItemToExpandInteractionManager(environment);\n        case InteractionMode.ClickArrowToExpand:\n            return new ClickArrowToExpandInteractionManager(environment);\n        default:\n            throw Error(\"Unknown interaction mode \".concat(mode));\n    }\n};\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { InteractionMode } from '../types';\nimport { useTreeEnvironment } from './ControlledTreeEnvironment';\nimport { mergeInteractionManagers } from './mergeInteractionManagers';\nimport { buildInteractionMode } from './buildInteractionMode';\nvar InteractionManagerContext = React.createContext(null);\nexport var useInteractionManager = function () {\n    return React.useContext(InteractionManagerContext);\n};\nexport var InteractionManagerProvider = function (_a) {\n    var children = _a.children;\n    var environment = useTreeEnvironment();\n    var defaultInteractionMode = environment.defaultInteractionMode;\n    var interactionManager = useMemo(function () {\n        var _a;\n        if (defaultInteractionMode && typeof defaultInteractionMode !== 'string') {\n            if (defaultInteractionMode.extends) {\n                return mergeInteractionManagers(defaultInteractionMode, buildInteractionMode(defaultInteractionMode.extends, environment));\n            }\n            return defaultInteractionMode;\n        }\n        return buildInteractionMode((_a = defaultInteractionMode) !== null && _a !== void 0 ? _a : InteractionMode.ClickItemToExpand, environment);\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []); // TODO make sure that environment does not need to be refreshed\n    return (React.createElement(InteractionManagerContext.Provider, { value: interactionManager }, children));\n};\n","import { useCallback } from 'react';\nimport { useTreeEnvironment } from './ControlledTreeEnvironment';\nexport var useGetGetParentOfLinearItem = function () {\n    var environment = useTreeEnvironment();\n    return useCallback(function (itemLinearIndex, treeId) {\n        var linearItems = environment.linearItems[treeId];\n        var depth = linearItems[itemLinearIndex].depth;\n        var parentLinearIndex = itemLinearIndex;\n        for (; !!linearItems[parentLinearIndex] &&\n            linearItems[parentLinearIndex].depth !== depth - 1; parentLinearIndex -= 1)\n            ;\n        var parent = linearItems[parentLinearIndex];\n        if (!parent) {\n            parent = { item: environment.trees[treeId].rootItem, depth: 0 };\n            parentLinearIndex = 0;\n        }\n        return { parent: parent, parentLinearIndex: parentLinearIndex };\n    }, [environment.linearItems, environment.trees]);\n};\n","export var computeItemHeight = function (treeId) {\n    var _a;\n    var firstItem = document.querySelector(\"[data-rct-tree=\\\"\".concat(treeId, \"\\\"] [data-rct-item-container=\\\"true\\\"]\"));\n    return (_a = firstItem === null || firstItem === void 0 ? void 0 : firstItem.offsetHeight) !== null && _a !== void 0 ? _a : 5;\n};\nexport var isOutsideOfContainer = function (e, treeBb) {\n    return e.clientX < treeBb.left ||\n        e.clientX > treeBb.right ||\n        e.clientY < treeBb.top ||\n        e.clientY > treeBb.bottom;\n};\n","import { useRef } from 'react';\nexport var useRefCopy = function (value) {\n    var ref = useRef(value);\n    ref.current = value;\n    return ref;\n};\n","import { useCallback } from 'react';\nimport { useRefCopy } from './useRefCopy';\nexport var useStableHandler = function (handler) {\n    var handlerRef = useRefCopy(handler);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    return useCallback((function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return handlerRef.current.apply(handlerRef, args);\n    }), [\n        handlerRef,\n    ]);\n};\n","import { useTreeEnvironment } from './ControlledTreeEnvironment';\nimport { useGetGetParentOfLinearItem } from './useGetParentOfLinearItem';\nimport { isOutsideOfContainer } from './layoutUtils';\nimport { useStableHandler } from '../use-stable-handler';\nvar getHoveringPosition = function (clientY, treeTop, itemHeight, linearItems, treeId, items, canDropOnFolder, canDropOnNonFolder, canReorderItems) {\n    var hoveringPosition = (clientY - treeTop) / itemHeight;\n    var treeLinearItems = linearItems[treeId];\n    var linearIndex = Math.max(0, Math.floor(hoveringPosition));\n    if (linearIndex > treeLinearItems.length - 1) {\n        return {\n            linearIndex: treeLinearItems.length - 1,\n            targetItem: treeLinearItems[treeLinearItems.length - 1].item,\n            offset: 'bottom',\n            targetLinearItem: treeLinearItems[treeLinearItems.length - 1],\n        };\n    }\n    var targetLinearItem = treeLinearItems[linearIndex];\n    var targetItem = items[targetLinearItem.item];\n    var offset;\n    var lineThreshold = !canReorderItems\n        ? 0\n        : ((targetItem === null || targetItem === void 0 ? void 0 : targetItem.isFolder) && canDropOnFolder) || canDropOnNonFolder\n            ? 0.2\n            : 0.5;\n    if (hoveringPosition % 1 < lineThreshold) {\n        offset = 'top';\n    }\n    else if (hoveringPosition % 1 > 1 - lineThreshold) {\n        offset = 'bottom';\n    }\n    return { linearIndex: linearIndex, offset: offset, targetItem: targetItem, targetLinearItem: targetLinearItem };\n};\nvar useIsDescendant = function () {\n    var getParentOfLinearItem = useGetGetParentOfLinearItem();\n    var isDescendant = function (treeId, itemLinearIndex, potentialParents) {\n        var _a = getParentOfLinearItem(itemLinearIndex, treeId), parentLinearIndex = _a.parentLinearIndex, parent = _a.parent;\n        if (potentialParents.find(function (p) { return p.index === parent.item; })) {\n            return true;\n        }\n        if (parent.depth === 0) {\n            return false;\n        }\n        return isDescendant(treeId, parentLinearIndex, potentialParents);\n    };\n    return isDescendant;\n};\nexport var useOnDragOverTreeHandler = function (lastDragCode, setLastDragCode, draggingItems, itemHeight, onDragAtPosition, onPerformDrag) {\n    var _a = useTreeEnvironment(), canDropOnFolder = _a.canDropOnFolder, canDropOnNonFolder = _a.canDropOnNonFolder, canDragAndDrop = _a.canDragAndDrop, linearItems = _a.linearItems, items = _a.items, canReorderItems = _a.canReorderItems, trees = _a.trees;\n    var getParentOfLinearItem = useGetGetParentOfLinearItem();\n    var isDescendant = useIsDescendant();\n    return useStableHandler(function (e, treeId, containerRef) {\n        var _a, _b;\n        if (!draggingItems) {\n            return;\n        }\n        if (!canDragAndDrop) {\n            return;\n        }\n        if (!containerRef.current) {\n            return;\n        }\n        if (e.clientX < 0 || e.clientY < 0) {\n            return; // TODO hotfix\n        }\n        var treeBb = containerRef.current.getBoundingClientRect();\n        var outsideContainer = isOutsideOfContainer(e, treeBb);\n        if (linearItems[treeId].length === 0) {\n            // Empty tree\n            onPerformDrag({\n                targetType: 'root',\n                treeId: treeId,\n                depth: 0,\n                linearIndex: 0,\n                targetItem: trees[treeId].rootItem,\n            });\n            return;\n        }\n        var _c = getHoveringPosition(e.clientY, treeBb.top, itemHeight, linearItems, treeId, items, canDropOnFolder, canDropOnNonFolder, canReorderItems), linearIndex = _c.linearIndex, offset = _c.offset;\n        var nextDragCode = outsideContainer\n            ? 'outside'\n            : \"\".concat(treeId).concat(linearIndex).concat(offset !== null && offset !== void 0 ? offset : '');\n        if (lastDragCode === nextDragCode) {\n            return;\n        }\n        setLastDragCode(nextDragCode);\n        if (outsideContainer) {\n            onDragAtPosition(undefined);\n            return;\n        }\n        if (linearIndex < 0 || linearIndex >= linearItems[treeId].length) {\n            onDragAtPosition(undefined);\n            return;\n        }\n        var targetItem = linearItems[treeId][linearIndex];\n        var redirectTargetToParent = !canReorderItems &&\n            !canDropOnNonFolder &&\n            !items[targetItem.item].isFolder;\n        if (redirectTargetToParent) {\n            var _d = getParentOfLinearItem(linearIndex, treeId), parentLinearIndex = _d.parentLinearIndex, parent_1 = _d.parent;\n            targetItem = parent_1;\n            linearIndex = parentLinearIndex;\n        }\n        if (isDescendant(treeId, linearIndex, draggingItems)) {\n            onDragAtPosition(undefined);\n            return;\n        }\n        var depth = targetItem.depth;\n        var targetItemData = items[targetItem.item];\n        if (!offset && !canDropOnNonFolder && !targetItemData.isFolder) {\n            onDragAtPosition(undefined);\n            return;\n        }\n        if (!offset && !canDropOnFolder && targetItemData.isFolder) {\n            onDragAtPosition(undefined);\n            return;\n        }\n        if (offset && !canReorderItems) {\n            onDragAtPosition(undefined);\n            return;\n        }\n        var parent = getParentOfLinearItem(linearIndex, treeId).parent;\n        if (draggingItems.some(function (draggingItem) { return draggingItem.index === targetItem.item; })) {\n            return;\n        }\n        var newChildIndex = items[parent.item].children.indexOf(targetItem.item) +\n            (offset === 'top' ? 0 : 1);\n        if (offset === 'top' &&\n            depth === ((_b = (_a = linearItems[treeId][linearIndex - 1]) === null || _a === void 0 ? void 0 : _a.depth) !== null && _b !== void 0 ? _b : -1)) {\n            offset = 'bottom';\n            linearIndex -= 1;\n        }\n        var draggingPosition;\n        if (offset) {\n            draggingPosition = {\n                targetType: 'between-items',\n                treeId: treeId,\n                parentItem: parent.item,\n                depth: targetItem.depth,\n                linearIndex: linearIndex + (offset === 'top' ? 0 : 1),\n                // childIndex: linearIndex - parentLinearIndex - 1 + (offset === 'top' ? 0 : 1),\n                // childIndex: environment.items[parent.item].children!.indexOf(targetItem.item) + (offset === 'top' ? 0 : 1),\n                childIndex: newChildIndex,\n                linePosition: offset,\n            };\n        }\n        else {\n            draggingPosition = {\n                targetType: 'item',\n                treeId: treeId,\n                parentItem: parent.item,\n                targetItem: targetItem.item,\n                depth: targetItem.depth,\n                linearIndex: linearIndex,\n            };\n        }\n        onPerformDrag(draggingPosition);\n    });\n};\n","import { useCallback } from 'react';\nimport { useTreeEnvironment } from './ControlledTreeEnvironment';\nexport var useCanDropAt = function () {\n    var environment = useTreeEnvironment();\n    return useCallback(function (draggingPosition, draggingItems) {\n        if (draggingPosition.targetType === 'between-items') {\n            if (!environment.canReorderItems) {\n                return false;\n            }\n        }\n        else if (draggingPosition.targetType === 'root') {\n            if (!environment.canDropOnFolder) {\n                return false;\n            }\n        }\n        else {\n            var resolvedItem = environment.items[draggingPosition.targetItem];\n            if ((!environment.canDropOnFolder && resolvedItem.isFolder) ||\n                (!environment.canDropOnNonFolder && !resolvedItem.isFolder)) {\n                return false;\n            }\n        }\n        if (environment.canDropAt &&\n            (!draggingItems ||\n                !environment.canDropAt(draggingItems, draggingPosition))) {\n            // setDraggingPosition(undefined);\n            return false;\n        }\n        return true;\n    }, [environment]);\n};\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { useCallback } from 'react';\nimport { useGetGetParentOfLinearItem } from './useGetParentOfLinearItem';\nimport { useTreeEnvironment } from './ControlledTreeEnvironment';\nimport { useCanDropAt } from './useCanDropAt';\nexport var useGetViableDragPositions = function () {\n    var environment = useTreeEnvironment();\n    var getParentOfLinearItem = useGetGetParentOfLinearItem();\n    var canDropAt = useCanDropAt();\n    return useCallback(function (treeId, draggingItems) {\n        var linearItems = environment.linearItems[treeId];\n        return linearItems\n            .map(function (_a, linearIndex) {\n            var _b, _c;\n            var item = _a.item, depth = _a.depth;\n            var parent = getParentOfLinearItem(linearIndex, treeId).parent;\n            var childIndex = environment.items[parent.item].children.indexOf(item);\n            var itemPosition = {\n                targetType: 'item',\n                parentItem: parent.item,\n                targetItem: item,\n                linearIndex: linearIndex,\n                depth: depth,\n                treeId: treeId,\n            };\n            var topPosition = {\n                targetType: 'between-items',\n                parentItem: parent.item,\n                linePosition: 'top',\n                childIndex: childIndex,\n                depth: depth,\n                treeId: treeId,\n                linearIndex: linearIndex,\n            };\n            var bottomPosition = {\n                targetType: 'between-items',\n                parentItem: parent.item,\n                linePosition: 'bottom',\n                linearIndex: linearIndex + 1,\n                childIndex: childIndex + 1,\n                depth: depth,\n                treeId: treeId,\n            };\n            var skipTopPosition = depth === ((_c = (_b = linearItems[linearIndex - 1]) === null || _b === void 0 ? void 0 : _b.depth) !== null && _c !== void 0 ? _c : -1);\n            if (skipTopPosition) {\n                return [itemPosition, bottomPosition];\n            }\n            return [topPosition, itemPosition, bottomPosition];\n        })\n            .reduce(function (a, b) { return __spreadArray(__spreadArray([], a, true), b, true); }, [])\n            .filter(function (position) { return canDropAt(position, draggingItems); });\n    }, [\n        canDropAt,\n        environment.items,\n        environment.linearItems,\n        getParentOfLinearItem,\n    ]);\n};\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { useEffect, useRef } from 'react';\nexport var useSideEffect = function (effect, deps, changeOn) {\n    var previousRef = useRef();\n    useEffect(function () {\n        if (!previousRef.current) {\n            previousRef.current = __spreadArray([], changeOn, true);\n            effect();\n        }\n        else {\n            var changed = previousRef.current.some(function (v, i) { return v !== changeOn[i]; });\n            if (changed) {\n                previousRef.current = __spreadArray([], changeOn, true);\n                effect();\n            }\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, __spreadArray(__spreadArray([], deps, true), changeOn, true));\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nexport var buildMapForTrees = function (treeIds, build) {\n    return treeIds\n        .map(function (id) { return [id, build(id)]; })\n        .reduce(function (a, _a) {\n        var _b;\n        var id = _a[0], obj = _a[1];\n        return (__assign(__assign({}, a), (_b = {}, _b[id] = obj, _b)));\n    }, {});\n};\n","import { useCallback, useEffect, useRef } from 'react';\n/**\n * React hook that schedules a callback to be run \"soon\" and will cancel the\n * callback if it is still pending when the component is unmounted.\n *\n * @returns A function that can be used to schedule a deferred callback.\n */\nexport function useCallSoon(dontClean) {\n    if (dontClean === void 0) { dontClean = false; }\n    var handleRef = useRef(new Array());\n    useEffect(function () {\n        if (dontClean) {\n            return function () { };\n        }\n        var handles = handleRef.current;\n        return function () { return handles.forEach(function (handle) { return cancelAnimationFrame(handle); }); };\n    }, [dontClean, handleRef]);\n    return useCallback(function (callback) {\n        var handle = requestAnimationFrame(function () {\n            handleRef.current.splice(handleRef.current.indexOf(handle), 1);\n            callback();\n        });\n        handleRef.current.push(handle);\n    }, [handleRef]);\n}\n","import * as React from 'react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useTreeEnvironment } from './ControlledTreeEnvironment';\nimport { useOnDragOverTreeHandler } from './useOnDragOverTreeHandler';\nimport { useCanDropAt } from './useCanDropAt';\nimport { useGetViableDragPositions } from './useGetViableDragPositions';\nimport { useSideEffect } from '../useSideEffect';\nimport { buildMapForTrees } from '../utils';\nimport { useCallSoon } from '../useCallSoon';\nimport { computeItemHeight } from './layoutUtils';\nimport { useStableHandler } from '../use-stable-handler';\nvar DragAndDropContext = React.createContext(null);\nexport var useDragAndDrop = function () { return React.useContext(DragAndDropContext); };\n// TODO tidy up\nexport var DragAndDropProvider = function (_a) {\n    var children = _a.children;\n    var environment = useTreeEnvironment();\n    var _b = useState(false), isProgrammaticallyDragging = _b[0], setIsProgrammaticallyDragging = _b[1];\n    var _c = useState(4), itemHeight = _c[0], setItemHeight = _c[1];\n    var _d = useState({}), viableDragPositions = _d[0], setViableDragPositions = _d[1];\n    var _e = useState(0), programmaticDragIndex = _e[0], setProgrammaticDragIndex = _e[1];\n    var _f = useState(), draggingItems = _f[0], setDraggingItems = _f[1];\n    var _g = useState(), draggingPosition = _g[0], setDraggingPosition = _g[1];\n    var _h = useState('_nodrag'), dragCode = _h[0], setDragCode = _h[1];\n    var getViableDragPositions = useGetViableDragPositions();\n    var callSoon = useCallSoon();\n    var resetProgrammaticDragIndexForCurrentTree = useCallback(function (viableDragPositions, draggingItems) {\n        var _a;\n        if (environment.activeTreeId &&\n            ((_a = environment.viewState[environment.activeTreeId]) === null || _a === void 0 ? void 0 : _a.focusedItem) &&\n            environment.linearItems &&\n            draggingItems) {\n            var focusItem_1 = environment.viewState[environment.activeTreeId].focusedItem;\n            var treeDragPositions = getViableDragPositions(environment.activeTreeId, draggingItems);\n            var newPos = treeDragPositions.findIndex(function (pos) {\n                if (pos.targetType === 'item') {\n                    return pos.targetItem === focusItem_1;\n                }\n                if (pos.targetType === 'between-items') {\n                    return (environment.items[pos.parentItem].children[pos.childIndex] ===\n                        focusItem_1);\n                }\n                return false;\n            });\n            if (newPos) {\n                setProgrammaticDragIndex(Math.min(newPos + 1, treeDragPositions.length - 1));\n            }\n            else {\n                setProgrammaticDragIndex(0);\n            }\n        }\n        else {\n            setProgrammaticDragIndex(0);\n        }\n    }, [\n        environment.activeTreeId,\n        environment.items,\n        environment.linearItems,\n        environment.viewState,\n        getViableDragPositions,\n    ]);\n    var resetState = useCallback(function () {\n        setIsProgrammaticallyDragging(false);\n        setItemHeight(4);\n        setViableDragPositions({});\n        setProgrammaticDragIndex(0);\n        setDraggingItems(undefined);\n        setDraggingPosition(undefined);\n        setDragCode('_nodrag');\n    }, []);\n    useSideEffect(function () {\n        if (environment.activeTreeId &&\n            environment.linearItems[environment.activeTreeId] &&\n            viableDragPositions[environment.activeTreeId]) {\n            resetProgrammaticDragIndexForCurrentTree(viableDragPositions[environment.activeTreeId], draggingItems);\n        }\n    }, [\n        draggingItems,\n        environment.activeTreeId,\n        environment.linearItems,\n        resetProgrammaticDragIndexForCurrentTree,\n        viableDragPositions,\n    ], [environment.activeTreeId]);\n    useSideEffect(function () {\n        if (isProgrammaticallyDragging && environment.activeTreeId) {\n            setDraggingPosition(viableDragPositions[environment.activeTreeId][programmaticDragIndex]);\n        }\n    }, [\n        programmaticDragIndex,\n        environment.activeTreeId,\n        isProgrammaticallyDragging,\n        viableDragPositions,\n    ], [programmaticDragIndex, environment.activeTreeId]);\n    var canDropAt = useCanDropAt();\n    var performDrag = function (draggingPosition) {\n        var _a;\n        if (draggingItems && !canDropAt(draggingPosition, draggingItems)) {\n            return;\n        }\n        setDraggingPosition(draggingPosition);\n        environment.setActiveTree(draggingPosition.treeId);\n        if (draggingItems && environment.activeTreeId !== draggingPosition.treeId) {\n            // TODO maybe do only if draggingItems are different to selectedItems\n            (_a = environment.onSelectItems) === null || _a === void 0 ? void 0 : _a.call(environment, draggingItems.map(function (item) { return item.index; }), draggingPosition.treeId);\n        }\n    };\n    var onDragOverTreeHandler = useOnDragOverTreeHandler(dragCode, setDragCode, draggingItems, itemHeight, setDraggingPosition, performDrag);\n    var onDropHandler = useStableHandler(function () {\n        if (draggingItems && draggingPosition && environment.onDrop) {\n            environment.onDrop(draggingItems, draggingPosition);\n            callSoon(function () {\n                var _a;\n                (_a = environment.onFocusItem) === null || _a === void 0 ? void 0 : _a.call(environment, draggingItems[0], draggingPosition.treeId);\n                resetState();\n            });\n        }\n    });\n    var onStartDraggingItems = useCallback(function (items, treeId) {\n        var treeViableDragPositions = buildMapForTrees(environment.treeIds, function (treeId) { return getViableDragPositions(treeId, items); });\n        // TODO what if trees have different heights and drag target changes?\n        var height = computeItemHeight(treeId);\n        setItemHeight(height);\n        setDraggingItems(items);\n        setViableDragPositions(treeViableDragPositions);\n        if (environment.activeTreeId) {\n            resetProgrammaticDragIndexForCurrentTree(treeViableDragPositions[environment.activeTreeId], items);\n        }\n    }, [\n        environment.activeTreeId,\n        environment.treeIds,\n        getViableDragPositions,\n        resetProgrammaticDragIndexForCurrentTree,\n    ]);\n    var startProgrammaticDrag = useCallback(function () {\n        var _a, _b, _c;\n        if (!environment.canDragAndDrop) {\n            return;\n        }\n        if (environment.activeTreeId) {\n            var draggingItems_1 = (_b = (_a = environment.viewState[environment.activeTreeId]) === null || _a === void 0 ? void 0 : _a.selectedItems) !== null && _b !== void 0 ? _b : [\n                (_c = environment.viewState[environment.activeTreeId]) === null || _c === void 0 ? void 0 : _c.focusedItem,\n            ];\n            if (draggingItems_1.length === 0 || draggingItems_1[0] === undefined) {\n                return;\n            }\n            var resolvedDraggingItems = draggingItems_1.map(function (id) { return environment.items[id]; });\n            if (environment.canDrag && !environment.canDrag(resolvedDraggingItems)) {\n                return;\n            }\n            onStartDraggingItems(resolvedDraggingItems, environment.activeTreeId);\n            setTimeout(function () {\n                setIsProgrammaticallyDragging(true);\n                // Needs to be done after onStartDraggingItems was called, so that viableDragPositions is populated\n            });\n        }\n    }, [onStartDraggingItems, environment]);\n    var abortProgrammaticDrag = useCallback(function () {\n        resetState();\n    }, [resetState]);\n    var completeProgrammaticDrag = useCallback(function () {\n        onDropHandler();\n        resetState();\n    }, [onDropHandler, resetState]);\n    var programmaticDragUp = useCallback(function () {\n        setProgrammaticDragIndex(function (oldIndex) { return Math.max(0, oldIndex - 1); });\n    }, []);\n    var programmaticDragDown = useCallback(function () {\n        if (environment.activeTreeId) {\n            setProgrammaticDragIndex(function (oldIndex) {\n                return Math.min(viableDragPositions[environment.activeTreeId].length, oldIndex + 1);\n            });\n        }\n    }, [environment.activeTreeId, viableDragPositions]);\n    var dnd = useMemo(function () { return ({\n        onStartDraggingItems: onStartDraggingItems,\n        startProgrammaticDrag: startProgrammaticDrag,\n        abortProgrammaticDrag: abortProgrammaticDrag,\n        completeProgrammaticDrag: completeProgrammaticDrag,\n        programmaticDragUp: programmaticDragUp,\n        programmaticDragDown: programmaticDragDown,\n        draggingItems: draggingItems,\n        draggingPosition: draggingPosition,\n        itemHeight: itemHeight,\n        isProgrammaticallyDragging: isProgrammaticallyDragging,\n        onDragOverTreeHandler: onDragOverTreeHandler,\n        viableDragPositions: viableDragPositions,\n    }); }, [\n        onStartDraggingItems,\n        startProgrammaticDrag,\n        abortProgrammaticDrag,\n        completeProgrammaticDrag,\n        programmaticDragUp,\n        programmaticDragDown,\n        draggingItems,\n        draggingPosition,\n        itemHeight,\n        isProgrammaticallyDragging,\n        onDragOverTreeHandler,\n        viableDragPositions,\n    ]);\n    useEffect(function () {\n        window.addEventListener('dragend', resetState);\n        window.addEventListener('drop', onDropHandler);\n        return function () {\n            window.removeEventListener('dragend', resetState);\n            window.removeEventListener('drop', onDropHandler);\n        };\n    }, [onDropHandler, resetState]);\n    return (React.createElement(DragAndDropContext.Provider, { value: dnd }, children));\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport { useImperativeHandle } from 'react';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useDragAndDrop } from '../controlledEnvironment/DragAndDropProvider';\nexport var useCreatedEnvironmentRef = function (ref, actions) {\n    var environment = useTreeEnvironment();\n    var dnd = useDragAndDrop();\n    useImperativeHandle(ref, function () { return (__assign(__assign(__assign({}, actions), environment), { treeEnvironmentContext: environment, dragAndDropContext: dnd })); });\n};\n","export var waitFor = function (check, intervalMs, timeoutMs) {\n    if (intervalMs === void 0) { intervalMs = 50; }\n    if (timeoutMs === void 0) { timeoutMs = 10000; }\n    return new Promise(function (resolve) {\n        if (check()) {\n            resolve();\n        }\n        var complete;\n        var interval = setInterval(function () {\n            if (check()) {\n                complete();\n            }\n        }, intervalMs);\n        var timeout = setTimeout(function () {\n            complete();\n        }, timeoutMs);\n        complete = function () {\n            clearInterval(interval);\n            clearTimeout(timeout);\n            resolve();\n        };\n    });\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { useCallback, useMemo } from 'react';\nimport { useDragAndDrop } from '../controlledEnvironment/DragAndDropProvider';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useCreatedEnvironmentRef } from './useCreatedEnvironmentRef';\nimport { useRefCopy } from '../useRefCopy';\nimport { waitFor } from '../waitFor';\nvar EnvironmentActionsContext = React.createContext(null);\nexport var useEnvironmentActions = function () {\n    return React.useContext(EnvironmentActionsContext);\n};\nvar recursiveExpand = function (itemId, items, onExpand) { return __awaiter(void 0, void 0, void 0, function () {\n    var _loop_1, _i, _a, childId;\n    var _b, _c, _d;\n    return __generator(this, function (_e) {\n        _loop_1 = function (childId) {\n            waitFor(function () { var _a; return !!((_a = items.current) === null || _a === void 0 ? void 0 : _a[childId]); }).then(function () {\n                var _a;\n                var item = (_a = items.current) === null || _a === void 0 ? void 0 : _a[childId];\n                if (item === null || item === void 0 ? void 0 : item.isFolder) {\n                    onExpand(item);\n                    recursiveExpand(childId, items, onExpand);\n                }\n            });\n        };\n        for (_i = 0, _a = (_d = (_c = (_b = items.current) === null || _b === void 0 ? void 0 : _b[itemId]) === null || _c === void 0 ? void 0 : _c.children) !== null && _d !== void 0 ? _d : []; _i < _a.length; _i++) {\n            childId = _a[_i];\n            _loop_1(childId);\n        }\n        return [2 /*return*/];\n    });\n}); };\nexport var EnvironmentActionsProvider = React.forwardRef(function (props, ref) {\n    var _a = useTreeEnvironment(), onCollapseItem = _a.onCollapseItem, items = _a.items, trees = _a.trees, viewState = _a.viewState, onExpandItem = _a.onExpandItem, onFocusItem = _a.onFocusItem, setActiveTree = _a.setActiveTree, onRenameItem = _a.onRenameItem, onSelectItems = _a.onSelectItems, onPrimaryAction = _a.onPrimaryAction, linearItems = _a.linearItems;\n    var _b = useDragAndDrop(), abortProgrammaticDrag = _b.abortProgrammaticDrag, completeProgrammaticDrag = _b.completeProgrammaticDrag, programmaticDragDown = _b.programmaticDragDown, programmaticDragUp = _b.programmaticDragUp, startProgrammaticDrag = _b.startProgrammaticDrag;\n    var itemsRef = useRefCopy(items);\n    // TODO replace callbacks with stable handlers\n    var collapseItem = useCallback(function (itemId, treeId) {\n        onCollapseItem === null || onCollapseItem === void 0 ? void 0 : onCollapseItem(items[itemId], treeId);\n    }, [items, onCollapseItem]);\n    var expandItem = useCallback(function (itemId, treeId) {\n        onExpandItem === null || onExpandItem === void 0 ? void 0 : onExpandItem(items[itemId], treeId);\n    }, [items, onExpandItem]);\n    var focusItem = useCallback(function (itemId, treeId) {\n        onFocusItem === null || onFocusItem === void 0 ? void 0 : onFocusItem(items[itemId], treeId);\n    }, [items, onFocusItem]);\n    var focusTree = useCallback(function (treeId, autoFocus) {\n        if (autoFocus === void 0) { autoFocus = true; }\n        setActiveTree(treeId, autoFocus);\n    }, [setActiveTree]);\n    var moveFocusDown = useCallback(function (treeId) {\n        var treeLinearItems = linearItems[treeId];\n        var currentFocusIndex = treeLinearItems.findIndex(function (_a) {\n            var _b;\n            var item = _a.item;\n            return item === ((_b = viewState[treeId]) === null || _b === void 0 ? void 0 : _b.focusedItem);\n        });\n        var newIndex = currentFocusIndex !== undefined\n            ? Math.min(treeLinearItems.length - 1, currentFocusIndex + 1)\n            : 0;\n        var newItem = items[treeLinearItems[newIndex].item];\n        onFocusItem === null || onFocusItem === void 0 ? void 0 : onFocusItem(newItem, treeId);\n    }, [items, linearItems, onFocusItem, viewState]);\n    var moveFocusUp = useCallback(function (treeId) {\n        var treeLinearItems = linearItems[treeId];\n        var currentFocusIndex = treeLinearItems.findIndex(function (_a) {\n            var _b;\n            var item = _a.item;\n            return item === ((_b = viewState[treeId]) === null || _b === void 0 ? void 0 : _b.focusedItem);\n        });\n        var newIndex = currentFocusIndex !== undefined\n            ? Math.max(0, currentFocusIndex - 1)\n            : 0;\n        var newItem = items[treeLinearItems[newIndex].item];\n        onFocusItem === null || onFocusItem === void 0 ? void 0 : onFocusItem(newItem, treeId);\n    }, [items, linearItems, onFocusItem, viewState]);\n    var renameItem = useCallback(function (itemId, name, treeId) {\n        onRenameItem === null || onRenameItem === void 0 ? void 0 : onRenameItem(items[itemId], name, treeId);\n    }, [items, onRenameItem]);\n    var selectItems = useCallback(function (itemsIds, treeId) {\n        onSelectItems === null || onSelectItems === void 0 ? void 0 : onSelectItems(itemsIds, treeId);\n    }, [onSelectItems]);\n    var toggleItemExpandedState = useCallback(function (itemId, treeId) {\n        var _a, _b;\n        if ((_b = (_a = viewState[treeId]) === null || _a === void 0 ? void 0 : _a.expandedItems) === null || _b === void 0 ? void 0 : _b.includes(itemId)) {\n            onCollapseItem === null || onCollapseItem === void 0 ? void 0 : onCollapseItem(items[itemId], treeId);\n        }\n        else {\n            onExpandItem === null || onExpandItem === void 0 ? void 0 : onExpandItem(items[itemId], treeId);\n        }\n    }, [items, onCollapseItem, onExpandItem, viewState]);\n    var toggleItemSelectStatus = useCallback(function (itemId, treeId) {\n        var _a, _b, _c, _d, _e;\n        if ((_b = (_a = viewState[treeId]) === null || _a === void 0 ? void 0 : _a.selectedItems) === null || _b === void 0 ? void 0 : _b.includes(itemId)) {\n            onSelectItems === null || onSelectItems === void 0 ? void 0 : onSelectItems((_d = (_c = viewState[treeId].selectedItems) === null || _c === void 0 ? void 0 : _c.filter(function (item) { return item !== itemId; })) !== null && _d !== void 0 ? _d : [], treeId);\n        }\n        else {\n            onSelectItems === null || onSelectItems === void 0 ? void 0 : onSelectItems(__spreadArray(__spreadArray([], ((_e = viewState[treeId].selectedItems) !== null && _e !== void 0 ? _e : []), true), [itemId], false), treeId);\n        }\n    }, [onSelectItems, viewState]);\n    var invokePrimaryAction = useCallback(function (itemId, treeId) {\n        onPrimaryAction === null || onPrimaryAction === void 0 ? void 0 : onPrimaryAction(items[itemId], treeId);\n    }, [items, onPrimaryAction]);\n    var expandAll = useCallback(function (treeId) { return __awaiter(void 0, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, recursiveExpand(trees[treeId].rootItem, itemsRef, function (item) {\n                        return onExpandItem === null || onExpandItem === void 0 ? void 0 : onExpandItem(item, treeId);\n                    })];\n                case 1:\n                    _a.sent();\n                    return [2 /*return*/];\n            }\n        });\n    }); }, [itemsRef, onExpandItem, trees]);\n    var collapseAll = useCallback(function (treeId) {\n        var _a, _b;\n        for (var _i = 0, _c = (_b = (_a = viewState[treeId]) === null || _a === void 0 ? void 0 : _a.expandedItems) !== null && _b !== void 0 ? _b : []; _i < _c.length; _i++) {\n            var itemId = _c[_i];\n            onCollapseItem === null || onCollapseItem === void 0 ? void 0 : onCollapseItem(items[itemId], treeId);\n        }\n    }, [items, onCollapseItem, viewState]);\n    // TODO change environment childs to use actions rather than output events where possible\n    var actions = useMemo(function () { return ({\n        collapseItem: collapseItem,\n        expandItem: expandItem,\n        focusItem: focusItem,\n        focusTree: focusTree,\n        moveFocusDown: moveFocusDown,\n        moveFocusUp: moveFocusUp,\n        renameItem: renameItem,\n        selectItems: selectItems,\n        toggleItemExpandedState: toggleItemExpandedState,\n        toggleItemSelectStatus: toggleItemSelectStatus,\n        invokePrimaryAction: invokePrimaryAction,\n        expandAll: expandAll,\n        collapseAll: collapseAll,\n        abortProgrammaticDrag: abortProgrammaticDrag,\n        completeProgrammaticDrag: completeProgrammaticDrag,\n        moveProgrammaticDragPositionDown: programmaticDragDown,\n        moveProgrammaticDragPositionUp: programmaticDragUp,\n        startProgrammaticDrag: startProgrammaticDrag,\n    }); }, [\n        collapseItem,\n        expandItem,\n        focusItem,\n        focusTree,\n        moveFocusDown,\n        moveFocusUp,\n        renameItem,\n        selectItems,\n        toggleItemExpandedState,\n        toggleItemSelectStatus,\n        invokePrimaryAction,\n        expandAll,\n        collapseAll,\n        abortProgrammaticDrag,\n        completeProgrammaticDrag,\n        programmaticDragDown,\n        programmaticDragUp,\n        startProgrammaticDrag,\n    ]);\n    useCreatedEnvironmentRef(ref, actions);\n    return (React.createElement(EnvironmentActionsContext.Provider, { value: actions }, props.children));\n});\n","export var scrollIntoView = function (element) {\n    if (!element) {\n        return;\n    }\n    if (element.scrollIntoViewIfNeeded) {\n        element.scrollIntoViewIfNeeded();\n    }\n    else {\n        var boundingBox = element.getBoundingClientRect();\n        var isElementInViewport = boundingBox.top >= 0 &&\n            boundingBox.left >= 0 &&\n            boundingBox.bottom <=\n                (window.innerHeight || document.documentElement.clientHeight) &&\n            boundingBox.right <=\n                (window.innerWidth || document.documentElement.clientWidth);\n        if (!isElementInViewport) {\n            element.scrollIntoView();\n        }\n    }\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport React from 'react';\nvar cx = function () {\n    var classNames = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        classNames[_i] = arguments[_i];\n    }\n    return classNames.filter(function (cn) { return !!cn; }).join(' ');\n};\nexport var createDefaultRenderers = function (renderDepthOffset) { return ({\n    renderItemTitle: function (_a) {\n        var title = _a.title, context = _a.context, info = _a.info;\n        if (!info.isSearching || !context.isSearchMatching) {\n            return title;\n        }\n        var startIndex = title.toLowerCase().indexOf(info.search.toLowerCase());\n        return (React.createElement(React.Fragment, null,\n            startIndex > 0 && React.createElement(\"span\", null, title.slice(0, startIndex)),\n            React.createElement(\"span\", { className: \"rct-tree-item-search-highlight\" }, title.slice(startIndex, startIndex + info.search.length)),\n            startIndex + info.search.length < title.length && (React.createElement(\"span\", null, title.slice(startIndex + info.search.length, title.length)))));\n    },\n    renderItemArrow: function (_a) {\n        var item = _a.item, context = _a.context;\n        return (\n        // Icons from https://blueprintjs.com/docs/#icons\n        React.createElement(\"div\", __assign({ className: cx(item.isFolder && 'rct-tree-item-arrow-isFolder', 'rct-tree-item-arrow') }, context.arrowProps), item.isFolder &&\n            (context.isExpanded ? (React.createElement(\"svg\", { version: \"1.1\", xmlns: \"http://www.w3.org/2000/svg\", xmlnsXlink: \"http://www.w3.org/1999/xlink\", x: \"0px\", y: \"0px\", viewBox: \"0 0 16 16\", enableBackground: \"new 0 0 16 16\", xmlSpace: \"preserve\" },\n                React.createElement(\"g\", null,\n                    React.createElement(\"g\", null,\n                        React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\", className: \"rct-tree-item-arrow-path\" }))))) : (React.createElement(\"svg\", { version: \"1.1\", xmlns: \"http://www.w3.org/2000/svg\", xmlnsXlink: \"http://www.w3.org/1999/xlink\", x: \"0px\", y: \"0px\", viewBox: \"0 0 16 16\", enableBackground: \"new 0 0 16 16\", xmlSpace: \"preserve\" },\n                React.createElement(\"g\", null,\n                    React.createElement(\"g\", null,\n                        React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\", className: \"rct-tree-item-arrow-path\" }))))))));\n    },\n    renderItem: function (_a) {\n        var item = _a.item, depth = _a.depth, children = _a.children, title = _a.title, context = _a.context, arrow = _a.arrow;\n        var InteractiveComponent = context.isRenaming ? 'div' : 'button';\n        var type = context.isRenaming ? undefined : 'button';\n        // TODO have only root li component create all the classes\n        return (React.createElement(\"li\", __assign({}, context.itemContainerWithChildrenProps, { className: cx('rct-tree-item-li', item.isFolder && 'rct-tree-item-li-isFolder', context.isSelected && 'rct-tree-item-li-selected', context.isExpanded && 'rct-tree-item-li-expanded', context.isFocused && 'rct-tree-item-li-focused', context.isDraggingOver && 'rct-tree-item-li-dragging-over', context.isSearchMatching && 'rct-tree-item-li-search-match') }),\n            React.createElement(\"div\", __assign({}, context.itemContainerWithoutChildrenProps, { style: { paddingLeft: \"\".concat((depth + 1) * renderDepthOffset, \"px\") }, className: cx('rct-tree-item-title-container', item.isFolder && 'rct-tree-item-title-container-isFolder', context.isSelected && 'rct-tree-item-title-container-selected', context.isExpanded && 'rct-tree-item-title-container-expanded', context.isFocused && 'rct-tree-item-title-container-focused', context.isDraggingOver &&\n                    'rct-tree-item-title-container-dragging-over', context.isSearchMatching &&\n                    'rct-tree-item-title-container-search-match') }),\n                arrow,\n                React.createElement(InteractiveComponent, __assign({ type: type }, context.interactiveElementProps, { className: cx('rct-tree-item-button', item.isFolder && 'rct-tree-item-button-isFolder', context.isSelected && 'rct-tree-item-button-selected', context.isExpanded && 'rct-tree-item-button-expanded', context.isFocused && 'rct-tree-item-button-focused', context.isDraggingOver && 'rct-tree-item-button-dragging-over', context.isSearchMatching && 'rct-tree-item-button-search-match') }), title)),\n            children));\n    },\n    renderRenameInput: function (_a) {\n        var inputProps = _a.inputProps, inputRef = _a.inputRef, submitButtonProps = _a.submitButtonProps, submitButtonRef = _a.submitButtonRef, formProps = _a.formProps;\n        return (React.createElement(\"form\", __assign({}, formProps, { className: \"rct-tree-item-renaming-form\" }),\n            React.createElement(\"input\", __assign({}, inputProps, { ref: inputRef, className: \"rct-tree-item-renaming-input\" })),\n            React.createElement(\"input\", __assign({}, submitButtonProps, { ref: submitButtonRef, type: \"submit\", className: \"rct-tree-item-renaming-submit-button\", value: \"\\uD83D\\uDDF8\" }))));\n    },\n    renderDraggingItem: function () { return React.createElement(\"div\", null); },\n    renderDraggingItemTitle: function () { return React.createElement(\"div\", null); },\n    renderTreeContainer: function (_a) {\n        var children = _a.children, containerProps = _a.containerProps, info = _a.info;\n        return (React.createElement(\"div\", { className: cx('rct-tree-root', info.isFocused && 'rct-tree-root-focus', info.isRenaming && 'rct-tree-root-renaming', info.areItemsSelected && 'rct-tree-root-itemsselected') },\n            React.createElement(\"div\", __assign({}, containerProps, { style: __assign({ minHeight: '30px' }, containerProps.style) }), children)));\n    },\n    renderItemsContainer: function (_a) {\n        var children = _a.children, containerProps = _a.containerProps;\n        return (React.createElement(\"ul\", __assign({}, containerProps, { className: \"rct-tree-items-container\" }), children));\n    },\n    renderDragBetweenLine: function (_a) {\n        var draggingPosition = _a.draggingPosition, lineProps = _a.lineProps;\n        return (React.createElement(\"div\", __assign({}, lineProps, { style: { left: \"\".concat(draggingPosition.depth * renderDepthOffset, \"px\") }, className: cx('rct-tree-drag-between-line', draggingPosition.targetType === 'between-items' &&\n                draggingPosition.linePosition === 'top' &&\n                'rct-tree-drag-between-line-top', draggingPosition.targetType === 'between-items' &&\n                draggingPosition.linePosition === 'bottom' &&\n                'rct-tree-drag-between-line-bottom') })));\n    },\n    renderSearchInput: function (_a) {\n        var inputProps = _a.inputProps;\n        return (React.createElement(\"div\", { className: cx('rct-tree-search-input-container') },\n            React.createElement(\"input\", __assign({}, inputProps, { className: cx('rct-tree-search-input') }))));\n    },\n    renderLiveDescriptorContainer: function (_a) {\n        var tree = _a.tree, children = _a.children;\n        return (React.createElement(\"div\", { id: \"rct-livedescription-\".concat(tree.treeId), style: {\n                clip: 'rect(0 0 0 0)',\n                clipPath: 'inset(50%)',\n                height: '1px',\n                overflow: 'hidden',\n                position: 'absolute',\n                whiteSpace: 'nowrap',\n                width: '1px',\n            } }, children));\n    },\n    renderDepthOffset: renderDepthOffset,\n}); };\n","import { useMemo } from 'react';\nimport { createDefaultRenderers } from './createDefaultRenderers';\nexport var useRenderers = function (_a) {\n    var renderItem = _a.renderItem, renderItemTitle = _a.renderItemTitle, renderItemArrow = _a.renderItemArrow, renderRenameInput = _a.renderRenameInput, renderDraggingItem = _a.renderDraggingItem, renderDraggingItemTitle = _a.renderDraggingItemTitle, renderItemsContainer = _a.renderItemsContainer, renderTreeContainer = _a.renderTreeContainer, renderDragBetweenLine = _a.renderDragBetweenLine, renderSearchInput = _a.renderSearchInput, renderLiveDescriptorContainer = _a.renderLiveDescriptorContainer, renderDepthOffset = _a.renderDepthOffset;\n    var defaultRenderers = useMemo(function () { return createDefaultRenderers(renderDepthOffset !== null && renderDepthOffset !== void 0 ? renderDepthOffset : 10); }, [renderDepthOffset]);\n    var customRenderers = {\n        renderItem: renderItem,\n        renderItemTitle: renderItemTitle,\n        renderItemArrow: renderItemArrow,\n        renderRenameInput: renderRenameInput,\n        renderDraggingItem: renderDraggingItem,\n        renderDraggingItemTitle: renderDraggingItemTitle,\n        renderItemsContainer: renderItemsContainer,\n        renderTreeContainer: renderTreeContainer,\n        renderDragBetweenLine: renderDragBetweenLine,\n        renderSearchInput: renderSearchInput,\n        renderLiveDescriptorContainer: renderLiveDescriptorContainer,\n        renderDepthOffset: renderDepthOffset,\n    };\n    var renderers = Object.entries(defaultRenderers).reduce(function (acc, _a) {\n        var key = _a[0], value = _a[1];\n        var keyMapped = key;\n        if (customRenderers[keyMapped]) {\n            acc[keyMapped] = customRenderers[keyMapped];\n        }\n        else {\n            acc[keyMapped] = value;\n        }\n        return acc;\n    }, {});\n    renderers.renderItem.displayName = 'RenderItem';\n    renderers.renderItemTitle.displayName = 'RenderItemTitle';\n    renderers.renderItemArrow.displayName = 'RenderItemArrow';\n    renderers.renderRenameInput.displayName = 'RenderRenameInput';\n    renderers.renderDraggingItem.displayName = 'RenderDraggingItem';\n    renderers.renderDraggingItemTitle.displayName =\n        'RenderDraggingItemTitle';\n    renderers.renderItemsContainer.displayName = 'RenderItemsContainer';\n    renderers.renderTreeContainer.displayName = 'RenderTreeContainer';\n    renderers.renderDragBetweenLine.displayName =\n        'RenderDragBetweenLine';\n    renderers.renderSearchInput.displayName = 'RenderSearchInput';\n    return renderers;\n};\n","export var getItemsLinearly = function (rootItem, viewState, items, depth) {\n    var _a, _b, _c;\n    if (depth === void 0) { depth = 0; }\n    var itemIds = [];\n    for (var _i = 0, _d = (_b = (_a = items[rootItem]) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : []; _i < _d.length; _i++) {\n        var itemId = _d[_i];\n        var item = items[itemId];\n        itemIds.push({ item: itemId, depth: depth });\n        if (item &&\n            item.isFolder &&\n            !!item.children &&\n            ((_c = viewState.expandedItems) === null || _c === void 0 ? void 0 : _c.includes(itemId))) {\n            itemIds.push.apply(itemIds, getItemsLinearly(itemId, viewState, items, depth + 1));\n        }\n    }\n    return itemIds;\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { scrollIntoView } from '../tree/scrollIntoView';\nimport { useRenderers } from '../renderers/useRenderers';\nimport { buildMapForTrees } from '../utils';\nimport { getItemsLinearly } from '../tree/getItemsLinearly';\nimport { useRefCopy } from '../useRefCopy';\nimport { useStableHandler } from '../use-stable-handler';\nexport var useControlledTreeEnvironmentProps = function (_a) {\n    var onExpandItemProp = _a.onExpandItem, onCollapseProp = _a.onCollapseItem, onDropProp = _a.onDrop, props = __rest(_a, [\"onExpandItem\", \"onCollapseItem\", \"onDrop\"]);\n    var _b = useState({}), trees = _b[0], setTrees = _b[1];\n    var _c = useState({}), linearItems = _c[0], setLinearItems = _c[1];\n    var _d = useState(), activeTreeId = _d[0], setActiveTreeId = _d[1];\n    var viewStateRef = useRefCopy(props.viewState);\n    var treeIds = useMemo(function () { return Object.keys(trees); }, [trees]);\n    var onFocusItem = props.onFocusItem, autoFocus = props.autoFocus, onRegisterTree = props.onRegisterTree, onUnregisterTree = props.onUnregisterTree, items = props.items;\n    var onFocusItemRef = useRefCopy(onFocusItem);\n    var updateLinearItems = useStableHandler(function () {\n        setTimeout(function () {\n            setLinearItems(buildMapForTrees(treeIds, function (treeId) {\n                var _a;\n                return getItemsLinearly(trees[treeId].rootItem, (_a = viewStateRef.current[treeId]) !== null && _a !== void 0 ? _a : {}, items);\n            }));\n        });\n    });\n    useEffect(function () { return updateLinearItems(); }, [items, treeIds, updateLinearItems]);\n    var onFocusItemHandler = useCallback(function (item, treeId) {\n        var _a, _b, _c, _d, _e;\n        var newItem = document.querySelector(\"[data-rct-tree=\\\"\".concat(treeId, \"\\\"] [data-rct-item-id=\\\"\").concat(item.index, \"\\\"]\"));\n        if (autoFocus !== null && autoFocus !== void 0 ? autoFocus : true) {\n            if (((_b = (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.attributes.getNamedItem('data-rct-search-input')) === null || _b === void 0 ? void 0 : _b.value) !== 'true') {\n                // Move DOM focus to item if the current focus is not on the search input\n                (_c = newItem === null || newItem === void 0 ? void 0 : newItem.focus) === null || _c === void 0 ? void 0 : _c.call(newItem);\n            }\n            else {\n                // Otherwise just manually scroll into view\n                scrollIntoView(newItem);\n            }\n        }\n        if (((_d = viewStateRef.current[treeId]) === null || _d === void 0 ? void 0 : _d.focusedItem) === item.index) {\n            return;\n        }\n        (_e = onFocusItemRef.current) === null || _e === void 0 ? void 0 : _e.call(onFocusItemRef, item, treeId);\n    }, [autoFocus, onFocusItemRef, viewStateRef]);\n    var registerTree = useCallback(function (tree) {\n        setTrees(function (trees) {\n            var _a;\n            return (__assign(__assign({}, trees), (_a = {}, _a[tree.treeId] = tree, _a)));\n        });\n        onRegisterTree === null || onRegisterTree === void 0 ? void 0 : onRegisterTree(tree);\n        updateLinearItems();\n    }, [onRegisterTree, updateLinearItems]);\n    var unregisterTree = useCallback(function (treeId) {\n        onUnregisterTree === null || onUnregisterTree === void 0 ? void 0 : onUnregisterTree(trees[treeId]);\n        delete trees[treeId];\n        setTrees(trees);\n    }, [onUnregisterTree, trees]);\n    var onCollapseItem = useCallback(function (item, treeId) {\n        onCollapseProp === null || onCollapseProp === void 0 ? void 0 : onCollapseProp(item, treeId);\n        updateLinearItems();\n    }, [onCollapseProp, updateLinearItems]);\n    var onExpandItem = useCallback(function (item, treeId) {\n        onExpandItemProp === null || onExpandItemProp === void 0 ? void 0 : onExpandItemProp(item, treeId);\n        updateLinearItems();\n    }, [onExpandItemProp, updateLinearItems]);\n    var onDrop = useCallback(function (items, target) {\n        onDropProp === null || onDropProp === void 0 ? void 0 : onDropProp(items, target);\n        updateLinearItems();\n    }, [onDropProp, updateLinearItems]);\n    var focusTree = useCallback(function (treeId) {\n        var _a;\n        var focusItem = document.querySelector(\"[data-rct-tree=\\\"\".concat(treeId, \"\\\"] [data-rct-item-focus=\\\"true\\\"]\"));\n        (_a = focusItem === null || focusItem === void 0 ? void 0 : focusItem.focus) === null || _a === void 0 ? void 0 : _a.call(focusItem);\n    }, []);\n    var setActiveTree = useCallback(function (treeIdOrSetStateFunction, autoFocusTree) {\n        if (autoFocusTree === void 0) { autoFocusTree = true; }\n        var maybeFocusTree = function (treeId) {\n            var _a;\n            if (autoFocusTree &&\n                (autoFocus !== null && autoFocus !== void 0 ? autoFocus : true) &&\n                treeId &&\n                !((_a = document\n                    .querySelector(\"[data-rct-tree=\\\"\".concat(treeId, \"\\\"]\"))) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement))) {\n                focusTree(treeId);\n            }\n        };\n        if (typeof treeIdOrSetStateFunction === 'function') {\n            setActiveTreeId(function (oldValue) {\n                var treeId = treeIdOrSetStateFunction(oldValue);\n                if (treeId !== oldValue) {\n                    maybeFocusTree(treeId);\n                }\n                return treeId;\n            });\n        }\n        else {\n            var treeId = treeIdOrSetStateFunction;\n            setActiveTreeId(treeId);\n            maybeFocusTree(treeId);\n        }\n    }, [autoFocus, focusTree]);\n    var renderers = useRenderers(props);\n    return __assign(__assign(__assign({}, renderers), props), { onFocusItem: onFocusItemHandler, registerTree: registerTree, unregisterTree: unregisterTree, onExpandItem: onExpandItem, onCollapseItem: onCollapseItem, onDrop: onDrop, setActiveTree: setActiveTree, treeIds: treeIds, trees: trees, activeTreeId: activeTreeId, linearItems: linearItems });\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { InteractionManagerProvider } from './InteractionManagerProvider';\nimport { DragAndDropProvider } from './DragAndDropProvider';\nimport { EnvironmentActionsProvider } from '../environmentActions/EnvironmentActionsProvider';\nimport { useControlledTreeEnvironmentProps } from './useControlledTreeEnvironmentProps';\nvar TreeEnvironmentContext = React.createContext(null);\nexport var useTreeEnvironment = function () { return useContext(TreeEnvironmentContext); };\nexport var ControlledTreeEnvironment = React.forwardRef(function (props, ref) {\n    var _a, _b, _c;\n    var environmentContextProps = useControlledTreeEnvironmentProps(props);\n    var viewState = props.viewState;\n    // Make sure that every tree view state has a focused item\n    for (var _i = 0, _d = Object.keys(environmentContextProps.trees); _i < _d.length; _i++) {\n        var treeId = _d[_i];\n        // TODO if the focus item is dragged out of the tree and is not within the expanded items\n        // TODO of that tree, the tree does not show any focus item anymore.\n        // Fix: use linear items to see if focus item is visible, and reset if not. Only refresh that\n        // information when the viewstate changes\n        if (!((_a = viewState[treeId]) === null || _a === void 0 ? void 0 : _a.focusedItem) &&\n            environmentContextProps.trees[treeId]) {\n            viewState[treeId] = __assign(__assign({}, viewState[treeId]), { focusedItem: (_c = (_b = props.items[environmentContextProps.trees[treeId].rootItem]) === null || _b === void 0 ? void 0 : _b.children) === null || _c === void 0 ? void 0 : _c[0] });\n        }\n    }\n    return (React.createElement(TreeEnvironmentContext.Provider, { value: environmentContextProps },\n        React.createElement(InteractionManagerProvider, null,\n            React.createElement(DragAndDropProvider, null,\n                React.createElement(EnvironmentActionsProvider, { ref: ref }, props.children)))));\n});\n","import { useTree } from './Tree';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nexport var useViewState = function () {\n    var _a;\n    var treeId = useTree().treeId;\n    var viewState = useTreeEnvironment().viewState;\n    return (_a = viewState[treeId]) !== null && _a !== void 0 ? _a : {};\n};\n","export var defaultMatcher = function (search, item, itemTitle) {\n    return itemTitle.toLowerCase().includes(search.toLowerCase());\n};\n","import { useTreeEnvironment } from './ControlledTreeEnvironment';\nexport var useLinearItems = function (treeId) {\n    return useTreeEnvironment().linearItems[treeId];\n};\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { useCallback, useRef } from 'react';\nimport { useViewState } from './useViewState';\nimport { useTree } from './Tree';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useLinearItems } from '../controlledEnvironment/useLinearItems';\nvar usePrevious = function (value) {\n    var ref = useRef({\n        target: value,\n        previous: undefined,\n    });\n    if (ref.current.target !== value) {\n        ref.current.previous = ref.current.target;\n        ref.current.target = value;\n    }\n    return ref.current.previous;\n};\nexport var useSelectUpTo = function (startingAt) {\n    var viewState = useViewState();\n    var treeId = useTree().treeId;\n    var linearItems = useLinearItems(treeId);\n    var onSelectItems = useTreeEnvironment().onSelectItems;\n    var focusedItemPrevious = usePrevious(viewState.focusedItem);\n    return useCallback(function (item, overrideOldSelection) {\n        var _a, _b;\n        if (overrideOldSelection === void 0) { overrideOldSelection = false; }\n        var itemIndex = item.index;\n        var selectMergedItems = function (oldSelection, newSelection) {\n            var merged = __spreadArray(__spreadArray([], (overrideOldSelection ? [] : oldSelection), true), newSelection.filter(function (i) { return overrideOldSelection || !oldSelection.includes(i); }), true);\n            onSelectItems === null || onSelectItems === void 0 ? void 0 : onSelectItems(merged, treeId);\n        };\n        if (viewState &&\n            viewState.selectedItems &&\n            viewState.selectedItems.length > 0) {\n            // Depending on whether focusItem() or selectUpTo() was called first, which item was the last focused item depends\n            var lastFocus_1 = viewState.focusedItem === itemIndex\n                ? focusedItemPrevious\n                : viewState.focusedItem;\n            var selectionStart = startingAt === 'last-focus'\n                ? linearItems.findIndex(function (linearItem) { return lastFocus_1 === linearItem.item; })\n                : linearItems.findIndex(function (linearItem) { var _a; return (_a = viewState.selectedItems) === null || _a === void 0 ? void 0 : _a.includes(linearItem.item); });\n            var selectionEnd = linearItems.findIndex(function (linearItem) { return linearItem.item === itemIndex; });\n            if (selectionStart < selectionEnd) {\n                var selection = linearItems\n                    .slice(selectionStart, selectionEnd + 1)\n                    .map(function (_a) {\n                    var item = _a.item;\n                    return item;\n                });\n                selectMergedItems((_a = viewState.selectedItems) !== null && _a !== void 0 ? _a : [], selection);\n            }\n            else {\n                var selection = linearItems\n                    .slice(selectionEnd, selectionStart + 1)\n                    .map(function (_a) {\n                    var item = _a.item;\n                    return item;\n                });\n                selectMergedItems((_b = viewState.selectedItems) !== null && _b !== void 0 ? _b : [], selection);\n            }\n        }\n        else {\n            onSelectItems === null || onSelectItems === void 0 ? void 0 : onSelectItems([itemIndex], treeId);\n        }\n    }, [\n        viewState,\n        onSelectItems,\n        treeId,\n        startingAt,\n        linearItems,\n        focusedItemPrevious,\n    ]);\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { useMemo } from 'react';\nimport { defaultMatcher } from '../search/defaultMatcher';\nimport { useTree } from '../tree/Tree';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useInteractionManager } from '../controlledEnvironment/InteractionManagerProvider';\nimport { useDragAndDrop } from '../controlledEnvironment/DragAndDropProvider';\nimport { useSelectUpTo } from '../tree/useSelectUpTo';\n// TODO restructure file. Everything into one hook file without helper methods, let all props be generated outside (InteractionManager and AccessibilityPropsManager), ...\nexport var useTreeItemRenderContext = function (item) {\n    var _a, _b, _c, _d;\n    var _e = useTree(), treeId = _e.treeId, search = _e.search, renamingItem = _e.renamingItem, setRenamingItem = _e.setRenamingItem;\n    var environment = useTreeEnvironment();\n    var interactionManager = useInteractionManager();\n    var dnd = useDragAndDrop();\n    var selectUpTo = useSelectUpTo('last-focus');\n    var itemTitle = item && environment.getItemTitle(item);\n    var isSearchMatching = useMemo(function () {\n        var _a;\n        return search === null || search.length === 0 || !item || !itemTitle\n            ? false\n            : ((_a = environment.doesSearchMatchItem) !== null && _a !== void 0 ? _a : defaultMatcher)(search, item, itemTitle);\n    }, [search, item, itemTitle, environment.doesSearchMatchItem]);\n    var isSelected = item && ((_b = (_a = environment.viewState[treeId]) === null || _a === void 0 ? void 0 : _a.selectedItems) === null || _b === void 0 ? void 0 : _b.includes(item.index));\n    var isExpanded = item && ((_d = (_c = environment.viewState[treeId]) === null || _c === void 0 ? void 0 : _c.expandedItems) === null || _d === void 0 ? void 0 : _d.includes(item.index));\n    var isRenaming = item && renamingItem === item.index;\n    return useMemo(function () {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n        if (!item) {\n            return undefined;\n        }\n        var viewState = environment.viewState[treeId];\n        var currentlySelectedItems = ((_b = (_a = viewState === null || viewState === void 0 ? void 0 : viewState.selectedItems) === null || _a === void 0 ? void 0 : _a.map(function (item) { return environment.items[item]; })) !== null && _b !== void 0 ? _b : ((viewState === null || viewState === void 0 ? void 0 : viewState.focusedItem)\n            ? [environment.items[viewState === null || viewState === void 0 ? void 0 : viewState.focusedItem]]\n            : [])).filter(function (item) { return !!item; });\n        var isItemPartOfSelectedItems = !!currentlySelectedItems.find(function (selectedItem) { return selectedItem.index === item.index; });\n        var canDragCurrentlySelectedItems = currentlySelectedItems &&\n            ((_d = (_c = environment.canDrag) === null || _c === void 0 ? void 0 : _c.call(environment, currentlySelectedItems)) !== null && _d !== void 0 ? _d : true) &&\n            currentlySelectedItems\n                .map(function (item) { var _a; return (_a = item.canMove) !== null && _a !== void 0 ? _a : true; })\n                .reduce(function (a, b) { return a && b; }, true);\n        var canDragThisItem = ((_f = (_e = environment.canDrag) === null || _e === void 0 ? void 0 : _e.call(environment, [item])) !== null && _f !== void 0 ? _f : true) && ((_g = item.canMove) !== null && _g !== void 0 ? _g : true);\n        var canDrag = environment.canDragAndDrop &&\n            ((isItemPartOfSelectedItems && canDragCurrentlySelectedItems) ||\n                (!isItemPartOfSelectedItems && canDragThisItem));\n        var canDropOn = environment.canDragAndDrop &&\n            !!((_j = (_h = dnd.viableDragPositions) === null || _h === void 0 ? void 0 : _h[treeId]) === null || _j === void 0 ? void 0 : _j.find(function (position) {\n                return position.targetType === 'item' && position.targetItem === item.index;\n            }));\n        var actions = {\n            // TODO disable most actions during rename\n            primaryAction: function () {\n                var _a;\n                (_a = environment.onPrimaryAction) === null || _a === void 0 ? void 0 : _a.call(environment, environment.items[item.index], treeId);\n            },\n            collapseItem: function () {\n                var _a;\n                (_a = environment.onCollapseItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, treeId);\n            },\n            expandItem: function () {\n                var _a;\n                (_a = environment.onExpandItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, treeId);\n            },\n            toggleExpandedState: function () {\n                var _a, _b;\n                if (isExpanded) {\n                    (_a = environment.onCollapseItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, treeId);\n                }\n                else {\n                    (_b = environment.onExpandItem) === null || _b === void 0 ? void 0 : _b.call(environment, item, treeId);\n                }\n            },\n            selectItem: function () {\n                var _a;\n                (_a = environment.onSelectItems) === null || _a === void 0 ? void 0 : _a.call(environment, [item.index], treeId);\n            },\n            addToSelectedItems: function () {\n                var _a, _b;\n                (_a = environment.onSelectItems) === null || _a === void 0 ? void 0 : _a.call(environment, __spreadArray(__spreadArray([], ((_b = viewState === null || viewState === void 0 ? void 0 : viewState.selectedItems) !== null && _b !== void 0 ? _b : []), true), [item.index], false), treeId);\n            },\n            unselectItem: function () {\n                var _a, _b, _c;\n                (_a = environment.onSelectItems) === null || _a === void 0 ? void 0 : _a.call(environment, (_c = (_b = viewState === null || viewState === void 0 ? void 0 : viewState.selectedItems) === null || _b === void 0 ? void 0 : _b.filter(function (id) { return id !== item.index; })) !== null && _c !== void 0 ? _c : [], treeId);\n            },\n            selectUpTo: function (overrideOldSelection) {\n                selectUpTo(item, overrideOldSelection);\n            },\n            startRenamingItem: function () {\n                setRenamingItem(item.index);\n            },\n            focusItem: function () {\n                var _a;\n                (_a = environment.onFocusItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, treeId);\n            },\n            startDragging: function () {\n                var _a, _b;\n                var selectedItems = (_a = viewState === null || viewState === void 0 ? void 0 : viewState.selectedItems) !== null && _a !== void 0 ? _a : [];\n                if (!selectedItems.includes(item.index)) {\n                    selectedItems = [item.index];\n                    (_b = environment.onSelectItems) === null || _b === void 0 ? void 0 : _b.call(environment, selectedItems, treeId);\n                }\n                if (canDrag) {\n                    dnd.onStartDraggingItems(selectedItems.map(function (id) { return environment.items[id]; }), treeId);\n                }\n            },\n        };\n        var renderFlags = {\n            isSelected: isSelected,\n            isExpanded: isExpanded,\n            isFocused: (viewState === null || viewState === void 0 ? void 0 : viewState.focusedItem) === item.index,\n            isRenaming: isRenaming,\n            isDraggingOver: dnd.draggingPosition &&\n                dnd.draggingPosition.targetType === 'item' &&\n                dnd.draggingPosition.targetItem === item.index &&\n                dnd.draggingPosition.treeId === treeId,\n            isDraggingOverParent: false,\n            isSearchMatching: isSearchMatching,\n            canDrag: canDrag,\n            canDropOn: canDropOn,\n        };\n        var interactiveElementProps = __assign(__assign({}, interactionManager.createInteractiveElementProps(item, treeId, actions, renderFlags, viewState)), {\n            'data-rct-item-interactive': true,\n            'data-rct-item-focus': renderFlags.isFocused ? 'true' : 'false',\n            'data-rct-item-id': item.index,\n        });\n        var itemContainerWithoutChildrenProps = __assign({}, {\n            'data-rct-item-container': 'true',\n        });\n        var itemContainerWithChildrenProps = {\n            role: 'treeitem',\n            'aria-selected': renderFlags.isSelected,\n            'aria-expanded': item.isFolder\n                ? renderFlags.isExpanded\n                    ? 'true'\n                    : 'false'\n                : undefined,\n        };\n        var arrowProps = {\n            onClick: function () {\n                if (item.isFolder) {\n                    actions.toggleExpandedState();\n                }\n                actions.selectItem();\n            },\n            onFocus: function () {\n                actions.focusItem();\n            },\n            onDragOver: function (e) {\n                e.preventDefault(); // Allow drop\n            },\n            'aria-hidden': true,\n            tabIndex: -1,\n            // TODO alternative interaction modes\n        };\n        var viewStateFlags = !viewState\n            ? {}\n            : Object.entries(viewState).reduce(function (acc, _a) {\n                var key = _a[0], value = _a[1];\n                acc[key] = Array.isArray(value)\n                    ? value.includes(item.index)\n                    : value === item.index;\n                return acc;\n            }, {});\n        return __assign(__assign(__assign({}, actions), renderFlags), { interactiveElementProps: interactiveElementProps, itemContainerWithChildrenProps: itemContainerWithChildrenProps, itemContainerWithoutChildrenProps: itemContainerWithoutChildrenProps, arrowProps: arrowProps, viewStateFlags: viewStateFlags });\n    }, [\n        item,\n        environment,\n        treeId,\n        dnd,\n        isSelected,\n        isExpanded,\n        isRenaming,\n        isSearchMatching,\n        interactionManager,\n        selectUpTo,\n        setRenamingItem,\n    ]);\n};\n","import { useEffect } from 'react';\nimport { useStableHandler } from './use-stable-handler';\nexport var useHtmlElementEventListener = function (element, type, listener) {\n    var stableListener = useStableHandler(listener);\n    useEffect(function () {\n        if (element) {\n            element.addEventListener(type, stableListener);\n            return function () { return element.removeEventListener(type, stableListener); };\n        }\n        return function () { };\n    }, [element, stableListener, type]);\n};\n","export var defaultKeyboardBindings = {\n    expandSiblings: ['control+*'],\n    moveFocusToFirstItem: ['home'],\n    moveFocusToLastItem: ['end'],\n    primaryAction: ['enter'],\n    renameItem: ['f2'],\n    abortRenameItem: ['escape'],\n    toggleSelectItem: ['control+space'],\n    abortSearch: ['escape', 'enter'],\n    startSearch: [],\n    selectAll: ['control+a'],\n    startProgrammaticDnd: ['control+d'],\n    completeProgrammaticDnd: ['enter'],\n    abortProgrammaticDnd: ['escape'],\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport { useMemo } from 'react';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { defaultKeyboardBindings } from './defaultKeyboardBindings';\nexport var useKeyboardBindings = function () {\n    var environment = useTreeEnvironment();\n    return useMemo(function () {\n        if (environment.keyboardBindings) {\n            return __assign(__assign({}, defaultKeyboardBindings), environment.keyboardBindings);\n        }\n        return defaultKeyboardBindings;\n    }, [environment.keyboardBindings]);\n};\n","import { useMemo, useRef } from 'react';\nimport { useHtmlElementEventListener } from '../useHtmlElementEventListener';\nimport { useKeyboardBindings } from './useKeyboardBindings';\nimport { useCallSoon } from '../useCallSoon';\nvar elementsThatCanTakeText = ['input', 'textarea'];\nexport var useHotkey = function (combinationName, onHit, active, activatableWhileFocusingInput) {\n    if (activatableWhileFocusingInput === void 0) { activatableWhileFocusingInput = false; }\n    var pressedKeys = useRef([]);\n    var keyboardBindings = useKeyboardBindings();\n    var callSoon = useCallSoon();\n    var possibleCombinations = useMemo(function () {\n        return keyboardBindings[combinationName].map(function (combination) {\n            return combination.split('+');\n        });\n    }, [combinationName, keyboardBindings]);\n    useHtmlElementEventListener(document, 'keydown', function (e) {\n        var _a;\n        if (active === false) {\n            return;\n        }\n        if ((elementsThatCanTakeText.includes((_a = e.target.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) ||\n            e.target.isContentEditable) &&\n            !activatableWhileFocusingInput) {\n            // Skip if an input is selected\n            return;\n        }\n        if (!pressedKeys.current.includes(e.key)) {\n            pressedKeys.current.push(e.key);\n            var pressedKeysLowercase_1 = pressedKeys.current.map(function (key) {\n                return key.toLowerCase();\n            });\n            var partialMatch = possibleCombinations\n                .map(function (combination) {\n                return pressedKeysLowercase_1\n                    .map(function (key) { return combination.includes(key.toLowerCase()); })\n                    .reduce(function (a, b) { return a && b; }, true);\n            })\n                .reduce(function (a, b) { return a || b; }, false);\n            if (partialMatch) {\n                if (pressedKeys.current.length > 1 || !/^[a-zA-Z]$/.test(e.key)) {\n                    // Prevent default, but not if this is the first input and a letter (which should trigger a search)\n                    e.preventDefault();\n                }\n            }\n        }\n    });\n    useHtmlElementEventListener(document, 'keyup', function (e) {\n        if (active === false) {\n            return;\n        }\n        var pressedKeysLowercase = pressedKeys.current.map(function (key) {\n            return key.toLowerCase();\n        });\n        var match = possibleCombinations\n            .map(function (combination) {\n            return combination\n                .map(function (key) { return pressedKeysLowercase.includes(key.toLowerCase()); })\n                .reduce(function (a, b) { return a && b; }, true);\n        })\n            .reduce(function (a, b) { return a || b; }, false);\n        if (match) {\n            callSoon(function () { return onHit(e); });\n        }\n        pressedKeys.current = pressedKeys.current.filter(function (key) { return key !== e.key; });\n    });\n};\n","import { useRef, useState, } from 'react';\nimport { useTree } from '../tree/Tree';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useHotkey } from '../hotkeys/useHotkey';\nimport { useSideEffect } from '../useSideEffect';\nimport { useCallSoon } from '../useCallSoon';\nexport var TreeItemRenamingInput = function (props) {\n    var _a = useTree(), renderers = _a.renderers, treeInformation = _a.treeInformation, setRenamingItem = _a.setRenamingItem, treeId = _a.treeId;\n    var environment = useTreeEnvironment();\n    var inputRef = useRef(null);\n    var submitButtonRef = useRef(null);\n    var item = environment.items[props.itemIndex];\n    var _b = useState(environment.getItemTitle(item)), title = _b[0], setTitle = _b[1];\n    var callSoon = useCallSoon(true);\n    var abort = function () {\n        var _a;\n        (_a = environment.onAbortRenamingItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, treeInformation.treeId);\n        setRenamingItem(null);\n        callSoon(function () {\n            environment.setActiveTree(treeId);\n        });\n    };\n    var confirm = function () {\n        var _a;\n        (_a = environment.onRenameItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, title, treeInformation.treeId);\n        setRenamingItem(null);\n        callSoon(function () {\n            environment.setActiveTree(treeId);\n        });\n    };\n    useSideEffect(function () {\n        var _a, _b, _c, _d;\n        environment.setActiveTree(treeId);\n        if ((_a = environment.autoFocus) !== null && _a !== void 0 ? _a : true) {\n            (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.select();\n            (_d = (_c = inputRef.current) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);\n        }\n    }, [environment, treeId], []);\n    useHotkey('abortRenameItem', function () {\n        abort();\n    }, true, true);\n    var inputProps = {\n        value: title,\n        onChange: function (e) {\n            setTitle(e.target.value);\n        },\n        onBlur: function (e) {\n            if (e.relatedTarget !== submitButtonRef.current) {\n                abort();\n            }\n        },\n        'aria-label': 'New item name',\n        tabIndex: 0,\n    };\n    var submitButtonProps = {\n        onClick: function (e) {\n            e.stopPropagation();\n            confirm();\n        },\n    };\n    var formProps = {\n        onSubmit: function (e) {\n            e.preventDefault();\n            confirm();\n        },\n    };\n    return renderers.renderRenameInput({\n        item: item,\n        inputRef: inputRef,\n        submitButtonProps: submitButtonProps,\n        submitButtonRef: submitButtonRef,\n        formProps: formProps,\n        inputProps: inputProps,\n    });\n};\n","import React, { useMemo, useState } from 'react';\nimport { TreeItemChildren } from './TreeItemChildren';\nimport { useViewState } from '../tree/useViewState';\nimport { useTree } from '../tree/Tree';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useTreeItemRenderContext } from './useTreeItemRenderContext';\nimport { TreeItemRenamingInput } from './TreeItemRenamingInput';\nexport var TreeItem = function (props) {\n    var _a, _b;\n    var _c = useState(false), hasBeenRequested = _c[0], setHasBeenRequested = _c[1];\n    var _d = useTree(), renderers = _d.renderers, treeInformation = _d.treeInformation, renamingItem = _d.renamingItem;\n    var environment = useTreeEnvironment();\n    var viewState = useViewState();\n    var item = environment.items[props.itemIndex];\n    var isExpanded = useMemo(function () { var _a; return (_a = viewState.expandedItems) === null || _a === void 0 ? void 0 : _a.includes(props.itemIndex); }, [props.itemIndex, viewState.expandedItems]);\n    var renderContext = useTreeItemRenderContext(item);\n    if (item === undefined || renderContext === undefined) {\n        if (!hasBeenRequested) {\n            setHasBeenRequested(true);\n            (_a = environment.onMissingItems) === null || _a === void 0 ? void 0 : _a.call(environment, [props.itemIndex]);\n        }\n        return null;\n    }\n    var children = item.isFolder && isExpanded && item.children && (React.createElement(TreeItemChildren, { depth: props.depth + 1, parentId: props.itemIndex }, item.children));\n    var title = environment.getItemTitle(item);\n    var titleComponent = renamingItem === props.itemIndex ? (React.createElement(TreeItemRenamingInput, { itemIndex: props.itemIndex })) : (renderers.renderItemTitle({\n        info: treeInformation,\n        context: renderContext,\n        title: title,\n        item: item,\n    }));\n    var arrowComponent = renderers.renderItemArrow({\n        info: treeInformation,\n        context: renderContext,\n        item: environment.items[props.itemIndex],\n    });\n    return ((_b = renderers.renderItem({\n        item: environment.items[props.itemIndex],\n        depth: props.depth,\n        title: titleComponent,\n        arrow: arrowComponent,\n        context: renderContext,\n        info: treeInformation,\n        children: children,\n    })) !== null && _b !== void 0 ? _b : null); // Type to use AllTreeRenderProps\n};\n","import React from 'react';\nimport { TreeItem } from './TreeItem';\nimport { useTree } from '../tree/Tree';\nexport var TreeItemChildren = function (props) {\n    var _a = useTree(), renderers = _a.renderers, treeInformation = _a.treeInformation;\n    var childElements = [];\n    for (var _i = 0, _b = props.children; _i < _b.length; _i++) {\n        var child = _b[_i];\n        childElements.push(React.createElement(TreeItem, { key: child, itemIndex: child, depth: props.depth }));\n    }\n    if (childElements.length === 0) {\n        return null;\n    }\n    var containerProps = {\n        role: props.depth !== 0 ? 'group' : undefined,\n    };\n    return renderers.renderItemsContainer({\n        children: childElements,\n        info: treeInformation,\n        containerProps: containerProps,\n    });\n};\n","import * as React from 'react';\nimport { useTree } from './Tree';\nimport { useDragAndDrop } from '../controlledEnvironment/DragAndDropProvider';\nexport var DragBetweenLine = function (_a) {\n    var _b;\n    var treeId = _a.treeId;\n    var _c = useDragAndDrop(), draggingPosition = _c.draggingPosition, itemHeight = _c.itemHeight;\n    var renderers = useTree().renderers;\n    var shouldDisplay = draggingPosition &&\n        draggingPosition.targetType === 'between-items' &&\n        draggingPosition.treeId === treeId;\n    if (!shouldDisplay) {\n        return null;\n    }\n    var lineProps = {\n        onDragOver: function (e) { return e.preventDefault(); }, // Allow dropping\n    };\n    return (React.createElement(\"div\", { style: {\n            position: 'absolute',\n            left: '0',\n            right: '0',\n            top: \"\".concat(((_b = draggingPosition === null || draggingPosition === void 0 ? void 0 : draggingPosition.linearIndex) !== null && _b !== void 0 ? _b : 0) * itemHeight, \"px\"),\n        } }, renderers.renderDragBetweenLine({\n        draggingPosition: draggingPosition,\n        lineProps: lineProps,\n    })));\n};\n","import { useRef, useState } from 'react';\nimport { useHtmlElementEventListener } from '../useHtmlElementEventListener';\nimport { useCallSoon } from '../useCallSoon';\nexport var useFocusWithin = function (element, onFocusIn, onFocusOut) {\n    var _a = useState(false), focusWithin = _a[0], setFocusWithin = _a[1];\n    var isLoosingFocusFlag = useRef(false);\n    var callSoon = useCallSoon();\n    useHtmlElementEventListener(element, 'focusin', function () {\n        if (!focusWithin) {\n            setFocusWithin(true);\n            onFocusIn === null || onFocusIn === void 0 ? void 0 : onFocusIn();\n        }\n        if (isLoosingFocusFlag.current) {\n            isLoosingFocusFlag.current = false;\n        }\n    });\n    useHtmlElementEventListener(element, 'focusout', function () {\n        isLoosingFocusFlag.current = true;\n        callSoon(function () {\n            if (isLoosingFocusFlag.current &&\n                !(element === null || element === void 0 ? void 0 : element.contains(document.activeElement))) {\n                onFocusOut === null || onFocusOut === void 0 ? void 0 : onFocusOut();\n                isLoosingFocusFlag.current = false;\n                setFocusWithin(false);\n            }\n        });\n    });\n    return focusWithin;\n};\n","import { useHtmlElementEventListener } from '../useHtmlElementEventListener';\nexport var useKey = function (key, onHit, active) {\n    useHtmlElementEventListener(document, 'keydown', function (e) {\n        if (!active) {\n            return;\n        }\n        if (active && key.toLowerCase() === e.key.toLowerCase()) {\n            onHit(e);\n        }\n    });\n};\n","import { useViewState } from './useViewState';\nimport { useTree } from './Tree';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useLinearItems } from '../controlledEnvironment/useLinearItems';\nimport { useStableHandler } from '../use-stable-handler';\nexport var useMoveFocusToIndex = function () {\n    var treeId = useTree().treeId;\n    var _a = useTreeEnvironment(), onFocusItem = _a.onFocusItem, items = _a.items;\n    var linearItems = useLinearItems(treeId);\n    var viewState = useViewState();\n    return useStableHandler(function (computeNewIndex) {\n        var _a;\n        var currentIndex = (_a = linearItems.findIndex(function (item) { return item.item === viewState.focusedItem; })) !== null && _a !== void 0 ? _a : 0;\n        var newIndex = computeNewIndex(currentIndex, linearItems);\n        var newIndexBounded = Math.max(0, Math.min(linearItems.length - 1, newIndex));\n        var newFocusItem = items[linearItems[newIndexBounded].item];\n        onFocusItem === null || onFocusItem === void 0 ? void 0 : onFocusItem(newFocusItem, treeId);\n        return newFocusItem;\n    });\n};\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { useKey } from '../hotkeys/useKey';\nimport { useHotkey } from '../hotkeys/useHotkey';\nimport { useMoveFocusToIndex } from './useMoveFocusToIndex';\nimport { useViewState } from './useViewState';\nimport { useTree } from './Tree';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useDragAndDrop } from '../controlledEnvironment/DragAndDropProvider';\nimport { useSelectUpTo } from './useSelectUpTo';\nimport { useLinearItems } from '../controlledEnvironment/useLinearItems';\nexport var useTreeKeyboardBindings = function () {\n    var _a;\n    var environment = useTreeEnvironment();\n    var _b = useTree(), treeId = _b.treeId, setRenamingItem = _b.setRenamingItem, setSearch = _b.setSearch, renamingItem = _b.renamingItem;\n    var linearItems = useLinearItems(treeId);\n    var dnd = useDragAndDrop();\n    var viewState = useViewState();\n    var moveFocusToIndex = useMoveFocusToIndex();\n    var selectUpTo = useSelectUpTo('first-selected');\n    var isActiveTree = environment.activeTreeId === treeId;\n    var isRenaming = !!renamingItem;\n    useKey('arrowdown', function (e) {\n        e.preventDefault();\n        if (dnd.isProgrammaticallyDragging) {\n            dnd.programmaticDragDown();\n        }\n        else {\n            var newFocusItem = moveFocusToIndex(function (currentIndex) { return currentIndex + 1; });\n            if (e.shiftKey) {\n                selectUpTo(newFocusItem);\n            }\n        }\n    }, isActiveTree && !isRenaming);\n    useKey('arrowup', function (e) {\n        e.preventDefault();\n        if (dnd.isProgrammaticallyDragging) {\n            dnd.programmaticDragUp();\n        }\n        else {\n            var newFocusItem = moveFocusToIndex(function (currentIndex) { return currentIndex - 1; });\n            if (e.shiftKey) {\n                selectUpTo(newFocusItem);\n            }\n        }\n    }, isActiveTree && !isRenaming);\n    useHotkey('moveFocusToFirstItem', function (e) {\n        e.preventDefault();\n        moveFocusToIndex(function () { return 0; });\n    }, isActiveTree && !dnd.isProgrammaticallyDragging && !isRenaming);\n    useHotkey('moveFocusToLastItem', function (e) {\n        e.preventDefault();\n        moveFocusToIndex(function (currentIndex, linearItems) { return linearItems.length - 1; });\n    }, isActiveTree && !dnd.isProgrammaticallyDragging && !isRenaming);\n    useKey('arrowright', function (e) {\n        e.preventDefault();\n        moveFocusToIndex(function (currentIndex, linearItems) {\n            var _a, _b;\n            var item = environment.items[linearItems[currentIndex].item];\n            if (item.isFolder) {\n                if ((_a = viewState.expandedItems) === null || _a === void 0 ? void 0 : _a.includes(item.index)) {\n                    return currentIndex + 1;\n                }\n                (_b = environment.onExpandItem) === null || _b === void 0 ? void 0 : _b.call(environment, item, treeId);\n            }\n            return currentIndex;\n        });\n    }, isActiveTree && !dnd.isProgrammaticallyDragging && !isRenaming);\n    useKey('arrowleft', function (e) {\n        e.preventDefault();\n        moveFocusToIndex(function (currentIndex, linearItems) {\n            var _a, _b;\n            var item = environment.items[linearItems[currentIndex].item];\n            var itemDepth = linearItems[currentIndex].depth;\n            if (item.isFolder && ((_a = viewState.expandedItems) === null || _a === void 0 ? void 0 : _a.includes(item.index))) {\n                (_b = environment.onCollapseItem) === null || _b === void 0 ? void 0 : _b.call(environment, item, treeId);\n            }\n            else if (itemDepth > 0) {\n                var parentIndex = currentIndex;\n                for (parentIndex; linearItems[parentIndex].depth !== itemDepth - 1; parentIndex -= 1)\n                    ;\n                return parentIndex;\n            }\n            return currentIndex;\n        });\n    }, isActiveTree && !dnd.isProgrammaticallyDragging && !isRenaming);\n    useHotkey('primaryAction', function (e) {\n        var _a, _b;\n        e.preventDefault();\n        if (viewState.focusedItem !== undefined) {\n            (_a = environment.onSelectItems) === null || _a === void 0 ? void 0 : _a.call(environment, [viewState.focusedItem], treeId);\n            (_b = environment.onPrimaryAction) === null || _b === void 0 ? void 0 : _b.call(environment, environment.items[viewState.focusedItem], treeId);\n        }\n    }, isActiveTree && !dnd.isProgrammaticallyDragging && !isRenaming);\n    useHotkey('toggleSelectItem', function (e) {\n        var _a, _b, _c;\n        e.preventDefault();\n        if (viewState.focusedItem !== undefined) {\n            if (viewState.selectedItems &&\n                viewState.selectedItems.includes(viewState.focusedItem)) {\n                (_a = environment.onSelectItems) === null || _a === void 0 ? void 0 : _a.call(environment, viewState.selectedItems.filter(function (item) { return item !== viewState.focusedItem; }), treeId);\n            }\n            else {\n                (_b = environment.onSelectItems) === null || _b === void 0 ? void 0 : _b.call(environment, __spreadArray(__spreadArray([], ((_c = viewState.selectedItems) !== null && _c !== void 0 ? _c : []), true), [viewState.focusedItem], false), treeId);\n            }\n        }\n    }, isActiveTree && !dnd.isProgrammaticallyDragging && !isRenaming);\n    useHotkey('selectAll', function (e) {\n        var _a;\n        e.preventDefault();\n        (_a = environment.onSelectItems) === null || _a === void 0 ? void 0 : _a.call(environment, linearItems.map(function (_a) {\n            var item = _a.item;\n            return item;\n        }), treeId);\n    }, isActiveTree && !dnd.isProgrammaticallyDragging && !isRenaming);\n    useHotkey('renameItem', function (e) {\n        var _a;\n        if (viewState.focusedItem !== undefined) {\n            e.preventDefault();\n            var item = environment.items[viewState.focusedItem];\n            (_a = environment.onStartRenamingItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, treeId);\n            setRenamingItem(item.index);\n        }\n    }, isActiveTree && ((_a = environment.canRename) !== null && _a !== void 0 ? _a : true) && !isRenaming);\n    useHotkey('startSearch', function (e) {\n        var _a, _b;\n        e.preventDefault();\n        setSearch('');\n        (_b = (_a = document.querySelector('[data-rct-search-input=\"true\"]')) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\n    }, isActiveTree && !dnd.isProgrammaticallyDragging && !isRenaming);\n    useHotkey('startProgrammaticDnd', function (e) {\n        e.preventDefault();\n        dnd.startProgrammaticDrag();\n    }, isActiveTree && !isRenaming);\n    useHotkey('completeProgrammaticDnd', function (e) {\n        e.preventDefault();\n        dnd.completeProgrammaticDrag();\n    }, isActiveTree && dnd.isProgrammaticallyDragging && !isRenaming);\n    useHotkey('abortProgrammaticDnd', function (e) {\n        e.preventDefault();\n        dnd.abortProgrammaticDrag();\n    }, isActiveTree && dnd.isProgrammaticallyDragging && !isRenaming);\n};\n","import { useTree } from '../tree/Tree';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { defaultMatcher } from './defaultMatcher';\nimport { useSideEffect } from '../useSideEffect';\nimport { useLinearItems } from '../controlledEnvironment/useLinearItems';\nimport { useCallSoon } from '../useCallSoon';\nexport var useSearchMatchFocus = function () {\n    var _a = useTreeEnvironment(), doesSearchMatchItem = _a.doesSearchMatchItem, items = _a.items, getItemTitle = _a.getItemTitle, onFocusItem = _a.onFocusItem;\n    var _b = useTree(), search = _b.search, treeId = _b.treeId;\n    var linearItems = useLinearItems(treeId);\n    var callSoon = useCallSoon();\n    useSideEffect(function () {\n        if (search && search.length > 0) {\n            callSoon(function () {\n                var focusItem = linearItems.find(function (_a) {\n                    var item = _a.item;\n                    return (doesSearchMatchItem !== null && doesSearchMatchItem !== void 0 ? doesSearchMatchItem : defaultMatcher)(search, items[item], getItemTitle(items[item]));\n                });\n                if (focusItem) {\n                    onFocusItem === null || onFocusItem === void 0 ? void 0 : onFocusItem(items[focusItem.item], treeId);\n                }\n            });\n        }\n    }, [\n        doesSearchMatchItem,\n        getItemTitle,\n        linearItems,\n        items,\n        onFocusItem,\n        search,\n        treeId,\n        callSoon,\n    ], [search]);\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport { useHtmlElementEventListener } from '../useHtmlElementEventListener';\nimport { useHotkey } from '../hotkeys/useHotkey';\nimport { useTree } from '../tree/Tree';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useSearchMatchFocus } from './useSearchMatchFocus';\nimport { useViewState } from '../tree/useViewState';\nimport { useCallSoon } from '../useCallSoon';\nexport var SearchInput = function (_a) {\n    var _b;\n    var containerRef = _a.containerRef;\n    var _c = useTree(), search = _c.search, setSearch = _c.setSearch, treeId = _c.treeId, renderers = _c.renderers, renamingItem = _c.renamingItem;\n    var environment = useTreeEnvironment();\n    useViewState();\n    var isActiveTree = environment.activeTreeId === treeId;\n    var callSoon = useCallSoon();\n    useSearchMatchFocus();\n    var clearSearch = function () {\n        var _a, _b;\n        setSearch(null);\n        if ((_a = environment.autoFocus) !== null && _a !== void 0 ? _a : true) {\n            // Refocus item in tree\n            // TODO move logic as reusable method into tree or tree environment\n            var focusItem = document.querySelector(\"[data-rct-tree=\\\"\".concat(treeId, \"\\\"] [data-rct-item-focus=\\\"true\\\"]\"));\n            (_b = focusItem === null || focusItem === void 0 ? void 0 : focusItem.focus) === null || _b === void 0 ? void 0 : _b.call(focusItem);\n        }\n    };\n    useHotkey('abortSearch', function () {\n        // Without the callSoon, hitting enter to abort\n        // and then moving focus weirdly moves the selected item along\n        // with the focused item.\n        callSoon(function () {\n            clearSearch();\n        });\n    }, isActiveTree && search !== null, true);\n    useHtmlElementEventListener(containerRef, 'keydown', function (e) {\n        var _a, _b;\n        var unicode = e.key.charCodeAt(0);\n        if (((_a = environment.canSearch) !== null && _a !== void 0 ? _a : true) &&\n            ((_b = environment.canSearchByStartingTyping) !== null && _b !== void 0 ? _b : true) &&\n            isActiveTree &&\n            search === null &&\n            !renamingItem &&\n            !e.ctrlKey &&\n            !e.shiftKey &&\n            !e.altKey &&\n            !e.metaKey &&\n            ((unicode >= 48 && unicode <= 57) || // number\n                // (unicode >= 65 && unicode <= 90) || // uppercase letter\n                (unicode >= 97 && unicode <= 122)) // lowercase letter\n        ) {\n            setSearch('');\n        }\n    });\n    if (!((_b = environment.canSearch) !== null && _b !== void 0 ? _b : true) || search === null) {\n        return null;\n    }\n    return renderers.renderSearchInput({\n        inputProps: __assign({ value: search, onChange: function (e) { return setSearch(e.target.value); }, onBlur: function () {\n                clearSearch();\n            }, ref: function (el) {\n                var _a;\n                (_a = el === null || el === void 0 ? void 0 : el.focus) === null || _a === void 0 ? void 0 : _a.call(el);\n            }, 'aria-label': 'Search for items' }, {\n            'data-rct-search-input': 'true',\n        }),\n    });\n};\n","export var defaultLiveDescriptors = {\n    introduction: \"\\n    <p>Accessibility guide for tree {treeLabel}.</p>\\n    <p>\\n      Navigate the tree with the arrow keys. Common tree hotkeys apply. Further keybindings are available:\\n    </p>\\n    <ul>\\n      <li>{keybinding:primaryAction} to execute primary action on focused item</li>\\n      <li>{keybinding:renameItem} to start renaming the focused item</li>\\n      <li>{keybinding:abortRenameItem} to abort renaming an item</li>\\n      <li>{keybinding:startProgrammaticDnd} to start dragging selected items</li>\\n    </ul>\\n  \",\n    renamingItem: \"\\n    <p>Renaming the item {renamingItem}.</p>\\n    <p>Use the keybinding {keybinding:abortRenameItem} to abort renaming.</p>\\n  \",\n    searching: \"\\n    <p>Searching</p>\\n  \",\n    programmaticallyDragging: \"\\n    <p>Dragging items {dragItems}.</p>\\n    <p>Press the arrow keys to move the drag target.</p>\\n    <p>Press {keybinding:completeProgrammaticDnd} to drop or {keybinding:abortProgrammaticDnd} to abort.</p>\\n  \",\n    programmaticallyDraggingTarget: \"\\n    <p>Drop target is {dropTarget}.</p>\\n  \",\n};\n","export var resolveLiveDescriptor = function (descriptor, environment, dnd, tree, keyboardBindings) {\n    var getItemTitle = function (index) {\n        return environment.getItemTitle(environment.items[index]);\n    };\n    return descriptor.replace(/({[^\\s}]+)}/g, function (variableNameWithBrackets) {\n        var _a, _b, _c;\n        var variableName = variableNameWithBrackets.slice(1, -1);\n        switch (variableName) {\n            case 'treeLabel':\n                return (_a = tree.treeLabel) !== null && _a !== void 0 ? _a : '';\n            case 'renamingItem':\n                return tree.renamingItem ? getItemTitle(tree.renamingItem) : 'None';\n            case 'dragItems':\n                return ((_c = (_b = dnd.draggingItems) === null || _b === void 0 ? void 0 : _b.map(function (item) { return environment.getItemTitle(item); }).join(', ')) !== null && _c !== void 0 ? _c : 'None');\n            case 'dropTarget': {\n                if (!dnd.draggingPosition) {\n                    return 'None';\n                }\n                if (dnd.draggingPosition.targetType === 'item' ||\n                    dnd.draggingPosition.targetType === 'root') {\n                    return \"within \".concat(getItemTitle(dnd.draggingPosition.targetItem));\n                }\n                var parentItem = environment.items[dnd.draggingPosition.parentItem];\n                var parentTitle = environment.getItemTitle(parentItem);\n                if (dnd.draggingPosition.childIndex === 0) {\n                    return \"within \".concat(parentTitle, \" at the start\");\n                }\n                return \"within \".concat(parentTitle, \" after \").concat(getItemTitle(parentItem.children[dnd.draggingPosition.childIndex - 1]));\n            }\n            default:\n                if (variableName.startsWith('keybinding:')) {\n                    return keyboardBindings[variableName.slice(11)][0];\n                }\n                throw Error(\"Unknown live descriptor variable {\".concat(variableName, \"}\"));\n        }\n    });\n};\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { defaultLiveDescriptors } from './defaultLiveDescriptors';\nimport { useTree } from './Tree';\nimport { useDragAndDrop } from '../controlledEnvironment/DragAndDropProvider';\nimport { resolveLiveDescriptor } from './resolveLiveDescriptor';\nimport { useKeyboardBindings } from '../hotkeys/useKeyboardBindings';\nvar LiveWrapper = function (_a) {\n    var children = _a.children, live = _a.live;\n    return React.createElement(\"div\", { \"aria-live\": live, dangerouslySetInnerHTML: { __html: children } });\n};\nexport var LiveDescription = function () {\n    var env = useTreeEnvironment();\n    var tree = useTree();\n    var dnd = useDragAndDrop();\n    var keys = useKeyboardBindings();\n    var descriptors = useMemo(function () { var _a; return (_a = env.liveDescriptors) !== null && _a !== void 0 ? _a : defaultLiveDescriptors; }, [env.liveDescriptors]);\n    var MainWrapper = tree.renderers.renderLiveDescriptorContainer;\n    if (tree.treeInformation.isRenaming) {\n        return (React.createElement(MainWrapper, { tree: tree },\n            React.createElement(LiveWrapper, { live: \"polite\" }, resolveLiveDescriptor(descriptors.renamingItem, env, dnd, tree, keys))));\n    }\n    if (tree.treeInformation.isSearching) {\n        return (React.createElement(MainWrapper, { tree: tree },\n            React.createElement(LiveWrapper, { live: \"polite\" }, resolveLiveDescriptor(descriptors.searching, env, dnd, tree, keys))));\n    }\n    if (tree.treeInformation.isProgrammaticallyDragging) {\n        return (React.createElement(MainWrapper, { tree: tree },\n            React.createElement(LiveWrapper, { live: \"polite\" }, resolveLiveDescriptor(descriptors.programmaticallyDragging, env, dnd, tree, keys)),\n            React.createElement(LiveWrapper, { live: \"assertive\" }, resolveLiveDescriptor(descriptors.programmaticallyDraggingTarget, env, dnd, tree, keys))));\n    }\n    return (React.createElement(MainWrapper, { tree: tree },\n        React.createElement(LiveWrapper, { live: \"off\" }, resolveLiveDescriptor(descriptors.introduction, env, dnd, tree, keys))));\n};\n","import * as React from 'react';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { LiveDescription } from './LiveDescription';\nexport var MaybeLiveDescription = function () {\n    var _a;\n    var env = useTreeEnvironment();\n    if (!((_a = env.showLiveDescription) !== null && _a !== void 0 ? _a : true)) {\n        return null;\n    }\n    return React.createElement(LiveDescription, null);\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport { TreeItemChildren } from '../treeItem/TreeItemChildren';\nimport { DragBetweenLine } from './DragBetweenLine';\nimport { useFocusWithin } from './useFocusWithin';\nimport { useTreeKeyboardBindings } from './useTreeKeyboardBindings';\nimport { SearchInput } from '../search/SearchInput';\nimport { useTree } from './Tree';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useDragAndDrop } from '../controlledEnvironment/DragAndDropProvider';\nimport { MaybeLiveDescription } from './MaybeLiveDescription';\nexport var TreeManager = function () {\n    var _a = useTree(), treeId = _a.treeId, rootItem = _a.rootItem, renderers = _a.renderers, treeInformation = _a.treeInformation;\n    var environment = useTreeEnvironment();\n    var containerRef = useRef();\n    var dnd = useDragAndDrop();\n    useTreeKeyboardBindings();\n    useFocusWithin(containerRef.current, function () {\n        environment.setActiveTree(treeId);\n    }, function () {\n        environment.setActiveTree(function (oldTreeId) {\n            return oldTreeId === treeId ? undefined : oldTreeId;\n        });\n    });\n    var rootChildren = environment.items[rootItem].children;\n    var treeChildren = (React.createElement(React.Fragment, null,\n        React.createElement(MaybeLiveDescription, null),\n        React.createElement(TreeItemChildren, { depth: 0, parentId: treeId }, rootChildren !== null && rootChildren !== void 0 ? rootChildren : []),\n        React.createElement(DragBetweenLine, { treeId: treeId }),\n        React.createElement(SearchInput, { containerRef: containerRef.current })));\n    var containerProps = __assign({ onDragOver: function (e) {\n            e.preventDefault(); // Allow drop. Also implicitly set by items, but needed here as well for dropping on empty space\n            dnd.onDragOverTreeHandler(e, treeId, containerRef);\n        }, onMouseDown: function () { return dnd.abortProgrammaticDrag(); }, ref: containerRef, style: { position: 'relative' }, role: 'tree', 'aria-label': !treeInformation.treeLabelledBy\n            ? treeInformation.treeLabel\n            : undefined, 'aria-labelledby': treeInformation.treeLabelledBy }, {\n        'data-rct-tree': treeId,\n    });\n    return renderers.renderTreeContainer({\n        children: treeChildren,\n        info: treeInformation,\n        containerProps: containerProps,\n    });\n};\n","import { useMemo } from 'react';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useDragAndDrop } from '../controlledEnvironment/DragAndDropProvider';\nexport var useCreatedTreeInformation = function (tree, renamingItem, search) {\n    var _a;\n    var environment = useTreeEnvironment();\n    var dnd = useDragAndDrop();\n    var selectedItems = (_a = environment.viewState[tree.treeId]) === null || _a === void 0 ? void 0 : _a.selectedItems;\n    return useMemo(function () {\n        var _a, _b;\n        return ({\n            isFocused: environment.activeTreeId === tree.treeId,\n            isRenaming: !!renamingItem,\n            areItemsSelected: ((_a = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) !== null && _a !== void 0 ? _a : 0) > 0,\n            isSearching: search !== null,\n            search: search,\n            isProgrammaticallyDragging: (_b = dnd.isProgrammaticallyDragging) !== null && _b !== void 0 ? _b : false,\n            treeId: tree.treeId,\n            rootItem: tree.rootItem,\n            treeLabel: tree.treeLabel,\n            treeLabelledBy: tree.treeLabelledBy,\n        });\n    }, [\n        environment.activeTreeId,\n        tree.treeId,\n        tree.rootItem,\n        tree.treeLabel,\n        tree.treeLabelledBy,\n        renamingItem,\n        selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length,\n        search,\n        dnd.isProgrammaticallyDragging,\n    ]);\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport { useImperativeHandle } from 'react';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useDragAndDrop } from '../controlledEnvironment/DragAndDropProvider';\nimport { useTree } from '../tree/Tree';\nexport var useCreatedTreeRef = function (ref, actions) {\n    var environment = useTreeEnvironment();\n    var tree = useTree();\n    var dnd = useDragAndDrop();\n    useImperativeHandle(ref, function () { return (__assign(__assign(__assign({}, actions), { treeEnvironmentContext: environment, dragAndDropContext: dnd, treeContext: tree }), tree.treeInformation)); });\n};\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { useDragAndDrop } from '../controlledEnvironment/DragAndDropProvider';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { useCreatedTreeRef } from './useCreatedTreeRef';\nimport { useTree } from '../tree/Tree';\nimport { useEnvironmentActions } from '../environmentActions/EnvironmentActionsProvider';\nvar EnvironmentActionsContext = React.createContext(null);\nexport var useTreeActions = function () { return React.useContext(EnvironmentActionsContext); };\nexport var TreeActionsProvider = React.forwardRef(function (props, ref) {\n    useTreeEnvironment();\n    var tree = useTree();\n    useDragAndDrop();\n    var envActions = useEnvironmentActions();\n    // TODO change tree childs to use actions rather than output events where possible\n    // TODO maybe replace with stable handlers\n    var actions = useMemo(function () { return ({\n        abortRenamingItem: function () {\n            tree.setRenamingItem(null);\n        },\n        abortSearch: function () {\n            tree.setSearch(null);\n        },\n        collapseItem: function (itemId) {\n            envActions.collapseItem(itemId, tree.treeId);\n        },\n        completeRenamingItem: function () {\n            // TODO\n        },\n        expandItem: function (itemId) {\n            envActions.expandItem(itemId, tree.treeId);\n        },\n        focusItem: function (itemId) {\n            envActions.focusItem(itemId, tree.treeId);\n        },\n        focusTree: function (autoFocus) {\n            if (autoFocus === void 0) { autoFocus = true; }\n            envActions.focusTree(tree.treeId, autoFocus);\n        },\n        invokePrimaryAction: function (itemId) {\n            envActions.invokePrimaryAction(itemId, tree.treeId);\n        },\n        moveFocusDown: function () {\n            envActions.moveFocusDown(tree.treeId);\n        },\n        moveFocusUp: function () {\n            envActions.moveFocusUp(tree.treeId);\n        },\n        renameItem: function (itemId, name) {\n            envActions.renameItem(itemId, name, tree.treeId);\n        },\n        selectItems: function (itemsIds) {\n            envActions.selectItems(itemsIds, tree.treeId);\n        },\n        setSearch: function (search) {\n            tree.setSearch(search);\n        },\n        startRenamingItem: function (itemId) {\n            tree.setRenamingItem(itemId);\n        },\n        stopRenamingItem: function () {\n            tree.setRenamingItem(null);\n        },\n        toggleItemExpandedState: function (itemId) {\n            envActions.toggleItemExpandedState(itemId, tree.treeId);\n        },\n        toggleItemSelectStatus: function (itemId) {\n            envActions.toggleItemSelectStatus(itemId, tree.treeId);\n        },\n        expandAll: function () {\n            envActions.expandAll(tree.treeId);\n        },\n        collapseAll: function () {\n            envActions.collapseAll(tree.treeId);\n        },\n    }); }, [envActions, tree]);\n    useCreatedTreeRef(ref, actions);\n    return (React.createElement(EnvironmentActionsContext.Provider, { value: actions }, props.children));\n});\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTreeEnvironment } from '../controlledEnvironment/ControlledTreeEnvironment';\nimport { TreeManager } from './TreeManager';\nimport { useCreatedTreeInformation } from './useCreatedTreeInformation';\nimport { getItemsLinearly } from './getItemsLinearly';\nimport { TreeActionsProvider } from '../treeActions/TreeActionsProvider';\nvar TreeContext = React.createContext(null); // TODO default value\nexport var useTree = function () { return useContext(TreeContext); };\nexport var Tree = React.forwardRef(function (props, ref) {\n    var _a;\n    var environment = useTreeEnvironment();\n    var renderers = useMemo(function () { return (__assign(__assign({}, environment), props)); }, [props, environment]);\n    var _b = useState(null), search = _b[0], setSearch = _b[1];\n    var _c = useState(null), renamingItem = _c[0], setRenamingItem = _c[1];\n    var rootItem = environment.items[props.rootItem];\n    var viewState = environment.viewState[props.treeId];\n    useEffect(function () {\n        environment.registerTree({\n            treeId: props.treeId,\n            rootItem: props.rootItem,\n        });\n        return function () { return environment.unregisterTree(props.treeId); };\n        // TODO should be able to remove soon, and add environment.registerTree, environment.unregisterTree as deps\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [props.treeId, props.rootItem]);\n    var treeInformation = useCreatedTreeInformation(props, renamingItem, search);\n    var treeContextProps = useMemo(function () { return ({\n        treeId: props.treeId,\n        rootItem: props.rootItem,\n        treeLabel: props.treeLabel,\n        treeLabelledBy: props.treeLabelledBy,\n        getItemsLinearly: function () {\n            return getItemsLinearly(props.rootItem, viewState !== null && viewState !== void 0 ? viewState : {}, environment.items);\n        },\n        treeInformation: treeInformation,\n        search: search,\n        setSearch: setSearch,\n        renamingItem: renamingItem,\n        setRenamingItem: setRenamingItem,\n        renderers: renderers,\n    }); }, [\n        environment.items,\n        props.rootItem,\n        props.treeId,\n        props.treeLabel,\n        props.treeLabelledBy,\n        renamingItem,\n        renderers,\n        search,\n        treeInformation,\n        viewState,\n    ]);\n    if (rootItem === undefined) {\n        (_a = environment.onMissingItems) === null || _a === void 0 ? void 0 : _a.call(environment, [props.rootItem]);\n        return null;\n    }\n    return (React.createElement(TreeContext.Provider, { value: treeContextProps },\n        React.createElement(TreeActionsProvider, { ref: ref },\n            React.createElement(TreeManager, null))));\n});\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export function callIfExists(func) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n  return typeof func === 'function' && func(...args);\n}\nexport function hasOwnProp(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nexport function uniqueId() {\n  return Math.random().toString(36).substring(7);\n}\nexport const cssClasses = {\n  menu: 'react-contextmenu',\n  menuVisible: 'react-contextmenu--visible',\n  menuWrapper: 'react-contextmenu-wrapper',\n  menuItem: 'react-contextmenu-item',\n  menuItemActive: 'react-contextmenu-item--active',\n  menuItemDisabled: 'react-contextmenu-item--disabled',\n  menuItemDivider: 'react-contextmenu-item--divider',\n  menuItemSelected: 'react-contextmenu-item--selected',\n  subMenu: 'react-contextmenu-submenu'\n};\nexport const store = {};\nexport const canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);","import assign from 'object-assign';\nimport { store } from './helpers';\nexport const MENU_SHOW = 'REACT_CONTEXTMENU_SHOW';\nexport const MENU_HIDE = 'REACT_CONTEXTMENU_HIDE';\nexport function dispatchGlobalEvent(eventName, opts) {\n  let target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : window;\n  // Compatibale with IE\n  // @see http://stackoverflow.com/questions/26596123/internet-explorer-9-10-11-event-constructor-doesnt-work\n  let event;\n  if (typeof window.CustomEvent === 'function') {\n    event = new window.CustomEvent(eventName, {\n      detail: opts\n    });\n  } else {\n    event = document.createEvent('CustomEvent');\n    event.initCustomEvent(eventName, false, true, opts);\n  }\n  if (target) {\n    target.dispatchEvent(event);\n    assign(store, opts);\n  }\n}\nexport function showMenu() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  let target = arguments.length > 1 ? arguments[1] : undefined;\n  dispatchGlobalEvent(MENU_SHOW, assign({}, opts, {\n    type: MENU_SHOW\n  }), target);\n}\nexport function hideMenu() {\n  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  let target = arguments.length > 1 ? arguments[1] : undefined;\n  dispatchGlobalEvent(MENU_HIDE, assign({}, opts, {\n    type: MENU_HIDE\n  }), target);\n}","import { MENU_SHOW, MENU_HIDE } from './actions';\nimport { uniqueId, hasOwnProp, canUseDOM } from './helpers';\nclass GlobalEventListener {\n  constructor() {\n    this.callbacks = {};\n    if (canUseDOM) {\n      window.addEventListener(MENU_SHOW, this.handleShowEvent);\n      window.addEventListener(MENU_HIDE, this.handleHideEvent);\n    }\n  }\n  handleShowEvent = event => {\n    for (const id in this.callbacks) {\n      if (hasOwnProp(this.callbacks, id)) this.callbacks[id].show(event);\n    }\n  };\n  handleHideEvent = event => {\n    for (const id in this.callbacks) {\n      if (hasOwnProp(this.callbacks, id)) this.callbacks[id].hide(event);\n    }\n  };\n  register = (showCallback, hideCallback) => {\n    const id = uniqueId();\n    this.callbacks[id] = {\n      show: showCallback,\n      hide: hideCallback\n    };\n    return id;\n  };\n  unregister = id => {\n    if (id && this.callbacks[id]) {\n      delete this.callbacks[id];\n    }\n  };\n}\nexport default new GlobalEventListener();","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport assign from 'object-assign';\nimport { hideMenu } from './actions';\nimport { callIfExists, cssClasses, store } from './helpers';\nexport default class MenuItem extends Component {\n  static propTypes = {\n    attributes: PropTypes.object,\n    children: PropTypes.node,\n    className: PropTypes.string,\n    data: PropTypes.object,\n    disabled: PropTypes.bool,\n    divider: PropTypes.bool,\n    onClick: PropTypes.func,\n    onMouseLeave: PropTypes.func,\n    onMouseMove: PropTypes.func,\n    preventClose: PropTypes.bool,\n    selected: PropTypes.bool,\n    role: PropTypes.string\n  };\n  static defaultProps = {\n    attributes: {},\n    children: null,\n    className: '',\n    data: {},\n    disabled: false,\n    divider: false,\n    onClick() {\n      return null;\n    },\n    onMouseMove: () => null,\n    onMouseLeave: () => null,\n    preventClose: false,\n    selected: false,\n    role: 'menuitem'\n  };\n  handleClick = event => {\n    if (event.button !== 0 && event.button !== 1) {\n      event.preventDefault();\n    }\n    if (this.props.disabled || this.props.divider) return;\n    callIfExists(this.props.onClick, event, assign({}, this.props.data, store.data), store.target);\n    if (this.props.preventClose) return;\n    hideMenu();\n  };\n  render() {\n    const {\n      attributes,\n      children,\n      className,\n      disabled,\n      divider,\n      selected,\n      role\n    } = this.props;\n    const menuItemClassNames = cx(className, cssClasses.menuItem, attributes.className, {\n      [cx(cssClasses.menuItemDisabled, attributes.disabledClassName)]: disabled,\n      [cx(cssClasses.menuItemDivider, attributes.dividerClassName)]: divider,\n      [cx(cssClasses.menuItemSelected, attributes.selectedClassName)]: selected\n    });\n    return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n      className: menuItemClassNames,\n      role: role,\n      tabIndex: \"-1\",\n      \"aria-disabled\": disabled ? 'true' : 'false',\n      \"aria-orientation\": divider ? 'horizontal' : null,\n      ref: ref => {\n        this.ref = ref;\n      },\n      onMouseMove: this.props.onMouseMove,\n      onMouseLeave: this.props.onMouseLeave,\n      onTouchEnd: this.handleClick,\n      onClick: this.handleClick\n    }), divider ? null : children);\n  }\n}","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from './MenuItem';\nexport default class AbstractMenu extends Component {\n  static propTypes = {\n    children: PropTypes.node.isRequired\n  };\n  constructor(props) {\n    super(props);\n    this.seletedItemRef = null;\n    this.state = {\n      selectedItem: null,\n      forceSubMenuOpen: false\n    };\n  }\n  handleKeyNavigation = e => {\n    // check for isVisible strictly here as it might be undefined when this code executes in the context of SubMenu\n    // but we only need to check when it runs in the ContextMenu context\n    if (this.state.isVisible === false) {\n      return;\n    }\n    switch (e.key) {\n      case 'ArrowLeft': // left arrow\n      case 'Left': // IE specific value\n      case 'Escape': // escape\n      case 'Esc':\n        // IE specific value\n        e.preventDefault();\n        this.hideMenu(e);\n        break;\n      case 'ArrowUp': // up arrow\n      case 'Up':\n        // IE specific value\n        e.preventDefault();\n        this.selectChildren(true);\n        break;\n      case 'ArrowDown': // down arrow\n      case 'Down':\n        // IE specific value\n        e.preventDefault();\n        this.selectChildren(false);\n        break;\n      case 'ArrowRight': // right arrow\n      case 'Right':\n        // IE specific value\n        this.tryToOpenSubMenu(e);\n        break;\n      case 'Enter':\n        // enter\n        e.preventDefault();\n        this.tryToOpenSubMenu(e);\n        {\n          // determine the selected item is disabled or not\n          const disabled = this.seletedItemRef && this.seletedItemRef.props && this.seletedItemRef.props.disabled;\n          if (this.seletedItemRef && this.seletedItemRef.ref instanceof HTMLElement && !disabled) {\n            this.seletedItemRef.ref.click();\n          } else {\n            this.hideMenu(e);\n          }\n        }\n        break;\n      default:\n      // do nothing\n    }\n  };\n\n  handleForceClose = () => {\n    this.setState({\n      forceSubMenuOpen: false\n    });\n  };\n  tryToOpenSubMenu = e => {\n    if (this.state.selectedItem && this.state.selectedItem.type === this.getSubMenuType()) {\n      e.preventDefault();\n      this.setState({\n        forceSubMenuOpen: true\n      });\n    }\n  };\n  selectChildren = forward => {\n    const {\n      selectedItem\n    } = this.state;\n    const children = [];\n    let disabledChildrenCount = 0;\n    let disabledChildIndexes = {};\n    const childCollector = (child, index) => {\n      // child can be empty in case you do conditional rendering of components, in which\n      // case it should not be accounted for as a real child\n      if (!child) {\n        return;\n      }\n      if ([MenuItem, this.getSubMenuType()].indexOf(child.type) < 0) {\n        // Maybe the MenuItem or SubMenu is capsuled in a wrapper div or something else\n        React.Children.forEach(child.props.children, childCollector);\n      } else if (!child.props.divider) {\n        if (child.props.disabled) {\n          ++disabledChildrenCount;\n          disabledChildIndexes[index] = true;\n        }\n        children.push(child);\n      }\n    };\n    React.Children.forEach(this.props.children, childCollector);\n    if (disabledChildrenCount === children.length) {\n      // All menu items are disabled, so none can be selected, don't do anything\n      return;\n    }\n    function findNextEnabledChildIndex(currentIndex) {\n      let i = currentIndex;\n      let incrementCounter = () => {\n        if (forward) {\n          --i;\n        } else {\n          ++i;\n        }\n        if (i < 0) {\n          i = children.length - 1;\n        } else if (i >= children.length) {\n          i = 0;\n        }\n      };\n      do {\n        incrementCounter();\n      } while (i !== currentIndex && disabledChildIndexes[i]);\n      return i === currentIndex ? null : i;\n    }\n    const currentIndex = selectedItem ? selectedItem.index : -1;\n    const nextEnabledChildIndex = findNextEnabledChildIndex(currentIndex);\n    if (nextEnabledChildIndex !== null) {\n      this.setState({\n        selectedItem: {\n          index: nextEnabledChildIndex,\n          // We need to know the type of the selected item, so we can\n          // check it during render and tryToOpenSubMenu.\n          type: children[nextEnabledChildIndex].type\n        },\n        forceSubMenuOpen: false\n      });\n    }\n  };\n  onChildMouseMove = (child, itemIndex) => {\n    if (this.state.selectedItem === null || this.state.selectedItem.index !== itemIndex) {\n      this.setState({\n        selectedItem: {\n          index: itemIndex,\n          type: child.type\n        },\n        forceSubMenuOpen: false\n      });\n    }\n  };\n  onChildMouseLeave = () => {\n    this.setState({\n      selectedItem: null,\n      forceSubMenuOpen: false\n    });\n  };\n\n  /**\n   * Render all the children.\n   * It has a `childIndexRef` parameter to be able to construct the child\n   * indexes properly. A reference was needed for this function because this\n   * is a recursive function that could mutate the index and pass it back to\n   * the caller. That parameter should always be undefined while calling from\n   * outside.\n   * TODO: Rewrite this function in a way that we don't need this reference.\n   */\n  renderChildren = (() => {\n    var _this = this;\n    return function (children) {\n      let childIndexRef = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        value: -1\n      };\n      return React.Children.map(children, child => {\n        let currentChildIndexRef = childIndexRef;\n        const props = {};\n        if (! /*#__PURE__*/React.isValidElement(child)) return child;\n        if ([MenuItem, _this.getSubMenuType()].indexOf(child.type) < 0) {\n          // Maybe the MenuItem or SubMenu is capsuled in a wrapper div or something else\n          props.children = _this.renderChildren(child.props.children, currentChildIndexRef);\n          return /*#__PURE__*/React.cloneElement(child, props);\n        }\n\n        // At this point we know that this is a menu item and we are going to\n        // render it. We need to increment the child index and assign it as\n        // the item index.\n        let itemIndex = null;\n        if (!child.props.divider) {\n          // A MenuItem can be a divider. Do not increment the value if it's.\n          itemIndex = ++currentChildIndexRef.value;\n        }\n        props.onMouseLeave = _this.onChildMouseLeave.bind(_this);\n        if (child.type === _this.getSubMenuType()) {\n          // special props for SubMenu only\n          props.forceOpen = _this.state.forceSubMenuOpen && _this.state.selectedItem && _this.state.selectedItem.index === itemIndex;\n          props.forceClose = _this.handleForceClose;\n          props.parentKeyNavigationHandler = _this.handleKeyNavigation;\n        }\n        if (!child.props.divider && _this.state.selectedItem && _this.state.selectedItem.index === itemIndex) {\n          // special props for selected item only\n          props.selected = true;\n          props.ref = ref => {\n            _this.seletedItemRef = ref;\n          };\n          return /*#__PURE__*/React.cloneElement(child, props);\n        }\n\n        // onMouseMove is only needed for non selected items\n        props.onMouseMove = () => _this.onChildMouseMove(child, itemIndex);\n        return /*#__PURE__*/React.cloneElement(child, props);\n      });\n    };\n  })();\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport assign from 'object-assign';\nimport { hideMenu } from './actions';\nimport AbstractMenu from './AbstractMenu';\nimport { callIfExists, cssClasses, hasOwnProp, store } from './helpers';\nimport listener from './globalEventListener';\nexport default class SubMenu extends AbstractMenu {\n  static propTypes = {\n    children: PropTypes.node.isRequired,\n    attributes: PropTypes.object,\n    title: PropTypes.node.isRequired,\n    className: PropTypes.string,\n    disabled: PropTypes.bool,\n    hoverDelay: PropTypes.number,\n    rtl: PropTypes.bool,\n    selected: PropTypes.bool,\n    onMouseMove: PropTypes.func,\n    onMouseOut: PropTypes.func,\n    forceOpen: PropTypes.bool,\n    forceClose: PropTypes.func,\n    parentKeyNavigationHandler: PropTypes.func\n  };\n  static defaultProps = {\n    disabled: false,\n    hoverDelay: 500,\n    attributes: {},\n    className: '',\n    rtl: false,\n    selected: false,\n    onMouseMove: () => null,\n    onMouseOut: () => null,\n    forceOpen: false,\n    forceClose: () => null,\n    parentKeyNavigationHandler: () => null\n  };\n  constructor(props) {\n    super(props);\n    this.state = assign({}, this.state, {\n      visible: false\n    });\n  }\n  componentDidMount() {\n    this.listenId = listener.register(() => {}, this.hideSubMenu);\n  }\n  getSubMenuType() {\n    // eslint-disable-line class-methods-use-this\n    return SubMenu;\n  }\n  shouldComponentUpdate(nextProps, nextState) {\n    this.isVisibilityChange = (this.state.visible !== nextState.visible || this.props.forceOpen !== nextProps.forceOpen) && !(this.state.visible && nextProps.forceOpen) && !(this.props.forceOpen && nextState.visible);\n    return true;\n  }\n  componentDidUpdate() {\n    if (!this.isVisibilityChange) return;\n    if (this.props.forceOpen || this.state.visible) {\n      const wrapper = window.requestAnimationFrame || setTimeout;\n      wrapper(() => {\n        const styles = this.props.rtl ? this.getRTLMenuPosition() : this.getMenuPosition();\n        this.subMenu.style.removeProperty('top');\n        this.subMenu.style.removeProperty('bottom');\n        this.subMenu.style.removeProperty('left');\n        this.subMenu.style.removeProperty('right');\n        if (hasOwnProp(styles, 'top')) this.subMenu.style.top = styles.top;\n        if (hasOwnProp(styles, 'left')) this.subMenu.style.left = styles.left;\n        if (hasOwnProp(styles, 'bottom')) this.subMenu.style.bottom = styles.bottom;\n        if (hasOwnProp(styles, 'right')) this.subMenu.style.right = styles.right;\n        this.subMenu.classList.add(cssClasses.menuVisible);\n        this.registerHandlers();\n        this.setState({\n          selectedItem: null\n        });\n      });\n    } else {\n      const cleanup = () => {\n        this.subMenu.removeEventListener('transitionend', cleanup);\n        this.subMenu.style.removeProperty('bottom');\n        this.subMenu.style.removeProperty('right');\n        this.subMenu.style.top = 0;\n        this.subMenu.style.left = '100%';\n        this.unregisterHandlers();\n      };\n      this.subMenu.addEventListener('transitionend', cleanup);\n      this.subMenu.classList.remove(cssClasses.menuVisible);\n    }\n  }\n  componentWillUnmount() {\n    if (this.listenId) {\n      listener.unregister(this.listenId);\n    }\n    if (this.opentimer) clearTimeout(this.opentimer);\n    if (this.closetimer) clearTimeout(this.closetimer);\n    this.unregisterHandlers(true);\n  }\n  getMenuPosition = () => {\n    const {\n      innerWidth,\n      innerHeight\n    } = window;\n    const rect = this.subMenu.getBoundingClientRect();\n    const position = {};\n    if (rect.bottom > innerHeight) {\n      position.bottom = 0;\n    } else {\n      position.top = 0;\n    }\n    if (rect.right < innerWidth) {\n      position.left = '100%';\n    } else {\n      position.right = '100%';\n    }\n    return position;\n  };\n  getRTLMenuPosition = () => {\n    const {\n      innerHeight\n    } = window;\n    const rect = this.subMenu.getBoundingClientRect();\n    const position = {};\n    if (rect.bottom > innerHeight) {\n      position.bottom = 0;\n    } else {\n      position.top = 0;\n    }\n    if (rect.left < 0) {\n      position.left = '100%';\n    } else {\n      position.right = '100%';\n    }\n    return position;\n  };\n  hideMenu = e => {\n    e.preventDefault();\n    this.hideSubMenu(e);\n  };\n  hideSubMenu = e => {\n    // avoid closing submenus of a different menu tree\n    if (e.detail && e.detail.id && this.menu && e.detail.id !== this.menu.id) {\n      return;\n    }\n    if (this.props.forceOpen) {\n      this.props.forceClose();\n    }\n    this.setState({\n      visible: false,\n      selectedItem: null\n    });\n    this.unregisterHandlers();\n  };\n  handleClick = event => {\n    event.preventDefault();\n    if (this.props.disabled) return;\n    callIfExists(this.props.onClick, event, assign({}, this.props.data, store.data), store.target);\n    if (!this.props.onClick || this.props.preventCloseOnClick) return;\n    hideMenu();\n  };\n  handleMouseEnter = () => {\n    if (this.closetimer) clearTimeout(this.closetimer);\n    if (this.props.disabled || this.state.visible) return;\n    this.opentimer = setTimeout(() => this.setState({\n      visible: true,\n      selectedItem: null\n    }), this.props.hoverDelay);\n  };\n  handleMouseLeave = () => {\n    if (this.opentimer) clearTimeout(this.opentimer);\n    if (!this.state.visible) return;\n    this.closetimer = setTimeout(() => this.setState({\n      visible: false,\n      selectedItem: null\n    }), this.props.hoverDelay);\n  };\n  menuRef = c => {\n    this.menu = c;\n  };\n  subMenuRef = c => {\n    this.subMenu = c;\n  };\n  registerHandlers = () => {\n    document.removeEventListener('keydown', this.props.parentKeyNavigationHandler);\n    document.addEventListener('keydown', this.handleKeyNavigation);\n  };\n  unregisterHandlers = dismounting => {\n    document.removeEventListener('keydown', this.handleKeyNavigation);\n    if (!dismounting) {\n      document.addEventListener('keydown', this.props.parentKeyNavigationHandler);\n    }\n  };\n  render() {\n    const {\n      children,\n      attributes,\n      disabled,\n      title,\n      selected\n    } = this.props;\n    const {\n      visible\n    } = this.state;\n    const menuProps = {\n      ref: this.menuRef,\n      onMouseEnter: this.handleMouseEnter,\n      onMouseLeave: this.handleMouseLeave,\n      className: cx(cssClasses.menuItem, cssClasses.subMenu, attributes.listClassName),\n      style: {\n        position: 'relative'\n      }\n    };\n    const menuItemProps = {\n      className: cx(cssClasses.menuItem, attributes.className, {\n        [cx(cssClasses.menuItemDisabled, attributes.disabledClassName)]: disabled,\n        [cx(cssClasses.menuItemActive, attributes.visibleClassName)]: visible,\n        [cx(cssClasses.menuItemSelected, attributes.selectedClassName)]: selected\n      }),\n      onMouseMove: this.props.onMouseMove,\n      onMouseOut: this.props.onMouseOut,\n      onClick: this.handleClick\n    };\n    const subMenuProps = {\n      ref: this.subMenuRef,\n      style: {\n        position: 'absolute',\n        transition: 'opacity 1ms',\n        // trigger transitionend event\n        top: 0,\n        left: '100%'\n      },\n      className: cx(cssClasses.menu, this.props.className)\n    };\n    return /*#__PURE__*/React.createElement(\"nav\", _extends({}, menuProps, {\n      role: \"menuitem\",\n      tabIndex: \"-1\",\n      \"aria-haspopup\": \"true\"\n    }), /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, menuItemProps), title), /*#__PURE__*/React.createElement(\"nav\", _extends({}, subMenuProps, {\n      role: \"menu\",\n      tabIndex: \"-1\"\n    }), this.renderChildren(children)));\n  }\n}","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport assign from 'object-assign';\nimport listener from './globalEventListener';\nimport AbstractMenu from './AbstractMenu';\nimport SubMenu from './SubMenu';\nimport { hideMenu } from './actions';\nimport { cssClasses, callIfExists, store } from './helpers';\n\n/* This is a backward-compatible shim for React < 18 */\nfunction flushSync(callback) {\n  if (ReactDOM.flushSync) {\n    ReactDOM.flushSync(callback);\n  } else {\n    callback();\n  }\n}\nexport default class ContextMenu extends AbstractMenu {\n  static propTypes = {\n    id: PropTypes.string.isRequired,\n    children: PropTypes.node.isRequired,\n    data: PropTypes.object,\n    className: PropTypes.string,\n    hideOnLeave: PropTypes.bool,\n    rtl: PropTypes.bool,\n    onHide: PropTypes.func,\n    onMouseLeave: PropTypes.func,\n    onShow: PropTypes.func,\n    preventHideOnContextMenu: PropTypes.bool,\n    preventHideOnResize: PropTypes.bool,\n    preventHideOnScroll: PropTypes.bool,\n    style: PropTypes.object\n  };\n  static defaultProps = {\n    className: '',\n    data: {},\n    hideOnLeave: false,\n    rtl: false,\n    onHide() {\n      return null;\n    },\n    onMouseLeave() {\n      return null;\n    },\n    onShow() {\n      return null;\n    },\n    preventHideOnContextMenu: false,\n    preventHideOnResize: false,\n    preventHideOnScroll: false,\n    style: {}\n  };\n  constructor(props) {\n    super(props);\n    this.state = assign({}, this.state, {\n      x: 0,\n      y: 0,\n      isVisible: false\n    });\n  }\n  getSubMenuType() {\n    // eslint-disable-line class-methods-use-this\n    return SubMenu;\n  }\n  componentDidMount() {\n    this.listenId = listener.register(this.handleShow, this.handleHide);\n  }\n  componentDidUpdate() {\n    const wrapper = window.requestAnimationFrame || setTimeout;\n    if (this.state.isVisible) {\n      wrapper(() => {\n        const {\n          x,\n          y\n        } = this.state;\n        const {\n          top,\n          left\n        } = this.props.rtl ? this.getRTLMenuPosition(x, y) : this.getMenuPosition(x, y);\n        wrapper(() => {\n          if (!this.menu) return;\n          this.menu.style.top = `${top}px`;\n          this.menu.style.left = `${left}px`;\n          this.menu.style.opacity = 1;\n          this.menu.style.pointerEvents = 'auto';\n        });\n      });\n    } else {\n      wrapper(() => {\n        if (!this.menu) return;\n        this.menu.style.opacity = 0;\n        this.menu.style.pointerEvents = 'none';\n      });\n    }\n  }\n  componentWillUnmount() {\n    if (this.listenId) {\n      listener.unregister(this.listenId);\n    }\n    this.unregisterHandlers();\n  }\n  registerHandlers = () => {\n    document.addEventListener('mousedown', this.handleOutsideClick);\n    document.addEventListener('touchstart', this.handleOutsideClick);\n    if (!this.props.preventHideOnScroll) document.addEventListener('scroll', this.handleHide);\n    if (!this.props.preventHideOnContextMenu) document.addEventListener('contextmenu', this.handleHide);\n    document.addEventListener('keydown', this.handleKeyNavigation);\n    if (!this.props.preventHideOnResize) window.addEventListener('resize', this.handleHide);\n  };\n  unregisterHandlers = () => {\n    document.removeEventListener('mousedown', this.handleOutsideClick);\n    document.removeEventListener('touchstart', this.handleOutsideClick);\n    document.removeEventListener('scroll', this.handleHide);\n    document.removeEventListener('contextmenu', this.handleHide);\n    document.removeEventListener('keydown', this.handleKeyNavigation);\n    window.removeEventListener('resize', this.handleHide);\n  };\n  handleShow = e => {\n    if (e.detail.id !== this.props.id || this.state.isVisible) return;\n    const {\n      x,\n      y\n    } = e.detail.position;\n    this.setState({\n      isVisible: true,\n      x,\n      y\n    });\n    this.registerHandlers();\n    callIfExists(this.props.onShow, e);\n  };\n  handleHide = e => {\n    if (this.state.isVisible && (!e.detail || !e.detail.id || e.detail.id === this.props.id)) {\n      this.unregisterHandlers();\n      flushSync(() => {\n        /* We rely on being able to read this state change in handleShow,\n         * so let's force a synchronous update in React 18. */\n        this.setState({\n          isVisible: false,\n          selectedItem: null,\n          forceSubMenuOpen: false\n        });\n      });\n      callIfExists(this.props.onHide, e);\n    }\n  };\n  handleOutsideClick = e => {\n    if (!this.menu.contains(e.target)) hideMenu();\n  };\n  handleMouseLeave = event => {\n    event.preventDefault();\n    callIfExists(this.props.onMouseLeave, event, assign({}, this.props.data, store.data), store.target);\n    if (this.props.hideOnLeave) hideMenu();\n  };\n  handleContextMenu = e => {\n    if (process.env.NODE_ENV === 'production') {\n      e.preventDefault();\n    }\n    this.handleHide(e);\n  };\n\n  // Disabling this rule for more consistency.\n  /* eslint-disable-next-line class-methods-use-this */\n  hideMenu = e => {\n    if (e.key === 'Escape' || e.key === 'Esc' || e.key === 'Enter') {\n      hideMenu();\n    }\n  };\n  getMenuPosition = (() => {\n    var _this = this;\n    return function () {\n      let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      let y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      let menuStyles = {\n        top: y,\n        left: x\n      };\n      if (!_this.menu) return menuStyles;\n      const {\n        innerWidth,\n        innerHeight\n      } = window;\n      const rect = _this.menu.getBoundingClientRect();\n      if (y + rect.height > innerHeight) {\n        menuStyles.top -= rect.height;\n      }\n      if (x + rect.width > innerWidth) {\n        menuStyles.left -= rect.width;\n      }\n      if (menuStyles.top < 0) {\n        menuStyles.top = rect.height < innerHeight ? (innerHeight - rect.height) / 2 : 0;\n      }\n      if (menuStyles.left < 0) {\n        menuStyles.left = rect.width < innerWidth ? (innerWidth - rect.width) / 2 : 0;\n      }\n      return menuStyles;\n    };\n  })();\n  getRTLMenuPosition = (() => {\n    var _this2 = this;\n    return function () {\n      let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      let y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      let menuStyles = {\n        top: y,\n        left: x\n      };\n      if (!_this2.menu) return menuStyles;\n      const {\n        innerWidth,\n        innerHeight\n      } = window;\n      const rect = _this2.menu.getBoundingClientRect();\n\n      // Try to position the menu on the left side of the cursor\n      menuStyles.left = x - rect.width;\n      if (y + rect.height > innerHeight) {\n        menuStyles.top -= rect.height;\n      }\n      if (menuStyles.left < 0) {\n        menuStyles.left += rect.width;\n      }\n      if (menuStyles.top < 0) {\n        menuStyles.top = rect.height < innerHeight ? (innerHeight - rect.height) / 2 : 0;\n      }\n      if (menuStyles.left + rect.width > innerWidth) {\n        menuStyles.left = rect.width < innerWidth ? (innerWidth - rect.width) / 2 : 0;\n      }\n      return menuStyles;\n    };\n  })();\n  menuRef = c => {\n    this.menu = c;\n  };\n  render() {\n    const {\n      children,\n      className,\n      style\n    } = this.props;\n    const {\n      isVisible\n    } = this.state;\n    const inlineStyle = assign({}, style, {\n      position: 'fixed',\n      opacity: 0,\n      pointerEvents: 'none'\n    });\n    const menuClassnames = cx(cssClasses.menu, className, {\n      [cssClasses.menuVisible]: isVisible\n    });\n    return /*#__PURE__*/React.createElement(\"nav\", {\n      role: \"menu\",\n      tabIndex: \"-1\",\n      ref: this.menuRef,\n      style: inlineStyle,\n      className: menuClassnames,\n      onContextMenu: this.handleContextMenu,\n      onMouseLeave: this.handleMouseLeave\n    }, this.renderChildren(children));\n  }\n}","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport assign from 'object-assign';\nimport { showMenu, hideMenu } from './actions';\nimport { callIfExists, cssClasses } from './helpers';\nexport default class ContextMenuTrigger extends Component {\n  static propTypes = {\n    id: PropTypes.string.isRequired,\n    children: PropTypes.node.isRequired,\n    attributes: PropTypes.object,\n    collect: PropTypes.func,\n    disable: PropTypes.bool,\n    holdToDisplay: PropTypes.number,\n    posX: PropTypes.number,\n    posY: PropTypes.number,\n    renderTag: PropTypes.elementType,\n    // Trigger on left click in addition to right click\n    triggerOnLeftClick: PropTypes.bool,\n    disableIfShiftIsPressed: PropTypes.bool\n  };\n  static defaultProps = {\n    attributes: {},\n    collect() {\n      return null;\n    },\n    disable: false,\n    holdToDisplay: 1000,\n    renderTag: 'div',\n    posX: 0,\n    posY: 0,\n    triggerOnLeftClick: false,\n    disableIfShiftIsPressed: false\n  };\n  touchHandled = false;\n  handleMouseDown = event => {\n    if (this.props.holdToDisplay >= 0 && event.button === 0) {\n      event.persist();\n      event.stopPropagation();\n      this.mouseDownTimeoutId = setTimeout(() => this.handleContextClick(event), this.props.holdToDisplay);\n    }\n    callIfExists(this.props.attributes.onMouseDown, event);\n  };\n  handleMouseUp = event => {\n    if (event.button === 0) {\n      clearTimeout(this.mouseDownTimeoutId);\n    }\n    callIfExists(this.props.attributes.onMouseUp, event);\n  };\n  handleMouseOut = event => {\n    if (event.button === 0) {\n      clearTimeout(this.mouseDownTimeoutId);\n    }\n    callIfExists(this.props.attributes.onMouseOut, event);\n  };\n  handleTouchstart = event => {\n    this.touchHandled = false;\n    if (this.props.holdToDisplay >= 0) {\n      event.persist();\n      event.stopPropagation();\n      this.touchstartTimeoutId = setTimeout(() => {\n        this.handleContextClick(event);\n        this.touchHandled = true;\n      }, this.props.holdToDisplay);\n    }\n    callIfExists(this.props.attributes.onTouchStart, event);\n  };\n  handleTouchEnd = event => {\n    if (this.touchHandled) {\n      event.preventDefault();\n    }\n    clearTimeout(this.touchstartTimeoutId);\n    callIfExists(this.props.attributes.onTouchEnd, event);\n  };\n  handleContextMenu = event => {\n    this.handleContextClick(event);\n    callIfExists(this.props.attributes.onContextMenu, event);\n  };\n\n  // Note: this function is registered only if triggerOnLeftClick is true.\n  handleMouseClick = event => {\n    this.handleContextClick(event);\n    callIfExists(this.props.attributes.onClick, event);\n  };\n  handleContextClick = event => {\n    if (this.props.disable) return;\n    if (this.props.disableIfShiftIsPressed && event.shiftKey) return;\n    event.preventDefault();\n    event.stopPropagation();\n    let x = event.clientX || event.touches && event.touches[0].pageX;\n    let y = event.clientY || event.touches && event.touches[0].pageY;\n    if (this.props.posX) {\n      x -= this.props.posX;\n    }\n    if (this.props.posY) {\n      y -= this.props.posY;\n    }\n    hideMenu();\n    let data = callIfExists(this.props.collect, this.props);\n    let showMenuConfig = {\n      position: {\n        x,\n        y\n      },\n      target: this.elem,\n      id: this.props.id\n    };\n    if (data && typeof data.then === 'function') {\n      // it's promise\n      data.then(resp => {\n        showMenuConfig.data = assign({}, resp, {\n          target: event.target\n        });\n        showMenu(showMenuConfig);\n      });\n    } else {\n      showMenuConfig.data = assign({}, data, {\n        target: event.target\n      });\n      showMenu(showMenuConfig);\n    }\n  };\n  elemRef = c => {\n    this.elem = c;\n  };\n  render() {\n    const {\n      renderTag,\n      attributes,\n      children,\n      triggerOnLeftClick\n    } = this.props;\n    const newAttrs = {\n      ...attributes,\n      className: cx(cssClasses.menuWrapper, attributes.className),\n      onContextMenu: this.handleContextMenu,\n      onClick: triggerOnLeftClick ? this.handleMouseClick : null,\n      onMouseDown: this.handleMouseDown,\n      onMouseUp: this.handleMouseUp,\n      onTouchStart: this.handleTouchstart,\n      onTouchEnd: this.handleTouchEnd,\n      onMouseOut: this.handleMouseOut,\n      ref: this.elemRef\n    };\n    return /*#__PURE__*/React.createElement(renderTag, newAttrs, children);\n  }\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { Component } from 'react';\nimport ContextMenuTrigger from './ContextMenuTrigger';\nimport listener from './globalEventListener';\n\n// collect ContextMenuTrigger's expected props to NOT pass them on as part of the context\nconst ignoredTriggerProps = [...Object.keys(ContextMenuTrigger.propTypes), 'children'];\n\n// expect the id of the menu to be responsible for as outer parameter\nexport default function (menuId) {\n  // expect menu component to connect as inner parameter\n  // <Child/> is presumably a wrapper of <ContextMenu/>\n  return function connect(Child) {\n    // return wrapper for <Child/> that forwards the ContextMenuTrigger's additional props\n    return class ConnectMenu extends Component {\n      constructor(props) {\n        super(props);\n        this.state = {\n          trigger: null\n        };\n      }\n      componentDidMount() {\n        this.listenId = listener.register(this.handleShow, this.handleHide);\n      }\n      componentWillUnmount() {\n        if (this.listenId) {\n          listener.unregister(this.listenId);\n        }\n      }\n      handleShow = e => {\n        if (e.detail.id !== menuId) return;\n\n        // the onShow event's detail.data object holds all ContextMenuTrigger props\n        const {\n          data\n        } = e.detail;\n        const filteredData = {};\n        for (const key in data) {\n          // exclude props the ContextMenuTrigger is expecting itself\n          if (!ignoredTriggerProps.includes(key)) {\n            filteredData[key] = data[key];\n          }\n        }\n        this.setState({\n          trigger: filteredData\n        });\n      };\n      handleHide = () => {\n        this.setState({\n          trigger: null\n        });\n      };\n      render() {\n        return /*#__PURE__*/React.createElement(Child, _extends({}, this.props, {\n          id: menuId,\n          trigger: this.state.trigger\n        }));\n      }\n    };\n  };\n}","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\n/**\r\n * Recursive Tree implemented as a recursive map.\r\n */\r\nexport type MapTree<K, V> = Map<K, V[] | MapTree<K, V>>\r\n\r\n/**\r\n * Returns true if both argument are null or pair-wise equal.\r\n */\r\nexport function ArrayEquals<T> (first: T[], second: T[]) {\r\n  if (!first && !second) return true\r\n  if (!first) return false\r\n  if (!second) return false\r\n  return (\r\n    first.length === second.length && first.every((v, i) => v === second[i])\r\n  )\r\n}\r\n\r\n/**\r\n * Creates N-level grouping of items using given grouping selector in the order provided.\r\n * @param items array of items to groups\r\n * @param grouping array of selectors\r\n * @returns a Map of Map ... of Map<string, item> with the first map containing a single element called root.\r\n */\r\nexport function toMapTree<V> (\r\n  items: V[],\r\n  grouping: ((v: V) => string)[]\r\n): MapTree<string, V> {\r\n  const root = new Map<string, V[]>() as MapTree<string, V>\r\n  root.set('root', items)\r\n  grouping.forEach((g) => deepen(root, g))\r\n  return root\r\n}\r\n\r\n/**\r\n * groups elements of an array into a map using values returned by selector.\r\n * Intended to work as Linq.GroupBy\r\n */\r\nexport function groupBy<K, V> (array: V[], selector: (o: V) => K) {\r\n  const result = new Map<K, V[]>()\r\n  array.forEach((a) => {\r\n    const key = selector(a)\r\n    if (!result.has(key)) result.set(key, [])\r\n    result.get(key)!.push(a)\r\n  })\r\n  return result\r\n}\r\n\r\n/**\r\n * Takes a N-deep Map tree and applies a new grouping to leaves resulting in a N+1 deep three.\r\n */\r\nfunction deepen<K, V> (map: MapTree<K, V>, selector: (v: V) => K) {\r\n  for (const [k, v] of map.entries()) {\r\n    if (v instanceof Map) {\r\n      deepen(v, selector)\r\n    } else {\r\n      const child = groupBy(v, (e) => selector(e))\r\n      map.set(k, child)\r\n    }\r\n  }\r\n}\r\n\r\n/**\r\n * Takes a N-deep Map tree and reinsert all element in sorted order.\r\n */\r\nexport function sort<K, V> (map: MapTree<K, V>) {\r\n  for (const [k, v] of map.entries()) {\r\n    if (v instanceof Map) {\r\n      sort(v)\r\n    } else {\r\n      map.set(k, v.sort())\r\n    }\r\n  }\r\n  const array = Array.from(map).sort()\r\n  map.clear()\r\n  array.forEach((e) => map.set(e[0], e[1]))\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport {\r\n  ContextMenu,\r\n  MenuItem,\r\n  showMenu,\r\n  hideMenu\r\n} from '@firefox-devtools/react-contextmenu'\r\nimport React, { useEffect, useState } from 'react'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport { Isolation } from '../helpers/isolation'\r\nimport { ComponentCamera } from '../helpers/camera'\r\nimport { ArrayEquals } from '../helpers/data'\r\nimport { TreeActionRef } from '../bim/bimTree'\r\nimport { ModalRef } from './modal'\r\n\r\nexport const VIM_CONTEXT_MENU_ID = 'vim-context-menu-id'\r\nexport type ClickCallback = React.MouseEvent<HTMLDivElement, MouseEvent>\r\n\r\nexport function showContextMenu (\r\n  position: { x: number; y: number } | undefined\r\n) {\r\n  hideMenu()\r\n  if (!position) {\r\n    return\r\n  }\r\n  const showMenuConfig = {\r\n    position: { x: position.x - 10, y: position.y - 10 },\r\n    target: window,\r\n    id: VIM_CONTEXT_MENU_ID\r\n  }\r\n\r\n  showMenu(showMenuConfig)\r\n}\r\n\r\n/**\r\n * Current list of context menu item ids. Used to find and replace items when customizing the context menu.\r\n */\r\nexport const contextMenuElementIds = {\r\n  showControls: 'showControls',\r\n  dividerCamera: 'dividerCamera',\r\n  resetCamera: 'resetCamera',\r\n  zoomToFit: 'zoomToFit',\r\n  dividerSelection: 'dividerSelection',\r\n  isolateSelection: 'isolateObject',\r\n  selectSimilar: 'selectSimilar',\r\n  hideObject: 'hideObject',\r\n  showObject: 'showObject',\r\n  clearSelection: 'clearSelection',\r\n  showAll: 'showAll',\r\n  dividerMeasure: 'dividerMeasure',\r\n  deleteMeasurement: 'deleteMeasurement',\r\n  dividerSection: 'dividerSection',\r\n  ignoreSection: 'ignoreSection',\r\n  resetSection: 'resetSection',\r\n  fitSectionToSelection: 'fitSectionToSelection'\r\n}\r\n\r\n/**\r\n * Represents a button in the context menu. It can't be clicked triggering given action.\r\n */\r\nexport interface IContextMenuButton {\r\n  id: string\r\n  label: string\r\n  keyboard: string\r\n  action: (e: ClickCallback) => void\r\n  enabled: boolean\r\n}\r\n\r\n/**\r\n * Represents a divider in the context menu. It can't be clicked.\r\n */\r\nexport interface IContextMenuDivider {\r\n  id: string\r\n  enabled: boolean\r\n}\r\n\r\nexport type ContextMenuElement = IContextMenuButton | IContextMenuDivider\r\n\r\n/**\r\n * A map function that changes the context menu.\r\n */\r\nexport type ContextMenuCustomization = (\r\n  e: ContextMenuElement[]\r\n) => ContextMenuElement[]\r\n\r\n/**\r\n * Memoized version of VimContextMenu.\r\n */\r\nexport const VimContextMenuMemo = React.memo(VimContextMenu)\r\n\r\n/**\r\n * Context menu component definition according to current state.\r\n */\r\nexport function VimContextMenu (props: {\r\n  viewer: VIM.Viewer\r\n  camera: ComponentCamera\r\n  modal: ModalRef\r\n  isolation: Isolation\r\n  selection: VIM.Object3D[]\r\n  customization?: (e: ContextMenuElement[]) => ContextMenuElement[]\r\n  treeRef: React.MutableRefObject<TreeActionRef | undefined>\r\n}) {\r\n  const getSelection = () => {\r\n    return [...props.viewer.selection.objects].filter(o => o.type === 'Object3D') as VIM.Object3D[]\r\n  }\r\n\r\n  const viewer = props.viewer\r\n  const camera = props.camera\r\n  const [section, setSection] = useState<{\r\n    visible: boolean\r\n    clip: boolean\r\n  }>({\r\n    visible: viewer.gizmos.section.visible,\r\n    clip: viewer.gizmos.section.clip\r\n  })\r\n  const isClipping = () => {\r\n    return !viewer.gizmos.section.box.containsBox(viewer.renderer.getBoundingBox())\r\n  }\r\n  const [clipping, setClipping] = useState<boolean>(isClipping())\r\n  const [, setVersion] = useState(0)\r\n  const hidden = props.isolation.any()\r\n\r\n  useEffect(() => {\r\n    // Register to selection\r\n    const subState = viewer.gizmos.section.onStateChanged.subscribe(() => {\r\n      setSection({\r\n        visible: viewer.gizmos.section.visible,\r\n        clip: viewer.gizmos.section.clip\r\n      })\r\n    })\r\n\r\n    // Register to section box\r\n    const subConfirm = viewer.gizmos.section.onBoxConfirm.subscribe(() =>\r\n      setClipping(isClipping())\r\n    )\r\n\r\n    // force re-render and reevalution of isolation.\r\n    props.isolation.onChanged.subscribe(() => setVersion((v) => v + 1))\r\n    return () => {\r\n      subState()\r\n      subConfirm()\r\n    }\r\n  }, [])\r\n\r\n  const onShowControlsBtn = (e: ClickCallback) => {\r\n    props.modal.help(true)\r\n    e.stopPropagation()\r\n  }\r\n\r\n  const onCameraResetBtn = (e: ClickCallback) => {\r\n    camera.reset()\r\n    e.stopPropagation()\r\n  }\r\n\r\n  const onCameraFrameBtn = (e: ClickCallback) => {\r\n    camera.frameContext()\r\n    e.stopPropagation()\r\n  }\r\n\r\n  const onSelectionIsolateBtn = (e: ClickCallback) => {\r\n    props.isolation.isolate(\r\n      getSelection(),\r\n      'contextMenu'\r\n    )\r\n    props.viewer.selection.clear()\r\n    e.stopPropagation()\r\n  }\r\n\r\n  const onSelectSimilarBtn = (e: ClickCallback) => {\r\n    const o = getSelection()[0]\r\n    props.treeRef.current?.selectSiblings(o)\r\n    e.stopPropagation()\r\n  }\r\n\r\n  const onSelectionHideBtn = (e: ClickCallback) => {\r\n    props.isolation.hide(getSelection(), 'contextMenu')\r\n    e.stopPropagation()\r\n  }\r\n\r\n  const onSelectionShowBtn = (e: ClickCallback) => {\r\n    props.isolation.show(getSelection(), 'contextMenu')\r\n    e.stopPropagation()\r\n  }\r\n\r\n  const onSelectionClearBtn = (e: ClickCallback) => {\r\n    viewer.selection.clear()\r\n    e.stopPropagation()\r\n  }\r\n\r\n  const onShowAllBtn = (e: ClickCallback) => {\r\n    props.isolation.clear('contextMenu')\r\n    e.stopPropagation()\r\n  }\r\n\r\n  const onSectionToggleBtn = (e: ClickCallback) => {\r\n    viewer.gizmos.section.clip = !viewer.gizmos.section.clip\r\n  }\r\n\r\n  const onSectionResetBtn = (e: ClickCallback) => {\r\n    viewer.gizmos.section.fitBox(viewer.renderer.getBoundingBox())\r\n    e.stopPropagation()\r\n  }\r\n\r\n  const onMeasureDeleteBtn = (e: ClickCallback) => {\r\n    viewer.gizmos.measure.abort()\r\n  }\r\n\r\n  const onFitSectionToSelectionBtn = (e: ClickCallback) => {\r\n    const box = viewer.selection.getBoundingBox()\r\n    if (box) {\r\n      viewer.gizmos.section.fitBox(box)\r\n    }\r\n  }\r\n\r\n  const createButton = (button: IContextMenuButton) => {\r\n    if (!button.enabled) return null\r\n    return (\r\n      <MenuItem\r\n        key={button.id}\r\n        className=\"vim-context-menu-item vc-flex vc-cursor-pointer vc-select-none vc-items-center vc-justify-between vc-px-5 vc-py-2 hover:vc-bg-gray-lightest\"\r\n        onClick={button.action}\r\n      >\r\n        <span>{button.label}</span>\r\n        <span className=\"vc-text-gray-medium\">{button.keyboard}</span>\r\n      </MenuItem>\r\n    )\r\n  }\r\n  const createDivider = (divider: IContextMenuDivider) => {\r\n    return divider.enabled\r\n      ? (\r\n      <MenuItem\r\n        key={divider.id}\r\n        className=\"vim-context-menu-item vc-my-1 vc-border-t vc-border-gray-lighter\"\r\n        divider\r\n      />\r\n        )\r\n      : null\r\n  }\r\n\r\n  const hasSelection = props.selection?.length > 0\r\n  const hasVisibleSelection = props.selection?.findIndex((o) => o.visible) >= 0\r\n  const measuring = !!viewer.gizmos.measure.stage\r\n  const isolated = ArrayEquals(props.selection, props.isolation.current())\r\n\r\n  let elements: ContextMenuElement[] = [\r\n    {\r\n      id: contextMenuElementIds.showControls,\r\n      label: 'Show Controls',\r\n      action: onShowControlsBtn,\r\n      enabled: true\r\n    },\r\n    { id: contextMenuElementIds.dividerCamera, enabled: true },\r\n    {\r\n      id: contextMenuElementIds.resetCamera,\r\n      label: 'Reset Camera',\r\n      keyboard: 'HOME',\r\n      action: onCameraResetBtn,\r\n      enabled: true\r\n    },\r\n    {\r\n      id: contextMenuElementIds.zoomToFit,\r\n      label: 'Zoom to Fit',\r\n      keyboard: 'F',\r\n      action: onCameraFrameBtn,\r\n      enabled: true\r\n    },\r\n    {\r\n      id: contextMenuElementIds.dividerSelection,\r\n      enabled: hasSelection || hidden\r\n    },\r\n    {\r\n      id: contextMenuElementIds.isolateSelection,\r\n      label: 'Isolate Object',\r\n      keyboard: 'I',\r\n      action: onSelectionIsolateBtn,\r\n      enabled: hasSelection && !isolated\r\n    },\r\n    {\r\n      id: contextMenuElementIds.selectSimilar,\r\n      label: 'Select Similar',\r\n      keyboard: undefined,\r\n      action: onSelectSimilarBtn,\r\n      enabled: hasSelection\r\n    },\r\n    {\r\n      id: contextMenuElementIds.hideObject,\r\n      label: 'Hide Object',\r\n      keyboard: 'V',\r\n      action: onSelectionHideBtn,\r\n      enabled: hasVisibleSelection\r\n    },\r\n    {\r\n      id: contextMenuElementIds.showObject,\r\n      label: 'Show Object',\r\n      keyboard: 'V',\r\n      action: onSelectionShowBtn,\r\n      enabled: hasSelection && !hasVisibleSelection\r\n    },\r\n\r\n    {\r\n      id: contextMenuElementIds.clearSelection,\r\n      label: 'Clear Selection',\r\n      keyboard: 'Esc',\r\n      action: onSelectionClearBtn,\r\n      enabled: hasSelection\r\n    },\r\n    {\r\n      id: contextMenuElementIds.showAll,\r\n      label: 'Show All',\r\n      keyboard: 'Esc',\r\n      action: onShowAllBtn,\r\n      enabled: hidden\r\n    },\r\n    { id: contextMenuElementIds.dividerMeasure, enabled: measuring },\r\n    {\r\n      id: contextMenuElementIds.deleteMeasurement,\r\n      label: 'Delete Measurement',\r\n      keyboard: '',\r\n      action: onMeasureDeleteBtn,\r\n      enabled: measuring\r\n    },\r\n    {\r\n      id: contextMenuElementIds.dividerSection,\r\n      enabled: clipping || section.visible\r\n    },\r\n    {\r\n      id: contextMenuElementIds.ignoreSection,\r\n      label: section.clip ? 'Ignore Section Box' : 'Apply Section Box',\r\n      keyboard: '',\r\n      action: onSectionToggleBtn,\r\n      enabled: clipping\r\n    },\r\n    {\r\n      id: contextMenuElementIds.resetSection,\r\n      label: 'Reset Section Box',\r\n      keyboard: '',\r\n      action: onSectionResetBtn,\r\n      enabled: clipping\r\n    },\r\n    {\r\n      id: contextMenuElementIds.fitSectionToSelection,\r\n      label: 'Fit Section Box to Selection',\r\n      keyboard: '',\r\n      action: onFitSectionToSelectionBtn,\r\n      enabled: section.visible && hasSelection\r\n    }\r\n  ]\r\n  elements = props.customization?.(elements) ?? elements\r\n\r\n  return (\r\n    <div\r\n      className=\"vim-context-menu\"\r\n      onContextMenu={(e) => {\r\n        e.preventDefault()\r\n      }}\r\n    >\r\n      <ContextMenu\r\n        // hideOnLeave={true}\r\n        preventHideOnContextMenu={true}\r\n        className=\"vc-z-50 vc-w-[240px] vc-rounded vc-bg-white vc-py-1 vc-text-gray-darker vc-shadow-lg\"\r\n        id={VIM_CONTEXT_MENU_ID}\r\n      >\r\n        {elements.map((e) => {\r\n          return 'label' in e ? createButton(e) : createDivider(e)\r\n        })}\r\n      </ContextMenu>\r\n    </div>\r\n  )\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport React, { useEffect, useMemo, useRef, useState } from 'react'\r\nimport {\r\n  ControlledTreeEnvironment,\r\n  InteractionMode,\r\n  Tree\r\n} from 'react-complex-tree'\r\nimport 'react-complex-tree/lib/style.css'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport { showContextMenu } from '../panels/contextMenu'\r\nimport { ComponentCamera as CameraHelpers } from '../helpers/camera'\r\nimport { ArrayEquals } from '../helpers/data'\r\nimport { Isolation } from '../helpers/isolation'\r\nimport { BimTreeData, VimTreeNode } from './bimTreeData'\r\n\r\nexport type TreeActionRef = {\r\n  showAll: () => void\r\n  hideAll: () => void\r\n  collapseAll: () => void\r\n  selectSiblings: (element: VIM.Object3D) => void\r\n}\r\n\r\n/**\r\n * Treeview component reprentation of current vim document bim data.\r\n * @param viewer current viewer.\r\n * @param elements an array with all element bim data.\r\n * @param objects an array of objects to include in the tree view.\r\n * @param isolation current isolation state.\r\n */\r\nexport function BimTree (props: {\r\n  actionRef: React.MutableRefObject<TreeActionRef>\r\n  viewer: VIM.Viewer\r\n  camera: CameraHelpers\r\n  objects: VIM.Object3D[]\r\n  isolation: Isolation\r\n  treeData: BimTreeData\r\n}) {\r\n  // Data state\r\n  const [objects, setObjects] = useState<VIM.Object3D[]>([])\r\n\r\n  // Tree state\r\n  const [expandedItems, setExpandedItems] = useState<number[]>([])\r\n  const [selectedItems, setSelectedItems] = useState<number[]>([])\r\n  const [focusedItem, setFocusedItem] = useState<number>()\r\n  const [doubleClick] = useState(new DoubleClickManager())\r\n  const [, setVersion] = useState(0)\r\n  const focus = useRef<number>(0)\r\n  const div = useRef<HTMLDivElement>()\r\n\r\n  props.actionRef.current = useMemo(\r\n    () => ({\r\n      showAll: () => {\r\n        props.isolation.clear('tree')\r\n      },\r\n      hideAll: () => {\r\n        props.isolation.isolate([], 'tree')\r\n      },\r\n      collapseAll: () => {\r\n        setExpandedItems([])\r\n      },\r\n      selectSiblings: (object: VIM.Object3D) => {\r\n        const element = object.element\r\n        const node = props.treeData.getNodeFromElement(element)\r\n        const siblings = props.treeData.getSiblings(node)\r\n        const result = siblings.map((n) => {\r\n          const nn = props.treeData.nodes[n]\r\n          const e = nn.data.index\r\n          const o = props.viewer.vims[0].getObjectFromElement(e)\r\n          return o\r\n        })\r\n\r\n        props.viewer.selection.select(result)\r\n      }\r\n    }),\r\n    [props.treeData]\r\n  )\r\n\r\n  useEffect(() => {\r\n    setExpandedItems([])\r\n  }, [props.treeData])\r\n\r\n  useEffect(() => {\r\n    ReactTooltip.rebuild()\r\n  }, [expandedItems, props.treeData])\r\n\r\n  // Scroll view so that element is visible, if needed.\r\n  useEffect(() => {\r\n    if (props.treeData && objects.length === 1 && div.current) {\r\n      scrollToSelection(div.current)\r\n      const [first] = props.viewer.selection.objects\r\n      focus.current = props.treeData.getNodeFromElement(first.element)\r\n    }\r\n  }, [props.treeData, objects])\r\n\r\n  useEffect(() => {\r\n    const unsubscribe = props.viewer.renderer.onSceneUpdated.subscribe(() => {\r\n      props.treeData?.updateVisibility(props.viewer.vims[0])\r\n      setVersion((v) => v + 1)\r\n    })\r\n\r\n    return () => {\r\n      unsubscribe()\r\n    }\r\n  }, [props.treeData])\r\n\r\n  // Display loading if no elements\r\n  if (!props.treeData) {\r\n    return (\r\n      <div className=\"vim-bim-tree\" ref={div}>\r\n        Loading . . .\r\n      </div>\r\n    )\r\n  }\r\n\r\n  // Update tree state\r\n  if (!ArrayEquals(props.objects, objects)) {\r\n    setObjects(props.objects)\r\n    const nodes = props.objects.map((o) =>\r\n      props.treeData.getNodeFromElement(o.element)\r\n    )\r\n\r\n    // updated expanded items\r\n    const parents = nodes.flatMap((n) => props.treeData.getAncestors(n))\r\n    const selection = props.treeData.getSelection(\r\n      props.objects.map((o) => o.element)\r\n    )\r\n    setExpandedItems([...new Set(expandedItems.concat(parents))])\r\n    setSelectedItems(selection)\r\n  }\r\n\r\n  if (!props.treeData) return null\r\n\r\n  return (\r\n    <div\r\n      className=\"vim-bim-tree vc-mt-2  vc-flex-1 vc-flex vc-w-full vc-min-h-0\"\r\n      ref={div}\r\n      tabIndex={0}\r\n      onFocus={() => (props.viewer.inputs.keyboard.arrowsEnabled = false)}\r\n      onBlur={() => (props.viewer.inputs.keyboard.arrowsEnabled = true)}\r\n    >\r\n      <ControlledTreeEnvironment\r\n        renderDepthOffset={div.current ? Math.min(div.current.clientWidth * 0.04, 10) : 10 }\r\n        items={props.treeData.nodes}\r\n\r\n        getItemTitle={(item) => (item as VimTreeNode).title}\r\n        showLiveDescription={false}\r\n        viewState={{\r\n          'tree-bim': {\r\n            focusedItem,\r\n            expandedItems,\r\n            selectedItems\r\n          }\r\n        }}\r\n        // Custom Rendering of items to add visibility toggles\r\n        renderItemTitle={({ title, item, context }) => (\r\n          <>\r\n            <span className=\"rct-tree-item-title\" data-tip={title}>\r\n              {title}\r\n            </span>\r\n            <div\r\n              className={`rct-tree-item-visibility ${\r\n                props.treeData.nodes[item.index as number].visible\r\n              }`}\r\n              onClick={(e) => {\r\n                toggleVisibility(\r\n                  props.viewer,\r\n                  props.isolation,\r\n                  props.treeData,\r\n                  item.index as number\r\n                )\r\n                e.stopPropagation()\r\n              }}\r\n            ></div>\r\n          </>\r\n        )}\r\n        canRename={false}\r\n        canSearchByStartingTyping={false}\r\n        canSearch={false}\r\n        defaultInteractionMode={{\r\n          mode: 'custom',\r\n          extends: InteractionMode.ClickArrowToExpand,\r\n          createInteractiveElementProps: (\r\n            item,\r\n            treeId,\r\n            actions,\r\n            renderFlags\r\n          ) => ({\r\n            onKeyUp: (e) => {\r\n              if (e.key === 'f') {\r\n                props.camera.frameContext()\r\n              }\r\n              if (e.key === 'Escape') {\r\n                props.viewer.selection.clear()\r\n              }\r\n            },\r\n            onContextMenu: (e) => {\r\n              showContextMenu({ x: e.clientX, y: e.clientY })\r\n              e.preventDefault()\r\n              e.stopPropagation()\r\n            },\r\n            onPointerEnter: (e) => {\r\n              actions.focusItem()\r\n            },\r\n            onClick: (e) => {\r\n              if (e.shiftKey) {\r\n                const range = props.treeData.getRange(\r\n                  focus.current,\r\n                  item.index as number\r\n                )\r\n                updateViewerSelection(props.treeData, props.viewer, range, 'set')\r\n              } else if (isControlKey(e)) {\r\n                if (renderFlags.isSelected) {\r\n                  const leafs = props.treeData.getLeafs(item.index as number)\r\n                  updateViewerSelection(props.treeData, props.viewer, leafs, 'remove')\r\n                  focus.current = item.index as number\r\n                } else {\r\n                  const leafs = props.treeData.getLeafs(item.index as number)\r\n                  updateViewerSelection(props.treeData, props.viewer, leafs, 'add')\r\n                  focus.current = item.index as number\r\n                }\r\n              } else {\r\n                const leafs = props.treeData.getLeafs(item.index as number)\r\n                updateViewerSelection(props.treeData, props.viewer, leafs, 'set')\r\n                focus.current = item.index as number\r\n              }\r\n              actions.primaryAction()\r\n              actions.focusItem()\r\n            }\r\n          })\r\n        }}\r\n        // Impement double click\r\n        onPrimaryAction={(item, _) => {\r\n          if (doubleClick.isDoubleClick(item.index as number)) {\r\n            props.camera.frameSelection()\r\n          }\r\n        }}\r\n        // Default behavior\r\n        onFocusItem={(item) => {\r\n          const index = item.index as number\r\n          setFocusedItem(index)\r\n          updateViewerFocus(props.viewer, props.treeData, index)\r\n        }}\r\n        // Default behavior\r\n        onExpandItem={(item) => {\r\n          setExpandedItems([...expandedItems, item.index as number])\r\n        }}\r\n        // Default behavior\r\n        onCollapseItem={(item) => {\r\n          setExpandedItems(\r\n            expandedItems.filter(\r\n              (expandedItemIndex) => expandedItemIndex !== item.index\r\n            )\r\n          )\r\n        }}\r\n      >\r\n        <Tree treeId=\"tree-bim\" rootItem=\"0\" treeLabel=\"Tree Example\" />\r\n      </ControlledTreeEnvironment>\r\n    </div>\r\n  )\r\n}\r\n\r\nfunction toggleVisibility (\r\n  viewer: VIM.Viewer,\r\n  isolation: Isolation,\r\n  tree: BimTreeData,\r\n  index: number\r\n) {\r\n  const objs = tree\r\n    .getLeafs(index)\r\n    .map((n) =>\r\n      viewer.vims[0]?.getObjectFromElement(tree.nodes[n]?.data.index)\r\n    )\r\n\r\n  const visibility = tree.nodes[index].visible\r\n  if (visibility !== 'vim-visible') {\r\n    isolation.show(objs, 'tree')\r\n  } else {\r\n    isolation.hide(objs, 'tree')\r\n  }\r\n}\r\n\r\nfunction updateViewerFocus (\r\n  viewer: VIM.Viewer,\r\n  tree: BimTreeData,\r\n  index: number\r\n) {\r\n  const node = tree.nodes[index]\r\n  const obj = viewer.vims[0].getObjectFromElement(node.data?.index)\r\n  viewer.selection.focus(obj)\r\n}\r\n\r\nfunction updateViewerSelection (\r\n  tree: BimTreeData,\r\n  viewer: VIM.Viewer,\r\n  nodes: number[],\r\n  operation: 'add' | 'remove' | 'set'\r\n) {\r\n  const objects: VIM.Object3D[] = []\r\n  nodes.forEach((n) => {\r\n    const item = tree.nodes[n]\r\n    const element = item.data.index\r\n\r\n    const obj = viewer.vims[0].getObjectFromElement(element)\r\n    objects.push(obj)\r\n  })\r\n  switch (operation) {\r\n    case 'add':\r\n      viewer.selection.add(...objects)\r\n      break\r\n    case 'remove':\r\n      viewer.selection.remove(...objects)\r\n      break\r\n    case 'set':\r\n      viewer.selection.select(objects)\r\n      break\r\n  }\r\n}\r\n\r\nfunction scrollToSelection (div: HTMLDivElement) {\r\n  // A bit of hack relying on the property of selected element\r\n  const selectedItems = div?.querySelectorAll('[aria-selected=\"true\"]')\r\n  const selection = selectedItems?.[selectedItems?.length - 1]\r\n  if (!selection) return\r\n\r\n  const rectElem = selection.getBoundingClientRect()\r\n  const rectContainer = div.getBoundingClientRect()\r\n\r\n  // Scroll to bottom\r\n  if (\r\n    rectElem.bottom > rectContainer.bottom ||\r\n    rectElem.bottom > window.innerHeight\r\n  ) {\r\n    selection.scrollIntoView(false)\r\n    return\r\n  }\r\n\r\n  // Scroll to Top\r\n  if (rectElem.top < rectContainer.top || rectElem.top < 0) {\r\n    selection.scrollIntoView()\r\n  }\r\n}\r\n\r\n// Taken from https://github.com/lukasbach/react-complex-tree/blob/main/packages/core/src/isControlKey.ts\r\nexport const isControlKey = (e: React.MouseEvent<any, any>) => {\r\n  return (\r\n    e.ctrlKey ||\r\n    (navigator.platform.toUpperCase().indexOf('MAC') >= 0 && e.metaKey)\r\n  )\r\n}\r\n\r\nclass DoubleClickManager {\r\n  private _lastTime: number\r\n  private _lastTarget: number\r\n\r\n  isDoubleClick = (target: number) => {\r\n    const time = new Date().getTime()\r\n    if (this._lastTarget === target && time - this._lastTime < 200) {\r\n      this._lastTarget = -1\r\n      this._lastTime = 0\r\n      return true\r\n    } else {\r\n      this._lastTarget = target\r\n      this._lastTime = new Date().getTime()\r\n      return false\r\n    }\r\n  }\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport React, { useEffect, useRef, useState } from 'react'\r\nimport * as Icons from '../panels/icons'\r\nimport * as VIM from 'vim-webgl-viewer'\r\n\r\nconst SEARCH_DELAY_MS = 200\r\n/**\r\n * Returns a jsx component of a search bar to search and filter bim data.\r\n * @param viewer viewer helper.\r\n * @param filter current search string.\r\n * @param setFilter callback to set filter\r\n * @param count current search result count.\r\n */\r\nexport function BimSearch (props: {\r\n  viewer: VIM.Viewer\r\n  filter: string\r\n  setFilter: (s: string) => void\r\n  count: number\r\n}) {\r\n  const [text, setText] = useState('')\r\n  const changeTimeout = useRef<ReturnType<typeof setTimeout>>()\r\n\r\n  useEffect(() => {\r\n    setText(props.filter)\r\n  }, [props.filter])\r\n\r\n  const onChange = (e: React.FormEvent<HTMLInputElement>) => {\r\n    const value = e.currentTarget.value\r\n    setText(value)\r\n    clearTimeout(changeTimeout.current)\r\n    changeTimeout.current = setTimeout(\r\n      () => {\r\n        props.setFilter(value)\r\n        console.log('set filter ' + value)\r\n      },\r\n\r\n      SEARCH_DELAY_MS\r\n    )\r\n  }\r\n\r\n  const onClear = () => {\r\n    console.log('clear filter')\r\n    setText('')\r\n    clearTimeout(changeTimeout.current)\r\n    props.setFilter('')\r\n  }\r\n\r\n  const onFocus = () => {\r\n    props.viewer.inputs.keyboard.unregister()\r\n  }\r\n\r\n  const onBlur = () => {\r\n    props.viewer.inputs.keyboard.register()\r\n  }\r\n\r\n  return (\r\n    <div className=\"vim-bim-search vc-relative vc-flex vc-items-center\">\r\n      <svg\r\n        className=\"search-icon -vc-mr-4 vc-text-gray-light\"\r\n        xmlns=\"http://www.w3.org/2000/svg\"\r\n        width=\"16\"\r\n        viewBox=\"0 0 256 256\"\r\n      >\r\n        <path\r\n          fill=\"currentColor\"\r\n          id=\"ICONS\"\r\n          d=\"m244.485 216.201-39.552-39.552a11.956 11.956 0 0 0-8.81-3.5C208.621 155.986 216 134.856 216 112 216 54.562 169.438 8 112 8S8 54.562 8 112s46.562 104 104 104c22.856 0 43.986-7.379 61.149-19.877a11.956 11.956 0 0 0 3.5 8.81l39.552 39.552c4.686 4.686 12.284 4.686 16.971 0l11.313-11.313c4.686-4.687 4.686-12.285 0-16.971ZM112 184c-39.701 0-72-32.299-72-72s32.299-72 72-72 72 32.299 72 72-32.299 72-72 72Z\"\r\n        />\r\n      </svg>\r\n      <input\r\n        className=\"search-input vc-placeholder-text-gray-medium vc-w-full vc-border-b vc-border-t-0 vc-border-l-0 vc-border-r-0 vc-border-gray-light vc-bg-transparent vc-py-1 vc-pl-6 vc-outline-none focus-within:vc-border-b-primary-royal focus-within:vc-text-primary-royal focus-within:vc-outline-none focus:vc-outline-none active:vc-text-primary-royal\"\r\n        type=\"input\"\r\n        name=\"name\"\r\n        placeholder=\"Type here to search\"\r\n        value={text}\r\n        onFocus={onFocus}\r\n        onBlur={onBlur}\r\n        onChange={onChange}\r\n      />\r\n      {text.length > 0\r\n        ? (\r\n        <button\r\n          className=\"search-clear vc-absolute vc-right-0 vc-flex vc-h-4 vc-w-4 vc-shrink-0 vc-items-center vc-justify-center vc-rounded-full vc-bg-gray-medium vc-text-white\"\r\n          onClick={onClear}\r\n        >\r\n          {Icons.close({ width: 10, height: 10, fill: 'currentColor' })}{' '}\r\n        </button>\r\n          )\r\n        : null}\r\n\r\n      {props.count !== undefined && text\r\n        ? (\r\n        <div className=\"search-count vc-absolute vc-right-8 vc-rounded-full vc-bg-primary-royal vc-py-0.5 vc-px-2 vc-font-bold vc-text-white\">\r\n          {props.count}\r\n        </div>\r\n          )\r\n        : null}\r\n    </div>\r\n  )\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\nimport * as VIM from 'vim-webgl-viewer'\r\n\r\nimport { TreeItem } from 'react-complex-tree'\r\nimport { MapTree, sort, toMapTree } from '../helpers/data'\r\nimport { AugmentedElement } from '../helpers/element'\r\n\r\n/**\r\n * Custom visibility CSS classes to avoid clashes with tailwind\r\n */\r\nexport type NodeVisibility = 'vim-visible' | 'vim-undefined' | 'vim-hidden'\r\n\r\nexport type Grouping = 'Family' | 'Level' | 'Workset'\r\n\r\n/**\r\n * Extension of TreeItem\r\n */\r\nexport type VimTreeNode = TreeItem<AugmentedElement> & {\r\n  title: string\r\n  parent: number\r\n  visible: NodeVisibility\r\n}\r\n\r\n/**\r\n * Returns map-based tree with elements organized hierarchically.\r\n * @param viewer current viewer.\r\n * @param elements elements to include in the treeview.\r\n * @returns\r\n */\r\nexport function toTreeData (\r\n  vim: VIM.Vim,\r\n  elements: AugmentedElement[],\r\n  grouping: Grouping\r\n) {\r\n  if (!elements?.length) return\r\n\r\n  const main: (e: AugmentedElement) => string =\r\n    grouping === 'Family'\r\n      ? (e) => e.categoryName\r\n      : grouping === 'Level'\r\n        ? (e) => e.levelName\r\n        : grouping === 'Workset'\r\n          ? (e) => e.worksetName\r\n          : null\r\n\r\n  const tree = toMapTree(elements, [\r\n    main,\r\n    (e) => e.familyName,\r\n    (e) => e.familyTypeName\r\n  ])\r\n  sort(tree)\r\n\r\n  const result = new BimTreeData(tree)\r\n  result.updateVisibility(vim)\r\n  return result\r\n}\r\n\r\nexport class BimTreeData {\r\n  nodes: Record<number, VimTreeNode>\r\n  elementToNode: Map<number, number>\r\n\r\n  constructor (map: MapTree<string, AugmentedElement>) {\r\n    this.nodes = {}\r\n    this.elementToNode = new Map<number, number>()\r\n\r\n    this.flatten(map)\r\n  }\r\n\r\n  updateVisibility (vim: VIM.Vim) {\r\n    const set = new Set<VimTreeNode>()\r\n    const updateOne = (node: VimTreeNode): NodeVisibility => {\r\n      if (set.has(node)) {\r\n        return node.visible\r\n      }\r\n      set.add(node)\r\n      if (node.children.length > 0) {\r\n        let hidden = true\r\n        let visible = true\r\n        node.children.forEach((c) => {\r\n          const r = updateOne(this.nodes[c])\r\n          if (r !== 'vim-hidden') hidden = false\r\n          if (r !== 'vim-visible') visible = false\r\n        })\r\n        node.visible = visible\r\n          ? 'vim-visible'\r\n          : hidden\r\n            ? 'vim-hidden'\r\n            : 'vim-undefined'\r\n        return node.visible\r\n      } else {\r\n        const obj = vim.getObjectFromElement(node.data?.index)\r\n        node.visible = obj?.visible ? 'vim-visible' : 'vim-hidden'\r\n        return node.visible\r\n      }\r\n    }\r\n    for (const n of Object.values(this.nodes)) {\r\n      if (set.has(n)) continue\r\n      updateOne(n)\r\n    }\r\n  }\r\n\r\n  getRange (start: number, end: number) {\r\n    const min = Math.min(start, end)\r\n    const max = Math.max(start, end)\r\n    const result: number[] = []\r\n    for (const node of Object.values(this.nodes)) {\r\n      const index = node.index as number\r\n      if (index >= min && index <= max) result.push(index)\r\n    }\r\n    return result\r\n  }\r\n\r\n  getNodeFromElement (element: number) {\r\n    return this.elementToNode.get(element)\r\n  }\r\n\r\n  getLeafs (node: number, result: number[] = []) {\r\n    const current = this.nodes[node]\r\n    if (current.children?.length > 0) {\r\n      current.children.forEach((c) => this.getLeafs(c as number, result))\r\n    } else {\r\n      result.push(current.index as number)\r\n    }\r\n    return result\r\n  }\r\n\r\n  getSelection (elements: number[]) {\r\n    const nodes = elements.map((e) => this.elementToNode.get(e))\r\n    return [...new Set(nodes.flatMap((n) => this.getAncestors(n)))]\r\n  }\r\n\r\n  countPredicate (node, predicate: (c: number) => boolean) {\r\n    let all = true\r\n    let none = true\r\n    const leafs = this.getLeafs(node)\r\n    for (const n of leafs) {\r\n      if (predicate(n)) {\r\n        none = false\r\n      } else {\r\n        all = false\r\n      }\r\n    }\r\n    // No items -> none\r\n    return none ? 'none' : all ? 'all' : 'some'\r\n  }\r\n\r\n  getChildren (\r\n    node: number,\r\n    includeSelf = false,\r\n    recursive = false,\r\n    result: number[] = []\r\n  ) {\r\n    if (includeSelf) {\r\n      result.push(node)\r\n    }\r\n    const current = this.nodes[node]\r\n    if (current.children?.length > 0) {\r\n      if (recursive) {\r\n        current.children.forEach((c) =>\r\n          this.getChildren(c as number, true, recursive, result)\r\n        )\r\n      } else {\r\n        current.children.forEach((c) => result.push(c as number))\r\n      }\r\n    }\r\n    return result\r\n  }\r\n\r\n  getParent (node: number) {\r\n    const current = this.nodes[node]\r\n    return current.parent\r\n  }\r\n\r\n  getSiblings (node: number) {\r\n    const parent = this.nodes[node].parent\r\n    const siblings = this.getChildren(parent)\r\n    return siblings\r\n  }\r\n\r\n  getAncestors (node: number) {\r\n    const result: number[] = []\r\n    let n = node\r\n    let current = this.nodes[n]\r\n    while (current) {\r\n      result.push(n)\r\n      n = n = current.parent\r\n      current = this.nodes[n]\r\n    }\r\n    return result\r\n  }\r\n\r\n  private flatten (\r\n    map: MapTree<string, AugmentedElement>,\r\n    i = -1\r\n  ): [number, number[]] {\r\n    const keys: number[] = []\r\n    const parent = i\r\n    for (const [k, v] of map.entries()) {\r\n      keys.push(++i)\r\n      if (v instanceof Map) {\r\n        // Recurse down the tree\r\n        const [next, children] = this.flatten(v, i)\r\n        this.nodes[i] = {\r\n          index: i,\r\n          parent,\r\n          title: k,\r\n          isFolder: children.length > 0,\r\n          data: undefined,\r\n          children,\r\n          visible: undefined\r\n        }\r\n        i = next\r\n      } else {\r\n        // Add last parent\r\n        this.nodes[i] = {\r\n          index: i,\r\n          parent,\r\n          title: k,\r\n          isFolder: v.length > 0,\r\n          data: undefined,\r\n          children: range(v.length, i + 1),\r\n          visible: undefined\r\n        }\r\n        const self = i\r\n        // Add the leaves\r\n        v.forEach((e) => {\r\n          this.nodes[++i] = {\r\n            index: i,\r\n            parent: self,\r\n            title: `${e.name} ${e.id ? `[${e.id}]` : ''}`,\r\n            isFolder: false,\r\n            data: e,\r\n            children: [],\r\n            visible: undefined\r\n          }\r\n          this.elementToNode.set(e.index, i)\r\n        })\r\n      }\r\n    }\r\n    // return last used index and sibling indices at this level.\r\n    return [i, keys]\r\n  }\r\n}\r\n\r\nfunction range (size: number, startAt = 0) {\r\n  return [...Array(size).keys()].map((i) => i + startAt)\r\n}\r\n","import { useState } from 'react'\r\n\r\n// Open state is kept here to persist between panel open/close.\r\n// New dictionaries are created all the time to trigger rerender on setOpen.\r\nexport function createOpenState () {\r\n  const [open, setOpen] = useState<Map<string, boolean>>()\r\n\r\n  const update = (group: string, value: boolean) => {\r\n    const next = new Map(open?.entries() ?? []).set(group, value)\r\n    setOpen(next)\r\n  }\r\n\r\n  const init = (keys: string[]) => {\r\n    const map = new Map(open?.entries() ?? [])\r\n    keys.forEach((k) => {\r\n      if (!map.has(k)) map.set(k, true)\r\n    })\r\n    setOpen(map)\r\n  }\r\n\r\n  const get = (s: string) => open?.get(s) ?? false\r\n\r\n  return { init, get, set: update }\r\n}\r\n","import React, { useEffect } from 'react'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport * as Icons from '../panels/icons'\r\nimport * as BIM from './bimInfoData'\r\nimport { createOpenState } from './openState'\r\nimport { BimInfoPanelRef } from './bimInfoData'\r\n\r\n/**\r\n * Represents the details of a BIM object.\r\n */\r\nexport function BimBody (\r\n  props:{\r\n    bimInfoRef: BimInfoPanelRef,\r\n    sections : BIM.Section[],\r\n  }\r\n) {\r\n  const open = createOpenState()\r\n\r\n  useEffect(() => {\r\n    ReactTooltip.rebuild()\r\n  })\r\n\r\n  useEffect(() => {\r\n    // Initialize open state with all groups open\r\n    if (props.sections !== undefined) {\r\n      open.init(props.sections.flatMap((s) => s.content.map(g => g.title)))\r\n    }\r\n  }, [props.sections])\r\n\r\n  if (!props.sections) {\r\n    // Loading until data is available\r\n    return <div key='vim-bim-body' className=\"vim-bim-body\">Loading . . .</div>\r\n  }\r\n\r\n  function func (section: BIM.Section, i: number) {\r\n    const standard = () => createSection(props.bimInfoRef, section, open.get, open.set)\r\n    if (props.bimInfoRef.onRenderBodySection !== undefined) {\r\n      return React.createElement(props.bimInfoRef.onRenderBodySection, { data: section, standard })\r\n    }\r\n    return standard()\r\n  }\r\n  return (\r\n    <div className=\"vim-bim-body\" >\r\n      {props.sections.map((section, i) => (\r\n      <div key={section.key} className='vim-bim-section'>\r\n        {func(section, i)}\r\n      </div>))}\r\n    </div>)\r\n}\r\n\r\nfunction createSection (\r\n  bimInfoRef: BimInfoPanelRef,\r\n  section: BIM.Section,\r\n  getOpen: (key: string) => boolean,\r\n  setOpen: (key: string, value: boolean) => void\r\n) {\r\n  const createTitle = (value: string) => {\r\n    return (\r\n      <h2\r\n        key={`title-${value}`}\r\n        className=\"vim-bim-section-title vc-inline-flex vc-w-auto vc-rounded-t vc-border-t vc-border-l vc-border-r vc-border-gray-light vc-px-2 vc-title vc-text-gray-medium\"\r\n      >\r\n        {value}\r\n      </h2>\r\n    )\r\n  }\r\n\r\n  const createContent = (group: BIM.Group) => {\r\n    const standard = () => createGroup(bimInfoRef, group, getOpen, setOpen)\r\n    if (bimInfoRef.onRenderBodyGroup !== undefined) {\r\n      return React.createElement(bimInfoRef.onRenderBodyGroup, { data: group, standard })\r\n    }\r\n    return standard()\r\n  }\r\n\r\n  const content = Array.from(section.content, (group, i) => (\r\n    <div key={group.key} className='vim-bim-group'>\r\n      {createContent(group)}\r\n    </div>))\r\n\r\n  return <>\r\n    {section.title ? createTitle(section.title) : null}\r\n    {content}\r\n    {<br/>}\r\n  </>\r\n}\r\n\r\nfunction createGroup (\r\n  bimInfoRef: BimInfoPanelRef,\r\n  group: BIM.Group,\r\n  getOpen: (key: string) => boolean,\r\n  setOpen: (key: string, value: boolean) => void\r\n) {\r\n  const open = getOpen(group.title)\r\n  return (\r\n    <ul>\r\n      <li key={'title-' + group.key} className='vim-bim-group-title'>\r\n        <h3 className=\"vc-flex vc-justify-between vc-items-center vc-bg-gray-light vc-px-2 vc-title\">\r\n          <span style = {{ width: 'calc(100% - 24px)' }} className='vc-whitespace-nowrap vc-truncate'>{group.title}</span>\r\n          {createCollapseButton(open, (b) => setOpen(group.title, b))}\r\n        </h3>\r\n      </li>\r\n      {createGroupContent(bimInfoRef, group, open)}\r\n    </ul>\r\n  )\r\n}\r\n\r\nfunction createCollapseButton (\r\n  open: boolean,\r\n  setOpen: (b: boolean) => void\r\n) {\r\n  return (\r\n    <button\r\n    className=\"vim-group-collapse-button vc-text-gray-medium vc-\"\r\n    onClick={() => setOpen(!open)}\r\n  >\r\n    {' '}\r\n    {open\r\n      ? (\r\n      <Icons.collapse\r\n        className=\"vc-rotate-180 vc-max-h-full vc-transition-all\"\r\n        height={15}\r\n        width={15}\r\n        fill=\"currentColor\"\r\n      />\r\n        )\r\n      : (\r\n      <Icons.collapse\r\n        className=\"vc-rotate-0 vc-max-h-full vc-transition-all\"\r\n        height={15}\r\n        width={15}\r\n        fill=\"currentColor\"\r\n      />\r\n        )}\r\n  </button>\r\n  )\r\n}\r\n\r\nfunction createGroupContent (\r\n  bimInfoRef: BimInfoPanelRef,\r\n  group: BIM.Group,\r\n  open: boolean) {\r\n  if (open === false) return null\r\n\r\n  const func = (entry: BIM.Entry) => {\r\n    const standard = () => createEntry(bimInfoRef, entry)\r\n    if (bimInfoRef.onRenderBodyEntry !== undefined) {\r\n      return React.createElement(bimInfoRef.onRenderBodyEntry, { data: entry, standard })\r\n    }\r\n    return standard()\r\n  }\r\n\r\n  return group.content.map((entry, i) => (\r\n    <div key={entry.key} className='vim-bim-entry'>\r\n      {func(entry)}\r\n    </div>))\r\n}\r\n\r\nfunction createEntry (bimInfoRef: BimInfoPanelRef, entry: BIM.Entry) {\r\n  const func = () => {\r\n    const standard = () => (<>{entry.value}</>)\r\n    if (bimInfoRef.onRenderBodyEntryValue !== undefined) {\r\n      return React.createElement(bimInfoRef.onRenderBodyEntryValue, { data: entry, standard })\r\n    }\r\n    return standard()\r\n  }\r\n\r\n  return (\r\n    <li\r\n      className=\"vim-bim-body-entry vc-even:bg-white vc-odd:bg-gray-zebra vc-flex\"\r\n      key={'parameters-tr-' + entry.key}\r\n    >\r\n      <span\r\n        data-tip={entry.value}\r\n        className=\"vim-bim-body-entry-title vc-w-1/3 vc-px-2 vc-select-none vc-truncate vc-border-r vc-border-gray-light\"\r\n        key={'parameters-th-' + entry.key}\r\n      >\r\n        {entry.label}\r\n      </span>\r\n      <span\r\n        data-tip={entry.value}\r\n        className=\"vim-bim-body-entry-value vc-w-2/3 vc-truncate vc-px-2 vc-text-gray-medium\"\r\n        key={'parameters-td-' + entry.key}\r\n      >\r\n        {func()}\r\n      </span>\r\n    </li>\r\n  )\r\n}\r\n","import React from 'react'\r\nimport * as BIM from './bimInfoData'\r\nimport { BimInfoPanelRef } from './bimInfoData'\r\n\r\nexport function BimHeader (props: {\r\n  bimInfoRef: BimInfoPanelRef\r\n  entries: BIM.Entry[]\r\n}) {\r\n  if (props.entries === undefined) {\r\n    return <div className=\"vim-bim-inspector\">Loading . . .</div>\r\n  }\r\n\r\n  const create = (entry: BIM.Entry, i: number) => {\r\n    const standard = () => createEntry(props.bimInfoRef, entry)\r\n    if (props.bimInfoRef.onRenderHeaderEntry !== undefined) {\r\n      return React.createElement(props.bimInfoRef.onRenderHeaderEntry, { data: entry, standard })\r\n    }\r\n    return standard()\r\n  }\r\n\r\n  const rows = props.entries.map((entry, rowIndex) => (\r\n    <div key={entry.key} className='vim-bim-header-entry'>\r\n      {create(entry, rowIndex)}\r\n    </div>))\r\n\r\n  return (\r\n    <div className=\"vim-bim-header\">{rows}</div>\r\n  )\r\n}\r\n\r\nfunction createEntry (bimInfoRef: BimInfoPanelRef, entry: BIM.Entry) {\r\n  const create = () => {\r\n    const standard = () => (<>{entry.value?.toString()}</>)\r\n    if (bimInfoRef.onRenderHeaderEntryValue !== undefined) {\r\n      return React.createElement(bimInfoRef.onRenderHeaderEntryValue, { data: entry, standard })\r\n    }\r\n    return standard()\r\n  }\r\n  return (\r\n    <dl\r\n      key={`dl-${entry.key}`}\r\n      className={'vim-bim-header-entry vc-flex vc-w-full vc-w-full'}\r\n    >\r\n      < dt\r\n        data-tip={entry.label}\r\n        className={'bim-header-entry-title vc-mr-1 vc-shrink-0 vc-select-none vc-whitespace-nowrap vc-truncate vc-text-gray-medium vc-w-1/3'}\r\n        key={`dt-${entry.key}`}\r\n      >\r\n        {entry.label}\r\n      </dt>\r\n      <dd\r\n        data-tip={entry.value}\r\n        className={'bim-header-entry-value vc-truncate vc-shrink-1'}\r\n        key={`dd-${entry.key}`}\r\n      >\r\n        {create()}\r\n      </dd>\r\n    </dl>\r\n  )\r\n}\r\n","/**\r\n * Compares two strings based on a specified order.\r\n * @param s1 The first string to compare.\r\n * @param s2 The second string to compare.\r\n * @param order Optional. A Map object representing the order of strings.\r\n *              The key is the string value, and the value is the order index.\r\n *              Strings with lower order index come before strings with higher order index.\r\n *              If omitted, strings are compared based on their natural order (localeCompare).\r\n * @returns A negative number if s1 should come before s2,\r\n *          a positive number if s1 should come after s2,\r\n *          or zero if s1 and s2 are equal.\r\n */\r\nexport function compare (s1: string | undefined, s2: string | undefined, order? : Map<string, number>) : number {\r\n  if (!s1 || !s2) {\r\n    if (s1 && !s2) return 1\r\n    if (!s1 && !s2) return 0\r\n    if (!s1 && s2) return -1\r\n  } else {\r\n    const o1 = order?.get(s1)\r\n    const o2 = order?.get(s2)\r\n    if (!o1 || !o2) {\r\n      if (o1 && !o2) return -1\r\n      if (!o1 && o2) return 1\r\n      if (!o1 && !o2) return s1.localeCompare(s2)\r\n    } else {\r\n      const eq = o2 - o1\r\n      if (eq === 0) return s1.localeCompare(s2)\r\n      return eq\r\n    }\r\n  }\r\n\r\n  // This should never happen\r\n  return 0\r\n}\r\n","import * as VIM from 'vim-webgl-viewer/'\r\nimport { groupBy } from '../helpers/data'\r\nimport * as BIM from './bimInfoData'\r\nimport { compare } from './bimUtils'\r\nimport { AugmentedElement } from '../helpers/element'\r\n\r\n// TODO: Get this type from vim-format\r\nexport declare type ElementParameter = {\r\n  name: string | undefined;\r\n  value: string | undefined;\r\n  group: string | undefined;\r\n  isInstance: boolean;\r\n};\r\n\r\nexport async function getObjectData (object: VIM.Object3D, elements: AugmentedElement[]) : Promise<BIM.Data> {\r\n  const element = object\r\n    ? elements.find((e) => e.index === object.element)\r\n    : undefined\r\n\r\n  const [header, body] = await Promise.all([\r\n    getHeader(element),\r\n    getBody(object)\r\n  ])\r\n\r\n  return { header, body }\r\n}\r\n\r\nexport function getHeader (info: AugmentedElement | undefined): BIM.Entry[] | undefined {\r\n  if (info === undefined) return undefined\r\n  return [\r\n    {\r\n      key: 'document',\r\n      label: 'Document',\r\n      value: info.bimDocumentName\r\n    },\r\n    {\r\n      key: 'workset',\r\n      label: 'Workset',\r\n      value: info.worksetName\r\n    },\r\n    {\r\n      key: 'category',\r\n      label: 'Category',\r\n      value: info.categoryName\r\n    },\r\n    {\r\n      key: 'familyName',\r\n      label: 'Family Name',\r\n      value: info.familyName ?? ''\r\n    },\r\n    {\r\n      key: 'familyTypeName',\r\n      label: 'Family Type',\r\n      value: info.familyName ?? ''\r\n    },\r\n    {\r\n      key: 'elementId',\r\n      label: 'Element Id',\r\n      value: info.id?.toString() ?? ''\r\n    }\r\n  ]\r\n}\r\n\r\nexport async function getBody (\r\n  object: VIM.Object3D\r\n): Promise<BIM.Section[]> {\r\n  let parameters = await object?.getBimParameters()\r\n  if (!parameters) return null\r\n\r\n  parameters = parameters.filter((p) => acceptParameter(p))\r\n  parameters = parameters.sort((a, b) => compare(a.group, b.group, orderMap))\r\n\r\n  const instance = toGroups(groupBy(\r\n    parameters.filter((p) => p.isInstance),\r\n    (p) => p.group\r\n  ))\r\n\r\n  const type = toGroups(groupBy(\r\n    parameters.filter((p) => !p.isInstance),\r\n    (p) => p.group\r\n  ))\r\n\r\n  return [\r\n    { title: 'Instance Properties', content: instance, key: 'instance' },\r\n    { title: 'Type Properties', content: type, key: 'type' }\r\n  ]\r\n}\r\n\r\nfunction toGroups (entries: Map<string, ElementParameter[]>) : BIM.Group[] {\r\n  return [...entries.entries()].map(([k, v], i) => ({\r\n    title: k,\r\n    content: v.map((p, i) => parameterToEntry(p, i)),\r\n    key: `g.title-${i}`\r\n  }))\r\n}\r\n\r\nfunction parameterToEntry (element: ElementParameter, index : number): BIM.Entry {\r\n  return {\r\n    key: `${element.name ?? ''}-${index}`,\r\n    label: element.name ?? '',\r\n    value: element.value ?? ''\r\n  }\r\n}\r\n\r\nfunction acceptParameter (parameter: ElementParameter) {\r\n  let result = true\r\n  rejectedParameters.forEach((p) => {\r\n    if (p === parameter.name) {\r\n      result = false\r\n    }\r\n  })\r\n  return result\r\n}\r\n\r\n// Custom rejected parameters provided by Sam\r\nconst rejectedParameters = [\r\n  'Coarse Scale Fill Pattern',\r\n  'Coarse Scale Fill Color',\r\n  'Image',\r\n  'Type Image',\r\n  'Moves with nearby Element',\r\n  'Location Line',\r\n  'Show family pre-cut in plan views'\r\n]\r\n\r\n// Revit custom ordering provided by Sam\r\nconst ordering = [\r\n  'Analysis Results',\r\n  'Analytical Alignment',\r\n  'Analytical Model',\r\n  'Constraints',\r\n  'Construction',\r\n  'Data',\r\n  'Dimension',\r\n  'Dimensions',\r\n  'Division Geometry',\r\n  'Electrical',\r\n  'Electrical – Circuiting',\r\n  'Electrical – Lighting',\r\n  'Electrical – Loads',\r\n  'Electrical Analysis',\r\n  'Electrical Engineering',\r\n  'Energy Analysis',\r\n  'Fire Protection',\r\n  'Forces',\r\n  'General',\r\n  'Graphics',\r\n  'Green Building Properties',\r\n  'Identity Data',\r\n  'IFC Parameters',\r\n  'Layers',\r\n  'Materials and Finishes',\r\n  'Mechanical',\r\n  'Mechanical – Flow',\r\n  'Mechanical – Loads',\r\n  'Model Properties',\r\n  'Moments',\r\n  'Other',\r\n  'Overall Legend',\r\n  'Phasing',\r\n  'Photometrics',\r\n  'Plumbing',\r\n  'Primary End',\r\n  'Rebar Set',\r\n  'Releases / Member Forces',\r\n  'Secondary End',\r\n  'Segments and Fittings',\r\n  'Set',\r\n  'Slab Shape Edit',\r\n  'Structural',\r\n  'Structural Analysis',\r\n  'Text',\r\n  'Title Text',\r\n  'Visibility'\r\n]\r\nconst orderMap = new Map(ordering.map((s, i) => [s, i]))\r\n","import * as VIM from 'vim-webgl-viewer/'\r\nimport * as BIM from './bimInfoData'\r\nimport { compare } from './bimUtils'\r\n\r\nexport async function getVimData (vim: VIM.Vim): Promise<BIM.Data> {\r\n  const [header, body] = await Promise.all([\r\n    getHeader(vim),\r\n    getBody(vim)\r\n  ])\r\n  return { header, body }\r\n}\r\n\r\nexport async function getHeader (vim: VIM.Vim): Promise<BIM.Entry[]> {\r\n  const documents = await vim?.bim?.bimDocument?.getAll()\r\n  const main = documents\r\n    ? documents.find((d) => !d.isLinked) ?? documents[0]\r\n    : undefined\r\n\r\n  return [\r\n    {\r\n      key: 'document',\r\n      label: 'Document',\r\n      value: formatSource(vim?.source)\r\n    },\r\n    {\r\n      key: 'sourcePath',\r\n      label: 'Source Path',\r\n      value: main?.pathName ?? ''\r\n    },\r\n    {\r\n      key: 'createdOn',\r\n      label: 'Created On',\r\n      value: formatDate(vim?.header?.created)\r\n    },\r\n    {\r\n      key: 'createdWith',\r\n      label: 'Created With',\r\n      value: vim?.header?.generator ?? ''\r\n    },\r\n    {\r\n      key: 'createdBy',\r\n      label: 'Created By',\r\n      value: vim?.header?.generator ?? ''\r\n    }\r\n  ]\r\n}\r\n\r\nfunction formatSource (source: string | undefined) {\r\n  if (!source) return ''\r\n  const parts = source.split('/')\r\n  return parts[parts.length - 1]\r\n}\r\n\r\nfunction formatDate (source: string | undefined) {\r\n  return source?.replace(/(..:..):../, '$1') ?? ''\r\n}\r\n\r\nexport async function getBody (vim: VIM.Vim): Promise<BIM.Section[] | undefined> {\r\n  let documents = await vim?.bim?.bimDocument?.getAll()\r\n  if (!documents) return undefined\r\n\r\n  documents = documents.sort((a, b) => compare(a.title, b.title))\r\n  const groups : BIM.Group[] = documents.map((d, i) =>\r\n    ({\r\n      title: d.title,\r\n      content: [\r\n        { label: 'Product', value: d.product, key: 'product' },\r\n        { label: 'Version', value: d.version, key: 'version' }\r\n      ],\r\n      key: `${d.title}-${i}`\r\n    })\r\n  )\r\n  return [{ title: 'Source Files', content: groups, key: 'source' }]\r\n}\r\n","\r\nimport React, { useEffect, useState } from 'react'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport { BimBody } from './bimInfoBody'\r\nimport { BimHeader } from './bimInfoHeader'\r\nimport { getObjectData } from './bimInfoObject'\r\nimport { getVimData } from './bimInfoVim'\r\nimport { AugmentedElement } from '../helpers/element'\r\nimport { Data, BimInfoPanelRef } from './bimInfoData'\r\n\r\nexport function BimInfoPanel (props : {\r\n    object: VIM.Object3D,\r\n    vim: VIM.Vim,\r\n    elements: AugmentedElement[],\r\n    full : boolean\r\n    bimInfoRef: BimInfoPanelRef\r\n  }\r\n) {\r\n  const target = props.object?.type === 'Object3D' ? props.object : undefined\r\n  useEffect(() => {\r\n    ReactTooltip.rebuild()\r\n  })\r\n\r\n  const [data, setData] = useState<Data>()\r\n\r\n  useEffect(() => {\r\n    // Update data when inputs change\r\n    async function update () {\r\n      let data = props.object === undefined\r\n        ? await getVimData(props.vim)\r\n        : await getObjectData(target, props.elements)\r\n      data = await props.bimInfoRef.onData(data, target ?? props.vim)\r\n      setData(data)\r\n    }\r\n    // UseEffect doesn't accept async functions so we need to wrap it\r\n    update()\r\n  }\r\n  , [props.object, props.vim, props.elements, props.bimInfoRef])\r\n\r\n  const header = () => {\r\n    const standard = () => <BimHeader bimInfoRef={props.bimInfoRef} entries={data?.header}/>\r\n    if (props.bimInfoRef.onRenderHeader !== undefined) {\r\n      return React.createElement(props.bimInfoRef.onRenderHeader, { data: data?.header, standard })\r\n    }\r\n    return standard()\r\n  }\r\n\r\n  const body = () => {\r\n    const standard = () => <BimBody bimInfoRef={props.bimInfoRef} sections={data?.body} />\r\n    if (props.bimInfoRef.onRenderBody !== undefined) {\r\n      return React.createElement(props.bimInfoRef.onRenderBody, { data: data?.body, standard })\r\n    }\r\n    return standard()\r\n  }\r\n\r\n  return (\r\n  <div className='vim-bim-lower vc-flex vc-flex-col vc-max-h-full'>\r\n    <h2 className=\"vim-bim-lower-title vc-title\">\r\n      Bim Inspector\r\n    </h2>\r\n    <div className={'vim-bim-lower-content vc-flex-1 vc-min-h-0 vc-flex vc-flex-col vc-overflow-y-auto vc-overflow-x-hidden'}>\r\n      {header()}\r\n      {body()}\r\n    </div>\r\n  </div>\r\n  )\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport React, { useEffect, useState, useMemo } from 'react'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\n\r\nimport { BimTree, TreeActionRef } from './bimTree'\r\nimport { BimSearch } from './bimSearch'\r\nimport { Isolation } from '../helpers/isolation'\r\nimport { ComponentCamera } from '../helpers/camera'\r\nimport { Grouping, toTreeData } from './bimTreeData'\r\nimport { ViewerState } from '../webgl/viewerState'\r\nimport { AugmentedElement } from '../helpers/element'\r\nimport { ComponentSettings, isFalse } from '../settings/settings'\r\nimport { whenAllTrue, whenSomeTrue, whenTrue } from '../helpers/utils'\r\nimport { BimInfoPanel } from './bimInfoPanel'\r\nimport { BimInfoPanelRef } from './bimInfoData'\r\n\r\n// Not sure why I need this,\r\n// when I inline this method in component.tsx it causes an error.\r\n// The error appears only in JSFiddle when the module is directly imported in a script tag.\r\nexport function OptionalBimPanel (props: {\r\n  viewer: VIM.Viewer\r\n  camera: ComponentCamera\r\n  viewerState: ViewerState\r\n  isolation: Isolation\r\n  visible: boolean\r\n  settings: ComponentSettings\r\n  treeRef: React.MutableRefObject<TreeActionRef | undefined>\r\n  bimInfoRef: BimInfoPanelRef\r\n}) {\r\n  return whenSomeTrue([\r\n    props.settings.ui.bimTreePanel,\r\n    props.settings.ui.bimInfoPanel],\r\n  React.createElement(BimPanel, props))\r\n}\r\n\r\n/**\r\n * Returns a jsx component representing most data of a vim object or vim document.\r\n * @param viewer viewer helper\r\n * @param vim Vim from which to get the data.\r\n * @param selection Current viewer selection.\r\n * @param isolation Isolation object.\r\n * @param visible will only render if this is true.\r\n * @returns\r\n */\r\nexport function BimPanel (props: {\r\n  viewer: VIM.Viewer\r\n  camera: ComponentCamera\r\n  viewerState: ViewerState\r\n  isolation: Isolation\r\n  visible: boolean\r\n  settings: ComponentSettings\r\n  treeRef: React.MutableRefObject<TreeActionRef | undefined>\r\n  bimInfoRef: BimInfoPanelRef\r\n}) {\r\n  const [filter, setFilter] = useState('')\r\n  const [grouping] = useState<Grouping>('Family')\r\n\r\n  // Filter elements with meshes using search term.\r\n  const filteredElements = useMemo(() => {\r\n    if (!props.viewerState.elements) return\r\n    const meshElements = props.viewerState.elements.filter(\r\n      (e) => props.viewerState.vim.getObjectFromElement(e.index)?.hasMesh\r\n    )\r\n    const result = filterElements(props.viewerState.vim, meshElements, filter)\r\n\r\n    return result\r\n  }, [filter, props.viewerState.elements])\r\n\r\n  // Update tree based on filtered elements\r\n  const tree = useMemo(() => {\r\n    return toTreeData(props.viewerState.vim, filteredElements, grouping)\r\n  }, [props.viewerState.vim, filteredElements, grouping])\r\n\r\n  // Update Isolation on filter change.\r\n  useEffect(() => {\r\n    if (isFalse(props.settings.ui.bimInfoPanel)) return\r\n    if (filter !== '') {\r\n      const objects = filteredElements.map((e) =>\r\n        props.viewerState.vim.getObjectFromElement(e.index)\r\n      )\r\n      props.isolation.isolate(objects, 'search')\r\n    } else {\r\n      props.isolation.isolate(undefined, 'search')\r\n    }\r\n  }, [filter])\r\n\r\n  // Clear filter on isolation change\r\n  useEffect(() => {\r\n    const unsubscribe = props.isolation.onChanged.subscribe(\r\n      (source: string) => {\r\n        if (source !== 'tree' && source !== 'search') {\r\n          setFilter('')\r\n        }\r\n      }\r\n    )\r\n\r\n    // Clean up\r\n    return () => {\r\n      unsubscribe()\r\n    }\r\n  }, [])\r\n\r\n  const last =\r\n    props.viewerState.selection[props.viewerState.selection.length - 1]\r\n  const fullTree = isFalse(props.settings.ui.bimInfoPanel)\r\n  const fullInfo = isFalse(props.settings.ui.bimTreePanel)\r\n\r\n  return (\r\n    <div className={`vim-bim-panel vc-inset-0 vc-absolute vc-h-full vc-w-full ${fullTree ? 'full-tree' : ''} ${props.visible ? '' : 'vc-hidden'}`}>\r\n      {isFalse(props.settings.ui.bimTreePanel)\r\n        ? null\r\n        : (\r\n        <div className={`vim-bim-upper vc-flex vc-flex-col vc-absolute vc-w-full ${fullTree ? 'vc-h-full' : 'vc-h-[49%]'} ${props.viewerState.elements.length > 0 ? '' : 'vc-hidden'}`}>\r\n          <h2\r\n            className=\"vim-bim-upper-title vc-title vc-text-xs vc-font-bold vc-uppercase\">\r\n            Project Inspector\r\n          </h2>\r\n          <BimSearch\r\n            viewer={props.viewer}\r\n            filter={filter}\r\n            setFilter={setFilter}\r\n            count={filteredElements?.length}\r\n          />\r\n            <BimTree\r\n              actionRef={props.treeRef}\r\n              viewer={props.viewer}\r\n              camera={props.camera}\r\n              objects={props.viewerState.selection}\r\n              isolation={props.isolation}\r\n              treeData={tree}\r\n            />\r\n          </div>\r\n          )}\r\n      {\r\n        // Divider if needed.\r\n        whenAllTrue([\r\n          props.settings.ui.bimTreePanel,\r\n          props.settings.ui.bimInfoPanel,\r\n          props.viewerState.elements.length > 0\r\n        ],\r\n        divider())\r\n      }\r\n      {whenTrue(props.settings.ui.bimInfoPanel,\r\n        <div className={`vim-bim-lower-container vc-absolute ${fullInfo ? 'vc-top-0' : 'vc-top-[50%]'} vc-bottom-0 vc-bottom vc-left-0 vc-right-0`}>\r\n          <BimInfoPanel\r\n            object={last}\r\n            vim={props.viewerState.vim}\r\n            elements={filteredElements}\r\n            full={isFalse(props.settings.ui.bimTreePanel)}\r\n            bimInfoRef={props.bimInfoRef}\r\n          />\r\n        </div>)}\r\n    </div>\r\n  )\r\n}\r\n\r\nfunction divider () {\r\n  return <hr style={{ top: '50%' }} className=\"divider vc-absolute vc-w-full vc-border-gray-divider\" />\r\n}\r\n\r\nfunction filterElements (\r\n  vim: VIM.Vim,\r\n  elements: AugmentedElement[],\r\n  filter: string\r\n) {\r\n  const filterLower = filter.toLocaleLowerCase()\r\n  const filtered = elements.filter(\r\n    (e) =>\r\n      (e.id?.toString() ?? '').toLocaleLowerCase().includes(filterLower) ||\r\n      (e.name ?? '').toLocaleLowerCase().includes(filterLower) ||\r\n      (e.category?.name ?? '').toLocaleLowerCase().includes(filterLower) ||\r\n      (e.familyName ?? '').toLocaleLowerCase().includes(filterLower) ||\r\n      (e.type ?? '').toLocaleLowerCase().includes(filterLower)\r\n  )\r\n  return filtered\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nvar rowSizeBase = {\n    width: '100%',\n    height: '10px',\n    top: '0px',\n    left: '0px',\n    cursor: 'row-resize',\n};\nvar colSizeBase = {\n    width: '10px',\n    height: '100%',\n    top: '0px',\n    left: '0px',\n    cursor: 'col-resize',\n};\nvar edgeBase = {\n    width: '20px',\n    height: '20px',\n    position: 'absolute',\n};\nvar styles = {\n    top: __assign(__assign({}, rowSizeBase), { top: '-5px' }),\n    right: __assign(__assign({}, colSizeBase), { left: undefined, right: '-5px' }),\n    bottom: __assign(__assign({}, rowSizeBase), { top: undefined, bottom: '-5px' }),\n    left: __assign(__assign({}, colSizeBase), { left: '-5px' }),\n    topRight: __assign(__assign({}, edgeBase), { right: '-10px', top: '-10px', cursor: 'ne-resize' }),\n    bottomRight: __assign(__assign({}, edgeBase), { right: '-10px', bottom: '-10px', cursor: 'se-resize' }),\n    bottomLeft: __assign(__assign({}, edgeBase), { left: '-10px', bottom: '-10px', cursor: 'sw-resize' }),\n    topLeft: __assign(__assign({}, edgeBase), { left: '-10px', top: '-10px', cursor: 'nw-resize' }),\n};\nvar Resizer = /** @class */ (function (_super) {\n    __extends(Resizer, _super);\n    function Resizer() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onMouseDown = function (e) {\n            _this.props.onResizeStart(e, _this.props.direction);\n        };\n        _this.onTouchStart = function (e) {\n            _this.props.onResizeStart(e, _this.props.direction);\n        };\n        return _this;\n    }\n    Resizer.prototype.render = function () {\n        return (React.createElement(\"div\", { className: this.props.className || '', style: __assign(__assign({ position: 'absolute', userSelect: 'none' }, styles[this.props.direction]), (this.props.replaceStyles || {})), onMouseDown: this.onMouseDown, onTouchStart: this.onTouchStart }, this.props.children));\n    };\n    return Resizer;\n}(React.PureComponent));\nexport { Resizer };\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport { Resizer } from './resizer';\nvar DEFAULT_SIZE = {\n    width: 'auto',\n    height: 'auto',\n};\nvar clamp = function (n, min, max) { return Math.max(Math.min(n, max), min); };\nvar snap = function (n, size) { return Math.round(n / size) * size; };\nvar hasDirection = function (dir, target) {\n    return new RegExp(dir, 'i').test(target);\n};\n// INFO: In case of window is a Proxy and does not porxy Events correctly, use isTouchEvent & isMouseEvent to distinguish event type instead of `instanceof`.\nvar isTouchEvent = function (event) {\n    return Boolean(event.touches && event.touches.length);\n};\nvar isMouseEvent = function (event) {\n    return Boolean((event.clientX || event.clientX === 0) &&\n        (event.clientY || event.clientY === 0));\n};\nvar findClosestSnap = function (n, snapArray, snapGap) {\n    if (snapGap === void 0) { snapGap = 0; }\n    var closestGapIndex = snapArray.reduce(function (prev, curr, index) { return (Math.abs(curr - n) < Math.abs(snapArray[prev] - n) ? index : prev); }, 0);\n    var gap = Math.abs(snapArray[closestGapIndex] - n);\n    return snapGap === 0 || gap < snapGap ? snapArray[closestGapIndex] : n;\n};\nvar getStringSize = function (n) {\n    n = n.toString();\n    if (n === 'auto') {\n        return n;\n    }\n    if (n.endsWith('px')) {\n        return n;\n    }\n    if (n.endsWith('%')) {\n        return n;\n    }\n    if (n.endsWith('vh')) {\n        return n;\n    }\n    if (n.endsWith('vw')) {\n        return n;\n    }\n    if (n.endsWith('vmax')) {\n        return n;\n    }\n    if (n.endsWith('vmin')) {\n        return n;\n    }\n    return n + \"px\";\n};\nvar getPixelSize = function (size, parentSize, innerWidth, innerHeight) {\n    if (size && typeof size === 'string') {\n        if (size.endsWith('px')) {\n            return Number(size.replace('px', ''));\n        }\n        if (size.endsWith('%')) {\n            var ratio = Number(size.replace('%', '')) / 100;\n            return parentSize * ratio;\n        }\n        if (size.endsWith('vw')) {\n            var ratio = Number(size.replace('vw', '')) / 100;\n            return innerWidth * ratio;\n        }\n        if (size.endsWith('vh')) {\n            var ratio = Number(size.replace('vh', '')) / 100;\n            return innerHeight * ratio;\n        }\n    }\n    return size;\n};\nvar calculateNewMax = function (parentSize, innerWidth, innerHeight, maxWidth, maxHeight, minWidth, minHeight) {\n    maxWidth = getPixelSize(maxWidth, parentSize.width, innerWidth, innerHeight);\n    maxHeight = getPixelSize(maxHeight, parentSize.height, innerWidth, innerHeight);\n    minWidth = getPixelSize(minWidth, parentSize.width, innerWidth, innerHeight);\n    minHeight = getPixelSize(minHeight, parentSize.height, innerWidth, innerHeight);\n    return {\n        maxWidth: typeof maxWidth === 'undefined' ? undefined : Number(maxWidth),\n        maxHeight: typeof maxHeight === 'undefined' ? undefined : Number(maxHeight),\n        minWidth: typeof minWidth === 'undefined' ? undefined : Number(minWidth),\n        minHeight: typeof minHeight === 'undefined' ? undefined : Number(minHeight),\n    };\n};\nvar definedProps = [\n    'as',\n    'style',\n    'className',\n    'grid',\n    'snap',\n    'bounds',\n    'boundsByDirection',\n    'size',\n    'defaultSize',\n    'minWidth',\n    'minHeight',\n    'maxWidth',\n    'maxHeight',\n    'lockAspectRatio',\n    'lockAspectRatioExtraWidth',\n    'lockAspectRatioExtraHeight',\n    'enable',\n    'handleStyles',\n    'handleClasses',\n    'handleWrapperStyle',\n    'handleWrapperClass',\n    'children',\n    'onResizeStart',\n    'onResize',\n    'onResizeStop',\n    'handleComponent',\n    'scale',\n    'resizeRatio',\n    'snapGap',\n];\n// HACK: This class is used to calculate % size.\nvar baseClassName = '__resizable_base__';\nvar Resizable = /** @class */ (function (_super) {\n    __extends(Resizable, _super);\n    function Resizable(props) {\n        var _this = _super.call(this, props) || this;\n        _this.ratio = 1;\n        _this.resizable = null;\n        // For parent boundary\n        _this.parentLeft = 0;\n        _this.parentTop = 0;\n        // For boundary\n        _this.resizableLeft = 0;\n        _this.resizableRight = 0;\n        _this.resizableTop = 0;\n        _this.resizableBottom = 0;\n        // For target boundary\n        _this.targetLeft = 0;\n        _this.targetTop = 0;\n        _this.appendBase = function () {\n            if (!_this.resizable || !_this.window) {\n                return null;\n            }\n            var parent = _this.parentNode;\n            if (!parent) {\n                return null;\n            }\n            var element = _this.window.document.createElement('div');\n            element.style.width = '100%';\n            element.style.height = '100%';\n            element.style.position = 'absolute';\n            element.style.transform = 'scale(0, 0)';\n            element.style.left = '0';\n            element.style.flex = '0 0 100%';\n            if (element.classList) {\n                element.classList.add(baseClassName);\n            }\n            else {\n                element.className += baseClassName;\n            }\n            parent.appendChild(element);\n            return element;\n        };\n        _this.removeBase = function (base) {\n            var parent = _this.parentNode;\n            if (!parent) {\n                return;\n            }\n            parent.removeChild(base);\n        };\n        _this.ref = function (c) {\n            if (c) {\n                _this.resizable = c;\n            }\n        };\n        _this.state = {\n            isResizing: false,\n            width: typeof (_this.propsSize && _this.propsSize.width) === 'undefined'\n                ? 'auto'\n                : _this.propsSize && _this.propsSize.width,\n            height: typeof (_this.propsSize && _this.propsSize.height) === 'undefined'\n                ? 'auto'\n                : _this.propsSize && _this.propsSize.height,\n            direction: 'right',\n            original: {\n                x: 0,\n                y: 0,\n                width: 0,\n                height: 0,\n            },\n            backgroundStyle: {\n                height: '100%',\n                width: '100%',\n                backgroundColor: 'rgba(0,0,0,0)',\n                cursor: 'auto',\n                opacity: 0,\n                position: 'fixed',\n                zIndex: 9999,\n                top: '0',\n                left: '0',\n                bottom: '0',\n                right: '0',\n            },\n            flexBasis: undefined,\n        };\n        _this.onResizeStart = _this.onResizeStart.bind(_this);\n        _this.onMouseMove = _this.onMouseMove.bind(_this);\n        _this.onMouseUp = _this.onMouseUp.bind(_this);\n        return _this;\n    }\n    Object.defineProperty(Resizable.prototype, \"parentNode\", {\n        get: function () {\n            if (!this.resizable) {\n                return null;\n            }\n            return this.resizable.parentNode;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Resizable.prototype, \"window\", {\n        get: function () {\n            if (!this.resizable) {\n                return null;\n            }\n            if (!this.resizable.ownerDocument) {\n                return null;\n            }\n            return this.resizable.ownerDocument.defaultView;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Resizable.prototype, \"propsSize\", {\n        get: function () {\n            return this.props.size || this.props.defaultSize || DEFAULT_SIZE;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Resizable.prototype, \"size\", {\n        get: function () {\n            var width = 0;\n            var height = 0;\n            if (this.resizable && this.window) {\n                var orgWidth = this.resizable.offsetWidth;\n                var orgHeight = this.resizable.offsetHeight;\n                // HACK: Set position `relative` to get parent size.\n                //       This is because when re-resizable set `absolute`, I can not get base width correctly.\n                var orgPosition = this.resizable.style.position;\n                if (orgPosition !== 'relative') {\n                    this.resizable.style.position = 'relative';\n                }\n                // INFO: Use original width or height if set auto.\n                width = this.resizable.style.width !== 'auto' ? this.resizable.offsetWidth : orgWidth;\n                height = this.resizable.style.height !== 'auto' ? this.resizable.offsetHeight : orgHeight;\n                // Restore original position\n                this.resizable.style.position = orgPosition;\n            }\n            return { width: width, height: height };\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Resizable.prototype, \"sizeStyle\", {\n        get: function () {\n            var _this = this;\n            var size = this.props.size;\n            var getSize = function (key) {\n                if (typeof _this.state[key] === 'undefined' || _this.state[key] === 'auto') {\n                    return 'auto';\n                }\n                if (_this.propsSize && _this.propsSize[key] && _this.propsSize[key].toString().endsWith('%')) {\n                    if (_this.state[key].toString().endsWith('%')) {\n                        return _this.state[key].toString();\n                    }\n                    var parentSize = _this.getParentSize();\n                    var value = Number(_this.state[key].toString().replace('px', ''));\n                    var percent = (value / parentSize[key]) * 100;\n                    return percent + \"%\";\n                }\n                return getStringSize(_this.state[key]);\n            };\n            var width = size && typeof size.width !== 'undefined' && !this.state.isResizing\n                ? getStringSize(size.width)\n                : getSize('width');\n            var height = size && typeof size.height !== 'undefined' && !this.state.isResizing\n                ? getStringSize(size.height)\n                : getSize('height');\n            return { width: width, height: height };\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Resizable.prototype.getParentSize = function () {\n        if (!this.parentNode) {\n            if (!this.window) {\n                return { width: 0, height: 0 };\n            }\n            return { width: this.window.innerWidth, height: this.window.innerHeight };\n        }\n        var base = this.appendBase();\n        if (!base) {\n            return { width: 0, height: 0 };\n        }\n        // INFO: To calculate parent width with flex layout\n        var wrapChanged = false;\n        var wrap = this.parentNode.style.flexWrap;\n        if (wrap !== 'wrap') {\n            wrapChanged = true;\n            this.parentNode.style.flexWrap = 'wrap';\n            // HACK: Use relative to get parent padding size\n        }\n        base.style.position = 'relative';\n        base.style.minWidth = '100%';\n        base.style.minHeight = '100%';\n        var size = {\n            width: base.offsetWidth,\n            height: base.offsetHeight,\n        };\n        if (wrapChanged) {\n            this.parentNode.style.flexWrap = wrap;\n        }\n        this.removeBase(base);\n        return size;\n    };\n    Resizable.prototype.bindEvents = function () {\n        if (this.window) {\n            this.window.addEventListener('mouseup', this.onMouseUp);\n            this.window.addEventListener('mousemove', this.onMouseMove);\n            this.window.addEventListener('mouseleave', this.onMouseUp);\n            this.window.addEventListener('touchmove', this.onMouseMove, {\n                capture: true,\n                passive: false,\n            });\n            this.window.addEventListener('touchend', this.onMouseUp);\n        }\n    };\n    Resizable.prototype.unbindEvents = function () {\n        if (this.window) {\n            this.window.removeEventListener('mouseup', this.onMouseUp);\n            this.window.removeEventListener('mousemove', this.onMouseMove);\n            this.window.removeEventListener('mouseleave', this.onMouseUp);\n            this.window.removeEventListener('touchmove', this.onMouseMove, true);\n            this.window.removeEventListener('touchend', this.onMouseUp);\n        }\n    };\n    Resizable.prototype.componentDidMount = function () {\n        if (!this.resizable || !this.window) {\n            return;\n        }\n        var computedStyle = this.window.getComputedStyle(this.resizable);\n        this.setState({\n            width: this.state.width || this.size.width,\n            height: this.state.height || this.size.height,\n            flexBasis: computedStyle.flexBasis !== 'auto' ? computedStyle.flexBasis : undefined,\n        });\n    };\n    Resizable.prototype.componentWillUnmount = function () {\n        if (this.window) {\n            this.unbindEvents();\n        }\n    };\n    Resizable.prototype.createSizeForCssProperty = function (newSize, kind) {\n        var propsSize = this.propsSize && this.propsSize[kind];\n        return this.state[kind] === 'auto' &&\n            this.state.original[kind] === newSize &&\n            (typeof propsSize === 'undefined' || propsSize === 'auto')\n            ? 'auto'\n            : newSize;\n    };\n    Resizable.prototype.calculateNewMaxFromBoundary = function (maxWidth, maxHeight) {\n        var boundsByDirection = this.props.boundsByDirection;\n        var direction = this.state.direction;\n        var widthByDirection = boundsByDirection && hasDirection('left', direction);\n        var heightByDirection = boundsByDirection && hasDirection('top', direction);\n        var boundWidth;\n        var boundHeight;\n        if (this.props.bounds === 'parent') {\n            var parent_1 = this.parentNode;\n            if (parent_1) {\n                boundWidth = widthByDirection\n                    ? this.resizableRight - this.parentLeft\n                    : parent_1.offsetWidth + (this.parentLeft - this.resizableLeft);\n                boundHeight = heightByDirection\n                    ? this.resizableBottom - this.parentTop\n                    : parent_1.offsetHeight + (this.parentTop - this.resizableTop);\n            }\n        }\n        else if (this.props.bounds === 'window') {\n            if (this.window) {\n                boundWidth = widthByDirection ? this.resizableRight : this.window.innerWidth - this.resizableLeft;\n                boundHeight = heightByDirection ? this.resizableBottom : this.window.innerHeight - this.resizableTop;\n            }\n        }\n        else if (this.props.bounds) {\n            boundWidth = widthByDirection\n                ? this.resizableRight - this.targetLeft\n                : this.props.bounds.offsetWidth + (this.targetLeft - this.resizableLeft);\n            boundHeight = heightByDirection\n                ? this.resizableBottom - this.targetTop\n                : this.props.bounds.offsetHeight + (this.targetTop - this.resizableTop);\n        }\n        if (boundWidth && Number.isFinite(boundWidth)) {\n            maxWidth = maxWidth && maxWidth < boundWidth ? maxWidth : boundWidth;\n        }\n        if (boundHeight && Number.isFinite(boundHeight)) {\n            maxHeight = maxHeight && maxHeight < boundHeight ? maxHeight : boundHeight;\n        }\n        return { maxWidth: maxWidth, maxHeight: maxHeight };\n    };\n    Resizable.prototype.calculateNewSizeFromDirection = function (clientX, clientY) {\n        var scale = this.props.scale || 1;\n        var resizeRatio = this.props.resizeRatio || 1;\n        var _a = this.state, direction = _a.direction, original = _a.original;\n        var _b = this.props, lockAspectRatio = _b.lockAspectRatio, lockAspectRatioExtraHeight = _b.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _b.lockAspectRatioExtraWidth;\n        var newWidth = original.width;\n        var newHeight = original.height;\n        var extraHeight = lockAspectRatioExtraHeight || 0;\n        var extraWidth = lockAspectRatioExtraWidth || 0;\n        if (hasDirection('right', direction)) {\n            newWidth = original.width + ((clientX - original.x) * resizeRatio) / scale;\n            if (lockAspectRatio) {\n                newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n            }\n        }\n        if (hasDirection('left', direction)) {\n            newWidth = original.width - ((clientX - original.x) * resizeRatio) / scale;\n            if (lockAspectRatio) {\n                newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n            }\n        }\n        if (hasDirection('bottom', direction)) {\n            newHeight = original.height + ((clientY - original.y) * resizeRatio) / scale;\n            if (lockAspectRatio) {\n                newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n            }\n        }\n        if (hasDirection('top', direction)) {\n            newHeight = original.height - ((clientY - original.y) * resizeRatio) / scale;\n            if (lockAspectRatio) {\n                newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n            }\n        }\n        return { newWidth: newWidth, newHeight: newHeight };\n    };\n    Resizable.prototype.calculateNewSizeFromAspectRatio = function (newWidth, newHeight, max, min) {\n        var _a = this.props, lockAspectRatio = _a.lockAspectRatio, lockAspectRatioExtraHeight = _a.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _a.lockAspectRatioExtraWidth;\n        var computedMinWidth = typeof min.width === 'undefined' ? 10 : min.width;\n        var computedMaxWidth = typeof max.width === 'undefined' || max.width < 0 ? newWidth : max.width;\n        var computedMinHeight = typeof min.height === 'undefined' ? 10 : min.height;\n        var computedMaxHeight = typeof max.height === 'undefined' || max.height < 0 ? newHeight : max.height;\n        var extraHeight = lockAspectRatioExtraHeight || 0;\n        var extraWidth = lockAspectRatioExtraWidth || 0;\n        if (lockAspectRatio) {\n            var extraMinWidth = (computedMinHeight - extraHeight) * this.ratio + extraWidth;\n            var extraMaxWidth = (computedMaxHeight - extraHeight) * this.ratio + extraWidth;\n            var extraMinHeight = (computedMinWidth - extraWidth) / this.ratio + extraHeight;\n            var extraMaxHeight = (computedMaxWidth - extraWidth) / this.ratio + extraHeight;\n            var lockedMinWidth = Math.max(computedMinWidth, extraMinWidth);\n            var lockedMaxWidth = Math.min(computedMaxWidth, extraMaxWidth);\n            var lockedMinHeight = Math.max(computedMinHeight, extraMinHeight);\n            var lockedMaxHeight = Math.min(computedMaxHeight, extraMaxHeight);\n            newWidth = clamp(newWidth, lockedMinWidth, lockedMaxWidth);\n            newHeight = clamp(newHeight, lockedMinHeight, lockedMaxHeight);\n        }\n        else {\n            newWidth = clamp(newWidth, computedMinWidth, computedMaxWidth);\n            newHeight = clamp(newHeight, computedMinHeight, computedMaxHeight);\n        }\n        return { newWidth: newWidth, newHeight: newHeight };\n    };\n    Resizable.prototype.setBoundingClientRect = function () {\n        // For parent boundary\n        if (this.props.bounds === 'parent') {\n            var parent_2 = this.parentNode;\n            if (parent_2) {\n                var parentRect = parent_2.getBoundingClientRect();\n                this.parentLeft = parentRect.left;\n                this.parentTop = parentRect.top;\n            }\n        }\n        // For target(html element) boundary\n        if (this.props.bounds && typeof this.props.bounds !== 'string') {\n            var targetRect = this.props.bounds.getBoundingClientRect();\n            this.targetLeft = targetRect.left;\n            this.targetTop = targetRect.top;\n        }\n        // For boundary\n        if (this.resizable) {\n            var _a = this.resizable.getBoundingClientRect(), left = _a.left, top_1 = _a.top, right = _a.right, bottom = _a.bottom;\n            this.resizableLeft = left;\n            this.resizableRight = right;\n            this.resizableTop = top_1;\n            this.resizableBottom = bottom;\n        }\n    };\n    Resizable.prototype.onResizeStart = function (event, direction) {\n        if (!this.resizable || !this.window) {\n            return;\n        }\n        var clientX = 0;\n        var clientY = 0;\n        if (event.nativeEvent && isMouseEvent(event.nativeEvent)) {\n            clientX = event.nativeEvent.clientX;\n            clientY = event.nativeEvent.clientY;\n        }\n        else if (event.nativeEvent && isTouchEvent(event.nativeEvent)) {\n            clientX = event.nativeEvent.touches[0].clientX;\n            clientY = event.nativeEvent.touches[0].clientY;\n        }\n        if (this.props.onResizeStart) {\n            if (this.resizable) {\n                var startResize = this.props.onResizeStart(event, direction, this.resizable);\n                if (startResize === false) {\n                    return;\n                }\n            }\n        }\n        // Fix #168\n        if (this.props.size) {\n            if (typeof this.props.size.height !== 'undefined' && this.props.size.height !== this.state.height) {\n                this.setState({ height: this.props.size.height });\n            }\n            if (typeof this.props.size.width !== 'undefined' && this.props.size.width !== this.state.width) {\n                this.setState({ width: this.props.size.width });\n            }\n        }\n        // For lockAspectRatio case\n        this.ratio =\n            typeof this.props.lockAspectRatio === 'number' ? this.props.lockAspectRatio : this.size.width / this.size.height;\n        var flexBasis;\n        var computedStyle = this.window.getComputedStyle(this.resizable);\n        if (computedStyle.flexBasis !== 'auto') {\n            var parent_3 = this.parentNode;\n            if (parent_3) {\n                var dir = this.window.getComputedStyle(parent_3).flexDirection;\n                this.flexDir = dir.startsWith('row') ? 'row' : 'column';\n                flexBasis = computedStyle.flexBasis;\n            }\n        }\n        // For boundary\n        this.setBoundingClientRect();\n        this.bindEvents();\n        var state = {\n            original: {\n                x: clientX,\n                y: clientY,\n                width: this.size.width,\n                height: this.size.height,\n            },\n            isResizing: true,\n            backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: this.window.getComputedStyle(event.target).cursor || 'auto' }),\n            direction: direction,\n            flexBasis: flexBasis,\n        };\n        this.setState(state);\n    };\n    Resizable.prototype.onMouseMove = function (event) {\n        var _this = this;\n        if (!this.state.isResizing || !this.resizable || !this.window) {\n            return;\n        }\n        if (this.window.TouchEvent && isTouchEvent(event)) {\n            try {\n                event.preventDefault();\n                event.stopPropagation();\n            }\n            catch (e) {\n                // Ignore on fail\n            }\n        }\n        var _a = this.props, maxWidth = _a.maxWidth, maxHeight = _a.maxHeight, minWidth = _a.minWidth, minHeight = _a.minHeight;\n        var clientX = isTouchEvent(event) ? event.touches[0].clientX : event.clientX;\n        var clientY = isTouchEvent(event) ? event.touches[0].clientY : event.clientY;\n        var _b = this.state, direction = _b.direction, original = _b.original, width = _b.width, height = _b.height;\n        var parentSize = this.getParentSize();\n        var max = calculateNewMax(parentSize, this.window.innerWidth, this.window.innerHeight, maxWidth, maxHeight, minWidth, minHeight);\n        maxWidth = max.maxWidth;\n        maxHeight = max.maxHeight;\n        minWidth = max.minWidth;\n        minHeight = max.minHeight;\n        // Calculate new size\n        var _c = this.calculateNewSizeFromDirection(clientX, clientY), newHeight = _c.newHeight, newWidth = _c.newWidth;\n        // Calculate max size from boundary settings\n        var boundaryMax = this.calculateNewMaxFromBoundary(maxWidth, maxHeight);\n        if (this.props.snap && this.props.snap.x) {\n            newWidth = findClosestSnap(newWidth, this.props.snap.x, this.props.snapGap);\n        }\n        if (this.props.snap && this.props.snap.y) {\n            newHeight = findClosestSnap(newHeight, this.props.snap.y, this.props.snapGap);\n        }\n        // Calculate new size from aspect ratio\n        var newSize = this.calculateNewSizeFromAspectRatio(newWidth, newHeight, { width: boundaryMax.maxWidth, height: boundaryMax.maxHeight }, { width: minWidth, height: minHeight });\n        newWidth = newSize.newWidth;\n        newHeight = newSize.newHeight;\n        if (this.props.grid) {\n            var newGridWidth = snap(newWidth, this.props.grid[0]);\n            var newGridHeight = snap(newHeight, this.props.grid[1]);\n            var gap = this.props.snapGap || 0;\n            newWidth = gap === 0 || Math.abs(newGridWidth - newWidth) <= gap ? newGridWidth : newWidth;\n            newHeight = gap === 0 || Math.abs(newGridHeight - newHeight) <= gap ? newGridHeight : newHeight;\n        }\n        var delta = {\n            width: newWidth - original.width,\n            height: newHeight - original.height,\n        };\n        if (width && typeof width === 'string') {\n            if (width.endsWith('%')) {\n                var percent = (newWidth / parentSize.width) * 100;\n                newWidth = percent + \"%\";\n            }\n            else if (width.endsWith('vw')) {\n                var vw = (newWidth / this.window.innerWidth) * 100;\n                newWidth = vw + \"vw\";\n            }\n            else if (width.endsWith('vh')) {\n                var vh = (newWidth / this.window.innerHeight) * 100;\n                newWidth = vh + \"vh\";\n            }\n        }\n        if (height && typeof height === 'string') {\n            if (height.endsWith('%')) {\n                var percent = (newHeight / parentSize.height) * 100;\n                newHeight = percent + \"%\";\n            }\n            else if (height.endsWith('vw')) {\n                var vw = (newHeight / this.window.innerWidth) * 100;\n                newHeight = vw + \"vw\";\n            }\n            else if (height.endsWith('vh')) {\n                var vh = (newHeight / this.window.innerHeight) * 100;\n                newHeight = vh + \"vh\";\n            }\n        }\n        var newState = {\n            width: this.createSizeForCssProperty(newWidth, 'width'),\n            height: this.createSizeForCssProperty(newHeight, 'height'),\n        };\n        if (this.flexDir === 'row') {\n            newState.flexBasis = newState.width;\n        }\n        else if (this.flexDir === 'column') {\n            newState.flexBasis = newState.height;\n        }\n        // For v18, update state sync\n        flushSync(function () {\n            _this.setState(newState);\n        });\n        if (this.props.onResize) {\n            this.props.onResize(event, direction, this.resizable, delta);\n        }\n    };\n    Resizable.prototype.onMouseUp = function (event) {\n        var _a = this.state, isResizing = _a.isResizing, direction = _a.direction, original = _a.original;\n        if (!isResizing || !this.resizable) {\n            return;\n        }\n        var delta = {\n            width: this.size.width - original.width,\n            height: this.size.height - original.height,\n        };\n        if (this.props.onResizeStop) {\n            this.props.onResizeStop(event, direction, this.resizable, delta);\n        }\n        if (this.props.size) {\n            this.setState(this.props.size);\n        }\n        this.unbindEvents();\n        this.setState({\n            isResizing: false,\n            backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: 'auto' }),\n        });\n    };\n    Resizable.prototype.updateSize = function (size) {\n        this.setState({ width: size.width, height: size.height });\n    };\n    Resizable.prototype.renderResizer = function () {\n        var _this = this;\n        var _a = this.props, enable = _a.enable, handleStyles = _a.handleStyles, handleClasses = _a.handleClasses, handleWrapperStyle = _a.handleWrapperStyle, handleWrapperClass = _a.handleWrapperClass, handleComponent = _a.handleComponent;\n        if (!enable) {\n            return null;\n        }\n        var resizers = Object.keys(enable).map(function (dir) {\n            if (enable[dir] !== false) {\n                return (React.createElement(Resizer, { key: dir, direction: dir, onResizeStart: _this.onResizeStart, replaceStyles: handleStyles && handleStyles[dir], className: handleClasses && handleClasses[dir] }, handleComponent && handleComponent[dir] ? handleComponent[dir] : null));\n            }\n            return null;\n        });\n        // #93 Wrap the resize box in span (will not break 100% width/height)\n        return (React.createElement(\"div\", { className: handleWrapperClass, style: handleWrapperStyle }, resizers));\n    };\n    Resizable.prototype.render = function () {\n        var _this = this;\n        var extendsProps = Object.keys(this.props).reduce(function (acc, key) {\n            if (definedProps.indexOf(key) !== -1) {\n                return acc;\n            }\n            acc[key] = _this.props[key];\n            return acc;\n        }, {});\n        var style = __assign(__assign(__assign({ position: 'relative', userSelect: this.state.isResizing ? 'none' : 'auto' }, this.props.style), this.sizeStyle), { maxWidth: this.props.maxWidth, maxHeight: this.props.maxHeight, minWidth: this.props.minWidth, minHeight: this.props.minHeight, boxSizing: 'border-box', flexShrink: 0 });\n        if (this.state.flexBasis) {\n            style.flexBasis = this.state.flexBasis;\n        }\n        var Wrapper = this.props.as || 'div';\n        return (React.createElement(Wrapper, __assign({ ref: this.ref, style: style, className: this.props.className }, extendsProps),\n            this.state.isResizing && React.createElement(\"div\", { style: this.state.backgroundStyle }),\n            this.props.children,\n            this.renderResizer()));\n    };\n    Resizable.defaultProps = {\n        as: 'div',\n        onResizeStart: function () { },\n        onResize: function () { },\n        onResizeStop: function () { },\n        enable: {\n            top: true,\n            right: true,\n            bottom: true,\n            left: true,\n            topRight: true,\n            bottomRight: true,\n            bottomLeft: true,\n            topLeft: true,\n        },\n        style: {},\n        grid: [1, 1],\n        lockAspectRatio: false,\n        lockAspectRatioExtraWidth: 0,\n        lockAspectRatioExtraHeight: 0,\n        scale: 1,\n        resizeRatio: 1,\n        snapGap: 0,\n    };\n    return Resizable;\n}(React.PureComponent));\nexport { Resizable };\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport React, { useEffect, useRef } from 'react'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport * as Icons from '../panels/icons'\r\nimport { SideState } from './sideState'\r\nimport { Enable, Resizable } from 're-resizable'\r\nimport { VimComponentContainer } from '../container'\r\n\r\nconst MAX_WIDTH = 0.75\r\n\r\n/**\r\n * Memoized version of the SidePanel.\r\n */\r\nexport const SidePanelMemo = React.memo(SidePanel)\r\n\r\n/**\r\n * JSX Component for collapsible and resizable side panel.\r\n */\r\nexport function SidePanel (props: {\r\n  container: VimComponentContainer\r\n  side: SideState\r\n  viewer: VIM.Viewer\r\n  content: () => JSX.Element\r\n}) {\r\n  const resizeTimeOut = useRef<number>()\r\n\r\n  // state to force re-render on resize\r\n  const resizeGfx = () => {\r\n    if (props.side.getContent() !== 'none') {\r\n      const width = props.side.getWidth()\r\n      props.container.gfx.style.left = `${width}px`\r\n    } else {\r\n      props.container.gfx.style.left = '0px'\r\n    }\r\n\r\n    props.viewer.viewport.ResizeToParent()\r\n  }\r\n\r\n  const getMaxSize = () => {\r\n    return props.container.root.clientWidth * MAX_WIDTH\r\n  }\r\n\r\n  const updateSize = () => {\r\n    let width = props.side.getWidth()\r\n    if (width === 0) return\r\n    width = Math.min(width, getMaxSize())\r\n    width = Math.max(width, props.side.minWidth)\r\n    props.side.setWidth(width)\r\n  }\r\n\r\n  // Resize canvas on each re-render.\r\n  useEffect(() => {\r\n    resizeGfx()\r\n  })\r\n\r\n  useEffect(() => {\r\n    // Init size to parent\r\n    const obs = new ResizeObserver((entries) => {\r\n      updateSize()\r\n      clearTimeout(resizeTimeOut.current)\r\n      resizeTimeOut.current = window.setTimeout(() => {\r\n        resizeGfx()\r\n      }, 100)\r\n    })\r\n    obs.observe(props.container.root)\r\n  }, [])\r\n\r\n  const onNavBtn = () => {\r\n    props.side.popContent()\r\n  }\r\n\r\n  const iconOptions = { height: 20, width: 20, fill: 'currentColor' }\r\n  return (\r\n    <Resizable\r\n      enable={\r\n        {\r\n          right: true,\r\n          top: false,\r\n          topLeft: false,\r\n          topRight: false,\r\n          left: false,\r\n          bottom: false,\r\n          bottomLeft: false,\r\n          bottomRight: false\r\n        } as Enable\r\n      }\r\n      size={{ width: props.side.getWidth(), height: '100%' }}\r\n      minWidth={props.side.minWidth}\r\n      maxWidth={getMaxSize()}\r\n      onResizeStart={(e, direction, ref) => {\r\n        if (direction !== 'right') {\r\n          e.stopPropagation()\r\n        }\r\n      }}\r\n      onResize={(e, direction, ref, d) => {\r\n        if (direction !== 'right') {\r\n          e.stopPropagation()\r\n        }\r\n        props.side.setWidth(ref.clientWidth)\r\n      }}\r\n      style={{\r\n        position: 'absolute'\r\n      }}\r\n      className={`vim-side-panel vc-top-0 vc-left-0 vc-z-20 vc-bg-gray-lightest vc-text-gray-darker ${\r\n        props.side.getContent() !== 'none' ? '' : 'vc-hidden'\r\n      }`}\r\n    >\r\n      <button\r\n        className=\"vim-side-panel-nav vc-z-30 vc-absolute vc-right-1 vc-top-1 vc-w-4 vc-h-4 vc-text-gray-medium\"\r\n        onClick={onNavBtn}\r\n      >\r\n        {Icons.close({ ...iconOptions, className: 'vc-max-h-full vc-max-w-full' })}\r\n      </button>\r\n      <div\r\n       className='vim-side-panel-content vc-absolute vc-top-0 vc-bottom-0'>\r\n\r\n        {props.content()}\r\n      </div>\r\n    </Resizable>\r\n  )\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport { useMemo, useRef, useState } from 'react'\r\n\r\nexport type SideContent = 'none' | 'bim' | 'settings' | 'logs'\r\nconst MIN_WIDTH = 160\r\n\r\nexport type SideState = {\r\n  minWidth: number\r\n  toggleContent: (content: SideContent) => void\r\n  popContent: () => void\r\n  getNav: () => 'back' | 'close'\r\n  getContent: () => SideContent\r\n  setContent: (value: SideContent) => void\r\n  setHasBim: (value: boolean) => void\r\n  getWidth: () => number\r\n  setWidth: (value: number) => void\r\n}\r\n\r\n/**\r\n * Returns state closure for side panel\r\n * @param useInspector inspector will only be displayed if this is true.\r\n * @param defaultWidth default width of the side panel in pixel.\r\n * @returns\r\n */\r\nexport function useSideState (\r\n  useInspector: boolean,\r\n  defaultWidth: number\r\n): SideState {\r\n  const w = Math.max(MIN_WIDTH, defaultWidth)\r\n  const [side, setSide] = useState<SideContent[]>(['bim'])\r\n  const [, _setHasBim] = useState<boolean>(false)\r\n  const [width, _setWidth] = useState<number>(w)\r\n  const sideRef = useRef(side)\r\n  const widthRef = useRef(w)\r\n  const hasBimRef = useRef(false)\r\n\r\n  const toggleContent = (content: SideContent) => {\r\n    let r\r\n    const [A, B] = sideRef.current\r\n    if (!A && !B) r = [content]\r\n    else if (A === content && !B) r = []\r\n    else if (A !== content && !B) r = [A, content]\r\n    else if (A && B === content) r = [A]\r\n    else if (A && B !== content) r = [content]\r\n    sideRef.current = r\r\n    setSide(r)\r\n  }\r\n  const popContent = () => {\r\n    sideRef.current.pop()\r\n    setSide([...sideRef.current])\r\n  }\r\n  const getNav = () => {\r\n    return sideRef.current.length > 1 ? 'back' : 'close'\r\n  }\r\n\r\n  const getContent = () => {\r\n    const result = sideRef.current[sideRef.current.length - 1] ?? 'none'\r\n    if (result === 'bim' && (!useInspector || !hasBimRef.current)) return 'none'\r\n    return result\r\n  }\r\n\r\n  const setHasBim = (value: boolean) => {\r\n    hasBimRef.current = value\r\n    _setHasBim(value)\r\n  }\r\n\r\n  const setContent = (value: SideContent) => {\r\n    sideRef.current = [value]\r\n    setSide([value])\r\n  }\r\n\r\n  const setWidth = (value: number) => {\r\n    widthRef.current = value\r\n    _setWidth(value)\r\n  }\r\n  const getWidth = () => {\r\n    return getContent() === 'none' ? 0 : widthRef.current\r\n  }\r\n\r\n  return useMemo(\r\n    () => ({\r\n      minWidth: MIN_WIDTH,\r\n      setHasBim,\r\n      setContent,\r\n      getContent,\r\n      toggleContent,\r\n      popContent,\r\n      getNav,\r\n      getWidth,\r\n      setWidth\r\n    } as SideState),\r\n    [side, width]\r\n  )\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport React from 'react'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport { UserBoolean, ComponentSettings } from './settings'\r\nimport { SettingsState } from './settingsState'\r\n\r\n/**\r\n * JSX Component to interact with settings.\r\n * @param viewer current viewer\r\n * @param settings setting state\r\n * @param visible will return null if this is false.\r\n * @returns\r\n */\r\nexport function MenuSettings (props: {\r\n  viewer: VIM.Viewer\r\n  settings: SettingsState\r\n  visible: boolean\r\n}) {\r\n  if (!props.visible) return null\r\n  const toggleElement = (label: string, state: boolean, action: () => void) => {\r\n    return (\r\n      <label className=\"vc-m-1 vc-block vc-select-none vc-items-center vc-py-1 vc-text-gray-warm\">\r\n        <input\r\n          type=\"checkbox\"\r\n          checked={state}\r\n          onChange={action}\r\n          className=\"vim-settings-checkbox vc-checked:bg-primary-royal vc-mr-2 vc-rounded vc-border vc-border-gray-medium \"\r\n        ></input>{' '}\r\n        {label}\r\n      </label>\r\n    )\r\n  }\r\n\r\n  const settingsToggle = (\r\n    label: string,\r\n    getter: (settings: ComponentSettings) => UserBoolean,\r\n    setter: (settings: ComponentSettings, b: boolean) => void\r\n  ) => {\r\n    const value = getter(props.settings.value)\r\n    if (value === 'AlwaysTrue' || value === 'AlwaysFalse') {\r\n      return null\r\n    }\r\n    return toggleElement(label, value, () => {\r\n      const value = getter(props.settings.value)\r\n      props.settings.update((s) => setter(s, !value))\r\n    })\r\n  }\r\n\r\n  const settingsBox = (label: string,\r\n    info: string,\r\n    transform : (value:number) => number,\r\n    getter: (settings: ComponentSettings) => number,\r\n    setter: (settings: ComponentSettings, b: number) => void) => {\r\n    const value = getter(props.settings.value).toString()\r\n    const update = (event: React.FocusEvent<HTMLInputElement, Element>) => {\r\n      const str = event.target.value\r\n      const n = Number.parseFloat(str)\r\n      if (Number.isNaN(n)) {\r\n        event.target.value = getter(props.settings.value).toString()\r\n      } else {\r\n        const value = transform(n)\r\n        event.target.value = value.toString()\r\n        props.settings.update(s => setter(s, value))\r\n      }\r\n    }\r\n\r\n    return <div className=\"vc-box-input vc-my-1\">\r\n      <label htmlFor=\"textbox\" className='vc-w-3 vc-h-2'>{label}:</label>\r\n      <input type=\"text\" placeholder={value} className='vim-settings-textbox vc-w-14 vc-ml-1 vc-p-1' onBlur={e => update(e)}/>\r\n      <label htmlFor=\"textbox\" className='vc-w-3 vc-h-2 vc-text-gray vc-ml-1'>{info}</label>\r\n    </div>\r\n  }\r\n\r\n  function settingsSubtitle (title: string) {\r\n    return (\r\n      <h3 className=\"vc-subtitle\">{title}</h3>\r\n    )\r\n  }\r\n\r\n  return (\r\n    <div\r\n      className='vc-absolute vc-inset-0'>\r\n        <h3 className=\"vc-title\">Settings </h3>\r\n      <div className=\"vim-settings vc-absolute vc-top-6 vc-left-0 vc-bottom-0 vc-right-0 vc-overflow-y-auto\">\r\n        {settingsSubtitle('Inputs')}\r\n        {settingsBox(\r\n          'Scroll Speed',\r\n          '[0.1,10]',\r\n          n => VIM.THREE.MathUtils.clamp(n, 0.1, 10),\r\n          s => props.viewer.inputs.mouse.scrollSpeed,\r\n          (s, v) => { props.viewer.inputs.mouse.scrollSpeed = v }\r\n        )}\r\n        {settingsSubtitle('Materials')}\r\n        {settingsToggle(\r\n          'Use Isolation Material',\r\n          (settings) => settings.isolation.useIsolationMaterial,\r\n          (settings, value) => {\r\n            settings.isolation.useIsolationMaterial = value\r\n            if (settings.peformance.useFastMaterial && value) {\r\n              settings.peformance.useFastMaterial = false\r\n            }\r\n          }\r\n        )}\r\n        {settingsToggle(\r\n          'Use Performance Material',\r\n          (settings) => settings.peformance.useFastMaterial,\r\n          (settings, value) => {\r\n            settings.peformance.useFastMaterial = value\r\n            if (settings.isolation.useIsolationMaterial && value) {\r\n              settings.isolation.useIsolationMaterial = false\r\n            }\r\n          }\r\n        )}\r\n        {settingsSubtitle('Scene')}\r\n        {settingsToggle(\r\n          'Show Ground Plane',\r\n          (_) => props.viewer.environment.groundPlane.visible,\r\n          (_, value) => { props.viewer.environment.groundPlane.visible = value }\r\n        )}\r\n        {settingsSubtitle('Panels')}\r\n        {settingsToggle(\r\n          'Show Logo',\r\n          (settings) => settings.ui.logo,\r\n          (settings, value) => (settings.ui.logo = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Bim Tree',\r\n          (settings) => settings.ui.bimTreePanel,\r\n          (settings, value) => (settings.ui.bimTreePanel = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Bim Info',\r\n          (settings) => settings.ui.bimInfoPanel,\r\n          (settings, value) => (settings.ui.bimInfoPanel = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Axes Panel',\r\n          (settings) => settings.ui.axesPanel,\r\n          (settings, value) => (settings.ui.axesPanel = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Performance Panel',\r\n          (settings) => settings.ui.performance,\r\n          (settings, value) => (settings.ui.performance = value)\r\n        )}\r\n\r\n        {settingsSubtitle('Axes')}\r\n        {settingsToggle(\r\n          'Show Orthographic Button',\r\n          (settings) => settings.ui.orthographic,\r\n          (settings, value) => (settings.ui.orthographic = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Reset Camera Button',\r\n          (settings) => settings.ui.resetCamera,\r\n          (settings, value) => (settings.ui.resetCamera = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Toggle Ghost Button',\r\n          (settings) => settings.ui.enableGhost,\r\n          (settings, value) => (settings.ui.enableGhost = value)\r\n        )}\r\n        {settingsSubtitle('Control Bar')}\r\n        {settingsToggle(\r\n          'Show Control Bar',\r\n          (settings) => settings.ui.controlBar,\r\n          (settings, value) => (settings.ui.controlBar = value)\r\n        )}\r\n        {settingsSubtitle('Control Bar - Cursors')}\r\n        {settingsToggle(\r\n          'Show Orbit Button',\r\n          (settings) => settings.ui.orbit,\r\n          (settings, value) => (settings.ui.orbit = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Look Around Button',\r\n          (settings) => settings.ui.lookAround,\r\n          (settings, value) => (settings.ui.lookAround = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Pan Button',\r\n          (settings) => settings.ui.pan,\r\n          (settings, value) => (settings.ui.pan = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Zoom Button',\r\n          (settings) => settings.ui.zoom,\r\n          (settings, value) => (settings.ui.zoom = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Zoom Window Button',\r\n          (settings) => settings.ui.zoomWindow,\r\n          (settings, value) => (settings.ui.zoomWindow = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Zoom To Fit Button',\r\n          (settings) => settings.ui.zoomToFit,\r\n          (settings, value) => (settings.ui.zoomToFit = value)\r\n        )}\r\n        {settingsSubtitle('Control Bar - Tools')}\r\n        {settingsToggle(\r\n          'Show Sectioning Mode Button ',\r\n          (settings) => settings.ui.sectioningMode,\r\n          (settings, value) => (settings.ui.sectioningMode = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Measuring Mode Button',\r\n          (settings) => settings.ui.measuringMode,\r\n          (settings, value) => (settings.ui.measuringMode = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Toggle Isolation Button',\r\n          (settings) => settings.ui.toggleIsolation,\r\n          (settings, value) => (settings.ui.toggleIsolation = value)\r\n        )}\r\n        {settingsSubtitle('Control Bar - Settings')}\r\n        {settingsToggle(\r\n          'Show Project Inspector Button',\r\n          (settings) => settings.ui.projectInspector,\r\n          (settings, value) => (settings.ui.projectInspector = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Settings Button',\r\n          (settings) => settings.ui.settings,\r\n          (settings, value) => (settings.ui.settings = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Help Button',\r\n          (settings) => settings.ui.help,\r\n          (settings, value) => (settings.ui.help = value)\r\n        )}\r\n        {settingsToggle(\r\n          'Show Maximise Button',\r\n          (settings) => settings.ui.maximise,\r\n          (settings, value) => (settings.ui.maximise = value)\r\n        )}\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport React, { useEffect, useRef, useState } from 'react'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport { SideState } from '../sidePanel/sideState'\r\n\r\nexport type ToastConfigSpeed = {\r\n  visible: boolean\r\n  speed: number\r\n}\r\n\r\n/**\r\n * Memoized version of MenuToast.\r\n */\r\nexport const MenuToastMemo = React.memo(MenuToast)\r\n\r\n/**\r\n * Toast jsx component that briefly shows up when camera speed changes.\r\n */\r\nfunction MenuToast (props: { viewer: VIM.Viewer; side: SideState }) {\r\n  const [visible, setVisible] = useState<boolean>()\r\n  const [speed, setSpeed] = useState<number>(-1)\r\n  const speedRef = useRef<number>(speed)\r\n  const toastTimeout = useRef<ReturnType<typeof setTimeout>>()\r\n\r\n  useEffect(() => {\r\n    speedRef.current = props.viewer.camera.speed\r\n    const subCam = props.viewer.camera.onSettingsChanged.subscribe(() => {\r\n      if (props.viewer.camera.speed !== speedRef.current) {\r\n        clearTimeout(toastTimeout.current)\r\n        toastTimeout.current = setTimeout(() => setVisible(false), 1000)\r\n\r\n        speedRef.current = props.viewer.camera.speed\r\n        setSpeed(props.viewer.camera.speed)\r\n        setVisible(true)\r\n      }\r\n    })\r\n\r\n    return () => {\r\n      subCam()\r\n      clearTimeout(toastTimeout.current)\r\n    }\r\n  }, [])\r\n\r\n  return (\r\n    <div\r\n      className={\r\n        'vim-menu-toast vc-pointer-events-none vc-absolute vc-top-[10%] vc-flex'\r\n      }\r\n      style={{\r\n        marginLeft: props.side.getWidth(),\r\n        width: `calc(100% - ${props.side.getWidth()}px)`\r\n      }}\r\n    >\r\n      <div\r\n        className={`vim-menu-toast vc-m-auto vc-flex vc-items-center vc-justify-between vc-rounded vc-bg-gray-warm vc-py-2 vc-px-5 vc-shadow-lg vc-transition-all ${\r\n          visible ? 'vc-opacity-100' : 'vc-opacity-0'\r\n        }`}\r\n      >\r\n        <span className=\"vc-text-sm vc-font-semibold vc-uppercase vc-text-gray-light\">\r\n          Speed:\r\n        </span>\r\n        <span className=\"vc-ml-1 vc-text-lg vc-font-bold vc-text-white\">\r\n          {speed + 25}\r\n        </span>\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport React, { useEffect, useRef } from 'react'\r\n\r\n/** This overlay is designed to go over the viewer canvas to intercept and dispatch events to the viewer canvas.\r\n * The point is that quickly finding a ui hit avoids the browser hit detection to search through all elements.\r\n * When the tree view is open with 10+k elements this increases general fps significantly.\r\n */\r\nexport function Overlay (props: { canvas: HTMLCanvasElement }) {\r\n  const overlay = useRef<HTMLDivElement>(null)\r\n\r\n  useEffect(() => {\r\n    const relay = (\r\n      evnt: string,\r\n      construct: (s: string, e: Event) => Event,\r\n      preventDefault: boolean = true\r\n    ) => {\r\n      overlay.current?.addEventListener(evnt, (e) => {\r\n        props.canvas.dispatchEvent(construct(evnt, e))\r\n        if (preventDefault) {\r\n          e.preventDefault()\r\n        }\r\n      })\r\n    }\r\n\r\n    relay('mousedown', (s, e) => new MouseEvent(s, e))\r\n    relay('mousemove', (s, e) => new MouseEvent(s, e))\r\n    relay('mouseup', (s, e) => new MouseEvent(s, e))\r\n\r\n    relay('dblclick', (s, e) => new MouseEvent(s, e))\r\n    relay('mouseout', (s, e) => new MouseEvent(s, e))\r\n    relay('wheel', (s, e) => new WheelEvent(s, e))\r\n\r\n    relay('pointerdown', (s, e) => new PointerEvent(s, e), false)\r\n    relay('pointermove', (s, e) => new PointerEvent(s, e), false)\r\n    relay('pointerup', (s, e) => new PointerEvent(s, e), false)\r\n\r\n    relay('touchstart', (s, e) => new TouchEvent(s, e), false)\r\n    relay('touchend', (s, e) => new TouchEvent(s, e), false)\r\n    relay('touchmove', (s, e) => new TouchEvent(s, e), false)\r\n  }, [])\r\n\r\n  return (\r\n    <div\r\n      ref={overlay}\r\n      onContextMenu={(e) => e.preventDefault()}\r\n      className={'vim-overlay vc-top-0 vc-left-0 vc-z-10 vc-h-full'}\r\n    ></div>\r\n  )\r\n}\r\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.Stats=t()}(this,function(){\"use strict\";var c=function(){var n=0,l=document.createElement(\"div\");function e(e){return l.appendChild(e.dom),e}function t(e){for(var t=0;t<l.children.length;t++)l.children[t].style.display=t===e?\"block\":\"none\";n=e}l.style.cssText=\"position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000\",l.addEventListener(\"click\",function(e){e.preventDefault(),t(++n%l.children.length)},!1);var i=(performance||Date).now(),a=i,o=0,f=e(new c.Panel(\"FPS\",\"#0ff\",\"#002\")),r=e(new c.Panel(\"MS\",\"#0f0\",\"#020\"));if(self.performance&&self.performance.memory)var d=e(new c.Panel(\"MB\",\"#f08\",\"#201\"));return t(0),{REVISION:16,dom:l,addPanel:e,showPanel:t,begin:function(){i=(performance||Date).now()},end:function(){o++;var e=(performance||Date).now();if(r.update(e-i,200),a+1e3<=e&&(f.update(1e3*o/(e-a),100),a=e,o=0,d)){var t=performance.memory;d.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){i=this.end()},domElement:l,setMode:t}};return c.Panel=function(n,l,i){var a=1/0,o=0,f=Math.round,r=f(window.devicePixelRatio||1),d=80*r,e=48*r,c=3*r,p=2*r,u=3*r,s=15*r,m=74*r,h=30*r,y=document.createElement(\"canvas\");y.width=d,y.height=e,y.style.cssText=\"width:80px;height:48px\";var v=y.getContext(\"2d\");return v.font=\"bold \"+9*r+\"px Helvetica,Arial,sans-serif\",v.textBaseline=\"top\",v.fillStyle=i,v.fillRect(0,0,d,e),v.fillStyle=l,v.fillText(n,c,p),v.fillRect(u,s,m,h),v.fillStyle=i,v.globalAlpha=.9,v.fillRect(u,s,m,h),{dom:y,update:function(e,t){a=Math.min(a,e),o=Math.max(o,e),v.fillStyle=i,v.globalAlpha=1,v.fillRect(0,0,d,s),v.fillStyle=l,v.fillText(f(e)+\" \"+n+\" (\"+f(a)+\"-\"+f(o)+\")\",c,p),v.drawImage(y,u+r,s,m-r,h,u,s,m-r,h),v.fillRect(u+m-r,s,r,h),v.fillStyle=i,v.globalAlpha=.9,v.fillRect(u+m-r,s,r,f((1-e/t)*h))}}},c});\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport Stats from 'stats-js'\r\n\r\n/**\r\n * Adds popular performance gizmo from package stat-js\r\n */\r\nexport function addPerformanceCounter (parent: HTMLDivElement) {\r\n  const stats = new Stats()\r\n  const div = stats.dom as HTMLDivElement\r\n  div.className =\r\n    'vim-performance !vc-absolute !vc-right-6 !vc-left-auto !vc-top-52'\r\n  parent.appendChild(div)\r\n  div.style.zIndex = '35'\r\n\r\n  function animate () {\r\n    requestAnimationFrame(() => animate())\r\n    stats.update()\r\n  }\r\n  animate()\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport { InputAction } from 'vim-webgl-viewer/dist/types/vim-webgl-viewer/raycaster'\r\nimport { SideState } from '../sidePanel/sideState'\r\nimport { Isolation } from './isolation'\r\nimport { ComponentCamera } from './camera'\r\nimport { HelpRef } from '../webgl/webglComponentRef'\r\n\r\n/**\r\n * Custom viewer input scheme for the vim component\r\n */\r\nexport class ComponentInputs implements VIM.InputScheme {\r\n  private _viewer: VIM.Viewer\r\n  private _camera: ComponentCamera\r\n  private _default: VIM.InputScheme\r\n  private _isolation: Isolation\r\n  private _sideState: SideState\r\n  private _help: HelpRef\r\n\r\n  constructor (\r\n    viewer: VIM.Viewer,\r\n    camera: ComponentCamera,\r\n    isolation: Isolation,\r\n    sideState: SideState\r\n  ) {\r\n    this._viewer = viewer\r\n    this._camera = camera\r\n    this._default = new VIM.DefaultInputScheme(viewer)\r\n    this._isolation = isolation\r\n    this._sideState = sideState\r\n  }\r\n\r\n  private _getSelection = () => {\r\n    return [...this._viewer.selection.objects].filter(\r\n      (o) => o.type === 'Object3D'\r\n    ) as VIM.Object3D[]\r\n  }\r\n\r\n  onMainAction (hit: InputAction): void {\r\n    this._default.onMainAction(hit)\r\n  }\r\n\r\n  onIdleAction (hit: InputAction): void {\r\n    this._default.onIdleAction(hit)\r\n  }\r\n\r\n  onKeyAction (key: number): boolean {\r\n    // F\r\n    switch (key) {\r\n      case VIM.KEYS.KEY_F4:\r\n      case VIM.KEYS.KEY_DIVIDE: {\r\n        this._sideState.toggleContent('settings')\r\n        return true\r\n      }\r\n\r\n      case VIM.KEYS.KEY_F: {\r\n        this._camera.frameContext()\r\n        return true\r\n      }\r\n      case VIM.KEYS.KEY_I: {\r\n        this._isolation.toggleIsolation('keyboard')\r\n        return true\r\n      }\r\n\r\n      case VIM.KEYS.KEY_ESCAPE: {\r\n        if (this._viewer.selection.count > 0) {\r\n          this._viewer.selection.clear()\r\n          return true\r\n        }\r\n        if (this._isolation.any()) {\r\n          this._isolation.clear('keyboard')\r\n          return true\r\n        }\r\n        break\r\n      }\r\n      case VIM.KEYS.KEY_V: {\r\n        if (this._viewer.selection.count === 0) return\r\n        const objs = [...this._viewer.selection.objects]\r\n        const visible = objs.findIndex((o) => o.visible) >= 0\r\n        if (visible) {\r\n          this._isolation.hide(\r\n            this._getSelection(),\r\n            'keyboard'\r\n          )\r\n          this._viewer.selection.clear()\r\n        } else {\r\n          this._isolation.show(\r\n            this._getSelection(),\r\n            'keyboard'\r\n          )\r\n        }\r\n        return true\r\n      }\r\n    }\r\n\r\n    return this._default.onKeyAction(key)\r\n  }\r\n}\r\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport { UserBoolean, ComponentSettings, RecursivePartial, PartialComponentSettings } from './settings'\r\n\r\nexport function getLocalComponentSettings (settings: PartialComponentSettings = {}) {\r\n  try {\r\n    const json = localStorage.getItem('component.settings')\r\n    const previous = JSON.parse(json!) as ComponentSettings\r\n    applyPermission(previous, settings)\r\n    return previous ?? {}\r\n  } catch (e) {\r\n    console.error('Could not read local storage')\r\n    return {}\r\n  }\r\n}\r\n\r\nexport function saveSettingsToLocal (value: ComponentSettings) {\r\n  try {\r\n    const save = removePermission(value)\r\n    localStorage.setItem('component.settings', JSON.stringify(save))\r\n  } catch (error) {}\r\n}\r\n\r\nfunction applyPermission (\r\n  previous: ComponentSettings,\r\n  current: RecursivePartial<ComponentSettings>\r\n) {\r\n  if (!current?.ui) return\r\n  for (const k of Object.keys(current.ui)) {\r\n    const p = previous.ui as any\r\n    const c = current.ui as any\r\n    if (c[k] as UserBoolean === 'AlwaysTrue') {\r\n      p[k] = 'AlwaysTrue'\r\n    }\r\n    if (c[k] as UserBoolean === 'AlwaysFalse') {\r\n      p[k] = 'AlwaysFalse'\r\n    }\r\n  }\r\n}\r\n\r\nfunction removePermission (settings: ComponentSettings) {\r\n  const clone = structuredClone(settings)\r\n  for (const k of Object.keys(clone.ui)) {\r\n    const u = clone.ui as any\r\n    if (u[k] as UserBoolean === 'AlwaysTrue') {\r\n      u[k] = true\r\n    }\r\n    if (u[k] as UserBoolean === 'AlwaysFalse') {\r\n      u[k] = false\r\n    }\r\n    u[k] = u[k] === true\r\n  }\r\n  return clone\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport { useEffect, useMemo, useRef, useState } from 'react'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport { ComponentSettings, PartialComponentSettings, defaultSettings, isTrue } from './settings'\r\nimport deepmerge from 'deepmerge'\r\nimport { saveSettingsToLocal } from './settingsStorage'\r\n\r\nexport type SettingsState = {\r\n  value: ComponentSettings\r\n  update: (updater: (s: ComponentSettings) => void) => void\r\n  register: (action: (s: ComponentSettings) => void) => void\r\n}\r\n\r\n/**\r\n * Returns a new state closure for settings.\r\n */\r\nexport function useSettings (\r\n  viewer: VIM.Viewer,\r\n  value: PartialComponentSettings\r\n): SettingsState {\r\n  const merge = deepmerge(defaultSettings, value) as ComponentSettings\r\n  const [settings, setSettings] = useState(merge)\r\n  const onUpdate = useRef<(s: ComponentSettings) => void>()\r\n\r\n  const update = function (updater: (s: ComponentSettings) => void) {\r\n    const next = { ...settings } // Shallow copy\r\n    updater(next)\r\n    validateSettings(next)\r\n    saveSettingsToLocal(next)\r\n    setSettings(next)\r\n    onUpdate.current?.(next)\r\n  }\r\n\r\n  // First Time\r\n  useEffect(() => {\r\n    applySettings(viewer, settings)\r\n  }, [])\r\n\r\n  // On Change\r\n  useEffect(() => {\r\n    applySettings(viewer, settings)\r\n  }, [settings])\r\n\r\n  return useMemo(\r\n    () => ({\r\n      value: settings,\r\n      update,\r\n      register: (v) => (onUpdate.current = v)\r\n    }),\r\n    [settings]\r\n  )\r\n}\r\n\r\nfunction validateSettings (settings: ComponentSettings) {\r\n  if (settings.peformance.useFastMaterial && settings.isolation.useIsolationMaterial) {\r\n    settings.peformance.useFastMaterial = false\r\n  }\r\n}\r\n\r\n/**\r\n * Apply given vim component settings to the given viewer.\r\n */\r\nexport function applySettings (viewer: VIM.Viewer, settings: ComponentSettings) {\r\n  // Show/Hide performance gizmo\r\n  const performance = document.getElementsByClassName('vim-performance-div')[0]\r\n  if (performance) {\r\n    if (isTrue(settings.ui.performance)) {\r\n      performance.classList.remove('vc-hidden')\r\n    } else {\r\n      performance.classList.add('vc-hidden')\r\n    }\r\n  }\r\n\r\n  viewer.vims.forEach((v) => {\r\n    if (settings.peformance.useFastMaterial && v.scene.material === undefined) {\r\n      v.scene.material = viewer.materials.simple\r\n    }\r\n    if (!settings.peformance.useFastMaterial && v.scene.material === viewer.materials.simple) {\r\n      v.scene.material = undefined\r\n    }\r\n  })\r\n  // Isolation settings are applied in isolation.\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DispatcherWrapper = void 0;\n/**\n * Hides the implementation of the event dispatcher. Will expose methods that\n * are relevent to the event.\n *\n * @export\n * @class DispatcherWrapper\n * @implements {ISubscribable<TEventHandler>}\n * @template TEventHandler The type of event handler.\n */\nclass DispatcherWrapper {\n    /**\n     * Creates an instance of DispatcherWrapper.\n     * @param {ISubscribable<TEventHandler>} dispatcher\n     *\n     * @memberOf DispatcherWrapper\n     */\n    constructor(dispatcher) {\n        this._subscribe = (fn) => dispatcher.subscribe(fn);\n        this._unsubscribe = (fn) => dispatcher.unsubscribe(fn);\n        this._one = (fn) => dispatcher.one(fn);\n        this._has = (fn) => dispatcher.has(fn);\n        this._clear = () => dispatcher.clear();\n        this._count = () => dispatcher.count;\n        this._onSubscriptionChange = () => dispatcher.onSubscriptionChange;\n    }\n    /**\n     * Triggered when subscriptions are changed (added or removed).\n     *\n     * @readonly\n     * @type {ISubscribable<SubscriptionChangeEventHandler>}\n     * @memberOf DispatcherWrapper\n     */\n    get onSubscriptionChange() {\n        return this._onSubscriptionChange();\n    }\n    /**\n     * Returns the number of subscriptions.\n     *\n     * @readonly\n     * @type {number}\n     * @memberOf DispatcherWrapper\n     */\n    get count() {\n        return this._count();\n    }\n    /**\n     * Subscribe to the event dispatcher.\n     *\n     * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n     * @returns {() => void} A function that unsubscribes the event handler from the event.\n     *\n     * @memberOf DispatcherWrapper\n     */\n    subscribe(fn) {\n        return this._subscribe(fn);\n    }\n    /**\n     * Subscribe to the event dispatcher.\n     *\n     * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n     * @returns {() => void} A function that unsubscribes the event handler from the event.\n     *\n     * @memberOf DispatcherWrapper\n     */\n    sub(fn) {\n        return this.subscribe(fn);\n    }\n    /**\n     * Unsubscribe from the event dispatcher.\n     *\n     * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n     *\n     * @memberOf DispatcherWrapper\n     */\n    unsubscribe(fn) {\n        this._unsubscribe(fn);\n    }\n    /**\n     * Unsubscribe from the event dispatcher.\n     *\n     * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n     *\n     * @memberOf DispatcherWrapper\n     */\n    unsub(fn) {\n        this.unsubscribe(fn);\n    }\n    /**\n     * Subscribe once to the event with the specified name.\n     *\n     * @returns {() => void} A function that unsubscribes the event handler from the event.\n     *\n     * @memberOf DispatcherWrapper\n     */\n    one(fn) {\n        return this._one(fn);\n    }\n    /**\n     * Checks it the event has a subscription for the specified handler.\n     *\n     * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n     *\n     * @memberOf DispatcherWrapper\n     */\n    has(fn) {\n        return this._has(fn);\n    }\n    /**\n     * Clears all the subscriptions.\n     *\n     * @memberOf DispatcherWrapper\n     */\n    clear() {\n        this._clear();\n    }\n}\nexports.DispatcherWrapper = DispatcherWrapper;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Subscription = void 0;\n/**\n * Stores a handler. Manages execution meta data.\n * @class Subscription\n * @template TEventHandler\n */\nclass Subscription {\n    /**\n     * Creates an instance of Subscription.\n     *\n     * @param {TEventHandler} handler The handler for the subscription.\n     * @param {boolean} isOnce Indicates if the handler should only be executed once.\n     */\n    constructor(handler, isOnce) {\n        this.handler = handler;\n        this.isOnce = isOnce;\n        /**\n         * Indicates if the subscription has been executed before.\n         */\n        this.isExecuted = false;\n    }\n    /**\n     * Executes the handler.\n     *\n     * @param {boolean} executeAsync True if the even should be executed async.\n     * @param {*} scope The scope the scope of the event.\n     * @param {IArguments} args The arguments for the event.\n     */\n    execute(executeAsync, scope, args) {\n        if (!this.isOnce || !this.isExecuted) {\n            this.isExecuted = true;\n            var fn = this.handler;\n            if (executeAsync) {\n                setTimeout(() => {\n                    fn.apply(scope, args);\n                }, 1);\n            }\n            else {\n                fn.apply(scope, args);\n            }\n        }\n    }\n}\nexports.Subscription = Subscription;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventManagement = void 0;\n/**\n * Allows the user to interact with the event.\n *\n * @export\n * @class EventManagement\n * @implements {IEventManagement}\n */\nclass EventManagement {\n    /**\n     * Creates an instance of EventManagement.\n     * @param {() => void} unsub An unsubscribe handler.\n     *\n     * @memberOf EventManagement\n     */\n    constructor(unsub) {\n        this.unsub = unsub;\n        this.propagationStopped = false;\n    }\n    /**\n     * Stops the propagation of the event.\n     * Cannot be used when async dispatch is done.\n     *\n     * @memberOf EventManagement\n     */\n    stopPropagation() {\n        this.propagationStopped = true;\n    }\n}\nexports.EventManagement = EventManagement;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscriptionChangeEventDispatcher = exports.DispatcherBase = void 0;\nconst DispatcherWrapper_1 = require(\"./DispatcherWrapper\");\nconst Subscription_1 = require(\"../events/Subscription\");\nconst EventManagement_1 = require(\"../management/EventManagement\");\n/**\n * Base class for implementation of the dispatcher. It facilitates the subscribe\n * and unsubscribe methods based on generic handlers. The TEventType specifies\n * the type of event that should be exposed. Use the asEvent to expose the\n * dispatcher as event.\n *\n * @export\n * @abstract\n * @class DispatcherBase\n * @implements {ISubscribable<TEventHandler>}\n * @template TEventHandler The type of event handler.\n */\nclass DispatcherBase {\n    constructor() {\n        /**\n         * The subscriptions.\n         *\n         * @protected\n         *\n         * @memberOf DispatcherBase\n         */\n        this._subscriptions = new Array();\n    }\n    /**\n     * Returns the number of subscriptions.\n     *\n     * @readonly\n     * @type {number}\n     * @memberOf DispatcherBase\n     */\n    get count() {\n        return this._subscriptions.length;\n    }\n    /**\n     * Triggered when subscriptions are changed (added or removed).\n     *\n     * @readonly\n     * @type {ISubscribable<SubscriptionChangeEventHandler>}\n     * @memberOf DispatcherBase\n     */\n    get onSubscriptionChange() {\n        if (this._onSubscriptionChange == null) {\n            this._onSubscriptionChange = new SubscriptionChangeEventDispatcher();\n        }\n        return this._onSubscriptionChange.asEvent();\n    }\n    /**\n     * Subscribe to the event dispatcher.\n     *\n     * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n     * @returns A function that unsubscribes the event handler from the event.\n     *\n     * @memberOf DispatcherBase\n     */\n    subscribe(fn) {\n        if (fn) {\n            this._subscriptions.push(this.createSubscription(fn, false));\n            this.triggerSubscriptionChange();\n        }\n        return () => {\n            this.unsubscribe(fn);\n        };\n    }\n    /**\n     * Subscribe to the event dispatcher.\n     *\n     * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n     * @returns A function that unsubscribes the event handler from the event.\n     *\n     * @memberOf DispatcherBase\n     */\n    sub(fn) {\n        return this.subscribe(fn);\n    }\n    /**\n     * Subscribe once to the event with the specified name.\n     *\n     * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n     * @returns A function that unsubscribes the event handler from the event.\n     *\n     * @memberOf DispatcherBase\n     */\n    one(fn) {\n        if (fn) {\n            this._subscriptions.push(this.createSubscription(fn, true));\n            this.triggerSubscriptionChange();\n        }\n        return () => {\n            this.unsubscribe(fn);\n        };\n    }\n    /**\n     * Checks it the event has a subscription for the specified handler.\n     *\n     * @param {TEventHandler} fn The event handler.\n     *\n     * @memberOf DispatcherBase\n     */\n    has(fn) {\n        if (!fn)\n            return false;\n        return this._subscriptions.some((sub) => sub.handler == fn);\n    }\n    /**\n     * Unsubscribes the handler from the dispatcher.\n     *\n     * @param {TEventHandler} fn The event handler.\n     *\n     * @memberOf DispatcherBase\n     */\n    unsubscribe(fn) {\n        if (!fn)\n            return;\n        let changes = false;\n        for (let i = 0; i < this._subscriptions.length; i++) {\n            if (this._subscriptions[i].handler == fn) {\n                this._subscriptions.splice(i, 1);\n                changes = true;\n                break;\n            }\n        }\n        if (changes) {\n            this.triggerSubscriptionChange();\n        }\n    }\n    /**\n     * Unsubscribes the handler from the dispatcher.\n     *\n     * @param {TEventHandler} fn The event handler.\n     *\n     * @memberOf DispatcherBase\n     */\n    unsub(fn) {\n        this.unsubscribe(fn);\n    }\n    /**\n     * Generic dispatch will dispatch the handlers with the given arguments.\n     *\n     * @protected\n     * @param {boolean} executeAsync `True` if the even should be executed async.\n     * @param {*} scope The scope of the event. The scope becomes the `this` for handler.\n     * @param {IArguments} args The arguments for the event.\n     * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.\n     *\n     * @memberOf DispatcherBase\n     */\n    _dispatch(executeAsync, scope, args) {\n        //execute on a copy because of bug #9\n        for (let sub of [...this._subscriptions]) {\n            let ev = new EventManagement_1.EventManagement(() => this.unsub(sub.handler));\n            let nargs = Array.prototype.slice.call(args);\n            nargs.push(ev);\n            let s = sub;\n            s.execute(executeAsync, scope, nargs);\n            //cleanup subs that are no longer needed\n            this.cleanup(sub);\n            if (!executeAsync && ev.propagationStopped) {\n                return { propagationStopped: true };\n            }\n        }\n        if (executeAsync) {\n            return null;\n        }\n        return { propagationStopped: false };\n    }\n    /**\n     * Creates a subscription.\n     *\n     * @protected\n     * @param {TEventHandler} handler The handler.\n     * @param {boolean} isOnce True if the handler should run only one.\n     * @returns {ISubscription<TEventHandler>} The subscription.\n     *\n     * @memberOf DispatcherBase\n     */\n    createSubscription(handler, isOnce) {\n        return new Subscription_1.Subscription(handler, isOnce);\n    }\n    /**\n     * Cleans up subs that ran and should run only once.\n     *\n     * @protected\n     * @param {ISubscription<TEventHandler>} sub The subscription.\n     *\n     * @memberOf DispatcherBase\n     */\n    cleanup(sub) {\n        let changes = false;\n        if (sub.isOnce && sub.isExecuted) {\n            let i = this._subscriptions.indexOf(sub);\n            if (i > -1) {\n                this._subscriptions.splice(i, 1);\n                changes = true;\n            }\n        }\n        if (changes) {\n            this.triggerSubscriptionChange();\n        }\n    }\n    /**\n     * Creates an event from the dispatcher. Will return the dispatcher\n     * in a wrapper. This will prevent exposure of any dispatcher methods.\n     *\n     * @returns {ISubscribable<TEventHandler>}\n     *\n     * @memberOf DispatcherBase\n     */\n    asEvent() {\n        if (this._wrap == null) {\n            this._wrap = new DispatcherWrapper_1.DispatcherWrapper(this);\n        }\n        return this._wrap;\n    }\n    /**\n     * Clears the subscriptions.\n     *\n     * @memberOf DispatcherBase\n     */\n    clear() {\n        if (this._subscriptions.length != 0) {\n            this._subscriptions.splice(0, this._subscriptions.length);\n            this.triggerSubscriptionChange();\n        }\n    }\n    /**\n     * Triggers the subscription change event.\n     *\n     * @private\n     *\n     * @memberOf DispatcherBase\n     */\n    triggerSubscriptionChange() {\n        if (this._onSubscriptionChange != null) {\n            this._onSubscriptionChange.dispatch(this.count);\n        }\n    }\n}\nexports.DispatcherBase = DispatcherBase;\n/**\n * Dispatcher for subscription changes.\n *\n * @export\n * @class SubscriptionChangeEventDispatcher\n * @extends {DispatcherBase<SubscriptionChangeEventHandler>}\n */\nclass SubscriptionChangeEventDispatcher extends DispatcherBase {\n    /**\n     * Dispatches the event.\n     *\n     * @param {number} count The currrent number of subscriptions.\n     *\n     * @memberOf SubscriptionChangeEventDispatcher\n     */\n    dispatch(count) {\n        this._dispatch(false, this, arguments);\n    }\n}\nexports.SubscriptionChangeEventDispatcher = SubscriptionChangeEventDispatcher;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DispatchError = void 0;\n/**\n * Indicates an error with dispatching.\n *\n * @export\n * @class DispatchError\n * @extends {Error}\n */\nclass DispatchError extends Error {\n    /**\n     * Creates an instance of DispatchError.\n     * @param {string} message The message.\n     *\n     * @memberOf DispatchError\n     */\n    constructor(message) {\n        super(message);\n    }\n}\nexports.DispatchError = DispatchError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventListBase = void 0;\n/**\n * Base class for event lists classes. Implements the get and remove.\n *\n * @export\n * @abstract\n * @class EventListBaset\n * @template TEventDispatcher The type of event dispatcher.\n */\nclass EventListBase {\n    constructor() {\n        this._events = {};\n    }\n    /**\n     * Gets the dispatcher associated with the name.\n     *\n     * @param {string} name The name of the event.\n     * @returns {TEventDispatcher} The disptacher.\n     *\n     * @memberOf EventListBase\n     */\n    get(name) {\n        let event = this._events[name];\n        if (event) {\n            return event;\n        }\n        event = this.createDispatcher();\n        this._events[name] = event;\n        return event;\n    }\n    /**\n     * Removes the dispatcher associated with the name.\n     *\n     * @param {string} name\n     *\n     * @memberOf EventListBase\n     */\n    remove(name) {\n        delete this._events[name];\n    }\n}\nexports.EventListBase = EventListBase;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HandlingBase = void 0;\n/**\n * Base class that implements event handling. With a an\n * event list this base class will expose events that can be\n * subscribed to. This will give your class generic events.\n *\n * @export\n * @abstract\n * @class HandlingBase\n * @template TEventHandler The type of event handler.\n * @template TDispatcher The type of dispatcher.\n * @template TList The type of event list.\n */\nclass HandlingBase {\n    /**\n     * Creates an instance of HandlingBase.\n     * @param {TList} events The event list. Used for event management.\n     *\n     * @memberOf HandlingBase\n     */\n    constructor(events) {\n        this.events = events;\n    }\n    /**\n     * Subscribes once to the event with the specified name.\n     * @param {string} name The name of the event.\n     * @param {TEventHandler} fn The event handler.\n     *\n     * @memberOf HandlingBase\n     */\n    one(name, fn) {\n        this.events.get(name).one(fn);\n    }\n    /**\n     * Checks it the event has a subscription for the specified handler.\n     * @param {string} name The name of the event.\n     * @param {TEventHandler} fn The event handler.\n     *\n     * @memberOf HandlingBase\n     */\n    has(name, fn) {\n        return this.events.get(name).has(fn);\n    }\n    /**\n     * Subscribes to the event with the specified name.\n     * @param {string} name The name of the event.\n     * @param {TEventHandler} fn The event handler.\n     *\n     * @memberOf HandlingBase\n     */\n    subscribe(name, fn) {\n        this.events.get(name).subscribe(fn);\n    }\n    /**\n     * Subscribes to the event with the specified name.\n     * @param {string} name The name of the event.\n     * @param {TEventHandler} fn The event handler.\n     *\n     * @memberOf HandlingBase\n     */\n    sub(name, fn) {\n        this.subscribe(name, fn);\n    }\n    /**\n     * Unsubscribes from the event with the specified name.\n     * @param {string} name The name of the event.\n     * @param {TEventHandler} fn The event handler.\n     *\n     * @memberOf HandlingBase\n     */\n    unsubscribe(name, fn) {\n        this.events.get(name).unsubscribe(fn);\n    }\n    /**\n     * Unsubscribes from the event with the specified name.\n     * @param {string} name The name of the event.\n     * @param {TEventHandler} fn The event handler.\n     *\n     * @memberOf HandlingBase\n     */\n    unsub(name, fn) {\n        this.unsubscribe(name, fn);\n    }\n}\nexports.HandlingBase = HandlingBase;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PromiseSubscription = void 0;\n/**\n * Subscription implementation for events with promises.\n *\n * @export\n * @class PromiseSubscription\n * @implements {ISubscription<TEventHandler>}\n * @template TEventHandler The type of event handler.\n */\nclass PromiseSubscription {\n    /**\n     * Creates an instance of PromiseSubscription.\n     * @param {TEventHandler} handler The handler for the subscription.\n     * @param {boolean} isOnce Indicates if the handler should only be executed once.\n     *\n     * @memberOf PromiseSubscription\n     */\n    constructor(handler, isOnce) {\n        this.handler = handler;\n        this.isOnce = isOnce;\n        /**\n         * Indicates if the subscription has been executed before.\n         *\n         * @memberOf PromiseSubscription\n         */\n        this.isExecuted = false;\n    }\n    /**\n     * Executes the handler.\n     *\n     * @param {boolean} executeAsync True if the even should be executed async.\n     * @param {*} scope The scope the scope of the event.\n     * @param {IArguments} args The arguments for the event.\n     *\n     * @memberOf PromiseSubscription\n     */\n    async execute(executeAsync, scope, args) {\n        if (!this.isOnce || !this.isExecuted) {\n            this.isExecuted = true;\n            //TODO: do we need to cast to any -- seems yuck\n            var fn = this.handler;\n            if (executeAsync) {\n                setTimeout(() => {\n                    fn.apply(scope, args);\n                }, 1);\n                return;\n            }\n            let result = fn.apply(scope, args);\n            await result;\n        }\n    }\n}\nexports.PromiseSubscription = PromiseSubscription;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PromiseDispatcherBase = void 0;\nconst PromiseSubscription_1 = require(\"../events/PromiseSubscription\");\nconst EventManagement_1 = require(\"../management/EventManagement\");\nconst DispatcherBase_1 = require(\"./DispatcherBase\");\nconst DispatchError_1 = require(\"./DispatchError\");\n/**\n * Dispatcher base for dispatchers that use promises. Each promise\n * is awaited before the next is dispatched, unless the event is\n * dispatched with the executeAsync flag.\n *\n * @export\n * @abstract\n * @class PromiseDispatcherBase\n * @extends {DispatcherBase<TEventHandler>}\n * @template TEventHandler The type of event handler.\n */\nclass PromiseDispatcherBase extends DispatcherBase_1.DispatcherBase {\n    /**\n     * The normal dispatch cannot be used in this class.\n     *\n     * @protected\n     * @param {boolean} executeAsync `True` if the even should be executed async.\n     * @param {*} scope The scope of the event. The scope becomes the `this` for handler.\n     * @param {IArguments} args The arguments for the event.\n     * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.\n     *\n     * @memberOf DispatcherBase\n     */\n    _dispatch(executeAsync, scope, args) {\n        throw new DispatchError_1.DispatchError(\"_dispatch not supported. Use _dispatchAsPromise.\");\n    }\n    /**\n     * Crates a new subscription.\n     *\n     * @protected\n     * @param {TEventHandler} handler The handler.\n     * @param {boolean} isOnce Indicates if the handler should only run once.\n     * @returns {ISubscription<TEventHandler>} The subscription.\n     *\n     * @memberOf PromiseDispatcherBase\n     */\n    createSubscription(handler, isOnce) {\n        return new PromiseSubscription_1.PromiseSubscription(handler, isOnce);\n    }\n    /**\n     * Generic dispatch will dispatch the handlers with the given arguments.\n     *\n     * @protected\n     * @param {boolean} executeAsync `True` if the even should be executed async.\n     * @param {*} scope The scope of the event. The scope becomes the `this` for handler.\n     * @param {IArguments} args The arguments for the event.\n     * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.\n     *\n     * @memberOf DispatcherBase\n     */\n    async _dispatchAsPromise(executeAsync, scope, args) {\n        //execute on a copy because of bug #9\n        for (let sub of [...this._subscriptions]) {\n            let ev = new EventManagement_1.EventManagement(() => this.unsub(sub.handler));\n            let nargs = Array.prototype.slice.call(args);\n            nargs.push(ev);\n            let ps = sub;\n            await ps.execute(executeAsync, scope, nargs);\n            //cleanup subs that are no longer needed\n            this.cleanup(sub);\n            if (!executeAsync && ev.propagationStopped) {\n                return { propagationStopped: true };\n            }\n        }\n        if (executeAsync) {\n            return null;\n        }\n        return { propagationStopped: false };\n    }\n}\nexports.PromiseDispatcherBase = PromiseDispatcherBase;\n","\"use strict\";\n/*!\n * Strongly Typed Events for TypeScript - Core\n * https://github.com/KeesCBakker/StronlyTypedEvents/\n * http://keestalkstech.com\n *\n * Copyright Kees C. Bakker / KeesTalksTech\n * Released under the MIT license\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscriptionChangeEventDispatcher = exports.HandlingBase = exports.PromiseDispatcherBase = exports.PromiseSubscription = exports.DispatchError = exports.EventManagement = exports.EventListBase = exports.DispatcherWrapper = exports.DispatcherBase = exports.Subscription = void 0;\nconst DispatcherBase_1 = require(\"./dispatching/DispatcherBase\");\nObject.defineProperty(exports, \"DispatcherBase\", { enumerable: true, get: function () { return DispatcherBase_1.DispatcherBase; } });\nObject.defineProperty(exports, \"SubscriptionChangeEventDispatcher\", { enumerable: true, get: function () { return DispatcherBase_1.SubscriptionChangeEventDispatcher; } });\nconst DispatchError_1 = require(\"./dispatching/DispatchError\");\nObject.defineProperty(exports, \"DispatchError\", { enumerable: true, get: function () { return DispatchError_1.DispatchError; } });\nconst DispatcherWrapper_1 = require(\"./dispatching/DispatcherWrapper\");\nObject.defineProperty(exports, \"DispatcherWrapper\", { enumerable: true, get: function () { return DispatcherWrapper_1.DispatcherWrapper; } });\nconst EventListBase_1 = require(\"./dispatching/EventListBase\");\nObject.defineProperty(exports, \"EventListBase\", { enumerable: true, get: function () { return EventListBase_1.EventListBase; } });\nconst EventManagement_1 = require(\"./management/EventManagement\");\nObject.defineProperty(exports, \"EventManagement\", { enumerable: true, get: function () { return EventManagement_1.EventManagement; } });\nconst HandlingBase_1 = require(\"./handling/HandlingBase\");\nObject.defineProperty(exports, \"HandlingBase\", { enumerable: true, get: function () { return HandlingBase_1.HandlingBase; } });\nconst PromiseDispatcherBase_1 = require(\"./dispatching/PromiseDispatcherBase\");\nObject.defineProperty(exports, \"PromiseDispatcherBase\", { enumerable: true, get: function () { return PromiseDispatcherBase_1.PromiseDispatcherBase; } });\nconst PromiseSubscription_1 = require(\"./events/PromiseSubscription\");\nObject.defineProperty(exports, \"PromiseSubscription\", { enumerable: true, get: function () { return PromiseSubscription_1.PromiseSubscription; } });\nconst Subscription_1 = require(\"./events/Subscription\");\nObject.defineProperty(exports, \"Subscription\", { enumerable: true, get: function () { return Subscription_1.Subscription; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SimpleEventDispatcher = void 0;\nconst ste_core_1 = require(\"ste-core\");\n/**\n * The dispatcher handles the storage of subsciptions and facilitates\n * subscription, unsubscription and dispatching of a simple event\n *\n * @export\n * @class SimpleEventDispatcher\n * @extends {DispatcherBase<ISimpleEventHandler<TArgs>>}\n * @implements {ISimpleEvent<TArgs>}\n * @template TArgs\n */\nclass SimpleEventDispatcher extends ste_core_1.DispatcherBase {\n    /**\n     * Creates an instance of SimpleEventDispatcher.\n     *\n     * @memberOf SimpleEventDispatcher\n     */\n    constructor() {\n        super();\n    }\n    /**\n     * Dispatches the event.\n     *\n     * @param {TArgs} args The arguments object.\n     * @returns {IPropagationStatus} The status of the event.\n     *\n     * @memberOf SimpleEventDispatcher\n     */\n    dispatch(args) {\n        const result = this._dispatch(false, this, arguments);\n        if (result == null) {\n            throw new ste_core_1.DispatchError(\"Got `null` back from dispatch.\");\n        }\n        return result;\n    }\n    /**\n     * Dispatches the event without waiting for the result.\n     *\n     * @param {TArgs} args The arguments object.\n     *\n     * @memberOf SimpleEventDispatcher\n     */\n    dispatchAsync(args) {\n        this._dispatch(true, this, arguments);\n    }\n    /**\n     * Creates an event from the dispatcher. Will return the dispatcher\n     * in a wrapper. This will prevent exposure of any dispatcher methods.\n     *\n     * @returns {ISimpleEvent<TArgs>} The event.\n     *\n     * @memberOf SimpleEventDispatcher\n     */\n    asEvent() {\n        return super.asEvent();\n    }\n}\nexports.SimpleEventDispatcher = SimpleEventDispatcher;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SimpleEventList = void 0;\nconst ste_core_1 = require(\"ste-core\");\nconst SimpleEventDispatcher_1 = require(\"./SimpleEventDispatcher\");\n/**\n * Storage class for multiple simple events that are accessible by name.\n * Events dispatchers are automatically created.\n */\nclass SimpleEventList extends ste_core_1.EventListBase {\n    /**\n     * Creates a new SimpleEventList instance.\n     */\n    constructor() {\n        super();\n    }\n    /**\n     * Creates a new dispatcher instance.\n     */\n    createDispatcher() {\n        return new SimpleEventDispatcher_1.SimpleEventDispatcher();\n    }\n}\nexports.SimpleEventList = SimpleEventList;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SimpleEventHandlingBase = void 0;\nconst ste_core_1 = require(\"ste-core\");\nconst SimpleEventList_1 = require(\"./SimpleEventList\");\n/**\n * Extends objects with signal event handling capabilities.\n */\nclass SimpleEventHandlingBase extends ste_core_1.HandlingBase {\n    constructor() {\n        super(new SimpleEventList_1.SimpleEventList());\n    }\n}\nexports.SimpleEventHandlingBase = SimpleEventHandlingBase;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NonUniformSimpleEventList = void 0;\nconst SimpleEventDispatcher_1 = require(\"./SimpleEventDispatcher\");\n/**\n * Similar to EventList, but instead of TArgs, a map of event names ang argument types is provided with TArgsMap.\n */\nclass NonUniformSimpleEventList {\n    constructor() {\n        this._events = {};\n    }\n    /**\n     * Gets the dispatcher associated with the name.\n     * @param name The name of the event.\n     */\n    get(name) {\n        if (this._events[name]) {\n            // @TODO avoid typecasting. Not sure why TS thinks this._events[name] could still be undefined.\n            return this._events[name];\n        }\n        const event = this.createDispatcher();\n        this._events[name] = event;\n        return event;\n    }\n    /**\n     * Removes the dispatcher associated with the name.\n     * @param name The name of the event.\n     */\n    remove(name) {\n        delete this._events[name];\n    }\n    /**\n     * Creates a new dispatcher instance.\n     */\n    createDispatcher() {\n        return new SimpleEventDispatcher_1.SimpleEventDispatcher();\n    }\n}\nexports.NonUniformSimpleEventList = NonUniformSimpleEventList;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NonUniformSimpleEventList = exports.SimpleEventList = exports.SimpleEventHandlingBase = exports.SimpleEventDispatcher = void 0;\nconst SimpleEventDispatcher_1 = require(\"./SimpleEventDispatcher\");\nObject.defineProperty(exports, \"SimpleEventDispatcher\", { enumerable: true, get: function () { return SimpleEventDispatcher_1.SimpleEventDispatcher; } });\nconst SimpleEventHandlingBase_1 = require(\"./SimpleEventHandlingBase\");\nObject.defineProperty(exports, \"SimpleEventHandlingBase\", { enumerable: true, get: function () { return SimpleEventHandlingBase_1.SimpleEventHandlingBase; } });\nconst NonUniformSimpleEventList_1 = require(\"./NonUniformSimpleEventList\");\nObject.defineProperty(exports, \"NonUniformSimpleEventList\", { enumerable: true, get: function () { return NonUniformSimpleEventList_1.NonUniformSimpleEventList; } });\nconst SimpleEventList_1 = require(\"./SimpleEventList\");\nObject.defineProperty(exports, \"SimpleEventList\", { enumerable: true, get: function () { return SimpleEventList_1.SimpleEventList; } });\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport { ComponentSettings } from '../settings/settings'\r\nimport { ComponentCamera } from './camera'\r\n\r\nimport { ArrayEquals } from './data'\r\nimport { SimpleEventDispatcher } from 'ste-simple-events'\r\n\r\n/**\r\n * Manages the isolation mechanic in the vim component.\r\n */\r\nexport class Isolation {\r\n  private _viewer: VIM.Viewer\r\n\r\n  private _settings: ComponentSettings\r\n  private _isolation: VIM.Object3D[]\r\n  private _lastIsolation: VIM.Object3D[]\r\n\r\n  private _camera: ComponentCamera\r\n  private _references = new Map<VIM.Vim, Set<VIM.Object3D> | 'always'>()\r\n\r\n  private _onChanged = new SimpleEventDispatcher<string>()\r\n  /** Signal dispatched when the isolation set changes. */\r\n  get onChanged () {\r\n    return this._onChanged.asEvent()\r\n  }\r\n\r\n  constructor (viewer: VIM.Viewer, camera: ComponentCamera, settings: ComponentSettings) {\r\n    this._viewer = viewer\r\n    this._camera = camera\r\n    this.applySettings(settings)\r\n  }\r\n\r\n  /**\r\n   * Applies relevant settings to isolation.\r\n   * @param settings The settings to be applied to isolation.\r\n   */\r\n  applySettings (settings: ComponentSettings) {\r\n    this._settings = settings\r\n    if (!this._settings.isolation.enable) return\r\n    const set = new Set(this._isolation?.map((o) => o.vim))\r\n    this._viewer.vims.forEach((v) => {\r\n      v.scene.material = this.getMaterial(this._settings, set.has(v))\r\n    })\r\n  }\r\n\r\n  /**\r\n   * Sets the reference objects for a given VIM.\r\n   * @param vim The VIM for which reference objects are being set.\r\n   * @param reference An array of reference objects or the string 'always' to indicate permanent reference.\r\n   */\r\n  setReference (vim: VIM.Vim, reference: VIM.Object3D[] | 'always') {\r\n    const value = reference === 'always' ? reference : new Set(reference)\r\n    this._references.set(vim, value)\r\n  }\r\n\r\n  /**\r\n   * Retrieves the reference objects set for a given VIM.\r\n   * @param vim The VIM for which reference objects are being retrieved.\r\n   * @returns The reference objects set for the specified VIM.\r\n   */\r\n  getReference (vim: VIM.Vim) {\r\n    return this._references.get(vim)\r\n  }\r\n\r\n  /**\r\n   * Clears all reference objects set for VIMs.\r\n   */\r\n  clearReferences () {\r\n    this._references.clear()\r\n  }\r\n\r\n  /**\r\n   * Returns true if there are currently objects isolated.\r\n   * @returns True if there are currently objects isolated; otherwise, false.\r\n   */\r\n  any () {\r\n    return this._isolation !== undefined\r\n  }\r\n\r\n  /**\r\n   * Returns the current array of isolated objects.\r\n   * @returns The array of objects currently isolated, or undefined if no objects are isolated.\r\n   */\r\n  current () {\r\n    return this._isolation\r\n  }\r\n\r\n  /**\r\n   * Isolates the objects in the given array and shows the rest as ghost.\r\n   * @param objects An array of objects to isolate.\r\n   * @param source The source of isolation.\r\n   * @returns True if isolation occurs; otherwise, false.\r\n   */\r\n  isolate (objects: VIM.Object3D[], source: string) {\r\n    if (!this._settings.isolation.enable) return\r\n\r\n    if (this._isolation) {\r\n      this._lastIsolation = this._isolation\r\n    }\r\n\r\n    const isolated = this._isolate(this._viewer, this._settings, objects)\r\n    this._isolation = isolated ? objects : undefined\r\n    this._camera.frameVisibleObjects()\r\n    this._onChanged.dispatch(source)\r\n    return isolated\r\n  }\r\n\r\n  /**\r\n   * Toggles current isolation based on selection.\r\n   * @param source The source of isolation.\r\n   */\r\n  toggleIsolation (source: string) {\r\n    if (!this._settings.isolation.enable) return\r\n    const selection = [...this._viewer.selection.objects].filter(o => o.type === 'Object3D') as VIM.Object3D[]\r\n\r\n    if (this._isolation) {\r\n      this._lastIsolation = this._isolation\r\n    }\r\n    if (this._isolation) {\r\n      if (selection.length === 0 || ArrayEquals(this._isolation, selection)) {\r\n        // Cancel isolation\r\n        this._showAll()\r\n        this._isolation = undefined\r\n      } else {\r\n        // Replace Isolation\r\n        const isolated = this._isolate(this._viewer, this._settings, selection)\r\n        this._isolation = isolated ? selection : undefined\r\n        this._camera.frameVisibleObjects()\r\n        this._viewer.selection.clear()\r\n      }\r\n    } else {\r\n      if (selection.length > 0) {\r\n        // Set new Isolation\r\n        const isolated = this._isolate(this._viewer, this._settings, selection)\r\n        this._isolation = isolated ? selection : undefined\r\n        this._camera.frameVisibleObjects()\r\n        this._viewer.selection.clear()\r\n      } else if (this._lastIsolation) {\r\n        // Restore last isolation\r\n        const isolated = this._isolate(\r\n          this._viewer,\r\n          this._settings,\r\n          this._lastIsolation\r\n        )\r\n        this._isolation = isolated ? [...this._lastIsolation] : undefined\r\n      }\r\n    }\r\n    this._onChanged.dispatch(source)\r\n  }\r\n\r\n  /**\r\n   * Removes the given objects from the isolation set.\r\n   * @param objects An array of objects to be removed from isolation.\r\n   * @param source The source of the removal operation.\r\n   */\r\n  hide (objects: VIM.Object3D[], source: string) {\r\n    if (!this._settings.isolation.enable) return\r\n    const selection = new Set(objects)\r\n    const initial = this._isolation ?? this._viewer.vims[0].getObjects()\r\n    const result: VIM.Object3D[] = []\r\n    for (const obj of initial) {\r\n      if (!selection.has(obj)) result.push(obj)\r\n    }\r\n    const isolated = this._isolate(this._viewer, this._settings, result)\r\n    this._isolation = isolated ? result : undefined\r\n    this._onChanged.dispatch(source)\r\n    objects.forEach((o) => this._viewer.selection.remove(o))\r\n  }\r\n\r\n  /**\r\n   * Adds the given objects to the isolation set.\r\n   * @param objects An array of objects to be added to isolation.\r\n   * @param source The source of the addition operation.\r\n   */\r\n  show (objects: VIM.Object3D[], source: string) {\r\n    if (!this._settings.isolation.enable) return\r\n    const isolation = this._isolation ?? []\r\n    objects.forEach((o) => isolation.push(o))\r\n    const result = [...new Set(isolation)]\r\n    const isolated = this._isolate(this._viewer, this._settings, result)\r\n    this._isolation = isolated ? result : undefined\r\n    this._onChanged.dispatch(source)\r\n  }\r\n\r\n  /**\r\n   * Clears the current isolation.\r\n   * @param source The source of the isolation clearing operation.\r\n   */\r\n  clear (source: string) {\r\n    if (!this._settings.isolation.enable) return\r\n    this._showAll()\r\n    this._lastIsolation = this._isolation\r\n    this._isolation = undefined\r\n    this._onChanged.dispatch(source)\r\n  }\r\n\r\n  /**\r\n   * Show all objects and quit isolation mode.\r\n   */\r\n  private _showAll () {\r\n    this._viewer.vims.forEach((v) => {\r\n      for (const obj of v.getObjects()) {\r\n        obj.visible = true\r\n      }\r\n      v.scene.material = this.getMaterial(this._settings, false)\r\n    })\r\n  }\r\n\r\n  getMaterial (settings: ComponentSettings, isolate: boolean) {\r\n    if (settings.peformance.useFastMaterial) {\r\n      return this._viewer.materials.simple\r\n    }\r\n    if (!settings.isolation.useIsolationMaterial) {\r\n      return undefined\r\n    }\r\n    if (!isolate) {\r\n      return undefined\r\n    }\r\n    return this._viewer.materials.isolation\r\n  }\r\n\r\n  private _isolate (\r\n    viewer: VIM.Viewer,\r\n    settings: ComponentSettings,\r\n    objects: VIM.Object3D[]\r\n  ) {\r\n    let useIsolation = false\r\n    if (!objects) {\r\n      this._showAll()\r\n    } else {\r\n      const set = new Set(objects)\r\n      let all = true\r\n      viewer.vims.forEach((vim) => {\r\n        for (const obj of vim.getObjects()) {\r\n          if (obj.hasMesh) {\r\n            obj.visible = set.has(obj)\r\n            all = all && obj.visible\r\n          }\r\n        }\r\n\r\n        const reference = this._references.get(vim)\r\n        if (reference === undefined) {\r\n          useIsolation = !all\r\n        } else if (reference === 'always') {\r\n          useIsolation = true\r\n        } else {\r\n          useIsolation = !setsEqual(reference, set)\r\n        }\r\n\r\n        vim.scene.material = this.getMaterial(this._settings, useIsolation)\r\n      })\r\n    }\r\n\r\n    return useIsolation\r\n  }\r\n}\r\n\r\nfunction setsEqual<T> (set1: Set<T>, set2: Set<T>): boolean {\r\n  if (set1.size !== set2.size) {\r\n    return false\r\n  }\r\n\r\n  for (const item of set1) {\r\n    if (!set2.has(item)) {\r\n      return false\r\n    }\r\n  }\r\n\r\n  return true\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport * as VIM from 'vim-webgl-viewer/'\r\n\r\n/**\r\n * Wraps the webgl viewer and provide higher level methods\r\n */\r\nexport class ComponentCamera {\r\n  private _viewer: VIM.Viewer\r\n  constructor (viewer: VIM.Viewer) {\r\n    this._viewer = viewer\r\n  }\r\n\r\n  /**\r\n   * Resets the camera to its initial position.\r\n   */\r\n  reset () {\r\n    this._viewer.camera.lerp(1).reset()\r\n  }\r\n\r\n  /**\r\n   * Frames selected elements if there is an active selection; otherwise, frames all visible objects.\r\n   * @param duration Optional duration of the camera movement animation (default: 1).\r\n   */\r\n  frameContext (duration = 1) {\r\n    if (this._viewer.selection.count > 0) {\r\n      this.frameSelection(duration)\r\n    } else {\r\n      this.frameVisibleObjects(undefined, duration)\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Frames selected elements if there is an active selection; otherwise, does nothing.\r\n   * @param duration Optional duration of the camera movement animation (default: 1).\r\n   */\r\n  frameSelection (duration = 1) {\r\n    if (this._viewer.selection.count === 0) return\r\n    const box = this._viewer.selection.getBoundingBox()\r\n\r\n    if (box && this._viewer.gizmos.section.box.intersectsBox(box)) {\r\n      const movement = duration === 0\r\n        ? this._viewer.camera.snap()\r\n        : this._viewer.camera.lerp(duration)\r\n      movement.frame(box)\r\n    }\r\n  }\r\n\r\n  /**\r\n * Frames all visible objects in the scene.\r\n * @param source Optional VIM to specify the source of objects to frame.\r\n * @param duration Duration of the camera movement animation (default: 1).\r\n */\r\n  frameVisibleObjects (source?: VIM.Vim, duration = 1) {\r\n    const movement = duration === 0\r\n      ? this._viewer.camera.snap()\r\n      : this._viewer.camera.lerp(duration)\r\n\r\n    const box = this.getVisibleBoundingBox(source)\r\n    movement.frame(box)\r\n  }\r\n\r\n  /**\r\n   * Returns the bounding box of all visible objects.\r\n   * @param source Optional VIM to specify the source of visible objects.\r\n   * @returns The bounding box of all visible objects.\r\n   */\r\n  getVisibleBoundingBox (source?: VIM.Vim) {\r\n    let box: VIM.THREE.Box3\r\n\r\n    const vimBoxUnion = (vim: VIM.Vim) => {\r\n      for (const obj of vim.getObjects()) {\r\n        if (!obj.visible) continue\r\n        const b = obj.getBoundingBox()\r\n        if (!b) continue\r\n        box = box ? box.union(b) : b?.clone()\r\n      }\r\n    }\r\n    if (source) {\r\n      vimBoxUnion(source)\r\n    } else {\r\n      for (const vim of this._viewer.vims) {\r\n        vimBoxUnion(vim)\r\n      }\r\n    }\r\n\r\n    return box\r\n  }\r\n}\r\n","/**\r\n * @module public-api\r\n */\r\n\r\n/**\r\n * Basic HTML structure that the webgl component expects\r\n */\r\nexport type VimComponentContainer = {\r\n  /**\r\n   * Root of the viewer, all component ui should have this as an acestor.\r\n   */\r\n  root: HTMLElement\r\n  /**\r\n   * Div where to instantiate ui elements.\r\n   */\r\n  ui: HTMLDivElement\r\n\r\n  /**\r\n   * Div to hold viewer canvases and ui\r\n   */\r\n  gfx: HTMLDivElement\r\n\r\n  dispose: () => void\r\n}\r\n\r\n/**\r\n * Creates a default container for the vim component around a vim viewer\r\n * The element is created if not provided. The element will be made position:absolute.\r\n * @element optional HTML element to use as root\r\n */\r\nexport function createContainer (element?: HTMLElement): VimComponentContainer {\r\n  // fullscreen root\r\n  let root = element\r\n  if (root === undefined) {\r\n    root = document.createElement('div')\r\n    document.body.append(root)\r\n    root.classList.add('vc-inset-0')\r\n  }\r\n  // UI relies on absolute positioning\r\n  root.style.position = 'absolute'\r\n  root.classList.add('vim-component')\r\n\r\n  // container for viewer canvases\r\n  const gfx = document.createElement('div')\r\n  gfx.className = 'vim-gfx vc-absolute vc-inset-0 vc-pointer-events-none'\r\n\r\n  // container for ui\r\n  const ui = document.createElement('div')\r\n  ui.className = 'vim-ui vc-absolute vc-inset-0'\r\n\r\n  root.append(gfx)\r\n  root.append(ui)\r\n\r\n  const dispose = () => {\r\n    if (element === undefined) {\r\n      // We own the element, so we remove it\r\n      root.remove()\r\n    } else {\r\n      root.classList.remove('vim-component')\r\n      // We don't own the element, so we just remove our children\r\n      gfx.remove()\r\n      ui.remove()\r\n    }\r\n  }\r\n\r\n  return { root, ui, gfx, dispose }\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport * as VIM from 'vim-webgl-viewer'\r\nimport * as BIM from 'vim-format'\r\n\r\nexport type AugmentedElement = BIM.IElement & {\r\n  bimDocumentName: string\r\n  categoryName: string\r\n  familyTypeName: string\r\n  levelName: string\r\n  worksetName: string\r\n}\r\nexport async function getElements (vim: VIM.Vim) {\r\n  if (!vim.bim) return []\r\n  const [elements, bimDocument, category, levels, worksets] = await Promise.all(\r\n    [\r\n      vim.bim.element?.getAll(),\r\n      vim.bim.bimDocument?.getAllTitle(),\r\n      vim.bim.category?.getAllName(),\r\n      vim.bim.level?.getAllElementIndex(),\r\n      vim.bim.workset?.getAllName()\r\n    ]\r\n  )\r\n  const familyTypeMap = await getFamilyTypeNameMap(vim.bim)\r\n\r\n  if (!elements) return undefined\r\n  const result = elements.map((e) => ({\r\n    ...e,\r\n    bimDocumentName: bimDocument ? bimDocument[e.bimDocumentIndex] : undefined,\r\n    categoryName: category ? category[e.categoryIndex] : undefined,\r\n    familyTypeName: familyTypeMap.get(e.index),\r\n    levelName: levels ? elements[levels[e?.levelIndex ?? -1]]?.name : undefined,\r\n    worksetName: worksets ? worksets[e?.worksetIndex ?? -1] : undefined\r\n  })) as AugmentedElement[]\r\n\r\n  const real = result.filter(e => vim.getObjectFromElement(e.index).hasMesh)\r\n\r\n  return real as AugmentedElement[]\r\n}\r\n\r\nasync function getFamilyTypeNameMap (document: BIM.VimDocument) {\r\n  const [\r\n    familyInstanceElement,\r\n    familyInstanceFamilyType,\r\n    familyTypeElement,\r\n    elementName\r\n  ] = await Promise.all([\r\n    document.familyInstance.getAllElementIndex(),\r\n    document.familyInstance.getAllFamilyTypeIndex(),\r\n    document.familyType.getAllElementIndex(),\r\n    document.element.getAllName()\r\n  ])\r\n\r\n  return new Map<number, string>(\r\n    familyInstanceElement.map((e, i) => {\r\n      const familyType = familyInstanceFamilyType?.[i]\r\n\r\n      const element = Number.isInteger(familyType)\r\n        ? familyTypeElement[familyType]\r\n        : undefined\r\n\r\n      const name = Number.isInteger(element)\r\n        ? elementName?.[element]\r\n        : undefined\r\n\r\n      return [e, name]\r\n    })\r\n  )\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport { useEffect, useState, useMemo, useRef } from 'react'\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport { AugmentedElement, getElements } from '../helpers/element'\r\n\r\nexport type ViewerState = {\r\n  vim: VIM.Vim\r\n  selection: VIM.Object3D[]\r\n  elements: AugmentedElement[]\r\n}\r\n\r\nexport function useViewerState (viewer: VIM.Viewer) : ViewerState {\r\n  const getVim = () => {\r\n    return viewer.selection.vim ?? viewer.vims[0]\r\n  }\r\n  const getSelection = () => {\r\n    return [...viewer.selection.objects].filter(o => o.type === 'Object3D') as VIM.Object3D[]\r\n  }\r\n\r\n  const [vim, setVim] = useState<VIM.Vim>(getVim())\r\n  const [selection, setSelection] = useState<VIM.Object3D[]>(getSelection())\r\n  const [elements, setElements] = useState<AugmentedElement[] | undefined>([])\r\n  const vimConnection = useRef<() =>void>()\r\n\r\n  useEffect(() => {\r\n    // register to viewer state changes\r\n    const subLoad = viewer.onVimLoaded.subscribe(() => setVim(getVim()))\r\n    const subSelect = viewer.selection.onValueChanged.subscribe(() => {\r\n      setVim(getVim())\r\n      // Only architectural objects are supported\r\n      setSelection(getSelection())\r\n    })\r\n\r\n    // Clean up\r\n    return () => {\r\n      subLoad()\r\n      subSelect()\r\n    }\r\n  }, [])\r\n\r\n  useEffect(() => {\r\n    vimConnection.current?.()\r\n\r\n    if (vim) {\r\n      vimConnection.current = vim.onLoadingUpdate.subscribe(() => {\r\n        getElements(vim).then((elements) => setElements(elements))\r\n      })\r\n      getElements(vim).then((elements) => setElements(elements))\r\n    } else {\r\n      setElements([])\r\n    }\r\n  }, [vim])\r\n\r\n  return useMemo(() => {\r\n    const result = { vim, selection, elements } as ViewerState\r\n    return result\r\n  }, [vim, selection, elements])\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA20AAAFQCAYAAAAsiZaQAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAACAAElEQVR42ux9d6AdVbn9+uaU23PTeyAhCZAEQlMBRcXy1GdFRH3y9KFS5CFSxR+CCASQXgUxgO2h7z1UqkjvvVexi/psSAIkIckt58z+fn/sMnv2zDm5aXdu+Rae3HOm7Nkz59zrrLPWtz5iZggEAoFAIBAIBAKBYGgiKnoCAoFAIBAIBAKBQCBoDCFtAoFAIBAIBAKBQDCEIaRNIBAIBAKBQCAQCIYwhLQJBAKBQCAQCAQCwRCGkDaBQCAQCAQCgUAgGMIQ0iYQCAQCgUAgEAgEQxhC2gQCgUAgEAgEAoFgCKPcaMXHLr5ldk9P39ibv7LXM0VPUiAQCAQbjso2by1/bsn/zJzyi6ujU045/MWi5yMQCASjHdInWbC+aKi0XXPY+/9cbale994zrz3vPadf3V30RAUCgUCw/mhf8LZpe3zxgh/t1FX/Xl+sXip6PgKBQCAQCNYfzeyRXC6VPt9arRzJpeiP/3LmNYcXPVmBQCAQDAzdi97etd3pD39l+09+9cX3zRrz1r88fP2FZ33jyLVFz0sgEAgEAsH6ozFpY8Y1X3rf3S3VyvWdLdVxILrgvWdd++K/nHH1W4uetEAgEAjyMXbR26Odz3jko9M+/OWnymtfO/Mtsya0vmXm+Nt66uq6oucmEAgEAoFgw0CNPLVEBCLCpy65dauY+Q9r+/rRV68DRMzANfVYHXX3sXv/X9EnIBAIBAJg7MK3Ye5+Z+3cv2r5SYrxoVJEeMvM8fjETvNf+Nl1Vx543ulHPlz0HAUCgUCgITVtgvVFU9JmftK/XXLrSYr562v6a+iv1wEACmDFOBFKXXTXsXuvLPpEBAKBYLRi7MK3TZu331nH969adoACtcRK4Y3Tx2H/XRfi+mv/67zzTj/y6KLnKBAIBIIEQtoE64uBRP4zgAtAtLK9pYpSFIH1jkTAEoqiF99xxjWfKfpEBAKBYLRh/KK3jtn9rIcP32rvYx6rrVr2RYBblIqxw5Qx+ND8qajF6l4GTi96ngKBQCAQCDYO61TazHP6t0tv+yyA74KBFWt7ECsFBYAZYP3jaVbqyHuO3fu+ok9KIBAIRjLGL3orttnvrLf2r1r+TQA7gBkKQG+ssNW4DuyzYCZmT5609obrrzzp/NOPPLvo+QoEAoEgDVHaBOuLATXXZmb+3/98z/dLRPdGRBjT1goicjuTVt12pii6Z8+zrrt8zzOunlX0iQkEAsFIxPhFb52/zX5n/ax/1fL7GNghBlAH0KcUtuxux0e2no5JHS2oKXUXmIWwCQQCgUAwAjAgpc2+/vS373gnwHcSgLpSWL56LZRW2mBHUQCI8SoB5/er+kUPfHWfVUWfpEAgEAx3jFu4x/htP3vWV/pXvXIUAxXtdGAwgFgxJrRV8a/zpmLHqd2IWjt+f/MNPzzkgjOOvr3oeQsEAoEgC1HaBOuLASltgP5w/fDgd98dRdGVAFCOInS3tSIiONbmff7GM7CkEpWeetvpV3+66JMUCASC4YrxC/doectZD39u7t7/77naquX/D0CFzB9dIkApRndrBe+cMxk7Tx2L3noMMB4ESAibQCAQCAQjBANW2uyyz1x251xW6mkAXSDC2r5+rOzpg2IAYCgikFHfCDplMgburMf1ox45bp/niz5hgUAgGA4Yv3APLPrc2W/qW7X8XGbsAQBsPA3W3RAzIyLCW7eYiA9tPQ2r++voaB/z1M0/++Fnzz/zaPl7KxAIBEMUorQJ1hfrRdoAgKIo2u+yO09mpb5mt3htbS9e7+uH0ltAi28MAkFBWyZjZgXguxTXjnzw+E+sLvrEBQKBYKhiwsI9tlj0ubPO6Fu1/FMEgmKYv6+WrhEUMyiKsNuM8fjA/KmoKYW2jjH1m2/40TfOP+OoE4s+B4FAIBA0hpA2wfpiwPZIDwrABQD+Ym8fxra3oq1aBgGwbkl4P82BIgAHoFT+0+6n/eS4ok9cIBAIhhomLNyjc89zHj5u64995Q/9q5Z/Sv+BZpB7WDAUMxZN7MJ7t5qCmmLtdlB4EMzfLPo8BAKBQCAQbFqst9IGABRFtN9ld+6tlPopzG0EM+Ofr69BLVZQYJRgFDYQyBwjNvob62KMP9RqtSOe+NrHf170RRAIBIIiMXHBm6PF+5/7wZ5Vy88BMJ+YM19+KbPMBo8smjwGe207A9VSCTEz2to7/3nLz/77mAvOPPrKos9HIBAIBM0hSptgfbEhShtYKf7BQe+6lqLS/VZdK0WEKV0dOv8fQIy00mYPxprjEYB5Ubnys13OuPa2xaf9dGbRF0IgEAgGGxMXvAXvPveRHbb9xHE31lYtv56A+QC7v6MaJnTEvIqVwowxbdhzy8lor5Sh2OX33gNACJtAIBAIBCMQG0TaDLgEHBkBKBEQgVCJCFPHdIKIbAiJU9nsDQcxACLblJsi0L9EpfKftj/92rMWnvbTrqIviEAgEAwGJi98y5Q3HHjut/tXLX+GgH9VgN/7EroyOAkeAYB+pTBjTDv22mYGpo9pRX8cg5nR1t71+9t+/j/fveDMo4s+LYFAIBAIBJsBG0zaWCn+3kHvfLpUiq60ahuB0FYqYXJXR47sy7AhJYAtqtc7RkAJwDGlUvmPi0758X8WfVEEAoFgc2HSwrd0vf+8R47e/hNf/XX/quVf0H872Xyjpf9u2gAn9h51pTCutYLdZk7AFt3t6I85abPCfBtAtxV9bgKBQCAQCDYPNqimzW0TRdj/8rsmKKX+CFAXAQBpa+Sq3n68snqtoWoMZb87Jp16VidCzACR9vXWQLpRLBEDeJzrtSNf+NrHHyr6AgkEAsGmwKQFu5feeOD57+5Ztfw0BnbRZEzbHhUzYsC0TtF/Q8G+JZIxpqWMd281BW+cMQE9Na2wMQNtHZ1P3/bzq/Y774wjJeJfIBAIhgmkpk2wvtgo0gboFgD7X373yUqpr+kFenkdwIq1vVi5tgdghiIt6ikAigh1mG+Q2fsmGak6OKWAn0b12lG/+NrH/1b0hRIIBIINwcQFu2Png87foXfVKycR8152OXt1aj5ps2TO/jFkVihFEXadOR7vmzsd/bHSxkkG2to7197686tOPv+MI88q+jwFAoFAMHAIaROsLzampg0AwEqp7xz4jpNKpegvkbY6gogQgTC+vQ2dLVUwJSqbPahtvm0/spSdTATgE+Vy5U/bnXHdV3c49SedRV8sgUAgWB9MXPDmKTsfdMGFfateeYSAvdj7Msz/Wiwicn8XAYaN+mdoO8JOU8fiX+dNd+m8is0XXoyHAEjEv0AgEAgEIxwbTdoMFIDPJRUZQETa+jh5TCdaKxUA5lsFc9PSgsQK1GgyJT1emYBvqHLlxUWn/uRTRV8wgUAgWBcmLHhzy7sueHS/BZ86/ome15cfBnCra3gCAEHPNduLLSJ2ISQAoJTCthO78O65U3UvNk+Ba+vo/OdtN1115flnHNlT9PkKBAKBQCDYvNgkpI2V4isOeMfdKJXuZ6KUekYgTO3uQqVSQmi4LIXjAKgiUeQMabOYhErlhwvPuO6WbU/98ZuLvnACgUAQYsKCN+NdFz765gX7Hv9Q/6rl32dgJuD/HWMwwSNmCYmzTgW7pK4U5o7vwke3nYWWUglKeV5y7Su/DcB/FX3OAoFAIBAINj82ldIGWLXNY1nW/lgiwrQxXaAoTdtK3kuGltTKBETMjtBZGyUAECMC0XupUr1v6zOuu3T+KT+eUfQFFAgEAgAYu2C3rRb95wXX969a/iCAnW2/NU4RNUJkXidI/mhqezlQUwqzutvx3nnT0VbRzbPZWiLBaG/v+v3tN131w/PPOLLo0xYIBAKBQDAI2OggktQ+URQd+N17L1RxfKgN+GcAygzVW4/x1xWrTD2GtkrWOQkgaSGgTgSl2MVdx9A3O4oIxAxFOhm7DgCM5Sqic7m//+Lfn/Dx1UVfTIFAMPowbsFu4xYdfNFRtZXLvgKiaglAZIgYmb9zzIySsTZqmyS5HpZ+LzYG0FdXmNzZig9sPQNbjetEXz0Gsw4rYQbaOzpx28//94LzzjhKGJtAIBAMU0gQiWB9sSmVNgBQDDoZoNUREYhgLD86mKStXMaUMV365gMEBa22EYAKaWIGZpQNyVMw306b5WwIG0OPy0QTwfgGKtUn553y438t+mIKBILRg3ELdqM9Lnrso/P3/frz/auWfY2AauQ1xAZg/oCxaXuinzuqZlQ4Bf0lVJ0Z9Vihq7WC3WZNwrzxXeirx1AMKLCJ+FcA86MALir6/AUCgUAgEAweNqnSBgBRqRQd9J17jqrH6mw7hlXMLFb29uFvq9aAkJA3AhBHBFK6EL8OoJ+AEgMx6S0jJA1nASAG6W+g9WGUAm7nvt4j//T1T/6q6AsrEAhGJsYt2A0LD7lol76Vy88F8HZmdrZGAhCxVtrcN2LMzitO0N+uWus4MZu/jwylGJ2VEt46eyresuUkrOmvG0ukaaKtGO0dnWtvu+mqk8874yiJ+BcIBIJhDFHaBOuLTa20QcWxumz/PS+IyuVfuI+jz/+I0NXWivFtrW5FmQAmIFKMEiUKW5lNKAmbyrakZt8YjJKxWZ/Le6ml9bnZZ15/yawlV7UXfXEFAsHIwpgFu83c6j8vunLNiuVPMPPb/ZpbC6ZUgJINzEUdyZdXsbetJXLlKMIO08Zj15kT0dMf679z7ClzWqW7mwEhbAKBQCAQjDJsctJmEBNwFJnY/wjGBkmaaJUATO3uRHdri+vPVjY7uoA0SoJM2NSzsd/YDdmbJbOuHAGHoNr6pxmn/PgrRV9ggUAw/DFm21073/DNx46Y/e9ff662avmn2dq5of8+6b9NbBJzE+tjDEYfA32sv4xS0E20I+j4fkvYlGJsO2kM3jtvOupKpS2WAMBAe0fXX2676arvnn/GUUVfDoFAIBAIBIOMzULaVBzz5Z9/211RqXQjA1C67B4RkiayJQDTxnSitVJ2E4ko+Qaa2JA8802zI3BAUuMGLyI7+MqbCJOo2nLGrDOu/9WMU368a9EXWiAQDD+M2XbX6A0XP/b+2Z858fH+lcvPZ8I4wLdp679K9sslW9FmH76d221NyXK9DWPBpG68f+sZqKtU42yzk6Nw9wG4puhrIhAIBAKBYPCxyWvaLKJSCQd87775Ko5/68KuTYoaQLD93BQz/vzqCvTX61DQ30hbMOl6t7qpCWFOlDcgXdumOInRJmiiGNt0NiLFwK1Rf+/+fznhE/8o+qILBIKhjc5td8WWX7x4+3jlsm+UiT4IMGKT+Fg2XyZpFwGbFEgyrgFdyxYDpoaNXXgSGWWNmN3zWqwwd1wX9lqwBbpayohjHTiikNSy6Yj/zl/dfvNPDjzvG0c8WPS1EQgEAsHGQ2raBOuLzWWPhIpjXPG5t/8hKpVPIyJExhpJHmEjAsoRYXr3GESRVuAsVbS1bGRugkKVLYHue0SuwI3cskoyTgTgX7na+udpZ95w6jSpdxMIBA3Qvu2uk6Z+8eJLelcue46JPlhnRg3eN0JgEAX/ZxskQbKxP7JZR6nKNL2wFivMGNOO98yfjrGtVcQqUek8mQ3t7Z3122/+yTVC2AQCgUAgGL3YbKTNQAG4AMBf2d30kGcX0gSrrVLGFuPGQRnrJAAX8W/aHDlZjTNj6HEIyTKGtl/qWjgdWhIBUEQVAo5HS/uL00758ceLueQCgWAoom2bN3XOu/jxQyZ/5qTH6yuXH6KgnQDJ3yX9F0aZ7S1Jsz0kLaGDo2VefIi/nIC6UpjY0Yp3bTUNM8a0o1/FzmjptmYb88+PgPnCoq+PQCAQCASC4rDZ7JEWUakcHfj9Bz6v4vhyM7AjV/4RGMCra3vxl5WrTMG+ifI3tWqxjf63zWrNCEldCaFmxiqZpf0mcVKZg9lG3UyEiFmBokfjvrVHvnTCJx4t+o0QCATFoGWbN5WmfOlb74hWLjsNwJvIECdbV2ubZSdOADbLNEpmmbU+2n1BcA20id3XVlBKYUy1gnfNmYo3zZyInlrd1bApQ9Rgfra3d624/eYfn3De6UdeXPR1EggEAsGmg9gjBeuLza20QcV1dfln9/heqVR6IDEvZgkbAIzvaMOs7i4XOgKGS4x0gSMZlc0ch/TNkx07ti0CKNnXWjP1t+IUAbw7tbQ/MPnMn/1o4pIfTyvkHRAIBIWgZZs3YfrFj28/7j9Ovqq2ctntivAmP14kJtM/zVO/fLXN/q1RSGrQ6gS3PbGv/Wej/XefNQk9tdj1YksRNrcnPwyCEDaBQCAQCEY5NjtpM1AKWGKDRXJhlL1xHR0Y39bqSB1560tBLZt/E2V/aIJGOgjAtA3w7ZX+mNo2yeUI2BctbX+adOaNx0w4WerdBIKRjso2bxrb8aVvndy3cvnjAD5GlpwZRT6GUejZfllk+q95DoTYRPrH5rnyvolKateS1zEzoojwxhkT8d6507CmVgcrTnqx+ZGRzGhr7/zDHTf/5MLzvnFk0ZdLIBAIBAJBwRgU0qbiOl/x2T3uKpVKP4yQxPtbRmX7twEEImDWuLEY39qS6sum0NiyaZPZAKuyJfslh9H7Rq5ILiFvpMldlcFnUlvHk+OXSL2bQDASUdrmTS2dFz/+6db/OPm5eOWyrzO4xZI1xUnLkRJ0b0kmdgTOfklEpnZNIR3dHwMuSRJ2W5MuqcdnLJjQhffOnZZE+5NXv2aPwHqdYjwC4Nair5lAIBAIBILisdlr2iyiUpkO/MGDc6HiZ8DosDZHfcNiQkMSWQ31OMavX3kVPbU6Ytdcm8wNVFplS+iaRh0wDWz1TVHEOiygzrbxrQ7cJvM1eky6PYCzXzLHHEW3qp41S1Z8XerdBILhjtLWb0DLYZe+Sa1cfkkEvIEAlE2dWglA2dioXd2aay8ClJhRJqBix4L+8iexSCbqWMmst/7uyCyPmbFgQjc+vmAWqqWSTopUXkyJUdxgnre1dz57xy0/+Y/zTz/yuaKvnUAgEAg2PaSmTbC+GCx7JFRc58v3e8uLUal8kZW2XG8jIpQCjlgulbDNhPGolCK7aVDL5hE23/ro3VyZ3VyKZMnbNNVawH177vrAlcD8/qil7f5xZ/384u6Tr5o6WNdJIBBsWtDWb9gyOuzSq+OVyx8lwhsA/XteBzm1rG5UthqAOhGUsUNGutkaFIxl0vaONPu5+jX/eMwAaTqmmNEbK8zoasf75k1HW6XsfUFkdvD/j5sZbR1da++45Sf/K4RNIBAIBAKBxaCRNkCHkizd7y0nUrn8d3ufQh5b8m2MIE3c5o4fr+P6kRCuyPtm2wzijkHG/VihJMQk/7uMhPTZm64o6AHHRBVi9UW0dT7TteTHXx7MayUQCDYSW7+hHZc8cTTtd8rveOXyvWsAal6Nmq15ZfJsigAUK/O9UroqLfYebNa7wBBOAkrqSP7m9Cvdi22vbWZhcnsr+mNOB4/AHjflHXgKwHeKvnwCgUAgEAiGDgaVtBnEIBwJzw7JREbxItiSEMudOqsVbD1xgq7/QDpCWzfOTgYmczPF8GxOrlebqV1L9Xxz4d5mn6TezSeEEXgKt7af1XnWz3/ZcfJV7y7gmgkEgoFi6zcQLn78w9jvlN9gxbJzFFCJ4ZEy2Gh+1gTLI1z2z4m/vX6YultOlDW7reLkrwgb26RioF8xJrS24B1bTsGW3Z3oj5Xr2xb2YoOZT1t71z/vuPknV5x/+pHLir6MAoFAIBAIhg4GnbSpek1d9pk3XxuVyg/ZWjTfWhSZuyFNsHTT7M6WKuaMGwuYejTbE0nv7qlsMP2RDHw7pC1USR/NMzbZcBKPSBL7Ud8gAAuoreOWzrN+/rOOk6/aerCvnUAgaIL5uwAXP7Ej9jv1Dqxcfj2AmQBSwUNsUiKV+z3XfxV0HSw7gsbefn7oiA0r6bdfBIWts82XRnVWGNtSxjvnTMEbpo5HT93ob2yL5fykSNujDVDM9zHjB0VfSoFAIBAIBEMLRShtAFAH0ZFkatuSEjcdEGJ/WgUuIsLkjg5M7+zySBghClQ2XyVzaZSePdIt9erXzGZOufN7yLl4b9Ng16AE8AepreP5zrN/vqTtpKvaCrqGAoHAYv7OE3H4ty/EymVPA/zO9Mp0vzRlkiKtWlYnm/5IhrixS3O0pC4G0A+gZqL7dc2aHseO7Hq1MSOKIiyePA67TZ+EnnrsYv2tFTKltJl9W9s6X7zzlp9854IzJOJfIBAIBAJBGoWQNlWv8WWf2e2pqFz+76QPkiZILijEEijDm0oEbDFmDCa2tSZlZ9434eR2Nt9/m3FLMLVt/thIv051f7O1dSamm02dm2tLkGxcZeYTqKPrxbaTf7x/EddRIBj1mL9LBy554lB87hu/xsrlh2U3MNZDz0nNDC+uP6FRbJtkm+3sNnFqi0QoqzNnwkR082zC7jMm4iNbz0J/HHu1cnouytS0gZP6Nk3c+A5mifgXCAQCgUCQxaBF/oeIyhUcdOUjkzmuvwhQByFdU8JezD+QvlH61fLlWNVXM7VvDEWEEux2WnFTXjxbzaS/+WAAsemT5PeAszd0ul8TmTCTZEzl9jaNwslMguiXvHb1Z3tO/MQTg/HGCQSjGvN3iXDE0n/ByuXnAbzQ6WZBnzTAvjS2ahd4lET527VWTS/BtAOgZCQyXwiRaRsSgVCBifhn248NiJmxaGI39l2wJdpKJcRKubo1ZriYfwBumWJGS1vHE/feds0nzz/t8BeLvrQCgUAg2PyQyH/B+qIw0gYAUblS+sIPHzla1eMzrWqmPKJmZpJSxBSA/jjGL5ctR2+t5m1L+hcgSlQ2go7utoluIWKGW08m1ER5RFDZAhVKRDy/ya6iKB3XDcSIop+rNasO6D3xkxIkIBBsaszfBThi6SKsXHYqQHtlsmEzcrqnhiHpq2ZJWuTtWDbrXe82ICFuzK7GlaB7P5ZJ92urIlHOFk0cg30XzEZbqYS6UmCVfM1jSRo8EqeY0drWufbu264+7YLTDv9G0ZdXIBAIBIMDIW2C9UVRNW0AAFWvxUs/vdv5Ubn8d7ewAWGDV29WiUpYMGmSRyx1HIBN7PfT3cJ7OB95vFTvTyCm9I5m0Mi9pGAgBnR/tw+jfcz/tZxzy5EtJ/9Y6t0Egk2FeTtNxBFLz8HKZY/nEjYg3Rk7B35oiApex942zhpp1DO7HPDUeEPiagD6WWFKZyveM3saOstlTdigHQM2wERZwgZ2dkmlGIrxKIDzi768AoFAIBAIhi4KJW0GdRB9Tt8oaVqW/Gdq21z6mw4lISJUyyUsmDwZpVQyXMN7tQxp801UNnXS1b4Zdhg1GMg27E7S3xjwXhPQCubzqGPM71tPvmrvoi+wQDCsMW+nDnzr8YOw/+mPYdXyo0HUlv5N5+CRt8xaJ5P9krq2LJHT6nxCsGwLAF0fZ+rgTJJkr1KY0tGGvefPxJzuDvRZwsYAK697iAs5MYQNQGtH58v33v7TKy847fCeoi+zQCAQCASCoYvCSZuq13jpv7/pbipXHgJ8cpW2RQJJA1zL0LqqVcybMAFgZRpwk0uOTHqwsTdiMF5wAdgRt3Rb3RTDgxXWzEKi1OhJA3CAWE2n9q4ft51zy/2tJ//4DUVfa4FgWGHeTiV86/F3YP9v3IGVy5cCPCchXt7D1awZ+BGwmajYNLVT3koFnfxoY0esrdr2YcuCUWeF7pYK3jlrMrabMBa9deUlRbLrQZLYIQGlGKxs/D/fwYzvFX2pBQKBQCAQDG0UTtoM6gR8zjbEjqCfRMYSGSFplm3rTSLTx21cWyvmjh8PZcga+cEl7olTwBx822QEf5+0JhcBOTdslL5wVmXzmn175LME5j3Q3vVQyzm3/KB60lWTir7YAsGQx7ydZuHoy/4XK5ffBWA3tzwkY+HyRs/9b2xsqzTTs61mCBqgv7QxHdXSQ1jiZurY2ET/d5RLeO8Wk/GuLaZgTT1JikzSIZPcSauyxcZe2dre8eI9t19z5YXfOKLoqy0QCAQCgWCIo9AgEh+lcqX0hf9+/JS4Vv8qSIeKcM4cFMhxo9grMnlxxQq8tHo12KY6IvhG3QadBMv1doQaEtLG/pf2DMR+XLhr0at7NzmyZg7Inl3TbmePaw7xEojOVqtXXlo76ZO9g3qRBYKhjnk7dePoyw7HyuVfhbYZeyutCdo85+AbEq/lR65RmgHXuDH401IySZCAHrbF9G6062xwSRmmHQgzKhFhz+kTse/WW6AWK63IBQ89XhLtr5Re3tbeiXtuvfriC79xxJeKvuQCgUAgGHxIEIlgfTFUlDaYev8LAPQAmjQ6EgWd5BgbQuVIl9eUe/a4cZjY3pFSy9L919idcEjYzBaN5pVdZhxZZXPscFtK6XgpEAjTwHyO6ux+onzSjz9a9HUXCIYE5u1Qxbcf/zcccNqzWLn8ZIADwgZk6tjCXy/KGKqz6zO/0Povhm3nYYesMWtrJNgFlCijrsVgxAy8Ycp47LvNFuiPFWLWqh2ztj4mhA0JYWOr7TEU84MgnFL0ZRcIBAKBQDA8MGSUNgCIypXo4P956kBV7/+2TXG0jbf9PmsRmR5r5rX9GTPw3Esv4fVaf8bmyJ7SluoHZ5UwItSVVvd00EDSAsAimQM58uesVCmVLf1Vvn88KwIoEBRRnYhu5jWrlsRf30f6uwlGH+btCBxzxS5YsexiALuBGyhk7gmhqZrmtg/XedtnFDqtlpegVTXb2qNieq9FYJTICyxSMXaZOBZfWDTH9WKzKhv8xtnQfdmU8lp4M6O1rWPtvbddc9pFpx0hEf8CgUAwSiFKm2B9MWSUNgBQ9Zpauu8u34sqLb/S5CmJzPZv0XzyxC51QCdLLpo8Ge3lSsMUyRxnlOvNZnkq5ezsmx79hVGwnJrdUNrABCJEepcygA+hY8yDpfNuP79yyk9bin4PBIJBw7wdp+IrV1yBlcueALBbrnoWpkJ6jbJd4kiuetYI3EBU5yRwxKRD+lZqZZpq98cxFo0fg4O3m4PWcgn1WHlqWhCRYoJHfMJmtrsfgBA2gUAgEAgEA8aQIm0GdQU6ypKxMPFR36SRU8iiYH2lXE61AnDrmFNqXTphUlOtiMjYKMkoZ+ntI7NtYrE0LQiQX3/ntnJpdl4dTvriV8F8ODq6/1hZ8pPDi34DBILNink7tuPyJw7HF874M1Yu2x9AQyLl1qVUsQb2x4bLvOW+c9lX3JjBBNdTDdAqeuyFiPTFCnPGdOCT82eis1JBrOw+SU5tbGyQysb6W1ukYXRtbR1/ve/2a6646LQjin4XBAKBQCAQDCMMOdIW1/rV5Z/a6c6oUr0ZAEpkiv9hKJzmbKZ/m1biiJL+bQSgo1LB4ilTEDnpjPzv6vUiADBkyyZPAmwVsKS9AJK+bBG8e0tKEzC9XWjf8hW4ZC520IDnEYBp6Bp7XuWCO58rn3L1O4p+LwSCTYq5iyNc/uT7cfAZv8LK5ReAUE1WegoYNei4mP0GR29rG2pn9snp5ZZp2JjeR9naNPNfbNIk60phSnsLPj5vBrbp7kRvHAdDJ8QMhrDFbLu8pRp238fAT4t+KwQCgUAgEAwvDDnSZlAn4EgAa4nIkC5y6pilR37dWni71tnSgjnjxrlgAAXK2B5dbzcAsCobUZ4L0j2LKN3DTZl9qMEemr6Riw0Pt6GMp5kiMLZH59jbShfcdU3llKsnFv1mCAQbhbmLgSueXIBDzvkxVi3/OYAtcrfL/nqkV3JIurINszP75hFADgic+64lqT71tbw6M8a2VPDhLadh98njsaauLZHKRPinu8YlDbntoazS1tbW8fx9t19z1jdFZRMIBAKBQLCeGJKkLa718+Wf2ukPlWrLRYq9erOAT/n92/z7L2WeTO3qwtwJExF7N3s+cWNoohbG87sv7pGobJZcJc29ORWQEqVUtgSpkHJPZbODpZQ7DwyUifmj6Br3l9KFd309OvUaqXcTDD/M22E8jvv+eVi5/JcAfyxZ4REn3+6Y6bEW1rMFNW6NkKfK+evYp2VJUVo4slIKLaUS3jVzMj685VS8Xquleq6le7Dp0JFYebH/ZnlLa0f9vjuuvembpx3xbNFviUAgEAgEguGHIUnaDOoKuACEf1gli0z9mJ24EeFAZJptm20SqyRhSmcnpnR1upoVC3vPVjavNTlLCCCR57yy+5j+cXapApzKllgnc4pzzA0hpRS45Lm1ZCJQ8QxaiXEyd43/Q3TadfsV/aYIBAPCvB3a8b2n/hNfPPs3WLn8yGRFoyAQpL8tyd2Wc7bj7Po8W2Qe2QuVbzI9GA3ZUopRiSK8a/oEfGqrGVjZX0sNyV69mgsx8Ya2D4PHAZxX9NsiEAgEAoFgeGJIRf6HKFWqpYP+95kD6rX+b1tbYt3et6VS5JL2AFb5Ut5pxcz4zfLl+GfPWu/LegZHEQjai6mYwRS5pMrYbpdIYan6NyZC3ahtETOIyPV68uvdUgEqROY7eT2Wa8xNulG3PUcyDcK1U1MzybqmkgoUPYfXX/kcH//RZ4p+fwSCDObtEOH4778TK5adD8J2SeRrE8LkemZw+rX90SjdfyBxyf424Tgpa6V3IDfnGG+ZMgFf22k+emqx/t03c7MBIzZaMt1YG65XGwNobetY8cDt1570zdMOv7Dot0cgEAgEQwMS+S9YXwxlpQ1xrT++7N92/F652vKw5U6RU9cS9c3GfPg2Sdt0GwAoirDV+AnoKFd8r6LLfNNpkF6MCHMyhveTLclyCGrqqLGIkNojTK5LvRG5aptV6SKw2hFd4x7FN+//Dp12ndS7CYYG5i4GfvDMAnzpnB9h5bLbQdgOgPl8q6CPRiMbpP3J2XWhjXJd9sgM/Pq34Hmo0BEApbDzpHH44qLZ6IuV7gtp7JDK2z2J9IdJjPSi/8m9fhwEIWwCgUAgEAg2GEOatBnUCbTE9WMzJI05iedWRFBEXnNr8qyTOvWxWi5h+ylT0VapaDsTmWASo3gRkbM8sVlXciRMj+2EN1PjVrIWSqJMv14gVNn0krR450ec+MIep7hhylipJ1AlVp/HmHF/wjcfOAzfuF7q3QTFYe7i8fj6f52BFcseB/BveiGnFbN0mCo8qqMffluM1LZhyEgj62P4uoElEg3G9RErzOnuwP5bb4Guchl15SVAKjg1zcb6xzY50qr+nuLW3t75xwfuuO78b54qnTwEAoFAIBBsOIY8aYtr/WrpJxffGVWq/wMAEfuBHuRqylLtrU0rAMC7NWPdw23exImuH5uf6OhfCPZe255szCoIMLB1bJw6Bry6u1xkbKeOpjnrVequlcItU+gAqwsxZuLv8I3rP1zoGyUYfZi7uAP/9cz+OPy8x7By+f8DoSNRsuD99D/LYbCIjzwC5q8Ltsurd/NfMzcem7KbgxmIY8zqascXF8zGll1t6FMqnSdJ6ZEoGN2fvSF1d4Jwc5Fvk0AgEAgEguGPIU/aDGoEHBkR9USkFTB2HauDeH13f2gauqUUOmBMSyu2mzoNSimbO+BSJN0Y7I/jwzZxSzaIzMsUueKc7/HZzNnV5GXSIhNVL+eY/rkli8lGlc9C1/hrcMlDd+MbN+xY9JslGOGYtxi48tmdcMR5t2Pl8isAzM3N6w/VsjCyP8/Pb4ldalWeZTJnn6bKWhAnGY5PmuSNb2vBPltNw6JxXeitxy7GXxlSFwcKm7I1bO5h+rwxo7Wt4/kH7rz2kotPPazod0wgEAgEAsEwx7AgbXGtH0s/ufiVUrV6oe16Rt5NWHKbRqbvmqE/lNTAlczzCMCYlhbMnzQJSulESWI2ASSc6rlmLYuRtTWGNW3WVmlh0+eQVv7SPQk4ER+cGkhZZ5j5x55bYp/MV+pAVAKrPTFmwsP41qPn4PSfSb2bYNNj3uIZOOmH/4sVy54CaHcAqc+2eZItCCXOH88nXGGvjVy1LccKuc5ibm8/RnZ/AFAKY6plfGLudLx3xmSsrsWJu9NuYvZjZ4dE0ofN+zvEDLS0d6598I5rr7rk1MOfKfLtEggEAoFAMDIwLEgbAMS1/vq3P779SVG19aU4FTxH7gHk92xjALG/DUWY3jUGs8eP19+WQ9fFhX3frDCgl2VVNnuTFgWpdL4jzJ9npjzH395bQsF4th2BOz8C2O9fkL5DbgWrozBmwjP49qOH4YyfS72bYOMxd7su/PDZr+KIC36HFcs+qRcGAR4hUsEfSMJEQkKX2j5c3qBGLTOGT8zCoJFgHA7mzYwoivD26RPxsTkz8HqtnurDpqDTZFU4C07aaFuVzSZGAngWhMuLftsEAoFAIBCMDAwb0mZQixlHuaRGo0xFhnC5/mqkl+mESPswIDJZJoTp3WMxsbMLsYnttxckQlKnRtA3a+GFCs1gVnBLLbcTTGIpXa1dOFqOuQxJ2+/QpBmMke7gbfsEzIDi8zF28mM44+dS7ybYMMzdPsKPnn8Pjvrmc1jxyjdA3AYgP3HHT3rMqxtrFBiSUdj8bRsgJcI1qn3LQYYoKpQiwntnTsaB226JFb39CRFDEjiShIto+6Py1Ta7rVHhWtraX37gjmuvuOTUw18e5HdLIBAIBALBCMWwIm1xrV9955PbX1OqtjzitcFO6sVcnVvkLIeWzEVEKMFvZK1J1TYTJ2F8W3vy7TvrFgDa+qi/Yc+tkAmskmR7sAX1bWEtm7/cTQTZfBLKfZHU5rnt7dj5A0RgtRhjJ/4US5+4GmfetFXR76FgmGDu9sD//GIRjr7o51i5/FaAZ6cj99GkybUPzm6XSZLM24fykyLZI3rUKCWyWaCJvx8ABew0oRv7b7slaoqdvdEGicRuASfWZjuyXQyvrk2P/AAY3y36LRQIBAKBQDByMKxIm0E/AUcBaYVLI8iRtGqbtTNa5c3G9xMhiiLMmzgJ7ZWKI2yW7NlG3ewYkF3AmVvU7D2oR668uP/s1oy8OrWGQob33ClwPoFL1djZvakCVntj7KQXcPmTZ+LMm8uD+o4Jhhfmbj8Zp/7PUqxY/gsQvS9LfIIvIXxyFaptGeQrzck4IQnMCSGxRMotS9eZNlbrPGYFBlhhx8njcPj28xAROat0DCBWPgnz/vXJGQEKylkiFYCWts4/PnT7dVd867TDi3v/BAKBQCAQjDgMO9JW7+/lKz6x/RPlSstSZ330yIq71fMEKN+66IeWAPpGq1ouYcG06SgZm6WFvRFLwwaJhEVrjFKDOZO9y2vQmNs5GoNjpwU61zQuc16pG+FGggeZejfFx2D8lD/hrFu+uPnfLcGwwlbbteF/f/lFHHPxn7HylYP0Qhd3mmznfRHRPHbfW54JFgn2tcSP0YDwNUmPzLVHcvPlSmFmVzs+NX8mxlTLqBvCZoU8Vw/L7Jpm29RIBdY1bqxrSxUDSjFa2jrw4J3X3fyt0w6XiH+BQCAQCASbFMOOtBnUFOhkAL1+2ZglU+yRG+XlDliyRsZmGCNpmF0tl7HNtGnG5oicfmowFNELJHErwlj+LDlLuyGzFWwUjJXQuGC9ecGunYG/X8NwkuA0eAbGTroIVzz9JM6+ZfEgvm+CoYi520W46pfvwFcueRgrll0McKsjVaHdF0A6dcdXyQxsks66yNe6Xvvk0K0LrZBIr3MJQpQlinauSmHmmA58aft52HZcF3pjdlZIF+GfrlQL6tbgiF0ws6cYOK/Q91IgEAgEAsGIxLAkbfX+XnzvE4uWVVpalkTw7s9SypMmZxGRCyUBRU6iiqHVOCJLxQgdre2YM2kKYi+UhDgxIubdKlrYdY1KdUIbJ7tRvSkPCLbvXIMdG43j5Dm3JAKrnTF28hP47rM/xjm3jtuMb5lgKGLudsBVv9oG/+/S/8GK5XcB2CFDyIIk04x9sWHSI4L1eSpbTs1a7vY54xOgtTCF7Fy09TGxQfrJkQpdrRW8f8upWDS+Gz11pUcJFDarrLG3zI6in6dJXWtHZ88jd/3sum+fctgfin5bBQKBQCAQjDwMS9IGAPX+3voV+yw6v9zS8lKJCCWjNKVvDa1qliZIMeAInQJp4kaEEgHd7R3YYuIkMLMJMEm+pbdWyeTe0FvnSWnpejQ295jN2JTZ04p4fsCJGdEpeGFKZe6wGRabrntLowKlPo6xU/6K7z5/HM65rTKIb6OgKMzdbhxO/+lZWLn812D+BICsspV6zY17rWUIl7/c/+mvyqtjC9ZZ0pj7GQ/DRbz97OswpJ8ZXS0VfGr+FvjInBl4vb+myZlXb6pt1fo/hSTS35XDuXo6/VAA6vpITwA4d/DeQIFAIBAIBKMJw5a0GfQD9Hl7a5Y0pk7u9JSxQdrFTKbJtmkLYCP92TTmjiLCxDFjMXHMOECxu0C5wSOGAClOb0E5zwD2autsQVpOI27vqSVvjTIdHLlzP3OukG+b9BNNMjZOtEOp0zBh+u9xzu37Dt5bKBhUzN2uDT/9zYE49tu/xoplxyQrAguhR1ZykbIeNqodCwZIEUBvHdnfgoAcNjwGguPlqHgcEE8GSqUIb5k2Ee/fcjrW1OpJvIhNgCS9m0qPpokd6QfbB0y9KwFtHV3LHrn7hh986+Qvri3oXRUIBAKBQDDCMaxJW72/V13+sYV3lqott2pVDIDtuWZuroCEn/j2JncBjF3SKlkxtGo3dfwEjOnohLLWyCzJ8cLo2FOwkpiTUA3Lr1FrROz0P9rRmM6P5Mx+eaAmr5usU/EWGD/lB/j+C3fg3Duk3m2kYKtFJfz0N3vgq9++Fa8tuwzAZL0isCRmlFifYPmf8QbqWW5AiVmWIoTc4DjeazsmkLMup1aNcgie+0VivGXaRBy83Tz0qRh1DkYhJM2yDWm0Fub86jZvHfHdBHxnsN9SgUAgEAgEowfDmrQZ1Ag4MjYxIRG0AsVeoIczGdr6NYrAxhppGZ2tjrHCVDUiTJ88FS3VVpS48cGz6ZI+KeNcF5dew5mtkXkeVMnltBrI7tcsnGRd27tnZSj1Loyf+hh+8MulOPeO8ZvqzRIMMrZaBPz0t1vjuMu+jxXL7wPw1nRQSIgwXsMDhRZJ8/nMfJTCoJ084hW8Jm68LjWvHOUutEaGgSXM2GHCWHx+4VzUFCPmcAttc1RWQbOWSc8q6de2KegvcRQxqh2dv330jhsu+daJEsYqEAgEAoFg82HYk7Z6fy9f8bGFvy9VW87SN1LkggRs1zWGvSHTdWzpb9DJNNxOAkpi6BuzUkSYMmUaokqTMq90NGWy2K9is1/lW+TdvHrbJP82SIDkdN1bZpPMOgqO4w8dHiNluWyBUgdh/LQ/4Qe/OgTn3VndXO+jYDNgq0XjcNZ1p2HF8icBfBruuwTzVYOvfGU+P3mqVUi+rLkYQN7XCRTq2nloQMTcvJqsy7NlGrXd/frEdcwfNwZH7bIQHdUyapwQNV95V5k0SBPlj4SgKX8fZrR0dOLRO2+469ITv3jfoLyfAoFAIBAIRi2GPWkzqAG4gEG9AIzdkZzQxOQrbRp+3YrZBWTq3GIQlEmWbClXMHHKNESZS0UgsCF8A0e6eocab+SsksFNK4c3xw1Uujw7Z4iw91bjdJMuKHUJJs78Dc6981838D0SDBbmblfFtX/YG1/7zuNYufw4EDobbtswrbGZ8uWnNwbLfQKYInl56l3OMXOJZF6KZN4x2RuDgTjGjO4ufH67eeiqVlBTnPq9c3Vsnu2YKbFDwqx3pI61hdISOSZ6BMBJm/fNFAgEAoFAIBghpK3e34vvf2zBy6Vq61HK2CQdTOhIydzU2efkhZDAkDXbJqBEiRJXIqC12oJJU6ebbdLf1Kd5lV9zZpb47ka/ks0nX2Yge1PIlE6bXGcNW0i+BgLO2bhREqX9oeLZmDDtOvzXb3+K8+7cYdO+i4KNxpyFwHV/WIyvXXEnXnv5aoDnNg0Myf0SwK7z3ncK69EMUgE4oa0yrPP0kyCtvpVHzKy6lkciA3KW2Z+T+aoYU8e0Y//t52Ob8d3oiZWL6rdEzAZBWnukE82jtHXSwlkoCWjp7Op57I4bbvr2CYf8s+i3XSAQCAQCwcjHiCBtAFDv742/v/c23ytXW35L3rfkFunbP5P6iKRPG6DvMa09MvKCS0oAWltbMXbCZNcKwOc3kXdvmtx6Bje3lJ6DTa4kymNK5IXepddbspm3jztW7mvkrw+3yZuPr9oRquD4Y5gw/SFc+bszccHdUu82FDBn4RScd+MP8dryZ8C8R7KikW3RRx4py36pkKkVo3A9IUu07DHDdQ0+Z+FmeeeQsRdn1bquthZ8cO4svHHqJKytx6nER8Ucnok7igKbFm/aDqkUECvPTGkkeQY9xMApm+GdFAgEAoFAIMhgxJA2g36AjnJeR1jFTD+USYe0Fih4dkn/5i0Cod9sWwf0TWIUoaWzE52GuNlQOr2akntN5hyi5RnJvBj/tOMsHTiS7oOdXq17FwANZbWGalsYcrKOHXPr5lx4Szs4/gomTH8GP/z9IbjgHunvVgS2WtSK6//4BZz4/T9ixbJ/BzhdTBkqabmBHQg+kKGtsUEwScYm6dd3hr9Znm0xc/wmhLGRnTJU4+xrVmirlvGhuVtgr7lbYlV/zZy2n//IrsZVwX5RY5azDRvRfy9sxL+2ROrPfmtX158ev+P685Z+7T8LeMMFAoFAIBCMRowo0hb396r/2mebO6Jq64/tTZdNe4uhb75sXRvZujePzClH6HQKpe7rFun+bQDKUYT2Md2odnVnbob1/W1a3fPXRZmQf0r1gGNvrR/7nxui5y9vaI2kJuTN36zJRikFJeekNHmcBY6/iUkzH8EF97xlE76dgmbYalGE6//8Lnz9+y/gtWXfBrgtTZoCWCtkbkqj3Y8b7Jw3KAfkzFtOHvnKF5Lzx0+F5AR2x1wix8E6RimKsMeMKfjY/Nl4vb8GkN9jLfkCB0jSIr2jIQz2ZzuHiMAR6aAjwmMc0U2b540VCAQCgUAgyGJEkTaDfsV0MgO91l6ovLh/F9ltNnbJkobA6TACTerKRCgDXgsB3Xy7beJkoL0L/o0ke//m3fg2CvUHQseif+PdRPlqVn/mtTJIrWpkg6RmY65jG/06glI7Y+KMu/CjP/wvzr97i414/wTNsNUi4IY/L8CJP7gBK16+A4StGm8cMPwwTGRdYSOhEkYNxrXLmn5JEJA5P8SkaRhKSNwaBJUQAFbYecoEHLLjQvTFCrFJknVbGdUMfk2bo2hpvVAhaQOgiMBRBESE1q6uXzx22/VnLP3qwZvoDRUIBAKBQCBYN0Ycaav39vB/77P17yrV1m+yIS++cqVvyIyqZpQ1cv3dgBKRCyVhGIUOOj2uRFoxI4pQnjAJqFSTcdkzRbJP5pKv86kBW+Oce+eU6JCjhnHOOAMOIclDs5YBmY28C+r76pirYPVJTJr1K/zPn07DBfeOuM9XoZizcAIuuPlbeG3ZLwH+gFueR8rII1bskZ9cdcyigf2xkTKWS+aaWR3RfB8/qCR3vT2PHFMzx9jOELZ+pVAn02+Nvd5qiqHY9GljPz3SkDTSNklL2Ngmz5p5tXZ01R+79fqbL/vqwU9v5ndaIBAIBAKBIIURelNNNUV0PiL6ZwQEJCR5rszNGBkVyn7/b0WqOrQdiilCFFHKYlmpVMBTZ0KVK1BetDll7lmTSJII6ftflZlRMNewmTYj25/NP1ZqnPB1o/YCPj1spgfmHCAdnektp3ao+DhMnf0HXHDfv63feyfIYM7CNtz4f5/Hkit/gddeDgqp8lIhOf+bACDvA+r9pAZjhsfzVzdKn0Q+mczdxydfDZIhKYe42fVKYc7YbhyywyJ0VquomS9QmFg/gqPYkBG25M0QvFixp8wl37RwZGzTET2FiM7ddG+sQCAQCAQCwcAwIklbvXct/mfvrZdF1dYlcGmLxv5o69pS6psmbBERSiDUQaiB0GvUuIgAZgIjcq8jIlQqVagJU/0Cs3TUR6ZGx+p3jW+J/XU+QfNTJjkZFN4G3vNgfaYuLSBozSbjq2qN6tvy5gAAcTwbU2b9CP/7f4/iwvsXbeDbOXoxZ2GEG//6Niz54YN4bfl3AEzVK7gBYc6xKKbq2AbwkxoQNvKJVEisGtSc+QQsXJf7upkql1OPBwCsML27EwcuXoApHe3oU7HupcbsDu+SICM4Zc23RipmKErOXRHrv4yRSX0lQktn58rHb7/hqsv+30ES8S8QCAQCgWDQMSJJGwDUe9fW//ej879bqrY+BsCr6bJ1LjbzMYn/99MidaNtfZNXN9/GRwSUjZ3S7h21t0FNnQU/7lHXxhlqlRfACGSoG9kb0qYEym2cGiv/CMhwswHB763VtBDP276ZtZI5AsdvwuRZT+Gqv/w3LrxvzHrOaPRhzkLgpr/Pxyk/uhIrXr4XwE4AEuKcImwmwCMM/wiVtZQtMi9FNI+shcTM+xnWt2XQyOLoLzOVZSl1zZInhVyi5pErcIwJnW341IJ5WDB+LHrjulPPlEfW3OicEDX7TIFdcqS2S7JW18xDRZFV2+4F4bwiPg4CgUAgEAgEI5a0GfQr0FFABJA2JybpcV4rAJMkCYIJL9CKW4VMiwBkw0vKpv6tBAJa21AfN0nfKcK/JQ5uOP374tx+VHArMxVBDK+NgTdG+oDpYwFNNrCr8phdMDA1Wu+9zoyTOcEqVPwpTN7yr/jJX4/BRfeX1v/tHAWYs7Abl9zxDby27Lcg7AsgUJo8EjYQ4hR8TeAIXZC6mN2Ps+OEnzffgpmnuCVSV3AcP2AEwZcLOUEkecoiK3RVq/jIVrPx1hnTsKZeTxE1PwcyiftXqeh/RTDbquRoxg5p0yKJCK1dXX9+8rYbLrvsywcMxidAIBAIBAKBIIMRTdrqvWvVVR+d9wS1tv7Yxf4juI01lr8YhBprEmfX1zkJLrFEqg6rwhGqEaFKhIgiqDFj0Td+iqtDy4oToQK1ceeW5XwcrG30shmB837mErUmlkw3DW6w3pGGLsTxWZi21W/wzQffu3FXYQRh9oI23PyPz+C0/30Mry376oA+IBwQGmqwnAPVNHydp6QlGwfPufk2eeTNV8cQPHf7K2RJWnAMdz4KpVKEPWZMxd7zt8LqWi0JE2H3TNseLUljpR/m+IoYyrzWqbKm/o2yASQA3wXwzwfjYyAQCAQCgUCQhxFN2gz6FONIBvXZmjMbPGJ7tUWmziWixCbZB50iWSVCydTA9RtVzloCiYBSRKgQEEUR4jHdqHV0gVk1nAw3sTbae0TN8ZrVnIXR/huJQIzJhFggWD6gY4a2tmAnFc/FpFk34qf/uBUXPbjdJjiL4YnZC0q4+aXd8Y0f/xyvLfsvAFvn2glThBrIT3YcyBuTp6LxwLbjcF0DFcxuQ7zuMTOBIw2WW/LJjFJEeOcWM3DA4kVY2ddnrI8KxJr4Zb7MYJWyYKbInJknE5vQIfL2J7R0dL7w+K03XHzZ0aKyCQQCgUAgKA4jnrTVe9fip3vNXRZVWi4CbMQ3JT2boG/ldJy/ftRgatmgVbYSaboXuZo4Y5tkSvIKCKAoQv/EqVCt7QBY8xTf0eXNq6GF0i3OLifoepuGt+ZNxLb0QHnFarTubZtZKV1tG61jf28/Qhlx/T2YuuXjuPqlb+Hih8cO7F0dAZizELj15Xk4/SffwWvLHgD4Hdm4e4uQPDFSfSwywR/BviGpsp9LCo+Rp3I1Ub8abddUnfOVvxzyx5zej1RA/hS2mzQBn120AH0q1hH9rG2PCtD2R6VJGjslDc4mqTyiZh+2gXbSOUN/zqsdnT1P3Hr9jy8/ev+nBulTIRAIBAKBQJCLEU/aAKDeu7Z29UfnnlRqbXvZhgxYmUKZtEhl68iM9ZHMXZwydW6W2BH59W2MEoCqUeRAAEol9E2aBi5XXViJ3tIPhNBLIz/B0tW6haQs/YrzFzcG0fqt4wHsx03WU4P9U4QywxpaEdf/E1O2+BOu+edB+OaD5QGe3fDEnAWd+PY9R+O1Zc+AsB+Ik99DbkC6UimQZjnnEaTgZ8oiyfnbNESzbXKIot8bLmOTDLdrMCY1OB7r4JHtJk3Al3bcHkRAXSUKWmKBNGpaKuREJaEkhsg5tY3ZNNw24ULm91ibJvl5gC/b1G+/QCAQCAQCwfpiVJA2g74YOJJTRCrpyxYZMheRVtZ03zbdmy0GkkQ52BRJHUQSE4EIaCHAMg0uV9A3dRYQRYndMXUfmgSW2HZT5KlUoVvRB2WWroc/ktZj26bjNDr2AGrecjd359SNuH4pZsx/BN986H2bZrJDCLO3reC25R/B6T99Cq8tOwdARya4w6lNOXVhTe2pzQhck6CSdaplOcEijRQ1bjZGaOfk5Bcg93hBnRvHmNndhc9utxBd1SpipUxGqyFezKaRtkfGLFkz9WwwSputZUsIsTmiawdAaO3oWvbkLTdccfnRB7w0CJ8MgUAgEAgEgqYYNaSt3rs2vu4jW11Tbml7HECKjIHIhZQoY4MkAHWnj2k7pZ8gaRa7+1QioNUQPiJAlSvonTxDN/Bmzr1v9gWrTC/kTN818zR9nxns1OjsqfE2YU2UzxgzUf4DsFDmvW5UwecfI9knQlzfBdPmXIdrl12Fix8a/vVus7cFbn9lIc689ja8tuw6gObrFXkBHkCqcXS4nXsdhosE69xzSsb3Jd1csoac4/gtIBoQMjbbUaMxGs07UARdLzjfEsmAijFtTBe+sP122KKrE/1xHSE5ZEvyWDmyxpyob5bEkT1/5mRGlD17Bb6XwZdvkvdfIBAIBAKBYCMxakibQV8E+ryfMm6/z48BZ5G0jxJFqJCuW9OkTu9la15qtijOEJpSpENLyCyL29rQN2WW6QyXtrM5smdn1kCVooA9Nc+daBZesr5oMAA1X71urEvtc+tbENc+galbPYLrlp+Cix/eRDLhIGP2gvG4/KGL8OrLLwDYM0t+gHTx4wAuLIfbemNxM8IXbt+gVs1F9TerlWtw/HBcv+daIxUuEz7ifchYobutBR+dNwfbTRyP/nrdWR2VCSZh75Eoc5510q23NuXk+OHfAgZQ7ej881O33vD9KyTiXyAQCAQCwRDBqCJt9d61fPVHZv8OLW2XU6q2TYNMOEk/dAiJpWkgoIzENqnX2Bq3JJhEmd5uUZSEcsQtraiNn5qS0lK30ZzUtoUgNwNusDZv8QBIUSbSv8E+TfnDOmyaTdU3CnahtNTotiUA6EC9/jXMnP9HfOuR4XMXPXtBK25/bX+cdd1f8NrLX8qQ3TxilVHOQoukWRbaDP11qQHYk3MbbUfB8mAunNGXk/UZe6MN98iZ+0AInluWkLzOlio+Oncu/mWLLbC6vz8hXcby6EeNECV2SRP6Dw7+c4TOHS39N6C1oxNP33LdLVccvb9E/AsEAoFAIBgyGFWkzaAPoCVM1E9OWTPR/0YTi1jXpym9MWJDdAh6mzpFOryECBUAIDJJk5rElU2bACIAUYRaVzfi7vGecpGdlJdE4Z6l9DWP4Oh75YFIXZtSnGpiecyEjKxjDg3nHrQw8O+nVbwlpsxeiuteeQQXP7TrJjyxTYvZCyLcsfLtOPuG5/HasisAtCfXKAwTMcu4EbnxlwX7hb3Yci2UDcYMiyxD5a5RXV1uDVzeHHNIXIos+uQu2N47fiki7DptCj4wZzbW9vfDkjnbIFuBEbPXTNssj2FVNwR2SWWi/pMPVs6n8xkGzt24D4FAIBAIBALBpsWoI231njW44SOz/xlV206x925kCJmzQFIE28eNPcukrYNzwSUM9Jp6t4qX+hiRb5MEEBH6x09E3NGl48hzWFsjepUbwphLegZI0Gh91vn2zw0ZcD22TUXYm03ZU4F0zH0EVd8V0+fei+tf/REufnjmehx882LLbYA7Vm6Ns392DV57+R4wz8ukPYbPw24LPqn3SQ7nETnkjM0BOUI6qdEpbv44nnXRvc+NrJB59kaFXHKXImENCF2G6JmfhrDtOWsGvrDdduiP6yYNEl6zbDanq5UzZQmZTY9kRqwYsSGoHKhuWpnzz4/Q2tHZ89St1197xdEH/G4TfSoEAoFAIBAINglGHWkDgHrPmtqNH97yPLS0/46dtdELISEAFIHNa23YirQKR6anG8E1ymazPyHp91aCaR1AlgTqHm7c0gaY3DsAKUKUx42a0iUewEbNBiJqwAPWEffffEGwnLMnliIWzYhcwxUtiOv7Ysa8F3DDa0fjkkeK/Rxvue0YfPeJU7Bi+W8A/og779xrFQZ42O1ybJCZ65tHunLAA12R9zpP+QsVOo8cZqyaeUpio/WNidu248fhU/O3RqwUlDE6xlZh85pjO/XNEDOYsBFtlVSJuhZ80cEAlD81fQ5PQ1Q2gUAgEAgEQxCjkrQZ9DHhKAAAGxWNCDXTt00TME26iCIosomO+mHTJkEJ4YsN0dONuBOhyNWQRRH6J02HKpfz3WsNQJkb+tyN8rEe+RZNx8lst57939b7wAMaYwzi+jmYte3vcMmj+2zAQTcOW27birtW74dzb/oVXnv5a8mKULXKUcBS4AaLcghOXvJi6pLlHI/hJTPa3RrVnAXH8+EnOqbGRgPi1kxVy1MDtWq23cQJOGqnHdFRLaPOcRIiYsiaHoGNuqbJlx86oqATI1MtAcx/eYGbDEJLe+ffn779xosvP+qANRvxiRAIBAKBQCDYLBi1pK3esya+5YNb3FFqab/d9mSziAH0QAeSwBCwkgkaUSb6P/JaA9h9gCSBkkAo2Z5wTlQicLmM2uQZzbnX+rRey611Wg/QAJY1HXND6+YodV0GPskcchfXt8L0uVfhhpUP4eJHtt3ACQ0cW24b4a41b8F5N9+P15Z9H+Dp5kI1rtMKCVKjJtq5dW/IjpFR4xQak7A8kpQ3LjcgfgppGyUC0pdDzCisZ4MXXNLg+nCMaZ0d+Let56O7pYq6UoaspbdnVqnnSeNs+xMeUQurRJOW97qmlezH7xFm/M+m+YAIBAKBQCAQbFqMWtJm0KcIR/khkowkTISM7dEmQ+rm2ZEhZuQEtCTQJN1GoOQHksBuTOBKFf1TZqSVuKZI2gxkEAoiTeuSkvHWHwMgg7QOcrUxhwutnFlrZ4S4tjtmzn8GN6z6AS5+pGsDTrI5ttgauGvtVjjv5u/jtZcfAPCGdL2ZH+6BnAAOb7umCYtIk7+GJCvv0oaWy2ZhIUDSIiAkbuGxQlunPzdGep6qwXFzHvbYKsakjg58buECLBg3Dj31uiFedn/l7I4JGbNKmnIqnI31tzbKhOARPKEc5OpWgZb2zt8/ffuNF11+5Oc38QdGIBAIBAKBYNNgVJO2es8avu2Ds35bbms/t2oSSciQNd23DbDh4CXS5I0IJh0SAOlebQSgAl3HZgmbtU2WiJLaNsDdEKvWNtQmTMtVsZrSGx4QfVrXKOu/y/rUz2UGbWDvXNeJ5j5vdigCgBao2n9gxvw/4cbX98clj5bW/0LkYIttxuB7z3wdr738NIDPpOfm2wVDa6JfJxaQukY1Zrmnm0OeCPDj61PXNbcRdnjtA0LYTP1rWo8WKGyZ+Xqqmzu2Nw4rdLa24P2zt8Qbp0xBj988m2ND1pJjJEQNXuPspK6NTTsAcrq3PigzBfMHWts78fTtP7v7siM+f+/6fygEAoFAIBAIBgejmrQZ9IPpgjqo3xI2gu7LZl8Dum8bk65/0cRMK28lF/evv8KPzNf5OphE3zYSRQlpg0kxASFua0dt7KTgZtlYt5qROfLiygdEotZZNNdk8/W0WzYae4PFPW/HRoEmeYVKhPGo91+BLRf+Epc8+u4Nnv8W27Ti7p59ccHtj2DFspMBHtP82nCOepV3PQMCRDmEiHgdYyC7T7NNUtv5BLERwQoVtEb1aY3OLW88/3w1YWurlPGB2Vti763mYnV/P2AUMhtA4oJHvORITeK8EBJOJ0PC2iRTCrVdBiS/q3icgK9vwCdDIBAIBAKBYNAw6klbvWcNbvnAjJfitvajY9bkLAZcy7AS6du+CPoG0AWQQCtvkbE8KgCxceyVIt3PzbUTID9J0g6uUyXrXWMQd4xJEzfeAI5j7XjrS7KcAtgounIgRW/+JPLmsI6z2RAVj3lgO9RrW2PG/Jtw46qbcMkjCwY8/hbblHBPbVdceOeNeG3ZjwAsSE0yKbbyTkDlKFMN7JOZk7fXoNF23hjkzaGR/TKPIGXmEaiAdqxmKmDefKBytgvr7EJLpL5epYiw+9Rp2GfefKyu6V5sipXZNH0d8xplKxv3j4TYKeaMQZOMJdKGCTEIlbb2lU/e/rOrlh6x/0sD/lwIBAKBQCAQFIBRT9oAIO5ZU7/v/TO+U2rreBxEqAHoZU3e6i4NUgeSEOCskxaRVdNc6wCLdB2aJXhunWm+3T9uIuK2zow9Le0i4+yyEOvia+sbUjLQYzSdFGWf5gaPhORlILV53qDNFb0K6rV/xYx5T+DGlRfimw80r3fbYpsJ+MEvrsCr/3wQ4Hfp+jmPQPgkhxoRVeRs0+CaUZ7ntUk92oa8jw2JWFCrlqqFy5uDyl+XsWM2IGspBY+w65SpOGS77dEf1zOKma+quUB/Q+YICTnzjxPOOKlXtT0XU4VtTxNIIv4FAoFAIBAMeQhpc+D+GLwkoUZevD8lRI0AlM0qe/sawTgezb62/5OfUudGtWqbTTEBAIpQGz8JXK6se5rUjCMN4Ga+0Sa0zgUDvY4D26yRJTOv5i2oBxzQsVL7OItfO+q1wzBrm2dx44oD8M0H0vVus7Zuxz31w3Hh3X/Eipc/C+KSIzGZWHv7MyRzedvk7dPseXiOIWFbF0HCwMf3G26nauH8OSs0JGKpVMmgdq2hhVIBrLBw3Dh8buFC1FQMpWzvNaRi+21/NbbnbtMibfw/24ASs50lecYaqUDeDNiJ3C0dHX9++rYbz7vsiP0hEAgEAoFAMNQhpM0g7lkTP/z+GXeU2zqvLkdJ4qO+HfW+oSeCQoQIOoyEoWvdyJAwGyrOxjIJIpSgyZpNnERI3IjApRJqE6eBS2U3p6SibiBEiNdz+UCwCZS5EM3i/RuewgbOo3FC4xzU+5dizqKHcP5d70LnWOCe+AP45r1P4rWXLwDQlUu2Ugpbo4nnkCNuQF5S9tMGY6zzWMG5hufM4et11aQFlsdGwSKZdYEVMtV7jR3hAhiIFeZ0d+OonXZGV6WCuk2E5CTC35Ivshobaw3bV+P8ejZrlWRrm3VfinjtPCiVwvokgJ9twKdKIBAIBAKBYNBB3OCGmGhDlZbhi1JbJ+1+80vb1XvXPNHPXO1jQBHp+00CYmb0I+1mi8GoMVBjRgx9O1hjTt36RtD3rDEYsbmvVv6NvKvfAaJaP6r//JteRRGY7O2zIXcUOaIIkAtH0Zs49uj5wth7rsdMbZuqaUv1PfDq7+AxU+Ts520XjuUfL7U9kv1S80/ONb2Zt4wbHDcTWmJJg12Yq0T1APg9wNun67msIpRD2jLql0qPHxIjzlkWjpk6jj+et11YRxe2G+Cc47H9wPrbq2S71HlS83Pw52EJYoaQBvNIXVMAKsbUzk4csmgxFowbhz5ji7SEi41FUxnyBi/iXzHSgSNeQIntz5ZmuRQQNV2d2tLR+cunb7vxM5cdvv9TEAwK9t9//64rrrjivQDeCN0GswhUAfzuoosuuuHwww9/pehrMlxx6qmnvvP4449/P4DVBU2hHcADRx999C3nnXde/6Ye/OKLL37DF7/4xfcAaEPSgnWwzuvuAw444I7vfOc7tUE8bgo/+tGPttp3330/CGAydJn/UEUEgPfaa68fXH/99S8WPZnhhgcffHD3N7/5zW+H/typjR1vM6MK4Ikddtjhlueee25t0ZPZ3OAmQkV5PcYZ8Yh7VvPD75/2211ueuli9K4+KoKN77e3tsbmaNSMOuu/6EwmRVIZ4mWInrZTJnU3EQhMhrgRpd8YUzelqlXUJk1DZfk/klXweYcmYW5uebD33xutsuXUowXz2OQIDpsLSxZsrVnePJiDWjHvdYpsoA3A9t7AQIZc2fGANKkLrrE9Zq4VsZn1cR3b8br2a6SWNds23C489wZ2SJf6GJLhnOvirndC2Ma3teFT87bBovHj0VOvpevWrGKGpD+b/T7DkjLbRJtT23DqFPXHwmreacJWbe+sP3XrjbdcfoQQtkHG6wC2BvCVgufxVwArAFxb9AUZjjj11FMrxx9//H8A2K/gqbwO4IbNNPYbAHwVQGcB59UC4D4AhZE2AB8DcBL0zfyQx3XXXffSXnvtden1119f9FSGGz4P4LMYPjzgR9C/GyOetDWD2COz6IuB82PGMm3mMrH9xg5ZNn3XFAixeVjrZJm0LdK3TEZIxCOGJm46iRIuyS6JmNRvR9zSgnr3BEcsNjk1GggpGorI4z0Nwy05eJ6+sU+UuLx9zbo8FSkkJo2aa7s5N7MiNjvBgZC+nH0ydXV5c/ftjeHzBiTPJ2uNbJCNyJtRzDqrVXxkzhzsOX061tb7TfKjb2tEyiapXABJEvGfBJQArFSK7Ll3zuPx4ZkQ8DQBZ0MwqPjOd76DAw444HkAfQVPZSaANxV9PYYx3ozir9/fjz766MfPO++8oq+FYGhgTwAzip7EcMKDDz5Ib37zm3fB8CFsgP7b07XRowxzCGkLEK99HU+/f+pLqrXjyzYJMrn9JHNTqJeUCO6bfH1DSLq/m13GelkUMIsS6Zo5R9xSjq4IiCLUO8egPs4jbk17qeVgUyRFhshT29aJAWwzEJLIASHJ682WWdCIlIXbhGQG+n0Ie4txMOb6ELbUcRuRo5zl3IgMNTludiI59X05pLYRoYNn16Rgv6bE1qptjEopwjtnzMTec+bh9VpfRilz+ZCsj5c0ydb7Mxh1ZrCyx/QCScDGw2S+QLH1o660Tf+CtbZ3LH/qthuvuEwi/ovCLwDcWfQkDjvssF0uvPBCucnbMOwE1/6kMDwB4JdFXwjBkMHOAKYUPYlhhvcCmFT0JATrDyFtOVBrX6+/8IFpV1NrxxOm4gd16Fq1fhMzHplH2SupcjZIV5rlpUaa2is2jwi6hUBkntv1TumJItQ7OxG3dUBHnCcg70Z9o0SxkAj5WN/eAhsykaahJA3mtU7BqYHqo91xyTLX4yzvuJaYlEwsKAcELu95DrEKSV9Ti+Q61vkuxoYXoNHDvw5NtssQS+85q+zx8ghfSDKZUYoIe0ydjs9svQCr+vsC7puct+6xFqfee0Pf3DJH71KtAbKRPUngTwTFZGf3KAiXQVAU/gjg9qInAU06ilaLhh2WLFlSOf7443cseh7QpO3/ip6EYMhg3nXXXbfwIx/5SNHzGE74GICpRU9CsP4Q0tYYPQw6mqDJWOw17PV7sREsSdMkzJq0yNgo2Xzdr22SVqnTO5YNaYkIKEemAbcfrBGVUJ8wEXG7Jm76zdoMChqAxqpZsHx91TbOGSMPG8c+0z/dMc3rKMrWo2VCNCwxCcmYpeeBtJersjVbHs7XI3bOz5e3fxPLYYYsIbveV8QyNXmhehgeU6Xn6bZR2fHzjgkArLDd+An40nbboy+upXQ1Z4H0w0XM6IoZMZJofwX7fnnbe/ZhndgauZRWBpm6Nr1Ba0fn/z17582XXX64RPwXhe985zs46KCDnkbxN9xikdww7I7ir9vvjj766PvEGikIsCdEORoQhqk1UmAgpK0B1NrX1W8+MPVxbu24Gl4apA97+5oYIimVupnkN2rLliVl5NkqIyKUzLqKUd6IKKl3iyLUuye4Hm6ZNma8kXxnUyAkbrn9yhqAcvZvtm1qSN8uGRIH8iyOKmca3OSn925bhYkiICrlqGdm7HVegzzLpq9Mrcv22Gi+67jGYXJlI5vkuhQ6mOuYO58GahsrLJwwEYdttwP6ldJXywSYhI2zmXWCpSVxVk1mQ8GYFRSUs0Omz1mnqNp9vOxIf6t7aPMFFwgGjt8BeKToSRx22GGLLrzwwnFFz2OYYUeINXI0YEcMkxASD28HMKvoSQwTiDVyGENIW3P0MHAkAbVmt9SxUUrSNTQakend5mxblrhBX/wSEcqR7uVWJkKVtOWyZB4RRaBKBf2TpoJLJb2vz1W8R2phM/AAVqwH71qvg/hkZqDqXqP9w3O164gSW2NIsPKUsRSx8aBySAqVgKgM14ia0YQIrce1yb0WjcYLFcIcskW+JjwQQtbIItmI3IXPg22UwozOTnxum4XoqlZRV4lqZ+P6k+h+5VJWveo2KEPkku3giJ5SVpeLYPsj+h8J8uL+W9s7f/3MHTdd9O0vfQ6CwvF3AA8XPQkA20K3HxAMAEuWLKmccMIJOxY9j6OPPvqB8847b1nR8xAMOcy77rrrFn7oQx8qeh7DAcPVGjkHEkQipK0Z1NrX8eIHpr6M1o5vhiKPAiW3rJR8x59U16SJm93XPiKziQsjNzH+ZSJUowjlyKpwJvCkXEFt/ESs84afGyw381xvDHSXZmrZuiySmXCQgY7pvWCGKxK0rQAanYevjFny5V8b1qQjbSf0f0YAVQAqN26t4BRE314YkKK8ptvOzrjOk25yrRqRKaA5iUN6GQXkzJ1DMxulJmFTOzpw8MLtMbtrDPpVbKZosiBZJUZIVjpIxBIyM64yql66fs1vrg0wk7nEDIQR/8Ym2dLe2fPMHTf/ZOmXPv8kBIXj8ssvx0EHHfQIgF8VPJX5KN7qN5ywI4DFBc/h9wBeKPpCCIYs9oQoSE0h1sjhDyFt64Ba+3rfnz447cSotWN5qNXYlgDhLXEJhIrX1NeJMdANgm37AFsPBwAlaNWtRIQqNHmruBYDpuattQ31SZNBzMYOlgce0KLGaEBA1rX5BqlxORhQO4JArYsIKEVNSGkjFcur6woJVG79FyfHBACUgKiq1Td/3AzZzBmj0dzYJz/+eI3siOGysA6tGTlDgzEbKXicQ7BDu6dCd2sL9pozD9uPn4C+uG6ImSZnihNaBjtbQ9is/TEGJ2QMaStlMpfEamy30f+j1JcoIHqWCGdBMJQwVCySiy+88MJq0fMYJtgRwA4Fz+F+ANJfUdAIb4dE/68LYo0c5hDSNjD0ANg/giZdsVmYImzevWvdGrd8YmVDR2BvO016JJJgQ5tGWSKgYvYtke7/VjbrqKUVPG48KM/O5+bSzGqXs81Aa8rWGTqynsyNQvmrwXxDssTe/qUoYb7rtP8hfz3lkBUOts0QNpj9SCtuUYuue8vUjXlzzlMUm9b/cUBieYD7e+fR0O6Yd/5osA2S8ULVDfDUQYWOahV7zZ6L98/aEqtrNaOqJaRLE7ekfs2FiyDpuWb7tPmqmgskYZsWCbOfIWre76K+JITWjo7lz95x0/e/fejnVkMwZHD55Ze/ctBBB91d9DygicieRU9iqGPJkiU44YQTdkDB384fc8wxD5533nmvF309RjJ+9KMfYd99920peh4biHk33HCDWCSbY7haIwUGQtoGALX29fjPH5x2J0wLgDw3ovtpEiRjwNkbbRiJTZgsU6LIabJGJnxEK25WiWslQgVAxYaVAKhEEairCzRmLEhtiLw1UIvdujcfuLwWqFnNCGPe61BBI2jpsRTl2w7ziEeKcDRY1yiBsZFSx95PIq26RdUceyant3fn6X96PA3XkUak5x1ec/LOhRopcsHzUD2jJufs1qnssXNUviiKsPvkqfj4VvPxeq0ffi81XyVjKNdQO0XMMrNOGmv7ywn+RyKxQ7rwHtcnkR5QwFIIhiJ+B7FIDhcsQvEq27MQa+RgYKJ5DFfsCVGScnH//fcPe2vks88+O2bx4qJd2sVCSNsAwcDaGNg/MneMjXQhrZrpO0pl7FpkbuKtKkCpcJKE2JG3rgxC2ShuJWji5iyTEaHU1QVqb3fkgML7bM6ZnU8GMjPfNBcpkDvW4zgDLJ4rlYBKOYnItxKWryr5wSJ+LzoXOgKkyRGnp5BSnhqdKJJj+ydPJYBaDHkLzzuPIHnLudExuPk+zYhdI+tjZnu/kYV/TdQ65qAfpYjwtmkzcNCC7bGyr89TxSxRs2Ei+pGobknfNTumXRd76lqarCZNtPVLq7SRU91a2jv+79k7b/7eZYdK+MgQxfMA7ih6EmKRHBDeDGC3gudwP3RypEDQDHtCLJKN8B4Mf0K7HYDhqgRvEghpGyB47ev8jw9O+y21dX632S297euWJOFplFJqURLzz26dVtqU7fEGa5MkY5lkVKOk1q0URSiPn4CotdUTS5pY7RpNuBGPANZt3bMnnEc2bJSmvziM98+oaDmv7XalCKiWc6yQdj8gozSFr6kJ+WlKavIuWI5i5jYnHVQStemfA26J0Oz4vloXbEvKGzPc3+8956ly7rVC8w+Bj+A4lFyDBWPH4YBtFqGulBccgiDW3xA1c1RH3hypTqtvybXV4SXuc2W/4iC/xYYhcURo6ejEs3fefPvSQz8rEf9DFJdffvmagw466IGi5wGxSDbFELJGPnPOOefUi74egiGP+ZDo/0bYG2KNHPYQ0rZ+6FWMJQTUgXwao/u2WdiESXNzSTaGPFHVmHQCXonsMiAC69RIaKWtQvr/MXVbAK3CVQkolyJUxo8HyiXwAIWqjKrkFudKdOuAYWwpRYkaDNGEuLibc8quiwxZK0debwNe9/hNz2UdylTDmsBgPzvvvLYDevJA1AqUO5J6t4xq1GzOnH5frCpolcBmFkt/Xr4q6eyUHlnjvGthx2swL3dJFBaMG48jt98Z5Yh0vZrV1Uzz7Ngjbr4qqMmbDh6JWbkvOlydG5naNtuN3liMrUKdelCynoieBOgECIY6fovi1ROxSDbHULBG3glgKBB8wTDADTfc8I4PfehD3UXPYyjh/vvvpz322GNYWyMFGkLa1gO89nW8/KHpf0db55fdMqRv/+2ysEWAVdRCYapkFCkbRgKGq3Mrk+7f1kImWRKGwJFeVgZQLpfRMnlyiiykzJsDUcvCVU2tjU0UvLxkx5DQNCSL/jbmglTLQKWk1TUOx/DVLd/mmKcUecsoj6A0uj7Bvo2ua0bpDMcpAaVOIGrP1t5xDnHy5+i3APDtnwEByq/ps9vlxPw3smKmrmPeNfXHiDGlvR37ztsWY6pV1JSyofxOVWPP/piqYbPx/4AXNuKrdHYML6XV/xiQXWY+7UQgitDa0dnzzB0337T00M/+A4Khjl9gaFgkt77wwguLnsZQxVCwRj4J4DdFX4hRgi4Mf/vZngBmFj2JIYbdAIwrehKCjYeQtvUEr1lZW/bBad+N2jr/4JYBGYHJkrOQpNlm2z5R87ct2ZVIgkp0021N4mzCZJkIlUi3FqhUymibNGkAZWHk3ZSnziqZdLgs/yqse9X6JEmSR3EJmqhVK0n8Zma6vlLF2XNKkbpQrfIIi+3R5sb01ag8ooLgGA3mlNrHVw2rQLlbJ0022jYvFZRz5pixe+bNUyUkN6MG+oQunG8DwuaTSRVjSkcnDl20I7YdOx599SRT1cSPAL5N0v7LgKVrOj3SzNEjlrYFANt6TbINtNNqtbmoAEW6ZxsABXocoK9DMORx+eWX1w866KCni54HgAUAdip6EkMNQ8QaWTvmmGOePeecc4q+HKMF8zC8g0gA/bsspC2NdwOYXPQkNgG2ADCqa5CFtG0ICGtBONq+XJcJz0Jx0kg7GSrZtmQeQELmAH2vXCGgai2TSEJJWszyltZWdIyfoGt/uNlsfIUKjZ/nrufgpPJUsgFclJQtz/tZLgFt1cQKGQ7EoWUPaGztMz/z6ticeuWRpAxRa3KOocq1TsXO346AcjtQ6Qaomj2fzPXOI1B581YeWfWUtYa92po8p2BZ+JoVOlpa8L6ZW2Lx+Enoi2uA1/g6DEZhQ8gUw5C1tA3Snk9S88awmp09PAUWSEYE9urZiIBqe8dLz9xx09Klh+4HwbDBEwBuKngOO0Lq2vKwFYCtC57DfdBKm0AwYNxwww3vFYukxv3334899tjjAwA6i57LJsAsDH8leKMgpG0DoFavjF/64LQ7qL3zrmbmQ1/cCG/Nyzb5Donixm4dUGe9T+T1c6sCqEaeTRJagauAUI6AlrZWtI0bC87MxJsgGbUtVIZSihYPQLXzx21AWuwNPDXaziCKgNaqtkM2nHjeMl73ZpnNfXugRxysApdDOtwAoTXTHzgkNs0mwgwgAspdQGWsfp4b2R9OPmdeAfFJHwfBumZjo8F5BOfNCh2VKvaZMw/7zJmP12t9Hpe3xMvYHBlJjZshaibwXydDgrP/WdukE0TJWSNhXvv1bTaQxCx7jID/hmA44UUADxc8h/Jhhx22k1gkM9gBQNH52vdDrJGC9ceeELXNYncM/9RIgYGQtg0EAWsJOJqabOD90M89C2UUrIsoIXa2vxsDoIjc7amucTO93pDUt1WJ0AqgNSJ0dnaitasrfQOfCRlpJK1x1ka3QQElwRipC+HZE6NI2yDbq14qZLh/5knyPLcXWhNlLSRs4bzyztG/BuS/ziNPeRNvQrjAWm1rGQ+UxyBhzqENstE4OeN5VWDp88M65uMraeFnIrkGpRLhTZOn4MNbzMXqWj/IszqyR4BtKmRyRrbGzQ5la92Q6dfGziqZjvJn7zUZG7H9WW3vfPG5O2+94LJDPwvB8MHll1+Ogw466DkAfQVPRSySHow18s0AphQ4jb8fc8wxj4k1UrABEItkgpFijRRASNsGQ61eyS99YNqv0dZ5ft76XIOcJ1q4vthehLnN20jbwuCeA9oO2WKcYiUk5K1qWgNUIkJXdxeqba2NlS07YEML47okqyavuQHx8U+CSKtq7a26fm2gcmXDptMB4QwtmKyQJXjeeNyEEJFHWtiPx2+WkplHiPJ+2uek2wO0TtJJk6FSmbFG5h0vZx7UYH+/ofZACKF3Pd84cSq+tHBH9MV1xBxoZe61p7whsT3q01HuHDSxS2yVlrAlRyYnDlttjc3nhz3FraW9o/78nbfeeNkX/+NuCIYjfgGdEFgkdoRYJH1sheJTI5+ENNQebEzFyLDRiUUSI84aKYCQto1FL4ALiLHcLvBFipRe4Is1QKIUuKGsmqD3K5NWESyvSNoBaBUugiZs9meFCFXTCqASldA9fhzK1Up2xrkWOmQVrbykx4bj5LxupEKVy0BHq1bYQmXHXqwMBwkUJ3/7vHNqpFalGm0r5Cpm8I/BSBMnHyqog2tCnjInFZIiT38tdwPVKUCpFUBsiJfKGVPp5ZQ3XoPj5D5vprz5743uxXbQttujzrGzPSaNr60N0ihtlrZ5185lS7KtXPOSJT3Sl25Rn7ZCwlvqvggBniPwGRAMV7wI4PaC51A+7LDDdjr//PM3fqSRgR1QvDXySQD/V/SFGGWYCmBM0ZPYRNgToraNNGvkLEgQiWBDwWtW4pUPTvsH2jpPBbxbXkN2XDIk25vW9G2xYlPLZmPLA0GqREnMuSV+MdgEkeh+07aHWxkmUdKQumqphPETxqFUKnkzDlgYAxmykTBK85qRVqQA5JGc1EvOLo4ioL0NaG9J9w2z08rbJ3vFg2MExCcVEuJtE6ppfgQ+Bw2jnZqXQ8L85ZnVAyBAqfehEXkCEJWBygSgOhmgUvqTE7YGCNMf2VcGfWUu6LnmE05qdF3NQ8XYsmsMvrL4DeiqlFFTKR0tsTuy7bymj6lssAib2jZmp7Q5S6QZKSFujT8KtgcieeStpb1j1fN33nrVt7+4n0T8D1MYi+TTKP4GfQG04jaqMUSskb8/5phj7hVrpGAjIBbJkWeNlCCSoicw3MFrVtZe+9C071Bb51N+3gYD5kY0W7sG6PWR6TVlaRVToig4ogYAICgiKM8sWYFW1irGFmkfJQJabLJkuYLxE8Ylk0pNnHPshE0YU15wybrIG1iTtbZWoLNdp0Ou03qZM0azeH2f7fqvlUdcwgeavM5VrJBPhlLtAoLpZ8ZFenxfDUudg7dNqQ1onQ5UJ5h1obrnj8GepNuINA6EWAbXmxWmdHbgwG22Q3elBf3KKmLwVDUFpTQ5i92pGSUOJv4fluYhUecMmQzJn/7XWCBdCwzbKiMIIiF6joGzIBju+B2ARwqew7YA3lj0hRgCEGukYETghhtuePOHPvShtqLnUQTEGjkyIaRt06AHjCVJwIIHTjQO59Azz4ko3BoAIYZW1OwNsH1Y01iMJITEBpFUob9+KBOhDEbVbNPWUsWkieM9dQuNiVOGL+UQpobELiR1BLRUgc4O/dM/bl4/uNwecT554vx1ueqbXR48TyVEBsubju8RtuRtSquPIcFLv6XJtfQLGzOqXmjZNJ+c8ligbQudNulfC845PwTzXKdF0r9uypsrAxxjYls79p+/HRaNm4DeuA54Fke/11qqko05OTV3mSw5C9IkOXnobSOn9PpfYCjPHslmbUt751+eu/PWcy774n4QDHv8HcWnSHYeccQRu4hFsnhr5DHHHPPAOeecs6zoCyEY9tgTo1dtG2nWSAGEtG0S8JqV8WsfmnY7tXdeY8mV/elHV/ix/jEDMXMSW27HgrVVanIGAMpLorRvmN2+DK2ulckEkkC3AohcTzegvaWKCWPHNFG5AuKyzno1BIQhGKtSBro6tMKWis9sMl7enMLnHIyTIR2WmCnveaioec2c3W7hdirZNkWmGkwvV7lCmpyFZCqsk3PMPE+9VNomWZ2iyVupDeDYmxuyymeu4uZ/GtnbJ+f9UIyOShXvnzUHu0+ehp56PUWy/HNITI6WeCWvmRmxIXhp7mwUu0DdjDxlLa2yJcmRsMSO6GkQXT+AD5NgiMNYJB8B8OuCp7IAxfcmKxo7oWBrJHQ4jWDwMRVAe9GT2IR4G0YvaRtp1kgBhLRtSvQAWAJG3d3q21o1wBEN//ZYkzp2tTpJICHpm1yzfQlAbMaLod+0mhWAkNSzVWEacJNuwF0h3T6gHEXo6mjD2JC4NSVj3uvQ99lIbaMI6OoCxnQBpVJSG9esXo0bD5e9YA1IWmhvzNThBetTJMavNPSJKzw7ZDgZTvZ15AnZMcK55m4THjckoB7ZBANRFWidqW2TUTVRxfx9KBif7Ll655E6r+y5tZbL+MCsOfjknK3xeq3fI2J6G2v9DevQbPS/QlK3lvD2bGc25Y2VkDJL04IQEkp+trR3/ub5u2495bJD/gOCEYOhYJFcAOANRV+IorBkyZKpJ5xwQtEBJPdDGmoXhalFT2BT44YbbtjlQx/6UHnjRxo+GMHWyK0AjEq7q4WQtk0EXrOSV3xw2m/Q0XWJr6wBiY7mBBEkt/3uZtdbzkjize29dYSEXkSe8mZRQpIk2UqavFWIvJCSCN0d7Whrb0PqLtvd3wcR9uujthG0DXJct1bZBkIG7bHD5xmCF6pUPkHxF/nLQkLijeVvm5mMR5woGMMVGAZkyhFTlV2X6nMXzL3ha2T3S43nWyZnA9VJ5r0zy8m7Dj7JpQEenxVKUYTdJ03Fp+Zsg9WGsOkp5TXCThIibWx/QsTS2/j7K04eiXqWXGi/L5tV3cg00m5t7+h57s5bfrL0kP94AoIRg8svv/yVgw8++J6CpzHpiCOOeNsotkjuiILr2Y455pgHzznnnNeLvhCCEYMPAZhT9CQGGSPZGjmqCHgIIW2bELxmZe/qD08/MWrvehWwgQtGn8hx13HOc+cK84iec9l5D6vi+fvqGjdCxTwvIVHeIgCVKMKksWPQlurhNgCrYqi2ubkS0NICjB8HtLbk1KVx5mnqkHmNvP0O5Cki5m3jVDS7jUqWpYibQjra3yzPI1/5J548csfy5x2eY6iYBW9gaNvMfYR5o8E6ioCWSUD7XKAyFuC6994EYzNyngfXwyzbbuwEHLFoZ/RzDOVCRJRT0ZLaTc4hcipF4ijR07xebbY1gN+HMN2VkMi3DbvQEbMN/YqIvrXuD65gGOK3EItkkdgRwOwCj/8sJIBEsGkxGi2SbwIwruhJCDY9hLRteqxVwJcT9xmnuQzSXKXuLSWT72/tkn6TbT1S+qciStoKmJ+asOnlFfMomYTJiIBKiTC+uwulcikZLKyHStViIb3cblopA+PGAl2d6RYBIVkL98/E8AfHaZjgGBCsPBKSif2326r0skyypErva3ug5dkdU9cJOfNuhLyx/FUByUtds5z3xx8rqgKts4D2+UDUisSyydnjhoTNH48ZC8aOxxGLdkJNKd342qtbs6TMxfp7dkndKNuqcUlCpFWTE6XOGoKTLoYU1q95tmKbIGlVt5b2jleeu/OWK5Ye8h8S8T8y8RyKb7Q9Ki2SJ5100tQTTjhht4KncT8AUdAFmxSj0CL5HghpG5EQ0raJwa+vqPV8eNpPo/bOp4nSdK3BbbS7/bUWyeSWO2m2DdggE0KNk1teZQZRZl1k7n9LXiuACrxebiBUyyVMnjgOJbtxXp1bHuEi6Aj/MV3AuHG6bi0T4hGeXKD2pBSynAPlqVAZRcwjVnnbpsbNWx6QswwxDOfuIWMzzCN1A1Tvwnq6pi0Igu05Z1m5E+iYB7Rt6fV3Q86xkk+Ms4IqhZkdnThs4U4YU2lBjWOvLJDdz0RhA/xG2kG7bDAYMdg04U7GgN0X4ZcSJhvVT44k+zoCkYnnIXoMRJdCMCKxdOnSNQcffPADBU9jtFokd0Dx1shnzjnnnPrGjyRYX1x55ZWt++6778Si57GZMGoskvfff/+iPfbYY17R8xBsHghp2zxYA+BouLAGjTwHnb2BtT3YbMKkJWH+rblNo7T7xgBqZJebVgHMjqhZta1qbJMlaLUtIqClXNaJkg1VpEAFIwJ1dqI0cQKi1hZANUhUbMZV8pZlDp9jKwxJTW7vs5w5+42z/cTIkJyFBCyvpsxX5RpaFgfyCOY8IPKXRzpVzvUwn5LKBKBjIdAy1Zuv2dcPJbFEXClMbu/AwdsuxrS2DtRUDNfw2oaJOHKmvyiglCnS9GfzFE325sxeCqdiS+YYijURs19QWLXNxv47+kZOZfvrc3feulTCR0Y8foPi1ZbRaJHcAcVaI+8GUDRhH83oxMhtXDyaLJLvxsitZ8Ozzz673eLFi0eTapqCkLbNAH59hVr7kemPoL3r++vcFvbeNmnETdCEzK9jS9966xvdGgOKddNtBqMOIDbrSpTYJCMkPd10WIkmcB0tVUwaP7Zx82pTY0atrShNGI+ovd2bNBrzDbtvs9TIxlcj/TyXpPnzDIlQQHJCYsPK2CPhkTpLNnKmkrJQqpz5DuR8cgjouh55pLJhDZxNsvQeiICW6UDXIqDSDW2ZDOZMAFSMsS2t+Pe522KHcZNMLzbbQFt5YSFe6AinCZ39CUvG7GVzdkobPuKrdUYVJoApcvVqHKREJrVtBBDdB4JE/I98PA/groLnMAeauI0KnHTSSVNPPPHE3QuexpPQhF0g2OS44YYbdvnABz4wGm72R7o1cgx0ZMOohJC2zYceBp1McO3WAGTVNsDQNaOcxUg4BWDpBKPOcM22FYCa3Zf0c0vq6mb/EjRxK5G2RWrlTadJlsBmPaGtWkF3Z4dWzsxs7E+qVFAePw5RdzcQlUzdUpIW2JBs5CVF5tkgMws8wubYbN644baecmRJmW8h9GPzU3VrnD0Wh0QoYKTc4BybhZpkjon8a5Sxeua1I2hE3BqQOKoCbfOAjm31c7/ejRU6KlV8ZIu5ePe0LbA2rgHQfdWS6ent2Fw7P87fwq9ls5TMET6n2NkwkkTgsyQtiffXDedtSqSr2CRCtaP9hV/cc9uSy/5TVLaRjqVLl9YPPvjgpwuexizoYv7Rgh1QrDWyduyxxz57zjnnFH0dBCMXewKYUfQkNifEGjnyIaRtM4FfX4Hej0z7B7V3nZrHT+yttXnpflq1zdofY8cPGEz6Btne+NqfdW88hiV+OrqhhES9q5hESVvfFoFRJkJXexvGjOlM1KBShGjMGJQnTgAqFcDY4hqJagMjE0i2Ceu28oI3QqXMf+7bAd3QYYJknjIVzhX5c807dh6USh8jlbDZ+Gol6qBKX4u8+YQBKU1Vt7wAFbO83AV0LtJtAki3CIgiwm6TpmHfOdtida3mSLm1N/qNtBO9zIv491S2lOLm6tf04S15g1PajJpm7JCu9JMirbQZJY5BYCK0tHf0/OKeO65f+oXPyLfwowePAbi5yAkcccQRbzj//PNH9E2eh61RbM3PAyjeEisY2dgTI5y0YYRbIwVC2jYr+PUVfT0fnn4+2rpeTWIY0i45q7wlljLPFskAQFo9g+fqM+PHhtjpfSmlxCmQUzRKhqzZJEnA1LZBP0pE6GxrQ0trC9DZAZo4CWhrc+oKeTfpuYSiETdBsNyeXN5G7uRyCEyK/7CnpMFb789LGeUwhxyG4+eu894cCpstNCCBQJaEhaQuo+SFip9PupAdP/Xa2zejKOadj/mKoDIZ6FyMUusUvG3yDHxpwY5Y2d+HJNI/ieaHUcxiTgicJXG2Ls2uc43iTUIk2MaSmJ8M0zA+0dZsIqTfk81WdiZqGwGgXwB8xqb7zRQMA7wI4OGC5zAqUiRPOumkyoknnlikygbo1MiiWz2MdswDMFKDSACg48Ybb1z0gQ98oOh5bE6MdGvkqIeQts0NwhoiHKCQECwgUS7CWAurmoVKnGKbKsmOnLHZ3rv9dzZKa5mMoVW1khE2Imb3vGztkqb+rau1HWhtd8dztjdL3FIkrZmCxKmX6yQWyiMtbvsGQRsqsC364SCpsJEGx21EeFIKm7evH2YSkjbi4BhIz9clczZS/ZA+38y1zFMAeQDrmqRSIgZQwrzx87Df/B1R90JHlOmlZo9ve7Ipa4+0y6Htk47MGWqW7Ge/SEjaBMRsSCEiF/jvFDeTDukIm1fLVm3reOX5u2/7/tIvfEaa7Y4iLF26FAcffPDzAPoKnMZosUjuZh5F4R/HHnvso2eeeWbR12G0YyQHkVi8A8D0oiexOXDvvfcuHCXWyLcA6Cp6EkVBSNtmBr++ot7z4el3oK3raWtTDCmAS4WkZLn96ZM8q4A4dc0ugyZpzOxUuZjZES8TSwECO3skIUmSrPXH+MeKHix/vQ9Y0+tIVGJ906BMKmNIruARn4AI+ScckqPQkhiqeI5k5YyTIYP+BqmN0yRRBfv6RC9PUbO1cn6PN3/8vP0akaxGyp6vFIYEL4/0OqKbd5xGyxlzO6s4aIsu9Ndex7K+teiNa6kPnv++J2QMtj222SaZYypp0qt5y1glAUfIrJKWEDcYy2SqiTYY9BAB0kh7dOI5FBxIMkoskjsCWFTg8Z+ENNQWDA4+jGITUjcnxBo5CiCkbXCwmoD9XQQ6PLujJ8oot55StkkYq6NTMJBuZFxjG1JCYGbdCoDhETj9iKBJWskobCpW+OvKfvx1VT/qivXNcn8dWLUW6bom5Y6VTW80Z8QNHrkEBunlKTIXKF6hUtRsmT9uhlCugzxlyBaCeSHp0dYojCQXDQjkuqyWUGhK+sJr2qjGLfm0ARxjcrWMfad1oot69GdExVhR68Vr/WsRc5zUq/m1avCvc1Kj5vqzeUpoai/zxYEj/UnciHuwI2hRejkIlbaOP/7intsuWHrwZzbtb6NguOBFAHcUPIcRbZEcItbIpwD8uehrISgE/wCwehCPN5Itkv8CsUaOeAhpGwysXsF9H5n+K27vutDVBiGtpAGaWAFwselA7q03YAiZd3vvEiW1RVKHlvRystxaKstm/+Vr6/j1yhpWx4zIqR8GtRhY3RcIXg1IzYbCJ2khwQIaE5OQzLB3Ff19fUacCRbxx22yPJloA3XNzrkJwUqNE4zZiOz6735De2UDQhyei52bUphQLWO/mWOwZbUf/QqOdDEz+uMaXu1di9W1fm179MmYqV2zalo27l8rb8oRPk+tIy9pkry0SIo0YeNEbWP3CSRU2zrwi3tuv+/ygz9TdPS7oCAYi+TTAP5S4DRGukWyaGvk74899th7xRo5anEvBp+wjziL5L333rvwbW972/xBPuxJAP5Q9LmPNghpGzz0MnABezzN3p77cf7W+uj6XcG4FZHUr/kpkXWjMsVgp6rZfWJzUD/A5NX+GL9Z1Y+X+3WFnM3a8H8CDPT2Aat7zUSDQewycNpmmFGNkK9IperQvLFSNW0B6WAgHZmvkguTIixxPolJ1b0FhI3Y862yIzmNLYapk8mZQzOCFah/hAbjB/tAZcdPkbycOjZv/85yhH+d1IlF7TF6XUiIPn/TPhsxgNX1XrzStwY99RpgFFYLBRM84h1L164lJkrFdkv2erwBvoqWEDQybkjXRtvr14ZnCHzcpv0VFAxD/BbAI0VO4Igjjtju/PPPH1v0hdhM2BHFWiOfAvCLoi+CAIBu+TCYZGYlgCuhFfXBxEi0SL4bwORBPF4P9O/u2qJPfLRBSNtgYfUK1D8y/e9o7zpG8xR9K2tNZdYaaSP+FYDYEKIYidWxzuzCSmzHLeKk3KpmltXNMfqNStJbZ/zx9Tr+vDZGzKxTI2FMaZTcUsMqbkxAbw3o6U9H2afq1/zlSNsJHRmzsCTPJ2FmuQsjQTpx0Q/nsAEj7G1jCY09+ZR90k+Q9AhPhvgob645Kh7n7Jen0GUsoP74OaEnKUI2gGUpzTXvOAF5s8dVCm2lCO+dPAb/MqGMtXHslNOUWubIGFBnhZW1HrzStxb9Sn8doFglb7lT4uCIXfJf8jrp5+Y1zrYfJrJ2yci8JLes0tbR88I9t9902cGf+Xuhv7OCoYC/oWDSBm2RfGPRF2JTYyhYI4899tgHzzzzzJeLvhaCQtC32267/fq73/3uLwf5uCPRIrkrBtcaeSuA5SiGQ7wZEkQiGBSsXtFf/+jM71J715/cMpvQZ15apS0OVDXXnw2a5NUNb6gZomaJHZtldVN31ALCa70x/ry2H2tiZVIjDWEjQkSJwkFkbqGt8qFY2yR76zkn00AZyhA472GJWYrshQobAmIEZFIl/WM6YuiTI2+bzJgB6bJkKDcl0j9db18VEiv/mnjnFSp9eYmYDWvtFNItAHziFj4aqIpgRBGweEwr3jehijUp6yMQQ7naSEuwbNgNM9CnFF7p68Fr/b06ZVLpurikJYBKBZDErBXiOvv93vywES8t0luehJLYujY8TcDxm/i3TzAMYSySD6PYOPj5GIGkDVpZ2bHA4/8eorKNdrRBWyT/OsjHHTEWyXvvvXfM2972toWDfNifAPgn9K2kYBAhpG3wsRrA0eGtvmI/iETDWicBAGRvrm1/NkadyTTSTloF6NARRgsRqMZ4aU0NK+sKkdE0ItLblaCj/q3SZj8IFN5js9I2yVqcr7L5J8Hhi+CRis70SQuScX0iZgmbX6MWEjZ/nxRRMlfQJbh44yj7OlT9gn04UOoaqXW+ehiGs+RepAaqmH1NDchlI4KXp8AZNfWNY9txwKwxqKu+JInUKW1G5TVzYKNUKlapOP+euI5X+nqwpt6fpJLCq2GzVksocwwdXuPmTwBDN87WDyDp0aafK1PbVmnreOmX99z+7cskfESQYChYJBeff/751aIvxCbGDgAWF3j8BwA8XvRFEBSKdgA3A/jdIB/3HRg5jbb3xuASUDVz5swn77vvvrUQDjHokAs+2Fj1ar320Zm3o73rHiBNCWzIiNNQOE3m/AbblpzFDPTb/ZlRIcYYBlavrWNFLQaQtBQowesXbRpu2wASHcWeEDiy9jUikFKgVT3JwZvVb2VIENI8xbf/ZRIhQzUq2M5XoZRHWFJz8CNc/IMjmJs/JoJ9gPT5+cNYAspePZp/TcL6shxFLE+dc0OESlyjaxASSO845vns9io+Pq0bcdyHOhM4778wGCdjd9Tjx6ywut6LV/t1iwcPXeUAAHDkSURBVABWSeCInbwyhC9pJB8B5NSzpHU22eba9tOpP2esfz5Ous5BIAAALF269JWDDz74noKnsTOAtxd9LTYVTjrpJJx44ok7AqgUNYdjjz32oTPPPFP6Lw4ddAIY1C8mZs6cWd1///1x9dVXD3bLh6k33njj3BFikfwXDG492y0AVgB4CUBv0Sc/2iCkrRisjrTaFgOesmYVEHCSJAlrO4OzUfpBJFZ5IwATidDeD6zs182Pbc2aJWtWYfPf9JLp1ZaEkJAxqVFSywYCxQq0sge5fdlCLpIhO3lEIwgiCcdU61qWo3SFSpgK1qdUKW/Otv5NMTI1dylCxMG+vgLnWRmbWSBzA0qaWB5TRFCln2ci/ZPrsFVHCw6ZPQld1GdUWOVqJ/2WEXZ7ZdQxV9nGXp81VppiMVBTCiv7e/FarQf9qm4uBUOxrnsDM1gxFNJpkGTi/clT3BA8qm3tv/vFPbedIhH/ghz8FmKR3JRYBK20FYXnINbIoYZ5MAHTg4TVAPrM86IskhMH+ZibFAVZI386Y8aMV97+9rfjscceK4K0dWMU2zKFtBWBVa9y7aMzf4X2rkuUISTuNt1z1SlYomZT+xI+4fe/mhxpnb/eH6POnOp6FVFC2gAvcMR7HdntjdoGIqPC6Q0ia5Ws1UGrerPKVF70fSb9MUeNyxAiePvH2fFCS6AjSsgfN9dOmaPo+cpZKs0xj4gFbxIDTYNGQnUsY7FUDbZrsDxzPQIlTsUYXynho1PHY2ypzwTYsJdIauvRErKmOOnFp8mc0mmk7OJEUuElCkpbJvt78FqtF3VWrn+gjvnXnyzyCBmDdCWbWcdImmyDCJW2jvqv7rvztsu/8BmxSwny8ByAO4ucwBFHHLH43HPPHSkWyaKj/sUaKfgdgFfN859DLJIbgkG3Ru66665PPvbYY/WNH2qDMQHaVjsqIaStOPQQ4wI2f7R8euHS9ZkTmyQS41/d3KBPiIDtSkB3zKjXFSIAZbD2u0Tmhph17EPJaBsMS9IS6qbDR7IpkpFH8VxLgP46aHVvQCKQzL4hUTIEReUREHsBfLKFZLw8pYr9YwY1ZSGRyxAlDuZph1f5xChFUkOilJfo6KtiOSQ23DeP8KXGDtQ19pU177WKMbZaxqdmTsTCTqBPcVJ3ZlU0RkpxS4ibTS419MvWV5pQEVvD5lIjocdZE9fwcu8arK71IYn+9z836cARR9js1wXkvjJ4AcDpg/kLKBg+WLp06ZqDDz74gYKnsTOAtxV9LTYWQ8Qa+cyZZ55Z5I2fYAhhn3326SnAIjn/xhtvXDDMLZKDbY18GNoaKSgIQtqKwqpXUd975t/Q3nmaT3vMLXYqlMQSN9unrYsIO1QizCUCYkYJQJWs9ZFQocQWaRWzyNasmWPZQBKLMuCCSnRtGyf7waduAPX2g1YbV0PGBoiEPCmVkKtUaEiwLAwaCUM9vAbRaSUKSJEvR/qADElDzvhOTcvZTvlkzFcSg/EdPCujHYu8/XODRwKypnKIXsNecSHJU2grlfDOSePwxu4W9JpofyDplearZS6an5OG2X5vQDum7ejGrHsBuvRJN462Rr5e78Py/h70xnXYPytJ8AiB2dp5g+h/Biqtba//6t47rrrsoH//W6G/k4Khjt8AeLLA488H8IaiL8ImQNHWyLsB3F/0RRAMOYhFcj1QkDXyVgCvFH3uoxlC2orEqlf7ee9ZV6C96xl3365/uCbZ/qOVgAVVwh7VCJ2GE1RJq2sRgLKJ8Ac0CXP2Rv0jZZMsAaj4ISSA6ZpFTmkDEhUOlDRCJhCotwZaayJQUoTNJyMIyFqohoVkTgXPLXlCmizlWS8d4UFyxTLbB8qg410B8Uvt72+DYPwwln8dfd5ShM1umxPtnzmvPKUurdK1RBHeMWksPjK1E2vqfSZhVDmSZQmWT0wtEbOKWxJM4oWRZDh0sp1P3BiMuoqxstaP12o9qDMj8pto27o27zklNskXABaVTbAuPA/griIncNRRR2197rnnFn0dNhZFWyOfRLH1iYIAV155JT796U+3FDyNnwP4wyAfczhbJAfbGoldd93154899tiaok98NENIW/FYC+AUp2+wbz/Tt8gRM+ZXI7y7rYQ5RFCcxPXbfmslAsoEtFBC3ioElBIjmiNvTKTTJEk/LCxBiyipdYO3XxLSDkTMwJo+oF+lm28DXqPrvIclLPDIjEe48mrHwqCRPHulb8lsVC/mr4e3TyZUxSeFSZPqtIUx6OvmrJ8hiQtIV6qoMKuxNlfmQsKml0XE2KG7Cx+dNg5ra33GXquccubyHB0R80lZ0ieQnZUy+em1zHYPDoigtVvqWZHu71brxcp6LbFCkteTzYTcsA4f+duv7r3zrMu+8Omifw8FQxxLly6tH3LIIc8UPI2FKFal2igMAWtk7dhjj332zDPPLPpSCNKYiIIVp3322afn2muvFYvkwDHY1siHoBtq+3gBukXwoOLZZ5+dtXhxkd1KioOQtqKx6tW62nvWbaq963qYm+sYcKrIrDLhfZ0V7FKJ0MqArRIqwxIucjZImwxZJf3/yC6IhIASkWumbaE4nSwJuw8oVecG8tQ3L6wkAiN6vRfUbwmXN5BqQLBSNWJooCKFSpYv9XB2XzRQqVIEDk3UOnjb+WqcO1B6bJs0mSKhZhuCN24OCePggRwymHnuq2rZ2rbtxnTioNlTXC+2pG+anru1RdpsSK2wIdWLzVkmTa+1UElT3s/YI2mK2V0uCuj92riGV/rXYq2qm+bZjrIl/xLdD/C1hf4OCoYTnkWx1rpdMLyj/+cA2LrA4z8A4ImiL4JgSOBJ6Nh4H/dALJLrREHWyNuQtUaugklBH2TMAlC0MlwIhLQNDawm4ChmVjZuvZ2A93aW8f72MibZWjRK0iBLIEfcnOIGLzUSyJC5KHhtEaZLGm7o+mq5RttINnQ33koher03q66Z88iQIRUSshwVzSdIDn7CpEpskyEp848b1rHZ7TPqmzd2uF/G8uiRKsohZ3nEM6Oo5bUoCBMtc9IvHXmD225Oewc+s8U01Nk2vg5UMK/uzBIsTco8JY6VCSCBS4+04SSKdR1bEl4CV5+mVWGlQ0ps7ZpR0BQIzISYgVX1PrzS34N+pRAZ4m9Utt/96t47zxeVTbAeeAHFpkiWjzrqqB2HsUVyBxTbUPt+iDVS0BhikRwYBt0aufvuu4s1cghASNtQwKpXofae9Q/V3nVxCcCeHWV8rruKueUICpo0lSgJC7G2xsiSuMg0JyZA2Vo00stsM4uSp7iVvWASSwls4Ag7qmYDTAKrJCfkzSp5FMcorewBxT4581WtQP0Ke7BlauBCRS1ouB1umwogQTJuivSFqluwDQdzypDMBo8UwQvIXV4fNzf/wEIZjuOWxUjaH6STIqe1V3HovFkYU6qjppRLhkyrZ4DfPNsROU5e29N0hM+cvrK93eCnUPq2yth7nzSNV9ZAy/AIPqGuGCtrvVhR60XMjGpbR++v7rvr6su+8O+PFf3rJxg+uPTSS3HIIYc8D6C/wGkMS4vkCSecgBNPPHF3AFMLmsI/jj322EfFGilohL333nutWCQHhKFgjRQUACFtQwWrXu1p2WeLkz43c+KKN7WVUI2MDdIQLZ+oufh9aMXNb6BdIh0wUobpkmn2t0EkoRqna9y8wBHz01feImuH9KySPnEjIlA9RrS6LyFsQGA19AmOyiFAyFfmMnH+DRSx0GKJcA4huULyk4PXqbGBXLJGHuHya97CsBCnCgYhKSk1MUdxy1g9PQKoYoxvqeLfZ81Ed1mhbnusOdtiQtjg1aHBU97Ym4OCZ6g0x+PUWHocXSenjwXTm02fVeRdPWOBNPJslOrXBvSpOl6t9WB13PebmNXFBf/WCYYnnkWxgSTD1SI5G8COBR7/aWilVDD0MBXAmKInYXAPBt8i+Qbops1DHvfeey/e9ra3zR/kw94GIW1DAkLahhAiYPWMcnSMvcWNQusjkVPa9M8kxj/ylDhb11Y2y1z0v6l/I+9hwfASJxESM0rIIpId/b5uBN3DrbSmX79KkSlbC5ZD1DIKk7+ugTWxaSJkeNywxg3NVTO/7o7RYH1O4mNYf5ZLAEMSlvdooN65ecToqlTw0RnTsbCrgt64jliFQSNeM21z/gx29slwOztPPxUy9q6p7tHm9Q9Mok08mAbabD497AWQmM8MA1BMiFraXn3untsv/+7Bn5GIf8GG4A8AHinw+MPVIlm0NfIpAH8u+iIIcjGUSNu9AP4yyMccThbJfwEwZTAPuPvuu//8kUceWZ2zahUKCCIBsAWAagHHLRxC2oYQela+WjvrbZN/0tbZ/aytXbMWyLKxOlrlzZE1JHVuZUPq7KNittdNt+2+5oGkLs2StxjIkDpfcQOle70l4STp5tul3hoaqmApsuZbHcP6tjAgJAjj8G2GviUTAyFiQJpU+T/99Z5iFxLQPMtmpiYtp9cbgjlzQEz95tkpIqcAjtFWKuNfpk7GHhO7sDaug03UaCqi3722KZFI+rCZIJG0zdHYIFWiurmfbC2UKqlhc2MpWLLGPpNPNdO2nxRP4yU8Aca3iv59EwxPGIvk/Rj8b+N9DCuL5AknnIAlS5bshuKskX847rjj7hFrpMDDP6DTs1PYe++9X7722mt/N8hz2RnDh7R9DINbz9bMGvlLAKvXY6xNBQkiEQwREFYR4cDI9URLyFvZ2iPJJDymatvI1awlSh2ZfmwpwUOHmBBSBM/eVjOAkrkFT/ZhV1vnkzd4t+XOUslA1NOPqKeOhOigsbqV12g6E0YSkDE/kMS9NK0Hwoh9d2w7UZ/A5cwntDn6BC+0Wmbm65NLpJdllD/fMtmgwXdATMsUYbcJE7DX9ElYW+83NWw20t+1wXb/2fVJvzW/xo1dAEmyDE6RYy+AxLde+uEm9pJoYmcaQjB56l3KhAsAqLa1/e3FB+799k+/dGAo1QkE64PfAHi0wOMvxPBqtD0bxVsjny/6IgiGDvbZZ59/XH311Y1W3wvg5cGcz4033vje973vfUNFbcyFsUbuDFP9MkgQa+QQgpC2IYa1ry3nM94+5Zetnd3/Fbmofn3bq4hcHL9T4mB6sVGirllypZU2MkpbWoVLj02O5Fl+4pZ5Ae3MMDVySBgdrPJGSYsABqLeGqL+OGthZASKFLIkLmUPDANGVJpQsbeNT7h8Ba2pDTLPZglvf29+Yd+0sP4MOc8HEuGfskv6apu5Vkr3Yttp/Djsu8V0rDa92MBWKQsCRzipYYMlYZ79EUhUOJsW6adNqhTxSyL+/VRKfakiTdaC/ms+mWf3aYpQaW3Hiw/ee9fVhx50bdG/Z4Jhj7+hWItk11FHHbXzMLJI7oACSdtxxx334Omnnz6oN+GCYQ2xSOZjKFkjBQVASNvQxBoAS8hjEba2zVkcYdW1tOJGJoikRIQSGGUbTGIslmS2j8xYLmjEHofgKSUJKHgdwXfCUbq+jQBiRrSmhqgW1GmFNWYZMoUgsRENFCxkx21Us+bA2W3gjZcJJEEwfjBGhvSpdTz8eeZYIkOLqIphbZFbdXbgC3PnoK76ExLmqWOuuTV7ypglW8YCCUfYvOh/X6OzoSRsx0TqtduWWaeVprv6ObVNr4sAirxG2gCAXwH0jWJ+pQQjCcYi+RSKtUguAjDYgQAbisUo0BoJUdmGOqYA6Cp6EhZ77733HwpIkdwZgxyjvwEYStZIQQEQ0jYEsfa15TjzbVP+1tLZfZpVwKySZpW1Erle16mKIUvILBGziZJ+bZurd0Oy3G1rHnDL2BncANOaDOkQElfTZgNMyFQ6sULUUwPFsfHQ5ShMjcib4gbrVf7+eYTNX+aP4cZGzrZBeElek/BMLZoyFyaYT2jVTC230f0hifPVOr3f7M4ufGHufNRVn+ti6WrVAhVMwYaL2LqztPURlrB5c3I1arCx/yoJHOFEXXN92gDXl82CHTlLllnbJINQbm3r/eND999w9aEHSY8mwabCcyg2RXJYWCRPOOGEKUuWLNmpwCmINXLoYygFkVgMukXy5ptvft9QtUjefffdYo1MsAhAW9GTKAJC2oYo1q5Y3nvm26ee39bVvcIRsijp2eaSJGFtjpS2PkIrYL4lsuyFm2QacIcBIx7s68hLJmG2pJF0+n2q6bZnkIsVojV1UKpvW6Cg+WROqTTBCQiMO3jmgfRYjerO9ADeT2/yKRUN6TlkXgcKmU++QsXMLYuz5+vIXo4axwoTWqr49zlz0F1h1LwAEEuknHoW2Bdje0mQtj065Q2Jymbr4mIkpCz2yJolb7FZrkBQ9pJQ8o6zZ6oFyH3ZYOj8LwGIyibYZLj00kuXH3LIIfcUOIVJRx111B7DwCK5GAWGphx33HF3iDVSkIN19VoUi2Qa78bQs0b+BUBfAdeiG4NLXocMhLQNbawi4ECrtmnyZZpnIyFh1i5pEyatdVFH/OuebVZZs60BbN81G1ZSAlJWQquW2Zt4X7nLICllcvD7yUEpRD2mEXMeqcpVowzrUL4tEYF6FfY08+bk2ydDq6XdwCd7NtNeNZgPQptjAwUNoYJo9rHkrFFdXOp89M9xLS347NytMaejBf0qrDuDFwxiZpipO9NBI8ojeFZVS6lnLhnS1LDZZfCVNUMWkahnMNH+Crqxu+3PZnv32ctcbm19+Y8P3X/R1YceuKroXyjBiMNvABSp3g4Hi+QOALYq6NjPQ1Q2QRYvA3i12QYFWSR3wdC1SO49yHMbiDXyrwB6C7sioxBC2oYw1q5YXj/j7VNva+3qvjcV7+8lRvpqGvkpkki2s1ZK3bctUeiAtDJXIhcpYn6mKVpefzdfWUuskUZ38YlePUa0tpZETIYEJ1Tg3DbwiFQYUhIqb2HACbwxw+2CschjfBnLpLd/egEyZM410g6CRVLtCPJCR9LNszvKZbxvxixs192O3rieEC2VpD2mrJGWYJnlOqQEHu1KmmRrdU0hZkbsSB2S7Q0pjBm6DQD7YSbJu237sNn/oswnxK1/kkA/KPr3STAi8VsAjxV4/CFtkTTWyDcXOIUHUez7IxjeEIsktDVyzz33FGukQEjbMMDrAI6xhMy3NoY1bI7QIVHQ/Dh/PzXS1rI5M5shexbNCVq+hdJvEUA521NNgXrq+Qqb8hSosIYtNxLfI0lOjbNoUk+WQSOrpfeT7ANZm2XqGL7NM6f2zZFFBOsSdQ0co61cxnumz8J7pk7Bmnrdm7YXNuITNVvPZiyMqQRIzx6a9HHjtKgIGGuksVa6kZWzTSa0klw9mwIhBrnppaP+9Yeh3Nr25z899MB5Vx96QAG/OoKRDmORvLXAKQx1i2TR1shnTj/99CKa7wrWD/MAtBc9iRwUYZF8A4BJRZ94gHdjkIOEJDVyaEJI2xDH2hXL+Yy3T32htbP7m1bj8OvUdO1aUpvmlsHr54bkNrpsgkV8W2Xk7VumdJVX3gfEV9SA9E/yVqaJnPnZp4C+2LMLBooZcuraUmQNaeKTF0DikZwEecTMLqdg+8DuqFS+dTJTe5djlwyJJ3KInKf4RUTYYdwEfHTWLKyp9yFmoO7VpcEjV2kCZjqnWVsjK9MIO1Hf/PRHv9+avyxlwUzZLxmW5lsbJLuegElDbWud1OEj7fjTQw88cM2hB95R7G+RYITj1wCeLPD4Q9kiWaQ18jGIyjZc0Fn0BPJQkEVyTwy9ura9B3lOQz01citIEIlgCGNtCbiQCKxth5SySrpwEUOWbCNucssTda1M6f5uLlnST5f0iRalVbUI7KVFegiCSHT0O6dbA5jn1KeA/jAF0g/vQL4aZ1Wp0L6odwiehxbJHJXN1cHlhJ844mXPzyhteWTTHsjOT/k93MLG4em6Nd8yGYGxy4RJ+Pz8bU0vNnLbKeU3wU6TLBsm4jfKVu6UvT5rnkKXslU6e6QlfJbowRE2PVZaO/Ubq8PLGLWEnoHnGfT/BvuXRTDqUHSK5BwAC4q+CCGGgDXyAejkSIFgY1CERXLn973vfUMi6EKskQ0xJN6fwYaQtmGAtSuW47S3T/1ra2f3Ma7Pmmdv9NsBWGukJXVJN63kUSGruiWqnKuLA1ANjp8OIaHUhyZpBcDeMk6rb8iqbtQTA/WwdxmC17wOEudtn6lrs0P66luoiNn1CMZDensYlc0mYCLc3idltj4up+9aqm7NJ6qaxG3Z2YX95m4LpWopu6Lbm/PskfkNtu1xbJ81sCZvtoYtCS0x5kxWiMGoc5I06RND20jbfx+9SsbUf9AqW++fH37gpusOPfBvRf7uCEY+Lr300vohhxzyTIFT2AJDs66tSGtk7bjjjnv29NNPL/oaCIYmfgvglQFuW4RF8iMAthzkYzbCkLVG7rrrrn9+7LHHVhR1YUYjhLQNE6xdsbzv9LdP/W5b15j/syTIqmtWabPpknZdmWwAO3nEjBJrJKWX+XVuflAJkISLWNZi80Tccwc2Njl73AYEDgB6A8uhCsiXCkhdhmz5Dbe9CYWWRQCaRCFNrty+lmj5xC84tq+y5VkjG9kkOSBnuQqcwuzOMThk28WoREm0v47aR6ZXmoswcUmPXlqkI3HW0miUOtgYfxvbnyVn9sopmPAR+L3ZEkLGLmDE0rXIk2XdO/wsQMcW/XsjGDV4FsD9RR38qKOOeuO555471FLntkZx1kgJIBE0wxqsO/IfgFgkAbwJwPhBPN5Qt0aOaghpG154HcCX/ZqyyNRBOcXNa5Zta9SSREdK1a9Zcmbr3CIQSiaRMuzb5tsek381nIMwVZtmSsUIiIhNjzfyauFIq3M9OYmQGXJmyF0qAMQ/eAMrZdgOIFXzFhArhYCIeU9VsF+GEAZXYp2WTt9GGWNctQUf23I+xlXLqJs6NH+fjMKWiu5HQua8OH97jeypK0NCEytl0s9NGUWu7o2ZJnORqVNDqmaNoeva2Pt0gIFKa+vf/vTwA2ddd+iBRf++CEYPXgBwZ4HHH1IpkieccEJ5yZIlRalsAPAUim3FIBggrrzyytZPf/rTQy14I8SotEgaa+T7AXQN4mGHgzVy1EJI2zDC2hXL62e8Y/qtbV3dPyNP6Yiga9aS5EiroCWEDkhIHZlebXq/JGkSrt6NHeGzCENH7HiJAqfJQSNVzd+OiJPAEgawNkehssiEkITbNFru7e9mFz6Q/KSQiHHzR16/Ng6PByTkK+zPxpqwtbbigK23w6KxY9GvYsSGnKbq1uDbHjW/jL2AEEvSEndnQuCsRTJsrm3HsRElNszEqnDJmfpNs5PnCXWP3HvO0Movg55j8DWb/zdCINC49NJLccghhzyPAX57vxkw1CySuwEoqp7tH8cdd9zdYo0cNuhEtipiqGG0WiR3xdBrqD0k8Oyzz7558eLFLUXPY7AhpG344XUCTonATJ6K5temOesk4GyPiTIHR/KiYPuI9W25X//mFDEDgv/cj/fnFKHTsFZKaqjWEQAoAnpCMqQAFWdJVKNaMv+QqXX+dDjN6djbXnnb57UJyKhn3piZ7VRA4JA9N47RVinjHdNmYfsJE9CnYk/M81Qxo+75ASLZ/mzpkBGbCKnj+o0t0p6mGS1plp1V1mzipH5tPiFkPj1ERqkL33H9Lpda237/p4cfPPmGQw8alF8GgcDDswDuLurgRx111BvPPvvsoWKR3AE61bIIPA1pqC3YhBjFFsl3YXBJm1gjhziEtA0zrHl1GZ/+zum/bOsa+y1rj7TBEBHICyghRF6z7DLZ6P9sMImzTFqil+rxxq5+yYIGNFPPNOcCUTgged42MXSNW8p6mEOIzNjZ19yEbIUtBMLkSl8l88ZRnm0yVPcaWTK988+ogF6CZFu5jH+dtRX2mj0Pa2s1wNSk2W5nyu4aKGqJWmYUN1aOoKWSJZ390VPR3DHYkbfUdrB2S0PmKGkW4b975JM4AEw2fKSt/qeHH7z9hkMPfLSI3w3BqMcfABT52VsIYJeiL8IQsUb+uejrIBjSeB3rr4rfC2DZYE6ySIvkMLJGrhrE+Y16CGkbnljDwPkErEglR1JOXZt7be116abbfiBJGbr2zFftSkiSIRsRN0fMctQtV+9m6tki19KLkhRC+zMm/Wc8RaSQEKzcoI8gYCSXTCH7MzXDQK1L9TMISJyfTplR/xo19Pavi0JEhO3HTcIHt5iL3npNL7X2R9b1Z45AhSmPSHQ3exxOPZSzS/o1bolFMkmLtNOOvVYLlgC6+aSuVLovm6+XGkL3awCnDd6vgUCQ4NJLL8Whhx56H4C/FjSFLTAESBuKt0Y+KtZIwTrwWwCvruc+o80iOVyskS8A6BvMeY5mCGkbhljz6jKc8c7pf23r6v4GmYRG2wctMo2PLSFLLJCEMhJq4kJKQIg4SZG0FUolRwBTmYEeWUsTubyebqHylNRC2deGvJn5AwBqBNRy6soso8lT4MLnPtlLwd8mfBjiolTyyCNhGWWNs2NnVDa7ShPMReMn4pDtdkZdmdARz77IUEk6JJRriu03wfbVuxQftbVpSOyNsJZHb26x4Z8xgDrgWS6t+mbf0eBB7D4FkZcUSSBUWltf/8sjD131s0MPkoh/QZH4DQpMLfzyl7+8/dlnnz224GtQpDVSUiOHH3YEMLPoSawLe++99x+uv/76wSZtbwRQVEjLYFsjH4ZYI4c8hLQNU6x5dVnfGe+acUV7Z/dzGbsjM0qUkCpH4CKvtxu0iuYabRNQNs2w9TJN5krMzjYZhoxkFCq70ugubk3Kxkgmi9BuHpBBIk3cYp+oebtnLJJIq2hOkPN6vzUMDgkJV9455Sh4qePnkbgcAmfOY05XNz6/7Q6IlaFSTlULurIx6w4DsAQraJDtKXChJZKZUWe4urdkfOv49KggMxTI2CdVQuAQubo1mxxJTO5LAaeguoYS9BgTfWNwfwsEggz+imItkotQoNpWtDXyuOOOe/D0008f1JQ/wajCPQBWDuLxOm6++eZF73vf+wb1JIeRNbJIvAWDe32GBIS0DW+sYuJjKOl27CySNlUyJFslz5qYvE4skYk6xybAJBknREY1Y+94HASTcLBtMCClVDoC+igp7LIDOC4U1KC59WE9GwKi5W3XSDnLLAfS5Cv3pBof17N3TmnvwBGLd8WYagvqnj0xIVzeMiClsjlyBrh+bHY9vHWuvxpMCAm80BI2Op4LHDFhJGx0uDB8JNBYlX1wElfDAKLW1r//+ZGHLv3ZFw9Qm++jLhCsG5dccgkOPfTQJ1GcRXIbFGuR3AHATgUd+0VIAIlg86IIi+Q7AUwb5GMOujXyLW95y03DITVytENI2zDGmleXxWe+c+YjbZ1jfmZr26xFMjK1akmMf7pptp8w6a9L4iWSPnBA+oOS27+tQcJkup4rPUbSb45Tz2GP2IcB1Ihx9hi5sf1IE7hctc1v1h3WzHn7qJx9QyKZamSnMK6lDZ9dsBhjW1p1rD8nZCvRBNNBIskV9MgZc8AlTRVaqj1AUgunlTWvno29pEirvsGob+a1y/q0jbKN9zW13CtIZNCDAF29WT7kAsH6o9AUyS9/+cs7nH322ZWCDr8YmrgVgachpE2wefE0RkddWxHWyEENeRFsGIS0DX+sUsDRfsNtS77cc0vgjPpVMvfbvq3S3qrbQJOE3JF77pO5dH2bBee/ouw64uS+n7z5pPeOgF7zPAwWAQKi5C0LSRSHy/MUuryZW4Jngzoo2KcRefMeKkZ3tRWf2WZ7bDd+MvriesrK6MJCXC2ZPa6pUrMkzW2jEmLnkTSdJJnYK/3Yfz9wxBK4ukuLtKQv9WYF77LpzUaUIvUAUG5r/cNfH3novBsPPWCjPsQCwabCJZdcsvzQQw+9t8Ap7ALgbYN90OOPPx5LlizZEUAhhPFrX/vanWKNHJbowCD3adtnn32euvrqq9eu73577bUXrr/++tswgi2SBVojN5S0vQBAFLpBgpC2YY41ry3D2e+e9feWzu5L0ioZe4RMw7YAsMqapSFWldP1bElj7ZL32qpurr4tJ1ESgCMwabtjoiP58Pu2ZZp32wmyIW6O+OWpZ/AIWt7rZjVs3rxDSyT721rVLadNQG6rAb2utVLBu2fNwW5TZ5ikSL2NJVmubxp7tWdmCBcMYqmYSjfQTpQyS9T8Btl2SiGB45TaZo8T25YAIDCHtNx7pyhZV25t6/3row9fc+OhBz6yuT7fAsEG4tfQoSRFoCiL5ALoUIki8AsAzxV0bMHGYR6KC9vYEIx0i2Qh1siHHnpoQ4nX69CZZoONMUj0hVEDIW0jAGteW7bmnH+ZdVJLZ/dKIF0v5lsgk/h/oIzkltzG+keu3xtSdWwJGaQcK2QecfMT8zm1nFMql16YZ5N0gwOA8olbMlZGYUspZkEQCXyShRwyF1gvlbc8Z87ZGrpwPIVquYR3zpyNj89fgLX1Wqo2zbdCApa4BXVs8MJHmFPrwJwmbi7+37NDcmK9tL3d7DiWkKbj/SP3jtjwEeU9TxM6gEG/Z+CizfOpFgg2CkWnSBZhkdwVwO4FnfJDKDYARjB6MNItkmKNHBi2A9Be9CQGG0LaRg5WADgQSJMuraSRU9UcQaK03bGkE91TDbjLtk6OEvJnCZl/685uHHZlUMxhbZuHVLgHAOLUvhTaFwmAIqDPU9eQ9/AOkKldQ3rM1BzWQeB8whcei8Mx9LISCDtNnIJPzl+EtbUaiH2qlvRlU+C0rdGSKa9+zVkl7eHStM/F9dsAkvQMAwumtx97x7bVbIzIk0ltswh49W3601FubXvtr48+fPnPv3hgUYEPAkFDGIvkrQVOYVAtkscffzxOPfXUHVCcNfKZ0047rYhv2wWjDEVaJN/znvcMxrF2xfCxRgoGGULaRgjWvLasfu57Zt3R2tX9PJAOGLEx/na5/VnyovzTeYEJ8StT+rUfTmLJHcApZY1SXC2HINl/fSujmxf72RfJGABQi0wPt3URJ0NRcwJQMsQtRcb8bcJlQJbcKaSVO7h1W3WPxZd2eCOUisGskxztdbBqY6KyKUesKEXY/Lq2hED60f62J1u4PFszBzMPvS51nBSldxH+bmmmvk2/OY9BVDbB0MavATxV0LEH2yK5AMWlRj4OUdkEg4uiLJJTN+cB7r777gV77rnn/ME8qY20RgoGGULaRhZWEHCQJj7kNdwGIvJ6o7F/i25v2rO37FGqno0yCZKpMjOP4JAjZpziXdkat/Rrt78fTOJbIiOYHm5IEaRUHVmeAmci91N1cEDONmHtWzge0stTpC9ZPrt7LL60w5sQq6RmzdWyebbFhGgl55vUqSWhIakrxonipsBQSpk6tTD+P0mP1MuVCyUBgto3d3HJlBJqOk4ggKJEZTOPUmvb3//26MOX33TogZvukysQbHoUnSK59dlnnz1Yh9sVwJsLOtUHURw5Fmw8OjHIQSTY+OCKkWqRfDeGnzVyFYqpaRuVENI2grDmtWV83nu3fKGta+yPTFgkgOR2u2y280lCyd2oe6EkSAW8p1S6dDx/gjC2AuRF0+eQHl+lA+CUJN/CmRsYkurhlrYkNiZgjql4+4XNtu1moa0yrwYO6bFdUmQdk9o78MUd3oRxrW06rZH9BMeEzMJG8KcoXaKIpUMys82zk/o4L8bfjmeWa9LoxfozANYkL/bGTJliUwTNIjLpkUCptQV/e/The2469ECJ+BcMaVxyySX1Qw899OkCp7AIgxC/X7A1sva1r33t2dNOO62AQws2EeYhuT0YDLyMjSRtRVkkb7311lmb2SL5bgDjB/GcNoU18gUAawZxzhbdkCASwQjA6wScYnuzaXCmNs3RIb+PG2nlLen5ptW1ihfNn7QT8JU1OIZox478mraEfSSh+SlS4o1jtk/UQI88OLZJuodbakWoknnHzizPUdrcGEgIXbPtwuWKMba1HQdstzOmd3ahFseaJHmEzY/p17ZGrXORYl3zxgl5c+tNE25K7WcVOz+4JEmb1Aqda70NNuTRXgNN4BJC52usHOit4SMC/YYAuUMTDBc8C+CBgo79BgBvHYTjzIa2YxYBCSARFIWiLJITNsfAd95557ZijVwvTIAEkQiGO1a/+k+c+74t/9Le1X06eQTN6im+ambVNUvEmNO36IDfeJtdGwGnyjmiximVLaW4+dwJ8P5NlCpytj5vS/LIYTgpBsAR0JMeOa2S2ZehcuZdrIyQF9bK+fv5+4e2TEZnSxWf2GYRdpg4BX31utPPnJLmpTwmdWTsQlccWbO1bYbgJrH/ZjSv15pV2/y6Nju+Arnl7BE2doTOIqWfuots7ZFWcQURSi1tvX977OEbbjr0oF8O0sdZINhY/ALAXQUdu/zlL395x0GwSG6P4urZngbwq4KOLRjdKMIi+U4A0zfT2JIaKVgnhLSNQKx+9eW15/7r7PM6usb+xUb8W65R8nqyAQmZsEobI7FM2po2S/ZsEqVvvUxCSXTqI7EfEA/3PF1PltRmWbJGSMhLCAoXOm8mAb1BnVpYj5ZXo8bpeeSSs3XVstmfSqG1XMb7Zs/Du7fYCj1x3bMu5kT8QytfbBS0hFsmtWzwrwV5Kp033UQlSwJJkkRKj8SBERsCBzBiRipJMtFUPdJGhMjWs3mUnIAXAPrKoH6YBYKNwCWXXIJDDz30OQD9BU1hs1okjTVyN2zmgIQGeOlrX/vaXWKNFBSBgiyS29x6663bbCaL5HC0RgoGGULaRi5WAjjGBY4YeUwh6dUW9ldjY0u0JEqTPWuYsyodp0QvIK3V2NcJGTNjm38tQUmWJ6TKb9ptiYttBZBqH+C2Id3DrScghL5dMs8mmQkwMSceHiOl1uVJdApRRNhx8lTsu+32uhcbewTNnqfXI82S5JRlkj0VzSdmnO7TZmfhp0H6QSduWZAiaa+XDh5R3tmYTwHbq2sMqX4vNtKErtTStuzvjz/6rVsOPWiQPr4CwSZDkYEkm9siORvFqmzPF3RswSbAlVdeiU9/+tNjBvmwqxEUOGwERoRF8s4779z2ne9859aDeRLD3Bo5aiGkbYRizasv1y54/+xbWzvHPuAaa8MSo0Yx/ybVkNl9MKzqBrN9iS2B07f+Edg8T8ibJWh+0AgC/uQ/01bNJJqegr5qNsvQ7ZmKrSTdw60/PECT1yGRS7yZSJO9PLKWEMIIEd44dTq+tNNueL2/P9HTUpZGNqEjJgmSVXo75kR1M/NJtjUqmq1d46TBtm2urVglKpsfbsJaVUu3B7Bpkhbphg+cUty89fp/zzDw3cI+0ALBhuP3KK7uanNbJIu2Rv6poGMLNg0mYnB7ggHA7wC8uonGGikWyXdhcNXyTWmN/AuA3kGcu8Ozzz47a/HixUUcujAIaRvZWAnwMexF6Ce355zqw+ZXNWlLnR86YgJKoFsHRJ6N0Y4JIBsC4p4m6hN8ax6H2yVPw3RJGMUtTaLsiUW6FUDdGyHFuTxi1kxtS6WjeIfJawfAjNnd3fjC4jca4pT0VUvCQXzronJR/+wpZdbqGBu1DT6ZQ6Kiwfs3ObX0dUzmkE6UBHR/Nlcfx/4VjhKy5vdaIG2PJBBK1ba//P2JR8+9TSL+BcMQxiJ5H4CiGsFvFovkELBGPiLWSEGRGEEWyWFrjdx1113VY4/9//bePMqu8jzzfb59qlQlqUA4hradxHbCEPA1YGyHsJZjlhdukjb3smj6tm963Rjf616eY0AIEWSMXZEskIVthCwP7YTEdDe5TtsOiQPGDAIzmBlJSEITKjQwI6kklUpMkup87/1jf8P77SrNqvOd4fmxjuqcs/fZ+9vnHEBPvc/7vE9kEW0A3g2gJ9O5s0DR1sa8vm2zfP/845/u6TvmR9rOWINPkfRCLA7P9jebWO9SO2USWRF629R20YmSqZ1S1B/ROhg7rNLofqjnEGZmJ8rKPzZF2bVSr1bJtBgbo2pWFXKozHMb1RMHQCz+4Ji3YfqZf4qerpqLz4/Vs0RkKZEqUO+pqoCV72kUa16OWSXcdMx/HLLt+9tsOV4ACFU6667NBEGoRJ6pfmLVTzVK8a6eXry66PGH7/7K5+9q1PeWkHHgGQBPZDr3+wF8aByO+wfIV2V7GPneT0I0LW2RpDWSHAwUbe3P60ZkAaAi9I0ZlSTphZwPH6kZg7rfLrFCVwTh5AsyqdkOSHvZtJCrBo2MivgQXVeK/XTJ3qHEZ1IBZwBIURbpx0qPTI6jhZiM3qz3Cw+dmLMWb++dhM+d9iG8vbcXI9ruCFctC71kFnUlzEJVTA3Ytu6pukTrou9zc28KBHCVMmdxRKlNfWUtZqnYMArAn7MOSYScn8vm42IAA2MMxPiwET/oAUDZ27YKAMNHSKvzIvJZJI+64oorPjQOFsls1sivf/3rj1x77bWbcpybkAqtbpFsZWskaTAUbW3O69s244cXnPBcz+RjZgRTnK/u+LlsKgjED9a2Ugo0X0EaQUxxLLSIc+fx0fUmCBQlC1yipBEdKCIukGS0iPIzy5D0ZLnXeGQMsWVQVtzeNKpXbayqW+VxtX8tGaKtKm9W8LaJE/GlM87ESb/zduy2NqxLh4rEqH1fCSvtkWmgSGVgNlD5qcSeek/1uABdBUzmhisjZV0qVkmja59evHk5Xwp6/7irp/e1VxY9/r/uvvjzjf4fIiFHFGeRXAzgpUxLOBXlEOMjyenIY41cD2B5hvOSI887ATQ6iOSI0gYWyZa1RpLGQ9HWAbyxbfNbP77whL/v6ZvytNY9ST8a0plshVG9ZVKGjcQeqWijhCARfSUyOqbfn0+AArYUcCFmMhVyqZiKQSVJf9pYBw+lvgLmTYkqU1sg9SFiaQupcPPHt27/UvlM6u7GBSeegg+9853Y5aP9gRAaEnvWrAr+8AmQ7rKUGItLi2Is2lIBL9/825QmSUarpX+U9riJs22m/XXV+Blj9AhzJ9icfVKMeQbANQ38qhIyniwDcH+mc78fwIeP1MGuvvrqd1xzzTVMjSSHSw7RthZHLojEswRAoyu/h22RvPfee4/6+Mc//vuNXHSbWSNPRYcN2KZo6xx2ArhWD9X2OiiIIkgIHJkAhGctEEJL3MughZN/DVSfHOAqRKL3j9EaodImo4NQ0rFqovTbGGIt7hjvmvJKzJt62xh9cGEdow+RhpkIeru7cP4JJ+HCPzoFr+8ZUTowDrsul2vVNok9e6piGGeula+r++qZ7/Xzr0OpK+tun2SJemC20rh+GLm3T2oLZrmvjpUp4/4NDERSMVfr6XnllUVPzF148ef39aYT0jL88Ic/HJw6deoDmU5/3BVXXPHRuXPnHqnj5bRG3ktrJDkMduLIz018EI23SJ6JMn3zcPhPKMM0GsV4WSMfxZEb43AwTEHs9OkIKNo6hDe2bd5z44Un3tlz1JTbgfiXfz8OoBpDYQB0qfsjzmZnnLADEEWD+9O4uWRGB4v4GWvhoa54RZumUY8BvcIx7uvUx+qwuYCB2AJml6h9ZB8/9xY+YlEYgw8c9w78nye/H2/s3lMRX87OiRgi4mP704pa0vUWK3CqWmcRhZq2SdYBFdcvQewBWvQhVurcPDadVhk+bZ8Q6aWys0PGWBIn4IxZAcg/j/f3kpAGswblb/pzcCQtkqcDOD7DNawArZGkyXAWySVQGdIN4I9x+H1t5wJ4RwPXTGtki0PR1kkIhuuCa3wFyNvwwigASeVRzSjHYTwGCgFqolIhx8zyECXEos0xWDIrlshYaVPhI1qchR4ufaL9WSYNMGJgdqdVs/RmxxBq8UoKGJz5rt/F5Wd9BHUXLFJuiXbEpE8NJslBEXUN1XTIeGUqoEXZGfVwbV8Fhag0SCUcy9cZNz5AKsLP3/eDtPVMNqg/S+lW6+1Z/+qTT/zNvYz4J+3HagBPZjr3EUmRdNbIj2S6hkeQL9CFkH3xKwAbGnnCu+666xN//ud/fkj2UmeNfF8j19tm1siOhKKtg3hj+2a56T//0Yreo4/5b14gQWIlJmR5+Afie9BEDc2OksO4bdDiRQmwGPYR7wdrpt8erIGVXjK1Jl21G1Ulk7HEWqyuiZvhZuo2irwxxFnwEFZu7zl6Cv7raR8MNtFRuq8i3CDiEiOtszYiWDxj5QuVmWlKyImqmLnVFT6RUu+ZBJggnf+mb8n7asr3A+X8tbECSIqe3pFNi564595LPvdo7u8rIUeaBQsWDE6dOjXX+IrjZsyY8adHwCKZ0xq59Nprr21kNYOMLyfg8C1+zUKOWYwfB/CuQ3xtu1gjSQOhaOsw3hqxr937wub53UUx7HvZfER8OVgbQUD5GW4AVOCIJF8acY+NElm6TUzng3jFY3T1qWxAU312upomqdBKqnPhgEhOPIZdUlDA7DIwtlK50+uqvk4EfzDlbfjqRz6Kt03sxYi1aRBIpUfN2z7DcOtwdZXERyW1YqHQ7WO1cFMBJWKChRJOLIfYf22ZVNbJ2GfnxZ3qY3OfTKy2RaukgVkLYfgIaWtWowzTyMGRsEjmskYuAqts7UYfGj+c+DUc+Z42XHjhhbjtttsWo3Usko22Rt6D9hNt7wcwMfciGglFW4dhd2zBC1PPfg6TjpoBVAdmlwJMV42M2JAU6Z+ziPH9hdZM7p7WU9q+lwolUeIwVs30SACRMQRWeFjtjZPRwi5eGCwMzFvVY4X0jvQY1uKY3l58+tTTcOykyRhJ0h9j5c9CVbt0oqPEWW3pP0gHZgeh58NgEPvc1HVYxLlt1b42X/3TlTYvvmPCpDafAjolUg1dQK2nd2jTosf/7jeXMuKftDVLkS9F8gQApxzqi5vAGrkk07lJm/DJT35y7S233DJewuo2tIBFMoc18uyzzx5Pa+QwGiuWPVNQxi90DBRtHcgb2zbt+sf/632/6J08ZYWFxGwKRPHgKzdxdltqnRTE+Wt+IHcZQqKPpYNKHCqkpNzfJmsbbXbUVTWk4mp/aDFmypXW3tBiL1xsvG8tju7txWfP+BA++K53ldH+uhdN2yKTHrX4fDmU2u+fhpSEilnoK1TPIQq2eCsPbNXjat0ubAtvU9mrF6uousoWOwdNqLSVn6ABlgnw/TzfSkIaw4IFC0amTp2aq9L2XhxeX1sua+Se/v7+pddee22GUxNywLSKRTKHNXLzOB5/FcoKKhlnKNo6lyELXBkj90v0zLVQ/YGghti/BiXGvIgzkEqFToKlUg/QDumRoqtJQFLKqvS4SSLlxuhHq1bd9HFVKVEKA4sCtTdl9OtQVth6u7pw3gkn4GPveS/eGqmHXrRSWAF+2LZV67cSZZQIYGFjmxyiyKqLj+L3VbCKCBMlCpVws5XKnj+qjvP3wq/uhBr8esPn5ISaCyIpQpWtvNV6el7dtPjJH9136RdSFU1Ie7IUwMM5Tjxjxoyz5s6de6h9MCchjzXyUdAaSZqcCy64oFUskjmskeMp2kiDoGjrUN7Ytqn+0//yvz3a03fM7QCgZ6YVlf4u44SUj7YvQoVptBsxvKbSb2YqlbF0+96PFXM6qnZIt+MoS+S+BZ6PuO96s2rVBCZ0deHPjj8eF532Aby+Z08l2KMSFhKWEnvuRFW8vPKxsHHIta6wBY1aqZQhirSkoqfeDCumDDhR/XKi3hu9Rgnm1ti/ZpD2srlP9xEx5ufj/sUjpDl4GsB9mc59SIO2r7rqqq5rrrnmjExrXoryt+mkvTgR7TecuKktkrmskQ899BArYW0ARVtnM1QXuQLWBotk3QWSlF8MSSplOrzRGC28omiKqZER3bMWxY2ezTaW8BorbOQAbZF6DVJdY9nfVrcGtV02nKcwwBnvfAf+3w98AK/v2Z1Uv4CyauUHaFst5ZxIqoe0R3GuTC/Gyl11/1nSDactj6LFXrlXXd33893qVQtluGR/Pe7YYRh6aov0z/nqW6134sDmJYv677/4cw386hGSjwULFmDq1KnLMQ6BCAfAoVok/wRAjn62V/v7+38ze/bsDKcm40xf7gWMA81ukWw3a2ROjgdwVO5FNBKKtg7mzW2b8M9/eerzE/qOmav7xowIispMNN+rVgaSxEHaQLT7+YpcKrZSyRDPouLufS+Y68XyzyUFv2qQiX9ulMXS38deBJ73gxrIiEGxxwIGeP+/Ow5X/ulHULdeoKWhIf78vsdMILBW19+0wJPkSr3giqIVqhLmEyYR7ZIqzh/q2F7UefEYZK4KJbF+n/BpFaNn7SkBV+vpeWvLkidve+CSz61s8NePkNwsRaZAkkO0SJ6GMn2y0SwFsCzDeUn7sRnAq+N5gowWyeMOcF9aI8khQ9HW4by5bdMb//yp0+b39B29U0Rcr1MMIEGlmlOY2PM2aq4ZyrRJAxvzP5K4e4T+t4Cv3PnjQW/aS2VNvLhDRdmp7RhLsMWXeAuj2W1wfN8UXHrmn0DEhNj85B8dQoI0zbGssvllihJUNg0PESjh53v+JDo8AVixZfIkqsEnNvS2WSUay2PHDrkgMiuuUZ0eWbVFAhgA8M0MXz1CcjMA4IlM5z4oi+RVV13VNWfOnDMyrXUpgI2Zzk3IoZDDIvmhc889d59Jhm1sjVwJ4PVGXlenQtFGAGCbAF8E4ARF+aT+q32h1EUBSXrUCmVFFOg6jhdyUGJNh4zspf+sapnUIix5bTW4pMKYr3PBHO7Cursn4Izjfh/vOroPI9YbH33/GVL7YmJLdPZFVRkL8ikRYyqkxB8b6nh+ixLGcTyArvapcJJR9xHe7TpK+yRgyhHaYlytTX8q5f3unt6hwSWLb7r/ks/vyP0FJKTROIvkgwBeynD6g7VI/gmAP82wzlf7+/sfozWStBg5LJIXYv+2x3Nx6MO4D4VGWSNzRf53HBRtBG9u27TnlotOv3tC39ErKq5IAAj2PX+/SPZJrXpj6yefGlneT1vVJFSXqq8pz6eOPmrWmz5z3CeeC0F4jT66AKZMUeypFaGXrKxqxeqXtiZG66Kyc1Yqcj5sJNTbRIkwxEHmURO6ClqwUsbUR90LKOozSAd4V44Tzu2EmonVNVF1NrfPImPMDePzrSKkJViNTNW2GTNmnD537twpB7j7ae7WaB4F8FiG85Jx5uabbz72oosu+r3c6xgPMlkkz8H+Bdm/B62R5DCgaCMlgm11wRd93qDu4zJJz1m5u1HqzArKHrikAharVTH6IvbM6UpbEkiibJRAkHjupKo7S8o+u1jFK9cQRg1AUIiNtSUnpuJjdRJ3DaPnoEVxFRMeYw9eGAHgm8202Bujv05X6YLIU+eAFn3iUid1T5t6Y+rumHW3b7keE0YAQNkh067CcmZbMaH31c1LFt14/yUMHyEdzYvIa5Hcb7UtpzWyv7//kdmzZ2/KcW5CDpOGWyQXLlz44b1ZJBcuXIiPf/zjH0YDh0F3QmrksmXLPnL66af35F5Ho6BoIwCAt7Zvll//P2es6J58zD/5OWvWVdVCiIgXcU7YATKqZ02CGEoFnBcufoh0jPmvWBiT+W1OaFWbtPxWE/eL1S8kz/nDJK/TD0ysoIVMR7WckABZOU+soJlYRQu2RouQKGljpL9J6nP6pgZpq+P7/jcdiOLFpQ51iUZUf4ww6hxIetlKaj0TsWXJogcfvPTzjPgnHY2zSC5GHovkKTiwvrbTcHgDuQ+V9WAACTmyvAJgZ4PO1WwWyY8DeGcD19LOqZEdC0Ub0QwXkGt0xSfUaSqVL58eKX6bCiNJdVgM8vDHirZDG4RManX0lT7E7e5ZLwCNxGqZr7JplRYkioyWSNVKX1zPGJZIlKEisZpVjkWwKtJf2yP9c1YAsfH9iMfX1TVtZ0SwN3rBpouO4XzaRunOmawnqa6pvkQBIOUjK1htjLki95eNkCYhp0XyA3Pnzu3ez26nAfhghuUtA7A8w3lJ+/IqgIZUfjJZJPcV/X8hgN9v4FoaaY1kT1uDoGgjgbe2b8Yd//XDG7r7pnytrLKlAg3iKm/u+Zp73ip1YSSKIj+s21v/rOhxAtFaKVqwCZL+t/AYccyAqYizQqvEIOyi1EtiOKSSnehe6wWRr2SFSprEYdm6P82POBDYcGqf/qjtjEm/G3xFL433jxXIeK1RAPrqoxdvpTVSrE65RLBSVq4WPpBEYFAYg6Kn563Bp56847eXfv6F3N83QpqBBQsWvDh16tQ7Mp3+jwF8dG8br7rqKsyZM+cDAPYn7I44/f3999IaSVqcprBILly4EOeee27bWiPPOuus7U888URb2zCbBYo2kvDWtlffvPuzf/yTCZOnvFRW0aKIKCoiquyf8hbKakiIHsqtK1rl/SIRZqk9UPee+Rd6sRWegOphi08l8+MQ7ouqzMWd9WvD+UMxzwu3sSpw5RPWR/GHqpo7mx4ZEISrj/pHuN4koh9jrUGfW1f1rLNiGrdOCwsDkbLKZsM7oANIgohbDbDKRkiFNQDWZjjv/iySpyCPNXIlaI1sd85AYys/OVgMoNG/eLgQoy2SBzN8+0jQSdbIKXATqjoBijYyFtsguBKAqvTESpYXHuUstzRQJAR+hJ8qeMSFdiQ9awBg0lh7uON4kVIeWwutWAWMxynPWSCtqIX1QpLHsWqnzJdSidjX/yj7ZynCbAj9sOF+tWI3dv9aPHIUeKHyqHrj/Ew4HYKSHEtbMUXgOw29MdJnRVoYGAPUJkwYHHxq0Q8fnvqFSpcfIR3PagBP5jjxfiySuaL+HwFTI0mLc8EFF7x+2223rWzwaccSaBdi/+MAjiSdlBp5KoBJuRfRKCjayCje2rZpz31f+JO7uicf9Yg2BMJX2xDtkiJOuClR4fHhJVVx5Pu8Cl1Kcs9bdQxvkyxECy0VguJ+Ar4SF8Vj6KFTfXm6jw3qtamUSlMjRYnMYJGsjAXwJTFvXwwhIongQ7KCZHzAGMmSfgZcXbz1EcEfKe55P0LABVeW1TQZO3zEfQrLDfAPub9fhDQbCxYsGJw6deoDmU4/pkUyszVy2ezZs9mjQo40OwHsbvA57wfwciNPuHDhwpPOPfdcf7/h1kiUv3ChXbENoWgje2ObEblSi4sCUWhJEFAxZj/aGksZYdQ+QdKpSH5AwtDuJJLfh5z4IJKQpFGS9tgJCltNtNRWypQY9Z/EmygRFvvZQmUQOngkTZOMVbBKH5tUxVkcyC1uEJsekF0KwjS4BFCCDV7MRYlpfeQ/oARanMeG8A4b1Cb0vDS4bMl3H5r6xdzfK0KalacALM1w3r1ZJHNZIxeBVTYyPqwFsK3B57wNZRJqIzkXMSmy0dbIlWefffazDz30UIMvmTQCijYyJru2bZIHvviR5d2Tj/7bukCFh0hF5ZRiqXCBHKZaFXPCpHC9b0EwKYdkEGqiw0tUmEnF6hgESVWZqf66GMMRj11IpUqn1hMsiZX+MovKJSOmNurqorZS+l44vd26HjiIDjVJxZp6d4LVMlpO/Tqi9bKOOGBb1xfLR76PDeia0DMyuHTJXQ9f+oVcYQuEtAJLAWSpts2YMeOP5s6dW306pzVycY73gTSUyQAm5F7EeJPJInkhoh1S328E9wDY0uDrBRo/XqEjoWgj+2JnXWQ+IDtDsEhlRlh4TuBqOmnFTNR2X1ELc9+UMAsGPnfkanCIqMqdD0gppNKvZiqvTY5RYrx4FB2IUrEvqh4yiASRpnvbwrBr/zqVOBnTKGPKY5xLF68nqc6pwJdwrGoAirs2Kyp9ErGHDaraFhStAALzrMDMyv1lIqSZWbBgwci0adOeynT6UwGc7h9ktEbu6e/vXzp79uxMbwNpICcCOC73IhrE/WisRbJv4cKFJ4sIzj333A+isdbIuwFsb+D5PC8A2JXhvEeDQSSEALu2b8Kjf/XR52qTjv6WjvIXSEhuTMIbdViHt1BKFG8CVTlSNkgt2Hx1Lg2uT8cHmEQ4BtWUCL0gKFU/HpTIiQPDy/19kAighVLsG9MJl96i6IVW2X/mRR5U6qSK+ZeK/VFS4QZACTVVxfMjAfxx3Ar9T4TPIKZEmjCPzaCY0PPa1mVLfvbI1C88n/v7REgLsAp5LJJnIu1rey9Ke2SjeRTA4xnOS8h4ksMi+REAfwng3zXwnJ1ojWQQCSGe3ds3vbn44rP/vnvS0Su9MIpz0WJ0PcTHYbg+NCdMYnJk7MfywgtIUxyjMPRoy2Tc3+MFWjq/zQelOLtmWFXc5tcTRShCkEisKMbeNMCGVMgwRBtRmHnh5AdjGyWmYjhL+Wc9CK/Y7+bvVyto/vh1uPlsuocuSbkswjUalxRpAYgxMDDPAvhm7u8RIS3CkwB+neG8XTNmzDhjzpw5/nGugdpLUQpXQtqGTBbJTwD4DIBjG3jOXNZI0iAo2siBMCTAHN+zFuyQqq/N2xx9BS4mNiL2vlkdQgIAFeHmbyrUJHE3qv43f79QVsyYGBnTJION0q2nQDrzzQeexEqWEluhUpb2tEV3pe9Xi5VDuGTJ0CdXEW+6Xy68A0kVLlorkQgzgZUy4qUOlx6p30bRaZHlO1x0T9i0ZdlTcx+Z+kULQsh+mT9/PqZNm7YcjU+4A4BTN2/efOpnPvMZzJkz5yw0NrwAAIb7+/sfpTWSjCMDAN7IdO770ViL5B8C+DMAv9PAc+ayRpIGQdFG9svu7Zv3LJ76sTsw6ag76k6xFCHYQ8JjA5tWzHQvF/zEsGit1DZHQI8I0JbItNqW9Lkp5RN6u5JqW4qpCEqDOOMspkNqO2Pcps/px1r79EYbLIw6ul9XzErxVQ+9al6g2SDYku1AIti8SvQhJDHgBYAUafiI8e+yQR1YaYCf5f7+ENJiLEGeQJIzUcb/T0ae1MjHwNTITuKdaLCt7JOf/OTOW265Jdf13gZgY66TN4BVHWiN7Dgo2sgBISJDr+/aNTuGZJTFmyCCghCziX1SWxG9DVJ8aImqiBXudT7KP1gf3R9VwearZSYINEmFDmJP2ahrAVSwSdg5SW0MaY4+5VFVvyBAEiCyl0qcJK/3+tWZRIOm1SMFEAZ2h2qcF5TqvS6tkqpiqeI0RcpnaxN6Nm5fvvQbj17GiH9CDpIB5Bm03XXDDTe876abbvooVChJA1mK9v5LLUl55+EfonW44IILXr/99tsbbZFsJLmtkY8B2JHhvO9GB6SgeijayAExMrRF1s04b0Vt8tF/54Mw9thYZYr9a0CM6o+Vs5AiiRgAEiP5/cvS0A2vhmKFzMbZcKqTq/DHQWqJLERQc2KwkGi3NFpE+rRH6NRIpFUy0dskCKm6TfdDuAx/nlKghSqeFmvKMKkHZOvKXJhXp3oCR1xlrrwWV2VTVksBUOvueWvrsqd++fhlX3ok9/eGkFbDWSQfBzCU4fQfAPBlAL/f4PO+OmvWLFojSbtzHxo8aLuBLERnWiO7AfTkXkSjoGgjB8yeoc07V07/s1m1SUe/rqeT6eHYPoDDiB0Vkx8DR8rj6QpdtDhG22VhywpcGk6CpC8uWi3dhjFILJih9y2ODfAFMN/bZiVaEWNvW2qD1EOugxUysUPq+WzRMqmrcvDnQ9wHat9Q4XMBJT6h0sL1tLmrq+RhQoCNAtyQ+/tCSAvzFPJYJP8DgP+Y4bzLASzLcF5CGsmtaM9q8qqPfexjA7RGtj8UbeRg2WpEZtScoNJz2+LMNhvES92WYiMO3FaWRmVP9JWqUSEm0NUzxKqZDz1BZUJZWI+2PiKcr4rvgxOj564pUaZSJI2qwsUxAHG7RaUvDrEfzqdY6r43P7gbUhGIbplWYmplXQnK8rmy1hgpXPhIz9C2ZUtvfHLalxnxT8ih8wKAJ3IvolHMmjXr3pkzZ27IvQ7S9uQI+Amcf/757WqRvAfA5tyLIOMPRRs5KPZs37Rr1ZX/4Rdm0lGrIYKa60czIRgk9nrVktAP3yNWGTaNUshoEaczEINAC3unA7hDyUoEhU2DUPytgJr9lgi+eANUhUwEYmOPHMLWNObfuoTIeF2ppdJ6FajCSnx1rQ7VyxYqduFtCaEkerSA1ecQ40RkTI1025YD8r3c3xNCWhlnkVwE4KXca2kAG8AqW0dx880346KLLjq6wafdAmBb7mtHe1okO9Ua2XFQtJFDYWshcmUpbkqTXhy2LaGXCxDUUJnBFuLxEcTMKHujUzx6+HZ1PEAhiIJKgOqIgRBwEqyQ5Y5pBS8eOk2LLDdoa6evuFmxqcgCovBSFtEkSRJRyAVrJOI2H8gSbZnpTLu6lCKvriyW4d1yg7RFDIqenk3blz/1oycu/6t67i8IIW3AagCLci+iASwDRVuncSyAo3IvIhPtZpFc9bGPfWzgwQcfzL2OYQAjOU68bNmyd59+eo7spsZD0UYOmj3bN9fXXPV/PDRh8lH/C4ATKrHaJiIw1qLwYSQArNHhIqNTJUMsh/hwEVGWRygbpp54Fo+prZd6BptfXyrcVOKlr3hZJbaSPrXY06YLezZct6hkSG+LLIVWFGkSKop+EHl6bJdm6Y7phVtdgBER1K11dsxYeTOqRmgBmAkTsH3F8oefuPwrjPgn5Agwf/78F6ZNm3Zn7nWMN7NmzXp05syZr+ZeByGNoA0tks1ijVwJ4PVM5343OiSMhKKNHBqCIWvlWrgEyRGnXGqqT83PHPNDuL3ZUP/pK2la4AUFFBInVZVNotiqznmLx0vWqc4Xq3T6ZaJvol4juppW3nxvWUiGRFyrFnv+WkQdqzyuDSEnadCJCxtBHJxdB0Jlz/fOlW+zSa7XrWC9EczM/bUgpM1YBWBt7kWMIysBPJp7EYQ0mHaySNIa2UFQtJFDYs/QZgxc/R83YvJR3wmiw5eDlJ0wDMsWhDCSwm2PM9lUoIikFTYt2FIx56L+9euTHjYbRF0cAI70OW2dlJjfHwJF4ERW6L9LK4U2qcap9EmkFbYYLiIQMcGGqfeJ899i9bC0apoQciL+PXMDtI2Ucf+mu2fX9hXLb3t82pefzv29IKTNaHeLJAdqk06kXSySzWKNJA2Coo0cMiNDm1/b+PX/NN9MPOp1L3pCdL3L0Pdx/gW8mErFVug5Q4z219U0/zhW5uJPkTI/sYAOFvFiDwj1M/U4JldGEZnYIiFKl0lqcVTiy4oP/4ivq4q0ONMtVtRCpD8kHl/iQG8jak6dIPa3BRHprZHQV7TOCmbl/j4Q0m7Mnz9/y7Rp036bex3jxaxZs5bNnDlzT+51kIZzIoDjGnzOpwC8kvvCgWCRbIeE5WaxRpIGQdFGDhPZYsR+ydsfvdiK4k2PApD0vkga4Y84BDtWx9xAbUGo0BXquEF4qRCTKOyq1TpnjUQluARIK2aIdkVfBatLNHdGoRVeGJIeIUrI6aTM8MOLMJ+caVF3PW51EezR/XFujb7qV24onAgspa6ZMGHH0NPLb1p8+V/RHkHI+LAYwNLcixgHVrbpdZH904cO6QHaB/cBGMy9iMOE1siSUwFMyr2IRkDRRg6LkaEte56b+cm7zcRyBAAAFdEPiBuy7S2FIagEaXS/F25BTKnwED27TVfa0upZfA0kVutQOQacMPTHgFSqZFA/nSjToSPl9VgV7++rX168xQRJ3ToXK3mIsf8S7ZIjArggTvi5bHVBEoxiXcw/YGCccLMwTwnw3dzfA0LamKeQZ9D2eHMfgLatIhKyH+5Da4/0aDZr5HPIF0QyBUAt9xvQCCjayJFgCyBfjELJWxKViIIk6Y0xPVKHh8RKHBDDPPR2P1ogFWLhlNAJI0HkmWrFLz22SJmcL/E0QYAl1kQnsspdJP6pLI5xXyRWSPHBI8FuaUO1zsClZZq4fj9E24YqXZSo3u5ZTOh+aejp5d9ZMv0ruT9/QtqW+fPnj0ybNu2p3Os4wuyZNWvW0pkzZ+ZeByFZOP/88wduv/321bnXcRg0lTXyrLPOwqJFi7JE/ncSFG3ksKkPbZGXZv2XZbVJR/2dj6tHCAIBfA+Z7xerCq4QWKICSmJ1LR2KDcTtenZbsFYGsajFHRLLZDrzzcX+Bx0Zh4THMJBYXQOUVTERZVrYqUHcSO2OQdi5jSYkSaq5blZZKCWmcOpR4MWECdi24unHl1zxlV/n/vwJ6QBWob2shAwgIaS1LZK0RnYgFG3kSDFsRL5vbbQlAnB9aTH8A6pC5YVK2s+G9PX+GDoR0sXt64pZqM4pweYlYZA6o1Iq41oTsabFm1hAjBJh5Uy3cCmI8fyi1q2ra3Hwdjyuj+q3LrkyGb7txaIbAaBtlkoIrjXA5bk/dEI6hCcBtNMvSJah7GkjnckJKAdsN5JXALyW+8IrtKpFstmskaRBULSRI8LIji14/pr/e11t0lHfAJCGjKg5YyG6X3SPWrREeoFXiHWvt05wlefxoqvwyZO6d01X19zjxE6JMUYEwIstE62OSkDZyuOoEdPKmnJpJpbJ6gBtH1jij2tFUIdRz5f9bL6yFj2bpfS0AhQTJuwaWrnijsXTL34u9+dOSCcwf/58TJs2bTmAdkhaHHYDtXOvg+QjRxBJ04m2FrZINpU1sgn4CICjci+iEVC0kSNGfcfgm6/M+dQ/dE3se0VXxETKYdRG0moXtIhDpecMMf3Rewm90CqC2EJ4nRd5ulJXKGEYBFwSYIJERKYiK7U8xhCSmOYY57Sp2W7q5tMlxYWKjPigEfU6X7Hz6ZF1AeouiETC7DgtCg0g5hmwykZIo1mC9ggkeQwcqE2IpxUtkrRGdigUbeSIIsBgHZgBxN61mtiksmVUz5vvD/NCJiZJSiLWQsVMxY1EK2QMK9E9cACgQ0v0KvXxyyXYylw2v6tOvbSVoBE9wy2trNlgcXTJkBLj+8sVlL1rfkZcHYIREexBKd6s2HCMaMM0MN0Ttu5YsfwHi6+42Ob+rAnpMAbQHoO2lwLYkHsRhDQJrWaRbGZr5KMAduVeRDtD0UaOKPWhLXte/dan7+ya2PcYlK0wDNIWP1QbqgqmRVn6XJjPpjq7jAgKmwaPlPigE0lskHDn0vPhdMpkuSlG8gc7pBKT0fKIMCbAIlbldHZlEHKIKZM27Fduq9so1urihZoLIRFt1fRXVl5JATxdh7kx9+dMSKcxf/58TJ8+/XEAQ7nXchi8SmskIZEWtEjSGtnBULSR8WDQQK7UKZJFRUgZgRqsnfa36YAQF+MBVF/jni0S2yQQJ615JLFlavR8N+tCQ7TA0lW1KN5sGKLtz+V736yNtkjjLJN1C4h7vh62K4EYjm1CaEnVPmndyk3XhBd2rFz+9WVXXpL78yWkU1kCoCl/xX2ALEcZQkI6mzPQ+GHErwHYnfvC90IrWSRpjexgKNrIEWdkaIu8cN1nltUm9t1Y+H6wkN7obzbE8fsKXDFK3Ems0rnnvJACoMSdpJU0dT8tqMVqmE4MKR+X9khrbXxeV9ughVZpZazrypuO+ffCzIWLeAEIuIHZSeVOVe2AMBuuDm2lBExX98jONSt/89SVUx/O/fkS0sE8jxa2SM6aNevemTNn0hpJGs5f/MVfrL3llluadY5Xq1gkm9kamZPjwSASQg4dIxg2It+zwOtVS2QMG7Ex8VFZH72q8tWzOJhbEwVb0u+mQ03cflUrJML5YqUtCCjrLYoSRFM6M80HjOiAEoT9fLUuBJhYG7dLFG+QGFxSV8fQiZQxvRIQYEMBzMz9uRLSycybNw/Tp09/EsDLuddyCGwEq2yEjKKFLJK0RnY4FG1kXBjZsQUvf+ezG7omTp6rBVSojDnhphMfoyVS0r60oLm82LJKpMVZaHE3JdJUwEniOVSTBrz48vPXtL3SqnTL0KMXKodKDqqKW91ZJX3KpK6q6dAVK4I9Lsbfr63wlTi1RlPreX3HqpU/W/zXl2zM/bkSQrAKrVltWwaKNkL2RitYJJvdGvkCgLdyL6Kd6cq9ANK+jOzY8sbL3/3cjb83/cZPyRs7Twnx/wBSq2K0NAJplcyoPeNwbiTCTCTdH8qOKEmfWzpawAsoL9hgbRpG4hIe/Tw1P0ct6r6YFolwPgnVsbjUil1Soh1S7++FXeGSJP0VFWXS28zcnychBJg3b97zAO66/vrrL8i9loNh9uzZj82cOfPV3OsgpEm5D2UFvdFDxw+U1S1gjXwRLZweuXr16t855ZRTPgPgGJR/XdsfNQCbTz755P+xdu3a4YGBgUtPPPHEY9VrewDcedJJJz3y7LPPhhmf69atO/b444//DEpLp/8LbC+Af/rDP/zDFSg7ZMaEoo2MN4OAzChE/s1/i80YwsuMChBBqLBpEWeVGtK9YmG/UWKuPG7oj1NltqTyZZX4Mu7oPuJffBiKddU1PQYAMRkyqci586p9wiw3uOqg7pWrhJP4XjszoWfz8JqVc5bPmLrXf4kJIQ1nJcoRACflXsgBsgrAI7kXQfJz8803H3vRRRf9Xu51NBvnn3/+wB133LHmE5/4xOm517IXaI3cB8uWLTv6tNNOw4oVKw7nMG8HcBmAdx/Ea9Zu2rTpZytWrDj2xBNPnAHgdyvbPwzgUwC2qOfOAfA1AG+r7LsS5X+r9/r3PdojybgysmOw/tL1X3i4NrHvLh8OonvQ/E0P3U5nsuk4/1RwSRB1ervfXSo3xMqaFYh1c9msdYKt7p4vK27lLT2Gn6tW9qlFq2Q8fayepYEkopYuwTo5IjFZUlftYqiJgQgeF5h/yv05EkISWs0i+Tg4UJvk400AW3Mv4gD4DZrXInkPmtsamZtTUVa2mo2zMTqp9S8BHH0oB6NoI41gq0D+Ogg0xBlrPjFSz3ADKtW4UQLKH1bcXDYVYJJEQ8IdC1HQVQMl3SaxiNUyVXkrg0lQijtBWIvUY5XOWyfL19t4Htef5q/Zh5gIyrlsZXceQl9eSKP019U14YWda1Z+++kZl+b+/Aghinnz5m2ZPn36Q7nXcaDMnj17aX9//57DPxIhh0Qzx/1rvEWy2Vh9zjnnNLs1koxN78DAwIdOPPHEGgCsW7du4vHHH/9hlNbKKu8F0L2vg1G0kXFnZMcgXrzhS8/VJvXd6HvTykRIm4SNhFltLn4/LaXF+P84QkDNdlNhHtHqGCtmRgSmbmGCAFThJxWLZGKVhOpHU4mS/jzWKzNrw+lErdG64dlBD7p+tWCrFBNSJ72FUgQouifs2vnMql8+/dXLWuYvhoR0GIvRGsEeqwAszb0IQpqd8847b+2dd965Jvc6xuAeAJtyL6Lded/73jdgjHmPUaxZs+bvkf7C4bMnn3xyj9rl5B07dmzu7u7eV7vZXwKY4u6fD6BvL/u9B/tpW6NoIw1hZMfg8Is3fPmb3RP73vRVsTjsWlS5K+0Li6LKCTaDdA6btzOGfW050NsqIVixZYZ5bnr+m476t7a0MLpbCBtxYs+LOusncnsB5+4bt91Yd18lSY64MBILxGAVH4YCE7YJ8LzAzMv9uRFC9spiAA/kXsQBcB9aeyA4ObL0oTltZM1CM1ok7wGwLfciDoBHAezIvYhMTMHY1TOgFGp+jtxHAUw81JNQtJFGMmgFX9WDqiGxYhZTJSXaBENFzUkZUZW1sXreRFXytOXSF+0k9s0VAhQCFzhiQ5VNDWWDH8omY/S3ieuJs0qw+aqdCUO602RII3Hf0O/mr0IE1gKmq3vHjjWrblzx1akbc39ghJCxmTdv3sj06dOX5l7HfhiZPXv2sv7+/tzrIM3DiQCOy72IJmYRmku0rT7nnHMG7r///tzraHb2JZoawWlIfxmyAzFFsndgYOB4EcHxxx9/AcqkyEOCoo00jJEdg2+9tOArvygmHfVMdVuoMAlQ2NjzZly/G4BgaYw/XT+cr6whznwrRFCzEo5VWFveRFCztnze2nC/7FOzUZDVbRlWYgWoW2WBjNW3sqKmUiqVaLNBDKpqnHtsxFsmy2OE4d7lUVAXs0xgvpP78yKE7JdVaG6L5GNgaiTJz060Rk8bUFbQX8q9CAWtkQfGqTiMCtY48CuU33vPnwH4zwAmV/Z57WAOStFGGs2rBvgSXE8bVNXNBNkCQFfKfF+aLQVXzdZRiI3WRrc/oJIn1YRqASAmmQw3Ci+8UgHl+9PK14XB2j6BUtkqxSLE+/vqnlikFs96ua9R666j1IRhfEF39+Ydz6z68cqrLsv9ORFC9s/jAO7IvYh9sAxljDQhOXkWrZEeifPOOw933nnnnQCGc6/F0SrWSJLya6Si7ZMA/nek1bjbkYq2s7Ef4UnRRhrKyNAWefF7Fy/rmtj3C8BZFRGFTWUqdRBPPqTEOEujr8IJ4AJGBLV6HYUV1HylLVTiYv9aYXV1qzIcO0lvdOMAKqMDgk3SrS/aKMsqHOrupz6HGkeg57Ah9LqVAq/W1Y2da1Y/svpr0xjxT0gLMG/ePEyfPn05gGZMZhyePXv2o7RGEnLQNEuKJK2RrcvrKH9pNuIen4Sy0uZDSJ4HsFZtPyAo2kgOttcF14Yh0qLskE6wmYowqlldWSurdDVvbxSgpuyUxmoRWD4ubDx+HC/gQ02sszSWvW2l/dH1pLmeNV8l07fqGIJk3lplfEAIKXEpkV6Q+rh/iGBEZGNN8De5PxxCyEHRrIEknM1GxmIygAm5F9HkNItFstWskTuwj8HQbc7RSHvqegH8FGkwyxRE3fVTlNXcg9JhFG2k4Yzs2IKXv3/J+trEvutVuxqggkO8+CoqVsIRgxDBDyAKPd3fpgZ2+562muthM7rPTQWXlNUylAJNzWELwiuOuy5XKoI64nBtb6MUlZcSRBlCImRpl0R4UFYOrQC1rl2vrV3zq+VXT1ue+/MhhBwUa9Gcg7aXAVifexGk6WAQyX5oIotkS1kjzzzzzO2LFi06qB6tI8i7kfeXEdUgkh6M7mvTPIry/xsH1etJ0UayMLJjcOeLP7j0e8XEvjd971lhXQiJq4oVvioGJELOiBdlMXSkcM8FW6SFCx4pb0ZGD/SGe158H1sctBaSIUOipFXWSFeJEx1EIsrqqG2TOoXSz4cLz6ueOSsbTd2yykZIi+Esko8DGMq9FsWm2bNnP0JrJCGHTG6LJK2RB0du0VZl5ZQpU4bXrFmzBKOrj2+ecMIJTxljsH79equefw84XJs0MZtqIl8uBChsGesfeteQVttCHxhidcqMETRijc9YFRTwc9qQxP/7IBET00bSmWuihFsIIdGDt+2o0QBxW1Kg001swQYZbJx+p67ubcPPPjN/+Tcub5nfqBFCEpaguWahLUdzp1qSzmIJgFdyL+IgyW2RbDVrJFGcdNJJO4aHh9HV1VUNJAH2nho5CRyuTZqVkR2Du5/70WV31HonPw4n2MJctiDKSqKQ08OybaiaFX7wtbc6hjRIJdjc8Y2qyvkRAjGmH0GEodK/poWY9Ye3osRZPLefwWbDiAIEwWjV8DZXdVsJkR/n/jwIIYfM82gii+Ts2bN/09/fT2skIYdIE1gkW8oaSfbKWALN97MdNF2H8iJCjiBbCshXrch9PiVSjZt2xPRHP4RaV9B8ZU2AIM5835gRfZQSI4AYE8JI/KtjiIjTX+F5V71T89iMuPNKfLVBKdL8emywTEJZOssT+h4309X9yutrV397ef+03J8DIeQQmTdvHgA8ef31178M4HczL2cjgKWZ19CyXHzxxT+++OKL2/aXaJ/+9Kev//SnP3197nW0CDcBeAhlBcQe5rEOlALAm+ecc87yVrRGnnnmmWfmXsMR5jaUv5TrQtmn9hTGDlu5FeV/e7tQfl+2AcBJJ520aWBg4DsnnnjisSi/Q5NPOOGEB9avX++PsQDA2922SdiPzZ6ijWRlZMegbPxv059675e++w/2jdc+a8SigIGFF17R0phOWIuhID6JsZAonny/mw84CfPTvLhzlbkiGYYdjyWqyqdnuFmodXjbY0XswR3Pqv302q1PyKx1Y+jZ1U8s7p/2q9yfAyHksHkKwN8AOB75Bgn3oBz4/XjuN4OQVue8887binGcL6f/nlHlvvvuy335pORWdws888wzY+33b+4GABgYGNDbFugH69at0w+/px9s2LBhn4sxe/vSGGNyv1GkQ+g++lj8wRe/84H6m68tDUIMsY/NKEuhgU9gVOJKYlhJEGgq5VHPVRMTExxFLLq7u3HyCX+ED77/JOzesydU2+xYP+HFWFlNE7GoB7Hmq2yCOspkyRBMgrIPzkq5bUSAOgRS61q3fd3qc5f0T9uY+zMgrcm+/qdPCCGEkPaBPW0kO3uGB7Hxb/96oGvi5P408t+G6lic4TaGYJO0/y2inlc/zejdXG9aOeQ69LNJ2scmNu4fK3IYPaTblsmT/sXWStJmZ0RQFF27hgdW30HBRgghhBBC9gdFG2kK9gwPvrHhb//6J129kzcZFyxSC4IMQbh5O2MMIym/xEbtW6jhb96u6J/wgi0c14mo0VH+Oq7fKlFnwyw32HJdXuypedoq3CQKQB9OUi4AzxaFuSz3+04IIYQQQpofijbSTGwB5KsmlKTKJ61KizTWz2GzYTZbGt+onlMKKiZPIq3K+TlpMdAx6U1LetxcrL8JM9hsHM4tVqVFqrlu1r3eJ49YoFZ0bdk5sGbO4/2X1Q/wfSGEEEIIIR0MRRtpGvYMb929/u+vur2rd/JCWAAWQZiFaH79gjADrdR3hRNl1iIOspY4j61qi/QJlFCCbHTEf6y6RbtkTJH0A7LFWyytE25ufdbZI8M+AOqQNVbsT3O/34QQQgghpDWgaCNNhQCDAswJ1TH49Ei4qpZFYcUJND23DcG+6G2QBgJUAnWM+tPfLcNJRq0jVt1cEmT5WA3dtlHU+aj/OHNble90KEqt68WhgTVXPz7r8txvNSGEEEIIaREo2khTsWfHoKz7ydeWdk2c/JNoR4wyK/nphrH50QD+qcJKKuiQjg/ww7hNqKChFHvWwjjLo1ibVNbCEG2r7I+hTw2hqhb74NKqHazA1LpGhp5dfd9j35z229zvMyGEEEIIaR0o2kjTIYIhK/I9EXkDgKqmSRIcUugZbjpQJB5JlcxUeqSyL/oym6+SQeDsjKpyF+yTNtog/WMvyrx9U+Jgbj/cuxR3FmLleRH0535/CSGEEEJIa0HRRpqOPcODWHfT19d29U6+uuxp86EjQLAahp+KMWL/jUFqkazOH/RjA2zsW/NC0CbVNb0/QoWtFIo2jAnw4SS+Ouf3N7XuN4bWr/3ZY7MZ8U8IIYQQQg4OijbSlOwZ3vrWs//jGz/v7p38jPEp+SGMxIWL2NLmWCZJ2mCDTKty0SKpcc5KGJhSpEGFiWihVkmPdEn/IdI/OiJdSqWf52Zj5Q0WQN0+DcjM3O8rIYQQQghpPSjaSDOzSaxclQzRtmUQifF9a7rWFrL6dbR/KdgEY4s5L8qAMrikjDFxr1EVszg9IFbk/Cn9LLY4z83F/7vQElOrDQ5tHPjBo7Mv2537DSWEEEIIIa0HRRtpWnYPb62v/ce/eah7wqSFxtpQaTMqWRJIo/z9PDbfz+YFmh8HoG2O+svvh2r7IBE/Gy7ERvpt8FU3jAoiCUmRobFNICICwZNG8I+5309CCCGEENKaULSRZmcLgBkAympbZQq2EW+RjLPcgmgCYs+a6ndL7kPNaIO3QPp+NARLpMAJOJ8KKVK2r9UlSZSEjeEjIkBRdL08tGHt3IevvSz3+0gIIYQQQloUijbS1Owe3opn/r9ZG7p7Jv0ESBMifRUNUNW2ShaJHxcQ9k2GcZfz3sJcNTWQ21fSAGfFdNU3q3rVfGgJVKXNH8dYQVEUu4Y2PPNvD8257MHc7yMhhBBCCGldKNpI07N759ahNT+d/c2u3slv+bQRnSTp0QLOSCXa3z8f9pXgZtTVuzA4289iC6mSAHT8v+g+N5UY6Stz5TGeBxjxTwghhBBCDg+KNtIqvGJEvgxdMavE9xsXCVmOXzPlDRh1s9Wbjf1pthIyotMjra+kSRycHfrbnKAzLva/qNWGhzcM/OS335q2NfcbRwghhBBCWhuKNtIS7N65dffqf7rm7q7evrVJvxqg1FgcuG0qfWze0xhTJSPGlP1sVlXbrLVhmDbcAG3jQ0qCWPMz2wAR43fzt6etwdzc7xshhBBCCGl9KNpICyGvGCtfKRMiDYxFjP4P0f2V6lt4aXzCVPYRG/vXqjrQR/dbqCpdNfrfuiqc80UWRdfg0Ia1P35w7rTcbxghhBBCCGkDKNpIy7B75zZZ/fNrnurq6bvFNaMlmOpPqc5mk1LoCZJZbRIElw4kib1svsdNkuTIcpsJtkjrhsF1YduGtY8++O1pjPgnhBBCCCFHBIo20mpshdg5UU2V6PARI3C9ZSrZEQjJkH6WW3m/3KAHZ/u+NnH9abA2ifX3wg9OuIU+OLEA8JwwfIQQQgghhBxBKNpIS7F7eCvW/GLOs929k+frJMhUwEll4DbcjDeHT4x09/0dn/4YbJEmTAFIxr8JRNkpxQ/RRmFqu4Y2PnP7b787bWnu94kQQgghhLQPFG2k5dg1vHV41S/m3FDr7dtU3eYCJEO8v6++Ff55NVvN+Mx/iTc/k80Hm3il5gWdgaTDtL1eLItxG63I1NzvDyGEEEIIaS8o2kir8qqBfK1Mgox1NUF8aBCj/4FyJICuwblnXeXM6TMTK2mh6gb1U1XeLOKAbVOrbd/+wrPff2De9JHcbwwhhBBCCGkvKNpIS7J7eOvu1T+fc0dX7+Qno5JyAkolSha2vIXgkZAxKeGmK2lSue8HbIu1IYgkVtn8zDYLY2VNIfhh7veFEEIIIYS0HxRtpJV5FYKvxZRIpMEjo4jBI54wty2kSFo1/00LufJlghj1b93MtqLWtWnohXVz753HiH9CCCGEEHLkoWgjLcvunVtlzT9/a3FX7+SbAANjoiUSwNjiTfkbjdoekiL9dqsrbk6oQYk7p+KKWhe2vbhu0T03TLs19/tBCCGEEELaE4o20upsNyI/8LbIQsf+w9/ic0Ap1go1q80T80gkWC3LOH8bY/2duCvvAxDZYEQuzf0mEEIIIYSQ9oWijbQ0u3Zuxap/mftMV++kWf65GO0fY/1jmqRKmAxJkqpHLYSQOGGmhmsjjAMo/yhqtTe2v/Dsz++54fL1ud8HQgghhBDSvlC0kZZn186tr6/6l+tu7OqdvBZAMqNNCzc/q80P2A67WMC6hEi/n4S5b+mQ7sostxcAfCP39RNCCCGEkPaGoo20C1sAXLfvXUzlp39U9qmZJObfhPARQI8BKJ8yRdfg9hfXX3vP/Mv35L5wQgghhBDS3lC0kbZg186tu1f9y3W/6urtuxeoyrKxMknS2W7GiTUL75SMAs7vJBJntQEYAHBz7usmhBBCCCHtD0UbaSe2APgWEHvYNKGCFp4x0HJOD84WHVBiJT4PwNS6Xt7+4vqr7pnPiH9CCCGEEDL+ULSRtmHXzq2y6l+vW9LV2/ffAcCMkm1RyEl4YCphI7GiVoZDhv41WAhM0bVr+4vrbr1n/mUP5L5eQgghhBDSGVC0kbZi1/Dg9lX/ct3srp6+XcABCDdAibLyZ7BK+lBJv2+548uAfCf3dRJCCCGEkM6Boo20I68AuDo+rAaPRDHnhZuFcbPY1I5KvAmAWq1r5/aX1t14z/xpjPgnhBBCCCENg6KNtB27dg6+ufJfr/t5V2/fwFi9bYBLjFTCTUf8h6qae6TGtD0D4Prc10cIIYQQQjoLijbSrrwMV20ze9nBhLiSsl/NB5FYkSDW/Gw2U9S2bn95/ffvmT9td+4LI4QQQgghnQVFG2lLdu0crK/81+serLkRAMWYvW1lOa3sZYtx/uXNhBEATr8tFuB/5r4uQgghhBDSeVC0kXZmE4CvequjqQzXNn4AgI73F2WXFMAIYGq1l4ZeXn/VPTdMzX09hBBCCCGkA6FoI23Lrp2DWP2v1w109fYtAMaKI0HoahMIrNX9beVw7aJW2zX08obbF94wdUnu6yGEEEIIIZ0JRRtpa3btHNyx6pfXfa+rd6wRAAWCbAvR/s4yGfrb8JIBvp77OgghhBBCSOdC0UY6gRcBXAyk9bWAGGWLjAO1TdG1c+il9T+5+4ZLB3NfACGEEEII6Vwo2kjbs2vn4O5Vv7zurq7evgFAC7fYzOZtkSE1sny8ygDX5l4/IYQQQgjpbCjaSKcQqm0RXXGLfWwCAEVt69DL63901/xLc6+bEEIIIYR0OBRtpCPYtXNQVv3yuiXdPX2/jM+W+ZFWpJzN5iySpujC0Evrn7h7/qWM+CeEEEIIIdmhaCOdxCCAb5l97OBsks8BcknuxRJCCCGEEAJQtJEOYtfOQay89durunr7rkm++BLTI2tFbdf2l9ffeff8qetyr5cQQgghhBCAoo10GG8Nb3lt5a3f/kmtt29LDPx3lP1szxuAVTZCCCGEENI0ULSRTuQlAFfr7EiBALXaju0vrV9w9/xL9+ReICGEEEIIIR6KNtJxvDW8ZfeqW7/9666eyYsNXPi/CIzgGQA/yL0+QgghhBBCNBRtpFMJ1bYyMbK2ZfsrG751NyP+CSGEEEJIk0HRRjqSt4a3YOWt335yQk/fzUVRw9ArG++764ZLfpl7XYQQQgghhFShaCOdzDYY/NDUagMA+nMvhhBCCCGEkLEwIjL2BmMO8lCEtB5HveO9Ez70qf53PjDvs8/nXgshB8ve/vtNCCGEkPbC8H/6hBBCCCGEENK80B5JCCGEEEIIIU0MRRshhBBCCCGENDH/PyRbju9nseBVAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTA0LTE2VDIyOjI2OjEyKzAwOjAwvrZgYAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wNC0xNlQyMjoyNjoxMiswMDowMM/r2NwAAAAASUVORK5CYII=\"","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport React from 'react'\r\nimport logo from '../assets/logo.png'\r\n\r\nexport const LogoMemo = React.memo(() => (\r\n  <div style={{ width: 'min(128px, 20%' }} className={'vim-logo vc-absolute vc-top-4 vc-left-4 vc-flex'}>\r\n    <a href=\"https://vimaec.com\">\r\n      <img className=\"vc-absolute vim-logo-img\" src={logo}></img>\r\n    </a>\r\n  </div>\r\n))\r\n","import { useState } from 'react'\r\nimport * as VIM from 'vim-webgl-viewer'\r\n\r\nexport type Entry = {\r\n  key: string | undefined\r\n  label: string | undefined\r\n  value: string | undefined\r\n}\r\n\r\nexport type Group = {\r\n  key: string | undefined\r\n  title: string | undefined\r\n  content: Entry[]\r\n}\r\n\r\nexport type Section = {\r\n  key: string | undefined\r\n  title: string\r\n  content: Group[]\r\n}\r\n\r\nexport type Data = {\r\n  header: Entry[] | undefined\r\n  body : Section[] | undefined\r\n}\r\n\r\n/**\r\n * Data customization function for the BIM info panel.\r\n * @data The data to customize.\r\n * @source The VIM.Object or VIM.Vim from which the data was pulled.\r\n */\r\nexport type DataCustomization = (data: Data, source: VIM.Vim | VIM.Object3D) => Promise<Data>\r\n\r\n/**\r\n * Rendering customization function for the BIM info panel.\r\n * @data The data to render.\r\n * @standard The standard rendering function for the data.\r\n */\r\nexport type DataRender<T> = ((props:{ data: T, standard:() => JSX.Element }) => JSX.Element) | undefined\r\n\r\n/**\r\n * Reference object for customizing the rendering of the BIM info panel.\r\n */\r\nexport type BimInfoPanelRef = {\r\n  /**\r\n   * A function that customizes the data before it is rendered in the BIM info panel.\r\n   */\r\n  onData: DataCustomization;\r\n\r\n  /**\r\n   * A function that customizes the rendering of the header of the BIM info panel.\r\n   */\r\n  onRenderHeader: DataRender<Entry[]>;\r\n\r\n  /**\r\n   * A function that customizes the rendering of each header entry in the BIM info panel.\r\n   */\r\n  onRenderHeaderEntry: DataRender<Entry>;\r\n\r\n  /**\r\n   * A function that customizes the rendering of each entry value of the header in the BIM info panel.\r\n   */\r\n  onRenderHeaderEntryValue: DataRender<Entry>;\r\n\r\n  /**\r\n   * A function that customizes the rendering for the body section of the BIM info panel.\r\n   */\r\n  onRenderBody: DataRender<Section[]>;\r\n\r\n  /**\r\n   * A function that customizes the rendering of each section of the body in the BIM info panel.\r\n   */\r\n  onRenderBodySection: DataRender<Section>;\r\n\r\n  /**\r\n   * A function that customizes the rendering of each group of the body in the BIM info panel.\r\n   */\r\n  onRenderBodyGroup: DataRender<Group>;\r\n\r\n  /**\r\n   * A function that customizes the rendering for each entry of the body in the BIM info panel.\r\n   */\r\n  onRenderBodyEntry: DataRender<Entry>;\r\n\r\n  /**\r\n   * A function that customizes the rendering of each value for a single body entry in the info panel.\r\n   */\r\n  onRenderBodyEntryValue: DataRender<Entry>;\r\n};\r\n\r\nexport function createBimInfoState () : BimInfoPanelRef {\r\n  // Double lambda to avoid react reducer pattern\r\n  const [onData, setOnData] = useState<DataCustomization>(() => (data, _) => data)\r\n  const [renderHeader, setRenderHeader] = useState<DataRender<Entry[]>>(undefined)\r\n  const [renderHeaderEntry, setRenderHeaderEntry] = useState<DataRender<Entry>>(undefined)\r\n  const [renderHeaderEntryValue, setRenderHeaderEntryValue] = useState<DataRender<Entry>>(undefined)\r\n\r\n  const [renderBody, setRenderBody] = useState<DataRender<Section[]>>(undefined)\r\n  const [renderBodySection, setRenderBodySection] = useState<DataRender<Section>>(undefined)\r\n  const [renderBodyGroup, setRenderBodyGroup] = useState<DataRender<Group>>(undefined)\r\n  const [renderBodyEntry, setRenderBodyEntry] = useState<DataRender<Entry>>(undefined)\r\n  const [renderBodyEntryValue, setRenderBodyEntryValue] = useState<DataRender<Entry>>(undefined)\r\n\r\n  return {\r\n    // onData\r\n    get onData () {\r\n      return onData\r\n    },\r\n    set onData (value: DataCustomization) {\r\n      setOnData(() => value)\r\n    },\r\n\r\n    // onRenderBody\r\n    get onRenderBody () {\r\n      return renderBody\r\n    },\r\n    set onRenderBody (value: DataRender<Section[]>) {\r\n      setRenderBody(() => value)\r\n    },\r\n\r\n    // onRenderHeader\r\n    get onRenderHeader () {\r\n      return renderHeader\r\n    },\r\n    set onRenderHeader (value: DataRender<Entry[]>) {\r\n      setRenderHeader(() => (value))\r\n    },\r\n\r\n    // onRenderHeaderEntry\r\n    get onRenderHeaderEntry () {\r\n      return renderHeaderEntry\r\n    },\r\n    set onRenderHeaderEntry (value: DataRender<Entry>) {\r\n      setRenderHeaderEntry(() => value)\r\n    },\r\n\r\n    // onRenderHeaderEntryValue\r\n    get onRenderHeaderEntryValue () {\r\n      return renderHeaderEntryValue\r\n    },\r\n    set onRenderHeaderEntryValue (value: DataRender<Entry>) {\r\n      setRenderHeaderEntryValue(() => value)\r\n    },\r\n\r\n    // onRenderBodySection\r\n    get onRenderBodySection () {\r\n      return renderBodySection\r\n    },\r\n    set onRenderBodySection (value: DataRender<Section>) {\r\n      setRenderBodySection(() => value)\r\n    },\r\n\r\n    // onRenderBodyGroup\r\n    get onRenderBodyGroup () {\r\n      return renderBodyGroup\r\n    },\r\n    set onRenderBodyGroup (value: DataRender<Group>) {\r\n      setRenderBodyGroup(() => value)\r\n    },\r\n\r\n    // onRenderBodyEntry\r\n    get onRenderBodyEntry () {\r\n      return renderBodyEntry\r\n    },\r\n    set onRenderBodyEntry (value: DataRender<Entry>) {\r\n      setRenderBodyEntry(() => value)\r\n    },\r\n\r\n    // onRenderBodyEntryValue\r\n    get onRenderBodyEntryValue () {\r\n      return renderBodyEntryValue\r\n    },\r\n    set onRenderBodyEntryValue (value: DataRender<Entry>) {\r\n      setRenderBodyEntryValue(() => value)\r\n    }\r\n  }\r\n}\r\n","export class DeferredPromise<T> extends Promise<T> {\r\n  resolve: (value: T | PromiseLike<T>) => void\r\n  reject: (reason: T | Error) => void\r\n\r\n  initialCallStack: Error['stack']\r\n\r\n  constructor (executor: ConstructorParameters<typeof Promise<T>>[0] = () => {}) {\r\n    let resolver: (value: T | PromiseLike<T>) => void\r\n    let rejector: (reason: T | Error) => void\r\n\r\n    super((resolve, reject) => {\r\n      resolver = resolve\r\n      rejector = reject\r\n      return executor(resolve, reject) // Promise magic: this line is unexplicably essential\r\n    })\r\n\r\n    this.resolve = resolver!\r\n    this.reject = rejector!\r\n\r\n    // store call stack for location where instance is created\r\n    this.initialCallStack = Error().stack?.split('\\n').slice(2).join('\\n')\r\n  }\r\n\r\n  /** @throws error with amended call stack */\r\n  rejectWithError (error: Error) {\r\n    error.stack = [error.stack?.split('\\n')[0], this.initialCallStack].join('\\n')\r\n    this.reject(error)\r\n  }\r\n}\r\n","import * as VIM from 'vim-webgl-viewer/'\r\nimport { DeferredPromise } from './deferredPromise'\r\nimport { LoadingError } from '../webgl/webglLoading'\r\n\r\ntype RequestCallbacks = {\r\n  onProgress: (p: VIM.IProgressLogs) => void\r\n  onError: (e: LoadingError) => void\r\n  onDone: () => void\r\n}\r\n\r\n/**\r\n * Class to handle loading a request.\r\n */\r\nexport class LoadRequest {\r\n  readonly source\r\n  private _callbacks : RequestCallbacks\r\n  private _request: VIM.VimRequest\r\n\r\n  private _progress: VIM.IProgressLogs = { loaded: 0, total: 0, all: new Map() }\r\n  private _progressPromise = new DeferredPromise<void>()\r\n\r\n  private _isDone: boolean = false\r\n  private _completionPromise = new DeferredPromise<void>()\r\n\r\n  constructor (callbacks: RequestCallbacks, source: VIM.RequestSource, settings: VIM.VimPartialSettings) {\r\n    this.source = source\r\n    this._callbacks = callbacks\r\n    this.startRequest(source, settings)\r\n  }\r\n\r\n  private async startRequest (source: VIM.RequestSource, settings: VIM.VimPartialSettings) {\r\n    this._request = await VIM.request(source, settings)\r\n    for await (const progress of this._request.getProgress()) {\r\n      this.onProgress(progress)\r\n    }\r\n    const result = await this._request.getResult()\r\n    if (result.isError()) {\r\n      this.onError(result.error)\r\n    } else {\r\n      this.onSuccess()\r\n    }\r\n  }\r\n\r\n  private onProgress (progress: VIM.IProgressLogs) {\r\n    this._callbacks.onProgress(progress)\r\n    this._progress = progress\r\n    this._progressPromise.resolve()\r\n    this._progressPromise = new DeferredPromise<void>()\r\n  }\r\n\r\n  private onSuccess () {\r\n    this._callbacks.onDone()\r\n    this.end()\r\n  }\r\n\r\n  private onError (error: string) {\r\n    this._callbacks.onError({\r\n      url: this.source.url,\r\n      error\r\n    })\r\n    this.end()\r\n  }\r\n\r\n  private end () {\r\n    this._isDone = true\r\n    this._progressPromise.resolve()\r\n    this._completionPromise.resolve()\r\n  }\r\n\r\n  async * getProgress () : AsyncGenerator<VIM.IProgressLogs, void, void> {\r\n    while (!this._isDone) {\r\n      await this._progressPromise\r\n      yield this._progress\r\n    }\r\n  }\r\n\r\n  async getResult () {\r\n    await this._completionPromise\r\n    return this._request.getResult()\r\n  }\r\n\r\n  abort () {\r\n    this._request.abort()\r\n    this.onError('Request aborted')\r\n  }\r\n}\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport { LoadRequest } from '../helpers/loadRequest'\r\nimport { ModalRef } from '../panels/modal'\r\nimport { Errors } from '..'\r\n\r\ntype AddSettings = {\r\n  /**\r\n   * Controls whether to frame the camera on a vim everytime it is updated.\r\n   * Default: true\r\n   */\r\n  autoFrame?: boolean\r\n\r\n  /**\r\n   * Controls whether to initially load the vim content or not.\r\n   * Default: false\r\n   */\r\n  loadEmpty?: boolean\r\n}\r\n\r\nexport type OpenSettings = VIM.VimPartialSettings & AddSettings\r\n\r\nexport type LoadingError = {\r\n  url: string\r\n  error: string\r\n}\r\n\r\n/**\r\n * Provides functionality for asynchronously opening sources and tracking progress.\r\n * Includes event emitters for progress updates and completion notifications.\r\n */\r\nexport class ComponentLoader {\r\n  private _viewer : VIM.Viewer\r\n  private _modal: ModalRef\r\n\r\n  constructor (viewer : VIM.Viewer, modal: ModalRef) {\r\n    this._viewer = viewer\r\n    this._modal = modal\r\n  }\r\n\r\n  /**\r\n   * Event emitter for progress updates.\r\n   */\r\n  onProgress (p: VIM.IProgressLogs) {\r\n    this._modal.loading({\r\n      progress: p.loaded,\r\n      mode: 'bytes'\r\n    })\r\n  }\r\n\r\n  /**\r\n     * Event emitter for completion notifications.\r\n   */\r\n  onDone () {\r\n    this._modal.loading(undefined)\r\n  }\r\n\r\n  /**\r\n   * Event emitter for error notifications.\r\n   */\r\n  onError (e: LoadingError) {\r\n    this._modal.message(Errors.serverFileDownloadingError(e.url))\r\n  }\r\n\r\n  /**\r\n   * Asynchronously opens a vim at source, applying the provided settings.\r\n   * @param source The source to open, either as a string or ArrayBuffer.\r\n   * @param settings Partial settings to apply to the opened source.\r\n   * @param onProgress Optional callback function to track progress during opening.\r\n   * Receives progress logs as input.\r\n   */\r\n  async open (\r\n    source: VIM.RequestSource,\r\n    settings: OpenSettings,\r\n    onProgress?: (p: VIM.IProgressLogs) => void\r\n  ) {\r\n    const request = await VIM.request(source, settings)\r\n\r\n    for await (const progress of request.getProgress()) {\r\n      onProgress?.(progress)\r\n      this.onProgress(progress)\r\n    }\r\n\r\n    const result = await request.getResult()\r\n    if (result.isError()) {\r\n      console.log('Error loading vim', result.error)\r\n      this.onError({\r\n        url: source.url ?? '',\r\n        error: result.error\r\n      })\r\n      return\r\n    }\r\n    const vim = result.result\r\n\r\n    this.onDone()\r\n    return vim\r\n  }\r\n\r\n  /**\r\n   * Creates a new load request for the provided source and settings.\r\n   * @param source The url to the vim file or a buffer of the file.\r\n   * @param settings Settings to apply to vim file.\r\n   * @returns A new load request instance to track progress and get result.\r\n   */\r\n  request (source: VIM.RequestSource,\r\n    settings: VIM.VimPartialSettings) {\r\n    return new LoadRequest({\r\n      onProgress: (p) => this.onProgress(p),\r\n      onError: (e) => this.onError(e),\r\n      onDone: () => this.onDone()\r\n    }, source, settings)\r\n  }\r\n\r\n  /*\r\n    * Adds a vim to the viewer and initializes it.\r\n    * @param vim Vim to add to the viewer.\r\n    * @param settings Optional settings to apply to the vim.\r\n    */\r\n  add (vim: VIM.Vim, settings: AddSettings = {}) {\r\n    this.initVim(vim, settings)\r\n  }\r\n\r\n  /**\r\n   * Removes the vim from the viewer and disposes it.\r\n   * @param vim Vim to remove from the viewer.\r\n   */\r\n  remove (vim: VIM.Vim) {\r\n    this._viewer.remove(vim)\r\n    vim.dispose()\r\n  }\r\n\r\n  private initVim (vim : VIM.Vim, settings: AddSettings) {\r\n    this._viewer.add(vim)\r\n    vim.onLoadingUpdate.subscribe(() => {\r\n      this._viewer.gizmos.loading.visible = vim.isLoading\r\n      if (settings.autoFrame !== false && !vim.isLoading) {\r\n        this._viewer.camera.snap().frame(vim)\r\n        this._viewer.camera.save()\r\n      }\r\n    })\r\n    if (settings.loadEmpty !== true) {\r\n      vim.loadAll()\r\n    }\r\n  }\r\n}\r\n","import React from 'react'\r\n\r\nexport type MessageBoxProps = {\r\n  title: string;\r\n  body: string | JSX.Element;\r\n  footer?: string | JSX.Element;\r\n  canClose: boolean;\r\n  onClose?: () => void;\r\n}\r\n\r\nexport type MessageBoxPropsTyped = MessageBoxProps & {\r\n  type: 'message'\r\n}\r\n\r\nexport function MessageBox (props: {value: MessageBoxProps}) {\r\n  const p = props.value\r\n  if (!p.title || !p.body) return null\r\n  return (\r\n    <div className=\"vim-message-box vc-p-6 vc-max-w-[424px] vc-w-[80%] vc-bg-white vc-rounded-md vc-shadow-message vc-shadow-[0px_4px_16px_rgba(33,39,51,0.5)] vc-font-roboto vc-w-full\">\r\n      {/* Header Section */}\r\n      <div className=\"vc-flex vc-justify-between vc-items-center\">\r\n        {title(p.title)}\r\n        {closeBtn(p.onClose)}\r\n      </div>\r\n\r\n      {/* Body Section */}\r\n      {divider()}\r\n      {body(p.body)}\r\n\r\n      {/* Footer Section  */}\r\n      {footer(p.footer)}\r\n    </div>\r\n  )\r\n}\r\n\r\nfunction title (title: string) {\r\n  return <h2 className=\"vc-font-bold vc-text-[20pt] vc-text-[#212733]\">{title}</h2>\r\n}\r\n\r\nfunction closeBtn (onClose: () => void) {\r\n  if (!onClose) return null\r\n  return <button onClick={onClose} className=\"vc-text-[#212733] vc-text-xl\">\r\n  &times;\r\n  </button>\r\n}\r\n\r\nfunction body (content: string | JSX.Element) {\r\n  if (content === undefined) return null\r\n  if (typeof content === 'string') {\r\n    return <div className=\"vc-text-[16pt] vc-text-[#212733] vc-whitespace-pre-wrap\">\r\n      {content}\r\n    </div>\r\n  }\r\n  return content\r\n}\r\n\r\nfunction footer (content: string | JSX.Element) {\r\n  if (content === undefined) return null\r\n  return <div className=\"vc-flex vc-justify-start vc-mt-[3rem]\">\r\n    {content}\r\n  </div>\r\n}\r\n\r\nfunction divider () {\r\n  return <div className=\"vc-border-b vc-border-[#DFDFE1] vc-my-6\"></div>\r\n}\r\n\r\nexport default MessageBox\r\n","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport React from 'react'\r\n\r\nexport type ProgressMode = '%' | 'bytes'\r\n\r\n/**\r\n * Interface for message information displayed in the LoadingBox.\r\n * @property message - Optional main message text.\r\n * @property info - Optional additional information or tooltip text.\r\n * @property progress - The progress of an operation.\r\n */\r\nexport type LoadingBoxProps = {\r\n  message?: string;\r\n  progress?: number;\r\n  mode? : ProgressMode;\r\n};\r\n\r\nexport type LoadingBoxPropsTyped = LoadingBoxProps & {\r\n  type: 'loading'\r\n};\r\n\r\n/**\r\n * LoadingBox component that displays a loading message or other messages.\r\n * @param props - Component props containing optional content.\r\n * @returns The LoadingBox component or null if no content is provided.\r\n */\r\nexport function LoadingBox (props: { content: LoadingBoxProps }) {\r\n  return (\r\n    <div className=\"vim-loading-box vc-flex vc-box-content vc-gap-2 vc-flex-col vc-max-w-[320px] vc-max-h-[48px] vc-w-[72%] vc-h-[50%] vc-self-center vc-rounded vc-bg-white vc-px-5 vc-py-4 vc-shadow-lg\">\r\n      {content(props.content)}\r\n      <div className=\"vim-loading-widget vc-mt-2\"></div>\r\n    </div>\r\n  )\r\n}\r\n\r\n/**\r\n * Content component that displays the main content based on the provided info.\r\n * @param info - Message information.\r\n * @returns The content component with appropriate styling.\r\n */\r\nfunction content (info: LoadingBoxProps) {\r\n  return (\r\n    <h1 className={'vim-loading-title vc-w-full vc-text-gray-medium'}>\r\n      <div className=\"vc-flex vc-w-full vc-justify-between\">\r\n        <span> {info.message ?? 'Loading...'}</span>\r\n        {info.progress ? <span>{formatProgress(info.progress, info.mode)} </span> : null}\r\n      </div>\r\n    </h1>\r\n  )\r\n}\r\n\r\n/**\r\n * Formats bytes to megabytes with two decimal places.\r\n * @param bytes - The number of bytes to format.\r\n * @returns The formatted megabytes as a string.\r\n */\r\nfunction formatProgress (progress: number, mode? : ProgressMode): string {\r\n  if (progress <= 0) return ''\r\n  mode = mode ?? '%'\r\n  if (mode === '%') {\r\n    return `${(progress * 100).toFixed(0)}%`\r\n  } else {\r\n    const BYTES_IN_MB = 1_000_000\r\n    return `${(progress / BYTES_IN_MB).toFixed(2)} MB`\r\n  }\r\n}\r\n","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNzE0IiBoZWlnaHQ9IjMyNCIgdmlld0JveD0iMCAwIDcxNCAzMjQiPg0KICA8ZGVmcz4NCiAgICA8ZmlsdGVyIGlkPSJSZWN0YW5nbGVfMTg5OSIgeD0iMjMzIiB5PSI0NCIgd2lkdGg9IjU0IiBoZWlnaHQ9IjcyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGR5PSIzIiBpbnB1dD0iU291cmNlQWxwaGEiLz4NCiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiIHJlc3VsdD0iYmx1ciIvPg0KICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMC4xNjEiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iaW4iIGluMj0iYmx1ciIvPg0KICAgICAgPGZlQ29tcG9zaXRlIGluPSJTb3VyY2VHcmFwaGljIi8+DQogICAgPC9maWx0ZXI+DQogICAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQiIHgxPSIxLjE0OCIgeTE9IjAuNjI4IiB4Mj0iMCIgeTI9IjAuMTY0IiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+DQogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMyMTIxMjEiLz4NCiAgICAgIDxzdG9wIG9mZnNldD0iMC4yNjEiIHN0b3AtY29sb3I9IiMyMTIxMjEiLz4NCiAgICAgIDxzdG9wIG9mZnNldD0iMC42MzkiIHN0b3AtY29sb3I9IiM0YTRhNGEiLz4NCiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzRhNGE0YSIvPg0KICAgIDwvbGluZWFyR3JhZGllbnQ+DQogICAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeTE9IjAuMDIyIiB4Mj0iMC45NDIiIHkyPSIwLjkwOSIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPg0KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMmQyZDJkIi8+DQogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzYzNjM2MiLz4NCiAgICA8L2xpbmVhckdyYWRpZW50Pg0KICAgIDxmaWx0ZXIgaWQ9IlNjcm9sbHdoZWVsIiB4PSIyNDciIHk9IjUxIiB3aWR0aD0iMjYiIGhlaWdodD0iMzQiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8ZmVPZmZzZXQgaW5wdXQ9IlNvdXJjZUFscGhhIi8+DQogICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiByZXN1bHQ9ImJsdXItMiIvPg0KICAgICAgPGZlRmxvb2QgZmxvb2QtY29sb3I9IiNmZmI3MDAiIGZsb29kLW9wYWNpdHk9IjAuMjUxIi8+DQogICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImluIiBpbjI9ImJsdXItMiIvPg0KICAgICAgPGZlQ29tcG9zaXRlIGluPSJTb3VyY2VHcmFwaGljIi8+DQogICAgPC9maWx0ZXI+DQogICAgPGZpbHRlciBpZD0iUmVjdGFuZ2xlXzE4OTktMiIgeD0iMjUiIHk9IjQ0IiB3aWR0aD0iNTQiIGhlaWdodD0iNzIiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8ZmVPZmZzZXQgZHk9IjMiIGlucHV0PSJTb3VyY2VBbHBoYSIvPg0KICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgcmVzdWx0PSJibHVyLTMiLz4NCiAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAuMTYxIi8+DQogICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImluIiBpbjI9ImJsdXItMyIvPg0KICAgICAgPGZlQ29tcG9zaXRlIGluPSJTb3VyY2VHcmFwaGljIi8+DQogICAgPC9maWx0ZXI+DQogICAgPGZpbHRlciBpZD0iVHJpZ2dlci1MZWZ0IiB4PSIyOCIgeT0iNDQiIHdpZHRoPSIzMi41IiBoZWlnaHQ9IjM1IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGlucHV0PSJTb3VyY2VBbHBoYSIvPg0KICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgcmVzdWx0PSJibHVyLTQiLz4NCiAgICAgIDxmZUZsb29kIGZsb29kLWNvbG9yPSIjZmZiNzAwIiBmbG9vZC1vcGFjaXR5PSIwLjI1MSIvPg0KICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJpbiIgaW4yPSJibHVyLTQiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBpbj0iU291cmNlR3JhcGhpYyIvPg0KICAgIDwvZmlsdGVyPg0KICAgIDxmaWx0ZXIgaWQ9IlJlY3RhbmdsZV8xODk5LTMiIHg9IjEzMyIgeT0iNDQiIHdpZHRoPSI1NCIgaGVpZ2h0PSI3MiIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4NCiAgICAgIDxmZU9mZnNldCBkeT0iMyIgaW5wdXQ9IlNvdXJjZUFscGhhIi8+DQogICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiByZXN1bHQ9ImJsdXItNSIvPg0KICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMC4xNjEiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iaW4iIGluMj0iYmx1ci01Ii8+DQogICAgICA8ZmVDb21wb3NpdGUgaW49IlNvdXJjZUdyYXBoaWMiLz4NCiAgICA8L2ZpbHRlcj4NCiAgICA8ZmlsdGVyIGlkPSJUcmlnZ2VyLVJpZ2h0IiB4PSIxNTEuNSIgeT0iNDQiIHdpZHRoPSIzMi41IiBoZWlnaHQ9IjM1IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGlucHV0PSJTb3VyY2VBbHBoYSIvPg0KICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgcmVzdWx0PSJibHVyLTYiLz4NCiAgICAgIDxmZUZsb29kIGZsb29kLWNvbG9yPSIjZmZiNzAwIiBmbG9vZC1vcGFjaXR5PSIwLjI1MSIvPg0KICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJpbiIgaW4yPSJibHVyLTYiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBpbj0iU291cmNlR3JhcGhpYyIvPg0KICAgIDwvZmlsdGVyPg0KICAgIDxmaWx0ZXIgaWQ9IlBhdGhfOTE0IiB4PSI0NTIiIHk9IjE5MyIgd2lkdGg9Ijc5Ljc2NSIgaGVpZ2h0PSI0OS45MzgiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8ZmVPZmZzZXQgZHg9IjIiIGR5PSIzIiBpbnB1dD0iU291cmNlQWxwaGEiLz4NCiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiIHJlc3VsdD0iYmx1ci03Ii8+DQogICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwLjIiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iaW4iIGluMj0iYmx1ci03Ii8+DQogICAgICA8ZmVDb21wb3NpdGUgaW49IlNvdXJjZUdyYXBoaWMiLz4NCiAgICA8L2ZpbHRlcj4NCiAgICA8Y2xpcFBhdGggaWQ9ImNsaXAtcGF0aCI+DQogICAgICA8cGF0aCBpZD0iUGF0aF85MTMiIGRhdGEtbmFtZT0iUGF0aCA5MTMiIGQ9Ik02MiwwVjMySDBMNi42NjMsMjEuNjI4LDU0LjI2NCw0Ljc0WiIgZmlsbD0iI2ZmYzZjNiIvPg0KICAgIDwvY2xpcFBhdGg+DQogICAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtNyIgeDE9IjAuNzI0IiB5MT0iMC41NjYiIHgyPSIwLjA0NCIgeTI9IjAuMDQ2IiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+DQogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMzYzNjM2MiLz4NCiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzJkMmQyZCIvPg0KICAgIDwvbGluZWFyR3JhZGllbnQ+DQogICAgPGZpbHRlciBpZD0iUGF0aF85MTQtMiIgeD0iNDUyIiB5PSIyMzMiIHdpZHRoPSI3OS43NjUiIGhlaWdodD0iNDkuOTM4IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGR4PSIyIiBkeT0iMyIgaW5wdXQ9IlNvdXJjZUFscGhhIi8+DQogICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiByZXN1bHQ9ImJsdXItOCIvPg0KICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMC4yIi8+DQogICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImluIiBpbjI9ImJsdXItOCIvPg0KICAgICAgPGZlQ29tcG9zaXRlIGluPSJTb3VyY2VHcmFwaGljIi8+DQogICAgPC9maWx0ZXI+DQogICAgPGZpbHRlciBpZD0iUGF0aF85MTQtMyIgeD0iNDUyIiB5PSIyNzMiIHdpZHRoPSI3OS43NjUiIGhlaWdodD0iNDkuOTM4IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGR4PSIyIiBkeT0iMyIgaW5wdXQ9IlNvdXJjZUFscGhhIi8+DQogICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiByZXN1bHQ9ImJsdXItOSIvPg0KICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMC4yIi8+DQogICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImluIiBpbjI9ImJsdXItOSIvPg0KICAgICAgPGZlQ29tcG9zaXRlIGluPSJTb3VyY2VHcmFwaGljIi8+DQogICAgPC9maWx0ZXI+DQogICAgPGZpbHRlciBpZD0iUGF0aF85MTQtNCIgeD0iMzMzIiB5PSIyNzMiIHdpZHRoPSI0OS43NjUiIGhlaWdodD0iNDkuOTM4IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGR4PSIyIiBkeT0iMyIgaW5wdXQ9IlNvdXJjZUFscGhhIi8+DQogICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiByZXN1bHQ9ImJsdXItMTAiLz4NCiAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAuMiIvPg0KICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJpbiIgaW4yPSJibHVyLTEwIi8+DQogICAgICA8ZmVDb21wb3NpdGUgaW49IlNvdXJjZUdyYXBoaWMiLz4NCiAgICA8L2ZpbHRlcj4NCiAgICA8Y2xpcFBhdGggaWQ9ImNsaXAtcGF0aC00Ij4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzkxMy00IiBkYXRhLW5hbWU9IlBhdGggOTEzIiBkPSJNMzIsMFYzMkgwTDE1LjU4Nyw5LjEwNloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY5MSA2NTApIiBmaWxsPSIjZmZjNmM2Ii8+DQogICAgPC9jbGlwUGF0aD4NCiAgICA8ZmlsdGVyIGlkPSJQYXRoXzkxNC01IiB4PSIzMzMiIHk9IjIzMyIgd2lkdGg9IjQ5Ljc2NSIgaGVpZ2h0PSI0OS45MzgiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8ZmVPZmZzZXQgZHg9IjIiIGR5PSIzIiBpbnB1dD0iU291cmNlQWxwaGEiLz4NCiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiIHJlc3VsdD0iYmx1ci0xMSIvPg0KICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMC4yIi8+DQogICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImluIiBpbjI9ImJsdXItMTEiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBpbj0iU291cmNlR3JhcGhpYyIvPg0KICAgIDwvZmlsdGVyPg0KICAgIDxmaWx0ZXIgaWQ9IlBhdGhfOTE0LTYiIHg9IjMzMyIgeT0iMTkzIiB3aWR0aD0iNDkuNzY1IiBoZWlnaHQ9IjQ5LjkzOCIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4NCiAgICAgIDxmZU9mZnNldCBkeD0iMiIgZHk9IjMiIGlucHV0PSJTb3VyY2VBbHBoYSIvPg0KICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgcmVzdWx0PSJibHVyLTEyIi8+DQogICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwLjIiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iaW4iIGluMj0iYmx1ci0xMiIvPg0KICAgICAgPGZlQ29tcG9zaXRlIGluPSJTb3VyY2VHcmFwaGljIi8+DQogICAgPC9maWx0ZXI+DQogICAgPGZpbHRlciBpZD0iUGF0aF85MTQtNyIgeD0iMTMiIHk9IjI0OSIgd2lkdGg9IjQ5Ljc2NSIgaGVpZ2h0PSI0OS45MzgiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8ZmVPZmZzZXQgZHg9IjIiIGR5PSIzIiBpbnB1dD0iU291cmNlQWxwaGEiLz4NCiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiIHJlc3VsdD0iYmx1ci0xMyIvPg0KICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMC4yIi8+DQogICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImluIiBpbjI9ImJsdXItMTMiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBpbj0iU291cmNlR3JhcGhpYyIvPg0KICAgIDwvZmlsdGVyPg0KICAgIDxmaWx0ZXIgaWQ9IlBhdGhfOTE0LTgiIHg9IjUwIiB5PSIyNDkiIHdpZHRoPSI0OS43NjUiIGhlaWdodD0iNDkuOTM4IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGR4PSIyIiBkeT0iMyIgaW5wdXQ9IlNvdXJjZUFscGhhIi8+DQogICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiByZXN1bHQ9ImJsdXItMTQiLz4NCiAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAuMiIvPg0KICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJpbiIgaW4yPSJibHVyLTE0Ii8+DQogICAgICA8ZmVDb21wb3NpdGUgaW49IlNvdXJjZUdyYXBoaWMiLz4NCiAgICA8L2ZpbHRlcj4NCiAgICA8ZmlsdGVyIGlkPSJQYXRoXzkxNC05IiB4PSI1MCIgeT0iMTk1IiB3aWR0aD0iNDkuNzY1IiBoZWlnaHQ9IjQ5LjkzOCIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4NCiAgICAgIDxmZU9mZnNldCBkeD0iMiIgZHk9IjMiIGlucHV0PSJTb3VyY2VBbHBoYSIvPg0KICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgcmVzdWx0PSJibHVyLTE1Ii8+DQogICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwLjIiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iaW4iIGluMj0iYmx1ci0xNSIvPg0KICAgICAgPGZlQ29tcG9zaXRlIGluPSJTb3VyY2VHcmFwaGljIi8+DQogICAgPC9maWx0ZXI+DQogICAgPGZpbHRlciBpZD0iUGF0aF85MTQtMTAiIHg9Ijg3IiB5PSIyNDkiIHdpZHRoPSI0OS43NjUiIGhlaWdodD0iNDkuOTM4IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGR4PSIyIiBkeT0iMyIgaW5wdXQ9IlNvdXJjZUFscGhhIi8+DQogICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiByZXN1bHQ9ImJsdXItMTYiLz4NCiAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAuMiIvPg0KICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJpbiIgaW4yPSJibHVyLTE2Ii8+DQogICAgICA8ZmVDb21wb3NpdGUgaW49IlNvdXJjZUdyYXBoaWMiLz4NCiAgICA8L2ZpbHRlcj4NCiAgICA8ZmlsdGVyIGlkPSJQYXRoXzkxNC0xMSIgeD0iMTU3IiB5PSIyNDkiIHdpZHRoPSI0OS43NjUiIGhlaWdodD0iNDkuOTM4IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGR4PSIyIiBkeT0iMyIgaW5wdXQ9IlNvdXJjZUFscGhhIi8+DQogICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiByZXN1bHQ9ImJsdXItMTciLz4NCiAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAuMiIvPg0KICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJpbiIgaW4yPSJibHVyLTE3Ii8+DQogICAgICA8ZmVDb21wb3NpdGUgaW49IlNvdXJjZUdyYXBoaWMiLz4NCiAgICA8L2ZpbHRlcj4NCiAgICA8ZmlsdGVyIGlkPSJQYXRoXzkxNC0xMiIgeD0iMTU3IiB5PSIxOTUiIHdpZHRoPSI0OS43NjUiIGhlaWdodD0iNDkuOTM4IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGR4PSIyIiBkeT0iMyIgaW5wdXQ9IlNvdXJjZUFscGhhIi8+DQogICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiByZXN1bHQ9ImJsdXItMTgiLz4NCiAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAuMiIvPg0KICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJpbiIgaW4yPSJibHVyLTE4Ii8+DQogICAgICA8ZmVDb21wb3NpdGUgaW49IlNvdXJjZUdyYXBoaWMiLz4NCiAgICA8L2ZpbHRlcj4NCiAgICA8ZmlsdGVyIGlkPSJSZWN0YW5nbGVfMTg5OS00IiB4PSIyMzYiIHk9IjIwOCIgd2lkdGg9IjU0IiBoZWlnaHQ9IjcyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGR5PSIzIiBpbnB1dD0iU291cmNlQWxwaGEiLz4NCiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiIHJlc3VsdD0iYmx1ci0xOSIvPg0KICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMC4xNjEiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iaW4iIGluMj0iYmx1ci0xOSIvPg0KICAgICAgPGZlQ29tcG9zaXRlIGluPSJTb3VyY2VHcmFwaGljIi8+DQogICAgPC9maWx0ZXI+DQogICAgPGZpbHRlciBpZD0iU2Nyb2xsd2hlZWwtMiIgeD0iMjUwIiB5PSIyMTUiIHdpZHRoPSIyNiIgaGVpZ2h0PSIzNCIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4NCiAgICAgIDxmZU9mZnNldCBpbnB1dD0iU291cmNlQWxwaGEiLz4NCiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiIHJlc3VsdD0iYmx1ci0yMCIvPg0KICAgICAgPGZlRmxvb2QgZmxvb2QtY29sb3I9IiNmZmI3MDAiIGZsb29kLW9wYWNpdHk9IjAuMjUxIi8+DQogICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImluIiBpbjI9ImJsdXItMjAiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBpbj0iU291cmNlR3JhcGhpYyIvPg0KICAgIDwvZmlsdGVyPg0KICAgIDxmaWx0ZXIgaWQ9IlBhdGhfOTE0LTEzIiB4PSI0NDUiIHk9IjU1IiB3aWR0aD0iNzkuNzY1IiBoZWlnaHQ9IjQ5LjkzOCIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4NCiAgICAgIDxmZU9mZnNldCBkeD0iMiIgZHk9IjMiIGlucHV0PSJTb3VyY2VBbHBoYSIvPg0KICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgcmVzdWx0PSJibHVyLTIxIi8+DQogICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwLjIiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iaW4iIGluMj0iYmx1ci0yMSIvPg0KICAgICAgPGZlQ29tcG9zaXRlIGluPSJTb3VyY2VHcmFwaGljIi8+DQogICAgPC9maWx0ZXI+DQogICAgPGZpbHRlciBpZD0iUmVjdGFuZ2xlXzE4OTktNSIgeD0iNTI5IiB5PSI0NCIgd2lkdGg9IjU0IiBoZWlnaHQ9IjcyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGR5PSIzIiBpbnB1dD0iU291cmNlQWxwaGEiLz4NCiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiIHJlc3VsdD0iYmx1ci0yMiIvPg0KICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMC4xNjEiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iaW4iIGluMj0iYmx1ci0yMiIvPg0KICAgICAgPGZlQ29tcG9zaXRlIGluPSJTb3VyY2VHcmFwaGljIi8+DQogICAgPC9maWx0ZXI+DQogICAgPGZpbHRlciBpZD0iU2Nyb2xsd2hlZWwtMyIgeD0iNTQzIiB5PSI1MSIgd2lkdGg9IjI2IiBoZWlnaHQ9IjM0IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGlucHV0PSJTb3VyY2VBbHBoYSIvPg0KICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgcmVzdWx0PSJibHVyLTIzIi8+DQogICAgICA8ZmVGbG9vZCBmbG9vZC1jb2xvcj0iI2ZmYjcwMCIgZmxvb2Qtb3BhY2l0eT0iMC4yNTEiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iaW4iIGluMj0iYmx1ci0yMyIvPg0KICAgICAgPGZlQ29tcG9zaXRlIGluPSJTb3VyY2VHcmFwaGljIi8+DQogICAgPC9maWx0ZXI+DQogICAgPGZpbHRlciBpZD0iUGF0aF85MTQtMTQiIHg9IjY1NCIgeT0iODUiIHdpZHRoPSI0OS43NjUiIGhlaWdodD0iNDkuOTM4IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KICAgICAgPGZlT2Zmc2V0IGR4PSIyIiBkeT0iMyIgaW5wdXQ9IlNvdXJjZUFscGhhIi8+DQogICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiByZXN1bHQ9ImJsdXItMjQiLz4NCiAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAuMiIvPg0KICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJpbiIgaW4yPSJibHVyLTI0Ii8+DQogICAgICA8ZmVDb21wb3NpdGUgaW49IlNvdXJjZUdyYXBoaWMiLz4NCiAgICA8L2ZpbHRlcj4NCiAgICA8ZmlsdGVyIGlkPSJQYXRoXzkxNC0xNSIgeD0iNjU0IiB5PSIzMSIgd2lkdGg9IjQ5Ljc2NSIgaGVpZ2h0PSI0OS45MzgiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQogICAgICA8ZmVPZmZzZXQgZHg9IjIiIGR5PSIzIiBpbnB1dD0iU291cmNlQWxwaGEiLz4NCiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiIHJlc3VsdD0iYmx1ci0yNSIvPg0KICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMC4yIi8+DQogICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImluIiBpbjI9ImJsdXItMjUiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBpbj0iU291cmNlR3JhcGhpYyIvPg0KICAgIDwvZmlsdGVyPg0KICAgIDxmaWx0ZXIgaWQ9IlJlY3RhbmdsZV8xODk5LTYiIHg9IjM0OSIgeT0iNDQiIHdpZHRoPSI1NCIgaGVpZ2h0PSI3MiIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4NCiAgICAgIDxmZU9mZnNldCBkeT0iMyIgaW5wdXQ9IlNvdXJjZUFscGhhIi8+DQogICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiByZXN1bHQ9ImJsdXItMjYiLz4NCiAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAuMTYxIi8+DQogICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImluIiBpbjI9ImJsdXItMjYiLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBpbj0iU291cmNlR3JhcGhpYyIvPg0KICAgIDwvZmlsdGVyPg0KICAgIDxmaWx0ZXIgaWQ9IlRyaWdnZXItTGVmdC0yIiB4PSIzNTIiIHk9IjQ0IiB3aWR0aD0iMzIuNSIgaGVpZ2h0PSIzNSIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4NCiAgICAgIDxmZU9mZnNldCBpbnB1dD0iU291cmNlQWxwaGEiLz4NCiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiIHJlc3VsdD0iYmx1ci0yNyIvPg0KICAgICAgPGZlRmxvb2QgZmxvb2QtY29sb3I9IiNmZmI3MDAiIGZsb29kLW9wYWNpdHk9IjAuMjUxIi8+DQogICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImluIiBpbjI9ImJsdXItMjciLz4NCiAgICAgIDxmZUNvbXBvc2l0ZSBpbj0iU291cmNlR3JhcGhpYyIvPg0KICAgIDwvZmlsdGVyPg0KICAgIDxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoLTE2Ij4NCiAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMjE3MyIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMjE3MyIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDA4IDc2NSkiIGZpbGw9IiM4YThkOTUiLz4NCiAgICA8L2NsaXBQYXRoPg0KICA8L2RlZnM+DQogIDxnIGlkPSJHcm91cF81NDEwIiBkYXRhLW5hbWU9Ikdyb3VwIDU0MTAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01NzQgLTM3OCkiPg0KICAgIDxnIGlkPSJHcm91cF8zNTM0IiBkYXRhLW5hbWU9Ikdyb3VwIDM1MzQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDcxMCAtMjYyKSI+DQogICAgICA8ZyBpZD0iQ29udGFpbmVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MCA2NDApIj4NCiAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8xNjk1NyIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMTY5NTciIHdpZHRoPSIxMDQiIGhlaWdodD0iMTYwIiByeD0iNCIgZmlsbD0iI2Y2ZjZmNiIvPg0KICAgICAgICA8cGF0aCBpZD0iTGFiZWwtV2VsY29tZSIgZD0iTTIuNDYxLTEuMzE4aDMuNFYwSC4zMjJWLS45TDMuNzExLTUuNzg2SC4zVi03LjEwOUg1LjgyNXYuODc5Wm0xMC4yNjgtMi4wOWE0LjE5Miw0LjE5MiwwLDAsMS0uMzg2LDEuODQxLDIuODUxLDIuODUxLDAsMCwxLTEuMSwxLjIzM0EzLjA1MiwzLjA1MiwwLDAsMSw5LjYyOS4xLDMuMSwzLjEsMCwwLDEsOC4wMTctLjMyYTIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSw2LjUwOS0zLjN2LS40QTQuMjExLDQuMjExLDAsMCwxLDYuODkyLTUuNTRhMi44NDQsMi44NDQsMCwwLDEsMS4xLTEuMjMzLDMuMDc0LDMuMDc0LDAsMCwxLDEuNjI4LS40MzUsMy4wNDQsMy4wNDQsMCwwLDEsMS42MTEuNDMsMi45LDIuOSwwLDAsMSwxLjEsMS4yMjMsNC4wOSw0LjA5LDAsMCwxLC40LDEuODE5Wm0tMS43NDMtLjNhMi45OSwyLjk5LDAsMCwwLS4zNTQtMS42MDksMS4xMzUsMS4xMzUsMCwwLDAtMS4wMTMtLjU0OXEtMS4yODksMC0xLjM2MiwxLjkzNGwwLC41MjJBMy4wNzUsMy4wNzUsMCwwLDAsOC42LTEuOGExLjEzNCwxLjEzNCwwLDAsMCwxLjAzLjU2MiwxLjEyLDEuMTIsMCwwLDAsMS0uNTUyLDIuOTkxLDIuOTkxLDAsMCwwLC4zNTYtMS41ODdabTguODQ3LjNhNC4xOTIsNC4xOTIsMCwwLDEtLjM4NiwxLjg0MSwyLjg1MSwyLjg1MSwwLDAsMS0xLjEsMS4yMzNBMy4wNTIsMy4wNTIsMCwwLDEsMTYuNzMzLjEsMy4xLDMuMSwwLDAsMSwxNS4xMjItLjMyYTIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSwxMy42MTMtMy4zdi0uNEE0LjIxMSw0LjIxMSwwLDAsMSwxNC01LjU0YTIuODQ0LDIuODQ0LDAsMCwxLDEuMS0xLjIzMywzLjA3NCwzLjA3NCwwLDAsMSwxLjYyOC0uNDM1LDMuMDQ0LDMuMDQ0LDAsMCwxLDEuNjExLjQzLDIuOSwyLjksMCwwLDEsMS4xLDEuMjIzLDQuMDksNC4wOSwwLDAsMSwuNCwxLjgxOVptLTEuNzQzLS4zYTIuOTksMi45OSwwLDAsMC0uMzU0LTEuNjA5LDEuMTM1LDEuMTM1LDAsMCwwLTEuMDEzLS41NDlxLTEuMjg5LDAtMS4zNjIsMS45MzRsMCwuNTIyQTMuMDc1LDMuMDc1LDAsMCwwLDE1LjctMS44YTEuMTM0LDEuMTM0LDAsMCwwLDEuMDMuNTYyLDEuMTIsMS4xMiwwLDAsMCwxLS41NTIsMi45OTEsMi45OTEsMCwwLDAsLjM1Ni0xLjU4N1ptNS4wNzgtMy40LDEuNTg3LDQuOTQ2LDEuNTgyLTQuOTQ2aDIuMjU2VjBIMjYuODc0Vi0xLjY2bC4xNjYtMy40TDI1LjMyMiwwSDI0LjE4OUwyMi40NjUtNS4wNjNsLjE2NiwzLjRWMEgyMC45MTdWLTcuMTA5Wk0zNC40LDBIMzIuNjg5Vi03LjEwOUgzNC40Wm03LjMyOSwwaC0xLjdMMzcuNS00LjQyNFYwSDM1Ljc5Vi03LjEwOUgzNy41bDIuNTE1LDQuNDI0Vi03LjEwOWgxLjcwOVpNNDMuNS42MUg0Mi4zMzNsMi40MjctNy43MmgxLjE3MlptOS4yNDMtNC4wMTlhNC4xOTIsNC4xOTIsMCwwLDEtLjM4NiwxLjg0MSwyLjg1MSwyLjg1MSwwLDAsMS0xLjEsMS4yMzNBMy4wNTIsMy4wNTIsMCwwLDEsNDkuNjQyLjEsMy4xLDMuMSwwLDAsMSw0OC4wMzEtLjMyYTIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSw0Ni41MjItMy4zdi0uNGE0LjIxMSw0LjIxMSwwLDAsMSwuMzgzLTEuODQzQTIuODQ0LDIuODQ0LDAsMCwxLDQ4LTYuNzcyYTMuMDc0LDMuMDc0LDAsMCwxLDEuNjI4LS40MzUsMy4wNDQsMy4wNDQsMCwwLDEsMS42MTEuNDMsMi45LDIuOSwwLDAsMSwxLjEsMS4yMjMsNC4wOSw0LjA5LDAsMCwxLC40LDEuODE5Wk01MS0zLjcwNmEyLjk5LDIuOTksMCwwLDAtLjM1NC0xLjYwOSwxLjEzNSwxLjEzNSwwLDAsMC0xLjAxMy0uNTQ5cS0xLjI4OSwwLTEuMzYyLDEuOTM0bDAsLjUyMkEzLjA3NSwzLjA3NSwwLDAsMCw0OC42MTItMS44YTEuMTM0LDEuMTM0LDAsMCwwLDEuMDMuNTYyLDEuMTIsMS4xMiwwLDAsMCwxLS41NTJBMi45OTEsMi45OTEsMCwwLDAsNTEtMy4zNzlabTguNC0zLjR2NC42NTNhMi42NzQsMi42NzQsMCwwLDEtLjMzNywxLjM3LDIuMTgzLDIuMTgzLDAsMCwxLS45NjcuODgxQTMuNDA2LDMuNDA2LDAsMCwxLDU2LjYxLjFhMi45NDIsMi45NDIsMCwwLDEtMi4wNDYtLjY3NEEyLjQsMi40LDAsMCwxLDUzLjgtMi40MjJWLTcuMTA5aDEuNzI0djQuNzIycS4wMjksMS4xNjcsMS4wODQsMS4xNjdhMS4wNDksMS4wNDksMCwwLDAsLjgwNi0uMjkzLDEuMzY5LDEuMzY5LDAsMCwwLC4yNzMtLjk1MlYtNy4xMDlabTYuODUsMS4zMjNINjQuMTE5VjBINjIuNDA1Vi01Ljc4Nkg2MC4zMTFWLTcuMTA5aDUuOTQyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAgMTgpIiBmaWxsPSIjMDUwYzFhIi8+DQogICAgICA8L2c+DQogICAgICA8ZyBpZD0iR3JvdXBfMzUzOCIgZGF0YS1uYW1lPSJHcm91cCAzNTM4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNTMpIj4NCiAgICAgICAgPGcgaWQ9Il9Nb3VzZSIgZGF0YS1uYW1lPSLwn4yVICBNb3VzZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU5IDY5MCkiPg0KICAgICAgICAgIDxnIGlkPSJCYXNlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTE5IC02NDMpIj4NCiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIDY3NywgNTkzKSIgZmlsdGVyPSJ1cmwoI1JlY3RhbmdsZV8xODk5KSI+DQogICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGVfMTg5OS03IiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAxODk5IiBkPSJNNy4yLDBIMjguOEE3LjIsNy4yLDAsMCwxLDM2LDcuMlYzNkExOCwxOCwwLDAsMSwxOCw1NGgwQTE4LDE4LDAsMCwxLDAsMzZWNy4yQTcuMiw3LjIsMCwwLDEsNy4yLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDIgNTApIiBmaWxsPSIjMjEyMTIxIi8+DQogICAgICAgICAgICA8L2c+DQogICAgICAgICAgICA8cGF0aCBpZD0iU3VidHJhY3Rpb25fMTIiIGRhdGEtbmFtZT0iU3VidHJhY3Rpb24gMTIiIGQ9Ik0tNDEwMiwyNzA0YTE3Ljg4MSwxNy44ODEsMCwwLDEtMTIuNzI4LTUuMjcyQTE3Ljg4MiwxNy44ODIsMCwwLDEtNDEyMCwyNjg2di0yOC44YTcuMjA4LDcuMjA4LDAsMCwxLDcuMi03LjJoMjEuNmE3LjIwOCw3LjIwOCwwLDAsMSw3LjIsNy4yVjI2ODZhMTcuODgxLDE3Ljg4MSwwLDAsMS01LjI3MiwxMi43MjhBMTcuODg0LDE3Ljg4NCwwLDAsMS00MTAyLDI3MDRabS0xMC40LTUyYTUuNjA2LDUuNjA2LDAsMCwwLTUuNiw1LjZWMjY4MmExNi4wMTgsMTYuMDE4LDAsMCwwLDE2LDE2LDE2LjAxOCwxNi4wMTgsMCwwLDAsMTYtMTZ2LTI0LjRhNS42MDYsNS42MDYsMCwwLDAtNS42LTUuNloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwMzkgLTIwMDcpIiBmaWxsPSJ1cmwoI2xpbmVhci1ncmFkaWVudCkiLz4NCiAgICAgICAgICA8L2c+DQogICAgICAgICAgPHBhdGggaWQ9IlRvcCIgZD0iTTUuNiwwSDI2LjRBNS42LDUuNiwwLDAsMSwzMiw1LjZWMzBBMTYsMTYsMCwwLDEsMTYsNDZoMEExNiwxNiwwLDAsMSwwLDMwVjUuNkE1LjYsNS42LDAsMCwxLDUuNiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAyKSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtMikiLz4NCiAgICAgICAgICA8cGF0aCBpZD0iVHJpZ2dlci1SaWdodC0yIiBkYXRhLW5hbWU9IlRyaWdnZXItUmlnaHQiIGQ9Ik0wLDBIOS41YTUsNSwwLDAsMSw1LDVWMTdhMCwwLDAsMCwxLDAsMEgwYTAsMCwwLDAsMSwwLDBWMEEwLDAsMCwwLDEsMCwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTguNSAzKSIgZmlsbD0iI2ZmZiIgb3BhY2l0eT0iMC4xNSIvPg0KICAgICAgICAgIDxwYXRoIGlkPSJUcmlnZ2VyLUxlZnQtMyIgZGF0YS1uYW1lPSJUcmlnZ2VyLUxlZnQiIGQ9Ik01LDBoOS41YTAsMCwwLDAsMSwwLDBWMTdhMCwwLDAsMCwxLDAsMEgwYTAsMCwwLDAsMSwwLDBWNUE1LDUsMCwwLDEsNSwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMyAzKSIgZmlsbD0iI2ZmZiIgb3BhY2l0eT0iMC4xNSIvPg0KICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIC0yNDIsIC01MCkiIGZpbHRlcj0idXJsKCNTY3JvbGx3aGVlbCkiPg0KICAgICAgICAgICAgPGcgaWQ9IlNjcm9sbHdoZWVsLTQiIGRhdGEtbmFtZT0iU2Nyb2xsd2hlZWwiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1NyA2MSkiIGZpbGw9IiNmZmI3MDAiIHN0cm9rZT0iIzMxMzEzMSIgc3Ryb2tlLXdpZHRoPSIxIj4NCiAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9IjYiIGhlaWdodD0iMTQiIHN0cm9rZT0ibm9uZSIvPg0KICAgICAgICAgICAgICA8cmVjdCB4PSItMC41IiB5PSItMC41IiB3aWR0aD0iNyIgaGVpZ2h0PSIxNSIgZmlsbD0ibm9uZSIvPg0KICAgICAgICAgICAgPC9nPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgPC9nPg0KICAgICAgICA8cGF0aCBpZD0iTGFiZWwtV2VsY29tZS0yIiBkYXRhLW5hbWU9IkxhYmVsLVdlbGNvbWUiIGQ9Ik0tOC4zNDUtMS44NjVxLjEwNy0uNy0uNzY3LTEuMDQ1bC0uNC0uMTQ2YTMuNywzLjcsMCwwLDEtMS41NjctLjkxMywxLjYzMywxLjYzMywwLDAsMS0uNDItMS4yMjYsMS44NDMsMS44NDMsMCwwLDEsLjQxMy0xLjA2NywyLjQwNiwyLjQwNiwwLDAsMSwuOTg0LS43MSwzLjIyLDMuMjIsMCwwLDEsMS4zLS4yMzQsMi42LDIuNiwwLDAsMSwxLjE4Mi4yOTEsMS45MTIsMS45MTIsMCwwLDEsLjc5MS43NjcsMi4xMjMsMi4xMjMsMCwwLDEsLjI1NCwxLjEyMWwtMS4yLDBBMS4xMjcsMS4xMjcsMCwwLDAtOC4wMi01LjlhMS4xMzMsMS4xMzMsMCwwLDAtLjg0Ny0uMzIyLDEuNTc4LDEuNTc4LDAsMCwwLS45NjQuMjY5LDEuMDc0LDEuMDc0LDAsMCwwLS40NjEuNzUycS0uMS42Mi44My45NzdsLjM2Ni4xMzJhMy41NTUsMy41NTUsMCwwLDEsMS41NjMuOTQsMS43MzUsMS43MzUsMCwwLDEsLjM5MSwxLjI3NywxLjkyMywxLjkyMywwLDAsMS0uNCwxLjA0N0EyLjIyMSwyLjIyMSwwLDAsMS04LjUtLjEzNywzLjQ5LDMuNDksMCwwLDEtOS44NDkuMSwyLjgwOSwyLjgwOSwwLDAsMS0xMS4xMTYtLjJhMi4wNzUsMi4wNzUsMCwwLDEtLjg3Mi0uOCwyLjA3MSwyLjA3MSwwLDAsMS0uMjc4LTEuMTZsMS4yMDYsMGExLjEzMiwxLjEzMiwwLDAsMCwuMy45MzMsMS4zNjQsMS4zNjQsMCwwLDAsLjk2Ny4zMzcsMS42OSwxLjY5LDAsMCwwLC45NzktLjI0OUExLjA0NiwxLjA0NiwwLDAsMC04LjM0NS0xLjg2NVpNLTQuMTgtLjg0NWExLjExMSwxLjExMSwwLDAsMCwuNzM1LS4yNDIsMS4xMDksMS4xMDksMCwwLDAsLjQwOC0uNjU3bDEuMDk0LDBBMS44NywxLjg3LDAsMCwxLTIuMzIyLS44YTIuMiwyLjIsMCwwLDEtLjgzMy42NjlBMi4zMSwyLjMxLDAsMCwxLTQuMjE0LjEsMS45OSwxLjk5LDAsMCwxLTUuMzcxLS4yNTRhMS45NDQsMS45NDQsMCwwLDEtLjctLjk0NSwzLjAyMywzLjAyMywwLDAsMS0uMTQ2LTEuMzQ1bC4wMTUtLjE3MUEzLjQ1NywzLjQ1NywwLDAsMS01Ljc1NC00LjFhMi42MDgsMi42MDgsMCwwLDEsLjk0LS45NTksMi4zNTQsMi4zNTQsMCwwLDEsMS4yNzktLjMxNywxLjg0OCwxLjg0OCwwLDAsMSwxLjM3Mi41NjlBMi4wMDksMi4wMDksMCwwLDEtMS42NS0zLjM4NEgtMi43MzRhMS4xODEsMS4xODEsMCwwLDAtLjIyMi0uNzQyQS44MTMuODEzLDAsMCwwLTMuNi00LjQzNGExLjE3MiwxLjE3MiwwLDAsMC0xLjA2OS41NzYsMy4yMTYsMy4yMTYsMCwwLDAtLjQyLDEuNjhRLTUuMTIyLS44NjQtNC4xOC0uODQ1Wk0yLjEtNC4yYTIuMTMyLDIuMTMyLDAsMCwwLS40NTQtLjA0OSwxLjM1NSwxLjM1NSwwLDAsMC0xLjIxMS42M0wtLjIsMEgtMS4zNTdsLjkxMy01LjI4MywxLjEsMC0uMTE3LjZhMS41MTIsMS41MTIsMCwwLDEsMS4yNS0uNywxLjksMS45LDAsMCwxLC40NDQuMDczWm0uMSwxLjUzOGEzLjQ3NiwzLjQ3NiwwLDAsMSwuNDU3LTEuNDExLDIuNzA5LDIuNzA5LDAsMCwxLC45NTktLjk4MSwyLjM3MSwyLjM3MSwwLDAsMSwxLjMtLjMyNywyLjAxOCwyLjAxOCwwLDAsMSwxLjE3Mi4zNjEsMi4wMDcsMi4wMDcsMCwwLDEsLjcyLjk2MkEzLjA1NCwzLjA1NCwwLDAsMSw2Ljk2OC0yLjdhMy41NDEsMy41NDEsMCwwLDEtLjQ1NywxLjQ4NCwyLjcsMi43LDAsMCwxLS45NjcuOTg5QTIuNCwyLjQsMCwwLDEsNC4yMzguMSwyLjAwOSwyLjAwOSwwLDAsMSwzLjA3NC0uMjYxYTIuMDE0LDIuMDE0LDAsMCwxLS43Mi0uOTU3LDMuMDE1LDMuMDE1LDAsMCwxLS4xNjYtMS4zNFptMS4xMzguNjY5YTEuNCwxLjQsMCwwLDAsLjI3MS44MjNBLjg2Ny44NjcsMCwwLDAsNC4zLS44NDVhMS4yMTcsMS4yMTcsMCwwLDAsMS0uNDU5QTIuNDE1LDIuNDE1LDAsMCwwLDUuOC0yLjZsLjAyOS0uNDc5YTEuNjkxLDEuNjkxLDAsMCwwLS4yNDktLjk4MS44NzQuODc0LDAsMCwwLS43MjMtLjM3NiwxLjI2NSwxLjI2NSwwLDAsMC0xLjE3Mi43MjgsMi43MTgsMi43MTgsMCwwLDAtLjMyNywxLjA0NUE0LjA4OCw0LjA4OCwwLDAsMCwzLjM0LTEuOTkyWk04LjcyNiwwSDcuNTY4bDEuMy03LjVoMS4xNTdaTTExLjI1LDBIMTAuMDkzbDEuMy03LjVoMS4xNTdaTS0yNC44MzIsMi44OTFsMS4wNCw1LjQzOSwyLjkyNS01LjQzOWgxLjU4MkwtMjAuNTE1LDEwaC0xLjJsLjQxNS0yLjQwNy42My0yLjk2NEwtMjMuNiwxMGgtLjg2OWwtMS4wODktNS41MzJMLTI2LDcuNzItMjYuNCwxMGgtMS4ybDEuMjM1LTcuMTA5Wm01LjkzOCw0LjQ0OGEzLjQ3NiwzLjQ3NiwwLDAsMSwuNDU3LTEuNDExLDIuNzA5LDIuNzA5LDAsMCwxLC45NTktLjk4MSwyLjM3MSwyLjM3MSwwLDAsMSwxLjMtLjMyNywyLjAxOCwyLjAxOCwwLDAsMSwxLjE3Mi4zNjEsMi4wMDcsMi4wMDcsMCwwLDEsLjcyLjk2MkEzLjA1NCwzLjA1NCwwLDAsMS0xNC4xMjgsNy4zYTMuNTQxLDMuNTQxLDAsMCwxLS40NTcsMS40ODQsMi43LDIuNywwLDAsMS0uOTY3Ljk4OSwyLjQsMi40LDAsMCwxLTEuMzA2LjMyNSwyLjAwOSwyLjAwOSwwLDAsMS0xLjE2NS0uMzU5LDIuMDE0LDIuMDE0LDAsMCwxLS43Mi0uOTU3LDMuMDE1LDMuMDE1LDAsMCwxLS4xNjYtMS4zNFptMS4xMzguNjY5YTEuNCwxLjQsMCwwLDAsLjI3MS44MjMuODY3Ljg2NywwLDAsMCwuNjg2LjMyNSwxLjIxNywxLjIxNywwLDAsMCwxLS40NTlBMi40MTUsMi40MTUsMCwwLDAtMTUuMyw3LjRsLjAyOS0uNDc5YTEuNjkxLDEuNjkxLDAsMCwwLS4yNDktLjk4MS44NzQuODc0LDAsMCwwLS43MjMtLjM3NiwxLjI2NSwxLjI2NSwwLDAsMC0xLjE3Mi43MjgsMi43MTgsMi43MTgsMCwwLDAtLjMyNywxLjA0NUE0LjA4OCw0LjA4OCwwLDAsMC0xNy43NTYsOC4wMDhabTcuNDIyLDEuNDdhMS45MTYsMS45MTYsMCwwLDEtMS41LjYyLDEuNDcyLDEuNDcyLDAsMCwxLS44NTItLjI1NCwxLjMyMSwxLjMyMSwwLDAsMS0uNDgzLS42ODEsMi40OTQsMi40OTQsMCwwLDEtLjA4NS0xLjAyOGwuNTcxLTMuNDE4aDEuMTU3bC0uNTc2LDMuNDMzYTEuODIsMS44MiwwLDAsMCwwLC4zNTIuNTk0LjU5NCwwLDAsMCwuNjEuNjMsMS40LDEuNCwwLDAsMCwxLjI0LS42MTVsLjY2NC0zLjhILTguNDRMLTkuMzUzLDEwaC0xLjA4NFpNLTUsOC41MzVxLjA4My0uNDgzLS42MjctLjY3MWE3Ljk3Nyw3Ljk3NywwLDAsMS0uOTY5LS4zLDEuMzM2LDEuMzM2LDAsMCwxLS45NzItMS4zMDksMS40ODYsMS40ODYsMCwwLDEsLjY0Ny0xLjE3OSwyLjM3MSwyLjM3MSwwLDAsMSwxLjQ5Mi0uNDU3LDIuMDQxLDIuMDQxLDAsMCwxLDEuMzcuNDc0LDEuNTEsMS41MSwwLDAsMSwuNTIsMS4yMTZsLTEuMTQ3LDBhLjc0MS43NDEsMCwwLDAtLjItLjU3NC44MTcuODE3LDAsMCwwLS41NzYtLjIxNywxLjEzNiwxLjEzNiwwLDAsMC0uNjYyLjE5LjcxLjcxLDAsMCwwLS4zMi41cS0uMDY4LjQ0NC42MjUuNjE4YTYuODYsNi44NiwwLDAsMSwxLjAyNS4zMiwxLjMzNywxLjMzNywwLDAsMSwuOTMzLDEuMzI4LDEuNDYsMS40NiwwLDAsMS0uMzMuODc2LDEuOTIzLDEuOTIzLDAsMCwxLS44MTguNTcxQTIuOCwyLjgsMCwwLDEtNi4xLDEwLjFhMi4xNDgsMi4xNDgsMCwwLDEtMS40MzMtLjVBMS41NywxLjU3LDAsMCwxLTguMDkzLDguMzNsMS4xMTgsMGEuODUxLjg1MSwwLDAsMCwuMjU0LjY0NS45ODEuOTgxLDAsMCwwLC42NjkuMjI1LDEuMzI4LDEuMzI4LDAsMCwwLC43MTUtLjE3OEEuNjg0LjY4NCwwLDAsMC01LDguNTM1Wk0tLjcxNSwxMC4xYTIuMjEzLDIuMjEzLDAsMCwxLTEuMTk0LS4zNDcsMS45NzIsMS45NzIsMCwwLDEtLjc0Ny0uOTA4LDIuNywyLjcsMCwwLDEtLjE4My0xLjI4NGwuMDE1LS4yYTMuNTM2LDMuNTM2LDAsMCwxLC40NzEtMS40NDhBMi42ODksMi42ODksMCwwLDEtMS40LDQuOTM3YTIuMzIxLDIuMzIxLDAsMCwxLDEuMjQtLjMxNywxLjczMSwxLjczMSwwLDAsMSwxLjQ4Ny43MzhBMi43MTEsMi43MTEsMCwwLDEsMS43LDcuMjMxbC0uMDY4LjUwOUgtMS42OTJhMS40MzUsMS40MzUsMCwwLDAsLjI1NCwxLjAxMiwxLjAwNiwxLjAwNiwwLDAsMCwuODIuMzk0QTEuNzgsMS43OCwwLDAsMCwuNzU5LDguNWwuNTg2LjYxNWEyLjIyNywyLjIyNywwLDAsMS0uODc0LjczNUEyLjYsMi42LDAsMCwxLS43MTUsMTAuMVptLjQ5My00LjUzMXEtLjkxOC0uMDI5LTEuMzc3LDEuM2wyLjE5MiwwLC4wMi0uMWExLjUzMiwxLjUzMiwwLDAsMCwwLS40MzkuOS45LDAsMCwwLS4yNzMtLjU0N0EuODY2Ljg2NiwwLDAsMC0uMjIyLDUuNTY2Wk02LjkxNyw4LjM1NGwxLjQ1LTMuNjM4SDkuNTI5TDcuMjE0LDEwSDYuMjYyTDUuOCw2LjM4Nyw0LjA4OSwxMEgzLjEzMkwyLjY0OSw0LjcxN0gzLjc0M2wuMiwzLjU4NCwxLjY3LTMuNTg0aC44NzRaTTExLjMxMSw1LjNhMS45NTMsMS45NTMsMCwwLDEsMS41LS42NzQsMS4yODksMS4yODksMCwwLDEsMS4xMTYuNTMyQTIuMTEzLDIuMTEzLDAsMCwxLDE0LjIsNi42TDEzLjYzLDEwSDEyLjQ3M2wuNTc2LTMuNDEzYTEuOTk0LDEuOTk0LDAsMCwwLC4wMS0uMzkxLjYzMy42MzMsMCwwLDAtLjctLjYxLDEuNDI3LDEuNDI3LDAsMCwwLTEuMTUyLjYzNUwxMC41NDQsMTBIOS4zODdsMS4zLTcuNWgxLjE2MlptNS45MTgsNC44YTIuMjEzLDIuMjEzLDAsMCwxLTEuMTk0LS4zNDcsMS45NzIsMS45NzIsMCwwLDEtLjc0Ny0uOTA4QTIuNywyLjcsMCwwLDEsMTUuMSw3LjU1OWwuMDE1LS4yYTMuNTM2LDMuNTM2LDAsMCwxLC40NzEtMS40NDgsMi42ODksMi42ODksMCwwLDEsLjk1NS0uOTc0LDIuMzIxLDIuMzIxLDAsMCwxLDEuMjQtLjMxNywxLjczMSwxLjczMSwwLDAsMSwxLjQ4Ny43MzgsMi43MTEsMi43MTEsMCwwLDEsLjM3NCwxLjg3M2wtLjA2OC41MDlIMTYuMjUyYTEuNDM1LDEuNDM1LDAsMCwwLC4yNTQsMS4wMTIsMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAsMTguNyw4LjVsLjU4Ni42MTVhMi4yMjcsMi4yMjcsMCwwLDEtLjg3NC43MzVBMi42LDIuNiwwLDAsMSwxNy4yMjksMTAuMVptLjQ5My00LjUzMXEtLjkxOC0uMDI5LTEuMzc3LDEuM2wyLjE5MiwwLC4wMi0uMWExLjUzMiwxLjUzMiwwLDAsMCwwLS40MzkuOS45LDAsMCwwLS4yNzMtLjU0N0EuODY2Ljg2NiwwLDAsMCwxNy43MjIsNS41NjZaTTIyLjQ4MywxMC4xYTIuMjEzLDIuMjEzLDAsMCwxLTEuMTk0LS4zNDcsMS45NzIsMS45NzIsMCwwLDEtLjc0Ny0uOTA4LDIuNywyLjcsMCwwLDEtLjE4My0xLjI4NGwuMDE1LS4yYTMuNTM2LDMuNTM2LDAsMCwxLC40NzEtMS40NDgsMi42ODksMi42ODksMCwwLDEsLjk1NS0uOTc0LDIuMzIxLDIuMzIxLDAsMCwxLDEuMjQtLjMxNywxLjczMSwxLjczMSwwLDAsMSwxLjQ4Ny43MzhBMi43MTEsMi43MTEsMCwwLDEsMjQuOSw3LjIzMWwtLjA2OC41MDlIMjEuNTA2YTEuNDM1LDEuNDM1LDAsMCwwLC4yNTQsMS4wMTIsMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAsMjMuOTU4LDguNWwuNTg2LjYxNWEyLjIyNywyLjIyNywwLDAsMS0uODc0LjczNUEyLjYsMi42LDAsMCwxLDIyLjQ4MywxMC4xWm0uNDkzLTQuNTMxcS0uOTE4LS4wMjktMS4zNzcsMS4zbDIuMTkyLDAsLjAyLS4xYTEuNTMyLDEuNTMyLDAsMCwwLDAtLjQzOS45LjksMCwwLDAtLjI3My0uNTQ3QS44NjYuODY2LDAsMCwwLDIyLjk3Niw1LjU2NlpNMjYuNTc1LDEwSDI1LjQxN2wxLjMtNy41aDEuMTU3WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTg1IDc3NykiIGZpbGw9IiMwNTBjMWEiLz4NCiAgICAgICAgPGcgaWQ9Ikdyb3VwXzQ1MzMiIGRhdGEtbmFtZT0iR3JvdXAgNDUzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwKSI+DQogICAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtMyIgZGF0YS1uYW1lPSJMYWJlbC1XZWxjb21lIiBkPSJNLTIuNjE2LDBILTMuOGwxLjIxNy03SC0xLjRaTS43MjYtNS4yMDkuNjExLTQuNmExLjk4NiwxLjk4NiwwLDAsMSwxLjU0NC0uNywxLjI1OCwxLjI1OCwwLDAsMSwxLjA4Mi41MjJBMi4wODMsMi4wODMsMCwwLDEsMy41LTMuMzYyTDIuOTM0LDBIMS43OTRsLjU2OC0zLjM3NmExLjcyOCwxLjcyOCwwLDAsMCwwLS4zODUuNjEzLjYxMywwLDAsMC0uNjgzLS41ODcsMS4zODUsMS4zODUsMCwwLDAtMS4xNC42NEwtLjEwNiwwaC0xLjE0bC45LTUuMloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxNyA3MDApIiBmaWxsPSIjMDUwYzFhIi8+DQogICAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtNCIgZGF0YS1uYW1lPSJMYWJlbC1XZWxjb21lIiBkPSJNLTQuNzM1LjFhMi4zNzMsMi4zNzMsMCwwLDEtMS4yLS4zMjcsMi4xLDIuMSwwLDAsMS0uODA2LS45MDcsMy40NiwzLjQ2LDAsMCwxLS4zMjctMS4zNDksNi4yLDYuMiwwLDAsMSwuMTA4LTEuNCw0LjcyOCw0LjcyOCwwLDAsMSwuNTA1LTEuNDY1LDMuNjgxLDMuNjgxLDAsMCwxLC44NjgtMS4wOEEyLjg2LDIuODYsMCwwLDEtMy42NjItNy4xYTIuMTYxLDIuMTYxLDAsMCwxLDEuNjU3LjcxN0EyLjk2OCwyLjk2OCwwLDAsMS0xLjMzLTQuNWE2LjIsNi4yLDAsMCwxLS4xMDgsMS4zNjhBNC45Niw0Ljk2LDAsMCwxLTEuOTA5LTEuNzFhMy42MjEsMy42MjEsMCwwLDEtLjgzLDEuMDhBMi44MzgsMi44MzgsMCwwLDEtNC43MzUuMVptMi4xODgtMy43ODVMLTIuNS00LjJhMy4wNTUsMy4wNTUsMCwwLDAtLjA5MS0uOTY5QTEuMjcyLDEuMjcyLDAsMCwwLTMtNS44NDZhMS4xNzIsMS4xNzIsMCwwLDAtLjcyNC0uMjQ4QTEuNjI2LDEuNjI2LDAsMCwwLTQuOC01Ljc1MmEyLjUsMi41LDAsMCwwLS43NiwxLjFBNS43NDUsNS43NDUsMCwwLDAtNS45LTIuODA5LDIuMzQyLDIuMzQyLDAsMCwwLTUuNjMtMS40MjQsMS4wOTMsMS4wOTMsMCwwLDAtNC42NzctLjksMS42NDQsMS42NDQsMCwwLDAtMy4zLTEuNTI1YTMuNiwzLjYsMCwwLDAsLjcwOS0xLjgyOFpNMi4zMjUtLjUxNUExLjg4NywxLjg4NywwLDAsMSwuODQ0LjEsMS40NSwxLjQ1LDAsMCwxLDAtLjE1NCwxLjMsMS4zLDAsMCwxLS40NzEtLjgyNSwyLjQ1NiwyLjQ1NiwwLDAsMS0uNTU2LTEuODM3TC4wMDctNS4yaDEuMTRMLjU4LTEuODIzYTEuNzkyLDEuNzkyLDAsMCwwLDAsLjM0Ni41ODUuNTg1LDAsMCwwLC42LjYyQTEuMzc3LDEuMzc3LDAsMCwwLDIuNC0xLjQ2MkwzLjA1Mi01LjJoMS4xNEwzLjI5MiwwSDIuMjI0Wk03LjAyLTYuNDY5LDYuOC01LjJoLjg5bC0uMTQ5Ljg2Nkg2LjY0NEw2LjE1NC0xLjQyNGExLDEsMCwwLDAsMCwuMjE2cS4wMjkuMzEzLjM4NS4zMjdhMi4xNzMsMi4xNzMsMCwwLDAsLjQtLjA0M0w2Ljg2MS0uMDFhMi42MTMsMi42MTMsMCwwLDEtLjcxNy4xLDEuMDY0LDEuMDY0LDAsMCwxLS44OTItLjQwNiwxLjQ3MSwxLjQ3MSwwLDAsMS0uMjMzLTEuMDUxTDUuNS00LjMzOEg0LjY3Mkw0LjgyNi01LjJoLjgyN2wuMjIxLTEuMjY1WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjE3IDczNykiIGZpbGw9IiMwNTBjMWEiLz4NCiAgICAgICAgICA8cGF0aCBpZD0iUGF0aF8xNDE3OCIgZGF0YS1uYW1lPSJQYXRoIDE0MTc4IiBkPSJNLTgyNjYuMzMyLDI2NjIuODMyaC0xMS4zMzNWMjY2NWwtNS4zMzUtNC41LDUuMzM1LTQuNXYyLjE2N2gxMS4zMzNWMjY1Nmw1LjMzMyw0LjUtNS4zMzMsNC41WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTI0NDMgLTc1NTcpIHJvdGF0ZSgtOTApIiBmaWxsPSIjMjEyMzI5IiBvcGFjaXR5PSIwLjQiLz4NCiAgICAgICAgPC9nPg0KICAgICAgPC9nPg0KICAgIDwvZz4NCiAgICA8ZyBpZD0iR3JvdXBfMzUyMyIgZGF0YS1uYW1lPSJHcm91cCAzNTIzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2NCAtMjYyKSI+DQogICAgICA8ZyBpZD0iQ29udGFpbmVyLTIiIGRhdGEtbmFtZT0iQ29udGFpbmVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MTAgNjQwKSI+DQogICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMTY5NTctMiIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMTY5NTciIHdpZHRoPSIxMDQiIGhlaWdodD0iMTYwIiByeD0iNCIgZmlsbD0iI2Y2ZjZmNiIvPg0KICAgICAgICA8cGF0aCBpZD0iTGFiZWwtV2VsY29tZS01IiBkYXRhLW5hbWU9IkxhYmVsLVdlbGNvbWUiIGQ9Ik02LjU1OC0zLjQwOGE0LjE5Miw0LjE5MiwwLDAsMS0uMzg2LDEuODQxLDIuODUxLDIuODUxLDAsMCwxLTEuMSwxLjIzM0EzLjA1MiwzLjA1MiwwLDAsMSwzLjQ1Ny4xLDMuMSwzLjEsMCwwLDEsMS44NDYtLjMyLDIuODQ2LDIuODQ2LDAsMCwxLC43NS0xLjUxNCw0LjA3Miw0LjA3MiwwLDAsMSwuMzM3LTMuM3YtLjRBNC4yMTEsNC4yMTEsMCwwLDEsLjcyLTUuNTRhMi44NDQsMi44NDQsMCwwLDEsMS4xLTEuMjMzLDMuMDc0LDMuMDc0LDAsMCwxLDEuNjI4LS40MzUsMy4wNDQsMy4wNDQsMCwwLDEsMS42MTEuNDMsMi45LDIuOSwwLDAsMSwxLjEsMS4yMjMsNC4wOSw0LjA5LDAsMCwxLC40LDEuODE5Wm0tMS43NDMtLjNBMi45OSwyLjk5LDAsMCwwLDQuNDYtNS4zMTVhMS4xMzUsMS4xMzUsMCwwLDAtMS4wMTMtLjU0OXEtMS4yODksMC0xLjM2MiwxLjkzNGwwLC41MjJBMy4wNzUsMy4wNzUsMCwwLDAsMi40MjctMS44YTEuMTM0LDEuMTM0LDAsMCwwLDEuMDMuNTYyLDEuMTIsMS4xMiwwLDAsMCwxLS41NTIsMi45OTEsMi45OTEsMCwwLDAsLjM1Ni0xLjU4N1ptNS40NjksMS4xOTFIOS4zNTVWMEg3LjY0MVYtNy4xMDloMi44YTMuMTIzLDMuMTIzLDAsMCwxLDEuOTc4LjU2MSwxLjksMS45LDAsMCwxLC43MTMsMS41ODUsMi4zMDgsMi4zMDgsMCwwLDEtLjMsMS4yMjksMi4xMzEsMi4xMzEsMCwwLDEtLjk0Ljc5TDEzLjM3NC0uMDczVjBIMTEuNTM4Wk05LjM1NS0zLjgzM2gxLjA4NGEuOTczLjk3MywwLDAsMCwuNzM1LS4yNTcuOTkzLjk5MywwLDAsMCwuMjQ3LS43MTcsMSwxLDAsMCwwLS4yNDktLjcyMi45NjQuOTY0LDAsMCwwLS43MzItLjI2Mkg5LjM1NVpNMTQuMzY1LDBWLTcuMTA5aDIuNTU0YTMuNjE2LDMuNjE2LDAsMCwxLDIuMDg3LjUsMS42NzMsMS42NzMsMCwwLDEsLjcxNSwxLjQ2LDEuNjkyLDEuNjkyLDAsMCwxLS4yNTQuOTQyLDEuNDgsMS40OCwwLDAsMS0uNzQ3LjU3NiwxLjUsMS41LDAsMCwxLC44NTQuNTQ3LDEuNTksMS41OSwwLDAsMSwuMy45NzcsMS44ODIsMS44ODIsMCwwLDEtLjY2MiwxLjU3QTMuMTQ5LDMuMTQ5LDAsMCwxLDE3LjI1MSwwWm0xLjcxNC0zLjAyMnYxLjdIMTcuMmExLjA2OCwxLjA2OCwwLDAsMCwuNzEzLS4yMTIuNzQzLjc0MywwLDAsMCwuMjQ5LS42Ljc4OC43ODgsMCwwLDAtLjg4NC0uODk0Wm0wLTEuMTIzaC44OTRhMS4yNjksMS4yNjksMCwwLDAsLjgtLjIwNi43My43MywwLDAsMCwuMjM5LS41OTMuNzY2Ljc2NiwwLDAsMC0uMjU5LS42NDksMS4zODUsMS4zODUsMCwwLDAtLjgzNS0uMmgtLjg0Wk0yMi44NDEsMEgyMS4xMzJWLTcuMTA5aDEuNzA5Wm02Ljk3Mi01Ljc4NkgyNy42OFYwSDI1Ljk2NlYtNS43ODZIMjMuODcxVi03LjEwOWg1Ljk0MlpNMzMuNjIyLjYxSDMyLjQ1NWwyLjQyNy03LjcyaDEuMTcyWk0yLjI1MSw5LjY4Mkg1LjIzNFYxMUguNTM3VjMuODkxSDIuMjUxWm05LjYxNC0yLjA5YTQuMTkyLDQuMTkyLDAsMCwxLS4zODYsMS44NDEsMi44NTEsMi44NTEsMCwwLDEtMS4xLDEuMjMzLDMuMDUyLDMuMDUyLDAsMCwxLTEuNjE5LjQzMiwzLjEsMy4xLDAsMCwxLTEuNjExLS40MTcsMi44NDYsMi44NDYsMCwwLDEtMS4xLTEuMTk0QTQuMDcyLDQuMDcyLDAsMCwxLDUuNjQ0LDcuN1Y3LjNBNC4yMTEsNC4yMTEsMCwwLDEsNi4wMjgsNS40NmEyLjg0NCwyLjg0NCwwLDAsMSwxLjEtMS4yMzMsMy4wNzQsMy4wNzQsMCwwLDEsMS42MjgtLjQzNSwzLjA0NCwzLjA0NCwwLDAsMSwxLjYxMS40MywyLjksMi45LDAsMCwxLDEuMSwxLjIyMyw0LjA5LDQuMDksMCwwLDEsLjQsMS44MTlabS0xLjc0My0uM2EyLjk5LDIuOTksMCwwLDAtLjM1NC0xLjYwOSwxLjEzNSwxLjEzNSwwLDAsMC0xLjAxMy0uNTQ5cS0xLjI4OSwwLTEuMzYyLDEuOTM0bDAsLjUyMkEzLjA3NSwzLjA3NSwwLDAsMCw3LjczNCw5LjJhMS4xMzQsMS4xMzQsMCwwLDAsMS4wMy41NjIsMS4xMiwxLjEyLDAsMCwwLDEtLjU1MiwyLjk5MSwyLjk5MSwwLDAsMCwuMzU2LTEuNTg3Wm04Ljg0Ny4zYTQuMTkyLDQuMTkyLDAsMCwxLS4zODYsMS44NDEsMi44NTEsMi44NTEsMCwwLDEtMS4xLDEuMjMzLDMuMDUyLDMuMDUyLDAsMCwxLTEuNjE5LjQzMiwzLjEsMy4xLDAsMCwxLTEuNjExLS40MTcsMi44NDYsMi44NDYsMCwwLDEtMS4xLTEuMTk0QTQuMDcyLDQuMDcyLDAsMCwxLDEyLjc0OSw3LjdWNy4zYTQuMjExLDQuMjExLDAsMCwxLC4zODMtMS44NDMsMi44NDQsMi44NDQsMCwwLDEsMS4xLTEuMjMzLDMuMjUyLDMuMjUyLDAsMCwxLDMuMjQsMCwyLjksMi45LDAsMCwxLDEuMSwxLjIyMyw0LjA5LDQuMDksMCwwLDEsLjQsMS44MTlabS0xLjc0My0uM2EyLjk5LDIuOTksMCwwLDAtLjM1NC0xLjYwOSwxLjEzNSwxLjEzNSwwLDAsMC0xLjAxMy0uNTQ5cS0xLjI4OSwwLTEuMzYyLDEuOTM0bDAsLjUyMkEzLjA3NSwzLjA3NSwwLDAsMCwxNC44MzgsOS4yYTEuMTM0LDEuMTM0LDAsMCwwLDEuMDMuNTYyLDEuMTIsMS4xMiwwLDAsMCwxLS41NTIsMi45OTEsMi45OTEsMCwwLDAsLjM1Ni0xLjU4N1ptNS4yNDQsMS4wNi0uNy43NzFWMTFIMjAuMDUzVjMuODkxaDEuNzE0VjcuMDI1bC42LS45TDIzLjksMy44OTFoMi4xMTlsLTIuNCwzLjE0NUwyNi4wMTUsMTFIMjMuOTg0Wk0zMy4zNzgsOS42NzJIMzEuMDI5TDMwLjYxOSwxMUgyOC43ODhMMzEuNCwzLjg5MWgxLjYxMUwzNS42MzQsMTFIMzMuNzkzWk0zMS40MzksOC4zNDloMS41MjhMMzIuMiw1Ljg4M1ptNy41NTQuMTM3aC0uOTI4VjExSDM2LjM1MVYzLjg5MWgyLjhhMy4xMjMsMy4xMjMsMCwwLDEsMS45NzguNTYxLDEuOSwxLjksMCwwLDEsLjcxMywxLjU4NSwyLjMwOCwyLjMwOCwwLDAsMS0uMywxLjIyOSwyLjEzMSwyLjEzMSwwLDAsMS0uOTQuNzlsMS40ODQsMi44NzFWMTFINDAuMjQ4Wm0tLjkyOC0xLjMxOGgxLjA4NGEuOTczLjk3MywwLDAsMCwuNzM1LS4yNTcuOTkzLjk5MywwLDAsMCwuMjQ3LS43MTcsMSwxLDAsMCwwLS4yNDktLjcyMi45NjQuOTY0LDAsMCwwLS43MzItLjI2MkgzOC4wNjVabTExLjAzLjQyNWE0LjE5Miw0LjE5MiwwLDAsMS0uMzg2LDEuODQxLDIuODUxLDIuODUxLDAsMCwxLTEuMSwxLjIzMywzLjA1MiwzLjA1MiwwLDAsMS0xLjYxOS40MzIsMy4xLDMuMSwwLDAsMS0xLjYxMS0uNDE3LDIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSw0Mi44NzUsNy43VjcuM2E0LjIxMSw0LjIxMSwwLDAsMSwuMzgzLTEuODQzLDIuODQ0LDIuODQ0LDAsMCwxLDEuMS0xLjIzMywzLjI1MiwzLjI1MiwwLDAsMSwzLjI0LDAsMi45LDIuOSwwLDAsMSwxLjEsMS4yMjMsNC4wOSw0LjA5LDAsMCwxLC40LDEuODE5Wm0tMS43NDMtLjNBMi45OSwyLjk5LDAsMCwwLDQ3LDUuNjg1YTEuMTM1LDEuMTM1LDAsMCwwLTEuMDEzLS41NDlxLTEuMjg5LDAtMS4zNjIsMS45MzRsMCwuNTIyQTMuMDc1LDMuMDc1LDAsMCwwLDQ0Ljk2NCw5LjJhMS4xMzQsMS4xMzQsMCwwLDAsMS4wMy41NjIsMS4xMiwxLjEyLDAsMCwwLDEtLjU1MiwyLjk5MSwyLjk5MSwwLDAsMCwuMzU2LTEuNTg3Wm04LjQtMy40VjguNTQ0YTIuNjc0LDIuNjc0LDAsMCwxLS4zMzcsMS4zNywyLjE4MywyLjE4MywwLDAsMS0uOTY3Ljg4MSwzLjQwNiwzLjQwNiwwLDAsMS0xLjQ4OS4zLDIuOTQyLDIuOTQyLDAsMCwxLTIuMDQ2LS42NzQsMi40LDIuNCwwLDAsMS0uNzYyLTEuODQ2VjMuODkxaDEuNzI0VjguNjEycS4wMjksMS4xNjcsMS4wODQsMS4xNjdhMS4wNDksMS4wNDksMCwwLDAsLjgwNi0uMjkzLDEuMzY5LDEuMzY5LDAsMCwwLC4yNzMtLjk1MlYzLjg5MVpNNjIuOTYyLDExaC0xLjdsLTIuNTItNC40MjRWMTFINTcuMDI1VjMuODkxaDEuNzE0bDIuNTE1LDQuNDI0VjMuODkxaDEuNzA5Wm0xLjI4NCwwVjMuODkxaDIuMjlhMy4zNjksMy4zNjksMCwwLDEsMS42OTQuNDI3QTMsMywwLDAsMSw2OS40LDUuNTI0YTMuNjQxLDMuNjQxLDAsMCwxLC40MjcsMS43NDZWNy42YTMuNjYyLDMuNjYyLDAsMCwxLS40MTMsMS43NSwzLjAxNiwzLjAxNiwwLDAsMS0xLjE2MiwxLjIxMUEzLjMsMy4zLDAsMCwxLDY2LjU4NSwxMVpNNjUuOTYsNS4yMTRWOS42ODJoLjZhMS4zMzMsMS4zMzMsMCwwLDAsMS4xMzMtLjUyNSwyLjU3MiwyLjU3MiwwLDAsMCwuNC0xLjU2VjcuMjg5YTIuNTUxLDIuNTUxLDAsMCwwLS40LTEuNTUzLDEuMzU2LDEuMzU2LDAsMCwwLTEuMTUyLS41MjJaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMCAxOCkiIGZpbGw9IiMwNTBjMWEiLz4NCiAgICAgIDwvZz4NCiAgICAgIDxnIGlkPSJfTW91c2UtMiIgZGF0YS1uYW1lPSLwn4yVICBNb3VzZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTI5IDY5MCkiPg0KICAgICAgICA8ZyBpZD0iRHJhZyI+DQogICAgICAgICAgPHBhdGggaWQ9IlJlY3RhbmdsZV8xOTA2IiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAxOTA2IiBkPSJNNy4yLDBIMjguOEE3LjIsNy4yLDAsMCwxLDM2LDcuMlYzNkExOCwxOCwwLDAsMSwxOCw1NGgwQTE4LDE4LDAsMCwxLDAsMzZWNy4yQTcuMiw3LjIsMCwwLDEsNy4yLDBaIiBvcGFjaXR5PSIwLjA3Ii8+DQogICAgICAgICAgPHBhdGggaWQ9IlJlY3RhbmdsZV8xOTA3IiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAxOTA3IiBkPSJNNy4yLDBIMjguOEE3LjIsNy4yLDAsMCwxLDM2LDcuMlYzNkExOCwxOCwwLDAsMSwxOCw1NGgwQTE4LDE4LDAsMCwxLDAsMzZWNy4yQTcuMiw3LjIsMCwwLDEsNy4yLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMCkiIG9wYWNpdHk9IjAuMDciLz4NCiAgICAgICAgICA8cGF0aCBpZD0iUmVjdGFuZ2xlXzE5MDQiIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDE5MDQiIGQ9Ik03LjIsMEgyOC44QTcuMiw3LjIsMCwwLDEsMzYsNy4yVjM2QTE4LDE4LDAsMCwxLDE4LDU0aDBBMTgsMTgsMCwwLDEsMCwzNlY3LjJBNy4yLDcuMiwwLDAsMSw3LjIsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwKSIgb3BhY2l0eT0iMC4wNyIvPg0KICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGVfMTkwNSIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMTkwNSIgZD0iTTcuMiwwSDI4LjhBNy4yLDcuMiwwLDAsMSwzNiw3LjJWMzZBMTgsMTgsMCwwLDEsMTgsNTRoMEExOCwxOCwwLDAsMSwwLDM2VjcuMkE3LjIsNy4yLDAsMCwxLDcuMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTApIiBvcGFjaXR5PSIwLjA3Ii8+DQogICAgICAgIDwvZz4NCiAgICAgICAgPGcgaWQ9IkJhc2UtMiIgZGF0YS1uYW1lPSJCYXNlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTA0IC02NDMpIj4NCiAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA4ODUsIDU5MykiIGZpbHRlcj0idXJsKCNSZWN0YW5nbGVfMTg5OS0yKSI+DQogICAgICAgICAgICA8cGF0aCBpZD0iUmVjdGFuZ2xlXzE4OTktOCIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMTg5OSIgZD0iTTcuMiwwSDI4LjhBNy4yLDcuMiwwLDAsMSwzNiw3LjJWMzZBMTgsMTgsMCwwLDEsMTgsNTRoMEExOCwxOCwwLDAsMSwwLDM2VjcuMkE3LjIsNy4yLDAsMCwxLDcuMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQgNTApIiBmaWxsPSIjMjEyMTIxIi8+DQogICAgICAgICAgPC9nPg0KICAgICAgICAgIDxwYXRoIGlkPSJTdWJ0cmFjdGlvbl8xMi0yIiBkYXRhLW5hbWU9IlN1YnRyYWN0aW9uIDEyIiBkPSJNLTQxMDIsMjcwNGExNy44ODEsMTcuODgxLDAsMCwxLTEyLjcyOC01LjI3MkExNy44ODIsMTcuODgyLDAsMCwxLTQxMjAsMjY4NnYtMjguOGE3LjIwOCw3LjIwOCwwLDAsMSw3LjItNy4yaDIxLjZhNy4yMDgsNy4yMDgsMCwwLDEsNy4yLDcuMlYyNjg2YTE3Ljg4MSwxNy44ODEsMCwwLDEtNS4yNzIsMTIuNzI4QTE3Ljg4NCwxNy44ODQsMCwwLDEtNDEwMiwyNzA0Wm0tMTAuNC01MmE1LjYwNiw1LjYwNiwwLDAsMC01LjYsNS42VjI2ODJhMTYuMDE4LDE2LjAxOCwwLDAsMCwxNiwxNiwxNi4wMTgsMTYuMDE4LDAsMCwwLDE2LTE2di0yNC40YTUuNjA2LDUuNjA2LDAsMCwwLTUuNi01LjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MDM5IC0yMDA3KSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQpIi8+DQogICAgICAgIDwvZz4NCiAgICAgICAgPHBhdGggaWQ9IlRvcC0yIiBkYXRhLW5hbWU9IlRvcCIgZD0iTTUuNiwwSDI2LjRBNS42LDUuNiwwLDAsMSwzMiw1LjZWMzBBMTYsMTYsMCwwLDEsMTYsNDZoMEExNiwxNiwwLDAsMSwwLDMwVjUuNkE1LjYsNS42LDAsMCwxLDUuNiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcgMikiIGZpbGw9InVybCgjbGluZWFyLWdyYWRpZW50LTIpIi8+DQogICAgICAgIDxwYXRoIGlkPSJUcmlnZ2VyLVJpZ2h0LTMiIGRhdGEtbmFtZT0iVHJpZ2dlci1SaWdodCIgZD0iTTAsMEg5LjVhNSw1LDAsMCwxLDUsNVYxN2EwLDAsMCwwLDEsMCwwSDBhMCwwLDAsMCwxLDAsMFYwQTAsMCwwLDAsMSwwLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMy41IDMpIiBmaWxsPSIjZmZmIiBvcGFjaXR5PSIwLjE1Ii8+DQogICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIC0xOSwgLTUwKSIgZmlsdGVyPSJ1cmwoI1RyaWdnZXItTGVmdCkiPg0KICAgICAgICAgIDxwYXRoIGlkPSJUcmlnZ2VyLUxlZnQtNCIgZGF0YS1uYW1lPSJUcmlnZ2VyLUxlZnQiIGQ9Ik01LDBoOS41YTAsMCwwLDAsMSwwLDBWMTdhMCwwLDAsMCwxLDAsMEgwYTAsMCwwLDAsMSwwLDBWNUE1LDUsMCwwLDEsNSwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzcgNTMpIiBmaWxsPSIjZmZiNzAwIi8+DQogICAgICAgIDwvZz4NCiAgICAgICAgPGcgaWQ9IlNjcm9sbHdoZWVsLTUiIGRhdGEtbmFtZT0iU2Nyb2xsd2hlZWwiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMwIDExKSIgZmlsbD0iIzRkNGQ0ZCIgc3Ryb2tlPSIjMzEzMTMxIiBzdHJva2Utd2lkdGg9IjEiPg0KICAgICAgICAgIDxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjE0IiBzdHJva2U9Im5vbmUiLz4NCiAgICAgICAgICA8cmVjdCB4PSItMC41IiB5PSItMC41IiB3aWR0aD0iNyIgaGVpZ2h0PSIxNSIgZmlsbD0ibm9uZSIvPg0KICAgICAgICA8L2c+DQogICAgICA8L2c+DQogICAgICA8cGF0aCBpZD0iTGFiZWwtV2VsY29tZS02IiBkYXRhLW5hbWU9IkxhYmVsLVdlbGNvbWUiIGQ9Ik0tMTguOTE0LS45ODZoMy4xMzVMLTE1Ljk1NSwwaC00LjMzNmwxLjIzNS03LjEwOWgxLjIwNlpNLTEyLjcxMi4xYTIuMjEzLDIuMjEzLDAsMCwxLTEuMTk0LS4zNDcsMS45NzIsMS45NzIsMCwwLDEtLjc0Ny0uOTA4LDIuNywyLjcsMCwwLDEtLjE4My0xLjI4NGwuMDE1LS4yYTMuNTM2LDMuNTM2LDAsMCwxLC40NzEtMS40NDgsMi42ODksMi42ODksMCwwLDEsLjk1NS0uOTc0LDIuMzIxLDIuMzIxLDAsMCwxLDEuMjQtLjMxNywxLjczMSwxLjczMSwwLDAsMSwxLjQ4Ny43MzhBMi43MTEsMi43MTEsMCwwLDEtMTAuMy0yLjc2OWwtLjA2OC41MDloLTMuMzI1YTEuNDM1LDEuNDM1LDAsMCwwLC4yNTQsMS4wMTIsMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAtMTEuMjM4LTEuNWwuNTg2LjYxNWEyLjIyNywyLjIyNywwLDAsMS0uODc0LjczNUEyLjYsMi42LDAsMCwxLTEyLjcxMi4xWm0uNDkzLTQuNTMxcS0uOTE4LS4wMjktMS4zNzcsMS4zbDIuMTkyLDAsLjAyLS4xYTEuNTMyLDEuNTMyLDAsMCwwLDAtLjQzOS45LjksMCwwLDAtLjI3My0uNTQ3QS44NjYuODY2LDAsMCwwLTEyLjIxOS00LjQzNFpNLTkuNDQ2LDBsLjc2Ny00LjRoLS43ODZsLjE1Ni0uODc5aC43ODFsLjA3OC0uNTY2YTIuMTExLDIuMTExLDAsMCwxLC42NjItMS4zLDEuOTU0LDEuOTU0LDAsMCwxLDEuMzc5LS40NjksMy43NDYsMy43NDYsMCwwLDEsLjY4OC4xbC0uMTI3LjkyOGExLjk1NSwxLjk1NSwwLDAsMC0uNDM1LS4wNDkuOTc4Ljk3OCwwLDAsMC0uNjc5LjIyNSwxLjA2LDEuMDYsMCwwLDAtLjMzNy42MzVsLS4wNzMuNWgxLjA0NWwtLjE1Ni44NzloLTEuMDRMLTguMjg5LDBabTUuNjc0LTYuNTY3TC00LTUuMjgzaC45bC0uMTUxLjg3OWgtLjkwOGwtLjUsMi45NTlhMS4wMTIsMS4wMTIsMCwwLDAsMCwuMjJxLjAyOS4zMTcuMzkxLjMzMmEyLjIwNiwyLjIwNiwwLDAsMCwuNDEtLjA0NGwtLjA3OC45MjhhMi42NTMsMi42NTMsMCwwLDEtLjcyOC4xQTEuMDgsMS4wOCwwLDAsMS01LjU2Ni0uMzIsMS40OTMsMS40OTMsMCwwLDEtNS44LTEuMzg3TC01LjMxLTQuNGgtLjg0NUwtNi01LjI4M2guODRsLjIyNS0xLjI4NFpNLS40MDgtMi41NDRILTIuOWwuMTcxLS45NTdoMi41Wm0yLjg1NiwxLjdhMS4xMTEsMS4xMTEsMCwwLDAsLjczNS0uMjQyLDEuMTA5LDEuMTA5LDAsMCwwLC40MDgtLjY1N2wxLjA5NCwwQTEuODcsMS44NywwLDAsMSw0LjMwNy0uOGEyLjIsMi4yLDAsMCwxLS44MzMuNjY5QTIuMzEsMi4zMSwwLDAsMSwyLjQxNS4xLDEuOTksMS45OSwwLDAsMSwxLjI1Ny0uMjU0YTEuOTQ0LDEuOTQ0LDAsMCwxLS43LS45NDVBMy4wMjMsMy4wMjMsMCwwLDEsLjQxMy0yLjU0NGwuMDE1LS4xNzFBMy40NTcsMy40NTcsMCwwLDEsLjg3NC00LjFhMi42MDgsMi42MDgsMCwwLDEsLjk0LS45NTksMi4zNTQsMi4zNTQsMCwwLDEsMS4yNzktLjMxNywxLjg0OCwxLjg0OCwwLDAsMSwxLjM3Mi41NjksMi4wMDksMi4wMDksMCwwLDEsLjUxMywxLjQyOEgzLjg5NGExLjE4MSwxLjE4MSwwLDAsMC0uMjIyLS43NDIuODEzLjgxMywwLDAsMC0uNjQyLS4zMDgsMS4xNzIsMS4xNzIsMCwwLDAtMS4wNjkuNTc2LDMuMjE2LDMuMjE2LDAsMCwwLS40MiwxLjY4UTEuNTA2LS44NjQsMi40NDktLjg0NVpNNi41LDBINS4zNDRsMS4zLTcuNUg3LjgwNVpNOS4wMjYsMEg3Ljg2OWwuOTE4LTUuMjgzSDkuOTQ0Wk04Ljk1My02LjYzNmEuNjUzLjY1MywwLDAsMSwuMTc2LS40NTkuNjQ0LjY0NCwwLDAsMSwuNDc0LS4yLjYxNi42MTYsMCwwLDEsLjQ3MS4xNzMuNi42LDAsMCwxLC4xODguNDQ3LjYxNy42MTcsMCwwLDEtLjE4My40NTkuNjcxLjY3MSwwLDAsMS0uNDY2LjE5LjYyNi42MjYsMCwwLDEtLjQ2OS0uMTY4QS41ODEuNTgxLDAsMCwxLDguOTUzLTYuNjM2Wk0xMi42MjUtLjg0NWExLjExMSwxLjExMSwwLDAsMCwuNzM1LS4yNDIsMS4xMDksMS4xMDksMCwwLDAsLjQwOC0uNjU3bDEuMDk0LDBhMS44NywxLjg3LDAsMCwxLS4zNzguOTUyLDIuMiwyLjIsMCwwLDEtLjgzMy42NjlBMi4zMSwyLjMxLDAsMCwxLDEyLjU5LjFhMS45OSwxLjk5LDAsMCwxLTEuMTU3LS4zNTIsMS45NDQsMS45NDQsMCwwLDEtLjctLjk0NSwzLjAyMywzLjAyMywwLDAsMS0uMTQ2LTEuMzQ1bC4wMTUtLjE3MUEzLjQ1NywzLjQ1NywwLDAsMSwxMS4wNS00LjFhMi42MDgsMi42MDgsMCwwLDEsLjk0LS45NTksMi4zNTQsMi4zNTQsMCwwLDEsMS4yNzktLjMxNywxLjg0OCwxLjg0OCwwLDAsMSwxLjM3Mi41NjksMi4wMDksMi4wMDksMCwwLDEsLjUxMywxLjQyOEgxNC4wN2ExLjE4MSwxLjE4MSwwLDAsMC0uMjIyLS43NDIuODEzLjgxMywwLDAsMC0uNjQyLS4zMDgsMS4xNzIsMS4xNzIsMCwwLDAtMS4wNjkuNTc2LDMuMjE2LDMuMjE2LDAsMCwwLS40MiwxLjY4UTExLjY4Mi0uODY0LDEyLjYyNS0uODQ1Wm00LjkyNy0xLjQxMS0uNjU0LjU4MUwxNi42MDksMEgxNS40NTJsMS4zLTcuNWgxLjE1N2wtLjc0Miw0LjI1OC40MDUtLjQyLDEuNjgtMS42MjFIMjAuNzNMMTguMzg2LTMuMDI3LDE5LjkyOSwwSDE4LjY3NFpNLTE2LjQxOCwxMGExLjU2NywxLjU2NywwLDAsMS0uMDQ5LS40OTMsMS45NTksMS45NTksMCwwLDEtMS40MTEuNTkxLDEuNjE4LDEuNjE4LDAsMCwxLTEuMTQtLjQ0MiwxLjM2MywxLjM2MywwLDAsMS0uNDIyLTEuMSwxLjYxOCwxLjYxOCwwLDAsMSwuNzIzLTEuMzEzLDMuMTQ2LDMuMTQ2LDAsMCwxLDEuODM2LS40NzlsLjc1Mi4wMS4wNjgtLjM2MWExLjA5LDEuMDksMCwwLDAsMC0uMzU2LjYzNi42MzYsMCwwLDAtLjctLjU0MiwxLjA1MywxLjA1MywwLDAsMC0uNjUyLjE4OC44MTMuODEzLDAsMCwwLS4zNDQuNTNsLTEuMTU3LjAxYTEuNDQ5LDEuNDQ5LDAsMCwxLC4zNDctLjg1NywyLjA1NiwyLjA1NiwwLDAsMSwuODMtLjU3NCwyLjgxLDIuODEsMCwwLDEsMS4wOTQtLjIsMS44NDgsMS44NDgsMCwwLDEsMS4zNDguNTIsMS41NDEsMS41NDEsMCwwLDEsLjQsMS4zTC0xNS4zLDguOTExbC0uMDM5LjQzOWExLjU2MSwxLjU2MSwwLDAsMCwuMDczLjU2MmwwLC4wODhabS0xLjE5MS0uODVhMS4yNzYsMS4yNzYsMCwwLDAsLjY3OS0uMTY4LDEuNzg4LDEuNzg4LDAsMCwwLC41MzItLjQ2MWwuMTgxLTEtLjU1MiwwYTEuOTM5LDEuOTM5LDAsMCwwLTEuMDQ1LjI0Ny45LjksMCwwLDAtLjQ0NC42NzYuNi42LDAsMCwwLC4xNDQuNTE1QS43LjcsMCwwLDAtMTcuNjEsOS4xNVptNS4zMzctNC40MzgtLjExNy42MmEyLjAxNiwyLjAxNiwwLDAsMSwxLjU2Ny0uNzEzLDEuMjc3LDEuMjc3LDAsMCwxLDEuMS41M0EyLjExNSwyLjExNSwwLDAsMS05LjQ2LDYuNTg3TC0xMC4wMzIsMTBoLTEuMTU3bC41NzYtMy40MjhhMS43NTQsMS43NTQsMCwwLDAsMC0uMzkxLjYyMy42MjMsMCwwLDAtLjY5My0uNiwxLjQwNywxLjQwNywwLDAsMC0xLjE1Ny42NDlMLTEzLjExOCwxMGgtMS4xNTdsLjkxMy01LjI4M1ptMy43MTEsMi42NDJhNC4xODUsNC4xODUsMCwwLDEsLjQzOS0xLjQ2NSwyLjQ4LDIuNDgsMCwwLDEsLjg0NS0uOTY5QTEuOTUxLDEuOTUxLDAsMCwxLTYuMTYsNC42MTRhMS41NjEsMS41NjEsMCwwLDEsMS4yNi42TC00LjM5MiwyLjVILTMuMjNsLTEuMyw3LjVILTUuNTY5bC4wNzgtLjU0N2ExLjg0MSwxLjg0MSwwLDAsMS0xLjQ0NS42NDksMS40NTMsMS40NTMsMCwwLDEtMS4xNzktLjU2OSwyLjQ4NCwyLjQ4NCwwLDAsMS0uNDc2LTEuNDg3LDMuOTQ4LDMuOTQ4LDAsMCwxLC4wMTUtLjU5MVptMS4xMjMuNDU0YTEuNjI3LDEuNjI3LDAsMCwwLC4xODguOTYyLjc1MS43NTEsMCwwLDAsLjY2Mi4zNjYsMS4zNTksMS4zNTksMCwwLDAsMS4xNTctLjY0OWwuNC0yLjI3MWEuOS45LDAsMCwwLS44ODktLjYzLDEuMTg5LDEuMTg5LDAsMCwwLTEuMDY5LjU4NkEzLjEyMywzLjEyMywwLDAsMC03LjQzOSw3LjgwOFpNLS43MTUsMTAsLjUxNSwyLjg5MWwxLjkyNCwwYTIuNjMzLDIuNjMzLDAsMCwxLDEuNTMxLjQ0MkEyLjQ4NCwyLjQ4NCwwLDAsMSw0LjksNC41NThhMy42MzksMy42MzksMCwwLDEsLjE3NiwxLjcxNmwtLjA1NC4zODZBNC4yNjMsNC4yNjMsMCwwLDEsNC4zNzUsOC40LDMuNDgxLDMuNDgxLDAsMCwxLDMuMDgzLDkuNTgsMy42NDksMy42NDksMCwwLDEsMS4zNDUsMTBaTTEuNTUsMy44ODcuNjYyLDkuMDE0bC43MTMsMGEyLjIyMSwyLjIyMSwwLDAsMCwxLjYtLjYxM0EyLjk0MywyLjk0MywwLDAsMCwzLjgsNi43MTQsNS43LDUuNywwLDAsMCwzLjg4OSw1LjQyYTEuNzQyLDEuNzQyLDAsMCwwLS40MTMtMS4xMDgsMS4zODEsMS4zODEsMCwwLDAtMS4wMjMtLjQyWk05LjAxNiw1LjhhMi4xMzIsMi4xMzIsMCwwLDAtLjQ1NC0uMDQ5LDEuMzU1LDEuMzU1LDAsMCwwLTEuMjExLjYzTDYuNzE2LDEwSDUuNTU5bC45MTMtNS4yODMsMS4xLDAtLjExNy42YTEuNTEyLDEuNTEyLDAsMCwxLDEuMjUtLjcsMS45LDEuOSwwLDAsMSwuNDQ0LjA3M1pNMTIuMDA5LDEwYTEuNTY3LDEuNTY3LDAsMCwxLS4wNDktLjQ5MywxLjk1OSwxLjk1OSwwLDAsMS0xLjQxMS41OTEsMS42MTgsMS42MTgsMCwwLDEtMS4xNC0uNDQyLDEuMzYzLDEuMzYzLDAsMCwxLS40MjItMS4xLDEuNjE4LDEuNjE4LDAsMCwxLC43MjMtMS4zMTMsMy4xNDYsMy4xNDYsMCwwLDEsMS44MzYtLjQ3OWwuNzUyLjAxLjA2OC0uMzYxYTEuMDksMS4wOSwwLDAsMCwwLS4zNTYuNjM2LjYzNiwwLDAsMC0uNy0uNTQyLDEuMDUzLDEuMDUzLDAsMCwwLS42NTIuMTg4LjgxMy44MTMsMCwwLDAtLjM0NC41M2wtMS4xNTcuMDFhMS40NDksMS40NDksMCwwLDEsLjM0Ny0uODU3LDIuMDU2LDIuMDU2LDAsMCwxLC44My0uNTc0LDIuODEsMi44MSwwLDAsMSwxLjA5NC0uMiwxLjg0OCwxLjg0OCwwLDAsMSwxLjM0OC41MiwxLjU0MSwxLjU0MSwwLDAsMSwuNCwxLjNsLS40MDUsMi40NzYtLjAzOS40MzlhMS41NjEsMS41NjEsMCwwLDAsLjA3My41NjJsMCwuMDg4Wm0tMS4xOTEtLjg1YTEuMjc2LDEuMjc2LDAsMCwwLC42NzktLjE2OCwxLjc4OCwxLjc4OCwwLDAsMCwuNTMyLS40NjFsLjE4MS0xLS41NTIsMGExLjkzOSwxLjkzOSwwLDAsMC0xLjA0NS4yNDcuOS45LDAsMCwwLS40NDQuNjc2LjYuNiwwLDAsMCwuMTQ0LjUxNUEuNy43LDAsMCwwLDEwLjgxOCw5LjE1Wm0zLjYxMy0xLjhhNC4wODcsNC4wODcsMCwwLDEsLjQyNy0xLjQzMSwyLjU4NCwyLjU4NCwwLDAsMSwuODQyLS45NzksMS45ODcsMS45ODcsMCwwLDEsMS4xNjItLjMzLDEuNTU5LDEuNTU5LDAsMCwxLDEuMzEzLjY0bC4xODEtLjU0MiwxLjA1NSwwLS44NzQsNS4xMzdBMi40OTQsMi40OTQsMCwwLDEsMTUuOSwxMi4wODVhMi40NjYsMi40NjYsMCwwLDEtMS4wNTUtLjI1NCwyLjE5MywyLjE5MywwLDAsMS0uOC0uNjQ1bC42MTUtLjdhMS40ODIsMS40ODIsMCwwLDAsMS4yMTEuNjU5LDEuNDE5LDEuNDE5LDAsMCwwLC45NzQtLjMxLDEuNjE2LDEuNjE2LDAsMCwwLC41NDQtLjk0bC4wODMtLjM3MWExLjg2OSwxLjg2OSwwLDAsMS0xLjM4Ny41NzFBMS40OCwxLjQ4LDAsMCwxLDE0LjksOS41MzZhMi40ODQsMi40ODQsMCwwLDEtLjQ5MS0xLjQ4NEE0Ljg3OSw0Ljg3OSwwLDAsMSwxNC40MzEsNy4zNTRabTEuMTQ3LjFhMy41NzEsMy41NzEsMCwwLDAtLjAyLjUzNywxLjM5NCwxLjM5NCwwLDAsMCwuMjM0LjgyLjc4Ni43ODYsMCwwLDAsLjY0LjMxNywxLjM2NiwxLjM2NiwwLDAsMCwxLjE1Mi0uNjFMMTgsNi4xODdhLjk0My45NDMsMCwwLDAtLjktLjYsMS4yMDUsMS4yMDUsMCwwLDAtLjk4Ni40NTQsMi41NDQsMi41NDQsMCwwLDAtLjUyMiwxLjMxM1oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU2MiA3NzcpIiBmaWxsPSIjMDUwYzFhIi8+DQogICAgPC9nPg0KICAgIDxnIGlkPSJHcm91cF8zNTMyIiBkYXRhLW5hbWU9Ikdyb3VwIDM1MzIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY3IC0yNjIpIj4NCiAgICAgIDxnIGlkPSJDb250YWluZXItMyIgZGF0YS1uYW1lPSJDb250YWluZXIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYxNSA2NDApIj4NCiAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8xNjk1Ny0zIiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAxNjk1NyIgd2lkdGg9IjEwNCIgaGVpZ2h0PSIxNjAiIHJ4PSI0IiBmaWxsPSIjZjZmNmY2Ii8+DQogICAgICAgIDxwYXRoIGlkPSJMYWJlbC1XZWxjb21lLTciIGRhdGEtbmFtZT0iTGFiZWwtV2VsY29tZSIgZD0iTTIuMjUxLTEuMzE4SDUuMjM0VjBILjUzN1YtNy4xMDlIMi4yNTFabTkuNjE0LTIuMDlhNC4xOTIsNC4xOTIsMCwwLDEtLjM4NiwxLjg0MSwyLjg1MSwyLjg1MSwwLDAsMS0xLjEsMS4yMzNBMy4wNTIsMy4wNTIsMCwwLDEsOC43NjQuMSwzLjEsMy4xLDAsMCwxLDcuMTUzLS4zMmEyLjg0NiwyLjg0NiwwLDAsMS0xLjEtMS4xOTRBNC4wNzIsNC4wNzIsMCwwLDEsNS42NDQtMy4zdi0uNEE0LjIxMSw0LjIxMSwwLDAsMSw2LjAyOC01LjU0YTIuODQ0LDIuODQ0LDAsMCwxLDEuMS0xLjIzMywzLjA3NCwzLjA3NCwwLDAsMSwxLjYyOC0uNDM1LDMuMDQ0LDMuMDQ0LDAsMCwxLDEuNjExLjQzLDIuOSwyLjksMCwwLDEsMS4xLDEuMjIzLDQuMDksNC4wOSwwLDAsMSwuNCwxLjgxOVptLTEuNzQzLS4zYTIuOTksMi45OSwwLDAsMC0uMzU0LTEuNjA5LDEuMTM1LDEuMTM1LDAsMCwwLTEuMDEzLS41NDlxLTEuMjg5LDAtMS4zNjIsMS45MzRsMCwuNTIyQTMuMDc1LDMuMDc1LDAsMCwwLDcuNzM0LTEuOGExLjEzNCwxLjEzNCwwLDAsMCwxLjAzLjU2MiwxLjEyLDEuMTIsMCwwLDAsMS0uNTUyLDIuOTkxLDIuOTkxLDAsMCwwLC4zNTYtMS41ODdabTguODQ3LjNhNC4xOTIsNC4xOTIsMCwwLDEtLjM4NiwxLjg0MSwyLjg1MSwyLjg1MSwwLDAsMS0xLjEsMS4yMzNBMy4wNTIsMy4wNTIsMCwwLDEsMTUuODY5LjEsMy4xLDMuMSwwLDAsMSwxNC4yNTctLjMyYTIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSwxMi43NDktMy4zdi0uNGE0LjIxMSw0LjIxMSwwLDAsMSwuMzgzLTEuODQzLDIuODQ0LDIuODQ0LDAsMCwxLDEuMS0xLjIzMywzLjA3NCwzLjA3NCwwLDAsMSwxLjYyOC0uNDM1LDMuMDQ0LDMuMDQ0LDAsMCwxLDEuNjExLjQzLDIuOSwyLjksMCwwLDEsMS4xLDEuMjIzLDQuMDksNC4wOSwwLDAsMSwuNCwxLjgxOVptLTEuNzQzLS4zYTIuOTksMi45OSwwLDAsMC0uMzU0LTEuNjA5LDEuMTM1LDEuMTM1LDAsMCwwLTEuMDEzLS41NDlxLTEuMjg5LDAtMS4zNjIsMS45MzRsMCwuNTIyQTMuMDc1LDMuMDc1LDAsMCwwLDE0LjgzOC0xLjhhMS4xMzQsMS4xMzQsMCwwLDAsMS4wMy41NjIsMS4xMiwxLjEyLDAsMCwwLDEtLjU1MiwyLjk5MSwyLjk5MSwwLDAsMCwuMzU2LTEuNTg3Wm01LjI0NCwxLjA2LS43Ljc3MVYwSDIwLjA1M1YtNy4xMDloMS43MTR2My4xMzVsLjYtLjlMMjMuOS03LjEwOWgyLjExOWwtMi40LDMuMTQ1TDI2LjAxNSwwSDIzLjk4NFpNMzMuMzc4LTEuMzI4SDMxLjAyOUwzMC42MTksMEgyOC43ODhMMzEuNC03LjEwOWgxLjYxMUwzNS42MzQsMEgzMy43OTNaTTMxLjQzOS0yLjY1MWgxLjUyOEwzMi4yLTUuMTE3Wm03LjU1NC4xMzdoLS45MjhWMEgzNi4zNTFWLTcuMTA5aDIuOGEzLjEyMywzLjEyMywwLDAsMSwxLjk3OC41NjEsMS45LDEuOSwwLDAsMSwuNzEzLDEuNTg1LDIuMzA4LDIuMzA4LDAsMCwxLS4zLDEuMjI5LDIuMTMxLDIuMTMxLDAsMCwxLS45NC43OUw0Mi4wODQtLjA3M1YwSDQwLjI0OFptLS45MjgtMS4zMThoMS4wODRhLjk3My45NzMsMCwwLDAsLjczNS0uMjU3Ljk5My45OTMsMCwwLDAsLjI0Ny0uNzE3LDEsMSwwLDAsMC0uMjQ5LS43MjIuOTY0Ljk2NCwwLDAsMC0uNzMyLS4yNjJIMzguMDY1Wm0xMS4wMy40MjVhNC4xOTIsNC4xOTIsMCwwLDEtLjM4NiwxLjg0MSwyLjg1MSwyLjg1MSwwLDAsMS0xLjEsMS4yMzNBMy4wNTIsMy4wNTIsMCwwLDEsNDUuOTk1LjEsMy4xLDMuMSwwLDAsMSw0NC4zODMtLjMyYTIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSw0Mi44NzUtMy4zdi0uNGE0LjIxMSw0LjIxMSwwLDAsMSwuMzgzLTEuODQzLDIuODQ0LDIuODQ0LDAsMCwxLDEuMS0xLjIzMywzLjA3NCwzLjA3NCwwLDAsMSwxLjYyOC0uNDM1LDMuMDQ0LDMuMDQ0LDAsMCwxLDEuNjExLjQzLDIuOSwyLjksMCwwLDEsMS4xLDEuMjIzLDQuMDksNC4wOSwwLDAsMSwuNCwxLjgxOVptLTEuNzQzLS4zQTIuOTksMi45OSwwLDAsMCw0Ny01LjMxNWExLjEzNSwxLjEzNSwwLDAsMC0xLjAxMy0uNTQ5cS0xLjI4OSwwLTEuMzYyLDEuOTM0bDAsLjUyMkEzLjA3NSwzLjA3NSwwLDAsMCw0NC45NjQtMS44YTEuMTM0LDEuMTM0LDAsMCwwLDEuMDMuNTYyLDEuMTIsMS4xMiwwLDAsMCwxLS41NTIsMi45OTEsMi45OTEsMCwwLDAsLjM1Ni0xLjU4N1ptOC40LTMuNHY0LjY1M2EyLjY3NCwyLjY3NCwwLDAsMS0uMzM3LDEuMzcsMi4xODMsMi4xODMsMCwwLDEtLjk2Ny44ODEsMy40MDYsMy40MDYsMCwwLDEtMS40ODkuMywyLjk0MiwyLjk0MiwwLDAsMS0yLjA0Ni0uNjc0LDIuNCwyLjQsMCwwLDEtLjc2Mi0xLjg0NlYtNy4xMDloMS43MjR2NC43MjJxLjAyOSwxLjE2NywxLjA4NCwxLjE2N2ExLjA0OSwxLjA0OSwwLDAsMCwuODA2LS4yOTMsMS4zNjksMS4zNjksMCwwLDAsLjI3My0uOTUyVi03LjEwOVpNNjIuOTYyLDBoLTEuN2wtMi41Mi00LjQyNFYwSDU3LjAyNVYtNy4xMDloMS43MTRsMi41MTUsNC40MjRWLTcuMTA5aDEuNzA5Wm0xLjI4NCwwVi03LjEwOWgyLjI5YTMuMzY5LDMuMzY5LDAsMCwxLDEuNjk0LjQyN0EzLDMsMCwwLDEsNjkuNC01LjQ3NmEzLjY0MSwzLjY0MSwwLDAsMSwuNDI3LDEuNzQ2Vi0zLjRhMy42NjIsMy42NjIsMCwwLDEtLjQxMywxLjc1QTMuMDE2LDMuMDE2LDAsMCwxLDY4LjI1Ny0uNDQyLDMuMywzLjMsMCwwLDEsNjYuNTg1LDBaTTY1Ljk2LTUuNzg2djQuNDY4aC42YTEuMzMzLDEuMzMzLDAsMCwwLDEuMTMzLS41MjUsMi41NzIsMi41NzIsMCwwLDAsLjQtMS41NnYtLjMwOGEyLjU1MSwyLjU1MSwwLDAsMC0uNC0xLjU1MywxLjM1NiwxLjM1NiwwLDAsMC0xLjE1Mi0uNTIyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAgMTgpIiBmaWxsPSIjMDUwYzFhIi8+DQogICAgICA8L2c+DQogICAgICA8ZyBpZD0iR3JvdXBfMzUzOSIgZGF0YS1uYW1lPSJHcm91cCAzNTM5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTMpIj4NCiAgICAgICAgPGcgaWQ9Il9Nb3VzZS0zIiBkYXRhLW5hbWU9IvCfjJUgIE1vdXNlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDEgNjkwKSI+DQogICAgICAgICAgPGcgaWQ9IkRyYWctMiIgZGF0YS1uYW1lPSJEcmFnIj4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGVfMTkwNi0yIiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAxOTA2IiBkPSJNNy4yLDBIMjguOEE3LjIsNy4yLDAsMCwxLDM2LDcuMlYzNkExOCwxOCwwLDAsMSwxOCw1NGgwQTE4LDE4LDAsMCwxLDAsMzZWNy4yQTcuMiw3LjIsMCwwLDEsNy4yLDBaIiBvcGFjaXR5PSIwLjA3Ii8+DQogICAgICAgICAgICA8cGF0aCBpZD0iUmVjdGFuZ2xlXzE5MDctMiIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMTkwNyIgZD0iTTcuMiwwSDI4LjhBNy4yLDcuMiwwLDAsMSwzNiw3LjJWMzZBMTgsMTgsMCwwLDEsMTgsNTRoMEExOCwxOCwwLDAsMSwwLDM2VjcuMkE3LjIsNy4yLDAsMCwxLDcuMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzApIiBvcGFjaXR5PSIwLjA3Ii8+DQogICAgICAgICAgICA8cGF0aCBpZD0iUmVjdGFuZ2xlXzE5MDQtMiIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMTkwNCIgZD0iTTcuMiwwSDI4LjhBNy4yLDcuMiwwLDAsMSwzNiw3LjJWMzZBMTgsMTgsMCwwLDEsMTgsNTRoMEExOCwxOCwwLDAsMSwwLDM2VjcuMkE3LjIsNy4yLDAsMCwxLDcuMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjApIiBvcGFjaXR5PSIwLjA3Ii8+DQogICAgICAgICAgICA8cGF0aCBpZD0iUmVjdGFuZ2xlXzE5MDUtMiIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMTkwNSIgZD0iTTcuMiwwSDI4LjhBNy4yLDcuMiwwLDAsMSwzNiw3LjJWMzZBMTgsMTgsMCwwLDEsMTgsNTRoMEExOCwxOCwwLDAsMSwwLDM2VjcuMkE3LjIsNy4yLDAsMCwxLDcuMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTApIiBvcGFjaXR5PSIwLjA3Ii8+DQogICAgICAgICAgPC9nPg0KICAgICAgICAgIDxnIGlkPSJCYXNlLTMiIGRhdGEtbmFtZT0iQmFzZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTkwNCAtNjQzKSI+DQogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA3NzcsIDU5MykiIGZpbHRlcj0idXJsKCNSZWN0YW5nbGVfMTg5OS0zKSI+DQogICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGVfMTg5OS05IiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAxODk5IiBkPSJNNy4yLDBIMjguOEE3LjIsNy4yLDAsMCwxLDM2LDcuMlYzNkExOCwxOCwwLDAsMSwxOCw1NGgwQTE4LDE4LDAsMCwxLDAsMzZWNy4yQTcuMiw3LjIsMCwwLDEsNy4yLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNDIgNTApIiBmaWxsPSIjMjEyMTIxIi8+DQogICAgICAgICAgICA8L2c+DQogICAgICAgICAgICA8cGF0aCBpZD0iU3VidHJhY3Rpb25fMTItMyIgZGF0YS1uYW1lPSJTdWJ0cmFjdGlvbiAxMiIgZD0iTS00MTAyLDI3MDRhMTcuODgxLDE3Ljg4MSwwLDAsMS0xMi43MjgtNS4yNzJBMTcuODgyLDE3Ljg4MiwwLDAsMS00MTIwLDI2ODZ2LTI4LjhhNy4yMDgsNy4yMDgsMCwwLDEsNy4yLTcuMmgyMS42YTcuMjA4LDcuMjA4LDAsMCwxLDcuMiw3LjJWMjY4NmExNy44ODEsMTcuODgxLDAsMCwxLTUuMjcyLDEyLjcyOEExNy44ODQsMTcuODg0LDAsMCwxLTQxMDIsMjcwNFptLTEwLjQtNTJhNS42MDYsNS42MDYsMCwwLDAtNS42LDUuNlYyNjgyYTE2LjAxOCwxNi4wMTgsMCwwLDAsMTYsMTYsMTYuMDE4LDE2LjAxOCwwLDAsMCwxNi0xNnYtMjQuNGE1LjYwNiw1LjYwNiwwLDAsMC01LjYtNS42WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTAzOSAtMjAwNykiIGZpbGw9InVybCgjbGluZWFyLWdyYWRpZW50KSIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8cGF0aCBpZD0iVG9wLTMiIGRhdGEtbmFtZT0iVG9wIiBkPSJNNS42LDBIMjYuNEE1LjYsNS42LDAsMCwxLDMyLDUuNlYzMEExNiwxNiwwLDAsMSwxNiw0NmgwQTE2LDE2LDAsMCwxLDAsMzBWNS42QTUuNiw1LjYsMCwwLDEsNS42LDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNyAyKSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtMikiLz4NCiAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAtMTI3LCAtNTApIiBmaWx0ZXI9InVybCgjVHJpZ2dlci1SaWdodCkiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlRyaWdnZXItUmlnaHQtNCIgZGF0YS1uYW1lPSJUcmlnZ2VyLVJpZ2h0IiBkPSJNMCwwSDkuNWE1LDUsMCwwLDEsNSw1VjE3YTAsMCwwLDAsMSwwLDBIMGEwLDAsMCwwLDEsMCwwVjBBMCwwLDAsMCwxLDAsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MC41IDUzKSIgZmlsbD0iI2ZmYjcwMCIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8cGF0aCBpZD0iVHJpZ2dlci1MZWZ0LTUiIGRhdGEtbmFtZT0iVHJpZ2dlci1MZWZ0IiBkPSJNNSwwaDkuNWEwLDAsMCwwLDEsMCwwVjE3YTAsMCwwLDAsMSwwLDBIMGEwLDAsMCwwLDEsMCwwVjVBNSw1LDAsMCwxLDUsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4IDMpIiBmaWxsPSIjZmZmIiBvcGFjaXR5PSIwLjE1Ii8+DQogICAgICAgICAgPGcgaWQ9IlNjcm9sbHdoZWVsLTYiIGRhdGEtbmFtZT0iU2Nyb2xsd2hlZWwiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMwIDExKSIgZmlsbD0iIzRkNGQ0ZCIgc3Ryb2tlPSIjMzEzMTMxIiBzdHJva2Utd2lkdGg9IjEiPg0KICAgICAgICAgICAgPHJlY3Qgd2lkdGg9IjYiIGhlaWdodD0iMTQiIHN0cm9rZT0ibm9uZSIvPg0KICAgICAgICAgICAgPHJlY3QgeD0iLTAuNSIgeT0iLTAuNSIgd2lkdGg9IjciIGhlaWdodD0iMTUiIGZpbGw9Im5vbmUiLz4NCiAgICAgICAgICA8L2c+DQogICAgICAgIDwvZz4NCiAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtOCIgZGF0YS1uYW1lPSJMYWJlbC1XZWxjb21lIiBkPSJNLTIwLjAzNC0yLjczNGgtMS4zNTdMLTIxLjg3LDBoLTEuMjA2bDEuMjM1LTcuMTA5LDIuMjQxLDBhMi41NTMsMi41NTMsMCwwLDEsMS43NzIuNTU3QTEuNzY5LDEuNzY5LDAsMCwxLTE3LjI5NS01LDIuMTI4LDIuMTI4LDAsMCwxLTE3Ljc1NC0zLjhhMi42NzEsMi42NzEsMCwwLDEtMS4xMzguNzk0bDEuMDUsMi45MzYsMCwuMDczaC0xLjI3OVptLTEuMTkxLTEsMS4xNjcuMDFhMS42NTgsMS42NTgsMCwwLDAsMS4wNTItLjMzLDEuMywxLjMsMCwwLDAsLjUtLjksMS4wMDgsMS4wMDgsMCwwLDAtLjItLjg0NywxLjEsMS4xLDAsMCwwLS44MTUtLjMxNWwtMS4yODksMFpNLTE1Ljg1NCwwaC0xLjE1N2wuOTE4LTUuMjgzaDEuMTU3Wm0tLjA3My02LjYzNmEuNjUzLjY1MywwLDAsMSwuMTc2LS40NTkuNjQ0LjY0NCwwLDAsMSwuNDc0LS4yLjYxNi42MTYsMCwwLDEsLjQ3MS4xNzMuNi42LDAsMCwxLC4xODguNDQ3LjYxNy42MTcsMCwwLDEtLjE4My40NTkuNjcxLjY3MSwwLDAsMS0uNDY2LjE5LjYyNi42MjYsMCwwLDEtLjQ2OS0uMTY4QS41ODEuNTgxLDAsMCwxLTE1LjkyOC02LjYzNlpNLTE0LjMtMi42NDZhNC4wODcsNC4wODcsMCwwLDEsLjQyNy0xLjQzMSwyLjU4NCwyLjU4NCwwLDAsMSwuODQyLS45NzksMS45ODcsMS45ODcsMCwwLDEsMS4xNjItLjMzLDEuNTU5LDEuNTU5LDAsMCwxLDEuMzEzLjY0bC4xODEtLjU0MiwxLjA1NSwwTC0xMC4xOS0uMTQ2QTIuNTM4LDIuNTM4LDAsMCwxLTExLjA2MiwxLjVhMi41MjYsMi41MjYsMCwwLDEtMS43NjUuNTgzLDIuNDY2LDIuNDY2LDAsMCwxLTEuMDU1LS4yNTQsMi4xOTMsMi4xOTMsMCwwLDEtLjgtLjY0NWwuNjE1LS43YTEuNDgyLDEuNDgyLDAsMCwwLDEuMjExLjY1OSwxLjQxOSwxLjQxOSwwLDAsMCwuOTc0LS4zMSwxLjYxNiwxLjYxNiwwLDAsMCwuNTQ0LS45NGwuMDgzLS4zNzFBMS44NjksMS44NjksMCwwLDEtMTIuNjQyLjFhMS40OCwxLjQ4LDAsMCwxLTEuMTg5LS41NjIsMi40ODQsMi40ODQsMCwwLDEtLjQ5MS0xLjQ4NEE0Ljg3OSw0Ljg3OSwwLDAsMS0xNC4zLTIuNjQ2Wm0xLjE0Ny4xYTMuNTcxLDMuNTcxLDAsMCwwLS4wMi41MzcsMS4zOTQsMS4zOTQsMCwwLDAsLjIzNC44Mi43ODYuNzg2LDAsMCwwLC42NC4zMTcsMS4zNjYsMS4zNjYsMCwwLDAsMS4xNTItLjYxbC40MTUtMi4zMzRhLjk0My45NDMsMCwwLDAtLjktLjYsMS4yMDUsMS4yMDUsMCwwLDAtLjk4Ni40NTQsMi41NDQsMi41NDQsMCwwLDAtLjUyMiwxLjMxM1pNLTcuMS00LjdhMS45NTMsMS45NTMsMCwwLDEsMS41LS42NzQsMS4yODksMS4yODksMCwwLDEsMS4xMTYuNTMyQTIuMTEzLDIuMTEzLDAsMCwxLTQuMjE5LTMuNEwtNC43ODUsMEgtNS45NDJsLjU3Ni0zLjQxM2ExLjk5NCwxLjk5NCwwLDAsMCwuMDEtLjM5MS42MzMuNjMzLDAsMCwwLS43LS42MSwxLjQyNywxLjQyNywwLDAsMC0xLjE1Mi42MzVMLTcuODcxLDBILTkuMDI4bDEuMy03LjVoMS4xNjJaTS0uOTg2LTYuNTY3bC0uMjI1LDEuMjg0aC45TC0uNDU5LTQuNGgtLjkwOGwtLjUsMi45NTlhMS4wMTIsMS4wMTIsMCwwLDAsMCwuMjJxLjAyOS4zMTcuMzkxLjMzMmEyLjIwNiwyLjIwNiwwLDAsMCwuNDEtLjA0NGwtLjA3OC45MjhhMi42NTMsMi42NTMsMCwwLDEtLjcyOC4xQTEuMDgsMS4wOCwwLDAsMS0yLjc4MS0uMzJhMS40OTMsMS40OTMsMCwwLDEtLjIzNy0xLjA2N0wtMi41MjQtNC40aC0uODQ1bC4xNTYtLjg3OWguODRsLjIyNS0xLjI4NFpNMi4zNzgtMi41NDRoLTIuNUwuMDU0LTMuNWgyLjVabTIuODU2LDEuN2ExLjExMSwxLjExMSwwLDAsMCwuNzM1LS4yNDIsMS4xMDksMS4xMDksMCwwLDAsLjQwOC0uNjU3bDEuMDk0LDBBMS44NywxLjg3LDAsMCwxLDcuMDkyLS44YTIuMiwyLjIsMCwwLDEtLjgzMy42NjlBMi4zMSwyLjMxLDAsMCwxLDUuMi4xLDEuOTksMS45OSwwLDAsMSw0LjA0My0uMjU0YTEuOTQ0LDEuOTQ0LDAsMCwxLS43LS45NDVBMy4wMjMsMy4wMjMsMCwwLDEsMy4yLTIuNTQ0bC4wMTUtLjE3MUEzLjQ1NywzLjQ1NywwLDAsMSwzLjY2LTQuMWEyLjYwOCwyLjYwOCwwLDAsMSwuOTQtLjk1OSwyLjM1NCwyLjM1NCwwLDAsMSwxLjI3OS0uMzE3LDEuODQ4LDEuODQ4LDAsMCwxLDEuMzcyLjU2OSwyLjAwOSwyLjAwOSwwLDAsMSwuNTEzLDEuNDI4SDYuNjhhMS4xODEsMS4xODEsMCwwLDAtLjIyMi0uNzQyLjgxMy44MTMsMCwwLDAtLjY0Mi0uMzA4LDEuMTcyLDEuMTcyLDAsMCwwLTEuMDY5LjU3NiwzLjIxNiwzLjIxNiwwLDAsMC0uNDIsMS42OFE0LjI5Mi0uODY0LDUuMjM0LS44NDVaTTkuMjg3LDBIOC4xM2wxLjMtNy41aDEuMTU3Wm0yLjUyNCwwSDEwLjY1NGwuOTE4LTUuMjgzaDEuMTU3Wm0tLjA3My02LjYzNmEuNjUzLjY1MywwLDAsMSwuMTc2LS40NTkuNjQ0LjY0NCwwLDAsMSwuNDc0LS4yLjYxNi42MTYsMCwwLDEsLjQ3MS4xNzMuNi42LDAsMCwxLC4xODguNDQ3LjYxNy42MTcsMCwwLDEtLjE4My40NTkuNjcxLjY3MSwwLDAsMS0uNDY2LjE5LjYyNi42MjYsMCwwLDEtLjQ2OS0uMTY4QS41ODEuNTgxLDAsMCwxLDExLjczOC02LjYzNlpNMTUuNDEtLjg0NWExLjExMSwxLjExMSwwLDAsMCwuNzM1LS4yNDIsMS4xMDksMS4xMDksMCwwLDAsLjQwOC0uNjU3bDEuMDk0LDBhMS44NywxLjg3LDAsMCwxLS4zNzguOTUyLDIuMiwyLjIsMCwwLDEtLjgzMy42NjlBMi4zMSwyLjMxLDAsMCwxLDE1LjM3Ni4xYTEuOTksMS45OSwwLDAsMS0xLjE1Ny0uMzUyLDEuOTQ0LDEuOTQ0LDAsMCwxLS43LS45NDUsMy4wMjMsMy4wMjMsMCwwLDEtLjE0Ni0xLjM0NWwuMDE1LS4xNzFBMy40NTcsMy40NTcsMCwwLDEsMTMuODM1LTQuMWEyLjYwOCwyLjYwOCwwLDAsMSwuOTQtLjk1OSwyLjM1NCwyLjM1NCwwLDAsMSwxLjI3OS0uMzE3LDEuODQ4LDEuODQ4LDAsMCwxLDEuMzcyLjU2OSwyLjAwOSwyLjAwOSwwLDAsMSwuNTEzLDEuNDI4SDE2Ljg1NWExLjE4MSwxLjE4MSwwLDAsMC0uMjIyLS43NDIuODEzLjgxMywwLDAsMC0uNjQyLS4zMDgsMS4xNzIsMS4xNzIsMCwwLDAtMS4wNjkuNTc2LDMuMjE2LDMuMjE2LDAsMCwwLS40MiwxLjY4UTE0LjQ2OC0uODY0LDE1LjQxLS44NDVabTQuOTI3LTEuNDExLS42NTQuNTgxTDE5LjM5NSwwSDE4LjIzN2wxLjMtNy41aDEuMTU3bC0uNzQyLDQuMjU4LjQwNS0uNDIsMS42OC0xLjYyMWgxLjQ3OUwyMS4xNzItMy4wMjcsMjIuNzE1LDBIMjEuNDZaTS0xNi40MTgsMTBhMS41NjcsMS41NjcsMCwwLDEtLjA0OS0uNDkzLDEuOTU5LDEuOTU5LDAsMCwxLTEuNDExLjU5MSwxLjYxOCwxLjYxOCwwLDAsMS0xLjE0LS40NDIsMS4zNjMsMS4zNjMsMCwwLDEtLjQyMi0xLjEsMS42MTgsMS42MTgsMCwwLDEsLjcyMy0xLjMxMywzLjE0NiwzLjE0NiwwLDAsMSwxLjgzNi0uNDc5bC43NTIuMDEuMDY4LS4zNjFhMS4wOSwxLjA5LDAsMCwwLDAtLjM1Ni42MzYuNjM2LDAsMCwwLS43LS41NDIsMS4wNTMsMS4wNTMsMCwwLDAtLjY1Mi4xODguODEzLjgxMywwLDAsMC0uMzQ0LjUzbC0xLjE1Ny4wMWExLjQ0OSwxLjQ0OSwwLDAsMSwuMzQ3LS44NTcsMi4wNTYsMi4wNTYsMCwwLDEsLjgzLS41NzQsMi44MSwyLjgxLDAsMCwxLDEuMDk0LS4yLDEuODQ4LDEuODQ4LDAsMCwxLDEuMzQ4LjUyLDEuNTQxLDEuNTQxLDAsMCwxLC40LDEuM0wtMTUuMyw4LjkxMWwtLjAzOS40MzlhMS41NjEsMS41NjEsMCwwLDAsLjA3My41NjJsMCwuMDg4Wm0tMS4xOTEtLjg1YTEuMjc2LDEuMjc2LDAsMCwwLC42NzktLjE2OCwxLjc4OCwxLjc4OCwwLDAsMCwuNTMyLS40NjFsLjE4MS0xLS41NTIsMGExLjkzOSwxLjkzOSwwLDAsMC0xLjA0NS4yNDcuOS45LDAsMCwwLS40NDQuNjc2LjYuNiwwLDAsMCwuMTQ0LjUxNUEuNy43LDAsMCwwLTE3LjYxLDkuMTVabTUuMzM3LTQuNDM4LS4xMTcuNjJhMi4wMTYsMi4wMTYsMCwwLDEsMS41NjctLjcxMywxLjI3NywxLjI3NywwLDAsMSwxLjEuNTNBMi4xMTUsMi4xMTUsMCwwLDEtOS40Niw2LjU4N0wtMTAuMDMyLDEwaC0xLjE1N2wuNTc2LTMuNDI4YTEuNzU0LDEuNzU0LDAsMCwwLDAtLjM5MS42MjMuNjIzLDAsMCwwLS42OTMtLjYsMS40MDcsMS40MDcsMCwwLDAtMS4xNTcuNjQ5TC0xMy4xMTgsMTBoLTEuMTU3bC45MTMtNS4yODNabTMuNzExLDIuNjQyYTQuMTg1LDQuMTg1LDAsMCwxLC40MzktMS40NjUsMi40OCwyLjQ4LDAsMCwxLC44NDUtLjk2OUExLjk1MSwxLjk1MSwwLDAsMS02LjE2LDQuNjE0YTEuNTYxLDEuNTYxLDAsMCwxLDEuMjYuNkwtNC4zOTIsMi41SC0zLjIzbC0xLjMsNy41SC01LjU2OWwuMDc4LS41NDdhMS44NDEsMS44NDEsMCwwLDEtMS40NDUuNjQ5LDEuNDUzLDEuNDUzLDAsMCwxLTEuMTc5LS41NjksMi40ODQsMi40ODQsMCwwLDEtLjQ3Ni0xLjQ4NywzLjk0OCwzLjk0OCwwLDAsMSwuMDE1LS41OTFabTEuMTIzLjQ1NGExLjYyNywxLjYyNywwLDAsMCwuMTg4Ljk2Mi43NTEuNzUxLDAsMCwwLC42NjIuMzY2LDEuMzU5LDEuMzU5LDAsMCwwLDEuMTU3LS42NDlsLjQtMi4yNzFhLjkuOSwwLDAsMC0uODg5LS42MywxLjE4OSwxLjE4OSwwLDAsMC0xLjA2OS41ODZBMy4xMjMsMy4xMjMsMCwwLDAtNy40MzksNy44MDhaTS0uNzE1LDEwLC41MTUsMi44OTFsMS45MjQsMGEyLjYzMywyLjYzMywwLDAsMSwxLjUzMS40NDJBMi40ODQsMi40ODQsMCwwLDEsNC45LDQuNTU4YTMuNjM5LDMuNjM5LDAsMCwxLC4xNzYsMS43MTZsLS4wNTQuMzg2QTQuMjYzLDQuMjYzLDAsMCwxLDQuMzc1LDguNCwzLjQ4MSwzLjQ4MSwwLDAsMSwzLjA4Myw5LjU4LDMuNjQ5LDMuNjQ5LDAsMCwxLDEuMzQ1LDEwWk0xLjU1LDMuODg3LjY2Miw5LjAxNGwuNzEzLDBhMi4yMjEsMi4yMjEsMCwwLDAsMS42LS42MTNBMi45NDMsMi45NDMsMCwwLDAsMy44LDYuNzE0LDUuNyw1LjcsMCwwLDAsMy44ODksNS40MmExLjc0MiwxLjc0MiwwLDAsMC0uNDEzLTEuMTA4LDEuMzgxLDEuMzgxLDAsMCwwLTEuMDIzLS40MlpNOS4wMTYsNS44YTIuMTMyLDIuMTMyLDAsMCwwLS40NTQtLjA0OSwxLjM1NSwxLjM1NSwwLDAsMC0xLjIxMS42M0w2LjcxNiwxMEg1LjU1OWwuOTEzLTUuMjgzLDEuMSwwLS4xMTcuNmExLjUxMiwxLjUxMiwwLDAsMSwxLjI1LS43LDEuOSwxLjksMCwwLDEsLjQ0NC4wNzNaTTEyLjAwOSwxMGExLjU2NywxLjU2NywwLDAsMS0uMDQ5LS40OTMsMS45NTksMS45NTksMCwwLDEtMS40MTEuNTkxLDEuNjE4LDEuNjE4LDAsMCwxLTEuMTQtLjQ0MiwxLjM2MywxLjM2MywwLDAsMS0uNDIyLTEuMSwxLjYxOCwxLjYxOCwwLDAsMSwuNzIzLTEuMzEzLDMuMTQ2LDMuMTQ2LDAsMCwxLDEuODM2LS40NzlsLjc1Mi4wMS4wNjgtLjM2MWExLjA5LDEuMDksMCwwLDAsMC0uMzU2LjYzNi42MzYsMCwwLDAtLjctLjU0MiwxLjA1MywxLjA1MywwLDAsMC0uNjUyLjE4OC44MTMuODEzLDAsMCwwLS4zNDQuNTNsLTEuMTU3LjAxYTEuNDQ5LDEuNDQ5LDAsMCwxLC4zNDctLjg1NywyLjA1NiwyLjA1NiwwLDAsMSwuODMtLjU3NCwyLjgxLDIuODEsMCwwLDEsMS4wOTQtLjIsMS44NDgsMS44NDgsMCwwLDEsMS4zNDguNTIsMS41NDEsMS41NDEsMCwwLDEsLjQsMS4zbC0uNDA1LDIuNDc2LS4wMzkuNDM5YTEuNTYxLDEuNTYxLDAsMCwwLC4wNzMuNTYybDAsLjA4OFptLTEuMTkxLS44NWExLjI3NiwxLjI3NiwwLDAsMCwuNjc5LS4xNjgsMS43ODgsMS43ODgsMCwwLDAsLjUzMi0uNDYxbC4xODEtMS0uNTUyLDBhMS45MzksMS45MzksMCwwLDAtMS4wNDUuMjQ3LjkuOSwwLDAsMC0uNDQ0LjY3Ni42LjYsMCwwLDAsLjE0NC41MTVBLjcuNywwLDAsMCwxMC44MTgsOS4xNVptMy42MTMtMS44YTQuMDg3LDQuMDg3LDAsMCwxLC40MjctMS40MzEsMi41ODQsMi41ODQsMCwwLDEsLjg0Mi0uOTc5LDEuOTg3LDEuOTg3LDAsMCwxLDEuMTYyLS4zMywxLjU1OSwxLjU1OSwwLDAsMSwxLjMxMy42NGwuMTgxLS41NDIsMS4wNTUsMC0uODc0LDUuMTM3QTIuNDk0LDIuNDk0LDAsMCwxLDE1LjksMTIuMDg1YTIuNDY2LDIuNDY2LDAsMCwxLTEuMDU1LS4yNTQsMi4xOTMsMi4xOTMsMCwwLDEtLjgtLjY0NWwuNjE1LS43YTEuNDgyLDEuNDgyLDAsMCwwLDEuMjExLjY1OSwxLjQxOSwxLjQxOSwwLDAsMCwuOTc0LS4zMSwxLjYxNiwxLjYxNiwwLDAsMCwuNTQ0LS45NGwuMDgzLS4zNzFhMS44NjksMS44NjksMCwwLDEtMS4zODcuNTcxQTEuNDgsMS40OCwwLDAsMSwxNC45LDkuNTM2YTIuNDg0LDIuNDg0LDAsMCwxLS40OTEtMS40ODRBNC44NzksNC44NzksMCwwLDEsMTQuNDMxLDcuMzU0Wm0xLjE0Ny4xYTMuNTcxLDMuNTcxLDAsMCwwLS4wMi41MzcsMS4zOTQsMS4zOTQsMCwwLDAsLjIzNC44Mi43ODYuNzg2LDAsMCwwLC42NC4zMTcsMS4zNjYsMS4zNjYsMCwwLDAsMS4xNTItLjYxTDE4LDYuMTg3YS45NDMuOTQzLDAsMCwwLS45LS42LDEuMjA1LDEuMjA1LDAsMCwwLS45ODYuNDU0LDIuNTQ0LDIuNTQ0LDAsMCwwLS41MjIsMS4zMTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNzQgNzc3KSIgZmlsbD0iIzA1MGMxYSIvPg0KICAgICAgPC9nPg0KICAgIDwvZz4NCiAgICA8ZyBpZD0iR3JvdXBfMzU0NSIgZGF0YS1uYW1lPSJHcm91cCAzNTQ1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNzMgLTk4KSI+DQogICAgICA8ZyBpZD0iQ29udGFpbmVyLTQiIGRhdGEtbmFtZT0iQ29udGFpbmVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MjUgNjQwKSI+DQogICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMTY5NTctNCIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMTY5NTciIHdpZHRoPSIzOTAiIGhlaWdodD0iMTYwIiByeD0iNCIgZmlsbD0iI2Y2ZjZmNiIvPg0KICAgICAgICA8cGF0aCBpZD0iTGFiZWwtV2VsY29tZS05IiBkYXRhLW5hbWU9IkxhYmVsLVdlbGNvbWUiIGQ9Ik0yLjc4OC03LjEwOSw0LjM3NS0yLjE2Myw1Ljk1Ny03LjEwOUg4LjIxM1YwSDYuNDk0Vi0xLjY2bC4xNjYtMy40TDQuOTQxLDBIMy44MDlMMi4wODUtNS4wNjNsLjE2NiwzLjRWMEguNTM3Vi03LjEwOVptMTIuNzM0LDMuN2E0LjE5Miw0LjE5MiwwLDAsMS0uMzg2LDEuODQxLDIuODUxLDIuODUxLDAsMCwxLTEuMSwxLjIzM0EzLjA1MiwzLjA1MiwwLDAsMSwxMi40MjIuMSwzLjEsMy4xLDAsMCwxLDEwLjgxLS4zMmEyLjg0NiwyLjg0NiwwLDAsMS0xLjEtMS4xOTRBNC4wNzIsNC4wNzIsMCwwLDEsOS4zLTMuM3YtLjRBNC4yMTEsNC4yMTEsMCwwLDEsOS42ODUtNS41NGEyLjg0NCwyLjg0NCwwLDAsMSwxLjEtMS4yMzMsMy4wNzQsMy4wNzQsMCwwLDEsMS42MjgtLjQzNSwzLjA0NCwzLjA0NCwwLDAsMSwxLjYxMS40MywyLjksMi45LDAsMCwxLDEuMSwxLjIyMyw0LjA5LDQuMDksMCwwLDEsLjQsMS44MTlabS0xLjc0My0uM2EyLjk5LDIuOTksMCwwLDAtLjM1NC0xLjYwOSwxLjEzNSwxLjEzNSwwLDAsMC0xLjAxMy0uNTQ5cS0xLjI4OSwwLTEuMzYyLDEuOTM0bDAsLjUyMkEzLjA3NSwzLjA3NSwwLDAsMCwxMS4zOTEtMS44YTEuMTM0LDEuMTM0LDAsMCwwLDEuMDMuNTYyLDEuMTIsMS4xMiwwLDAsMCwxLS41NTIsMi45OTEsMi45OTEsMCwwLDAsLjM1Ni0xLjU4N1ptNS40NjksMS4xOTFIMTguMzJWMEgxNi42MDZWLTcuMTA5aDIuOGEzLjEyMywzLjEyMywwLDAsMSwxLjk3OC41NjEsMS45LDEuOSwwLDAsMSwuNzEzLDEuNTg1LDIuMzA4LDIuMzA4LDAsMCwxLS4zLDEuMjI5LDIuMTMxLDIuMTMxLDAsMCwxLS45NC43OUwyMi4zMzgtLjA3M1YwSDIwLjVaTTE4LjMyLTMuODMzSDE5LjRhLjk3My45NzMsMCwwLDAsLjczNS0uMjU3Ljk5My45OTMsMCwwLDAsLjI0Ny0uNzE3LDEsMSwwLDAsMC0uMjQ5LS43MjIuOTY0Ljk2NCwwLDAsMC0uNzMyLS4yNjJIMTguMzJabTkuNDE5LjgxNWgtMi43djEuN2gzLjE4NFYwaC00LjlWLTcuMTA5aDQuOTA3djEuMzIzSDI1LjA0M3YxLjVoMi43Wm05LjgyOS42MWEyLjYsMi42LDAsMCwxLS40LDEuMzExLDIuNDE2LDIuNDE2LDAsMCwxLTEuMDI4Ljg4MUEzLjUsMy41LDAsMCwxLDM0LjYyOC4xYTIuNzkyLDIuNzkyLDAsMCwxLTIuMjA3LS45MTMsMy43NywzLjc3LDAsMCwxLS44MDYtMi41Nzh2LS4zNTJhNC4zLDQuMywwLDAsMSwuMzY0LTEuODI5LDIuNzU2LDIuNzU2LDAsMCwxLDEuMDQ3LTEuMjExLDIuOTIyLDIuOTIyLDAsMCwxLDEuNTgyLS40MjcsMy4wNjQsMy4wNjQsMCwwLDEsMi4wOC42ODEsMi42OTEsMi42OTEsMCwwLDEsLjg5NCwxLjg3N0gzNS44NzNhMS4yNzMsMS4yNzMsMCwwLDAtLjMyNy0uOTMzLDEuMzQ2LDEuMzQ2LDAsMCwwLS45MzctLjI4MywxLjAyNCwxLjAyNCwwLDAsMC0uOTM3LjQ3OSwzLjA3NSwzLjA3NSwwLDAsMC0uMzEyLDEuNTI4di41YTMuNCwzLjQsMCwwLDAsLjI4NiwxLjYyNiwxLjA0NSwxLjA0NSwwLDAsMCwuOTg0LjQ4OCwxLjMxNiwxLjMxNiwwLDAsMCwuOS0uMjc4LDEuMTgxLDEuMTgxLDAsMCwwLC4zMzItLjg4NFptNy4wMzEtMWE0LjE5Miw0LjE5MiwwLDAsMS0uMzg2LDEuODQxLDIuODUxLDIuODUxLDAsMCwxLTEuMSwxLjIzM0EzLjA1MiwzLjA1MiwwLDAsMSw0MS41LjEsMy4xLDMuMSwwLDAsMSwzOS44ODctLjMyYTIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSwzOC4zNzgtMy4zdi0uNGE0LjIxMSw0LjIxMSwwLDAsMSwuMzgzLTEuODQzLDIuODQ0LDIuODQ0LDAsMCwxLDEuMS0xLjIzMywzLjA3NCwzLjA3NCwwLDAsMSwxLjYyOC0uNDM1LDMuMDQ0LDMuMDQ0LDAsMCwxLDEuNjExLjQzLDIuOSwyLjksMCwwLDEsMS4xLDEuMjIzLDQuMDksNC4wOSwwLDAsMSwuNCwxLjgxOVptLTEuNzQzLS4zQTIuOTksMi45OSwwLDAsMCw0Mi41LTUuMzE1YTEuMTM1LDEuMTM1LDAsMCwwLTEuMDEzLS41NDlxLTEuMjg5LDAtMS4zNjIsMS45MzRsMCwuNTIyQTMuMDc1LDMuMDc1LDAsMCwwLDQwLjQ2OC0xLjhhMS4xMzQsMS4xMzQsMCwwLDAsMS4wMy41NjIsMS4xMiwxLjEyLDAsMCwwLDEtLjU1MiwyLjk5MSwyLjk5MSwwLDAsMCwuMzU2LTEuNTg3Wk01MS42MiwwaC0xLjdMNDcuNC00LjQyNFYwSDQ1LjY4MlYtNy4xMDlINDcuNGwyLjUxNSw0LjQyNFYtNy4xMDlINTEuNjJabTYuODY1LTUuNzg2SDU2LjM1MVYwSDU0LjYzN1YtNS43ODZINTIuNTQyVi03LjEwOWg1Ljk0MlptMy41NjQsMy4yNzFoLS45MjhWMEg1OS40MDdWLTcuMTA5aDIuOGEzLjEyMywzLjEyMywwLDAsMSwxLjk3OC41NjFBMS45LDEuOSwwLDAsMSw2NC45LTQuOTYzYTIuMzA4LDIuMzA4LDAsMCwxLS4zLDEuMjI5LDIuMTMxLDIuMTMxLDAsMCwxLS45NC43OUw2NS4xNC0uMDczVjBINjMuM1ptLS45MjgtMS4zMThoMS4wODRhLjk3My45NzMsMCwwLDAsLjczNS0uMjU3Ljk5My45OTMsMCwwLDAsLjI0Ny0uNzE3LDEsMSwwLDAsMC0uMjQ5LS43MjIuOTY0Ljk2NCwwLDAsMC0uNzMyLS4yNjJINjEuMTIxWm0xMS4wMy40MjVhNC4xOTIsNC4xOTIsMCwwLDEtLjM4NiwxLjg0MSwyLjg1MSwyLjg1MSwwLDAsMS0xLjEsMS4yMzNBMy4wNTIsMy4wNTIsMCwwLDEsNjkuMDUxLjEsMy4xLDMuMSwwLDAsMSw2Ny40MzktLjMyYTIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSw2NS45MzEtMy4zdi0uNGE0LjIxMSw0LjIxMSwwLDAsMSwuMzgzLTEuODQzLDIuODQ0LDIuODQ0LDAsMCwxLDEuMS0xLjIzMywzLjA3NCwzLjA3NCwwLDAsMSwxLjYyOC0uNDM1LDMuMDQ0LDMuMDQ0LDAsMCwxLDEuNjExLjQzLDIuOSwyLjksMCwwLDEsMS4xLDEuMjIzLDQuMDksNC4wOSwwLDAsMSwuNCwxLjgxOVptLTEuNzQzLS4zYTIuOTksMi45OSwwLDAsMC0uMzU0LTEuNjA5LDEuMTM1LDEuMTM1LDAsMCwwLTEuMDEzLS41NDlxLTEuMjg5LDAtMS4zNjIsMS45MzRsMCwuNTIyQTMuMDc1LDMuMDc1LDAsMCwwLDY4LjAyMS0xLjhhMS4xMzQsMS4xMzQsMCwwLDAsMS4wMy41NjIsMS4xMiwxLjEyLDAsMCwwLDEtLjU1MiwyLjk5MSwyLjk5MSwwLDAsMCwuMzU2LTEuNTg3Wm00LjU0MSwyLjM4OGgyLjk4M1YwaC00LjdWLTcuMTA5aDEuNzE0Wm03LjU3My0uNTcxYS43LjcsMCwwLDAtLjI2Ni0uNTg2LDMuMzA4LDMuMzA4LDAsMCwwLS45MzUtLjQzNSw4Ljk3MSw4Ljk3MSwwLDAsMS0xLjA5NC0uNDM1QTIuMDcxLDIuMDcxLDAsMCwxLDc4Ljg0NS01LjIxYTEuNjczLDEuNjczLDAsMCwxLC4zNDQtMS4wNDIsMi4yMjYsMi4yMjYsMCwwLDEsLjk3NC0uNywzLjc5MSwzLjc5MSwwLDAsMSwxLjQxNi0uMjUxLDMuMzE2LDMuMzE2LDAsMCwxLDEuMzc1LjI3MywyLjE3NiwyLjE3NiwwLDAsMSwuOTQ1Ljc3OUEyLjAzNCwyLjAzNCwwLDAsMSw4NC4yMzYtNUg4Mi41MjdhLjg1OS44NTksMCwwLDAtLjI2Ni0uNjc0LDEuMDM3LDEuMDM3LDAsMCwwLS43Mi0uMjM5LDEuMTcsMS4xNywwLDAsMC0uNzI1LjIuNjIyLjYyMiwwLDAsMC0uMjY2LjUxNS42MjYuNjI2LDAsMCwwLC4yOTMuNSwzLjY5NCwzLjY5NCwwLDAsMCwxLjAzLjQ1OSw2LjMxMSw2LjMxMSwwLDAsMSwxLjIxMS41MUEyLjAzNSwyLjAzNSwwLDAsMSw4NC4yMzYtMS45YTEuNzM2LDEuNzM2LDAsMCwxLS43LDEuNDY1QTMuMTI3LDMuMTI3LDAsMCwxLDgxLjYuMWEzLjgyNywzLjgyNywwLDAsMS0xLjU2NS0uMzEsMi4zNTksMi4zNTksMCwwLDEtMS4wNTUtLjg1QTIuMjE0LDIuMjE0LDAsMCwxLDc4LjYzLTIuM2gxLjcxOWExLjA5LDEuMDksMCwwLDAsLjMuODQyLDEuNCwxLjQsMCwwLDAsLjk1OS4yNzEsMS4xLDEuMSwwLDAsMCwuNjcxLS4xODNBLjYuNiwwLDAsMCw4Mi41MjItMS44OVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwIDE4KSIgZmlsbD0iIzA1MGMxYSIvPg0KICAgICAgPC9nPg0KICAgICAgPGcgaWQ9Ikdyb3VwXzQ1MjciIGRhdGEtbmFtZT0iR3JvdXAgNDUyNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTc4KSI+DQogICAgICAgIDxnIGlkPSJSZWN0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3MzggNjc1KSI+DQogICAgICAgICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgLTQ1OSwgLTE5OSkiIGZpbHRlcj0idXJsKCNQYXRoXzkxNCkiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE0LTE2IiBkYXRhLW5hbWU9IlBhdGggOTE0IiBkPSJNMiwwSDYwYTIuMTc1LDIuMTc1LDAsMCwxLDEuNS42NzNBMi40MDgsMi40MDgsMCwwLDEsNjEuNzY1LDJWMzBBMS42NCwxLjY0LDAsMCwxLDYwLDMxLjc4OWwtNTguMDMxLjE0OWEyLjIsMi4yLDAsMCwxLTEuMzkxLS41NzhBMS42NTYsMS42NTYsMCwwLDEsMCwzMFYyQTIsMiwwLDAsMSwyLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NTkgMTk5KSIgZmlsbD0iIzRhNGE0YSIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8ZyBpZD0iTWFza19Hcm91cF8zIiBkYXRhLW5hbWU9Ik1hc2sgR3JvdXAgMyIgY2xpcC1wYXRoPSJ1cmwoI2NsaXAtcGF0aCkiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE1IiBkYXRhLW5hbWU9IlBhdGggOTE1IiBkPSJNMS45MzgsMEg2MC4wNjNBMS45NjksMS45NjksMCwwLDEsNjIsMlYzMGExLjk2OSwxLjk2OSwwLDAsMS0xLjkzNywySDEuOTM4QTEuOTY5LDEuOTY5LDAsMCwxLDAsMzBWMkExLjk2OSwxLjk2OSwwLDAsMSwxLjkzOCwwWiIgZmlsbD0iIzIxMjEyMSIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8cGF0aCBpZD0iUGF0aF85MTYiIGRhdGEtbmFtZT0iUGF0aCA5MTYiIGQ9Ik0xLjk2NCwwSDU1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSw1Ny41LDEuOTY0VjI1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSw1NS41MzYsMjcuNUgxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwwLDI1LjUzNlYxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwxLjk2NCwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtNykiLz4NCiAgICAgICAgICA8cGF0aCBpZD0iUGF0aF8xNTU1MCIgZGF0YS1uYW1lPSJQYXRoIDE1NTUwIiBkPSJNLjk1LDMuMjkxSDIuMTR2My4zNUg2LjNWMy4yOTFINy40NzlWMTJINi4zVjcuODE2SDIuMTRWMTJILjk1Wk04LjkzNSw5LjE1NkEyLjgwOCwyLjgwOCwwLDAsMSw5Ljg0Nyw3LjFhMi45LDIuOSwwLDAsMSwyLjEtLjksMi45NTEsMi45NTEsMCwwLDEsMi4xMjYuODg1LDIuOCwyLjgsMCwwLDEsLjkwOSwyLjA2OCwyLjksMi45LDAsMCwxLS44OTIsMi4xLDIuODEsMi44MSwwLDAsMS0yLjA2MS45MDYsMy4wMDgsMy4wMDgsMCwwLDEtMi4xNy0uOUEyLjg0NSwyLjg0NSwwLDAsMSw4LjkzNSw5LjE1NlptNC44OTUsMGExLjY4NiwxLjY4NiwwLDAsMC0uNTQ3LTEuMjUsMS44LDEuOCwwLDAsMC0xLjMtLjUzMSwxLjg0OCwxLjg0OCwwLDAsMC0xLjMzLjUzOEExLjcyMywxLjcyMywwLDAsMCwxMC4xLDkuMmExLjY2NiwxLjY2NiwwLDAsMCwuNTY0LDEuMjQ3LDEuODYxLDEuODYxLDAsMCwwLDEuMzIzLjUzNCwxLjc4LDEuNzgsMCwwLDAsMS4yOTItLjU0OEExLjczOCwxLjczOCwwLDAsMCwxMy44MjksOS4xNlpNMTYuMTQsMTJWNi4zNmgxLjE3NnYuODY4YTMuNDU2LDMuNDU2LDAsMCwxLC44LS43NzksMS41NjYsMS41NjYsMCwwLDEsLjg3Mi0uMjQ2LDEuNjIxLDEuNjIxLDAsMCwxLDEuMDA4LjI4LDIuMTA4LDIuMTA4LDAsMCwxLC42MTkuOSwzLjY2MiwzLjY2MiwwLDAsMSwuODYxLS45LDEuNjgyLDEuNjgyLDAsMCwxLC45NjQtLjI4LDEuNTYxLDEuNTYxLDAsMCwxLDEuMTYuNUExLjY1NSwxLjY1NSwwLDAsMSwyNC4wODMsNy45VjEySDIyLjg5NFY4LjIwNmEuODIzLjgyMywwLDAsMC0uOTI2LS45MzcsMS4xLDEuMSwwLDAsMC0uODk1LjQ3OSwxLjg4NiwxLjg4NiwwLDAsMC0uMzY3LDEuMTgzVjEySDE5LjUxN1Y4LjM2M3EwLTEuMTA3LS45MDktMS4xMDdhMS4xNTEsMS4xNTEsMCwwLDAtLjkxNi40NTEsMS42ODIsMS42ODIsMCwwLDAtLjM3NiwxLjExNFYxMlpNMzEuMjIsOS40MDlIMjYuNDA3YTEuOSwxLjksMCwwLDAsLjcxNCwxLjI2OCwyLjAzOCwyLjAzOCwwLDAsMCwxLjIxMy40LDIuMSwyLjEsMCwwLDAsMS43LS44NDFsLjg2OC42NTZhMy4xNCwzLjE0LDAsMCwxLTIuNjE4LDEuMjY1LDIuODM1LDIuODM1LDAsMCwxLTIuMTA1LS44NjEsMi45MjksMi45MjksMCwwLDEtLjg0OC0yLjE0LDIuODcxLDIuODcxLDAsMCwxLC44NTgtMi4wNzUsMi45MSwyLjkxLDAsMCwxLDQuMTguMDE0QTMuMTMyLDMuMTMyLDAsMCwxLDMxLjIyLDkuNDA5Wm0tNC42ODktLjk1aDMuNDQ1QTEuODIxLDEuODIxLDAsMCwwLDI4LjI4LDcuMywxLjgsMS44LDAsMCwwLDI2LjUzLDguNDU5WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNiAxMikiIGZpbGw9IiNmZmYiLz4NCiAgICAgICAgPC9nPg0KICAgICAgICA8cGF0aCBpZD0iTGFiZWwtV2VsY29tZS0xMCIgZGF0YS1uYW1lPSJMYWJlbC1XZWxjb21lIiBkPSJNMy4yMzIsNy4yNjZIMS44NzVMMS40LDEwSC4xOUwxLjQyNiwyLjg5MWwyLjI0MSwwYTIuNTUzLDIuNTUzLDAsMCwxLDEuNzcyLjU1N0ExLjc2OSwxLjc2OSwwLDAsMSw1Ljk3Miw1LDIuMTI4LDIuMTI4LDAsMCwxLDUuNTEzLDYuMmEyLjY3MSwyLjY3MSwwLDAsMS0xLjEzOC43OTRsMS4wNSwyLjkzNiwwLC4wNzNINC4xNDFabS0xLjE5MS0xLDEuMTY3LjAxQTEuNjU4LDEuNjU4LDAsMCwwLDQuMjYsNS45NWExLjMsMS4zLDAsMCwwLC41LS45LDEuMDA4LDEuMDA4LDAsMCwwLS4yLS44NDcsMS4xLDEuMSwwLDAsMC0uODE1LS4zMTVsLTEuMjg5LDBaTTguNTc0LDEwLjFBMi4yMTMsMi4yMTMsMCwwLDEsNy4zOCw5Ljc1MWExLjk3MiwxLjk3MiwwLDAsMS0uNzQ3LS45MDhBMi43LDIuNywwLDAsMSw2LjQ1LDcuNTU5bC4wMTUtLjJhMy41MzYsMy41MzYsMCwwLDEsLjQ3MS0xLjQ0OCwyLjY4OSwyLjY4OSwwLDAsMSwuOTU1LS45NzQsMi4zMjEsMi4zMjEsMCwwLDEsMS4yNC0uMzE3LDEuNzMxLDEuNzMxLDAsMCwxLDEuNDg3LjczOCwyLjcxMSwyLjcxMSwwLDAsMSwuMzc0LDEuODczbC0uMDY4LjUwOUg3LjZhMS40MzUsMS40MzUsMCwwLDAsLjI1NCwxLjAxMiwxLjAwNiwxLjAwNiwwLDAsMCwuODIuMzk0QTEuNzgsMS43OCwwLDAsMCwxMC4wNDksOC41bC41ODYuNjE1YTIuMjI3LDIuMjI3LDAsMCwxLS44NzQuNzM1QTIuNiwyLjYsMCwwLDEsOC41NzQsMTAuMVptLjQ5My00LjUzMXEtLjkxOC0uMDI5LTEuMzc3LDEuM2wyLjE5MiwwLC4wMi0uMWExLjUzMiwxLjUzMiwwLDAsMCwwLS40MzkuOS45LDAsMCwwLS4yNzMtLjU0N0EuODY2Ljg2NiwwLDAsMCw5LjA2Nyw1LjU2NlptNS41MjcsMi45NjlxLjA4My0uNDgzLS42MjctLjY3MWE3Ljk3Nyw3Ljk3NywwLDAsMS0uOTY5LS4zLDEuMzM2LDEuMzM2LDAsMCwxLS45NzItMS4zMDksMS40ODYsMS40ODYsMCwwLDEsLjY0Ny0xLjE3OSwyLjM3MSwyLjM3MSwwLDAsMSwxLjQ5Mi0uNDU3LDIuMDQxLDIuMDQxLDAsMCwxLDEuMzcuNDc0LDEuNTEsMS41MSwwLDAsMSwuNTIsMS4yMTZsLTEuMTQ3LDBhLjc0MS43NDEsMCwwLDAtLjItLjU3NC44MTcuODE3LDAsMCwwLS41NzYtLjIxNywxLjEzNiwxLjEzNiwwLDAsMC0uNjYyLjE5LjcxLjcxLDAsMCwwLS4zMi41cS0uMDY4LjQ0NC42MjUuNjE4YTYuODYsNi44NiwwLDAsMSwxLjAyNS4zMiwxLjMzNywxLjMzNywwLDAsMSwuOTMzLDEuMzI4LDEuNDYsMS40NiwwLDAsMS0uMzMuODc2LDEuOTIzLDEuOTIzLDAsMCwxLS44MTguNTcxQTIuOCwyLjgsMCwwLDEsMTMuNSwxMC4xYTIuMTQ4LDIuMTQ4LDAsMCwxLTEuNDMzLS41QTEuNTcsMS41NywwLDAsMSwxMS41LDguMzNsMS4xMTgsMGEuODUxLjg1MSwwLDAsMCwuMjU0LjY0NS45ODEuOTgxLDAsMCwwLC42NjkuMjI1LDEuMzI4LDEuMzI4LDAsMCwwLC43MTUtLjE3OEEuNjg0LjY4NCwwLDAsMCwxNC41OTUsOC41MzVaTTE4Ljg4MiwxMC4xYTIuMjEzLDIuMjEzLDAsMCwxLTEuMTk0LS4zNDcsMS45NzIsMS45NzIsMCwwLDEtLjc0Ny0uOTA4LDIuNywyLjcsMCwwLDEtLjE4My0xLjI4NGwuMDE1LS4yYTMuNTM2LDMuNTM2LDAsMCwxLC40NzEtMS40NDgsMi42ODksMi42ODksMCwwLDEsLjk1NS0uOTc0LDIuMzIxLDIuMzIxLDAsMCwxLDEuMjQtLjMxNywxLjczMSwxLjczMSwwLDAsMSwxLjQ4Ny43MzhBMi43MTEsMi43MTEsMCwwLDEsMjEuMyw3LjIzMWwtLjA2OC41MDlIMTcuOTA1YTEuNDM1LDEuNDM1LDAsMCwwLC4yNTQsMS4wMTIsMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAsMjAuMzU2LDguNWwuNTg2LjYxNWEyLjIyNywyLjIyNywwLDAsMS0uODc0LjczNUEyLjYsMi42LDAsMCwxLDE4Ljg4MiwxMC4xWm0uNDkzLTQuNTMxcS0uOTE4LS4wMjktMS4zNzcsMS4zbDIuMTkyLDAsLjAyLS4xYTEuNTMyLDEuNTMyLDAsMCwwLDAtLjQzOS45LjksMCwwLDAtLjI3My0uNTQ3QS44NjYuODY2LDAsMCwwLDE5LjM3NSw1LjU2NlptNC45NjEtMi4xMzQtLjIyNSwxLjI4NGguOWwtLjE1MS44NzloLS45MDhsLS41LDIuOTU5YTEuMDEyLDEuMDEyLDAsMCwwLDAsLjIycS4wMjkuMzE3LjM5MS4zMzJhMi4yMDYsMi4yMDYsMCwwLDAsLjQxLS4wNDRsLS4wNzguOTI4YTIuNjUzLDIuNjUzLDAsMCwxLS43MjguMSwxLjA4LDEuMDgsMCwwLDEtLjkwNi0uNDEzQTEuNDkzLDEuNDkzLDAsMCwxLDIyLjMsOC42MTNMMjIuOCw1LjZoLS44NDVsLjE1Ni0uODc5aC44NGwuMjI1LTEuMjg0Wm04LjksNC4yNDhhMi43NjEsMi43NjEsMCwwLDEtMSwxLjc3NSwzLDMsMCwwLDEtMiwuNjQyLDIuMzYsMi4zNiwwLDAsMS0xLjE4OS0uMzIyLDIuMDg1LDIuMDg1LDAsMCwxLS44LS45LDMuMzQ0LDMuMzQ0LDAsMCwxLS4zMjItMS4zMzEsNy4yLDcuMiwwLDAsMSwuMTM3LTEuNTE2QTQuNzg5LDQuNzg5LDAsMCwxLDI4LjcsNC4zMTJhMy4yMjQsMy4yMjQsMCwwLDEsMS4xNTctMS4xNDcsMi45NTEsMi45NTEsMCwwLDEsMS41MjYtLjM3MSwyLjI3MSwyLjI3MSwwLDAsMSwxLjY3Ny42NjcsMi42MTYsMi42MTYsMCwwLDEsLjY1NywxLjc4NWgtMS4yYTEuNzUyLDEuNzUyLDAsMCwwLS4zMi0xLjEsMS4xNCwxLjE0LDAsMCwwLS44NzYtLjM1NEExLjY1LDEuNjUsMCwwLDAsMzAsNC4zNmEzLjM0LDMuMzQsMCwwLDAtLjcyMywxLjczMmwtLjEuNjQ5LS4wNDQuNWEyLjk0NCwyLjk0NCwwLDAsMCwuMDcxLjk0NCwxLjIzMSwxLjIzMSwwLDAsMCwuMzg4LjY3M0ExLjEzMiwxLjEzMiwwLDAsMCwzMC4zLDkuMSwxLjYyOCwxLjYyOCwwLDAsMCwzMi4wNDYsNy42OVpNMzcuMDA3LDEwYTEuNTY3LDEuNTY3LDAsMCwxLS4wNDktLjQ5MywxLjk1OSwxLjk1OSwwLDAsMS0xLjQxMS41OTEsMS42MTgsMS42MTgsMCwwLDEtMS4xNC0uNDQyLDEuMzYzLDEuMzYzLDAsMCwxLS40MjItMS4xLDEuNjE4LDEuNjE4LDAsMCwxLC43MjMtMS4zMTMsMy4xNDYsMy4xNDYsMCwwLDEsMS44MzYtLjQ3OWwuNzUyLjAxLjA2OC0uMzYxYTEuMDksMS4wOSwwLDAsMCwwLS4zNTYuNjM2LjYzNiwwLDAsMC0uNy0uNTQyLDEuMDUzLDEuMDUzLDAsMCwwLS42NTIuMTg4LjgxMy44MTMsMCwwLDAtLjM0NC41M2wtMS4xNTcuMDFhMS40NDksMS40NDksMCwwLDEsLjM0Ny0uODU3LDIuMDU2LDIuMDU2LDAsMCwxLC44My0uNTc0LDIuODEsMi44MSwwLDAsMSwxLjA5NC0uMiwxLjg0OCwxLjg0OCwwLDAsMSwxLjM0OC41MiwxLjU0MSwxLjU0MSwwLDAsMSwuNCwxLjNsLS40MDUsMi40NzYtLjAzOS40MzlhMS41NjEsMS41NjEsMCwwLDAsLjA3My41NjJsMCwuMDg4Wm0tMS4xOTEtLjg1YTEuMjc2LDEuMjc2LDAsMCwwLC42NzktLjE2OCwxLjc4OCwxLjc4OCwwLDAsMCwuNTMyLS40NjFsLjE4MS0xLS41NTIsMGExLjkzOSwxLjkzOSwwLDAsMC0xLjA0NS4yNDcuOS45LDAsMCwwLS40NDQuNjc2LjYuNiwwLDAsMCwuMTQ0LjUxNUEuNy43LDAsMCwwLDM1LjgxNSw5LjE1Wm01LjM0Ny00LjQzOC0uMS41NjJhMi4wMzcsMi4wMzcsMCwwLDEsMS41NjMtLjY1NCwxLjUxNywxLjUxNywwLDAsMSwuODI4LjIyOSwxLjA4NiwxLjA4NiwwLDAsMSwuNDQ3LjU4MSwyLjEyOSwyLjEyOSwwLDAsMSwxLjY4LS44MTEsMS4zNzIsMS4zNzIsMCwwLDEsMS4xNDUuNTNBMi4wMjIsMi4wMjIsMCwwLDEsNDcsNi41NzdMNDYuNDMxLDEwSDQ1LjI3M2wuNTc2LTMuNDMzYTEuOCwxLjgsMCwwLDAsMC0uNC42NDYuNjQ2LDAsMCwwLS43MjMtLjU4NkExLjIxOCwxLjIxOCwwLDAsMCw0NCw2LjM3MmwtLjAxNS4xMDdMNDMuMzc5LDEwSDQyLjIxN2wuNTc2LTMuNDE4YTEuNzU0LDEuNzU0LDAsMCwwLDAtLjM5MS42NTIuNjUyLDAsMCwwLS43MjMtLjYwNSwxLjI3NiwxLjI3NiwwLDAsMC0xLjA4NC41ODFMNDAuMzIyLDEwSDM5LjE2NWwuOTEzLTUuMjgzWk01MC4wNDksMTAuMWEyLjIxMywyLjIxMywwLDAsMS0xLjE5NC0uMzQ3LDEuOTcyLDEuOTcyLDAsMCwxLS43NDctLjkwOCwyLjcsMi43LDAsMCwxLS4xODMtMS4yODRsLjAxNS0uMmEzLjUzNiwzLjUzNiwwLDAsMSwuNDcxLTEuNDQ4LDIuNjg5LDIuNjg5LDAsMCwxLC45NTUtLjk3NCwyLjMyMSwyLjMyMSwwLDAsMSwxLjI0LS4zMTcsMS43MzEsMS43MzEsMCwwLDEsMS40ODcuNzM4LDIuNzExLDIuNzExLDAsMCwxLC4zNzQsMS44NzNsLS4wNjguNTA5SDQ5LjA3MmExLjQzNSwxLjQzNSwwLDAsMCwuMjU0LDEuMDEyLDEuMDA2LDEuMDA2LDAsMCwwLC44Mi4zOTRBMS43OCwxLjc4LDAsMCwwLDUxLjUyMyw4LjVsLjU4Ni42MTVhMi4yMjcsMi4yMjcsMCwwLDEtLjg3NC43MzVBMi42LDIuNiwwLDAsMSw1MC4wNDksMTAuMVptLjQ5My00LjUzMXEtLjkxOC0uMDI5LTEuMzc3LDEuM2wyLjE5MiwwLC4wMi0uMWExLjUzMiwxLjUzMiwwLDAsMCwwLS40MzkuOS45LDAsMCwwLS4yNzMtLjU0N0EuODY2Ljg2NiwwLDAsMCw1MC41NDIsNS41NjZabTUuODI1LjIzNGEyLjEzMiwyLjEzMiwwLDAsMC0uNDU0LS4wNDksMS4zNTUsMS4zNTUsMCwwLDAtMS4yMTEuNjNMNTQuMDY3LDEwSDUyLjkxbC45MTMtNS4yODMsMS4xLDAtLjExNy42YTEuNTEyLDEuNTEyLDAsMCwxLDEuMjUtLjcsMS45LDEuOSwwLDAsMSwuNDQ0LjA3M1pNNTkuMzYsMTBhMS41NjcsMS41NjcsMCwwLDEtLjA0OS0uNDkzQTEuOTU5LDEuOTU5LDAsMCwxLDU3LjksMTAuMWExLjYxOCwxLjYxOCwwLDAsMS0xLjE0LS40NDIsMS4zNjMsMS4zNjMsMCwwLDEtLjQyMi0xLjEsMS42MTgsMS42MTgsMCwwLDEsLjcyMy0xLjMxM0EzLjE0NiwzLjE0NiwwLDAsMSw1OC45LDYuNzY4bC43NTIuMDEuMDY4LS4zNjFhMS4wOSwxLjA5LDAsMCwwLDAtLjM1Ni42MzYuNjM2LDAsMCwwLS43LS41NDIsMS4wNTMsMS4wNTMsMCwwLDAtLjY1Mi4xODguODEzLjgxMywwLDAsMC0uMzQ0LjUzbC0xLjE1Ny4wMWExLjQ0OSwxLjQ0OSwwLDAsMSwuMzQ3LS44NTcsMi4wNTYsMi4wNTYsMCwwLDEsLjgzLS41NzQsMi44MSwyLjgxLDAsMCwxLDEuMDk0LS4yLDEuODQ4LDEuODQ4LDAsMCwxLDEuMzQ4LjUyLDEuNTQxLDEuNTQxLDAsMCwxLC40LDEuM2wtLjQwNSwyLjQ3Ni0uMDM5LjQzOWExLjU2MSwxLjU2MSwwLDAsMCwuMDczLjU2MmwwLC4wODhabS0xLjE5MS0uODVhMS4yNzYsMS4yNzYsMCwwLDAsLjY3OS0uMTY4LDEuNzg4LDEuNzg4LDAsMCwwLC41MzItLjQ2MWwuMTgxLTEtLjU1MiwwYTEuOTM5LDEuOTM5LDAsMCwwLTEuMDQ1LjI0Ny45LjksMCwwLDAtLjQ0NC42NzYuNi42LDAsMCwwLC4xNDQuNTE1QS43LjcsMCwwLDAsNTguMTY5LDkuMTVaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MDYgNjg1KSIgZmlsbD0iIzA1MGMxYSIvPg0KICAgICAgPC9nPg0KICAgICAgPGcgaWQ9Ikdyb3VwXzQ1MjYiIGRhdGEtbmFtZT0iR3JvdXAgNDUyNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTc4KSI+DQogICAgICAgIDxnIGlkPSJSZWN0LTIiIGRhdGEtbmFtZT0iUmVjdCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzM4IDcxNSkiPg0KICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIC00NTksIC0yMzkpIiBmaWx0ZXI9InVybCgjUGF0aF85MTQtMikiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE0LTE3IiBkYXRhLW5hbWU9IlBhdGggOTE0IiBkPSJNMiwwSDYwYTIuMTc1LDIuMTc1LDAsMCwxLDEuNS42NzNBMi40MDgsMi40MDgsMCwwLDEsNjEuNzY1LDJWMzBBMS42NCwxLjY0LDAsMCwxLDYwLDMxLjc4OWwtNTguMDMxLjE0OWEyLjIsMi4yLDAsMCwxLTEuMzkxLS41NzhBMS42NTYsMS42NTYsMCwwLDEsMCwzMFYyQTIsMiwwLDAsMSwyLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NTkgMjM5KSIgZmlsbD0iIzRhNGE0YSIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8ZyBpZD0iTWFza19Hcm91cF8zLTIiIGRhdGEtbmFtZT0iTWFzayBHcm91cCAzIiBjbGlwLXBhdGg9InVybCgjY2xpcC1wYXRoKSI+DQogICAgICAgICAgICA8cGF0aCBpZD0iUGF0aF85MTUtMiIgZGF0YS1uYW1lPSJQYXRoIDkxNSIgZD0iTTEuOTM4LDBINjAuMDYzQTEuOTY5LDEuOTY5LDAsMCwxLDYyLDJWMzBhMS45NjksMS45NjksMCwwLDEtMS45MzcsMkgxLjkzOEExLjk2OSwxLjk2OSwwLDAsMSwwLDMwVjJBMS45NjksMS45NjksMCwwLDEsMS45MzgsMFoiIGZpbGw9IiMyMTIxMjEiLz4NCiAgICAgICAgICA8L2c+DQogICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE2LTIiIGRhdGEtbmFtZT0iUGF0aCA5MTYiIGQ9Ik0xLjk2NCwwSDU1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSw1Ny41LDEuOTY0VjI1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSw1NS41MzYsMjcuNUgxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwwLDI1LjUzNlYxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwxLjk2NCwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtNykiLz4NCiAgICAgICAgICA8cGF0aCBpZD0iUGF0aF8xNTU1MSIgZGF0YS1uYW1lPSJQYXRoIDE1NTUxIiBkPSJNNi4yMjgsNC4yNjJsLS45NjQuNzcyYTMuODUzLDMuODUzLDAsMCwwLS42OTItLjU5MSwxLjcsMS43LDAsMCwwLS45LS4xOTUsMS43MjksMS43MjksMCwwLDAtMS4wNC4yOS44ODUuODg1LDAsMCwwLS40Ljc0Ni45MDYuOTA2LDAsMCwwLC4zNDguNyw0Ljc3Miw0Ljc3MiwwLDAsMCwxLjE4OC42NjQsOC40NzUsOC40NzUsMCwwLDEsMS4zMDcuNjcxQTMuMzM0LDMuMzM0LDAsMCwxLDUuODQ2LDhhMi43MDcsMi43MDcsMCwwLDEsLjQ0Ny43OTIsMi42MzQsMi42MzQsMCwwLDEsLjE0Ny44ODEsMi40ODMsMi40ODMsMCwwLDEtLjc5LDEuODUxLDIuNjQ1LDIuNjQ1LDAsMCwxLTEuOTExLjc2NSwzLjIzOCwzLjIzOCwwLDAsMS0xLjkzMS0uNkEzLjc1MywzLjc1MywwLDAsMSwuNTIsOS45bDEuMTg5LS4zMzVBMi4xMTMsMi4xMTMsMCwwLDAsMy43LDExLjAzNmExLjU1MiwxLjU1MiwwLDAsMCwxLjA4LS4zODgsMS4yNjUsMS4yNjUsMCwwLDAsLjQzMS0uOTgxLDEuMzI3LDEuMzI3LDAsMCwwLS4yMjYtLjcxMiwyLjAxMywyLjAxMywwLDAsMC0uNTYxLS41OSw2LDYsMCwwLDAtMS4wNjctLjUzMiw3LjU1Nyw3LjU1NywwLDAsMS0xLjEyNi0uNTQ5LDIuOSwyLjksMCwwLDEtLjY4My0uNTk0QTIuNTEyLDIuNTEyLDAsMCwxLDEuMTI1LDZhMS45ODYsMS45ODYsMCwwLDEtLjEzNC0uNzMxLDIuMDQ3LDIuMDQ3LDAsMCwxLC43NTItMS42LDIuNjczLDIuNjczLDAsMCwxLDEuODI1LS42NTksMy43LDMuNywwLDAsMSwxLjQ0Mi4zMDhBMi45NjMsMi45NjMsMCwwLDEsNi4yMjgsNC4yNjJabTIuOTA1LDIuMVY3LjVBMi41NDEsMi41NDEsMCwwLDEsMTEuMzE3LDYuMmEyLjQ1MywyLjQ1MywwLDAsMSwxLjg4MS44NzIsMywzLDAsMCwxLC43ODgsMi4wODIsMy4wNTQsMy4wNTQsMCwwLDEtLjgsMi4xMTIsMi40NTcsMi40NTcsMCwwLDEtMS44ODQuODg5LDIuNCwyLjQsMCwwLDEtMS4yLS4zMjgsMi42MjUsMi42MjUsMCwwLDEtLjk1Mi0uOTV2My43NjdINy45NTdWNi4zNlptMy42MDksMi44YTEuNzgsMS43OCwwLDAsMC0uNTYtMS4zQTEuODA2LDEuODA2LDAsMCwwLDEwLjg2Niw3LjNhMS44MzgsMS44MzgsMCwwLDAtMS4zMzQuNTU0LDEuNzcyLDEuNzcyLDAsMCwwLS41NjMsMS4zMDYsMS44NTEsMS44NTEsMCwwLDAsLjU1NiwxLjM0LDEuNzc5LDEuNzc5LDAsMCwwLDEuMzE0LjU2NywxLjkxMiwxLjkxMiwwLDAsMCwxLjktMS45MDdabTcuNTI2LTIuOGgxLjE4OVYxMkgyMC4yNjlWMTAuODc5YTIuNTQ3LDIuNTQ3LDAsMCwxLTIuMTUzLDEuMjc4LDIuNDc0LDIuNDc0LDAsMCwxLTEuOS0uODc1LDMuMDYsMy4wNiwwLDAsMS0uNzktMi4xMjYsMywzLDAsMCwxLC44LTIuMDY4LDIuNDQyLDIuNDQyLDAsMCwxLDEuODctLjg4NSwyLjM3OSwyLjM3OSwwLDAsMSwxLjI1OC4zNjIsMi41NzcsMi41NzcsMCwwLDEsLjkyMy45NDNaTTIwLjQzMyw5LjJhMS44LDEuOCwwLDAsMC0uNTU1LTEuMzIzLDEuODY3LDEuODY3LDAsMCwwLTIuNjQzLDAsMS43MzcsMS43MzcsMCwwLDAtLjU2MiwxLjI4NSwxLjg3NCwxLjg3NCwwLDAsMCwuNTQ4LDEuMzYsMS43ODksMS43ODksMCwwLDAsMS4zMjkuNTYxQTEuOSwxLjksMCwwLDAsMjAuNDMzLDkuMlptNy4wNDEsMS4wOHYxLjM2YTMuNTUxLDMuNTUxLDAsMCwxLTEuNzY0LjUyLDIuODA3LDIuODA3LDAsMCwxLTIuMDQ3LS44NzgsMi43OTIsMi43OTIsMCwwLDEtLjg3OC0yLjAzNCwyLjkzNCwyLjkzNCwwLDAsMSwuODc1LTIuMTc3QTMsMywwLDAsMSwyNS44NTQsNi4yYTMuNjYxLDMuNjYxLDAsMCwxLDEuNjIuNDFWNy45MzlhMy4xNjgsMy4xNjgsMCwwLDAtMS43LS41NzQsMS44MjksMS44MjksMCwwLDAtMS4yOTIuNTJBMS42MTgsMS42MTgsMCwwLDAsMjMuOTMzLDkuMWExLjgyOCwxLjgyOCwwLDAsMCwuNTIsMS4zMjMsMS43LDEuNywwLDAsMCwxLjI3MS41MzdBMy4xOTMsMy4xOTMsMCwwLDAsMjcuNDc0LDEwLjI3N1ptNi43ODgtLjg2OEgyOS40NDlhMS45LDEuOSwwLDAsMCwuNzE0LDEuMjY4LDIuMDM4LDIuMDM4LDAsMCwwLDEuMjEzLjQsMi4xLDIuMSwwLDAsMCwxLjctLjg0MWwuODY4LjY1NmEzLjE0LDMuMTQsMCwwLDEtMi42MTgsMS4yNjUsMi44MzUsMi44MzUsMCwwLDEtMi4xMDUtLjg2MSwyLjkyOSwyLjkyOSwwLDAsMS0uODQ4LTIuMTQsMi44NzEsMi44NzEsMCwwLDEsLjg1OC0yLjA3NSwyLjkxLDIuOTEsMCwwLDEsNC4xOC4wMTRBMy4xMzIsMy4xMzIsMCwwLDEsMzQuMjYyLDkuNDA5Wm0tNC42ODktLjk1aDMuNDQ1YTEuODIxLDEuODIxLDAsMCwwLTEuNy0xLjE2MkExLjgsMS44LDAsMCwwLDI5LjU3Miw4LjQ1OVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYgMTIpIiBmaWxsPSIjZmZmIi8+DQogICAgICAgIDwvZz4NCiAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtMTEiIGRhdGEtbmFtZT0iTGFiZWwtV2VsY29tZSIgZD0iTTYuMjQsMy44ODdINC4wOTJMMy4wMzIsMTBoLTEuMkwyLjksMy44ODdILjc2MmwuMTc2LTFINi40MTZaTTUuMjc4LDcuMzM5YTMuNDc2LDMuNDc2LDAsMCwxLC40NTctMS40MTEsMi43MDksMi43MDksMCwwLDEsLjk1OS0uOTgxLDIuMzcxLDIuMzcxLDAsMCwxLDEuMy0uMzI3QTEuOTYyLDEuOTYyLDAsMCwxLDkuODg1LDUuOTQyLDMuMDU0LDMuMDU0LDAsMCwxLDEwLjA0NCw3LjNhMy41NDEsMy41NDEsMCwwLDEtLjQ1NywxLjQ4NCwyLjcsMi43LDAsMCwxLS45NjcuOTg5LDIuNCwyLjQsMCwwLDEtMS4zMDYuMzI1QTEuOTYsMS45NiwwLDAsMSw1LjQzLDguNzgyYTMuMDE1LDMuMDE1LDAsMCwxLS4xNjYtMS4zNFptMS4xMzguNjY5YTEuNCwxLjQsMCwwLDAsLjI3MS44MjMuODY3Ljg2NywwLDAsMCwuNjg2LjMyNSwxLjIxNywxLjIxNywwLDAsMCwxLS40NTlBMi40MTUsMi40MTUsMCwwLDAsOC44NzcsNy40bC4wMjktLjQ3OWExLjY5MSwxLjY5MSwwLDAsMC0uMjQ5LS45ODEuODc0Ljg3NCwwLDAsMC0uNzIzLS4zNzYsMS4yNjUsMS4yNjUsMCwwLDAtMS4xNzIuNzI4LDIuNzE4LDIuNzE4LDAsMCwwLS4zMjcsMS4wNDVBNC4wODgsNC4wODgsMCwwLDAsNi40MTYsOC4wMDhabTQuNDE5LS42NTRhNC4wODcsNC4wODcsMCwwLDEsLjQyNy0xLjQzMSwyLjU4NCwyLjU4NCwwLDAsMSwuODQyLS45NzksMS45ODcsMS45ODcsMCwwLDEsMS4xNjItLjMzLDEuNTU5LDEuNTU5LDAsMCwxLDEuMzEzLjY0bC4xODEtLjU0MiwxLjA1NSwwLS44NzQsNS4xMzdBMi40OTQsMi40OTQsMCwwLDEsMTIuMywxMi4wODVhMi40NjYsMi40NjYsMCwwLDEtMS4wNTUtLjI1NCwyLjE5MywyLjE5MywwLDAsMS0uOC0uNjQ1bC42MTUtLjdhMS40ODIsMS40ODIsMCwwLDAsMS4yMTEuNjU5LDEuNDE5LDEuNDE5LDAsMCwwLC45NzQtLjMxLDEuNjE2LDEuNjE2LDAsMCwwLC41NDQtLjk0bC4wODMtLjM3MWExLjg2OSwxLjg2OSwwLDAsMS0xLjM4Ny41NzFBMS40OCwxLjQ4LDAsMCwxLDExLjMsOS41MzZhMi40ODQsMi40ODQsMCwwLDEtLjQ5MS0xLjQ4NEE0Ljg3OSw0Ljg3OSwwLDAsMSwxMC44MzUsNy4zNTRabTEuMTQ3LjFhMy41NzEsMy41NzEsMCwwLDAtLjAyLjUzNywxLjM5NCwxLjM5NCwwLDAsMCwuMjM0LjgyLjc4Ni43ODYsMCwwLDAsLjY0LjMxNywxLjM2NiwxLjM2NiwwLDAsMCwxLjE1Mi0uNjFMMTQuNCw2LjE4N2EuOTQzLjk0MywwLDAsMC0uOS0uNiwxLjIwNSwxLjIwNSwwLDAsMC0uOTg2LjQ1NCwyLjU0NCwyLjU0NCwwLDAsMC0uNTIyLDEuMzEzWm00LjQtLjFhNC4wODcsNC4wODcsMCwwLDEsLjQyNy0xLjQzMSwyLjU4NCwyLjU4NCwwLDAsMSwuODQyLS45NzksMS45ODcsMS45ODcsMCwwLDEsMS4xNjItLjMzLDEuNTU5LDEuNTU5LDAsMCwxLDEuMzEzLjY0bC4xODEtLjU0MiwxLjA1NSwwLS44NzQsNS4xMzdhMi40OTQsMi40OTQsMCwwLDEtMi42MzcsMi4yMzEsMi40NjYsMi40NjYsMCwwLDEtMS4wNTUtLjI1NCwyLjE5MywyLjE5MywwLDAsMS0uOC0uNjQ1bC42MTUtLjdhMS40ODIsMS40ODIsMCwwLDAsMS4yMTEuNjU5LDEuNDE5LDEuNDE5LDAsMCwwLC45NzQtLjMxLDEuNjE2LDEuNjE2LDAsMCwwLC41NDQtLjk0bC4wODMtLjM3MWExLjg2OSwxLjg2OSwwLDAsMS0xLjM4Ny41NzEsMS40OCwxLjQ4LDAsMCwxLTEuMTg5LS41NjIsMi40ODQsMi40ODQsMCwwLDEtLjQ5MS0xLjQ4NEE0Ljg3OSw0Ljg3OSwwLDAsMSwxNi4zODIsNy4zNTRabTEuMTQ3LjFhMy41NzEsMy41NzEsMCwwLDAtLjAyLjUzNywxLjM5NCwxLjM5NCwwLDAsMCwuMjM0LjgyLjc4Ni43ODYsMCwwLDAsLjY0LjMxNywxLjM2NiwxLjM2NiwwLDAsMCwxLjE1Mi0uNjFsLjQxNS0yLjMzNGEuOTQzLjk0MywwLDAsMC0uOS0uNiwxLjIwNSwxLjIwNSwwLDAsMC0uOTg2LjQ1NCwyLjU0NCwyLjU0NCwwLDAsMC0uNTIyLDEuMzEzWk0yMi45LDEwSDIxLjczOGwxLjMtNy41SDI0LjJabTMuNjg3LjFhMi4yMTMsMi4yMTMsMCwwLDEtMS4xOTQtLjM0NywxLjk3MiwxLjk3MiwwLDAsMS0uNzQ3LS45MDgsMi43LDIuNywwLDAsMS0uMTgzLTEuMjg0bC4wMTUtLjJhMy41MzYsMy41MzYsMCwwLDEsLjQ3MS0xLjQ0OCwyLjY4OSwyLjY4OSwwLDAsMSwuOTU1LS45NzQsMi4zMjEsMi4zMjEsMCwwLDEsMS4yNC0uMzE3LDEuNzMxLDEuNzMxLDAsMCwxLDEuNDg3LjczOEEyLjcxMSwyLjcxMSwwLDAsMSwyOSw3LjIzMWwtLjA2OC41MDlIMjUuNjA1YTEuNDM1LDEuNDM1LDAsMCwwLC4yNTQsMS4wMTIsMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAsMjguMDU3LDguNWwuNTg2LjYxNWEyLjIyNywyLjIyNywwLDAsMS0uODc0LjczNUEyLjYsMi42LDAsMCwxLDI2LjU4MiwxMC4xWm0uNDkzLTQuNTMxcS0uOTE4LS4wMjktMS4zNzcsMS4zbDIuMTkyLDAsLjAyLS4xYTEuNTMyLDEuNTMyLDAsMCwwLDAtLjQzOS45LjksMCwwLDAtLjI3My0uNTQ3QS44NjYuODY2LDAsMCwwLDI3LjA3NSw1LjU2NlptOS43OSwxLjgxNmE0LjMsNC4zLDAsMCwxLS40MzIsMS40NTgsMi4zOTEsMi4zOTEsMCwwLDEtLjgzLjk2NCwxLjk1OCwxLjk1OCwwLDAsMS0xLjExNi4zLDEuNTUzLDEuNTUzLDAsMCwxLTEuMzMzLS42NzlMMzIuOTY5LDEwaC0xLjA2bDEuMy03LjVIMzQuMzdsLS41MjcsMi43MjlhMS44LDEuOCwwLDAsMSwxLjQtLjYxLDEuNSwxLjUsMCwwLDEsMS4yLjU2MkEyLjQyNCwyLjQyNCwwLDAsMSwzNi45LDYuNjY1LDYuODA3LDYuODA3LDAsMCwxLDM2Ljg2NSw3LjM4M1ptLTEuMTEzLS42NTRhMS4zODYsMS4zODYsMCwwLDAtLjIyLS44MzMuNzYyLjc2MiwwLDAsMC0uNjM1LS4zMSwxLjM2MSwxLjM2MSwwLDAsMC0xLjE4Mi42NzRsLS4zODEsMi4xODhhLjkyMi45MjIsMCwwLDAsLjkyMy42ODgsMS4xNSwxLjE1LDAsMCwwLC45NjQtLjQ0OSwyLjU0NywyLjU0NywwLDAsMCwuNDg2LTEuMzA5UTM1Ljc0Nyw2Ljk2MywzNS43NTIsNi43MjlaTTM5LjgxLDEwLjFhMi4yMTMsMi4yMTMsMCwwLDEtMS4xOTQtLjM0NywxLjk3MiwxLjk3MiwwLDAsMS0uNzQ3LS45MDgsMi43LDIuNywwLDAsMS0uMTgzLTEuMjg0bC4wMTUtLjJhMy41MzYsMy41MzYsMCwwLDEsLjQ3MS0xLjQ0OCwyLjY4OSwyLjY4OSwwLDAsMSwuOTU1LS45NzQsMi4zMjEsMi4zMjEsMCwwLDEsMS4yNC0uMzE3LDEuNzMxLDEuNzMxLDAsMCwxLDEuNDg3LjczOCwyLjcxMSwyLjcxMSwwLDAsMSwuMzc0LDEuODczbC0uMDY4LjUwOUgzOC44MzNhMS40MzUsMS40MzUsMCwwLDAsLjI1NCwxLjAxMiwxLjAwNiwxLjAwNiwwLDAsMCwuODIuMzk0QTEuNzgsMS43OCwwLDAsMCw0MS4yODQsOC41bC41ODYuNjE1QTIuMjI3LDIuMjI3LDAsMCwxLDQxLDkuODQ2LDIuNiwyLjYsMCwwLDEsMzkuODEsMTAuMVpNNDAuMyw1LjU2NnEtLjkxOC0uMDI5LTEuMzc3LDEuM2wyLjE5MiwwLC4wMi0uMWExLjUzMiwxLjUzMiwwLDAsMCwwLS40MzkuOS45LDAsMCwwLS4yNzMtLjU0N0EuODY2Ljg2NiwwLDAsMCw0MC4zLDUuNTY2Wm00Ljk2MS0yLjEzNC0uMjI1LDEuMjg0aC45bC0uMTUxLjg3OWgtLjkwOGwtLjUsMi45NTlhMS4wMTIsMS4wMTIsMCwwLDAsMCwuMjJxLjAyOS4zMTcuMzkxLjMzMmEyLjIwNiwyLjIwNiwwLDAsMCwuNDEtLjA0NEw0NS4xLDkuOTlhMi42NTMsMi42NTMsMCwwLDEtLjcyOC4xLDEuMDgsMS4wOCwwLDAsMS0uOTA2LS40MTMsMS40OTMsMS40OTMsMCwwLDEtLjIzNy0xLjA2N0w0My43MjYsNS42aC0uODQ1bC4xNTYtLjg3OWguODRMNDQuMSwzLjQzM1ptNS40NTQsNC45MjIsMS40NS0zLjYzOEg1My4zM0w1MS4wMTYsMTBoLS45NTJMNDkuNiw2LjM4Nyw0Ny44OTEsMTBoLS45NTdMNDYuNDUsNC43MTdoMS4wOTRsLjIsMy41ODQsMS42Ny0zLjU4NGguODc0Wk01NS42LDEwLjFBMi4yMTMsMi4yMTMsMCwwLDEsNTQuNCw5Ljc1MWExLjk3MiwxLjk3MiwwLDAsMS0uNzQ3LS45MDgsMi43LDIuNywwLDAsMS0uMTgzLTEuMjg0bC4wMTUtLjJhMy41MzYsMy41MzYsMCwwLDEsLjQ3MS0xLjQ0OCwyLjY4OSwyLjY4OSwwLDAsMSwuOTU1LS45NzQsMi4zMjEsMi4zMjEsMCwwLDEsMS4yNC0uMzE3LDEuNzMxLDEuNzMxLDAsMCwxLDEuNDg3LjczOCwyLjcxMSwyLjcxMSwwLDAsMSwuMzc0LDEuODczbC0uMDY4LjUwOUg1NC42MTlhMS40MzUsMS40MzUsMCwwLDAsLjI1NCwxLjAxMiwxLjAwNiwxLjAwNiwwLDAsMCwuODIuMzk0QTEuNzgsMS43OCwwLDAsMCw1Ny4wNyw4LjVsLjU4Ni42MTVhMi4yMjcsMi4yMjcsMCwwLDEtLjg3NC43MzVBMi42LDIuNiwwLDAsMSw1NS42LDEwLjFabS40OTMtNC41MzFxLS45MTgtLjAyOS0xLjM3NywxLjNsMi4xOTIsMCwuMDItLjFhMS41MzIsMS41MzIsMCwwLDAsMC0uNDM5LjkuOSwwLDAsMC0uMjczLS41NDdBLjg2Ni44NjYsMCwwLDAsNTYuMDg5LDUuNTY2Wk02MC44NSwxMC4xYTIuMjEzLDIuMjEzLDAsMCwxLTEuMTk0LS4zNDcsMS45NzIsMS45NzIsMCwwLDEtLjc0Ny0uOTA4LDIuNywyLjcsMCwwLDEtLjE4My0xLjI4NGwuMDE1LS4yYTMuNTM2LDMuNTM2LDAsMCwxLC40NzEtMS40NDgsMi42ODksMi42ODksMCwwLDEsLjk1NS0uOTc0LDIuMzIxLDIuMzIxLDAsMCwxLDEuMjQtLjMxNywxLjczMSwxLjczMSwwLDAsMSwxLjQ4Ny43MzgsMi43MTEsMi43MTEsMCwwLDEsLjM3NCwxLjg3M2wtLjA2OC41MDlINTkuODczYTEuNDM1LDEuNDM1LDAsMCwwLC4yNTQsMS4wMTIsMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAsNjIuMzI0LDguNWwuNTg2LjYxNWEyLjIyNywyLjIyNywwLDAsMS0uODc0LjczNUEyLjYsMi42LDAsMCwxLDYwLjg1LDEwLjFabS40OTMtNC41MzFxLS45MTgtLjAyOS0xLjM3NywxLjNsMi4xOTIsMCwuMDItLjFhMS41MzIsMS41MzIsMCwwLDAsMC0uNDM5LjkuOSwwLDAsMC0uMjczLS41NDdBLjg2Ni44NjYsMCwwLDAsNjEuMzQzLDUuNTY2Wk02NS43LDQuNzEybC0uMTE3LjYyYTIuMDE2LDIuMDE2LDAsMCwxLDEuNTY3LS43MTMsMS4yNzcsMS4yNzcsMCwwLDEsMS4xLjUzLDIuMTE1LDIuMTE1LDAsMCwxLC4yNjQsMS40MzhMNjcuOTM5LDEwSDY2Ljc4MmwuNTc2LTMuNDI4YTEuNzU0LDEuNzU0LDAsMCwwLDAtLjM5MS42MjMuNjIzLDAsMCwwLS42OTMtLjYsMS40MDcsMS40MDcsMCwwLDAtMS4xNTcuNjQ5TDY0Ljg1NCwxMEg2My43bC45MTMtNS4yODNabTguNzcsNS4zODZhMi40MSwyLjQxLDAsMCwxLTEuMjE4LS4zMzIsMi4xMzIsMi4xMzIsMCwwLDEtLjgxOC0uOTIsMy41MTIsMy41MTIsMCwwLDEtLjMzMi0xLjM3LDYuMyw2LjMsMCwwLDEsLjExLTEuNDI2LDQuOCw0LjgsMCwwLDEsLjUxMy0xLjQ4NywzLjczNywzLjczNywwLDAsMSwuODgxLTEuMSwyLjksMi45LDAsMCwxLDEuOTUzLS42NzQsMi4xOTQsMi4xOTQsMCwwLDEsMS42ODIuNzI4LDMuMDEzLDMuMDEzLDAsMCwxLC42ODYsMS45MTQsNi4zLDYuMywwLDAsMS0uMTEsMS4zODksNS4wMzUsNS4wMzUsMCwwLDEtLjQ3OSwxLjQ0LDMuNjc2LDMuNjc2LDAsMCwxLS44NDIsMS4xQTIuODgxLDIuODgxLDAsMCwxLDc0LjQ2OCwxMC4xWm0yLjIyMi0zLjg0My4wNDQtLjUxOGEzLjEsMy4xLDAsMCwwLS4wOTMtLjk4NCwxLjI5MSwxLjI5MSwwLDAsMC0uNDEzLS42ODgsMS4xOSwxLjE5LDAsMCwwLS43MzUtLjI1MUExLjY1MSwxLjY1MSwwLDAsMCw3NC40LDQuMTZhMi41NDEsMi41NDEsMCwwLDAtLjc3MSwxLjExMyw1LjgzMyw1LjgzMywwLDAsMC0uMzQ0LDEuODc1LDIuMzc4LDIuMzc4LDAsMCwwLC4yNzMsMS40MDYsMS4xMSwxLjExLDAsMCwwLC45NjcuNTMyLDEuNjY5LDEuNjY5LDAsMCwwLDEuMzk0LS42MzUsMy42NTksMy42NTksMCwwLDAsLjcyLTEuODU1Wk04MS44MjYsNS44YTIuMTMyLDIuMTMyLDAsMCwwLS40NTQtLjA0OSwxLjM1NSwxLjM1NSwwLDAsMC0xLjIxMS42M0w3OS41MjYsMTBINzguMzY5bC45MTMtNS4yODMsMS4xLDAtLjExNy42YTEuNTEyLDEuNTEyLDAsMCwxLDEuMjUtLjcsMS45LDEuOSwwLDAsMSwuNDQ0LjA3M1ptNC45NTYsMS41ODJBNC4zLDQuMywwLDAsMSw4Ni4zNSw4Ljg0YTIuMzkxLDIuMzkxLDAsMCwxLS44My45NjQsMS45NTgsMS45NTgsMCwwLDEtMS4xMTYuMywxLjU1MywxLjU1MywwLDAsMS0xLjMzMy0uNjc5TDgyLjg4NiwxMGgtMS4wNmwxLjMtNy41aDEuMTYyTDgzLjc2LDUuMjI5YTEuOCwxLjgsMCwwLDEsMS40LS42MSwxLjUsMS41LDAsMCwxLDEuMi41NjIsMi40MjQsMi40MjQsMCwwLDEsLjQ1NywxLjQ4NEE2LjgwNyw2LjgwNywwLDAsMSw4Ni43ODIsNy4zODNabS0xLjExMy0uNjU0YTEuMzg2LDEuMzg2LDAsMCwwLS4yMi0uODMzLjc2Mi43NjIsMCwwLDAtLjYzNS0uMzEsMS4zNjEsMS4zNjEsMCwwLDAtMS4xODIuNjc0bC0uMzgxLDIuMTg4YS45MjIuOTIyLDAsMCwwLC45MjMuNjg4LDEuMTUsMS4xNSwwLDAsMCwuOTY0LS40NDksMi41NDcsMi41NDcsMCwwLDAsLjQ4Ni0xLjMwOVE4NS42NjQsNi45NjMsODUuNjY5LDYuNzI5Wk04OC41NjQsMTBIODcuNDA3bC45MTgtNS4yODNoMS4xNTdabS0uMDczLTYuNjM2YS42NTMuNjUzLDAsMCwxLC4xNzYtLjQ1OS42NDQuNjQ0LDAsMCwxLC40NzQtLjIuNjE2LjYxNiwwLDAsMSwuNDcxLjE3My42LjYsMCwwLDEsLjE4OC40NDcuNjE3LjYxNywwLDAsMS0uMTgzLjQ1OS42NzEuNjcxLDAsMCwxLS40NjYuMTkuNjI2LjYyNiwwLDAsMS0uNDY5LS4xNjhBLjU4MS41ODEsMCwwLDEsODguNDkxLDMuMzY0Wm0zLjk2LjA2OC0uMjI1LDEuMjg0aC45bC0uMTUxLjg3OUg5Mi4wN2wtLjUsMi45NTlhMS4wMTIsMS4wMTIsMCwwLDAsMCwuMjJxLjAyOS4zMTcuMzkxLjMzMmEyLjIwNiwyLjIwNiwwLDAsMCwuNDEtLjA0NGwtLjA3OC45MjhhMi42NTMsMi42NTMsMCwwLDEtLjcyOC4xLDEuMDgsMS4wOCwwLDAsMS0uOTA2LS40MTMsMS40OTMsMS40OTMsMCwwLDEtLjIzNy0xLjA2N0w5MC45MTMsNS42aC0uODQ1bC4xNTYtLjg3OWguODRsLjIyNS0xLjI4NFpNMy4yMTgsMjBhMS41NjcsMS41NjcsMCwwLDEtLjA0OS0uNDkzLDEuOTU5LDEuOTU5LDAsMCwxLTEuNDExLjU5MSwxLjYxOCwxLjYxOCwwLDAsMS0xLjE0LS40NDJBMS4zNjMsMS4zNjMsMCwwLDEsLjIsMTguNTZhMS42MTgsMS42MTgsMCwwLDEsLjcyMy0xLjMxMywzLjE0NiwzLjE0NiwwLDAsMSwxLjgzNi0uNDc5bC43NTIuMDEuMDY4LS4zNjFhMS4wOSwxLjA5LDAsMCwwLDAtLjM1Ni42MzYuNjM2LDAsMCwwLS43LS41NDIsMS4wNTMsMS4wNTMsMCwwLDAtLjY1Mi4xODguODEzLjgxMywwLDAsMC0uMzQ0LjUzbC0xLjE1Ny4wMWExLjQ0OSwxLjQ0OSwwLDAsMSwuMzQ3LS44NTcsMi4wNTYsMi4wNTYsMCwwLDEsLjgzLS41NzQsMi44MSwyLjgxLDAsMCwxLDEuMDk0LS4yLDEuODQ4LDEuODQ4LDAsMCwxLDEuMzQ4LjUyLDEuNTQxLDEuNTQxLDAsMCwxLC40LDEuM2wtLjQwNSwyLjQ3Ni0uMDM5LjQzOWExLjU2MSwxLjU2MSwwLDAsMCwuMDczLjU2MmwwLC4wODhabS0xLjE5MS0uODVhMS4yNzYsMS4yNzYsMCwwLDAsLjY3OS0uMTY4LDEuNzg4LDEuNzg4LDAsMCwwLC41MzItLjQ2MWwuMTgxLTEtLjU1MiwwYTEuOTM5LDEuOTM5LDAsMCwwLTEuMDQ1LjI0Ny45LjksMCwwLDAtLjQ0NC42NzYuNi42LDAsMCwwLC4xNDQuNTE1QS43LjcsMCwwLDAsMi4wMjYsMTkuMTVabTUuMzM3LTQuNDM4LS4xMTcuNjJhMi4wMTYsMi4wMTYsMCwwLDEsMS41NjctLjcxMywxLjI3NywxLjI3NywwLDAsMSwxLjEuNTMsMi4xMTUsMi4xMTUsMCwwLDEsLjI2NCwxLjQzOEw5LjYsMjBIOC40NDdsLjU3Ni0zLjQyOGExLjc1NCwxLjc1NCwwLDAsMCwwLS4zOTEuNjIzLjYyMywwLDAsMC0uNjkzLS42LDEuNDA3LDEuNDA3LDAsMCwwLTEuMTU3LjY0OUw2LjUxOSwyMEg1LjM2MWwuOTEzLTUuMjgzWm0zLjcxMSwyLjY0MmE0LjE4NSw0LjE4NSwwLDAsMSwuNDM5LTEuNDY1LDIuNDgsMi40OCwwLDAsMSwuODQ1LS45NjksMS45NTEsMS45NTEsMCwwLDEsMS4xMTgtLjMwNSwxLjU2MSwxLjU2MSwwLDAsMSwxLjI2LjZsLjUwOC0yLjcxNWgxLjE2MkwxNS4xLDIwSDE0LjA2N2wuMDc4LS41NDdBMS44NDEsMS44NDEsMCwwLDEsMTIuNywyMC4xYTEuNDUzLDEuNDUzLDAsMCwxLTEuMTc5LS41NjksMi40ODQsMi40ODQsMCwwLDEtLjQ3Ni0xLjQ4NywzLjk0OCwzLjk0OCwwLDAsMSwuMDE1LS41OTFabTEuMTIzLjQ1NGExLjYyNywxLjYyNywwLDAsMCwuMTg4Ljk2Mi43NTEuNzUxLDAsMCwwLC42NjIuMzY2LDEuMzU5LDEuMzU5LDAsMCwwLDEuMTU3LS42NDlsLjQtMi4yNzFhLjkuOSwwLDAsMC0uODg5LS42MywxLjE4OSwxLjE4OSwwLDAsMC0xLjA2OS41ODZBMy4xMjMsMy4xMjMsMCwwLDAsMTIuMiwxNy44MDhabTguMSwxLjIwNmgzLjEzNUwyMy4yNTcsMjBIMTguOTIxbDEuMjM1LTcuMTA5aDEuMjA2Wm00LjA4Ny0xLjY3NWEzLjQ3NiwzLjQ3NiwwLDAsMSwuNDU3LTEuNDExLDIuNzA5LDIuNzA5LDAsMCwxLC45NTktLjk4MSwyLjM3MSwyLjM3MSwwLDAsMSwxLjMtLjMyNywxLjk2MiwxLjk2MiwwLDAsMSwxLjg5MiwxLjMyM0EzLjA1NCwzLjA1NCwwLDAsMSwyOS4xNSwxNy4zYTMuNTQxLDMuNTQxLDAsMCwxLS40NTcsMS40ODQsMi43LDIuNywwLDAsMS0uOTY3Ljk4OSwyLjQsMi40LDAsMCwxLTEuMzA2LjMyNSwxLjk2LDEuOTYsMCwwLDEtMS44ODUtMS4zMTYsMy4wMTUsMy4wMTUsMCwwLDEtLjE2Ni0xLjM0Wm0xLjEzOC42NjlhMS40LDEuNCwwLDAsMCwuMjcxLjgyMy44NjcuODY3LDAsMCwwLC42ODYuMzI1LDEuMjE3LDEuMjE3LDAsMCwwLDEtLjQ1OSwyLjQxNSwyLjQxNSwwLDAsMCwuNTA1LTEuMjk0bC4wMjktLjQ3OWExLjY5MSwxLjY5MSwwLDAsMC0uMjQ5LS45ODEuODc0Ljg3NCwwLDAsMC0uNzIzLS4zNzYsMS4yNjUsMS4yNjUsMCwwLDAtMS4xNzIuNzI4LDIuNzE4LDIuNzE4LDAsMCwwLS4zMjcsMS4wNDVBNC4wODgsNC4wODgsMCwwLDAsMjUuNTIyLDE4LjAwOFptNC40MzQtLjY2OWEzLjQ3NiwzLjQ3NiwwLDAsMSwuNDU3LTEuNDExLDIuNzA5LDIuNzA5LDAsMCwxLC45NTktLjk4MSwyLjM3MSwyLjM3MSwwLDAsMSwxLjMtLjMyNywxLjk2MiwxLjk2MiwwLDAsMSwxLjg5MiwxLjMyMywzLjA1NCwzLjA1NCwwLDAsMSwuMTU5LDEuMzU3LDMuNTQxLDMuNTQxLDAsMCwxLS40NTcsMS40ODQsMi43LDIuNywwLDAsMS0uOTY3Ljk4OSwyLjQsMi40LDAsMCwxLTEuMzA2LjMyNSwxLjk2LDEuOTYsMCwwLDEtMS44ODUtMS4zMTYsMy4wMTUsMy4wMTUsMCwwLDEtLjE2Ni0xLjM0Wm0xLjEzOC42NjlhMS40LDEuNCwwLDAsMCwuMjcxLjgyMy44NjcuODY3LDAsMCwwLC42ODYuMzI1LDEuMjE3LDEuMjE3LDAsMCwwLDEtLjQ1OSwyLjQxNSwyLjQxNSwwLDAsMCwuNTA1LTEuMjk0bC4wMjktLjQ3OWExLjY5MSwxLjY5MSwwLDAsMC0uMjQ5LS45ODEuODc0Ljg3NCwwLDAsMC0uNzIzLS4zNzYsMS4yNjUsMS4yNjUsMCwwLDAtMS4xNzIuNzI4LDIuNzE4LDIuNzE4LDAsMCwwLS4zMjcsMS4wNDVBNC4wODgsNC4wODgsMCwwLDAsMzEuMDk0LDE4LjAwOFptNi4yNi0uMjY0LS42NTQuNTgxTDM2LjQxMSwyMEgzNS4yNTRsMS4zLTcuNUgzNy43MWwtLjc0Miw0LjI1OC40MDUtLjQyLDEuNjgtMS42MjFoMS40NzlsLTIuMzQ0LDIuMjU2TDM5LjczMSwyMEgzOC40NzdabTkuNzU2LjZINDQuNDQ4TDQzLjYsMjBINDIuM2wzLjgzOC03LjEwOWgxLjA4NEw0OC42LDIwSDQ3LjM4OFptLTIuMTUzLTFoMS45OTJsLS40ODMtMi45MzlaTTUyLjc4OCwxNS44YTIuMTMyLDIuMTMyLDAsMCwwLS40NTQtLjA0OSwxLjM1NSwxLjM1NSwwLDAsMC0xLjIxMS42M0w1MC40ODgsMjBINDkuMzMxbC45MTMtNS4yODMsMS4xLDAtLjExNy42YTEuNTEyLDEuNTEyLDAsMCwxLDEuMjUtLjcsMS45LDEuOSwwLDAsMSwuNDQ0LjA3M1ptLjEsMS41MzhhMy40NzYsMy40NzYsMCwwLDEsLjQ1Ny0xLjQxMSwyLjcwOSwyLjcwOSwwLDAsMSwuOTU5LS45ODEsMi4zNzEsMi4zNzEsMCwwLDEsMS4zLS4zMjdBMS45NjIsMS45NjIsMCwwLDEsNTcuNSwxNS45NDJhMy4wNTQsMy4wNTQsMCwwLDEsLjE1OSwxLjM1NywzLjU0MSwzLjU0MSwwLDAsMS0uNDU3LDEuNDg0LDIuNywyLjcsMCwwLDEtLjk2Ny45ODksMi40LDIuNCwwLDAsMS0xLjMwNi4zMjUsMS45NiwxLjk2LDAsMCwxLTEuODg1LTEuMzE2LDMuMDE1LDMuMDE1LDAsMCwxLS4xNjYtMS4zNFptMS4xMzguNjY5YTEuNCwxLjQsMCwwLDAsLjI3MS44MjMuODY3Ljg2NywwLDAsMCwuNjg2LjMyNSwxLjIxNywxLjIxNywwLDAsMCwxLS40NTksMi40MTUsMi40MTUsMCwwLDAsLjUwNS0xLjI5NGwuMDI5LS40NzlhMS42OTEsMS42OTEsMCwwLDAtLjI0OS0uOTgxLjg3NC44NzQsMCwwLDAtLjcyMy0uMzc2LDEuMjY1LDEuMjY1LDAsMCwwLTEuMTcyLjcyOCwyLjcxOCwyLjcxOCwwLDAsMC0uMzI3LDEuMDQ1QTQuMDg4LDQuMDg4LDAsMCwwLDU0LjAyOCwxOC4wMDhabTcuNDIyLDEuNDdhMS45MTYsMS45MTYsMCwwLDEtMS41LjYyLDEuNDcyLDEuNDcyLDAsMCwxLS44NTItLjI1NCwxLjMyMSwxLjMyMSwwLDAsMS0uNDgzLS42ODEsMi40OTQsMi40OTQsMCwwLDEtLjA4NS0xLjAyOGwuNTcxLTMuNDE4aDEuMTU3bC0uNTc2LDMuNDMzYTEuODIsMS44MiwwLDAsMCwwLC4zNTIuNTk0LjU5NCwwLDAsMCwuNjEuNjMsMS40LDEuNCwwLDAsMCwxLjI0LS42MTVsLjY2NC0zLjhoMS4xNTdMNjIuNDMyLDIwSDYxLjM0OFptNC4xNi00Ljc2Ni0uMTE3LjYyYTIuMDE2LDIuMDE2LDAsMCwxLDEuNTY3LS43MTMsMS4yNzcsMS4yNzcsMCwwLDEsMS4xLjUzLDIuMTE1LDIuMTE1LDAsMCwxLC4yNjQsMS40MzhMNjcuODUyLDIwSDY2LjY5NGwuNTc2LTMuNDI4YTEuNzU0LDEuNzU0LDAsMCwwLDAtLjM5MS42MjMuNjIzLDAsMCwwLS42OTMtLjYsMS40MDcsMS40MDcsMCwwLDAtMS4xNTcuNjQ5TDY0Ljc2NiwyMEg2My42MDhsLjkxMy01LjI4M1ptMy43MTEsMi42NDJhNC4xODUsNC4xODUsMCwwLDEsLjQzOS0xLjQ2NSwyLjQ4LDIuNDgsMCwwLDEsLjg0NS0uOTY5LDEuOTUxLDEuOTUxLDAsMCwxLDEuMTE4LS4zMDUsMS41NjEsMS41NjEsMCwwLDEsMS4yNi42bC41MDgtMi43MTVoMS4xNjJMNzMuMzUsMjBINzIuMzE0bC4wNzgtLjU0N2ExLjg0MSwxLjg0MSwwLDAsMS0xLjQ0NS42NDksMS40NTMsMS40NTMsMCwwLDEtMS4xNzktLjU2OSwyLjQ4NCwyLjQ4NCwwLDAsMS0uNDc2LTEuNDg3LDMuOTQ4LDMuOTQ4LDAsMCwxLC4wMTUtLjU5MVptMS4xMjMuNDU0YTEuNjI3LDEuNjI3LDAsMCwwLC4xODguOTYyLjc1MS43NTEsMCwwLDAsLjY2Mi4zNjYsMS4zNTksMS4zNTksMCwwLDAsMS4xNTctLjY0OWwuNC0yLjI3MWEuOS45LDAsMCwwLS44ODktLjYzLDEuMTg5LDEuMTg5LDAsMCwwLTEuMDY5LjU4NkEzLjEyMywzLjEyMywwLDAsMCw3MC40NDQsMTcuODA4WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODA2IDcyMCkiIGZpbGw9IiMwNTBjMWEiLz4NCiAgICAgIDwvZz4NCiAgICAgIDxnIGlkPSJHcm91cF80NTM2IiBkYXRhLW5hbWU9Ikdyb3VwIDQ1MzYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC03OCA0MCkiPg0KICAgICAgICA8ZyBpZD0iUmVjdC0zIiBkYXRhLW5hbWU9IlJlY3QiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDczOCA3MTUpIj4NCiAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAtNDU5LCAtMjc5KSIgZmlsdGVyPSJ1cmwoI1BhdGhfOTE0LTMpIj4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNC0xOCIgZGF0YS1uYW1lPSJQYXRoIDkxNCIgZD0iTTIsMEg2MGEyLjE3NSwyLjE3NSwwLDAsMSwxLjUuNjczQTIuNDA4LDIuNDA4LDAsMCwxLDYxLjc2NSwyVjMwQTEuNjQsMS42NCwwLDAsMSw2MCwzMS43ODlsLTU4LjAzMS4xNDlhMi4yLDIuMiwwLDAsMS0xLjM5MS0uNTc4QTEuNjU2LDEuNjU2LDAsMCwxLDAsMzBWMkEyLDIsMCwwLDEsMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDU5IDI3OSkiIGZpbGw9IiM0YTRhNGEiLz4NCiAgICAgICAgICA8L2c+DQogICAgICAgICAgPGcgaWQ9Ik1hc2tfR3JvdXBfMy0zIiBkYXRhLW5hbWU9Ik1hc2sgR3JvdXAgMyIgY2xpcC1wYXRoPSJ1cmwoI2NsaXAtcGF0aCkiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE1LTMiIGRhdGEtbmFtZT0iUGF0aCA5MTUiIGQ9Ik0xLjkzOCwwSDYwLjA2M0ExLjk2OSwxLjk2OSwwLDAsMSw2MiwyVjMwYTEuOTY5LDEuOTY5LDAsMCwxLTEuOTM3LDJIMS45MzhBMS45NjksMS45NjksMCwwLDEsMCwzMFYyQTEuOTY5LDEuOTY5LDAsMCwxLDEuOTM4LDBaIiBmaWxsPSIjMjEyMTIxIi8+DQogICAgICAgICAgPC9nPg0KICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNi0zIiBkYXRhLW5hbWU9IlBhdGggOTE2IiBkPSJNMS45NjQsMEg1NS41MzZBMS45NjQsMS45NjQsMCwwLDEsNTcuNSwxLjk2NFYyNS41MzZBMS45NjQsMS45NjQsMCwwLDEsNTUuNTM2LDI3LjVIMS45NjRBMS45NjQsMS45NjQsMCwwLDEsMCwyNS41MzZWMS45NjRBMS45NjQsMS45NjQsMCwwLDEsMS45NjQsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiIGZpbGw9InVybCgjbGluZWFyLWdyYWRpZW50LTcpIi8+DQogICAgICAgICAgPHBhdGggaWQ9IlBhdGhfMTU1NTIiIGRhdGEtbmFtZT0iUGF0aCAxNTU1MiIgZD0iTS44MTMsMy4yOTFINS42NFY0LjQ4SDEuOTg5VjYuNjU0SDUuNjRWNy44M0gxLjk4OXYyLjk5NEg1LjY0VjEySC44MTNaTTEwLjMyOSw3LjAzbC0uNzkzLjdBNC4xODgsNC4xODgsMCwwLDAsOSw3LjRhMS4xNzksMS4xNzksMCwwLDAtLjUzMy0uMTEzcS0uNzI1LDAtLjcyNS41MzMsMCwuMzgzLjkxOS43NDNhMy42MzcsMy42MzcsMCwwLDEsMS4zMjMuNzkxLDEuNDYzLDEuNDYzLDAsMCwxLC40LDEuMDM4LDEuNjI4LDEuNjI4LDAsMCwxLS41ODEsMS4yMzksMS45NjQsMS45NjQsMCwwLDEtMS4zNjcuNTI5QTIuMywyLjMsMCwwLDEsNi40OCwxMS4wNWwuOTM3LS40NTFhMS40NjksMS40NjksMCwwLDAsMS4wMjUuNDc5LDEuMDY4LDEuMDY4LDAsMCwwLC42NDYtLjIuNTc2LjU3NiwwLDAsMCwuMjc3LS40NjhxMC0uNDcyLS45NzEtLjg0OUEzLjg2NCwzLjg2NCwwLDAsMSw3LjA1MSw4LjhhMS4zMTksMS4zMTksMCwwLDEtLjM3My0uOTUzLDEuNSwxLjUsMCwwLDEsLjUzLTEuMTcyQTEuOTM1LDEuOTM1LDAsMCwxLDguNTM4LDYuMiwyLjkzOCwyLjkzOCwwLDAsMSwxMC4zMjksNy4wM1ptNS40ODksMy4yNDd2MS4zNmEzLjU1MSwzLjU1MSwwLDAsMS0xLjc2NC41MiwyLjgwNywyLjgwNywwLDAsMS0yLjA0Ny0uODc4LDIuNzkyLDIuNzkyLDAsMCwxLS44NzgtMi4wMzRBMi45MzQsMi45MzQsMCwwLDEsMTIsNy4wNjgsMywzLDAsMCwxLDE0LjIsNi4yYTMuNjYxLDMuNjYxLDAsMCwxLDEuNjIuNDFWNy45MzlhMy4xNjgsMy4xNjgsMCwwLDAtMS43LS41NzQsMS44MjksMS44MjksMCwwLDAtMS4yOTIuNTJBMS42MTgsMS42MTgsMCwwLDAsMTIuMjc3LDkuMWExLjgyOCwxLjgyOCwwLDAsMCwuNTIsMS4zMjMsMS43LDEuNywwLDAsMCwxLjI3MS41MzdBMy4xOTMsMy4xOTMsMCwwLDAsMTUuODE4LDEwLjI3N1oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYgMTIpIiBmaWxsPSIjZmZmIi8+DQogICAgICAgIDwvZz4NCiAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtMTIiIGRhdGEtbmFtZT0iTGFiZWwtV2VsY29tZSIgZD0iTTQuMTIxLDguMTM1cS4xMDctLjctLjc2Ny0xLjA0NWwtLjQtLjE0NkEzLjcsMy43LDAsMCwxLDEuMzkyLDYuMDMsMS42MzMsMS42MzMsMCwwLDEsLjk3Miw0LjhhMS44NDMsMS44NDMsMCwwLDEsLjQxMy0xLjA2NywyLjQwNiwyLjQwNiwwLDAsMSwuOTg0LS43MSwzLjIyLDMuMjIsMCwwLDEsMS4zLS4yMzQsMi42LDIuNiwwLDAsMSwxLjE4Mi4yOTEsMS45MTIsMS45MTIsMCwwLDEsLjc5MS43NjcsMi4xMjMsMi4xMjMsMCwwLDEsLjI1NCwxLjEyMWwtMS4yLDBBMS4xMjcsMS4xMjcsMCwwLDAsNC40NDYsNC4xLDEuMTMzLDEuMTMzLDAsMCwwLDMuNiwzLjc3OWExLjU3OCwxLjU3OCwwLDAsMC0uOTY0LjI2OSwxLjA3NCwxLjA3NCwwLDAsMC0uNDYxLjc1MnEtLjEuNjIuODMuOTc3bC4zNjYuMTMyYTMuNTU1LDMuNTU1LDAsMCwxLDEuNTYzLjk0LDEuNzM1LDEuNzM1LDAsMCwxLC4zOTEsMS4yNzcsMS45MjMsMS45MjMsMCwwLDEtLjQsMS4wNDcsMi4yMjEsMi4yMjEsMCwwLDEtLjk1OS42OTEsMy40OSwzLjQ5LDAsMCwxLTEuMzUuMjM0QTIuODA5LDIuODA5LDAsMCwxLDEuMzUsOS44LDIuMDMsMi4wMywwLDAsMSwuMiw3Ljg0N2wxLjIwNiwwYTEuMTMyLDEuMTMyLDAsMCwwLC4zLjkzMywxLjM2NCwxLjM2NCwwLDAsMCwuOTY3LjMzNywxLjY5LDEuNjksMCwwLDAsLjk3OS0uMjQ5QTEuMDQ2LDEuMDQ2LDAsMCwwLDQuMTIxLDguMTM1Wk03Ljg5MSw1LjNhMS45NTMsMS45NTMsMCwwLDEsMS41LS42NzQsMS4yODksMS4yODksMCwwLDEsMS4xMTYuNTMyQTIuMTEzLDIuMTEzLDAsMCwxLDEwLjc3Niw2LjZMMTAuMjEsMTBIOS4wNTNsLjU3Ni0zLjQxM2ExLjk5NCwxLjk5NCwwLDAsMCwuMDEtLjM5MS42MzMuNjMzLDAsMCwwLS43LS42MSwxLjQyNywxLjQyNywwLDAsMC0xLjE1Mi42MzVMNy4xMjQsMTBINS45NjdsMS4zLTcuNUg4LjQyOFptMy44LDIuMDQxYTMuNDc2LDMuNDc2LDAsMCwxLC40NTctMS40MTEsMi43MDksMi43MDksMCwwLDEsLjk1OS0uOTgxLDIuMzcxLDIuMzcxLDAsMCwxLDEuMy0uMzI3QTEuOTYyLDEuOTYyLDAsMCwxLDE2LjMsNS45NDIsMy4wNTQsMy4wNTQsMCwwLDEsMTYuNDYsNy4zLDMuNTQxLDMuNTQxLDAsMCwxLDE2LDguNzg0YTIuNywyLjcsMCwwLDEtLjk2Ny45ODksMi40LDIuNCwwLDAsMS0xLjMwNi4zMjUsMS45NiwxLjk2LDAsMCwxLTEuODg1LTEuMzE2LDMuMDE1LDMuMDE1LDAsMCwxLS4xNjYtMS4zNFptMS4xMzguNjY5YTEuNCwxLjQsMCwwLDAsLjI3MS44MjMuODY3Ljg2NywwLDAsMCwuNjg2LjMyNSwxLjIxNywxLjIxNywwLDAsMCwxLS40NTlBMi40MTUsMi40MTUsMCwwLDAsMTUuMjkzLDcuNGwuMDI5LS40NzlhMS42OTEsMS42OTEsMCwwLDAtLjI0OS0uOTgxLjg3NC44NzQsMCwwLDAtLjcyMy0uMzc2LDEuMjY1LDEuMjY1LDAsMCwwLTEuMTcyLjcyOCwyLjcxOCwyLjcxOCwwLDAsMC0uMzI3LDEuMDQ1QTQuMDg4LDQuMDg4LDAsMCwwLDEyLjgzMiw4LjAwOFptOC45MjYuMzQ3LDEuNDUtMy42MzhIMjQuMzdMMjIuMDU2LDEwSDIxLjFMMjAuNjQsNi4zODcsMTguOTMxLDEwaC0uOTU3TDE3LjQ5LDQuNzE3aDEuMDk0bC4yLDMuNTg0LDEuNjctMy41ODRoLjg3NFptOS4yMzMtLjAxSDI4LjMzTDI3LjQ4LDEwaC0xLjNMMzAuMDIsMi44OTFIMzEuMUwzMi40OCwxMEgzMS4yN1ptLTIuMTUzLTFIMzAuODNsLS40ODMtMi45MzlaTTM0LjQ0MywxMEgzMy4yODZsMS4zLTcuNWgxLjE1N1ptMi41MjQsMEgzNS44MTFsMS4zLTcuNWgxLjE1N1ptNi42MDYuMWEyLjQxLDIuNDEsMCwwLDEtMS4yMTgtLjMzMiwyLjEzMiwyLjEzMiwwLDAsMS0uODE4LS45MiwzLjUxMiwzLjUxMiwwLDAsMS0uMzMyLTEuMzcsNi4zLDYuMywwLDAsMSwuMTEtMS40MjYsNC44LDQuOCwwLDAsMSwuNTEzLTEuNDg3LDMuNzM3LDMuNzM3LDAsMCwxLC44ODEtMS4xLDIuOSwyLjksMCwwLDEsMS45NTMtLjY3NCwyLjE5NCwyLjE5NCwwLDAsMSwxLjY4Mi43MjgsMy4wMTMsMy4wMTMsMCwwLDEsLjY4NiwxLjkxNCw2LjMsNi4zLDAsMCwxLS4xMSwxLjM4OSw1LjAzNSw1LjAzNSwwLDAsMS0uNDc5LDEuNDQsMy42NzYsMy42NzYsMCwwLDEtLjg0MiwxLjFBMi44ODEsMi44ODEsMCwwLDEsNDMuNTc0LDEwLjFaTTQ1LjgsNi4yNTVsLjA0NC0uNTE4YTMuMSwzLjEsMCwwLDAtLjA5My0uOTg0LDEuMjkxLDEuMjkxLDAsMCwwLS40MTMtLjY4OCwxLjE5LDEuMTksMCwwLDAtLjczNS0uMjUxLDEuNjUxLDEuNjUxLDAsMCwwLTEuMDkxLjM0NywyLjU0MSwyLjU0MSwwLDAsMC0uNzcxLDEuMTEzLDUuODMzLDUuODMzLDAsMCwwLS4zNDQsMS44NzUsMi4zNzgsMi4zNzgsMCwwLDAsLjI3MywxLjQwNiwxLjExLDEuMTEsMCwwLDAsLjk2Ny41MzIsMS42NjksMS42NjksMCwwLDAsMS4zOTQtLjYzNSwzLjY2LDMuNjYsMCwwLDAsLjcyLTEuODU1Wm02LjYzNiwxLjEyOEE0LjMsNC4zLDAsMCwxLDUyLDguODRhMi4zOTEsMi4zOTEsMCwwLDEtLjgzLjk2NCwxLjk1OCwxLjk1OCwwLDAsMS0xLjExNi4zLDEuNTUzLDEuNTUzLDAsMCwxLTEuMzMzLS42NzlMNDguNTM1LDEwaC0xLjA2bDEuMy03LjVoMS4xNjJsLS41MjcsMi43MjlhMS44LDEuOCwwLDAsMSwxLjQtLjYxLDEuNSwxLjUsMCwwLDEsMS4yLjU2MiwyLjQyNCwyLjQyNCwwLDAsMSwuNDU3LDEuNDg0QTYuODA3LDYuODA3LDAsMCwxLDUyLjQzMiw3LjM4M1ptLTEuMTEzLS42NTRBMS4zODYsMS4zODYsMCwwLDAsNTEuMSw1LjlhLjc2Mi43NjIsMCwwLDAtLjYzNS0uMzEsMS4zNjEsMS4zNjEsMCwwLDAtMS4xODIuNjc0TDQ4LjksOC40NDdhLjkyMi45MjIsMCwwLDAsLjkyMy42ODgsMS4xNSwxLjE1LDAsMCwwLC45NjQtLjQ0OSwyLjU0NywyLjU0NywwLDAsMCwuNDg2LTEuMzA5UTUxLjMxMyw2Ljk2Myw1MS4zMTgsNi43MjlabTMuNzg5LTIuMDEyLS45NzIsNS43NDdhMi4wMzksMi4wMzksMCwwLDEtLjU2NiwxLjI1NywxLjYzLDEuNjMsMCwwLDEtMS4yLjQyNywzLjI3NSwzLjI3NSwwLDAsMS0uNjU5LS4wOTNsLjEtLjkzN2ExLjc3NiwxLjc3NiwwLDAsMCwuNDEuMDU0cS42MiwwLC43NDctLjcyOGwuOTgxLTUuNzI4Wk01NC4wOTIsMy4zNjRhLjYzLjYzLDAsMCwxLC42NDUtLjY1OS42MjUuNjI1LDAsMCwxLC40NzEuMTY4LjYuNiwwLDAsMSwuMTg4LjQ1Mi42MTcuNjE3LDAsMCwxLS4xODMuNDU5LjY3MS42NzEsMCwwLDEtLjQ2Ni4xOS42NTYuNjU2LDAsMCwxLS40NzQtLjE3M0EuNTguNTgsMCwwLDEsNTQuMDkyLDMuMzY0Wk01Ny44NTYsMTAuMWEyLjIxMywyLjIxMywwLDAsMS0xLjE5NC0uMzQ3LDEuOTcyLDEuOTcyLDAsMCwxLS43NDctLjkwOCwyLjcsMi43LDAsMCwxLS4xODMtMS4yODRsLjAxNS0uMmEzLjUzNiwzLjUzNiwwLDAsMSwuNDcxLTEuNDQ4LDIuNjg5LDIuNjg5LDAsMCwxLC45NTUtLjk3NCwyLjMyMSwyLjMyMSwwLDAsMSwxLjI0LS4zMTcsMS43MzEsMS43MzEsMCwwLDEsMS40ODcuNzM4LDIuNzExLDIuNzExLDAsMCwxLC4zNzQsMS44NzNsLS4wNjguNTA5SDU2Ljg4YTEuNDM1LDEuNDM1LDAsMCwwLC4yNTQsMS4wMTIsMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAsNTkuMzMxLDguNWwuNTg2LjYxNWEyLjIyNywyLjIyNywwLDAsMS0uODc0LjczNUEyLjYsMi42LDAsMCwxLDU3Ljg1NiwxMC4xWm0uNDkzLTQuNTMxcS0uOTE4LS4wMjktMS4zNzcsMS4zbDIuMTkyLDAsLjAyLS4xYTEuNTMyLDEuNTMyLDAsMCwwLDAtLjQzOS45LjksMCwwLDAtLjI3My0uNTQ3QS44NjYuODY2LDAsMCwwLDU4LjM1LDUuNTY2Wm00LjY3MywzLjU4OWExLjEzMiwxLjEzMiwwLDAsMCwxLjE0My0uOWwxLjA5NCwwYTEuODcsMS44NywwLDAsMS0uMzc4Ljk1MiwyLjIsMi4yLDAsMCwxLS44MzMuNjY5LDIuMzEsMi4zMSwwLDAsMS0xLjA2LjIyNSwxLjk5LDEuOTksMCwwLDEtMS4xNTctLjM1MiwxLjk0NCwxLjk0NCwwLDAsMS0uNy0uOTQ1LDMuMDIzLDMuMDIzLDAsMCwxLS4xNDYtMS4zNDVMNjEsNy4yODVBMy40NTcsMy40NTcsMCwwLDEsNjEuNDQ4LDUuOWEyLjYwOCwyLjYwOCwwLDAsMSwuOTQtLjk1OSwyLjM1NCwyLjM1NCwwLDAsMSwxLjI3OS0uMzE3LDEuODQ4LDEuODQ4LDAsMCwxLDEuMzcyLjU2OSwyLjAwOSwyLjAwOSwwLDAsMSwuNTEzLDEuNDI4SDY0LjQ2OGExLjE4MSwxLjE4MSwwLDAsMC0uMjIyLS43NDIuODEzLjgxMywwLDAsMC0uNjQyLS4zMDgsMS4xNzIsMS4xNzIsMCwwLDAtMS4wNjkuNTc2LDMuMjE2LDMuMjE2LDAsMCwwLS40MiwxLjY4UTYyLjA4LDkuMTM2LDYzLjAyMiw5LjE1NVptNS40MTUtNS43MjMtLjIyNSwxLjI4NGguOWwtLjE1MS44NzloLS45MDhsLS41LDIuOTU5YTEuMDEyLDEuMDEyLDAsMCwwLDAsLjIycS4wMjkuMzE3LjM5MS4zMzJhMi4yMDYsMi4yMDYsMCwwLDAsLjQxLS4wNDRsLS4wNzguOTI4YTIuNjUzLDIuNjUzLDAsMCwxLS43MjguMSwxLjA4LDEuMDgsMCwwLDEtLjkwNi0uNDEzLDEuNDkzLDEuNDkzLDAsMCwxLS4yMzctMS4wNjdMNjYuOSw1LjZoLS44NDVsLjE1Ni0uODc5aC44NGwuMjI1LTEuMjg0Wm0zLjg0Myw1LjFxLjA4My0uNDgzLS42MjctLjY3MWE3Ljk3Nyw3Ljk3NywwLDAsMS0uOTY5LS4zLDEuMzM2LDEuMzM2LDAsMCwxLS45NzItMS4zMDksMS40ODYsMS40ODYsMCwwLDEsLjY0Ny0xLjE3OSwyLjM3MSwyLjM3MSwwLDAsMSwxLjQ5Mi0uNDU3LDIuMDQxLDIuMDQxLDAsMCwxLDEuMzcuNDc0LDEuNTEsMS41MSwwLDAsMSwuNTIsMS4yMTZsLTEuMTQ3LDBhLjc0MS43NDEsMCwwLDAtLjItLjU3NC44MTcuODE3LDAsMCwwLS41NzYtLjIxNywxLjEzNiwxLjEzNiwwLDAsMC0uNjYyLjE5LjcxLjcxLDAsMCwwLS4zMi41cS0uMDY4LjQ0NC42MjUuNjE4YTYuODYsNi44NiwwLDAsMSwxLjAyNS4zMiwxLjMzNywxLjMzNywwLDAsMSwuOTMzLDEuMzI4LDEuNDYsMS40NiwwLDAsMS0uMzMuODc2LDEuOTIzLDEuOTIzLDAsMCwxLS44MTguNTcxLDIuOCwyLjgsMCwwLDEtMS4wODkuMTgzLDIuMTQ4LDIuMTQ4LDAsMCwxLTEuNDMzLS41LDEuNTcsMS41NywwLDAsMS0uNTU5LTEuMjY1bDEuMTE4LDBhLjg1MS44NTEsMCwwLDAsLjI1NC42NDUuOTgxLjk4MSwwLDAsMCwuNjY5LjIyNSwxLjMyOCwxLjMyOCwwLDAsMCwuNzE1LS4xNzhBLjY4NC42ODQsMCwwLDAsNzIuMjgsOC41MzVaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MDYgNzI1KSIgZmlsbD0iIzA1MGMxYSIvPg0KICAgICAgPC9nPg0KICAgICAgPGcgaWQ9Ikdyb3VwXzQ1MjUiIGRhdGEtbmFtZT0iR3JvdXAgNDUyNSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg0KSI+DQogICAgICAgIDxwYXRoIGlkPSJMYWJlbC1XZWxjb21lLTEzIiBkYXRhLW5hbWU9IkxhYmVsLVdlbGNvbWUiIGQ9Ik02LjI0LDMuODg3SDQuMDkyTDMuMDMyLDEwaC0xLjJMMi45LDMuODg3SC43NjJsLjE3Ni0xSDYuNDE2Wk01LjI3OCw3LjMzOWEzLjQ3NiwzLjQ3NiwwLDAsMSwuNDU3LTEuNDExLDIuNzA5LDIuNzA5LDAsMCwxLC45NTktLjk4MSwyLjM3MSwyLjM3MSwwLDAsMSwxLjMtLjMyN0ExLjk2MiwxLjk2MiwwLDAsMSw5Ljg4NSw1Ljk0MiwzLjA1NCwzLjA1NCwwLDAsMSwxMC4wNDQsNy4zYTMuNTQxLDMuNTQxLDAsMCwxLS40NTcsMS40ODQsMi43LDIuNywwLDAsMS0uOTY3Ljk4OSwyLjQsMi40LDAsMCwxLTEuMzA2LjMyNUExLjk2LDEuOTYsMCwwLDEsNS40Myw4Ljc4MmEzLjAxNSwzLjAxNSwwLDAsMS0uMTY2LTEuMzRabTEuMTM4LjY2OWExLjQsMS40LDAsMCwwLC4yNzEuODIzLjg2Ny44NjcsMCwwLDAsLjY4Ni4zMjUsMS4yMTcsMS4yMTcsMCwwLDAsMS0uNDU5QTIuNDE1LDIuNDE1LDAsMCwwLDguODc3LDcuNGwuMDI5LS40NzlhMS42OTEsMS42OTEsMCwwLDAtLjI0OS0uOTgxLjg3NC44NzQsMCwwLDAtLjcyMy0uMzc2LDEuMjY1LDEuMjY1LDAsMCwwLTEuMTcyLjcyOCwyLjcxOCwyLjcxOCwwLDAsMC0uMzI3LDEuMDQ1QTQuMDg4LDQuMDg4LDAsMCwwLDYuNDE2LDguMDA4Wm00LjQxOS0uNjU0YTQuMDg3LDQuMDg3LDAsMCwxLC40MjctMS40MzEsMi41ODQsMi41ODQsMCwwLDEsLjg0Mi0uOTc5LDEuOTg3LDEuOTg3LDAsMCwxLDEuMTYyLS4zMywxLjU1OSwxLjU1OSwwLDAsMSwxLjMxMy42NGwuMTgxLS41NDIsMS4wNTUsMC0uODc0LDUuMTM3QTIuNDk0LDIuNDk0LDAsMCwxLDEyLjMsMTIuMDg1YTIuNDY2LDIuNDY2LDAsMCwxLTEuMDU1LS4yNTQsMi4xOTMsMi4xOTMsMCwwLDEtLjgtLjY0NWwuNjE1LS43YTEuNDgyLDEuNDgyLDAsMCwwLDEuMjExLjY1OSwxLjQxOSwxLjQxOSwwLDAsMCwuOTc0LS4zMSwxLjYxNiwxLjYxNiwwLDAsMCwuNTQ0LS45NGwuMDgzLS4zNzFhMS44NjksMS44NjksMCwwLDEtMS4zODcuNTcxQTEuNDgsMS40OCwwLDAsMSwxMS4zLDkuNTM2YTIuNDg0LDIuNDg0LDAsMCwxLS40OTEtMS40ODRBNC44NzksNC44NzksMCwwLDEsMTAuODM1LDcuMzU0Wm0xLjE0Ny4xYTMuNTcxLDMuNTcxLDAsMCwwLS4wMi41MzcsMS4zOTQsMS4zOTQsMCwwLDAsLjIzNC44Mi43ODYuNzg2LDAsMCwwLC42NC4zMTcsMS4zNjYsMS4zNjYsMCwwLDAsMS4xNTItLjYxTDE0LjQsNi4xODdhLjk0My45NDMsMCwwLDAtLjktLjYsMS4yMDUsMS4yMDUsMCwwLDAtLjk4Ni40NTQsMi41NDQsMi41NDQsMCwwLDAtLjUyMiwxLjMxM1ptNC40LS4xYTQuMDg3LDQuMDg3LDAsMCwxLC40MjctMS40MzEsMi41ODQsMi41ODQsMCwwLDEsLjg0Mi0uOTc5LDEuOTg3LDEuOTg3LDAsMCwxLDEuMTYyLS4zMywxLjU1OSwxLjU1OSwwLDAsMSwxLjMxMy42NGwuMTgxLS41NDIsMS4wNTUsMC0uODc0LDUuMTM3YTIuNDk0LDIuNDk0LDAsMCwxLTIuNjM3LDIuMjMxLDIuNDY2LDIuNDY2LDAsMCwxLTEuMDU1LS4yNTQsMi4xOTMsMi4xOTMsMCwwLDEtLjgtLjY0NWwuNjE1LS43YTEuNDgyLDEuNDgyLDAsMCwwLDEuMjExLjY1OSwxLjQxOSwxLjQxOSwwLDAsMCwuOTc0LS4zMSwxLjYxNiwxLjYxNiwwLDAsMCwuNTQ0LS45NGwuMDgzLS4zNzFhMS44NjksMS44NjksMCwwLDEtMS4zODcuNTcxLDEuNDgsMS40OCwwLDAsMS0xLjE4OS0uNTYyLDIuNDg0LDIuNDg0LDAsMCwxLS40OTEtMS40ODRBNC44NzksNC44NzksMCwwLDEsMTYuMzgyLDcuMzU0Wm0xLjE0Ny4xYTMuNTcxLDMuNTcxLDAsMCwwLS4wMi41MzcsMS4zOTQsMS4zOTQsMCwwLDAsLjIzNC44Mi43ODYuNzg2LDAsMCwwLC42NC4zMTcsMS4zNjYsMS4zNjYsMCwwLDAsMS4xNTItLjYxbC40MTUtMi4zMzRhLjk0My45NDMsMCwwLDAtLjktLjYsMS4yMDUsMS4yMDUsMCwwLDAtLjk4Ni40NTQsMi41NDQsMi41NDQsMCwwLDAtLjUyMiwxLjMxM1pNMjIuOSwxMEgyMS43MzhsMS4zLTcuNUgyNC4yWm0zLjY4Ny4xYTIuMjEzLDIuMjEzLDAsMCwxLTEuMTk0LS4zNDcsMS45NzIsMS45NzIsMCwwLDEtLjc0Ny0uOTA4LDIuNywyLjcsMCwwLDEtLjE4My0xLjI4NGwuMDE1LS4yYTMuNTM2LDMuNTM2LDAsMCwxLC40NzEtMS40NDgsMi42ODksMi42ODksMCwwLDEsLjk1NS0uOTc0LDIuMzIxLDIuMzIxLDAsMCwxLDEuMjQtLjMxNywxLjczMSwxLjczMSwwLDAsMSwxLjQ4Ny43MzhBMi43MTEsMi43MTEsMCwwLDEsMjksNy4yMzFsLS4wNjguNTA5SDI1LjYwNWExLjQzNSwxLjQzNSwwLDAsMCwuMjU0LDEuMDEyLDEuMDA2LDEuMDA2LDAsMCwwLC44Mi4zOTRBMS43OCwxLjc4LDAsMCwwLDI4LjA1Nyw4LjVsLjU4Ni42MTVhMi4yMjcsMi4yMjcsMCwwLDEtLjg3NC43MzVBMi42LDIuNiwwLDAsMSwyNi41ODIsMTAuMVptLjQ5My00LjUzMXEtLjkxOC0uMDI5LTEuMzc3LDEuM2wyLjE5MiwwLC4wMi0uMWExLjUzMiwxLjUzMiwwLDAsMCwwLS40MzkuOS45LDAsMCwwLS4yNzMtLjU0N0EuODY2Ljg2NiwwLDAsMCwyNy4wNzUsNS41NjZabS0yNS4yMiwxMS44TDEuNCwyMEguMTlsMS4yMzUtNy4xMDksMi40NjEsMGEyLjQyMSwyLjQyMSwwLDAsMSwxLjc0OC42MDksMS45LDEuOSwwLDAsMSwuNTUyLDEuNjExLDIuMjYxLDIuMjYxLDAsMCwxLS44NDUsMS42NDUsMy4wNjcsMy4wNjcsMCwwLDEtMS45ODIuNjA5Wm0uMTcxLTEsMS4zODIuMDFhMS42NjksMS42NjksMCwwLDAsMS4wNzItLjMzMiwxLjM3NSwxLjM3NSwwLDAsMCwuNS0uOTI4LDEuMSwxLjEsMCwwLDAtLjItLjg3MiwxLjA2MywxLjA2MywwLDAsMC0uODE4LS4zNTRsLTEuNSwwWk04LjcyMSwyMC4xYTIuMjEzLDIuMjEzLDAsMCwxLTEuMTk0LS4zNDcsMS45NzIsMS45NzIsMCwwLDEtLjc0Ny0uOTA4QTIuNywyLjcsMCwwLDEsNi42LDE3LjU1OWwuMDE1LS4yYTMuNTM2LDMuNTM2LDAsMCwxLC40NzEtMS40NDgsMi42ODksMi42ODksMCwwLDEsLjk1NS0uOTc0LDIuMzIxLDIuMzIxLDAsMCwxLDEuMjQtLjMxNywxLjczMSwxLjczMSwwLDAsMSwxLjQ4Ny43MzgsMi43MTEsMi43MTEsMCwwLDEsLjM3NCwxLjg3M2wtLjA2OC41MDlINy43NDRBMS40MzUsMS40MzUsMCwwLDAsOCwxOC43NTFhMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAsMTAuMiwxOC41bC41ODYuNjE1YTIuMjI3LDIuMjI3LDAsMCwxLS44NzQuNzM1QTIuNiwyLjYsMCwwLDEsOC43MjEsMjAuMVptLjQ5My00LjUzMXEtLjkxOC0uMDI5LTEuMzc3LDEuM2wyLjE5MiwwLC4wMi0uMWExLjUzMiwxLjUzMiwwLDAsMCwwLS40MzkuOS45LDAsMCwwLS4yNzMtLjU0N0EuODY2Ljg2NiwwLDAsMCw5LjIxNCwxNS41NjZabTUuODI1LjIzNGEyLjEzMiwyLjEzMiwwLDAsMC0uNDU0LS4wNDksMS4zNTUsMS4zNTUsMCwwLDAtMS4yMTEuNjNMMTIuNzM5LDIwSDExLjU4MmwuOTEzLTUuMjgzLDEuMSwwLS4xMTcuNmExLjUxMiwxLjUxMiwwLDAsMSwxLjI1LS43LDEuOSwxLjksMCwwLDEsLjQ0NC4wNzNaTTE4LjIsMTguNTM1cS4wODMtLjQ4My0uNjI3LS42NzFhNy45NzcsNy45NzcsMCwwLDEtLjk2OS0uMywxLjMzNiwxLjMzNiwwLDAsMS0uOTcyLTEuMzA5LDEuNDg2LDEuNDg2LDAsMCwxLC42NDctMS4xNzksMi4zNzEsMi4zNzEsMCwwLDEsMS40OTItLjQ1NywyLjA0MSwyLjA0MSwwLDAsMSwxLjM3LjQ3NCwxLjUxLDEuNTEsMCwwLDEsLjUyLDEuMjE2bC0xLjE0NywwYS43NDEuNzQxLDAsMCwwLS4yLS41NzQuODE3LjgxNywwLDAsMC0uNTc2LS4yMTcsMS4xMzYsMS4xMzYsMCwwLDAtLjY2Mi4xOS43MS43MSwwLDAsMC0uMzIuNXEtLjA2OC40NDQuNjI1LjYxOGE2Ljg2LDYuODYsMCwwLDEsMS4wMjUuMzIsMS4zMzcsMS4zMzcsMCwwLDEsLjkzMywxLjMyOCwxLjQ2LDEuNDYsMCwwLDEtLjMzLjg3NiwxLjkyMywxLjkyMywwLDAsMS0uODE4LjU3MUEyLjgsMi44LDAsMCwxLDE3LjEsMjAuMWEyLjE0OCwyLjE0OCwwLDAsMS0xLjQzMy0uNSwxLjU3LDEuNTcsMCwwLDEtLjU1OS0xLjI2NWwxLjExOCwwYS44NTEuODUxLDAsMCwwLC4yNTQuNjQ1Ljk4MS45ODEsMCwwLDAsLjY2OS4yMjUsMS4zMjgsMS4zMjgsMCwwLDAsLjcxNS0uMTc4QS42ODQuNjg0LDAsMCwwLDE4LjIsMTguNTM1Wm02Ljg0MS0xLjE1N2E0LjM1LDQuMzUsMCwwLDEtLjQyMiwxLjQzNiwyLjQ1LDIuNDUsMCwwLDEtLjgyNS45NzQsMS45MDgsMS45MDgsMCwwLDEtMS4xMjEuMzE1LDEuNjU3LDEuNjU3LDAsMCwxLTEuMy0uNTg2TDIwLjksMjIuMDMxSDE5LjczNmwxLjI3LTcuMzE0LDEuMDYsMC0uMDg4LjU0N2ExLjgyOSwxLjgyOSwwLDAsMSwxLjQ0LS42NCwxLjU0OCwxLjU0OCwwLDAsMSwuODc0LjI1NiwxLjU4MiwxLjU4MiwwLDAsMSwuNTY5LjczLDIuOTU5LDIuOTU5LDAsMCwxLC4yMTIsMS4wNjRBNi40OTEsNi40OTEsMCwwLDEsMjUuMDM5LDE3LjM3OFptLTEuMTQzLS4xLjAyNC0uMzU2YTEuNzMsMS43MywwLDAsMC0uMjA4LS45NzcuNzYxLjc2MSwwLDAsMC0uNjY3LS4zNTYsMS4zNDcsMS4zNDcsMCwwLDAtMS4xMzMuNmwtLjQxLDIuMzU4YS45LjksMCwwLDAsLjg5NC42MSwxLjE4LDEuMTgsMCwwLDAsLjk2OS0uNDQ5QTIuODEzLDIuODEzLDAsMCwwLDIzLjksMTcuMjc1Wm00LjEsMi44MjJhMi4yMTMsMi4yMTMsMCwwLDEtMS4xOTQtLjM0NywxLjk3MiwxLjk3MiwwLDAsMS0uNzQ3LS45MDgsMi43LDIuNywwLDAsMS0uMTgzLTEuMjg0bC4wMTUtLjJhMy41MzYsMy41MzYsMCwwLDEsLjQ3MS0xLjQ0OCwyLjY4OSwyLjY4OSwwLDAsMSwuOTU1LS45NzQsMi4zMjEsMi4zMjEsMCwwLDEsMS4yNC0uMzE3LDEuNzMxLDEuNzMxLDAsMCwxLDEuNDg3LjczOCwyLjcxMSwyLjcxMSwwLDAsMSwuMzc0LDEuODczbC0uMDY4LjUwOUgyNy4wMTdhMS40MzUsMS40MzUsMCwwLDAsLjI1NCwxLjAxMiwxLjAwNiwxLjAwNiwwLDAsMCwuODIuMzk0LDEuNzgsMS43OCwwLDAsMCwxLjM3Ny0uNjQ5bC41ODYuNjE1YTIuMjI3LDIuMjI3LDAsMCwxLS44NzQuNzM1QTIuNiwyLjYsMCwwLDEsMjcuOTkzLDIwLjFabS40OTMtNC41MzFxLS45MTgtLjAyOS0xLjM3NywxLjNsMi4xOTIsMCwuMDItLjFhMS41MzIsMS41MzIsMCwwLDAsMC0uNDM5LjkuOSwwLDAsMC0uMjczLS41NDdBLjg2Ni44NjYsMCwwLDAsMjguNDg2LDE1LjU2NlptNC42NzMsMy41ODlhMS4xMzIsMS4xMzIsMCwwLDAsMS4xNDMtLjlsMS4wOTQsMGExLjg3LDEuODcsMCwwLDEtLjM3OC45NTIsMi4yLDIuMiwwLDAsMS0uODMzLjY2OSwyLjMxLDIuMzEsMCwwLDEtMS4wNi4yMjUsMS45OSwxLjk5LDAsMCwxLTEuMTU3LS4zNTIsMS45NDQsMS45NDQsMCwwLDEtLjctLjk0NSwzLjAyMywzLjAyMywwLDAsMS0uMTQ2LTEuMzQ1bC4wMTUtLjE3MWEzLjQ1NywzLjQ1NywwLDAsMSwuNDQ3LTEuMzg5LDIuNjA4LDIuNjA4LDAsMCwxLC45NC0uOTU5LDIuMzU0LDIuMzU0LDAsMCwxLDEuMjc5LS4zMTcsMS44NDgsMS44NDgsMCwwLDEsMS4zNzIuNTY5LDIuMDA5LDIuMDA5LDAsMCwxLC41MTMsMS40MjhIMzQuNmExLjE4MSwxLjE4MSwwLDAsMC0uMjIyLS43NDIuODEzLjgxMywwLDAsMC0uNjQyLS4zMDgsMS4xNzIsMS4xNzIsMCwwLDAtMS4wNjkuNTc2LDMuMjE2LDMuMjE2LDAsMCwwLS40MiwxLjY4UTMyLjIxNywxOS4xMzYsMzMuMTU5LDE5LjE1NVptNS40MTUtNS43MjMtLjIyNSwxLjI4NGguOUwzOS4xLDE1LjZoLS45MDhsLS41LDIuOTU5YTEuMDEyLDEuMDEyLDAsMCwwLDAsLjIycS4wMjkuMzE3LjM5MS4zMzJhMi4yMDYsMi4yMDYsMCwwLDAsLjQxLS4wNDRsLS4wNzguOTI4YTIuNjUzLDIuNjUzLDAsMCwxLS43MjguMSwxLjA4LDEuMDgsMCwwLDEtLjkwNi0uNDEzLDEuNDkzLDEuNDkzLDAsMCwxLS4yMzctMS4wNjdsLjQ5My0zLjAxOGgtLjg0NWwuMTU2LS44NzloLjg0bC4yMjUtMS4yODRaTTQwLjQ4OCwyMEgzOS4zMzFsLjkxOC01LjI4M2gxLjE1N1ptLS4wNzMtNi42MzZhLjY1My42NTMsMCwwLDEsLjE3Ni0uNDU5LjY0NC42NDQsMCwwLDEsLjQ3NC0uMi42MTYuNjE2LDAsMCwxLC40NzEuMTczLjYuNiwwLDAsMSwuMTg4LjQ0Ny42MTcuNjE3LDAsMCwxLS4xODMuNDU5LjY3MS42NzEsMCwwLDEtLjQ2Ni4xOS42MjYuNjI2LDAsMCwxLS40NjktLjE2OEEuNTgxLjU4MSwwLDAsMSw0MC40MTUsMTMuMzY0Wm0zLjQ0Nyw1LjExNywxLjY3LTMuNzY1aDEuMjM1TDQ0LjE2NSwyMEg0My4xNTlsLS45NjctNS4yODNoMS4xNjJaTTQ5LjAyMywyMC4xYTIuMjEzLDIuMjEzLDAsMCwxLTEuMTk0LS4zNDcsMS45NzIsMS45NzIsMCwwLDEtLjc0Ny0uOTA4LDIuNywyLjcsMCwwLDEtLjE4My0xLjI4NGwuMDE1LS4yYTMuNTM2LDMuNTM2LDAsMCwxLC40NzEtMS40NDgsMi42ODksMi42ODksMCwwLDEsLjk1NS0uOTc0LDIuMzIxLDIuMzIxLDAsMCwxLDEuMjQtLjMxNywxLjczMSwxLjczMSwwLDAsMSwxLjQ4Ny43MzgsMi43MTEsMi43MTEsMCwwLDEsLjM3NCwxLjg3M2wtLjA2OC41MDlINDguMDQ3YTEuNDM1LDEuNDM1LDAsMCwwLC4yNTQsMS4wMTIsMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAsNTAuNSwxOC41bC41ODYuNjE1YTIuMjI3LDIuMjI3LDAsMCwxLS44NzQuNzM1QTIuNiwyLjYsMCwwLDEsNDkuMDIzLDIwLjFabS40OTMtNC41MzFxLS45MTgtLjAyOS0xLjM3NywxLjNsMi4xOTIsMCwuMDItLjFhMS41MzIsMS41MzIsMCwwLDAsMC0uNDM5LjkuOSwwLDAsMC0uMjczLS41NDdBLjg2Ni44NjYsMCwwLDAsNDkuNTE3LDE1LjU2NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY2MyA3NjApIiBmaWxsPSIjMDUwYzFhIi8+DQogICAgICAgIDxnIGlkPSJTcXVhcmUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYyNSA3NTUpIj4NCiAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAtMzQwLCAtMjc5KSIgZmlsdGVyPSJ1cmwoI1BhdGhfOTE0LTQpIj4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNC0xOSIgZGF0YS1uYW1lPSJQYXRoIDkxNCIgZD0iTTIsMEgzMGEyLjE3NSwyLjE3NSwwLDAsMSwxLjUuNjczQTIuNDA4LDIuNDA4LDAsMCwxLDMxLjc2NSwyVjMwQTEuNjQsMS42NCwwLDAsMSwzMCwzMS43ODlsLTI4LjAzMS4xNDlhMi4yLDIuMiwwLDAsMS0xLjM5MS0uNTc4QTEuNjU2LDEuNjU2LDAsMCwxLDAsMzBWMkEyLDIsMCwwLDEsMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQwIDI3OSkiIGZpbGw9IiM0YTRhNGEiLz4NCiAgICAgICAgICA8L2c+DQogICAgICAgICAgPGcgaWQ9Ik1hc2tfR3JvdXBfMy00IiBkYXRhLW5hbWU9Ik1hc2sgR3JvdXAgMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTY5MSAtNjUwKSIgY2xpcC1wYXRoPSJ1cmwoI2NsaXAtcGF0aC00KSI+DQogICAgICAgICAgICA8cGF0aCBpZD0iUGF0aF85MTUtNCIgZGF0YS1uYW1lPSJQYXRoIDkxNSIgZD0iTTIsMEgzMGEyLDIsMCwwLDEsMiwyVjMwYTIsMiwwLDAsMS0yLDJIMmEyLDIsMCwwLDEtMi0yVjJBMiwyLDAsMCwxLDIsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY5MSA2NTApIiBmaWxsPSIjMjEyMTIxIi8+DQogICAgICAgICAgPC9nPg0KICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNi00IiBkYXRhLW5hbWU9IlBhdGggOTE2IiBkPSJNMS45NjQsMEgyNS41MzZBMS45NjQsMS45NjQsMCwwLDEsMjcuNSwxLjk2NFYyNS41MzZBMS45NjQsMS45NjQsMCwwLDEsMjUuNTM2LDI3LjVIMS45NjRBMS45NjQsMS45NjQsMCwwLDEsMCwyNS41MzZWMS45NjRBMS45NjQsMS45NjQsMCwwLDEsMS45NjQsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiIGZpbGw9InVybCgjbGluZWFyLWdyYWRpZW50LTcpIi8+DQogICAgICAgICAgPHBhdGggaWQ9IlBhdGhfMTU1NDkiIGRhdGEtbmFtZT0iUGF0aCAxNTU0OSIgZD0iTTExLjM1OSw0LjA0N2gyYTQuMzczLDQuMzczLDAsMCwxLDIuNzM0LjgsMi40OTEsMi40OTEsMCwwLDEsMS4wMzksMi4wNywyLjY0LDIuNjQsMCwwLDEtMS4xLDIuMTQ4LDUuMjMzLDUuMjMzLDAsMCwxLTMuMzMyLjg0NFYxNEgxMS4zNTlaTTEyLjcsNS4yMzRWOC43MTlhNC44NjQsNC44NjQsMCwwLDAsMi4yNy0uNDM0LDEuNDI1LDEuNDI1LDAsMCwwLC43MzgtMS4zNCwxLjU3NSwxLjU3NSwwLDAsMC0uNTU5LTEuMkEzLjk0OCwzLjk0OCwwLDAsMCwxMi43LDUuMjM0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiA2LjUpIiBmaWxsPSIjZmZmIi8+DQogICAgICAgIDwvZz4NCiAgICAgIDwvZz4NCiAgICAgIDxnIGlkPSJHcm91cF80NTI4IiBkYXRhLW5hbWU9Ikdyb3VwIDQ1MjgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04NCAtNDApIj4NCiAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtMTQiIGRhdGEtbmFtZT0iTGFiZWwtV2VsY29tZSIgZD0iTTEuNTMzLS45ODZINS4xODZMNS4wMSwwSC0uMTMyTC4wMi0uODU5LDQuNDU4LTYuMTEzSC45NTJsLjE3Ni0xaDVsLS4xNDYuODRaTTYuMTQzLTIuNjYxQTMuNDc2LDMuNDc2LDAsMCwxLDYuNi00LjA3MmEyLjcwOSwyLjcwOSwwLDAsMSwuOTU5LS45ODEsMi4zNzEsMi4zNzEsMCwwLDEsMS4zLS4zMjcsMi4wMTgsMi4wMTgsMCwwLDEsMS4xNzIuMzYxLDIuMDA3LDIuMDA3LDAsMCwxLC43Mi45NjJBMy4wNTQsMy4wNTQsMCwwLDEsMTAuOTA4LTIuN2EzLjU0MSwzLjU0MSwwLDAsMS0uNDU3LDEuNDg0LDIuNywyLjcsMCwwLDEtLjk2Ny45ODlBMi40LDIuNCwwLDAsMSw4LjE3OS4xLDIuMDA5LDIuMDA5LDAsMCwxLDcuMDE0LS4yNjFhMi4wMTQsMi4wMTQsMCwwLDEtLjcyLS45NTcsMy4wMTUsMy4wMTUsMCwwLDEtLjE2Ni0xLjM0Wm0xLjEzOC42NjlhMS40LDEuNCwwLDAsMCwuMjcxLjgyMy44NjcuODY3LDAsMCwwLC42ODYuMzI1LDEuMjE3LDEuMjE3LDAsMCwwLDEtLjQ1OUEyLjQxNSwyLjQxNSwwLDAsMCw5Ljc0MS0yLjZsLjAyOS0uNDc5YTEuNjkxLDEuNjkxLDAsMCwwLS4yNDktLjk4MUEuODc0Ljg3NCwwLDAsMCw4LjgtNC40MzRhMS4yNjUsMS4yNjUsMCwwLDAtMS4xNzIuNzI4QTIuNzE4LDIuNzE4LDAsMCwwLDcuMy0yLjY2MSw0LjA4OCw0LjA4OCwwLDAsMCw3LjI4LTEuOTkyWm00LjQzNC0uNjY5YTMuNDc2LDMuNDc2LDAsMCwxLC40NTctMS40MTEsMi43MDksMi43MDksMCwwLDEsLjk1OS0uOTgxLDIuMzcxLDIuMzcxLDAsMCwxLDEuMy0uMzI3QTIuMDE4LDIuMDE4LDAsMCwxLDE1LjYtNS4wMmEyLjAwNywyLjAwNywwLDAsMSwuNzIuOTYyQTMuMDU0LDMuMDU0LDAsMCwxLDE2LjQ3OS0yLjdhMy41NDEsMy41NDEsMCwwLDEtLjQ1NywxLjQ4NCwyLjcsMi43LDAsMCwxLS45NjcuOTg5QTIuNCwyLjQsMCwwLDEsMTMuNzUuMWEyLjAwOSwyLjAwOSwwLDAsMS0xLjE2NS0uMzU5LDIuMDE0LDIuMDE0LDAsMCwxLS43Mi0uOTU3LDMuMDE1LDMuMDE1LDAsMCwxLS4xNjYtMS4zNFptMS4xMzguNjY5YTEuNCwxLjQsMCwwLDAsLjI3MS44MjMuODY3Ljg2NywwLDAsMCwuNjg2LjMyNSwxLjIxNywxLjIxNywwLDAsMCwxLS40NTlBMi40MTUsMi40MTUsMCwwLDAsMTUuMzEzLTIuNmwuMDI5LS40NzlhMS42OTEsMS42OTEsMCwwLDAtLjI0OS0uOTgxLjg3NC44NzQsMCwwLDAtLjcyMy0uMzc2LDEuMjY1LDEuMjY1LDAsMCwwLTEuMTcyLjcyOCwyLjcxOCwyLjcxOCwwLDAsMC0uMzI3LDEuMDQ1QTQuMDg4LDQuMDg4LDAsMCwwLDEyLjg1Mi0xLjk5MlpNMTktNS4yODhsLS4xLjU2MmEyLjAzNywyLjAzNywwLDAsMSwxLjU2My0uNjU0LDEuNTE3LDEuNTE3LDAsMCwxLC44MjguMjI5LDEuMDg2LDEuMDg2LDAsMCwxLC40NDcuNTgxLDIuMTI5LDIuMTI5LDAsMCwxLDEuNjgtLjgxMSwxLjM3MiwxLjM3MiwwLDAsMSwxLjE0NS41MywyLjAyMiwyLjAyMiwwLDAsMSwuMjgxLDEuNDI4TDI0LjI3MiwwSDIzLjExNWwuNTc2LTMuNDMzYTEuOCwxLjgsMCwwLDAsMC0uNC42NDYuNjQ2LDAsMCwwLS43MjMtLjU4NiwxLjIxOCwxLjIxOCwwLDAsMC0xLjEzMy43ODZsLS4wMTUuMTA3TDIxLjIyMSwwSDIwLjA1OWwuNTc2LTMuNDE4YTEuNzU0LDEuNzU0LDAsMCwwLDAtLjM5MS42NTIuNjUyLDAsMCwwLS43MjMtLjYwNSwxLjI3NiwxLjI3NiwwLDAsMC0xLjA4NC41ODFMMTguMTY0LDBIMTcuMDA3bC45MTMtNS4yODNaTTMwLjU1Ny02LjU2N2wtLjIyNSwxLjI4NGguOWwtLjE1MS44NzloLS45MDhsLS41LDIuOTU5YTEuMDEyLDEuMDEyLDAsMCwwLDAsLjIycS4wMjkuMzE3LjM5MS4zMzJhMi4yMDYsMi4yMDYsMCwwLDAsLjQxLS4wNDRMMzAuNC0uMDFhMi42NTMsMi42NTMsMCwwLDEtLjcyOC4xLDEuMDgsMS4wOCwwLDAsMS0uOTA2LS40MTMsMS40OTMsMS40OTMsMCwwLDEtLjIzNy0xLjA2N0wyOS4wMTktNC40aC0uODQ1bC4xNTYtLjg3OWguODRsLjIyNS0xLjI4NFptLjgxNSwzLjkwNmEzLjQ3NiwzLjQ3NiwwLDAsMSwuNDU3LTEuNDExLDIuNzA5LDIuNzA5LDAsMCwxLC45NTktLjk4MSwyLjM3MSwyLjM3MSwwLDAsMSwxLjMtLjMyNywyLjAxOCwyLjAxOCwwLDAsMSwxLjE3Mi4zNjEsMi4wMDcsMi4wMDcsMCwwLDEsLjcyLjk2MkEzLjA1NCwzLjA1NCwwLDAsMSwzNi4xMzgtMi43YTMuNTQxLDMuNTQxLDAsMCwxLS40NTcsMS40ODQsMi43LDIuNywwLDAsMS0uOTY3Ljk4OUEyLjQsMi40LDAsMCwxLDMzLjQwOC4xYTIuMDA5LDIuMDA5LDAsMCwxLTEuMTY1LS4zNTksMi4wMTQsMi4wMTQsMCwwLDEtLjcyLS45NTcsMy4wMTUsMy4wMTUsMCwwLDEtLjE2Ni0xLjM0Wm0xLjEzOC42NjlhMS40LDEuNCwwLDAsMCwuMjcxLjgyMy44NjcuODY3LDAsMCwwLC42ODYuMzI1LDEuMjE3LDEuMjE3LDAsMCwwLDEtLjQ1OUEyLjQxNSwyLjQxNSwwLDAsMCwzNC45NzEtMi42TDM1LTMuMDc2YTEuNjkxLDEuNjkxLDAsMCwwLS4yNDktLjk4MS44NzQuODc0LDAsMCwwLS43MjMtLjM3NiwxLjI2NSwxLjI2NSwwLDAsMC0xLjE3Mi43MjgsMi43MTgsMi43MTgsMCwwLDAtLjMyNywxLjA0NUE0LjA4OCw0LjA4OCwwLDAsMCwzMi41MS0xLjk5MlpNNDMuNzQ1LTMuMDEzSDQwLjk3Mkw0MC40NDksMEgzOS4yNDNsMS4yMy03LjEwOWg0LjM5NWwtLjE3NiwxSDQxLjUwOUw0MS4xNDMtNGgyLjc3OFpNNDUuNzM3LDBINDQuNThMNDUuNS01LjI4M2gxLjE1N1ptLS4wNzMtNi42MzZhLjY1My42NTMsMCwwLDEsLjE3Ni0uNDU5LjY0NC42NDQsMCwwLDEsLjQ3NC0uMi42MTYuNjE2LDAsMCwxLC40NzEuMTczLjYuNiwwLDAsMSwuMTg4LjQ0Ny42MTcuNjE3LDAsMCwxLS4xODMuNDU5LjY3MS42NzEsMCwwLDEtLjQ2Ni4xOS42MjYuNjI2LDAsMCwxLS40NjktLjE2OEEuNTgxLjU4MSwwLDAsMSw0NS42NjQtNi42MzZabTMuOTYuMDY4TDQ5LjQtNS4yODNoLjlsLS4xNTEuODc5aC0uOTA4bC0uNSwyLjk1OWExLjAxMiwxLjAxMiwwLDAsMCwwLC4yMnEuMDI5LjMxNy4zOTEuMzMyYTIuMjA2LDIuMjA2LDAsMCwwLC40MS0uMDQ0bC0uMDc4LjkyOGEyLjY1MywyLjY1MywwLDAsMS0uNzI4LjFBMS4wOCwxLjA4LDAsMCwxLDQ3LjgzLS4zMmExLjQ5MywxLjQ5MywwLDAsMS0uMjM3LTEuMDY3TDQ4LjA4Ni00LjRoLS44NDVsLjE1Ni0uODc5aC44NGwuMjI1LTEuMjg0Wm0tNDksMTMuN0E4LjYyOCw4LjYyOCwwLDAsMSwxLjcsMy45NTgsNC41LDQuNSwwLDAsMSwzLjczLDIuMDMxbC4xNzYuN0E2LjI3OSw2LjI3OSwwLDAsMCwxLjczOCw2Ljc3N2ExMS4zLDExLjMsMCwwLDAtLjE4NiwxLjkzOCw1LjM2Miw1LjM2MiwwLDAsMCwuMjM0LDEuNzMxLDIuNjEsMi42MSwwLDAsMCwuNzIzLDEuMTY1bC0uMjczLjY0OUEzLjI3NSwzLjI3NSwwLDAsMSwuOTU1LDEwLjY0OSw2LjI1NSw2LjI1NSwwLDAsMSwuNTQ3LDguMWE3LjU3OCw3LjU3OCwwLDAsMSwuMDY4LS44ODlaTTYuNjcsOC41MzVxLjA4My0uNDgzLS42MjctLjY3MWE3Ljk3Nyw3Ljk3NywwLDAsMS0uOTY5LS4zQTEuMzM2LDEuMzM2LDAsMCwxLDQuMSw2LjI1NWExLjQ4NiwxLjQ4NiwwLDAsMSwuNjQ3LTEuMTc5QTIuMzcxLDIuMzcxLDAsMCwxLDYuMjQsNC42MTlhMi4wNDEsMi4wNDEsMCwwLDEsMS4zNy40NzQsMS41MSwxLjUxLDAsMCwxLC41MiwxLjIxNmwtMS4xNDcsMGEuNzQxLjc0MSwwLDAsMC0uMi0uNTc0LjgxNy44MTcsMCwwLDAtLjU3Ni0uMjE3LDEuMTM2LDEuMTM2LDAsMCwwLS42NjIuMTkuNzEuNzEsMCwwLDAtLjMyLjVxLS4wNjguNDQ0LjYyNS42MThhNi44Niw2Ljg2LDAsMCwxLDEuMDI1LjMyLDEuMzM3LDEuMzM3LDAsMCwxLC45MzMsMS4zMjgsMS40NiwxLjQ2LDAsMCwxLS4zMy44NzYsMS45MjMsMS45MjMsMCwwLDEtLjgxOC41NzEsMi44LDIuOCwwLDAsMS0xLjA4OS4xODMsMi4xNDgsMi4xNDgsMCwwLDEtMS40MzMtLjVBMS41NywxLjU3LDAsMCwxLDMuNTc5LDguMzNsMS4xMTgsMGEuODUxLjg1MSwwLDAsMCwuMjU0LjY0NUEuOTgxLjk4MSwwLDAsMCw1LjYyLDkuMmExLjMyOCwxLjMyOCwwLDAsMCwuNzE1LS4xNzhBLjY4NC42ODQsMCwwLDAsNi42Nyw4LjUzNVpNMTAuOTU3LDEwLjFhMi4yMTMsMi4yMTMsMCwwLDEtMS4xOTQtLjM0NywxLjk3MiwxLjk3MiwwLDAsMS0uNzQ3LS45MDgsMi43LDIuNywwLDAsMS0uMTgzLTEuMjg0bC4wMTUtLjJhMy41MzYsMy41MzYsMCwwLDEsLjQ3MS0xLjQ0OCwyLjY4OSwyLjY4OSwwLDAsMSwuOTU1LS45NzQsMi4zMjEsMi4zMjEsMCwwLDEsMS4yNC0uMzE3QTEuNzMxLDEuNzMxLDAsMCwxLDEzLDUuMzU4YTIuNzExLDIuNzExLDAsMCwxLC4zNzQsMS44NzNsLS4wNjguNTA5SDkuOThhMS40MzUsMS40MzUsMCwwLDAsLjI1NCwxLjAxMiwxLjAwNiwxLjAwNiwwLDAsMCwuODIuMzk0QTEuNzgsMS43OCwwLDAsMCwxMi40MzIsOC41bC41ODYuNjE1YTIuMjI3LDIuMjI3LDAsMCwxLS44NzQuNzM1QTIuNiwyLjYsMCwwLDEsMTAuOTU3LDEwLjFabS40OTMtNC41MzFxLS45MTgtLjAyOS0xLjM3NywxLjNsMi4xOTIsMCwuMDItLjFhMS41MzIsMS41MzIsMCwwLDAsMC0uNDM5LjkuOSwwLDAsMC0uMjczLS41NDdBLjg2Ni44NjYsMCwwLDAsMTEuNDUsNS41NjZaTTE1LjA0OSwxMEgxMy44OTJsMS4zLTcuNWgxLjE1N1ptMy42ODcuMWEyLjIxMywyLjIxMywwLDAsMS0xLjE5NC0uMzQ3LDEuOTcyLDEuOTcyLDAsMCwxLS43NDctLjkwOCwyLjcsMi43LDAsMCwxLS4xODMtMS4yODRsLjAxNS0uMkEzLjUzNiwzLjUzNiwwLDAsMSwxNy4xLDUuOTExYTIuNjg5LDIuNjg5LDAsMCwxLC45NTUtLjk3NCwyLjMyMSwyLjMyMSwwLDAsMSwxLjI0LS4zMTcsMS43MzEsMS43MzEsMCwwLDEsMS40ODcuNzM4LDIuNzExLDIuNzExLDAsMCwxLC4zNzQsMS44NzNsLS4wNjguNTA5SDE3Ljc1OWExLjQzNSwxLjQzNSwwLDAsMCwuMjU0LDEuMDEyLDEuMDA2LDEuMDA2LDAsMCwwLC44Mi4zOTRBMS43OCwxLjc4LDAsMCwwLDIwLjIxLDguNWwuNTg2LjYxNWEyLjIyNywyLjIyNywwLDAsMS0uODc0LjczNUEyLjYsMi42LDAsMCwxLDE4LjczNSwxMC4xWm0uNDkzLTQuNTMxcS0uOTE4LS4wMjktMS4zNzcsMS4zbDIuMTkyLDAsLjAyLS4xYTEuNTMyLDEuNTMyLDAsMCwwLDAtLjQzOS45LjksMCwwLDAtLjI3My0uNTQ3QS44NjYuODY2LDAsMCwwLDE5LjIyOSw1LjU2NlpNMjMuOSw5LjE1NWExLjEzMiwxLjEzMiwwLDAsMCwxLjE0My0uOWwxLjA5NCwwYTEuODcsMS44NywwLDAsMS0uMzc4Ljk1MiwyLjIsMi4yLDAsMCwxLS44MzMuNjY5LDIuMzEsMi4zMSwwLDAsMS0xLjA2LjIyNSwxLjk5LDEuOTksMCwwLDEtMS4xNTctLjM1MiwxLjk0NCwxLjk0NCwwLDAsMS0uNy0uOTQ1LDMuMDIzLDMuMDIzLDAsMCwxLS4xNDYtMS4zNDVsLjAxNS0uMTcxQTMuNDU3LDMuNDU3LDAsMCwxLDIyLjMyNyw1LjlhMi42MDgsMi42MDgsMCwwLDEsLjk0LS45NTksMi4zNTQsMi4zNTQsMCwwLDEsMS4yNzktLjMxNywxLjg0OCwxLjg0OCwwLDAsMSwxLjM3Mi41NjksMi4wMDksMi4wMDksMCwwLDEsLjUxMywxLjQyOEgyNS4zNDdhMS4xODEsMS4xODEsMCwwLDAtLjIyMi0uNzQyLjgxMy44MTMsMCwwLDAtLjY0Mi0uMzA4LDEuMTcyLDEuMTcyLDAsMCwwLTEuMDY5LjU3NiwzLjIxNiwzLjIxNiwwLDAsMC0uNDIsMS42OFEyMi45NTksOS4xMzYsMjMuOSw5LjE1NVptNS40MTUtNS43MjMtLjIyNSwxLjI4NEgzMGwtLjE1MS44NzloLS45MDhsLS41LDIuOTU5YTEuMDEyLDEuMDEyLDAsMCwwLDAsLjIycS4wMjkuMzE3LjM5MS4zMzJhMi4yMDYsMi4yMDYsMCwwLDAsLjQxLS4wNDRsLS4wNzguOTI4YTIuNjUzLDIuNjUzLDAsMCwxLS43MjguMSwxLjA4LDEuMDgsMCwwLDEtLjkwNi0uNDEzLDEuNDkzLDEuNDkzLDAsMCwxLS4yMzctMS4wNjdMMjcuNzc4LDUuNmgtLjg0NWwuMTU2LS44NzloLjg0bC4yMjUtMS4yODRaTTMxLjIzLDEwSDMwLjA3M2wuOTE4LTUuMjgzaDEuMTU3Wm0tLjA3My02LjYzNmEuNjUzLjY1MywwLDAsMSwuMTc2LS40NTkuNjQ0LjY0NCwwLDAsMSwuNDc0LS4yLjYxNi42MTYsMCwwLDEsLjQ3MS4xNzMuNi42LDAsMCwxLC4xODguNDQ3LjYxNy42MTcsMCwwLDEtLjE4My40NTkuNjcxLjY3MSwwLDAsMS0uNDY2LjE5LjYyNi42MjYsMCwwLDEtLjQ2OS0uMTY4QS41ODEuNTgxLDAsMCwxLDMxLjE1NywzLjM2NFpNMzIuOCw3LjMzOWEzLjQ3NiwzLjQ3NiwwLDAsMSwuNDU3LTEuNDExLDIuNzA5LDIuNzA5LDAsMCwxLC45NTktLjk4MSwyLjM3MSwyLjM3MSwwLDAsMSwxLjMtLjMyN0ExLjk2MiwxLjk2MiwwLDAsMSwzNy40MSw1Ljk0MiwzLjA1NCwzLjA1NCwwLDAsMSwzNy41NjgsNy4zYTMuNTQxLDMuNTQxLDAsMCwxLS40NTcsMS40ODQsMi43LDIuNywwLDAsMS0uOTY3Ljk4OSwyLjQsMi40LDAsMCwxLTEuMzA2LjMyNSwxLjk2LDEuOTYsMCwwLDEtMS44ODUtMS4zMTYsMy4wMTUsMy4wMTUsMCwwLDEtLjE2Ni0xLjM0Wm0xLjEzOC42NjlhMS40LDEuNCwwLDAsMCwuMjcxLjgyMy44NjcuODY3LDAsMCwwLC42ODYuMzI1LDEuMjE3LDEuMjE3LDAsMCwwLDEtLjQ1OUEyLjQxNSwyLjQxNSwwLDAsMCwzNi40LDcuNGwuMDI5LS40NzlhMS42OTEsMS42OTEsMCwwLDAtLjI0OS0uOTgxLjg3NC44NzQsMCwwLDAtLjcyMy0uMzc2LDEuMjY1LDEuMjY1LDAsMCwwLTEuMTcyLjcyOCwyLjcxOCwyLjcxOCwwLDAsMC0uMzI3LDEuMDQ1QTQuMDg4LDQuMDg4LDAsMCwwLDMzLjk0LDguMDA4Wm02LjE0My0zLjMtLjExNy42MmEyLjAxNiwyLjAxNiwwLDAsMSwxLjU2Ny0uNzEzLDEuMjc3LDEuMjc3LDAsMCwxLDEuMS41M0EyLjExNSwyLjExNSwwLDAsMSw0Mi45LDYuNTg3TDQyLjMyNCwxMEg0MS4xNjdsLjU3Ni0zLjQyOGExLjc1NCwxLjc1NCwwLDAsMCwwLS4zOTEuNjIzLjYyMywwLDAsMC0uNjkzLS42LDEuNDA3LDEuNDA3LDAsMCwwLTEuMTU3LjY0OUwzOS4yMzgsMTBIMzguMDgxbC45MTMtNS4yODNabTMuMDMyLDcuNTU5LS4xODEtLjY3NGE1LjM2NSw1LjM2NSwwLDAsMCwxLjYyMS0yLjE3LDkuODg1LDkuODg1LDAsMCwwLC43MTMtMy4yMzVsLjAyLS42MDVhMy43LDMuNywwLDAsMC0uOTU3LTIuOWwuMjc4LS42NTRBMywzLDAsMCwxLDQ1LjU2OSwzYTQuNTQ0LDQuNTQ0LDAsMCwxLC41OTEsMS40NjdBNy4wOTIsNy4wOTIsMCwwLDEsNDYuMzMzLDYuMmE5LDksMCwwLDEtLjQ4MSwyLjYzOSw3LjA2NSw3LjA2NSwwLDAsMS0xLjE0NSwyLjE1OEE0LjMxMiw0LjMxMiwwLDAsMSw0My4xMTUsMTIuMjcxWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjYzIDc3MCkiIGZpbGw9IiMwNTBjMWEiLz4NCiAgICAgICAgPGcgaWQ9IlNxdWFyZS0yIiBkYXRhLW5hbWU9IlNxdWFyZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjI1IDc1NSkiPg0KICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIC0zNDAsIC0yMzkpIiBmaWx0ZXI9InVybCgjUGF0aF85MTQtNSkiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE0LTIwIiBkYXRhLW5hbWU9IlBhdGggOTE0IiBkPSJNMiwwSDMwYTIuMTc1LDIuMTc1LDAsMCwxLDEuNS42NzNBMi40MDgsMi40MDgsMCwwLDEsMzEuNzY1LDJWMzBBMS42NCwxLjY0LDAsMCwxLDMwLDMxLjc4OWwtMjguMDMxLjE0OWEyLjIsMi4yLDAsMCwxLTEuMzkxLS41NzhBMS42NTYsMS42NTYsMCwwLDEsMCwzMFYyQTIsMiwwLDAsMSwyLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNDAgMjM5KSIgZmlsbD0iIzRhNGE0YSIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8ZyBpZD0iTWFza19Hcm91cF8zLTUiIGRhdGEtbmFtZT0iTWFzayBHcm91cCAzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNjkxIC02NTApIiBjbGlwLXBhdGg9InVybCgjY2xpcC1wYXRoLTQpIj4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNS01IiBkYXRhLW5hbWU9IlBhdGggOTE1IiBkPSJNMiwwSDMwYTIsMiwwLDAsMSwyLDJWMzBhMiwyLDAsMCwxLTIsMkgyYTIsMiwwLDAsMS0yLTJWMkEyLDIsMCwwLDEsMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjkxIDY1MCkiIGZpbGw9IiMyMTIxMjEiLz4NCiAgICAgICAgICA8L2c+DQogICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE2LTUiIGRhdGEtbmFtZT0iUGF0aCA5MTYiIGQ9Ik0xLjk2NCwwSDI1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSwyNy41LDEuOTY0VjI1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSwyNS41MzYsMjcuNUgxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwwLDI1LjUzNlYxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwxLjk2NCwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtNykiLz4NCiAgICAgICAgICA8cGF0aCBpZD0iUGF0aF8xNTU0OCIgZGF0YS1uYW1lPSJQYXRoIDE1NTQ4IiBkPSJNMTEuNDI2LDQuMDQ3aDUuNTE2VjUuNDA2SDEyLjc3VjcuODkxaDQuMTcyVjkuMjM0SDEyLjc4NVYxNEgxMS40MjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDYuNSkiIGZpbGw9IiNmZmYiLz4NCiAgICAgICAgPC9nPg0KICAgICAgPC9nPg0KICAgICAgPGcgaWQ9Ikdyb3VwXzQ1MjkiIGRhdGEtbmFtZT0iR3JvdXAgNDUyOSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg0IC04MCkiPg0KICAgICAgICA8cGF0aCBpZD0iTGFiZWwtV2VsY29tZS0xNSIgZGF0YS1uYW1lPSJMYWJlbC1XZWxjb21lIiBkPSJNMS40NiwwSC4yNTlMMS40OTQtNy4xMDlIMi43Wk02LjAyNS0xLjQ2NXEuMDgzLS40ODMtLjYyNy0uNjcxYTcuOTc3LDcuOTc3LDAsMCwxLS45NjktLjMsMS4zMzYsMS4zMzYsMCwwLDEtLjk3Mi0xLjMwOUExLjQ4NiwxLjQ4NiwwLDAsMSw0LjEtNC45MjQsMi4zNzEsMi4zNzEsMCwwLDEsNS42LTUuMzgxYTIuMDQxLDIuMDQxLDAsMCwxLDEuMzcuNDc0LDEuNTEsMS41MSwwLDAsMSwuNTIsMS4yMTZsLTEuMTQ3LDBhLjc0MS43NDEsMCwwLDAtLjItLjU3NC44MTcuODE3LDAsMCwwLS41NzYtLjIxN0ExLjEzNiwxLjEzNiwwLDAsMCw0LjktNC4zYS43MS43MSwwLDAsMC0uMzIuNXEtLjA2OC40NDQuNjI1LjYxOGE2Ljg2LDYuODYsMCwwLDEsMS4wMjUuMzIsMS4zMzcsMS4zMzcsMCwwLDEsLjkzMywxLjMyOCwxLjQ2LDEuNDYsMCwwLDEtLjMzLjg3NiwxLjkyMywxLjkyMywwLDAsMS0uODE4LjU3MUEyLjgsMi44LDAsMCwxLDQuOTI3LjFhMi4xNDgsMi4xNDgsMCwwLDEtMS40MzMtLjVBMS41NywxLjU3LDAsMCwxLDIuOTM1LTEuNjdsMS4xMTgsMGEuODUxLjg1MSwwLDAsMCwuMjU0LjY0NUEuOTgxLjk4MSwwLDAsMCw0Ljk3Ni0uOGExLjMyOCwxLjMyOCwwLDAsMCwuNzE1LS4xNzhBLjY4NC42ODQsMCwwLDAsNi4wMjUtMS40NjVaTTguMi0yLjY2MWEzLjQ3NiwzLjQ3NiwwLDAsMSwuNDU3LTEuNDExLDIuNzA5LDIuNzA5LDAsMCwxLC45NTktLjk4MSwyLjM3MSwyLjM3MSwwLDAsMSwxLjMtLjMyNywyLjAxOCwyLjAxOCwwLDAsMSwxLjE3Mi4zNjEsMi4wMDcsMi4wMDcsMCwwLDEsLjcyLjk2MkEzLjA1NCwzLjA1NCwwLDAsMSwxMi45NjQtMi43YTMuNTQxLDMuNTQxLDAsMCwxLS40NTcsMS40ODQsMi43LDIuNywwLDAsMS0uOTY3Ljk4OUEyLjQsMi40LDAsMCwxLDEwLjIzNC4xLDIuMDA5LDIuMDA5LDAsMCwxLDkuMDctLjI2MWEyLjAxNCwyLjAxNCwwLDAsMS0uNzItLjk1NywzLjAxNSwzLjAxNSwwLDAsMS0uMTY2LTEuMzRabTEuMTM4LjY2OWExLjQsMS40LDAsMCwwLC4yNzEuODIzLjg2Ny44NjcsMCwwLDAsLjY4Ni4zMjUsMS4yMTcsMS4yMTcsMCwwLDAsMS0uNDU5QTIuNDE1LDIuNDE1LDAsMCwwLDExLjgtMi42bC4wMjktLjQ3OWExLjY5MSwxLjY5MSwwLDAsMC0uMjQ5LS45ODEuODc0Ljg3NCwwLDAsMC0uNzIzLS4zNzYsMS4yNjUsMS4yNjUsMCwwLDAtMS4xNzIuNzI4LDIuNzE4LDIuNzE4LDAsMCwwLS4zMjcsMS4wNDVBNC4wODgsNC4wODgsMCwwLDAsOS4zMzYtMS45OTJaTTE0LjcyMiwwSDEzLjU2NGwxLjMtNy41aDEuMTU3Wm00LjQzNCwwYTEuNTY3LDEuNTY3LDAsMCwxLS4wNDktLjQ5M0ExLjk1OSwxLjk1OSwwLDAsMSwxNy43LjFhMS42MTgsMS42MTgsMCwwLDEtMS4xNC0uNDQyLDEuMzYzLDEuMzYzLDAsMCwxLS40MjItMS4xLDEuNjE4LDEuNjE4LDAsMCwxLC43MjMtMS4zMTMsMy4xNDYsMy4xNDYsMCwwLDEsMS44MzYtLjQ3OWwuNzUyLjAxLjA2OC0uMzYxYTEuMDksMS4wOSwwLDAsMCwwLS4zNTYuNjM2LjYzNiwwLDAsMC0uNy0uNTQyLDEuMDUzLDEuMDUzLDAsMCwwLS42NTIuMTg4LjgxMy44MTMsMCwwLDAtLjM0NC41M2wtMS4xNTcuMDFhMS40NDksMS40NDksMCwwLDEsLjM0Ny0uODU3LDIuMDU2LDIuMDU2LDAsMCwxLC44My0uNTc0LDIuODEsMi44MSwwLDAsMSwxLjA5NC0uMiwxLjg0OCwxLjg0OCwwLDAsMSwxLjM0OC41MiwxLjU0MSwxLjU0MSwwLDAsMSwuNCwxLjNsLS40MDUsMi40NzYtLjAzOS40MzlhMS41NjEsMS41NjEsMCwwLDAsLjA3My41NjJMMjAuMywwWk0xNy45NjQtLjg1YTEuMjc2LDEuMjc2LDAsMCwwLC42NzktLjE2OCwxLjc4OCwxLjc4OCwwLDAsMCwuNTMyLS40NjFsLjE4MS0xLS41NTIsMGExLjkzOSwxLjkzOSwwLDAsMC0xLjA0NS4yNDcuOS45LDAsMCwwLS40NDQuNjc2LjYuNiwwLDAsMCwuMTQ0LjUxNUEuNy43LDAsMCwwLDE3Ljk2NC0uODVabTUuOTQyLTUuNzE4LS4yMjUsMS4yODRoLjlsLS4xNTEuODc5aC0uOTA4bC0uNSwyLjk1OWExLjAxMiwxLjAxMiwwLDAsMCwwLC4yMnEuMDI5LjMxNy4zOTEuMzMyYTIuMjA2LDIuMjA2LDAsMCwwLC40MS0uMDQ0bC0uMDc4LjkyOGEyLjY1MywyLjY1MywwLDAsMS0uNzI4LjEsMS4wOCwxLjA4LDAsMCwxLS45MDYtLjQxMywxLjQ5MywxLjQ5MywwLDAsMS0uMjM3LTEuMDY3TDIyLjM2OC00LjRoLS44NDVsLjE1Ni0uODc5aC44NGwuMjI1LTEuMjg0Wk0yNi45ODIuMWEyLjIxMywyLjIxMywwLDAsMS0xLjE5NC0uMzQ3LDEuOTcyLDEuOTcyLDAsMCwxLS43NDctLjkwOCwyLjcsMi43LDAsMCwxLS4xODMtMS4yODRsLjAxNS0uMmEzLjUzNiwzLjUzNiwwLDAsMSwuNDcxLTEuNDQ4LDIuNjg5LDIuNjg5LDAsMCwxLC45NTUtLjk3NCwyLjMyMSwyLjMyMSwwLDAsMSwxLjI0LS4zMTcsMS43MzEsMS43MzEsMCwwLDEsMS40ODcuNzM4QTIuNzExLDIuNzExLDAsMCwxLDI5LjQtMi43NjlsLS4wNjguNTA5SDI2LjAwNmExLjQzNSwxLjQzNSwwLDAsMCwuMjU0LDEuMDEyLDEuMDA2LDEuMDA2LDAsMCwwLC44Mi4zOTRBMS43OCwxLjc4LDAsMCwwLDI4LjQ1Ny0xLjVsLjU4Ni42MTVhMi4yMjcsMi4yMjcsMCwwLDEtLjg3NC43MzVBMi42LDIuNiwwLDAsMSwyNi45ODIuMVptLjQ5My00LjUzMXEtLjkxOC0uMDI5LTEuMzc3LDEuM2wyLjE5MiwwLC4wMi0uMWExLjUzMiwxLjUzMiwwLDAsMCwwLS40MzkuOS45LDAsMCwwLS4yNzMtLjU0N0EuODY2Ljg2NiwwLDAsMCwyNy40NzYtNC40MzRaTTM1LjE1Ni4xYTIuNDEsMi40MSwwLDAsMS0xLjIxOC0uMzMyLDIuMTMyLDIuMTMyLDAsMCwxLS44MTgtLjkyLDMuNTEyLDMuNTEyLDAsMCwxLS4zMzItMS4zN0E2LjMsNi4zLDAsMCwxLDMyLjktMy45NWE0LjgsNC44LDAsMCwxLC41MTMtMS40ODcsMy43MzcsMy43MzcsMCwwLDEsLjg4MS0xLjEsMi45LDIuOSwwLDAsMSwxLjk1My0uNjc0LDIuMTk0LDIuMTk0LDAsMCwxLDEuNjgyLjcyOCwzLjAxMywzLjAxMywwLDAsMSwuNjg2LDEuOTE0LDYuMyw2LjMsMCwwLDEtLjExLDEuMzg5LDUuMDM1LDUuMDM1LDAsMCwxLS40NzksMS40NCwzLjY3NiwzLjY3NiwwLDAsMS0uODQyLDEuMUEyLjg4MSwyLjg4MSwwLDAsMSwzNS4xNTYuMVptMi4yMjItMy44NDMuMDQ0LS41MThhMy4xLDMuMSwwLDAsMC0uMDkzLS45ODQsMS4yOTEsMS4yOTEsMCwwLDAtLjQxMy0uNjg4LDEuMTksMS4xOSwwLDAsMC0uNzM1LS4yNTEsMS42NTEsMS42NTEsMCwwLDAtMS4wOTEuMzQ3LDIuNTQxLDIuNTQxLDAsMCwwLS43NzEsMS4xMTMsNS44MzMsNS44MzMsMCwwLDAtLjM0NCwxLjg3NSwyLjM3OCwyLjM3OCwwLDAsMCwuMjczLDEuNDA2LDEuMTEsMS4xMSwwLDAsMCwuOTY3LjUzMiwxLjY2OSwxLjY2OSwwLDAsMCwxLjM5NC0uNjM1LDMuNjYsMy42NiwwLDAsMCwuNzItMS44NTVabTYuNjM2LDEuMTI4YTQuMyw0LjMsMCwwLDEtLjQzMiwxLjQ1OCwyLjM5MSwyLjM5MSwwLDAsMS0uODMuOTY0LDEuOTU4LDEuOTU4LDAsMCwxLTEuMTE2LjNBMS41NTMsMS41NTMsMCwwLDEsNDAuMy0uNTc2TDQwLjExNywwaC0xLjA2bDEuMy03LjVoMS4xNjJsLS41MjcsMi43MjlhMS44LDEuOCwwLDAsMSwxLjQtLjYxLDEuNSwxLjUsMCwwLDEsMS4yLjU2MiwyLjQyNCwyLjQyNCwwLDAsMSwuNDU3LDEuNDg0QTYuODA3LDYuODA3LDAsMCwxLDQ0LjAxNC0yLjYxN1pNNDIuOS0zLjI3MWExLjM4NiwxLjM4NiwwLDAsMC0uMjItLjgzMy43NjIuNzYyLDAsMCwwLS42MzUtLjMxLDEuMzYxLDEuMzYxLDAsMCwwLTEuMTgyLjY3NGwtLjM4MSwyLjE4OGEuOTIyLjkyMiwwLDAsMCwuOTIzLjY4OCwxLjE1LDEuMTUsMCwwLDAsLjk2NC0uNDQ5LDIuNTQ3LDIuNTQ3LDAsMCwwLC40ODYtMS4zMDlRNDIuOS0zLjAzNyw0Mi45LTMuMjcxWm0zLjc4OS0yLjAxMkw0NS43MTguNDY0YTIuMDM5LDIuMDM5LDAsMCwxLS41NjYsMS4yNTcsMS42MywxLjYzLDAsMCwxLTEuMi40MjcsMy4yNzUsMy4yNzUsMCwwLDEtLjY1OS0uMDkzbC4xLS45MzdhMS43NzYsMS43NzYsMCwwLDAsLjQxLjA1NHEuNjIsMCwuNzQ3LS43MjhsLjk4MS01LjcyOFpNNDUuNjc0LTYuNjM2QS42NDYuNjQ2LDAsMCwxLDQ1Ljg1LTcuMWEuNjUyLjY1MiwwLDAsMSwuNDY5LS4xOTMuNjI1LjYyNSwwLDAsMSwuNDcxLjE2OC42LjYsMCwwLDEsLjE4OC40NTIuNjE3LjYxNywwLDAsMS0uMTgzLjQ1OS42NzEuNjcxLDAsMCwxLS40NjYuMTkuNjU2LjY1NiwwLDAsMS0uNDc0LS4xNzNBLjU4LjU4LDAsMCwxLDQ1LjY3NC02LjYzNlpNNDkuNDM4LjFhMi4yMTMsMi4yMTMsMCwwLDEtMS4xOTQtLjM0NywxLjk3MiwxLjk3MiwwLDAsMS0uNzQ3LS45MDgsMi43LDIuNywwLDAsMS0uMTgzLTEuMjg0bC4wMTUtLjJBMy41MzYsMy41MzYsMCwwLDEsNDcuOC00LjA4OWEyLjY4OSwyLjY4OSwwLDAsMSwuOTU1LS45NzRBMi4zMjEsMi4zMjEsMCwwLDEsNTAtNS4zODFhMS43MzEsMS43MzEsMCwwLDEsMS40ODcuNzM4LDIuNzExLDIuNzExLDAsMCwxLC4zNzQsMS44NzNsLS4wNjguNTA5SDQ4LjQ2MmExLjQzNSwxLjQzNSwwLDAsMCwuMjU0LDEuMDEyLDEuMDA2LDEuMDA2LDAsMCwwLC44Mi4zOTRBMS43OCwxLjc4LDAsMCwwLDUwLjkxMy0xLjVsLjU4Ni42MTVhMi4yMjcsMi4yMjcsMCwwLDEtLjg3NC43MzVBMi42LDIuNiwwLDAsMSw0OS40MzguMVptLjQ5My00LjUzMXEtLjkxOC0uMDI5LTEuMzc3LDEuM2wyLjE5MiwwLC4wMi0uMWExLjUzMiwxLjUzMiwwLDAsMCwwLS40MzkuOS45LDAsMCwwLS4yNzMtLjU0N0EuODY2Ljg2NiwwLDAsMCw0OS45MzItNC40MzRaTTU0LjYtLjg0NWExLjExMSwxLjExMSwwLDAsMCwuNzM1LS4yNDIsMS4xMDksMS4xMDksMCwwLDAsLjQwOC0uNjU3bDEuMDk0LDBhMS44NywxLjg3LDAsMCwxLS4zNzguOTUyLDIuMiwyLjIsMCwwLDEtLjgzMy42NjlBMi4zMSwyLjMxLDAsMCwxLDU0LjU3LjFhMS45OSwxLjk5LDAsMCwxLTEuMTU3LS4zNTIsMS45NDQsMS45NDQsMCwwLDEtLjctLjk0NSwzLjAyMywzLjAyMywwLDAsMS0uMTQ2LTEuMzQ1bC4wMTUtLjE3MUEzLjQ1NywzLjQ1NywwLDAsMSw1My4wMy00LjFhMi42MDgsMi42MDgsMCwwLDEsLjk0LS45NTksMi4zNTQsMi4zNTQsMCwwLDEsMS4yNzktLjMxNywxLjg0OCwxLjg0OCwwLDAsMSwxLjM3Mi41NjksMi4wMDksMi4wMDksMCwwLDEsLjUxMywxLjQyOEg1Ni4wNWExLjE4MSwxLjE4MSwwLDAsMC0uMjIyLS43NDIuODEzLjgxMywwLDAsMC0uNjQyLS4zMDgsMS4xNzIsMS4xNzIsMCwwLDAtMS4wNjkuNTc2LDMuMjE2LDMuMjE2LDAsMCwwLS40MiwxLjY4UTUzLjY2Mi0uODY0LDU0LjYtLjg0NVpNNjAuMDItNi41NjdsLS4yMjUsMS4yODRoLjlsLS4xNTEuODc5aC0uOTA4bC0uNSwyLjk1OWExLjAxMiwxLjAxMiwwLDAsMCwwLC4yMnEuMDI5LjMxNy4zOTEuMzMyYTIuMjA2LDIuMjA2LDAsMCwwLC40MS0uMDQ0bC0uMDc4LjkyOGEyLjY1MywyLjY1MywwLDAsMS0uNzI4LjEsMS4wOCwxLjA4LDAsMCwxLS45MDYtLjQxMywxLjQ5MywxLjQ5MywwLDAsMS0uMjM3LTEuMDY3TDU4LjQ4MS00LjRoLS44NDVsLjE1Ni0uODc5aC44NGwuMjI1LTEuMjg0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjYzIDc3NSkiIGZpbGw9IiMwNTBjMWEiLz4NCiAgICAgICAgPGcgaWQ9IlNxdWFyZS0zIiBkYXRhLW5hbWU9IlNxdWFyZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjI1IDc1NSkiPg0KICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIC0zNDAsIC0xOTkpIiBmaWx0ZXI9InVybCgjUGF0aF85MTQtNikiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE0LTIxIiBkYXRhLW5hbWU9IlBhdGggOTE0IiBkPSJNMiwwSDMwYTIuMTc1LDIuMTc1LDAsMCwxLDEuNS42NzNBMi40MDgsMi40MDgsMCwwLDEsMzEuNzY1LDJWMzBBMS42NCwxLjY0LDAsMCwxLDMwLDMxLjc4OWwtMjguMDMxLjE0OWEyLjIsMi4yLDAsMCwxLTEuMzkxLS41NzhBMS42NTYsMS42NTYsMCwwLDEsMCwzMFYyQTIsMiwwLDAsMSwyLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNDAgMTk5KSIgZmlsbD0iIzRhNGE0YSIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8ZyBpZD0iTWFza19Hcm91cF8zLTYiIGRhdGEtbmFtZT0iTWFzayBHcm91cCAzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNjkxIC02NTApIiBjbGlwLXBhdGg9InVybCgjY2xpcC1wYXRoLTQpIj4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNS02IiBkYXRhLW5hbWU9IlBhdGggOTE1IiBkPSJNMiwwSDMwYTIsMiwwLDAsMSwyLDJWMzBhMiwyLDAsMCwxLTIsMkgyYTIsMiwwLDAsMS0yLTJWMkEyLDIsMCwwLDEsMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjkxIDY1MCkiIGZpbGw9IiMyMTIxMjEiLz4NCiAgICAgICAgICA8L2c+DQogICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE2LTYiIGRhdGEtbmFtZT0iUGF0aCA5MTYiIGQ9Ik0xLjk2NCwwSDI1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSwyNy41LDEuOTY0VjI1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSwyNS41MzYsMjcuNUgxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwwLDI1LjUzNlYxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwxLjk2NCwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtNykiLz4NCiAgICAgICAgICA8cGF0aCBpZD0iUGF0aF8xNTU0NyIgZGF0YS1uYW1lPSJQYXRoIDE1NTQ3IiBkPSJNMTMuMjYyLDQuMDQ3aDEuMzQ0VjE0SDEzLjI2MloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgNi41KSIgZmlsbD0iI2ZmZiIvPg0KICAgICAgICA8L2c+DQogICAgICA8L2c+DQogICAgPC9nPg0KICAgIDxnIGlkPSJHcm91cF80NTIwIiBkYXRhLW5hbWU9Ikdyb3VwIDQ1MjAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ5NCAtOTgpIj4NCiAgICAgIDxnIGlkPSJDb250YWluZXItNSIgZGF0YS1uYW1lPSJDb250YWluZXIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgwIDY0MCkiPg0KICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzE2OTU3LTUiIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDE2OTU3IiB3aWR0aD0iMzIwIiBoZWlnaHQ9IjE2MCIgcng9IjQiIGZpbGw9IiNmNmY2ZjYiLz4NCiAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtMTYiIGRhdGEtbmFtZT0iTGFiZWwtV2VsY29tZSIgZD0iTTIuNzg4LTcuMTA5LDQuMzc1LTIuMTYzLDUuOTU3LTcuMTA5SDguMjEzVjBINi40OTRWLTEuNjZsLjE2Ni0zLjRMNC45NDEsMEgzLjgwOUwyLjA4NS01LjA2M2wuMTY2LDMuNFYwSC41MzdWLTcuMTA5Wm0xMi43MzQsMy43YTQuMTkyLDQuMTkyLDAsMCwxLS4zODYsMS44NDEsMi44NTEsMi44NTEsMCwwLDEtMS4xLDEuMjMzQTMuMDUyLDMuMDUyLDAsMCwxLDEyLjQyMi4xLDMuMSwzLjEsMCwwLDEsMTAuODEtLjMyYTIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSw5LjMtMy4zdi0uNEE0LjIxMSw0LjIxMSwwLDAsMSw5LjY4NS01LjU0YTIuODQ0LDIuODQ0LDAsMCwxLDEuMS0xLjIzMywzLjA3NCwzLjA3NCwwLDAsMSwxLjYyOC0uNDM1LDMuMDQ0LDMuMDQ0LDAsMCwxLDEuNjExLjQzLDIuOSwyLjksMCwwLDEsMS4xLDEuMjIzLDQuMDksNC4wOSwwLDAsMSwuNCwxLjgxOVptLTEuNzQzLS4zYTIuOTksMi45OSwwLDAsMC0uMzU0LTEuNjA5LDEuMTM1LDEuMTM1LDAsMCwwLTEuMDEzLS41NDlxLTEuMjg5LDAtMS4zNjIsMS45MzRsMCwuNTIyQTMuMDc1LDMuMDc1LDAsMCwwLDExLjM5MS0xLjhhMS4xMzQsMS4xMzQsMCwwLDAsMS4wMy41NjIsMS4xMiwxLjEyLDAsMCwwLDEtLjU1MiwyLjk5MSwyLjk5MSwwLDAsMCwuMzU2LTEuNTg3Wm01LjQ3OCwxLjc3MiwxLjQxNi01LjE3NmgxLjkxNEwyMC4xOTUsMEgxOC4zMkwxNS45NDctNy4xMDloMS45Wm04LjQ1Ny0xLjA4NGgtMi43djEuN0gyOC4yVjBoLTQuOVYtNy4xMDloNC45MDd2MS4zMjNIMjUuMDE5djEuNWgyLjdaTTI5LjU4OS42MUgyOC40MjJsMi40MjctNy43MmgxLjE3MlptNC45MzYtMy4wMjJWMEgzMi44MTJWLTcuMTA5aDIuODM3YTMuMywzLjMsMCwwLDEsMS40NDMuMywyLjI2MywyLjI2MywwLDAsMSwuOTcyLjg1NEEyLjMzNCwyLjMzNCwwLDAsMSwzOC40MDctNC43YTIuMDU3LDIuMDU3LDAsMCwxLS43NDUsMS42NjMsMy4wOSwzLjA5LDAsMCwxLTIuMDQzLjYyM1ptMC0xLjMyM2gxLjEyM2ExLjA1OSwxLjA1OSwwLDAsMCwuNzU5LS4yNDkuOTI1LjkyNSwwLDAsMCwuMjYxLS43LDEuMTQ0LDEuMTQ0LDAsMCwwLS4yNjktLjguOTUxLjk1MSwwLDAsMC0uNzMyLS4zSDM0LjUyNVptOC4xNjQsMi40MDdINDAuMzQxTDM5LjkzLDBIMzguMWwyLjYwNy03LjEwOWgxLjYxMUw0NC45NDUsMEg0My4xWk00MC43NTEtMi42NTFoMS41MjhsLS43NjctMi40NjZaTTUxLjYsMEg0OS45bC0yLjUyLTQuNDI0VjBINDUuNjYzVi03LjEwOWgxLjcxNGwyLjUxNSw0LjQyNFYtNy4xMDlINTEuNlptOS43MjYtMi40MDdhMi42LDIuNiwwLDAsMS0uNCwxLjMxMUEyLjQxNiwyLjQxNiwwLDAsMSw1OS45LS4yMTUsMy41LDMuNSwwLDAsMSw1OC4zODcuMSwyLjc5MiwyLjc5MiwwLDAsMSw1Ni4xOC0uODE1YTMuNzcsMy43NywwLDAsMS0uODA2LTIuNTc4di0uMzUyYTQuMyw0LjMsMCwwLDEsLjM2NC0xLjgyOSwyLjc1NiwyLjc1NiwwLDAsMSwxLjA0Ny0xLjIxMSwyLjkyMiwyLjkyMiwwLDAsMSwxLjU4Mi0uNDI3LDMuMDY0LDMuMDY0LDAsMCwxLDIuMDguNjgxLDIuNjkxLDIuNjkxLDAsMCwxLC44OTQsMS44NzdINTkuNjMyYTEuMjczLDEuMjczLDAsMCwwLS4zMjctLjkzMywxLjM0NiwxLjM0NiwwLDAsMC0uOTM3LS4yODMsMS4wMjQsMS4wMjQsMCwwLDAtLjkzNy40NzksMy4wNzUsMy4wNzUsMCwwLDAtLjMxMiwxLjUyOHYuNUEzLjQsMy40LDAsMCwwLDU3LjQtMS43MzNhMS4wNDUsMS4wNDUsMCwwLDAsLjk4NC40ODgsMS4zMTYsMS4zMTYsMCwwLDAsLjktLjI3OCwxLjE4MSwxLjE4MSwwLDAsMCwuMzMyLS44ODRabTUuMDQ5LDEuMDc5SDY0LjAyNkw2My42MTYsMEg2MS43ODVsMi42MDctNy4xMDlINjZMNjguNjMxLDBINjYuNzlaTTY0LjQzNy0yLjY1MWgxLjUyOEw2NS4yLTUuMTE3Wk03MS42LTcuMTA5bDEuNTg3LDQuOTQ2LDEuNTgyLTQuOTQ2aDIuMjU2VjBINzUuMzA1Vi0xLjY2bC4xNjYtMy40TDczLjc1MywwSDcyLjYyTDcwLjktNS4wNjNsLjE2NiwzLjRWMEg2OS4zNDhWLTcuMTA5Wk04Mi43MjItMy4wMThoLTIuN3YxLjdoMy4xODRWMGgtNC45Vi03LjEwOUg4My4yMnYxLjMyM0g4MC4wMjd2MS41aDIuN1ptNC4wMjguNWgtLjkyOFYwSDg0LjEwOVYtNy4xMDloMi44YTMuMTIzLDMuMTIzLDAsMCwxLDEuOTc4LjU2MUExLjksMS45LDAsMCwxLDg5LjYtNC45NjNhMi4zMDgsMi4zMDgsMCwwLDEtLjMsMS4yMjksMi4xMzEsMi4xMzEsMCwwLDEtLjk0Ljc5TDg5Ljg0MS0uMDczVjBIODguMDA1Wm0tLjkyOC0xLjMxOGgxLjA4NGEuOTczLjk3MywwLDAsMCwuNzM1LS4yNTcuOTkzLjk5MywwLDAsMCwuMjQ3LS43MTcsMSwxLDAsMCwwLS4yNDktLjcyMi45NjQuOTY0LDAsMCwwLS43MzItLjI2Mkg4NS44MjNabTkuMDQ4LDIuNUg5Mi41MjJMOTIuMTEyLDBIOTAuMjhsMi42MDctNy4xMDlIOTQuNUw5Ny4xMjYsMEg5NS4yODVaTTkyLjkzMi0yLjY1MUg5NC40NmwtLjc2Ny0yLjQ2NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwIDE4KSIgZmlsbD0iIzA1MGMxYSIvPg0KICAgICAgPC9nPg0KICAgICAgPGcgaWQ9Ikdyb3VwXzQ1MzAiIGRhdGEtbmFtZT0iR3JvdXAgNDUzMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNSkiPg0KICAgICAgICA8ZyBpZD0iU3F1YXJlLTQiIGRhdGEtbmFtZT0iU3F1YXJlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5NSA3MzEpIj4NCiAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAtMjAsIC0yNTUpIiBmaWx0ZXI9InVybCgjUGF0aF85MTQtNykiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE0LTIyIiBkYXRhLW5hbWU9IlBhdGggOTE0IiBkPSJNMiwwSDMwYTIuMTc1LDIuMTc1LDAsMCwxLDEuNS42NzNBMi40MDgsMi40MDgsMCwwLDEsMzEuNzY1LDJWMzBBMS42NCwxLjY0LDAsMCwxLDMwLDMxLjc4OWwtMjguMDMxLjE0OWEyLjIsMi4yLDAsMCwxLTEuMzkxLS41NzhBMS42NTYsMS42NTYsMCwwLDEsMCwzMFYyQTIsMiwwLDAsMSwyLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMCAyNTUpIiBmaWxsPSIjNGE0YTRhIi8+DQogICAgICAgICAgPC9nPg0KICAgICAgICAgIDxnIGlkPSJNYXNrX0dyb3VwXzMtNyIgZGF0YS1uYW1lPSJNYXNrIEdyb3VwIDMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC02OTEgLTY1MCkiIGNsaXAtcGF0aD0idXJsKCNjbGlwLXBhdGgtNCkiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE1LTciIGRhdGEtbmFtZT0iUGF0aCA5MTUiIGQ9Ik0yLDBIMzBhMiwyLDAsMCwxLDIsMlYzMGEyLDIsMCwwLDEtMiwySDJhMiwyLDAsMCwxLTItMlYyQTIsMiwwLDAsMSwyLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2OTEgNjUwKSIgZmlsbD0iIzIxMjEyMSIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8cGF0aCBpZD0iUGF0aF85MTYtNyIgZGF0YS1uYW1lPSJQYXRoIDkxNiIgZD0iTTEuOTY0LDBIMjUuNTM2QTEuOTY0LDEuOTY0LDAsMCwxLDI3LjUsMS45NjRWMjUuNTM2QTEuOTY0LDEuOTY0LDAsMCwxLDI1LjUzNiwyNy41SDEuOTY0QTEuOTY0LDEuOTY0LDAsMCwxLDAsMjUuNTM2VjEuOTY0QTEuOTY0LDEuOTY0LDAsMCwxLDEuOTY0LDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIiBmaWxsPSJ1cmwoI2xpbmVhci1ncmFkaWVudC03KSIvPg0KICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzE1NTQyIiBkYXRhLW5hbWU9IlBhdGggMTU1NDIiIGQ9Ik0xMy45MjIsMy42NjQsMTguNjIxLDE0SDE3LjJsLTEuMTU1LTIuNTQ3SDExLjgxOEwxMC42NzYsMTRIOS4yNjJabTAsMy4xMDYtMS41OTIsMy41NWgzLjJaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDYuNSkiIGZpbGw9IiNmZmYiLz4NCiAgICAgICAgPC9nPg0KICAgICAgICA8ZyBpZD0iU3F1YXJlLTUiIGRhdGEtbmFtZT0iU3F1YXJlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzIgNzMxKSI+DQogICAgICAgICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgLTU3LCAtMjU1KSIgZmlsdGVyPSJ1cmwoI1BhdGhfOTE0LTgpIj4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNC0yMyIgZGF0YS1uYW1lPSJQYXRoIDkxNCIgZD0iTTIsMEgzMGEyLjE3NSwyLjE3NSwwLDAsMSwxLjUuNjczQTIuNDA4LDIuNDA4LDAsMCwxLDMxLjc2NSwyVjMwQTEuNjQsMS42NCwwLDAsMSwzMCwzMS43ODlsLTI4LjAzMS4xNDlhMi4yLDIuMiwwLDAsMS0xLjM5MS0uNTc4QTEuNjU2LDEuNjU2LDAsMCwxLDAsMzBWMkEyLDIsMCwwLDEsMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTcgMjU1KSIgZmlsbD0iIzRhNGE0YSIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8ZyBpZD0iTWFza19Hcm91cF8zLTgiIGRhdGEtbmFtZT0iTWFzayBHcm91cCAzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNjkxIC02NTApIiBjbGlwLXBhdGg9InVybCgjY2xpcC1wYXRoLTQpIj4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNS04IiBkYXRhLW5hbWU9IlBhdGggOTE1IiBkPSJNMiwwSDMwYTIsMiwwLDAsMSwyLDJWMzBhMiwyLDAsMCwxLTIsMkgyYTIsMiwwLDAsMS0yLTJWMkEyLDIsMCwwLDEsMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjkxIDY1MCkiIGZpbGw9IiMyMTIxMjEiLz4NCiAgICAgICAgICA8L2c+DQogICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE2LTgiIGRhdGEtbmFtZT0iUGF0aCA5MTYiIGQ9Ik0xLjk2NCwwSDI1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSwyNy41LDEuOTY0VjI1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSwyNS41MzYsMjcuNUgxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwwLDI1LjUzNlYxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwxLjk2NCwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtNykiLz4NCiAgICAgICAgICA8cGF0aCBpZD0iUGF0aF8xNTU0MyIgZGF0YS1uYW1lPSJQYXRoIDE1NTQzIiBkPSJNMTcuMTE3LDUuMTU2bC0xLjEuODgzYTQuNCw0LjQsMCwwLDAtLjc5MS0uNjc2QTEuOTQsMS45NCwwLDAsMCwxNC4yLDUuMTQxYTEuOTc2LDEuOTc2LDAsMCwwLTEuMTg5LjMzMSwxLjAxMSwxLjAxMSwwLDAsMC0uNDU2Ljg1MywxLjAzNSwxLjAzNSwwLDAsMCwuNC44LDUuNDU0LDUuNDU0LDAsMCwwLDEuMzU3Ljc1OSw5LjY4Niw5LjY4NiwwLDAsMSwxLjQ5My43NjcsMy44MSwzLjgxLDAsMCwxLC44NzcuNzg1LDMuMDk0LDMuMDk0LDAsMCwxLC41MTEuOTA2LDMuMDEsMy4wMSwwLDAsMSwuMTY4LDEuMDA3LDIuODM3LDIuODM3LDAsMCwxLS45LDIuMTE2LDMuMDIzLDMuMDIzLDAsMCwxLTIuMTg0Ljg3NCwzLjcsMy43LDAsMCwxLTIuMjA3LS42ODRBNC4yODksNC4yODksMCwwLDEsMTAuNTk0LDExLjZsMS4zNTktLjM4M2EyLjQxNSwyLjQxNSwwLDAsMCwyLjI3MywxLjY4LDEuNzc0LDEuNzc0LDAsMCwwLDEuMjM0LS40NDQsMS40NDUsMS40NDUsMCwwLDAsLjQ5Mi0xLjEyMiwxLjUxNywxLjUxNywwLDAsMC0uMjU4LS44MTQsMi4zLDIuMywwLDAsMC0uNjQxLS42NzQsNi44NTQsNi44NTQsMCwwLDAtMS4yMTktLjYwOCw4LjYzNyw4LjYzNywwLDAsMS0xLjI4Ny0uNjI4LDMuMzE4LDMuMzE4LDAsMCwxLS43OC0uNjc5LDIuODcxLDIuODcxLDAsMCwxLS40ODItLjc4NSwyLjI3LDIuMjcsMCwwLDEtLjE1My0uODM1LDIuMzQsMi4zNCwwLDAsMSwuODU5LTEuODIzLDMuMDU0LDMuMDU0LDAsMCwxLDIuMDg2LS43NTMsNC4yMyw0LjIzLDAsMCwxLDEuNjQ4LjM1MkEzLjM4NywzLjM4NywwLDAsMSwxNy4xMTcsNS4xNTZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDYuNSkiIGZpbGw9IiNmZmYiLz4NCiAgICAgICAgPC9nPg0KICAgICAgICA8ZyBpZD0iU3F1YXJlLTYiIGRhdGEtbmFtZT0iU3F1YXJlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzIgNjc3KSI+DQogICAgICAgICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgLTU3LCAtMjAxKSIgZmlsdGVyPSJ1cmwoI1BhdGhfOTE0LTkpIj4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNC0yNCIgZGF0YS1uYW1lPSJQYXRoIDkxNCIgZD0iTTIsMEgzMGEyLjE3NSwyLjE3NSwwLDAsMSwxLjUuNjczQTIuNDA4LDIuNDA4LDAsMCwxLDMxLjc2NSwyVjMwQTEuNjQsMS42NCwwLDAsMSwzMCwzMS43ODlsLTI4LjAzMS4xNDlhMi4yLDIuMiwwLDAsMS0xLjM5MS0uNTc4QTEuNjU2LDEuNjU2LDAsMCwxLDAsMzBWMkEyLDIsMCwwLDEsMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTcgMjAxKSIgZmlsbD0iIzRhNGE0YSIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8ZyBpZD0iTWFza19Hcm91cF8zLTkiIGRhdGEtbmFtZT0iTWFzayBHcm91cCAzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNjkxIC02NTApIiBjbGlwLXBhdGg9InVybCgjY2xpcC1wYXRoLTQpIj4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNS05IiBkYXRhLW5hbWU9IlBhdGggOTE1IiBkPSJNMiwwSDMwYTIsMiwwLDAsMSwyLDJWMzBhMiwyLDAsMCwxLTIsMkgyYTIsMiwwLDAsMS0yLTJWMkEyLDIsMCwwLDEsMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjkxIDY1MCkiIGZpbGw9IiMyMTIxMjEiLz4NCiAgICAgICAgICA8L2c+DQogICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE2LTkiIGRhdGEtbmFtZT0iUGF0aCA5MTYiIGQ9Ik0xLjk2NCwwSDI1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSwyNy41LDEuOTY0VjI1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSwyNS41MzYsMjcuNUgxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwwLDI1LjUzNlYxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwxLjk2NCwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtNykiLz4NCiAgICAgICAgICA8cGF0aCBpZD0iUGF0aF8xNTU0MSIgZGF0YS1uYW1lPSJQYXRoIDE1NTQxIiBkPSJNMTMuOTg4LDMuNjY0bDMuMiw3LjM0N0wyMC4yLDQuMDYzaDEuNGwtNC40MSwxMC4yNS0zLjItNy4zNjQtMy4yLDcuMzY0TDYuMzY3LDQuMDYzaDEuNEwxMC44LDExLjA5WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiA2LjUpIiBmaWxsPSIjZmZmIi8+DQogICAgICAgIDwvZz4NCiAgICAgICAgPGcgaWQ9IlNxdWFyZS03IiBkYXRhLW5hbWU9IlNxdWFyZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTY5IDczMSkiPg0KICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIC05NCwgLTI1NSkiIGZpbHRlcj0idXJsKCNQYXRoXzkxNC0xMCkiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE0LTI1IiBkYXRhLW5hbWU9IlBhdGggOTE0IiBkPSJNMiwwSDMwYTIuMTc1LDIuMTc1LDAsMCwxLDEuNS42NzNBMi40MDgsMi40MDgsMCwwLDEsMzEuNzY1LDJWMzBBMS42NCwxLjY0LDAsMCwxLDMwLDMxLjc4OWwtMjguMDMxLjE0OWEyLjIsMi4yLDAsMCwxLTEuMzkxLS41NzhBMS42NTYsMS42NTYsMCwwLDEsMCwzMFYyQTIsMiwwLDAsMSwyLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5NCAyNTUpIiBmaWxsPSIjNGE0YTRhIi8+DQogICAgICAgICAgPC9nPg0KICAgICAgICAgIDxnIGlkPSJNYXNrX0dyb3VwXzMtMTAiIGRhdGEtbmFtZT0iTWFzayBHcm91cCAzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNjkxIC02NTApIiBjbGlwLXBhdGg9InVybCgjY2xpcC1wYXRoLTQpIj4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNS0xMCIgZGF0YS1uYW1lPSJQYXRoIDkxNSIgZD0iTTIsMEgzMGEyLDIsMCwwLDEsMiwyVjMwYTIsMiwwLDAsMS0yLDJIMmEyLDIsMCwwLDEtMi0yVjJBMiwyLDAsMCwxLDIsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY5MSA2NTApIiBmaWxsPSIjMjEyMTIxIi8+DQogICAgICAgICAgPC9nPg0KICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNi0xMCIgZGF0YS1uYW1lPSJQYXRoIDkxNiIgZD0iTTEuOTY0LDBIMjUuNTM2QTEuOTY0LDEuOTY0LDAsMCwxLDI3LjUsMS45NjRWMjUuNTM2QTEuOTY0LDEuOTY0LDAsMCwxLDI1LjUzNiwyNy41SDEuOTY0QTEuOTY0LDEuOTY0LDAsMCwxLDAsMjUuNTM2VjEuOTY0QTEuOTY0LDEuOTY0LDAsMCwxLDEuOTY0LDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIiBmaWxsPSJ1cmwoI2xpbmVhci1ncmFkaWVudC03KSIvPg0KICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzE1NTQ0IiBkYXRhLW5hbWU9IlBhdGggMTU1NDQiIGQ9Ik0xMC4yMjMsNC4wNDdoMi40MTRBNS41MzEsNS41MzEsMCwwLDEsMTYuOSw1LjU2M2E0Ljk2MSw0Ljk2MSwwLDAsMSwxLjQsMy40NjEsNC44NjgsNC44NjgsMCwwLDEtMS40NDUsMy40NjlBNS41NTQsNS41NTQsMCwwLDEsMTIuNjUyLDE0aC0yLjQzWm0xLjM1OSwxLjMyOHY3LjI4MWguMDc4YTE0LjA0NiwxNC4wNDYsMCwwLDAsMi4yODEtLjEzNywzLjc4NiwzLjc4NiwwLDAsMCwxLjQ1My0uNkEzLjMzMiwzLjMzMiwwLDAsMCwxNi40ODgsMTAuN2EzLjUsMy41LDAsMCwwLC40MDYtMS42NzYsMy41NDksMy41NDksMCwwLDAtLjY0OC0yLjA3OEEzLjIsMy4yLDAsMCwwLDE0LjcsNS43YTcuNDUzLDcuNDUzLDAsMCwwLTIuNDI2LS4zMloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgNi41KSIgZmlsbD0iI2ZmZiIvPg0KICAgICAgICA8L2c+DQogICAgICAgIDxwYXRoIGlkPSJMYWJlbC1XZWxjb21lLTE3IiBkYXRhLW5hbWU9IkxhYmVsLVdlbGNvbWUiIGQ9Ik0tMTMuMjY3LTMuMDEzSC0xNi4wNEwtMTYuNTYyLDBoLTEuMjA2bDEuMjMtNy4xMDloNC4zOTVsLS4xNzYsMUgtMTUuNUwtMTUuODY5LTRoMi43NzhabS45MzguMzUyYTMuNDc2LDMuNDc2LDAsMCwxLC40NTctMS40MTEsMi43MDksMi43MDksMCwwLDEsLjk1OS0uOTgxLDIuMzcxLDIuMzcxLDAsMCwxLDEuMy0uMzI3LDIuMDE4LDIuMDE4LDAsMCwxLDEuMTcyLjM2MSwyLjAwNywyLjAwNywwLDAsMSwuNzIuOTYyQTMuMDU0LDMuMDU0LDAsMCwxLTcuNTYzLTIuNywzLjU0MSwzLjU0MSwwLDAsMS04LjAyLTEuMjE2YTIuNywyLjcsMCwwLDEtLjk2Ny45ODlBMi40LDIuNCwwLDAsMS0xMC4yOTMuMWEyLjAwOSwyLjAwOSwwLDAsMS0xLjE2NS0uMzU5LDIuMDE0LDIuMDE0LDAsMCwxLS43Mi0uOTU3LDMuMDE1LDMuMDE1LDAsMCwxLS4xNjYtMS4zNFptMS4xMzguNjY5YTEuNCwxLjQsMCwwLDAsLjI3MS44MjMuODY3Ljg2NywwLDAsMCwuNjg2LjMyNSwxLjIxNywxLjIxNywwLDAsMCwxLS40NTlBMi40MTUsMi40MTUsMCwwLDAtOC43My0yLjZsLjAyOS0uNDc5YTEuNjkxLDEuNjkxLDAsMCwwLS4yNDktLjk4MS44NzQuODc0LDAsMCwwLS43MjMtLjM3NiwxLjI2NSwxLjI2NSwwLDAsMC0xLjE3Mi43MjgsMi43MTgsMi43MTgsMCwwLDAtLjMyNywxLjA0NUE0LjA4OCw0LjA4OCwwLDAsMC0xMS4xOTEtMS45OTJaTS0zLjU3OS00LjJhMi4xMzIsMi4xMzIsMCwwLDAtLjQ1NC0uMDQ5LDEuMzU1LDEuMzU1LDAsMCwwLTEuMjExLjYzTC01Ljg3OSwwSC03LjAzNmwuOTEzLTUuMjgzLDEuMSwwLS4xMTcuNmExLjUxMiwxLjUxMiwwLDAsMSwxLjI1LS43LDEuOSwxLjksMCwwLDEsLjQ0NC4wNzNaTTEuMjc0LTEuNjQ2bDEuNDUtMy42MzhIMy44ODdMMS41NzIsMEguNjJMLjE1Ni0zLjYxMy0xLjU1MywwSC0yLjUxbC0uNDgzLTUuMjgzSC0xLjlMLTEuNy0xLjdsMS42Ny0zLjU4NEguODQ1Wk02LjksMGExLjU2NywxLjU2NywwLDAsMS0uMDQ5LS40OTNBMS45NTksMS45NTksMCwwLDEsNS40MzkuMSwxLjYxOCwxLjYxOCwwLDAsMSw0LjMtLjM0NGExLjM2MywxLjM2MywwLDAsMS0uNDIyLTEuMUExLjYxOCwxLjYxOCwwLDAsMSw0LjYtMi43NTRhMy4xNDYsMy4xNDYsMCwwLDEsMS44MzYtLjQ3OWwuNzUyLjAxLjA2OC0uMzYxYTEuMDksMS4wOSwwLDAsMCwwLS4zNTYuNjM2LjYzNiwwLDAsMC0uNy0uNTQyLDEuMDUzLDEuMDUzLDAsMCwwLS42NTIuMTg4LjgxMy44MTMsMCwwLDAtLjM0NC41M0w0LjQtMy43NTVhMS40NDksMS40NDksMCwwLDEsLjM0Ny0uODU3LDIuMDU2LDIuMDU2LDAsMCwxLC44My0uNTc0LDIuODEsMi44MSwwLDAsMSwxLjA5NC0uMiwxLjg0OCwxLjg0OCwwLDAsMSwxLjM0OC41MiwxLjU0MSwxLjU0MSwwLDAsMSwuNCwxLjNMOC4wMTgtMS4wODlsLS4wMzkuNDM5YTEuNTYxLDEuNTYxLDAsMCwwLC4wNzMuNTYybDAsLjA4OFpNNS43MDgtLjg1YTEuMjc2LDEuMjc2LDAsMCwwLC42NzktLjE2OCwxLjc4OCwxLjc4OCwwLDAsMCwuNTMyLS40NjFsLjE4MS0xLS41NTIsMEExLjkzOSwxLjkzOSwwLDAsMCw1LjUtMi4yMzlhLjkuOSwwLDAsMC0uNDQ0LjY3Ni42LjYsMCwwLDAsLjE0NC41MTVBLjcuNywwLDAsMCw1LjcwOC0uODVaTTEyLjUxNS00LjJhMi4xMzIsMi4xMzIsMCwwLDAtLjQ1NC0uMDQ5LDEuMzU1LDEuMzU1LDAsMCwwLTEuMjExLjYzTDEwLjIxNSwwSDkuMDU4bC45MTMtNS4yODMsMS4xLDAtLjExNy42YTEuNTEyLDEuNTEyLDAsMCwxLDEuMjUtLjcsMS45LDEuOSwwLDAsMSwuNDQ0LjA3M1ptLjI1NCwxLjU1M2E0LjE4NSw0LjE4NSwwLDAsMSwuNDM5LTEuNDY1LDIuNDgsMi40OCwwLDAsMSwuODQ1LS45NjksMS45NTEsMS45NTEsMCwwLDEsMS4xMTgtLjMwNSwxLjU2MSwxLjU2MSwwLDAsMSwxLjI2LjZMMTYuOTM4LTcuNUgxOC4xTDE2LjgsMEgxNS43NjJsLjA3OC0uNTQ3QTEuODQxLDEuODQxLDAsMCwxLDE0LjM5NS4xYTEuNDUzLDEuNDUzLDAsMCwxLTEuMTc5LS41NjksMi40ODQsMi40ODQsMCwwLDEtLjQ3Ni0xLjQ4NywzLjk0OCwzLjk0OCwwLDAsMSwuMDE1LS41OTFabTEuMTIzLjQ1NGExLjYyNywxLjYyNywwLDAsMCwuMTg4Ljk2Mi43NTEuNzUxLDAsMCwwLC42NjIuMzY2QTEuMzU5LDEuMzU5LDAsMCwwLDE1LjktMS41MTRsLjQtMi4yNzFhLjkuOSwwLDAsMC0uODg5LS42MywxLjE4OSwxLjE4OSwwLDAsMC0xLjA2OS41ODZBMy4xMjMsMy4xMjMsMCwwLDAsMTMuODkyLTIuMTkyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTQ4IDcyMSkiIGZpbGw9IiMwNTBjMWEiLz4NCiAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtMTgiIGRhdGEtbmFtZT0iTGFiZWwtV2VsY29tZSIgZD0iTS0xMC42NjIsMGwxLjIzNS03LjEwOSwyLjE4MywwYTIuNjIsMi42MiwwLDAsMSwxLjczMS41QTEuNTQyLDEuNTQyLDAsMCwxLTUtNS4yMjksMS44NjEsMS44NjEsMCwwLDEtNi4yNjctMy42NzJhMS4yNDUsMS4yNDUsMCwwLDEsLjY3OS41NzEsMS43MzksMS43MzksMCwwLDEsLjIwNS45OTFBMi4wNTgsMi4wNTgsMCwwLDEtNi4xNjctLjU2NiwyLjk1MiwyLjk1MiwwLDAsMS04LjA1NCwwWk0tOC45LTMuMjA4LTkuMjg1LS45ODZsMS4yNjUsMGExLjU2NCwxLjU2NCwwLDAsMCwuOTcyLS4zLDEuMiwxLjIsMCwwLDAsLjQ3NC0uODNBMS4wMTksMS4wMTksMCwwLDAtNi43MjYtMi45YS45MTIuOTEyLDAsMCwwLS43MjgtLjNabS4xNTYtLjkwOCwxLjEwOCwwYTEuNTcyLDEuNTcyLDAsMCwwLC45NzItLjI4MywxLjExNywxLjExNywwLDAsMCwuNDQ0LS43NjdxLjEyMi0uOTEzLS45MjMtLjk0N2wtMS4yNTUsMFpNLTEuNDY3LDBhMS41NjcsMS41NjcsMCwwLDEtLjA0OS0uNDkzQTEuOTU5LDEuOTU5LDAsMCwxLTIuOTI3LjFhMS42MTgsMS42MTgsMCwwLDEtMS4xNC0uNDQyLDEuMzYzLDEuMzYzLDAsMCwxLS40MjItMS4xLDEuNjE4LDEuNjE4LDAsMCwxLC43MjMtMS4zMTMsMy4xNDYsMy4xNDYsMCwwLDEsMS44MzYtLjQ3OWwuNzUyLjAxLjA2OC0uMzYxYTEuMDksMS4wOSwwLDAsMCwwLS4zNTYuNjM2LjYzNiwwLDAsMC0uNy0uNTQyLDEuMDUzLDEuMDUzLDAsMCwwLS42NTIuMTg4LjgxMy44MTMsMCwwLDAtLjM0NC41M2wtMS4xNTcuMDFhMS40NDksMS40NDksMCwwLDEsLjM0Ny0uODU3LDIuMDU2LDIuMDU2LDAsMCwxLC44My0uNTc0LDIuODEsMi44MSwwLDAsMSwxLjA5NC0uMiwxLjg0OCwxLjg0OCwwLDAsMSwxLjM0OC41MiwxLjU0MSwxLjU0MSwwLDAsMSwuNCwxLjNMLS4zNDktMS4wODlsLS4wMzkuNDM5YTEuNTYxLDEuNTYxLDAsMCwwLC4wNzMuNTYyTC0uMzIsMFpNLTIuNjU5LS44NWExLjI3NiwxLjI3NiwwLDAsMCwuNjc5LS4xNjgsMS43ODgsMS43ODgsMCwwLDAsLjUzMi0uNDYxbC4xODEtMS0uNTUyLDBhMS45MzksMS45MzksMCwwLDAtMS4wNDUuMjQ3LjkuOSwwLDAsMC0uNDQ0LjY3Ni42LjYsMCwwLDAsLjE0NC41MTVBLjcuNywwLDAsMC0yLjY1OS0uODVaTTMtLjg0NWExLjExMSwxLjExMSwwLDAsMCwuNzM1LS4yNDIsMS4xMDksMS4xMDksMCwwLDAsLjQwOC0uNjU3bDEuMDk0LDBBMS44NywxLjg3LDAsMCwxLDQuODU0LS44YTIuMiwyLjIsMCwwLDEtLjgzMy42NjlBMi4zMSwyLjMxLDAsMCwxLDIuOTYxLjEsMS45OSwxLjk5LDAsMCwxLDEuOC0uMjU0YTEuOTQ0LDEuOTQ0LDAsMCwxLS43LS45NDVBMy4wMjMsMy4wMjMsMCwwLDEsLjk1OS0yLjU0NGwuMDE1LS4xNzFBMy40NTcsMy40NTcsMCwwLDEsMS40MjEtNC4xYTIuNjA4LDIuNjA4LDAsMCwxLC45NC0uOTU5QTIuMzU0LDIuMzU0LDAsMCwxLDMuNjQtNS4zODFhMS44NDgsMS44NDgsMCwwLDEsMS4zNzIuNTY5LDIuMDA5LDIuMDA5LDAsMCwxLC41MTMsMS40MjhINC40NDFhMS4xODEsMS4xODEsMCwwLDAtLjIyMi0uNzQyLjgxMy44MTMsMCwwLDAtLjY0Mi0uMzA4LDEuMTcyLDEuMTcyLDAsMCwwLTEuMDY5LjU3NiwzLjIxNiwzLjIxNiwwLDAsMC0uNDIsMS42OFEyLjA1My0uODY0LDMtLjg0NVpNNy45MjItMi4yNTZsLS42NTQuNTgxTDYuOTgsMEg1LjgyM2wxLjMtNy41SDguMjc5TDcuNTM3LTMuMjQybC40MDUtLjQyLDEuNjgtMS42MjFIMTEuMUw4Ljc1Ny0zLjAyNywxMC4zLDBIOS4wNDVaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNDggNzc3KSIgZmlsbD0iIzA1MGMxYSIvPg0KICAgICAgICA8cGF0aCBpZD0iTGFiZWwtV2VsY29tZS0xOSIgZGF0YS1uYW1lPSJMYWJlbC1XZWxjb21lIiBkPSJNLTcuMDktLjk4NmgzLjEzNUwtNC4xMzEsMEgtOC40NjdsMS4yMzUtNy4xMDloMS4yMDZaTS0uODg5LjFBMi4yMTMsMi4yMTMsMCwwLDEtMi4wODMtLjI0OWExLjk3MiwxLjk3MiwwLDAsMS0uNzQ3LS45MDgsMi43LDIuNywwLDAsMS0uMTgzLTEuMjg0bC4wMTUtLjJhMy41MzYsMy41MzYsMCwwLDEsLjQ3MS0xLjQ0OCwyLjY4OSwyLjY4OSwwLDAsMSwuOTU1LS45NzQsMi4zMjEsMi4zMjEsMCwwLDEsMS4yNC0uMzE3LDEuNzMxLDEuNzMxLDAsMCwxLDEuNDg3LjczOCwyLjcxMSwyLjcxMSwwLDAsMSwuMzc0LDEuODczbC0uMDY4LjUwOUgtMS44NjVhMS40MzUsMS40MzUsMCwwLDAsLjI1NCwxLjAxMiwxLjAwNiwxLjAwNiwwLDAsMCwuODIuMzk0QTEuNzgsMS43OCwwLDAsMCwuNTg2LTEuNWwuNTg2LjYxNUEyLjIyNywyLjIyNywwLDAsMSwuMy0uMTU0LDIuNiwyLjYsMCwwLDEtLjg4OS4xWk0tLjQtNC40MzRxLS45MTgtLjAyOS0xLjM3NywxLjNsMi4xOTIsMCwuMDItLjFhMS41MzIsMS41MzIsMCwwLDAsMC0uNDM5LjkuOSwwLDAsMC0uMjczLS41NDdBLjg2Ni44NjYsMCwwLDAtLjQtNC40MzRaTTIuMzc4LDBsLjc2Ny00LjRIMi4zNThsLjE1Ni0uODc5SDMuM2wuMDc4LS41NjZhMi4xMTEsMi4xMTEsMCwwLDEsLjY2Mi0xLjMsMS45NTQsMS45NTQsMCwwLDEsMS4zNzktLjQ2OSwzLjc0NiwzLjc0NiwwLDAsMSwuNjg4LjFsLS4xMjcuOTI4YTEuOTU1LDEuOTU1LDAsMCwwLS40MzUtLjA0OS45NzguOTc4LDAsMCwwLS42NzkuMjI1LDEuMDYsMS4wNiwwLDAsMC0uMzM3LjYzNWwtLjA3My41SDUuNUw1LjM0Mi00LjRINC4zTDMuNTM1LDBaTTguMDUyLTYuNTY3LDcuODI3LTUuMjgzaC45TDguNTc5LTQuNEg3LjY3MWwtLjUsMi45NTlhMS4wMTIsMS4wMTIsMCwwLDAsMCwuMjJxLjAyOS4zMTcuMzkxLjMzMmEyLjIwNiwyLjIwNiwwLDAsMCwuNDEtLjA0NEw3Ljg5MS0uMDFhMi42NTMsMi42NTMsMCwwLDEtLjcyOC4xQTEuMDgsMS4wOCwwLDAsMSw2LjI1Ny0uMzJhMS40OTMsMS40OTMsMCwwLDEtLjIzNy0xLjA2N0w2LjUxNC00LjRINS42NjlsLjE1Ni0uODc5aC44NEw2Ljg5LTYuNTY3WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTExIDc3NykiIGZpbGw9IiMwNTBjMWEiLz4NCiAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtMjAiIGRhdGEtbmFtZT0iTGFiZWwtV2VsY29tZSIgZD0iTS04LjIxLTIuNzM0SC05LjU2OEwtMTAuMDQ2LDBoLTEuMjA2bDEuMjM1LTcuMTA5LDIuMjQxLDBBMi41NTMsMi41NTMsMCwwLDEtNi02LjU0NywxLjc2OSwxLjc2OSwwLDAsMS01LjQ3MS01LDIuMTI4LDIuMTI4LDAsMCwxLTUuOTMtMy44YTIuNjcxLDIuNjcxLDAsMCwxLTEuMTM4Ljc5NGwxLjA1LDIuOTM2LDAsLjA3M0gtNy4zWm0tMS4xOTEtMSwxLjE2Ny4wMWExLjY1OCwxLjY1OCwwLDAsMCwxLjA1Mi0uMzMsMS4zLDEuMywwLDAsMCwuNS0uOSwxLjAwOCwxLjAwOCwwLDAsMC0uMi0uODQ3QTEuMSwxLjEsMCwwLDAtNy43LTYuMTA4bC0xLjI4OSwwWk0tNC4wMzEsMEgtNS4xODhsLjkxOC01LjI4M2gxLjE1N1pNLTQuMS02LjYzNmEuNjUzLjY1MywwLDAsMSwuMTc2LS40NTkuNjQ0LjY0NCwwLDAsMSwuNDc0LS4yLjYxNi42MTYsMCwwLDEsLjQ3MS4xNzMuNi42LDAsMCwxLC4xODguNDQ3LjYxNy42MTcsMCwwLDEtLjE4My40NTkuNjcxLjY3MSwwLDAsMS0uNDY2LjE5LjYyNi42MjYsMCwwLDEtLjQ2OS0uMTY4QS41ODEuNTgxLDAsMCwxLTQuMS02LjYzNlptMS42MzEsMy45ODlhNC4wODcsNC4wODcsMCwwLDEsLjQyNy0xLjQzMUEyLjU4NCwyLjU4NCwwLDAsMS0xLjItNS4wNTZhMS45ODcsMS45ODcsMCwwLDEsMS4xNjItLjMzLDEuNTU5LDEuNTU5LDAsMCwxLDEuMzEzLjY0bC4xODEtLjU0MiwxLjA1NSwwTDEuNjMzLS4xNDZBMi41MzgsMi41MzgsMCwwLDEsLjc2MiwxLjUsMi41MjYsMi41MjYsMCwwLDEtMSwyLjA4NWEyLjQ2NiwyLjQ2NiwwLDAsMS0xLjA1NS0uMjU0LDIuMTkzLDIuMTkzLDAsMCwxLS44LS42NDVsLjYxNS0uN2ExLjQ4MiwxLjQ4MiwwLDAsMCwxLjIxMS42NTlBMS40MTksMS40MTksMCwwLDAtLjA1OS44MzcsMS42MTYsMS42MTYsMCwwLDAsLjQ4Ni0uMUwuNTY5LS40NzRBMS44NjksMS44NjksMCwwLDEtLjgxOC4xLDEuNDgsMS40OCwwLDAsMS0yLjAwNy0uNDY0LDIuNDg0LDIuNDg0LDAsMCwxLTIuNS0xLjk0OCw0Ljg3OSw0Ljg3OSwwLDAsMS0yLjQ3My0yLjY0NlptMS4xNDcuMWEzLjU3MSwzLjU3MSwwLDAsMC0uMDIuNTM3LDEuMzk0LDEuMzk0LDAsMCwwLC4yMzQuODIuNzg2Ljc4NiwwLDAsMCwuNjQuMzE3LDEuMzY2LDEuMzY2LDAsMCwwLDEuMTUyLS42MUwxLjEtMy44MTNhLjk0My45NDMsMCwwLDAtLjktLjYsMS4yMDUsMS4yMDUsMCwwLDAtLjk4Ni40NTQsMi41NDQsMi41NDQsMCwwLDAtLjUyMiwxLjMxM1pNNC43MTktNC43YTEuOTUzLDEuOTUzLDAsMCwxLDEuNS0uNjc0LDEuMjg5LDEuMjg5LDAsMCwxLDEuMTE2LjUzMkEyLjExMywyLjExMywwLDAsMSw3LjYtMy40TDcuMDM5LDBINS44ODFsLjU3Ni0zLjQxM2ExLjk5NCwxLjk5NCwwLDAsMCwuMDEtLjM5MS42MzMuNjMzLDAsMCwwLS43LS42MSwxLjQyNywxLjQyNywwLDAsMC0xLjE1Mi42MzVMMy45NTMsMEgyLjhsMS4zLTcuNUg1LjI1NlptNi4xMTgtMS44NjUtLjIyNSwxLjI4NGguOWwtLjE1MS44NzloLS45MDhsLS41LDIuOTU5YTEuMDEyLDEuMDEyLDAsMCwwLDAsLjIycS4wMjkuMzE3LjM5MS4zMzJhMi4yMDYsMi4yMDYsMCwwLDAsLjQxLS4wNDRsLS4wNzguOTI4YTIuNjUzLDIuNjUzLDAsMCwxLS43MjguMUExLjA4LDEuMDgsMCwwLDEsOS4wNDMtLjMyYTEuNDkzLDEuNDkzLDAsMCwxLS4yMzctMS4wNjdMOS4zLTQuNEg4LjQ1NWwuMTU2LS44NzloLjg0bC4yMjUtMS4yODRaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxODUgNzc3KSIgZmlsbD0iIzA1MGMxYSIvPg0KICAgICAgPC9nPg0KICAgICAgPGcgaWQ9Ikdyb3VwXzM1MzAiIGRhdGEtbmFtZT0iR3JvdXAgMzUzMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTkzKSI+DQogICAgICAgIDxnIGlkPSJHcm91cF8zNTI4IiBkYXRhLW5hbWU9Ikdyb3VwIDM1MjgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgpIj4NCiAgICAgICAgICA8ZyBpZD0iU3F1YXJlLTgiIGRhdGEtbmFtZT0iU3F1YXJlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMjkgNzMxKSI+DQogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAtMTY0LCAtMjU1KSIgZmlsdGVyPSJ1cmwoI1BhdGhfOTE0LTExKSI+DQogICAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNC0yNiIgZGF0YS1uYW1lPSJQYXRoIDkxNCIgZD0iTTIsMEgzMGEyLjE3NSwyLjE3NSwwLDAsMSwxLjUuNjczQTIuNDA4LDIuNDA4LDAsMCwxLDMxLjc2NSwyVjMwQTEuNjQsMS42NCwwLDAsMSwzMCwzMS43ODlsLTI4LjAzMS4xNDlhMi4yLDIuMiwwLDAsMS0xLjM5MS0uNTc4QTEuNjU2LDEuNjU2LDAsMCwxLDAsMzBWMkEyLDIsMCwwLDEsMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTY0IDI1NSkiIGZpbGw9IiM0YTRhNGEiLz4NCiAgICAgICAgICAgIDwvZz4NCiAgICAgICAgICAgIDxnIGlkPSJNYXNrX0dyb3VwXzMtMTEiIGRhdGEtbmFtZT0iTWFzayBHcm91cCAzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNjkxIC02NTApIiBjbGlwLXBhdGg9InVybCgjY2xpcC1wYXRoLTQpIj4NCiAgICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE1LTExIiBkYXRhLW5hbWU9IlBhdGggOTE1IiBkPSJNMiwwSDMwYTIsMiwwLDAsMSwyLDJWMzBhMiwyLDAsMCwxLTIsMkgyYTIsMiwwLDAsMS0yLTJWMkEyLDIsMCwwLDEsMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjkxIDY1MCkiIGZpbGw9IiMyMTIxMjEiLz4NCiAgICAgICAgICAgIDwvZz4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNi0xMSIgZGF0YS1uYW1lPSJQYXRoIDkxNiIgZD0iTTEuOTY0LDBIMjUuNTM2QTEuOTY0LDEuOTY0LDAsMCwxLDI3LjUsMS45NjRWMjUuNTM2QTEuOTY0LDEuOTY0LDAsMCwxLDI1LjUzNiwyNy41SDEuOTY0QTEuOTY0LDEuOTY0LDAsMCwxLDAsMjUuNTM2VjEuOTY0QTEuOTY0LDEuOTY0LDAsMCwxLDEuOTY0LDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIiBmaWxsPSJ1cmwoI2xpbmVhci1ncmFkaWVudC03KSIvPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfMTU1NDYiIGRhdGEtbmFtZT0iUGF0aCAxNTU0NiIgZD0iTTE3LjcwOCwxMi45MTRsMS41NjEsMS43SDE3LjVsLS44NzItLjkzNGE2LjM3Myw2LjM3MywwLDAsMS0yLjY5MS42Niw1LjM0OSw1LjM0OSwwLDAsMS0zLjg5MS0xLjU2OSw1LjEyOSw1LjEyOSwwLDAsMS0xLjYtMy44LDQuOTE2LDQuOTE2LDAsMCwxLDEuNjE3LTMuNjkzLDUuNDU0LDUuNDU0LDAsMCwxLDMuOS0xLjUzOCw1LjQyMSw1LjQyMSwwLDAsMSwzLjg1OSwxLjUzLDQuODU3LDQuODU3LDAsMCwxLDEuNjE3LDMuNjUzQTUuMjEsNS4yMSwwLDAsMSwxNy43MDgsMTIuOTE0Wk0xNS42LDEyLjU4MWwtMi4xODQtMi4zMzloMS43NzRsMS41MzIsMS42NDFhMy44NCwzLjg0LDAsMCwwLDEuMjY0LTIuODY3LDMuNjY5LDMuNjY5LDAsMCwwLTEuMTgtMi43Nyw0LjA4OCw0LjA4OCwwLDAsMC0yLjkzLTEuMTIxLDMuOTA2LDMuOTA2LDAsMCwwLTIuODMyLDEuMTM5QTMuNzE3LDMuNzE3LDAsMCwwLDkuODc5LDkuMDI3YTMuNjUyLDMuNjUyLDAsMCwwLDEuMTk1LDIuNzU1LDQuMDc3LDQuMDc3LDAsMCwwLDIuOTEyLDEuMTMyQTQuNzA1LDQuNzA1LDAsMCwwLDE1LjYsMTIuNTgxWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiA2LjUpIiBmaWxsPSIjZmZmIi8+DQogICAgICAgICAgPC9nPg0KICAgICAgICAgIDxnIGlkPSJTcXVhcmUtOSIgZGF0YS1uYW1lPSJTcXVhcmUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMyOSA2NzcpIj4NCiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIC0xNjQsIC0yMDEpIiBmaWx0ZXI9InVybCgjUGF0aF85MTQtMTIpIj4NCiAgICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE0LTI3IiBkYXRhLW5hbWU9IlBhdGggOTE0IiBkPSJNMiwwSDMwYTIuMTc1LDIuMTc1LDAsMCwxLDEuNS42NzNBMi40MDgsMi40MDgsMCwwLDEsMzEuNzY1LDJWMzBBMS42NCwxLjY0LDAsMCwxLDMwLDMxLjc4OWwtMjguMDMxLjE0OWEyLjIsMi4yLDAsMCwxLTEuMzkxLS41NzhBMS42NTYsMS42NTYsMCwwLDEsMCwzMFYyQTIsMiwwLDAsMSwyLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjQgMjAxKSIgZmlsbD0iIzRhNGE0YSIvPg0KICAgICAgICAgICAgPC9nPg0KICAgICAgICAgICAgPGcgaWQ9Ik1hc2tfR3JvdXBfMy0xMiIgZGF0YS1uYW1lPSJNYXNrIEdyb3VwIDMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC02OTEgLTY1MCkiIGNsaXAtcGF0aD0idXJsKCNjbGlwLXBhdGgtNCkiPg0KICAgICAgICAgICAgICA8cGF0aCBpZD0iUGF0aF85MTUtMTIiIGRhdGEtbmFtZT0iUGF0aCA5MTUiIGQ9Ik0yLDBIMzBhMiwyLDAsMCwxLDIsMlYzMGEyLDIsMCwwLDEtMiwySDJhMiwyLDAsMCwxLTItMlYyQTIsMiwwLDAsMSwyLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2OTEgNjUwKSIgZmlsbD0iIzIxMjEyMSIvPg0KICAgICAgICAgICAgPC9nPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE2LTEyIiBkYXRhLW5hbWU9IlBhdGggOTE2IiBkPSJNMS45NjQsMEgyNS41MzZBMS45NjQsMS45NjQsMCwwLDEsMjcuNSwxLjk2NFYyNS41MzZBMS45NjQsMS45NjQsMCwwLDEsMjUuNTM2LDI3LjVIMS45NjRBMS45NjQsMS45NjQsMCwwLDEsMCwyNS41MzZWMS45NjRBMS45NjQsMS45NjQsMCwwLDEsMS45NjQsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiIGZpbGw9InVybCgjbGluZWFyLWdyYWRpZW50LTcpIi8+DQogICAgICAgICAgICA8cGF0aCBpZD0iUGF0aF8xNTU0NSIgZGF0YS1uYW1lPSJQYXRoIDE1NTQ1IiBkPSJNMTEuNDI2LDQuMDQ3aDUuNTE2VjUuNDA2SDEyLjc3VjcuODkxaDQuMTcyVjkuMjM0SDEyLjc3djMuNDIyaDQuMTcyVjE0SDExLjQyNloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgNi41KSIgZmlsbD0iI2ZmZiIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8cGF0aCBpZD0iTGFiZWwtV2VsY29tZS0yMSIgZGF0YS1uYW1lPSJMYWJlbC1XZWxjb21lIiBkPSJNLjU0LTcuMTA5LS4yNjYtMi4zNThBMi43OSwyLjc5LDAsMCwxLTEuMjQtLjU0NywyLjg3MywyLjg3MywwLDAsMS0zLjIuMTA3LDIuMzIxLDIuMzIxLDAsMCwxLTQuODc4LS41MzdhMi4wNTQsMi4wNTQsMCwwLDEtLjU2NC0xLjYzMWwuMDE1LS4xODYuODA2LTQuNzU2aDEuMmwtLjgwNiw0Ljc2MWExLjQwOCwxLjQwOCwwLDAsMCwuMiwxLjA2LDEuMDksMS4wOSwwLDAsMCwuODg5LjQsMS41NTYsMS41NTYsMCwwLDAsMS4xLS4zNTYsMS43NTksMS43NTksMCwwLDAsLjU2Mi0xLjA3OWwuODE1LTQuNzg1Wk01LjQ1Ny0yLjYyMmE0LjM1LDQuMzUsMCwwLDEtLjQyMiwxLjQzNiwyLjQ1LDIuNDUsMCwwLDEtLjgyNS45NzRBMS45MDgsMS45MDgsMCwwLDEsMy4wODguMWExLjY1NywxLjY1NywwLDAsMS0xLjMtLjU4NkwxLjMxNiwyLjAzMUguMTU0bDEuMjctNy4zMTQsMS4wNiwwTDIuNC00Ljc0MWExLjgyOSwxLjgyOSwwLDAsMSwxLjQ0LS42NCwxLjU0OCwxLjU0OCwwLDAsMSwuODc0LjI1NiwxLjU4MiwxLjU4MiwwLDAsMSwuNTY5LjczQTIuOTU5LDIuOTU5LDAsMCwxLDUuNDkxLTMuMzMsNi40OTEsNi40OTEsMCwwLDEsNS40NTctMi42MjJabS0xLjE0My0uMS4wMjQtLjM1NmExLjczLDEuNzMsMCwwLDAtLjIwOC0uOTc3Ljc2MS43NjEsMCwwLDAtLjY2Ny0uMzU2LDEuMzQ3LDEuMzQ3LDAsMCwwLTEuMTMzLjZsLS40MSwyLjM1OGEuOS45LDAsMCwwLC44OTQuNjEsMS4xOCwxLjE4LDAsMCwwLC45NjktLjQ0OUEyLjgxMywyLjgxMywwLDAsMCw0LjMxNC0yLjcyNVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM0NSA3MjEpIiBmaWxsPSIjMDUwYzFhIi8+DQogICAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtMjIiIGRhdGEtbmFtZT0iTGFiZWwtV2VsY29tZSIgZD0iTS0xMi4xMzksMGwxLjIzLTcuMTA5LDEuOTI0LDBhMi42MzMsMi42MzMsMCwwLDEsMS41MzEuNDQyLDIuNDg0LDIuNDg0LDAsMCwxLC45MywxLjIyMSwzLjYzOSwzLjYzOSwwLDAsMSwuMTc2LDEuNzE2TC02LjQtMy4zNEE0LjI2Myw0LjI2MywwLDAsMS03LjA0OC0xLjYsMy40ODEsMy40ODEsMCwwLDEtOC4zNC0uNDIsMy42NDksMy42NDksMCwwLDEtMTAuMDc4LDBabTIuMjY2LTYuMTEzLS44ODksNS4xMjcuNzEzLDBhMi4yMjEsMi4yMjEsMCwwLDAsMS42LS42MTMsMi45NDMsMi45NDMsMCwwLDAsLjgxOC0xLjY5MkE1LjcsNS43LDAsMCwwLTcuNTM0LTQuNThhMS43NDIsMS43NDIsMCwwLDAtLjQxMy0xLjEwOCwxLjM4MSwxLjM4MSwwLDAsMC0xLjAyMy0uNDJabTQuMjg3LDMuNDUyYTMuNDc2LDMuNDc2LDAsMCwxLC40NTctMS40MTEsMi43MDksMi43MDksMCwwLDEsLjk1OS0uOTgxLDIuMzcxLDIuMzcxLDAsMCwxLDEuMy0uMzI3QTIuMDE4LDIuMDE4LDAsMCwxLTEuNy01LjAyYTIuMDA3LDIuMDA3LDAsMCwxLC43Mi45NjJBMy4wNTQsMy4wNTQsMCwwLDEtLjgyLTIuN2EzLjU0MSwzLjU0MSwwLDAsMS0uNDU3LDEuNDg0LDIuNywyLjcsMCwwLDEtLjk2Ny45ODlBMi40LDIuNCwwLDAsMS0zLjU1LjEsMi4wMDksMi4wMDksMCwwLDEtNC43MTQtLjI2MWEyLjAxNCwyLjAxNCwwLDAsMS0uNzItLjk1N0EzLjAxNSwzLjAxNSwwLDAsMS01LjYtMi41NTlabTEuMTM4LjY2OWExLjQsMS40LDAsMCwwLC4yNzEuODIzLjg2Ny44NjcsMCwwLDAsLjY4Ni4zMjUsMS4yMTcsMS4yMTcsMCwwLDAsMS0uNDU5QTIuNDE1LDIuNDE1LDAsMCwwLTEuOTg3LTIuNmwuMDI5LS40NzlhMS42OTEsMS42OTEsMCwwLDAtLjI0OS0uOTgxLjg3NC44NzQsMCwwLDAtLjcyMy0uMzc2QTEuMjY1LDEuMjY1LDAsMCwwLTQuMS0zLjcwNmEyLjcxOCwyLjcxOCwwLDAsMC0uMzI3LDEuMDQ1QTQuMDg4LDQuMDg4LDAsMCwwLTQuNDQ4LTEuOTkyWm04LjkyNi4zNDcsMS40NS0zLjYzOEg3LjA5TDQuNzc1LDBIMy44MjNMMy4zNTktMy42MTMsMS42NSwwSC42OTNMLjIxLTUuMjgzSDEuM0wxLjUtMS43bDEuNjctMy41ODRoLjg3NFpNOC45NS01LjI4OGwtLjExNy42MkEyLjAxNiwyLjAxNiwwLDAsMSwxMC40LTUuMzgxYTEuMjc3LDEuMjc3LDAsMCwxLDEuMS41MywyLjExNSwyLjExNSwwLDAsMSwuMjY0LDEuNDM4TDExLjE5MSwwSDEwLjAzNGwuNTc2LTMuNDI4YTEuNzU0LDEuNzU0LDAsMCwwLDAtLjM5MS42MjMuNjIzLDAsMCwwLS42OTMtLjYsMS40MDcsMS40MDcsMCwwLDAtMS4xNTcuNjQ5TDguMTA1LDBINi45NDhsLjkxMy01LjI4M1oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM0NSA3NzcpIiBmaWxsPSIjMDUwYzFhIi8+DQogICAgICAgIDwvZz4NCiAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtMjMiIGRhdGEtbmFtZT0iTGFiZWwtV2VsY29tZSIgZD0iTS02LjktMi41NDRoLTIuNWwuMTcxLS45NTdoMi41Wk0tMy41LjFBMi40MSwyLjQxLDAsMCwxLTQuNzE5LS4yMzRhMi4xMzIsMi4xMzIsMCwwLDEtLjgxOC0uOTIsMy41MTIsMy41MTIsMCwwLDEtLjMzMi0xLjM3LDYuMyw2LjMsMCwwLDEsLjExLTEuNDI2LDQuOCw0LjgsMCwwLDEsLjUxMy0xLjQ4NywzLjczNywzLjczNywwLDAsMSwuODgxLTEuMSwyLjksMi45LDAsMCwxLDEuOTUzLS42NzRBMi4xOTQsMi4xOTQsMCwwLDEtLjczLTYuNDc5LDMuMDEzLDMuMDEzLDAsMCwxLS4wNDQtNC41NjVhNi4zLDYuMywwLDAsMS0uMTEsMS4zODksNS4wMzUsNS4wMzUsMCwwLDEtLjQ3OSwxLjQ0LDMuNjc2LDMuNjc2LDAsMCwxLS44NDIsMS4xQTIuODgxLDIuODgxLDAsMCwxLTMuNS4xWm0yLjIyMi0zLjg0My4wNDQtLjUxOGEzLjEsMy4xLDAsMCwwLS4wOTMtLjk4NCwxLjI5MSwxLjI5MSwwLDAsMC0uNDEzLS42ODgsMS4xOSwxLjE5LDAsMCwwLS43MzUtLjI1MSwxLjY1MSwxLjY1MSwwLDAsMC0xLjA5MS4zNDcsMi41NDEsMi41NDEsMCwwLDAtLjc3MSwxLjExMyw1LjgzMyw1LjgzMywwLDAsMC0uMzQ0LDEuODc1LDIuMzc4LDIuMzc4LDAsMCwwLC4yNzMsMS40MDYsMS4xMSwxLjExLDAsMCwwLC45NjcuNTMyLDEuNjY5LDEuNjY5LDAsMCwwLDEuMzk0LS42MzVBMy42NiwzLjY2LDAsMCwwLTEuMzI4LTMuNFpNMy41NTUtMi43MzRIMi4yTDEuNzE5LDBILjUxM0wxLjc0OC03LjEwOWwyLjI0MSwwYTIuNTUzLDIuNTUzLDAsMCwxLDEuNzcyLjU1N0ExLjc2OSwxLjc2OSwwLDAsMSw2LjI5NC01LDIuMTI4LDIuMTI4LDAsMCwxLDUuODM1LTMuOCwyLjY3MSwyLjY3MSwwLDAsMSw0LjctMy4wMDlMNS43NDctLjA3M2wwLC4wNzNINC40NjNabS0xLjE5MS0xLDEuMTY3LjAxYTEuNjU4LDEuNjU4LDAsMCwwLDEuMDUyLS4zMywxLjMsMS4zLDAsMCwwLC41LS45LDEuMDA4LDEuMDA4LDAsMCwwLS4yLS44NDcsMS4xLDEuMSwwLDAsMC0uODE1LS4zMTVsLTEuMjg5LDBaTTkuMTg1LTIuNTQ0aC0yLjVMNi44Ni0zLjVoMi41WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzg3IDcyMSkiIGZpbGw9IiMwNTBjMWEiLz4NCiAgICAgICAgPGcgaWQ9Ikdyb3VwXzM1MjciIGRhdGEtbmFtZT0iR3JvdXAgMzUyNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODYpIj4NCiAgICAgICAgICA8ZyBpZD0iX01vdXNlLTQiIGRhdGEtbmFtZT0i8J+MlSAgTW91c2UiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMxNyA2OTApIj4NCiAgICAgICAgICAgIDxnIGlkPSJEcmFnLTMiIGRhdGEtbmFtZT0iRHJhZyI+DQogICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGVfMTkwNi0zIiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAxOTA2IiBkPSJNNy4yLDBIMjguOEE3LjIsNy4yLDAsMCwxLDM2LDcuMlYzNkExOCwxOCwwLDAsMSwxOCw1NGgwQTE4LDE4LDAsMCwxLDAsMzZWNy4yQTcuMiw3LjIsMCwwLDEsNy4yLDBaIiBvcGFjaXR5PSIwLjA3Ii8+DQogICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGVfMTkwNy0zIiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAxOTA3IiBkPSJNNy4yLDBIMjguOEE3LjIsNy4yLDAsMCwxLDM2LDcuMlYzNkExOCwxOCwwLDAsMSwxOCw1NGgwQTE4LDE4LDAsMCwxLDAsMzZWNy4yQTcuMiw3LjIsMCwwLDEsNy4yLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMCkiIG9wYWNpdHk9IjAuMDciLz4NCiAgICAgICAgICAgICAgPHBhdGggaWQ9IlJlY3RhbmdsZV8xOTA0LTMiIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDE5MDQiIGQ9Ik03LjIsMEgyOC44QTcuMiw3LjIsMCwwLDEsMzYsNy4yVjM2QTE4LDE4LDAsMCwxLDE4LDU0aDBBMTgsMTgsMCwwLDEsMCwzNlY3LjJBNy4yLDcuMiwwLDAsMSw3LjIsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwKSIgb3BhY2l0eT0iMC4wNyIvPg0KICAgICAgICAgICAgICA8cGF0aCBpZD0iUmVjdGFuZ2xlXzE5MDUtMyIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMTkwNSIgZD0iTTcuMiwwSDI4LjhBNy4yLDcuMiwwLDAsMSwzNiw3LjJWMzZBMTgsMTgsMCwwLDEsMTgsNTRoMEExOCwxOCwwLDAsMSwwLDM2VjcuMkE3LjIsNy4yLDAsMCwxLDcuMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTApIiBvcGFjaXR5PSIwLjA3Ii8+DQogICAgICAgICAgICA8L2c+DQogICAgICAgICAgICA8ZyBpZD0iQmFzZS00IiBkYXRhLW5hbWU9IkJhc2UiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05MDQgLTY0MykiPg0KICAgICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCA2NzQsIDQyOSkiIGZpbHRlcj0idXJsKCNSZWN0YW5nbGVfMTg5OS00KSI+DQogICAgICAgICAgICAgICAgPHBhdGggaWQ9IlJlY3RhbmdsZV8xODk5LTEwIiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAxODk5IiBkPSJNNy4yLDBIMjguOEE3LjIsNy4yLDAsMCwxLDM2LDcuMlYzNkExOCwxOCwwLDAsMSwxOCw1NGgwQTE4LDE4LDAsMCwxLDAsMzZWNy4yQTcuMiw3LjIsMCwwLDEsNy4yLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDUgMjE0KSIgZmlsbD0iIzIxMjEyMSIvPg0KICAgICAgICAgICAgICA8L2c+DQogICAgICAgICAgICAgIDxwYXRoIGlkPSJTdWJ0cmFjdGlvbl8xMi00IiBkYXRhLW5hbWU9IlN1YnRyYWN0aW9uIDEyIiBkPSJNLTQxMDIsMjcwNGExNy44ODEsMTcuODgxLDAsMCwxLTEyLjcyOC01LjI3MkExNy44ODIsMTcuODgyLDAsMCwxLTQxMjAsMjY4NnYtMjguOGE3LjIwOCw3LjIwOCwwLDAsMSw3LjItNy4yaDIxLjZhNy4yMDgsNy4yMDgsMCwwLDEsNy4yLDcuMlYyNjg2YTE3Ljg4MSwxNy44ODEsMCwwLDEtNS4yNzIsMTIuNzI4QTE3Ljg4NCwxNy44ODQsMCwwLDEtNDEwMiwyNzA0Wm0tMTAuNC01MmE1LjYwNiw1LjYwNiwwLDAsMC01LjYsNS42VjI2ODJhMTYuMDE4LDE2LjAxOCwwLDAsMCwxNiwxNiwxNi4wMTgsMTYuMDE4LDAsMCwwLDE2LTE2di0yNC40YTUuNjA2LDUuNjA2LDAsMCwwLTUuNi01LjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MDM5IC0yMDA3KSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQpIi8+DQogICAgICAgICAgICA8L2c+DQogICAgICAgICAgICA8cGF0aCBpZD0iVG9wLTQiIGRhdGEtbmFtZT0iVG9wIiBkPSJNNS42LDBIMjYuNEE1LjYsNS42LDAsMCwxLDMyLDUuNlYzMEExNiwxNiwwLDAsMSwxNiw0NmgwQTE2LDE2LDAsMCwxLDAsMzBWNS42QTUuNiw1LjYsMCwwLDEsNS42LDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNyAyKSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtMikiLz4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJUcmlnZ2VyLVJpZ2h0LTUiIGRhdGEtbmFtZT0iVHJpZ2dlci1SaWdodCIgZD0iTTAsMEg5LjVhNSw1LDAsMCwxLDUsNVYxN2EwLDAsMCwwLDEsMCwwSDBhMCwwLDAsMCwxLDAsMFYwQTAsMCwwLDAsMSwwLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMy41IDMpIiBmaWxsPSIjZmZmIiBvcGFjaXR5PSIwLjE1Ii8+DQogICAgICAgICAgICA8cGF0aCBpZD0iVHJpZ2dlci1MZWZ0LTYiIGRhdGEtbmFtZT0iVHJpZ2dlci1MZWZ0IiBkPSJNNSwwaDkuNWEwLDAsMCwwLDEsMCwwVjE3YTAsMCwwLDAsMSwwLDBIMGEwLDAsMCwwLDEsMCwwVjVBNSw1LDAsMCwxLDUsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4IDMpIiBmaWxsPSIjZmZmIiBvcGFjaXR5PSIwLjE1Ii8+DQogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAtMjMwLCAtMjE0KSIgZmlsdGVyPSJ1cmwoI1Njcm9sbHdoZWVsLTIpIj4NCiAgICAgICAgICAgICAgPGcgaWQ9IlNjcm9sbHdoZWVsLTciIGRhdGEtbmFtZT0iU2Nyb2xsd2hlZWwiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI2MCAyMjUpIiBmaWxsPSIjZmZiNzAwIiBzdHJva2U9IiMzMTMxMzEiIHN0cm9rZS13aWR0aD0iMSI+DQogICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9IjYiIGhlaWdodD0iMTQiIHN0cm9rZT0ibm9uZSIvPg0KICAgICAgICAgICAgICAgIDxyZWN0IHg9Ii0wLjUiIHk9Ii0wLjUiIHdpZHRoPSI3IiBoZWlnaHQ9IjE1IiBmaWxsPSJub25lIi8+DQogICAgICAgICAgICAgIDwvZz4NCiAgICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8L2c+DQogICAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtMjQiIGRhdGEtbmFtZT0iTGFiZWwtV2VsY29tZSIgZD0iTS0yMy44MDktNy4xMDlsMS4wNCw1LjQzOSwyLjkyNS01LjQzOWgxLjU4MkwtMTkuNDkyLDBoLTEuMmwuNDE1LTIuNDA3LjYzLTIuOTY0TC0yMi41NzgsMGgtLjg2OWwtMS4wODktNS41MzJMLTI0Ljk4LTIuMjhsLS40LDIuMjhoLTEuMmwxLjIzNS03LjEwOVpNLTE2LjkxOSwwaC0xLjE1N2wuOTE4LTUuMjgzSC0xNlptLS4wNzMtNi42MzZhLjY1My42NTMsMCwwLDEsLjE3Ni0uNDU5LjY0NC42NDQsMCwwLDEsLjQ3NC0uMi42MTYuNjE2LDAsMCwxLC40NzEuMTczLjYuNiwwLDAsMSwuMTg4LjQ0Ny42MTcuNjE3LDAsMCwxLS4xODMuNDU5LjY3MS42NzEsMCwwLDEtLjQ2Ni4xOS42MjYuNjI2LDAsMCwxLS40NjktLjE2OEEuNTgxLjU4MSwwLDAsMS0xNi45OTItNi42MzZabTEuNjIxLDMuOTg5YTQuMTg1LDQuMTg1LDAsMCwxLC40MzktMS40NjUsMi40OCwyLjQ4LDAsMCwxLC44NDUtLjk2OSwxLjk1MSwxLjk1MSwwLDAsMSwxLjExOC0uMzA1LDEuNTYxLDEuNTYxLDAsMCwxLDEuMjYuNkwtMTEuMi03LjVoMS4xNjJsLTEuMyw3LjVoLTEuMDM1bC4wNzgtLjU0N0ExLjg0MSwxLjg0MSwwLDAsMS0xMy43NDUuMWExLjQ1MywxLjQ1MywwLDAsMS0xLjE3OS0uNTY5QTIuNDg0LDIuNDg0LDAsMCwxLTE1LjQtMS45NTNhMy45NDgsMy45NDgsMCwwLDEsLjAxNS0uNTkxWm0xLjEyMy40NTRhMS42MjcsMS42MjcsMCwwLDAsLjE4OC45NjIuNzUxLjc1MSwwLDAsMCwuNjYyLjM2NiwxLjM1OSwxLjM1OSwwLDAsMCwxLjE1Ny0uNjQ5bC40LTIuMjcxYS45LjksMCwwLDAtLjg4OS0uNjMsMS4xODksMS4xODksMCwwLDAtMS4wNjkuNTg2QTMuMTIzLDMuMTIzLDAsMCwwLTE0LjI0OC0yLjE5MlptNC40LS40NTRhNC4xODUsNC4xODUsMCwwLDEsLjQzOS0xLjQ2NSwyLjQ4LDIuNDgsMCwwLDEsLjg0NS0uOTY5LDEuOTUxLDEuOTUxLDAsMCwxLDEuMTE4LS4zMDUsMS41NjEsMS41NjEsMCwwLDEsMS4yNi42TC01LjY3OS03LjVoMS4xNjJMLTUuODIsMEgtNi44NTVsLjA3OC0uNTQ3QTEuODQxLDEuODQxLDAsMCwxLTguMjIzLjEsMS40NTMsMS40NTMsMCwwLDEtOS40LS40NjZhMi40ODQsMi40ODQsMCwwLDEtLjQ3Ni0xLjQ4NywzLjk0OCwzLjk0OCwwLDAsMSwuMDE1LS41OTFabTEuMTIzLjQ1NGExLjYyNywxLjYyNywwLDAsMCwuMTg4Ljk2Mi43NTEuNzUxLDAsMCwwLC42NjIuMzY2LDEuMzU5LDEuMzU5LDAsMCwwLDEuMTU3LS42NDlsLjQtMi4yNzFhLjkuOSwwLDAsMC0uODg5LS42MywxLjE4OSwxLjE4OSwwLDAsMC0xLjA2OS41ODZBMy4xMjMsMy4xMjMsMCwwLDAtOC43MjYtMi4xOTJaTS0zLjM1LDBILTQuNTA3bDEuMy03LjVoMS4xNTdaTS4zMzcuMUEyLjIxMywyLjIxMywwLDAsMS0uODU3LS4yNDksMS45NzIsMS45NzIsMCwwLDEtMS42LTEuMTU3YTIuNywyLjcsMCwwLDEtLjE4My0xLjI4NGwuMDE1LS4yQTMuNTM2LDMuNTM2LDAsMCwxLTEuMy00LjA4OWEyLjY4OSwyLjY4OSwwLDAsMSwuOTU1LS45NzQsMi4zMjEsMi4zMjEsMCwwLDEsMS4yNC0uMzE3LDEuNzMxLDEuNzMxLDAsMCwxLDEuNDg3LjczOCwyLjcxMSwyLjcxMSwwLDAsMSwuMzc0LDEuODczbC0uMDY4LjUwOUgtLjY0QTEuNDM1LDEuNDM1LDAsMCwwLS4zODYtMS4yNDlhMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAsMS44MTItMS41TDIuNC0uODg5YTIuMjI3LDIuMjI3LDAsMCwxLS44NzQuNzM1QTIuNiwyLjYsMCwwLDEsLjMzNy4xWk0uODMtNC40MzRxLS45MTgtLjAyOS0xLjM3NywxLjNsMi4xOTIsMCwuMDItLjFhMS41MzIsMS41MzIsMCwwLDAsMC0uNDM5QS45LjksMCwwLDAsMS40LTQuMjE5Ljg2Ni44NjYsMCwwLDAsLjgzLTQuNDM0Wm01LjA0OSwxLjg5aC0yLjVMMy41NTUtMy41aDIuNVptMi44NTYsMS43YTEuMTExLDEuMTExLDAsMCwwLC43MzUtLjI0MiwxLjEwOSwxLjEwOSwwLDAsMCwuNDA4LS42NTdsMS4wOTQsMGExLjg3LDEuODcsMCwwLDEtLjM3OC45NTIsMi4yLDIuMiwwLDAsMS0uODMzLjY2OUEyLjMxLDIuMzEsMCwwLDEsOC43LjEsMS45OSwxLjk5LDAsMCwxLDcuNTQ0LS4yNTRhMS45NDQsMS45NDQsMCwwLDEtLjctLjk0NUEzLjAyMywzLjAyMywwLDAsMSw2LjctMi41NDRsLjAxNS0uMTcxQTMuNDU3LDMuNDU3LDAsMCwxLDcuMTYxLTQuMWEyLjYwOCwyLjYwOCwwLDAsMSwuOTQtLjk1OUEyLjM1NCwyLjM1NCwwLDAsMSw5LjM4LTUuMzgxYTEuODQ4LDEuODQ4LDAsMCwxLDEuMzcyLjU2OSwyLjAwOSwyLjAwOSwwLDAsMSwuNTEzLDEuNDI4SDEwLjE4MWExLjE4MSwxLjE4MSwwLDAsMC0uMjIyLS43NDIuODEzLjgxMywwLDAsMC0uNjQyLS4zMDgsMS4xNzIsMS4xNzIsMCwwLDAtMS4wNjkuNTc2LDMuMjE2LDMuMjE2LDAsMCwwLS40MiwxLjY4UTcuNzkzLS44NjQsOC43MzUtLjg0NVpNMTIuNzg4LDBIMTEuNjMxbDEuMy03LjVoMS4xNTdabTIuNTI0LDBIMTQuMTU1bC45MTgtNS4yODNIMTYuMjNabS0uMDczLTYuNjM2YS42NTMuNjUzLDAsMCwxLC4xNzYtLjQ1OS42NDQuNjQ0LDAsMCwxLC40NzQtLjIuNjE2LjYxNiwwLDAsMSwuNDcxLjE3My42LjYsMCwwLDEsLjE4OC40NDcuNjE3LjYxNywwLDAsMS0uMTgzLjQ1OS42NzEuNjcxLDAsMCwxLS40NjYuMTkuNjI2LjYyNiwwLDAsMS0uNDY5LS4xNjhBLjU4MS41ODEsMCwwLDEsMTUuMjM5LTYuNjM2Wk0xOC45MTEtLjg0NWExLjExMSwxLjExMSwwLDAsMCwuNzM1LS4yNDIsMS4xMDksMS4xMDksMCwwLDAsLjQwOC0uNjU3bDEuMDk0LDBhMS44NywxLjg3LDAsMCwxLS4zNzguOTUyLDIuMiwyLjIsMCwwLDEtLjgzMy42NjlBMi4zMSwyLjMxLDAsMCwxLDE4Ljg3Ny4xLDEuOTksMS45OSwwLDAsMSwxNy43Mi0uMjU0YTEuOTQ0LDEuOTQ0LDAsMCwxLS43LS45NDUsMy4wMjMsMy4wMjMsMCwwLDEtLjE0Ni0xLjM0NWwuMDE1LS4xNzFBMy40NTcsMy40NTcsMCwwLDEsMTcuMzM2LTQuMWEyLjYwOCwyLjYwOCwwLDAsMSwuOTQtLjk1OSwyLjM1NCwyLjM1NCwwLDAsMSwxLjI3OS0uMzE3LDEuODQ4LDEuODQ4LDAsMCwxLDEuMzcyLjU2OSwyLjAwOSwyLjAwOSwwLDAsMSwuNTEzLDEuNDI4SDIwLjM1NmExLjE4MSwxLjE4MSwwLDAsMC0uMjIyLS43NDIuODEzLjgxMywwLDAsMC0uNjQyLS4zMDgsMS4xNzIsMS4xNzIsMCwwLDAtMS4wNjkuNTc2QTMuMjE2LDMuMjE2LDAsMCwwLDE4LTIuMTc4UTE3Ljk2OS0uODY0LDE4LjkxMS0uODQ1Wm00LjkyNy0xLjQxMS0uNjU0LjU4MUwyMi45LDBIMjEuNzM4bDEuMy03LjVoMS4xNTdsLS43NDIsNC4yNTguNDA1LS40MiwxLjY4LTEuNjIxaDEuNDc5TDI0LjY3My0zLjAyNywyNi4yMTYsMEgyNC45NjFaTS0xNi40MTgsMTBhMS41NjcsMS41NjcsMCwwLDEtLjA0OS0uNDkzLDEuOTU5LDEuOTU5LDAsMCwxLTEuNDExLjU5MSwxLjYxOCwxLjYxOCwwLDAsMS0xLjE0LS40NDIsMS4zNjMsMS4zNjMsMCwwLDEtLjQyMi0xLjEsMS42MTgsMS42MTgsMCwwLDEsLjcyMy0xLjMxMywzLjE0NiwzLjE0NiwwLDAsMSwxLjgzNi0uNDc5bC43NTIuMDEuMDY4LS4zNjFhMS4wOSwxLjA5LDAsMCwwLDAtLjM1Ni42MzYuNjM2LDAsMCwwLS43LS41NDIsMS4wNTMsMS4wNTMsMCwwLDAtLjY1Mi4xODguODEzLjgxMywwLDAsMC0uMzQ0LjUzbC0xLjE1Ny4wMWExLjQ0OSwxLjQ0OSwwLDAsMSwuMzQ3LS44NTcsMi4wNTYsMi4wNTYsMCwwLDEsLjgzLS41NzQsMi44MSwyLjgxLDAsMCwxLDEuMDk0LS4yLDEuODQ4LDEuODQ4LDAsMCwxLDEuMzQ4LjUyLDEuNTQxLDEuNTQxLDAsMCwxLC40LDEuM0wtMTUuMyw4LjkxMWwtLjAzOS40MzlhMS41NjEsMS41NjEsMCwwLDAsLjA3My41NjJsMCwuMDg4Wm0tMS4xOTEtLjg1YTEuMjc2LDEuMjc2LDAsMCwwLC42NzktLjE2OCwxLjc4OCwxLjc4OCwwLDAsMCwuNTMyLS40NjFsLjE4MS0xLS41NTIsMGExLjkzOSwxLjkzOSwwLDAsMC0xLjA0NS4yNDcuOS45LDAsMCwwLS40NDQuNjc2LjYuNiwwLDAsMCwuMTQ0LjUxNUEuNy43LDAsMCwwLTE3LjYxLDkuMTVabTUuMzM3LTQuNDM4LS4xMTcuNjJhMi4wMTYsMi4wMTYsMCwwLDEsMS41NjctLjcxMywxLjI3NywxLjI3NywwLDAsMSwxLjEuNTNBMi4xMTUsMi4xMTUsMCwwLDEtOS40Niw2LjU4N0wtMTAuMDMyLDEwaC0xLjE1N2wuNTc2LTMuNDI4YTEuNzU0LDEuNzU0LDAsMCwwLDAtLjM5MS42MjMuNjIzLDAsMCwwLS42OTMtLjYsMS40MDcsMS40MDcsMCwwLDAtMS4xNTcuNjQ5TC0xMy4xMTgsMTBoLTEuMTU3bC45MTMtNS4yODNabTMuNzExLDIuNjQyYTQuMTg1LDQuMTg1LDAsMCwxLC40MzktMS40NjUsMi40OCwyLjQ4LDAsMCwxLC44NDUtLjk2OUExLjk1MSwxLjk1MSwwLDAsMS02LjE2LDQuNjE0YTEuNTYxLDEuNTYxLDAsMCwxLDEuMjYuNkwtNC4zOTIsMi41SC0zLjIzbC0xLjMsNy41SC01LjU2OWwuMDc4LS41NDdhMS44NDEsMS44NDEsMCwwLDEtMS40NDUuNjQ5LDEuNDUzLDEuNDUzLDAsMCwxLTEuMTc5LS41NjksMi40ODQsMi40ODQsMCwwLDEtLjQ3Ni0xLjQ4NywzLjk0OCwzLjk0OCwwLDAsMSwuMDE1LS41OTFabTEuMTIzLjQ1NGExLjYyNywxLjYyNywwLDAsMCwuMTg4Ljk2Mi43NTEuNzUxLDAsMCwwLC42NjIuMzY2LDEuMzU5LDEuMzU5LDAsMCwwLDEuMTU3LS42NDlsLjQtMi4yNzFhLjkuOSwwLDAsMC0uODg5LS42MywxLjE4OSwxLjE4OSwwLDAsMC0xLjA2OS41ODZBMy4xMjMsMy4xMjMsMCwwLDAtNy40MzksNy44MDhaTS0uNzE1LDEwLC41MTUsMi44OTFsMS45MjQsMGEyLjYzMywyLjYzMywwLDAsMSwxLjUzMS40NDJBMi40ODQsMi40ODQsMCwwLDEsNC45LDQuNTU4YTMuNjM5LDMuNjM5LDAsMCwxLC4xNzYsMS43MTZsLS4wNTQuMzg2QTQuMjYzLDQuMjYzLDAsMCwxLDQuMzc1LDguNCwzLjQ4MSwzLjQ4MSwwLDAsMSwzLjA4Myw5LjU4LDMuNjQ5LDMuNjQ5LDAsMCwxLDEuMzQ1LDEwWk0xLjU1LDMuODg3LjY2Miw5LjAxNGwuNzEzLDBhMi4yMjEsMi4yMjEsMCwwLDAsMS42LS42MTNBMi45NDMsMi45NDMsMCwwLDAsMy44LDYuNzE0LDUuNyw1LjcsMCwwLDAsMy44ODksNS40MmExLjc0MiwxLjc0MiwwLDAsMC0uNDEzLTEuMTA4LDEuMzgxLDEuMzgxLDAsMCwwLTEuMDIzLS40MlpNOS4wMTYsNS44YTIuMTMyLDIuMTMyLDAsMCwwLS40NTQtLjA0OSwxLjM1NSwxLjM1NSwwLDAsMC0xLjIxMS42M0w2LjcxNiwxMEg1LjU1OWwuOTEzLTUuMjgzLDEuMSwwLS4xMTcuNmExLjUxMiwxLjUxMiwwLDAsMSwxLjI1LS43LDEuOSwxLjksMCwwLDEsLjQ0NC4wNzNaTTEyLjAwOSwxMGExLjU2NywxLjU2NywwLDAsMS0uMDQ5LS40OTMsMS45NTksMS45NTksMCwwLDEtMS40MTEuNTkxLDEuNjE4LDEuNjE4LDAsMCwxLTEuMTQtLjQ0MiwxLjM2MywxLjM2MywwLDAsMS0uNDIyLTEuMSwxLjYxOCwxLjYxOCwwLDAsMSwuNzIzLTEuMzEzLDMuMTQ2LDMuMTQ2LDAsMCwxLDEuODM2LS40NzlsLjc1Mi4wMS4wNjgtLjM2MWExLjA5LDEuMDksMCwwLDAsMC0uMzU2LjYzNi42MzYsMCwwLDAtLjctLjU0MiwxLjA1MywxLjA1MywwLDAsMC0uNjUyLjE4OC44MTMuODEzLDAsMCwwLS4zNDQuNTNsLTEuMTU3LjAxYTEuNDQ5LDEuNDQ5LDAsMCwxLC4zNDctLjg1NywyLjA1NiwyLjA1NiwwLDAsMSwuODMtLjU3NCwyLjgxLDIuODEsMCwwLDEsMS4wOTQtLjIsMS44NDgsMS44NDgsMCwwLDEsMS4zNDguNTIsMS41NDEsMS41NDEsMCwwLDEsLjQsMS4zbC0uNDA1LDIuNDc2LS4wMzkuNDM5YTEuNTYxLDEuNTYxLDAsMCwwLC4wNzMuNTYybDAsLjA4OFptLTEuMTkxLS44NWExLjI3NiwxLjI3NiwwLDAsMCwuNjc5LS4xNjgsMS43ODgsMS43ODgsMCwwLDAsLjUzMi0uNDYxbC4xODEtMS0uNTUyLDBhMS45MzksMS45MzksMCwwLDAtMS4wNDUuMjQ3LjkuOSwwLDAsMC0uNDQ0LjY3Ni42LjYsMCwwLDAsLjE0NC41MTVBLjcuNywwLDAsMCwxMC44MTgsOS4xNVptMy42MTMtMS44YTQuMDg3LDQuMDg3LDAsMCwxLC40MjctMS40MzEsMi41ODQsMi41ODQsMCwwLDEsLjg0Mi0uOTc5LDEuOTg3LDEuOTg3LDAsMCwxLDEuMTYyLS4zMywxLjU1OSwxLjU1OSwwLDAsMSwxLjMxMy42NGwuMTgxLS41NDIsMS4wNTUsMC0uODc0LDUuMTM3QTIuNDk0LDIuNDk0LDAsMCwxLDE1LjksMTIuMDg1YTIuNDY2LDIuNDY2LDAsMCwxLTEuMDU1LS4yNTQsMi4xOTMsMi4xOTMsMCwwLDEtLjgtLjY0NWwuNjE1LS43YTEuNDgyLDEuNDgyLDAsMCwwLDEuMjExLjY1OSwxLjQxOSwxLjQxOSwwLDAsMCwuOTc0LS4zMSwxLjYxNiwxLjYxNiwwLDAsMCwuNTQ0LS45NGwuMDgzLS4zNzFhMS44NjksMS44NjksMCwwLDEtMS4zODcuNTcxQTEuNDgsMS40OCwwLDAsMSwxNC45LDkuNTM2YTIuNDg0LDIuNDg0LDAsMCwxLS40OTEtMS40ODRBNC44NzksNC44NzksMCwwLDEsMTQuNDMxLDcuMzU0Wm0xLjE0Ny4xYTMuNTcxLDMuNTcxLDAsMCwwLS4wMi41MzcsMS4zOTQsMS4zOTQsMCwwLDAsLjIzNC44Mi43ODYuNzg2LDAsMCwwLC42NC4zMTcsMS4zNjYsMS4zNjYsMCwwLDAsMS4xNTItLjYxTDE4LDYuMTg3YS45NDMuOTQzLDAsMCwwLS45LS42LDEuMjA1LDEuMjA1LDAsMCwwLS45ODYuNDU0LDIuNTQ0LDIuNTQ0LDAsMCwwLS41MjIsMS4zMTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTAgNzc3KSIgZmlsbD0iIzA1MGMxYSIvPg0KICAgICAgICA8L2c+DQogICAgICA8L2c+DQogICAgPC9nPg0KICAgIDxnIGlkPSJHcm91cF80NTIxIiBkYXRhLW5hbWU9Ikdyb3VwIDQ1MjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM5MSAtMjYyKSI+DQogICAgICA8ZyBpZD0iQ29udGFpbmVyLTYiIGRhdGEtbmFtZT0iQ29udGFpbmVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MTUgNjQwKSI+DQogICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGVfMTY5NTctNiIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMTY5NTciIHdpZHRoPSIyODIiIGhlaWdodD0iMTYwIiByeD0iNCIgZmlsbD0iI2Y2ZjZmNiIvPg0KICAgICAgICA8cGF0aCBpZD0iTGFiZWwtV2VsY29tZS0yNSIgZGF0YS1uYW1lPSJMYWJlbC1XZWxjb21lIiBkPSJNNC41NzUtMS4zMjhIMi4yMjdMMS44MTYsMEgtLjAxNUwyLjU5My03LjEwOUg0LjJMNi44MzEsMEg0Ljk5Wk0yLjYzNy0yLjY1MUg0LjE2NUwzLjQtNS4xMTdaTTcuNTQ5LDBWLTcuMTA5aDIuMjlhMy4zNjksMy4zNjksMCwwLDEsMS42OTQuNDI3LDMsMywwLDAsMSwxLjE3NCwxLjIwNiwzLjY0MSwzLjY0MSwwLDAsMSwuNDI3LDEuNzQ2Vi0zLjRhMy42NjIsMy42NjIsMCwwLDEtLjQxMywxLjc1QTMuMDE2LDMuMDE2LDAsMCwxLDExLjU2LS40NDIsMy4zLDMuMywwLDAsMSw5Ljg4NywwWk05LjI2Mi01Ljc4NnY0LjQ2OGguNmExLjMzMywxLjMzMywwLDAsMCwxLjEzMy0uNTI1LDIuNTcyLDIuNTcyLDAsMCwwLC40LTEuNTZ2LS4zMDhhMi41NTEsMi41NTEsMCwwLDAtLjQtMS41NTMsMS4zNTYsMS4zNTYsMCwwLDAtMS4xNTItLjUyMlptNy43ODMtMS4zMjNoMS43MDl2NC44NzhhMi4zMzIsMi4zMzIsMCwwLDEtLjMxNSwxLjIxMSwyLjE1LDIuMTUsMCwwLDEtLjg3OS44MjVBMi42ODYsMi42ODYsMCwwLDEsMTYuMy4xLDIuNTg5LDIuNTg5LDAsMCwxLDE0LjUtLjQ4OGEyLjEyOSwyLjEyOSwwLDAsMS0uNjQ1LTEuNjZoMS43MTlhMS4xNzQsMS4xNzQsMCwwLDAsLjE2OC43MDguNjY3LjY2NywwLDAsMCwuNTY0LjIyLjYzOC42MzgsMCwwLDAsLjU0OS0uMjY2LDEuMjUxLDEuMjUxLDAsMCwwLC4xOTMtLjc0NVptOC41NjQsMHY0LjY1M2EyLjY3NCwyLjY3NCwwLDAsMS0uMzM3LDEuMzcsMi4xODMsMi4xODMsMCwwLDEtLjk2Ny44ODEsMy40MDYsMy40MDYsMCwwLDEtMS40ODkuMywyLjk0MiwyLjk0MiwwLDAsMS0yLjA0Ni0uNjc0LDIuNCwyLjQsMCwwLDEtLjc2Mi0xLjg0NlYtNy4xMDloMS43MjR2NC43MjJxLjAyOSwxLjE2NywxLjA4NCwxLjE2N2ExLjA0OSwxLjA0OSwwLDAsMCwuODA2LS4yOTMsMS4zNjksMS4zNjksMCwwLDAsLjI3My0uOTUyVi03LjEwOVptNC45MzYsNS4yMmEuNy43LDAsMCwwLS4yNjYtLjU4NiwzLjMwOCwzLjMwOCwwLDAsMC0uOTM1LS40MzUsOC45NzEsOC45NzEsMCwwLDEtMS4wOTQtLjQzNUEyLjA3MSwyLjA3MSwwLDAsMSwyNi44NjktNS4yMWExLjY3MywxLjY3MywwLDAsMSwuMzQ0LTEuMDQyLDIuMjI2LDIuMjI2LDAsMCwxLC45NzQtLjdBMy43OTEsMy43OTEsMCwwLDEsMjkuNi03LjIwN2EzLjMxNiwzLjMxNiwwLDAsMSwxLjM3NS4yNzMsMi4xNzYsMi4xNzYsMCwwLDEsLjk0NS43NzlBMi4wMzQsMi4wMzQsMCwwLDEsMzIuMjYtNUgzMC41NTFhLjg1OS44NTksMCwwLDAtLjI2Ni0uNjc0LDEuMDM3LDEuMDM3LDAsMCwwLS43Mi0uMjM5LDEuMTcsMS4xNywwLDAsMC0uNzI1LjIuNjIyLjYyMiwwLDAsMC0uMjY2LjUxNS42MjYuNjI2LDAsMCwwLC4yOTMuNSwzLjcsMy43LDAsMCwwLDEuMDMuNDU5LDYuMzExLDYuMzExLDAsMCwxLDEuMjExLjUxQTIuMDM1LDIuMDM1LDAsMCwxLDMyLjI2LTEuOWExLjczNiwxLjczNiwwLDAsMS0uNywxLjQ2NUEzLjEyNywzLjEyNywwLDAsMSwyOS42MjguMWEzLjgyNywzLjgyNywwLDAsMS0xLjU2NS0uMzEsMi4zNTksMi4zNTksMCwwLDEtMS4wNTUtLjg1QTIuMjE0LDIuMjE0LDAsMCwxLDI2LjY1NC0yLjNoMS43MTlhMS4wOSwxLjA5LDAsMCwwLC4zLjg0MiwxLjQsMS40LDAsMCwwLC45NTkuMjcxLDEuMSwxLjEsMCwwLDAsLjY3MS0uMTgzQS42LjYsMCwwLDAsMzAuNTQ2LTEuODlabTguMzc0LTMuOUgzNi43ODZWMEgzNS4wNzJWLTUuNzg2SDMyLjk3OFYtNy4xMDlIMzguOTJabTkuMDcyLDMuMzc5YTIuNiwyLjYsMCwwLDEtLjQsMS4zMTEsMi40MTYsMi40MTYsMCwwLDEtMS4wMjguODgxQTMuNSwzLjUsMCwwLDEsNDUuMDUyLjFhMi43OTIsMi43OTIsMCwwLDEtMi4yMDctLjkxMywzLjc3LDMuNzcsMCwwLDEtLjgwNi0yLjU3OHYtLjM1MkE0LjMsNC4zLDAsMCwxLDQyLjQtNS41NzRhMi43NTYsMi43NTYsMCwwLDEsMS4wNDctMS4yMTEsMi45MjIsMi45MjIsMCwwLDEsMS41ODItLjQyNywzLjA2NCwzLjA2NCwwLDAsMSwyLjA4LjY4MSwyLjY5MSwyLjY5MSwwLDAsMSwuODk0LDEuODc3SDQ2LjNhMS4yNzMsMS4yNzMsMCwwLDAtLjMyNy0uOTMzLDEuMzQ2LDEuMzQ2LDAsMCwwLS45MzctLjI4MywxLjAyNCwxLjAyNCwwLDAsMC0uOTM3LjQ3OSwzLjA3NSwzLjA3NSwwLDAsMC0uMzEyLDEuNTI4di41YTMuNCwzLjQsMCwwLDAsLjI4NiwxLjYyNiwxLjA0NSwxLjA0NSwwLDAsMCwuOTg0LjQ4OCwxLjMxNiwxLjMxNiwwLDAsMCwuOS0uMjc4LDEuMTgxLDEuMTgxLDAsMCwwLC4zMzItLjg4NFpNNTMuMDQtMS4zMjhINTAuNjkyTDUwLjI4MiwwSDQ4LjQ1MWwyLjYwNy03LjEwOWgxLjYxMUw1NS4zLDBINTMuNDU1Wk01MS4xLTIuNjUxSDUyLjYzbC0uNzY3LTIuNDY2Wm03LjE2My00LjQ1OCwxLjU4Nyw0Ljk0NiwxLjU4Mi00Ljk0Nkg2My42OVYwSDYxLjk3MVYtMS42NmwuMTY2LTMuNEw2MC40MTgsMEg1OS4yODVMNTcuNTYyLTUuMDYzbC4xNjYsMy40VjBINTYuMDE0Vi03LjEwOVpNNjkuMzg4LTMuMDE4aC0yLjd2MS43aDMuMTg0VjBoLTQuOVYtNy4xMDloNC45MDd2MS4zMjNINjYuNjkydjEuNWgyLjdabTQuMDI4LjVoLS45MjhWMEg3MC43NzRWLTcuMTA5aDIuOGEzLjEyMywzLjEyMywwLDAsMSwxLjk3OC41NjEsMS45LDEuOSwwLDAsMSwuNzEzLDEuNTg1LDIuMzA4LDIuMzA4LDAsMCwxLS4zLDEuMjI5LDIuMTMxLDIuMTMxLDAsMCwxLS45NC43OUw3Ni41MDctLjA3M1YwSDc0LjY3MVptLS45MjgtMS4zMThoMS4wODRhLjk3My45NzMsMCwwLDAsLjczNS0uMjU3Ljk5My45OTMsMCwwLDAsLjI0Ny0uNzE3LDEsMSwwLDAsMC0uMjQ5LS43MjIuOTY0Ljk2NCwwLDAsMC0uNzMyLS4yNjJINzIuNDg4Wm05LjA0OCwyLjVINzkuMTg3TDc4Ljc3NywwSDc2Ljk0NmwyLjYwNy03LjEwOWgxLjYxMUw4My43OTIsMEg4MS45NTFaTTc5LjYtMi42NTFoMS41MjhsLS43NjctMi40NjZaTTg5LjQ1LTcuMTA5bDEuNTg3LDQuOTQ2LDEuNTgyLTQuOTQ2aDIuMjU2VjBIOTMuMTU2Vi0xLjY2bC4xNjYtMy40TDkxLjYsMEg5MC40NzFMODguNzQ3LTUuMDYzbC4xNjYsMy40VjBIODcuMlYtNy4xMDlabTEyLjczNCwzLjdhNC4xOTIsNC4xOTIsMCwwLDEtLjM4NiwxLjg0MSwyLjg1MSwyLjg1MSwwLDAsMS0xLjEsMS4yMzNBMy4wNTIsMy4wNTIsMCwwLDEsOTkuMDg0LjEsMy4xLDMuMSwwLDAsMSw5Ny40NzMtLjMyYTIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSw5NS45NjQtMy4zdi0uNGE0LjIxMSw0LjIxMSwwLDAsMSwuMzgzLTEuODQzLDIuODQ0LDIuODQ0LDAsMCwxLDEuMS0xLjIzMywzLjA3NCwzLjA3NCwwLDAsMSwxLjYyOC0uNDM1LDMuMDQ0LDMuMDQ0LDAsMCwxLDEuNjExLjQzLDIuOSwyLjksMCwwLDEsMS4xLDEuMjIzLDQuMDksNC4wOSwwLDAsMSwuNCwxLjgxOVptLTEuNzQzLS4zYTIuOTksMi45OSwwLDAsMC0uMzU0LTEuNjA5LDEuMTM1LDEuMTM1LDAsMCwwLTEuMDEzLS41NDlxLTEuMjg5LDAtMS4zNjIsMS45MzRsMCwuNTIyQTMuMDc1LDMuMDc1LDAsMCwwLDk4LjA1NC0xLjhhMS4xMzQsMS4xMzQsMCwwLDAsMS4wMy41NjIsMS4xMiwxLjEyLDAsMCwwLDEtLjU1MiwyLjk5MSwyLjk5MSwwLDAsMCwuMzU2LTEuNTg3Wm01LjQ3OCwxLjc3MiwxLjQxNi01LjE3NmgxLjkxNEwxMDYuODU3LDBoLTEuODc1bC0yLjM3My03LjEwOWgxLjlabTguNDU3LTEuMDg0aC0yLjd2MS43aDMuMTg0VjBoLTQuOVYtNy4xMDloNC45MDd2MS4zMjNoLTMuMTkzdjEuNWgyLjdabTMuNjM3LTQuMDkyTDExOS42LTIuMTYzbDEuNTgyLTQuOTQ2aDIuMjU2VjBIMTIxLjcyVi0xLjY2bC4xNjYtMy40TDEyMC4xNjcsMGgtMS4xMzNsLTEuNzI0LTUuMDYzLjE2NiwzLjRWMGgtMS43MTRWLTcuMTA5Wm0xMS4xMjMsNC4wOTJoLTIuN3YxLjdoMy4xODRWMGgtNC45Vi03LjEwOWg0LjkwN3YxLjMyM2gtMy4xOTN2MS41aDIuN1pNMTM2LjQ2MSwwaC0xLjdsLTIuNTItNC40MjRWMGgtMS43MTRWLTcuMTA5aDEuNzE0bDIuNTE1LDQuNDI0Vi03LjEwOWgxLjcwOVptNi44NjUtNS43ODZoLTIuMTM0VjBoLTEuNzE0Vi01Ljc4NmgtMi4wOTVWLTcuMTA5aDUuOTQyWm02Ljk4NywzLjlhLjcuNywwLDAsMC0uMjY2LS41ODYsMy4zMDgsMy4zMDgsMCwwLDAtLjkzNS0uNDM1LDguOTcsOC45NywwLDAsMS0xLjA5NC0uNDM1LDIuMDcxLDIuMDcxLDAsMCwxLTEuMzgyLTEuODY1LDEuNjczLDEuNjczLDAsMCwxLC4zNDQtMS4wNDIsMi4yMjYsMi4yMjYsMCwwLDEsLjk3NC0uNywzLjc5MSwzLjc5MSwwLDAsMSwxLjQxNi0uMjUxLDMuMzE2LDMuMzE2LDAsMCwxLDEuMzc1LjI3MywyLjE3NiwyLjE3NiwwLDAsMSwuOTQ1Ljc3OUEyLjAzNCwyLjAzNCwwLDAsMSwxNTIuMDI3LTVoLTEuNzA5YS44NTkuODU5LDAsMCwwLS4yNjYtLjY3NCwxLjAzNywxLjAzNywwLDAsMC0uNzItLjIzOSwxLjE3LDEuMTcsMCwwLDAtLjcyNS4yLjYyMi42MjIsMCwwLDAtLjI2Ni41MTUuNjI2LjYyNiwwLDAsMCwuMjkzLjUsMy43LDMuNywwLDAsMCwxLjAzLjQ1OSw2LjMxMSw2LjMxMSwwLDAsMSwxLjIxMS41MUEyLjAzNSwyLjAzNSwwLDAsMSwxNTIuMDI3LTEuOWExLjczNiwxLjczNiwwLDAsMS0uNywxLjQ2NUEzLjEyNywzLjEyNywwLDAsMSwxNDkuMzk1LjFhMy44MjYsMy44MjYsMCwwLDEtMS41NjUtLjMxLDIuMzYsMi4zNiwwLDAsMS0xLjA1NS0uODUsMi4yMTQsMi4yMTQsMCwwLDEtLjM1NC0xLjI0M2gxLjcxOWExLjA5LDEuMDksMCwwLDAsLjMuODQyLDEuNCwxLjQsMCwwLDAsLjk1OS4yNzEsMS4xLDEuMSwwLDAsMCwuNjcxLS4xODNBLjYuNiwwLDAsMCwxNTAuMzEzLTEuODlabTQuNTA3LS41MjJWMGgtMS43MTRWLTcuMTA5aDIuODM3YTMuMywzLjMsMCwwLDEsMS40NDMuMywyLjI2MywyLjI2MywwLDAsMSwuOTcyLjg1NEEyLjMzNCwyLjMzNCwwLDAsMSwxNTguNy00LjdhMi4wNTcsMi4wNTcsMCwwLDEtLjc0NSwxLjY2MywzLjA5LDMuMDksMCwwLDEtMi4wNDMuNjIzWm0wLTEuMzIzaDEuMTIzYTEuMDU5LDEuMDU5LDAsMCwwLC43NTktLjI0OS45MjUuOTI1LDAsMCwwLC4yNjEtLjcsMS4xNDQsMS4xNDQsMCwwLDAtLjI2OS0uOC45NTEuOTUxLDAsMCwwLS43MzItLjNoLTEuMTQzWm05LjQuNzE4aC0yLjd2MS43aDMuMTg0VjBoLTQuOVYtNy4xMDloNC45MDd2MS4zMjNoLTMuMTkzdjEuNWgyLjdabTUuOCwwaC0yLjd2MS43aDMuMTg0VjBoLTQuOVYtNy4xMDloNC45MDd2MS4zMjNoLTMuMTkzdjEuNWgyLjdaTTE3MS40MDYsMFYtNy4xMDloMi4yOWEzLjM2OSwzLjM2OSwwLDAsMSwxLjY5NC40MjcsMywzLDAsMCwxLDEuMTc0LDEuMjA2LDMuNjQxLDMuNjQxLDAsMCwxLC40MjcsMS43NDZWLTMuNGEzLjY2MiwzLjY2MiwwLDAsMS0uNDEzLDEuNzUsMy4wMTYsMy4wMTYsMCwwLDEtMS4xNjIsMS4yMTFBMy4zLDMuMywwLDAsMSwxNzMuNzQ1LDBabTEuNzE0LTUuNzg2djQuNDY4aC42YTEuMzMzLDEuMzMzLDAsMCwwLDEuMTMzLS41MjUsMi41NzIsMi41NzIsMCwwLDAsLjQtMS41NnYtLjMwOGEyLjU1MSwyLjU1MSwwLDAsMC0uNC0xLjU1MywxLjM1NiwxLjM1NiwwLDAsMC0xLjE1Mi0uNTIyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAgMTgpIiBmaWxsPSIjMDUwYzFhIi8+DQogICAgICA8L2c+DQogICAgICA8ZyBpZD0iR3JvdXBfNDUzMSIgZGF0YS1uYW1lPSJHcm91cCA0NTMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1KSI+DQogICAgICAgIDxnIGlkPSJSZWN0LTQiIGRhdGEtbmFtZT0iUmVjdCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjMwIDcwMSkiPg0KICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsIDAsIDAsIDEsIC00NTIsIC02MSkiIGZpbHRlcj0idXJsKCNQYXRoXzkxNC0xMykiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE0LTI4IiBkYXRhLW5hbWU9IlBhdGggOTE0IiBkPSJNMiwwSDYwYTIuMTc1LDIuMTc1LDAsMCwxLDEuNS42NzNBMi40MDgsMi40MDgsMCwwLDEsNjEuNzY1LDJWMzBBMS42NCwxLjY0LDAsMCwxLDYwLDMxLjc4OWwtNTguMDMxLjE0OWEyLjIsMi4yLDAsMCwxLTEuMzkxLS41NzhBMS42NTYsMS42NTYsMCwwLDEsMCwzMFYyQTIsMiwwLDAsMSwyLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NTIgNjEpIiBmaWxsPSIjNGE0YTRhIi8+DQogICAgICAgICAgPC9nPg0KICAgICAgICAgIDxnIGlkPSJNYXNrX0dyb3VwXzMtMTMiIGRhdGEtbmFtZT0iTWFzayBHcm91cCAzIiBjbGlwLXBhdGg9InVybCgjY2xpcC1wYXRoKSI+DQogICAgICAgICAgICA8cGF0aCBpZD0iUGF0aF85MTUtMTMiIGRhdGEtbmFtZT0iUGF0aCA5MTUiIGQ9Ik0xLjkzOCwwSDYwLjA2M0ExLjk2OSwxLjk2OSwwLDAsMSw2MiwyVjMwYTEuOTY5LDEuOTY5LDAsMCwxLTEuOTM3LDJIMS45MzhBMS45NjksMS45NjksMCwwLDEsMCwzMFYyQTEuOTY5LDEuOTY5LDAsMCwxLDEuOTM4LDBaIiBmaWxsPSIjMjEyMTIxIi8+DQogICAgICAgICAgPC9nPg0KICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNi0xMyIgZGF0YS1uYW1lPSJQYXRoIDkxNiIgZD0iTTEuOTY0LDBINTUuNTM2QTEuOTY0LDEuOTY0LDAsMCwxLDU3LjUsMS45NjRWMjUuNTM2QTEuOTY0LDEuOTY0LDAsMCwxLDU1LjUzNiwyNy41SDEuOTY0QTEuOTY0LDEuOTY0LDAsMCwxLDAsMjUuNTM2VjEuOTY0QTEuOTY0LDEuOTY0LDAsMCwxLDEuOTY0LDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIiBmaWxsPSJ1cmwoI2xpbmVhci1ncmFkaWVudC03KSIvPg0KICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzE1NTM4IiBkYXRhLW5hbWU9IlBhdGggMTU1MzgiIGQ9Ik03Ljk1LDMuNTkyVjQuOTM4YTUuOTQ3LDUuOTQ3LDAsMCwwLTIuNTkxLS42OSwzLjU4NSwzLjU4NSwwLDAsMC0yLjU1Ny45OEEzLjE4LDMuMTgsMCwwLDAsMS43NjQsNy42MzVhMy4xNTYsMy4xNTYsMCwwLDAsMS4wNjMsMi40MjgsMy43OTMsMy43OTMsMCwwLDAsMi42NjMuOTczQTUuMDM5LDUuMDM5LDAsMCwwLDcuOTUsMTAuM3YxLjM2YTUuMzc2LDUuMzc2LDAsMCwxLTIuNTYzLjYyOSw0LjgzMSw0LjgzMSwwLDAsMS0zLjQ1OS0xLjM3LDQuNCw0LjQsMCwwLDEtMS40MzYtMy4zQTQuMzQzLDQuMzQzLDAsMCwxLDEuOSw0LjM3LDQuNzM5LDQuNzM5LDAsMCwxLDUuMywzLjAxOCw2LjgxNSw2LjgxNSwwLDAsMSw3Ljk1LDMuNTkyWk05LjYzMiw0LjcyaDEuMTg5VjYuMzZIMTJWNy40NDdIMTAuODIxVjEySDkuNjMyVjcuNDQ3SDguN3YtMS4xaC45MzdaTTE0LjM2OSw2LjM2VjcuNTIyYTMuNjE4LDMuNjE4LDAsMCwxLC43NzYtMS4wMDgsMS41MDgsMS41MDgsMCwwLDEsLjk4OC0uMzExLDIuMTY1LDIuMTY1LDAsMCwxLC40OTIuMDgybC0uMzYyLDEuMTg5YTIuOTYyLDIuOTYyLDAsMCwwLS40NTEtLjA2OCwxLjM0NywxLjM0NywwLDAsMC0xLjAwOC40MkExLjQ0OSwxLjQ0OSwwLDAsMCwxNC40LDguODc2VjEySDEzLjIwN1Y2LjM2Wm0zLjUtMy4yMzNoMS4xODlWMTJIMTcuODY5WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNiAxMikiIGZpbGw9IiNmZmYiLz4NCiAgICAgICAgPC9nPg0KICAgICAgICA8dGV4dCBpZD0iTGFiZWwtV2VsY29tZS0yNiIgZGF0YS1uYW1lPSJMYWJlbC1XZWxjb21lIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3MDAgNzIxKSIgZmlsbD0iIzA1MGMxYSIgZm9udC1zaXplPSIxNCIgZm9udC1mYW1pbHk9IlJvYm90by1Cb2xkLCBSb2JvdG8iIGZvbnQtd2VpZ2h0PSI3MDAiPjx0c3BhbiB4PSIwIiB5PSIwIj4rPC90c3Bhbj48L3RleHQ+DQogICAgICAgIDxnIGlkPSJHcm91cF8zNTM2IiBkYXRhLW5hbWU9Ikdyb3VwIDM1MzYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00IC0yMSkiPg0KICAgICAgICAgIDxnIGlkPSJfTW91c2UtNSIgZGF0YS1uYW1lPSLwn4yVICBNb3VzZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzIwIDcxMSkiPg0KICAgICAgICAgICAgPGcgaWQ9IkJhc2UtNSIgZGF0YS1uYW1lPSJCYXNlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTE5IC02NDMpIj4NCiAgICAgICAgICAgICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgMzgxLCA1OTMpIiBmaWx0ZXI9InVybCgjUmVjdGFuZ2xlXzE4OTktNSkiPg0KICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGVfMTg5OS0xMSIgZGF0YS1uYW1lPSJSZWN0YW5nbGUgMTg5OSIgZD0iTTcuMiwwSDI4LjhBNy4yLDcuMiwwLDAsMSwzNiw3LjJWMzZBMTgsMTgsMCwwLDEsMTgsNTRoMEExOCwxOCwwLDAsMSwwLDM2VjcuMkE3LjIsNy4yLDAsMCwxLDcuMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTM4IDUwKSIgZmlsbD0iIzIxMjEyMSIvPg0KICAgICAgICAgICAgICA8L2c+DQogICAgICAgICAgICAgIDxwYXRoIGlkPSJTdWJ0cmFjdGlvbl8xMi01IiBkYXRhLW5hbWU9IlN1YnRyYWN0aW9uIDEyIiBkPSJNLTQxMDIsMjcwNGExNy44ODEsMTcuODgxLDAsMCwxLTEyLjcyOC01LjI3MkExNy44ODIsMTcuODgyLDAsMCwxLTQxMjAsMjY4NnYtMjguOGE3LjIwOCw3LjIwOCwwLDAsMSw3LjItNy4yaDIxLjZhNy4yMDgsNy4yMDgsMCwwLDEsNy4yLDcuMlYyNjg2YTE3Ljg4MSwxNy44ODEsMCwwLDEtNS4yNzIsMTIuNzI4QTE3Ljg4NCwxNy44ODQsMCwwLDEtNDEwMiwyNzA0Wm0tMTAuNC01MmE1LjYwNiw1LjYwNiwwLDAsMC01LjYsNS42VjI2ODJhMTYuMDE4LDE2LjAxOCwwLDAsMCwxNiwxNiwxNi4wMTgsMTYuMDE4LDAsMCwwLDE2LTE2di0yNC40YTUuNjA2LDUuNjA2LDAsMCwwLTUuNi01LjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MDM5IC0yMDA3KSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQpIi8+DQogICAgICAgICAgICA8L2c+DQogICAgICAgICAgICA8cGF0aCBpZD0iVG9wLTUiIGRhdGEtbmFtZT0iVG9wIiBkPSJNNS42LDBIMjYuNEE1LjYsNS42LDAsMCwxLDMyLDUuNlYzMEExNiwxNiwwLDAsMSwxNiw0NmgwQTE2LDE2LDAsMCwxLDAsMzBWNS42QTUuNiw1LjYsMCwwLDEsNS42LDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDIpIiBmaWxsPSJ1cmwoI2xpbmVhci1ncmFkaWVudC0yKSIvPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlRyaWdnZXItUmlnaHQtNiIgZGF0YS1uYW1lPSJUcmlnZ2VyLVJpZ2h0IiBkPSJNMCwwSDkuNWE1LDUsMCwwLDEsNSw1VjE3YTAsMCwwLDAsMSwwLDBIMGEwLDAsMCwwLDEsMCwwVjBBMCwwLDAsMCwxLDAsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4LjUgMykiIGZpbGw9IiNmZmYiIG9wYWNpdHk9IjAuMTUiLz4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJUcmlnZ2VyLUxlZnQtNyIgZGF0YS1uYW1lPSJUcmlnZ2VyLUxlZnQiIGQ9Ik01LDBoOS41YTAsMCwwLDAsMSwwLDBWMTdhMCwwLDAsMCwxLDAsMEgwYTAsMCwwLDAsMSwwLDBWNUE1LDUsMCwwLDEsNSwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMyAzKSIgZmlsbD0iI2ZmZiIgb3BhY2l0eT0iMC4xNSIvPg0KICAgICAgICAgICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgLTUzOCwgLTUwKSIgZmlsdGVyPSJ1cmwoI1Njcm9sbHdoZWVsLTMpIj4NCiAgICAgICAgICAgICAgPGcgaWQ9IlNjcm9sbHdoZWVsLTgiIGRhdGEtbmFtZT0iU2Nyb2xsd2hlZWwiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU1MyA2MSkiIGZpbGw9IiNmZmI3MDAiIHN0cm9rZT0iIzMxMzEzMSIgc3Ryb2tlLXdpZHRoPSIxIj4NCiAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iNiIgaGVpZ2h0PSIxNCIgc3Ryb2tlPSJub25lIi8+DQogICAgICAgICAgICAgICAgPHJlY3QgeD0iLTAuNSIgeT0iLTAuNSIgd2lkdGg9IjciIGhlaWdodD0iMTUiIGZpbGw9Im5vbmUiLz4NCiAgICAgICAgICAgICAgPC9nPg0KICAgICAgICAgICAgPC9nPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8cGF0aCBpZD0iTGFiZWwtV2VsY29tZS0yNyIgZGF0YS1uYW1lPSJMYWJlbC1XZWxjb21lIiBkPSJNLTkuMDgyLTMuMDEzaC0yLjc3M0wtMTIuMzc4LDBoLTEuMjA2bDEuMjMtNy4xMDloNC4zOTVsLS4xNzYsMWgtMy4xODRMLTExLjY4NS00aDIuNzc4Wk0tNS4zNDcsMEExLjU2NywxLjU2NywwLDAsMS01LjQtLjQ5MywxLjk1OSwxLjk1OSwwLDAsMS02LjgwNy4xYTEuNjE4LDEuNjE4LDAsMCwxLTEuMTQtLjQ0MiwxLjM2MywxLjM2MywwLDAsMS0uNDIyLTEuMSwxLjYxOCwxLjYxOCwwLDAsMSwuNzIzLTEuMzEzLDMuMTQ2LDMuMTQ2LDAsMCwxLDEuODM2LS40NzlsLjc1Mi4wMS4wNjgtLjM2MWExLjA5LDEuMDksMCwwLDAsMC0uMzU2LjYzNi42MzYsMCwwLDAtLjctLjU0MiwxLjA1MywxLjA1MywwLDAsMC0uNjUyLjE4OC44MTMuODEzLDAsMCwwLS4zNDQuNTNsLTEuMTU3LjAxQTEuNDQ5LDEuNDQ5LDAsMCwxLTcuNS00LjYxMmEyLjA1NiwyLjA1NiwwLDAsMSwuODMtLjU3NCwyLjgxLDIuODEsMCwwLDEsMS4wOTQtLjIsMS44NDgsMS44NDgsMCwwLDEsMS4zNDguNTIsMS41NDEsMS41NDEsMCwwLDEsLjQsMS4zbC0uNDA1LDIuNDc2LS4wMzkuNDM5YTEuNTYxLDEuNTYxLDAsMCwwLC4wNzMuNTYyTC00LjIsMFpNLTYuNTM4LS44NWExLjI3NiwxLjI3NiwwLDAsMCwuNjc5LS4xNjgsMS43ODgsMS43ODgsMCwwLDAsLjUzMi0uNDYxbC4xODEtMS0uNTUyLDBhMS45MzksMS45MzksMCwwLDAtMS4wNDUuMjQ3LjkuOSwwLDAsMC0uNDQ0LjY3Ni42LjYsMCwwLDAsLjE0NC41MTVBLjcuNywwLDAsMC02LjUzOC0uODVabTYuNTA5LS42MTVxLjA4My0uNDgzLS42MjctLjY3MWE3Ljk3Nyw3Ljk3NywwLDAsMS0uOTY5LS4zQTEuMzM2LDEuMzM2LDAsMCwxLTIuNi0zLjc0NWExLjQ4NiwxLjQ4NiwwLDAsMSwuNjQ3LTEuMTc5QTIuMzcxLDIuMzcxLDAsMCwxLS40NTktNS4zODFhMi4wNDEsMi4wNDEsMCwwLDEsMS4zNy40NzQsMS41MSwxLjUxLDAsMCwxLC41MiwxLjIxNkwuMjgzLTMuN2EuNzQxLjc0MSwwLDAsMC0uMi0uNTc0LjgxNy44MTcsMCwwLDAtLjU3Ni0uMjE3LDEuMTM2LDEuMTM2LDAsMCwwLS42NjIuMTkuNzEuNzEsMCwwLDAtLjMyLjVxLS4wNjguNDQ0LjYyNS42MThhNi44Niw2Ljg2LDAsMCwxLDEuMDI1LjMyLDEuMzM3LDEuMzM3LDAsMCwxLC45MzMsMS4zMjgsMS40NiwxLjQ2LDAsMCwxLS4zMy44NzYsMS45MjMsMS45MjMsMCwwLDEtLjgxOC41NzFBMi44LDIuOCwwLDAsMS0xLjEyOC4xYTIuMTQ4LDIuMTQ4LDAsMCwxLTEuNDMzLS41QTEuNTcsMS41NywwLDAsMS0zLjEyLTEuNjdsMS4xMTgsMGEuODUxLjg1MSwwLDAsMCwuMjU0LjY0NUEuOTgxLjk4MSwwLDAsMC0xLjA3OS0uOCwxLjMyOCwxLjMyOCwwLDAsMC0uMzY0LS45NzQuNjg0LjY4NCwwLDAsMC0uMDI5LTEuNDY1Wm00LjQ4Ny01LjFMNC4yMzMtNS4yODNoLjlMNC45ODUtNC40SDQuMDc3bC0uNSwyLjk1OWExLjAxMiwxLjAxMiwwLDAsMCwwLC4yMnEuMDI5LjMxNy4zOTEuMzMyYTIuMjA2LDIuMjA2LDAsMCwwLC40MS0uMDQ0TDQuMy0uMDFhMi42NTMsMi42NTMsMCwwLDEtLjcyOC4xQTEuMDgsMS4wOCwwLDAsMSwyLjY2NC0uMzJhMS40OTMsMS40OTMsMCwwLDEtLjIzNy0xLjA2N0wyLjkyLTQuNEgyLjA3NWwuMTU2LS44NzloLjg0TDMuMy02LjU2N1pNNy41MzQuMUEyLjIxMywyLjIxMywwLDAsMSw2LjM0LS4yNDlhMS45NzIsMS45NzIsMCwwLDEtLjc0Ny0uOTA4QTIuNywyLjcsMCwwLDEsNS40MS0yLjQ0MWwuMDE1LS4yQTMuNTM2LDMuNTM2LDAsMCwxLDUuOS00LjA4OWEyLjY4OSwyLjY4OSwwLDAsMSwuOTU1LS45NzQsMi4zMjEsMi4zMjEsMCwwLDEsMS4yNC0uMzE3LDEuNzMxLDEuNzMxLDAsMCwxLDEuNDg3LjczOCwyLjcxMSwyLjcxMSwwLDAsMSwuMzc0LDEuODczbC0uMDY4LjUwOUg2LjU1OGExLjQzNSwxLjQzNSwwLDAsMCwuMjU0LDEuMDEyLDEuMDA2LDEuMDA2LDAsMCwwLC44Mi4zOTRBMS43OCwxLjc4LDAsMCwwLDkuMDA5LTEuNWwuNTg2LjYxNWEyLjIyNywyLjIyNywwLDAsMS0uODc0LjczNUEyLjYsMi42LDAsMCwxLDcuNTM0LjFabS40OTMtNC41MzFxLS45MTgtLjAyOS0xLjM3NywxLjNsMi4xOTIsMCwuMDItLjFhMS41MzIsMS41MzIsMCwwLDAsMC0uNDM5LjkuOSwwLDAsMC0uMjczLS41NDdBLjg2Ni44NjYsMCwwLDAsOC4wMjctNC40MzRabTUuODI1LjIzNGEyLjEzMiwyLjEzMiwwLDAsMC0uNDU0LS4wNDksMS4zNTUsMS4zNTUsMCwwLDAtMS4yMTEuNjNMMTEuNTUzLDBIMTAuNGwuOTEzLTUuMjgzLDEuMSwwLS4xMTcuNmExLjUxMiwxLjUxMiwwLDAsMSwxLjI1LS43LDEuOSwxLjksMCwwLDEsLjQ0NC4wNzNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3NzYgNzIzKSIgZmlsbD0iIzA1MGMxYSIvPg0KICAgICAgICAgIDxwYXRoIGlkPSJMYWJlbC1XZWxjb21lLTI4IiBkYXRhLW5hbWU9IkxhYmVsLVdlbGNvbWUiIGQ9Ik0tMTAuODYyLTEuODY1cS4xMDctLjctLjc2Ny0xLjA0NWwtLjQtLjE0NmEzLjcsMy43LDAsMCwxLTEuNTY3LS45MTMsMS42MzMsMS42MzMsMCwwLDEtLjQyLTEuMjI2QTEuODQzLDEuODQzLDAsMCwxLTEzLjYtNi4yNjJhMi40MDYsMi40MDYsMCwwLDEsLjk4NC0uNzEsMy4yMiwzLjIyLDAsMCwxLDEuMy0uMjM0LDIuNiwyLjYsMCwwLDEsMS4xODIuMjkxLDEuOTEyLDEuOTEyLDAsMCwxLC43OTEuNzY3LDIuMTIzLDIuMTIzLDAsMCwxLC4yNTQsMS4xMjFsLTEuMiwwYTEuMTI3LDEuMTI3LDAsMCwwLS4yNDctLjg2NCwxLjEzMywxLjEzMywwLDAsMC0uODQ3LS4zMjIsMS41NzgsMS41NzgsMCwwLDAtLjk2NC4yNjksMS4wNzQsMS4wNzQsMCwwLDAtLjQ2MS43NTJxLS4xLjYyLjgzLjk3N2wuMzY2LjEzMmEzLjU1NSwzLjU1NSwwLDAsMSwxLjU2My45NCwxLjczNSwxLjczNSwwLDAsMSwuMzkxLDEuMjc3LDEuOTIzLDEuOTIzLDAsMCwxLS40LDEuMDQ3LDIuMjIxLDIuMjIxLDAsMCwxLS45NTkuNjkxQTMuNDksMy40OSwwLDAsMS0xMi4zNjYuMSwyLjgwOSwyLjgwOSwwLDAsMS0xMy42MzMtLjJhMi4wNzUsMi4wNzUsMCwwLDEtLjg3Mi0uOCwyLjA3MSwyLjA3MSwwLDAsMS0uMjc4LTEuMTZsMS4yMDYsMGExLjEzMiwxLjEzMiwwLDAsMCwuMy45MzMsMS4zNjQsMS4zNjQsMCwwLDAsLjk2Ny4zMzcsMS42OSwxLjY5LDAsMCwwLC45NzktLjI0OUExLjA0NiwxLjA0NiwwLDAsMC0xMC44NjItMS44NjVaTS03Ljc3MSwwSC04LjkyOGwxLjMtNy41aDEuMTU3Wk0tNi4yLTIuNjYxYTMuNDc2LDMuNDc2LDAsMCwxLC40NTctMS40MTEsMi43MDksMi43MDksMCwwLDEsLjk1OS0uOTgxLDIuMzcxLDIuMzcxLDAsMCwxLDEuMy0uMzI3LDIuMDE4LDIuMDE4LDAsMCwxLDEuMTcyLjM2MSwyLjAwNywyLjAwNywwLDAsMSwuNzIuOTYyQTMuMDU0LDMuMDU0LDAsMCwxLTEuNDMzLTIuNywzLjU0MSwzLjU0MSwwLDAsMS0xLjg5LTEuMjE2YTIuNywyLjcsMCwwLDEtLjk2Ny45ODlBMi40LDIuNCwwLDAsMS00LjE2My4xLDIuMDA5LDIuMDA5LDAsMCwxLTUuMzI3LS4yNjFhMi4wMTQsMi4wMTQsMCwwLDEtLjcyLS45NTcsMy4wMTUsMy4wMTUsMCwwLDEtLjE2Ni0xLjM0Wm0xLjEzOC42NjlhMS40LDEuNCwwLDAsMCwuMjcxLjgyM0EuODY3Ljg2NywwLDAsMC00LjEtLjg0NWExLjIxNywxLjIxNywwLDAsMCwxLS40NTlBMi40MTUsMi40MTUsMCwwLDAtMi42LTIuNmwuMDI5LS40NzlhMS42OTEsMS42OTEsMCwwLDAtLjI0OS0uOTgxLjg3NC44NzQsMCwwLDAtLjcyMy0uMzc2LDEuMjY1LDEuMjY1LDAsMCwwLTEuMTcyLjcyOCwyLjcxOCwyLjcxOCwwLDAsMC0uMzI3LDEuMDQ1QTQuMDg4LDQuMDg4LDAsMCwwLTUuMDYxLTEuOTkyWm04LjkyNi4zNDcsMS40NS0zLjYzOEg2LjQ3N0w0LjE2MywwSDMuMjFMMi43NDctMy42MTMsMS4wMzgsMEguMDgxTC0uNC01LjI4M0guNjkxTC44OTEtMS43bDEuNjctMy41ODRoLjg3NFpNOC43NDMuMUEyLjIxMywyLjIxMywwLDAsMSw3LjU0OS0uMjQ5LDEuOTcyLDEuOTcyLDAsMCwxLDYuOC0xLjE1N2EyLjcsMi43LDAsMCwxLS4xODMtMS4yODRsLjAxNS0uMkEzLjUzNiwzLjUzNiwwLDAsMSw3LjEtNC4wODlhMi42ODksMi42ODksMCwwLDEsLjk1NS0uOTc0QTIuMzIxLDIuMzIxLDAsMCwxLDkuMy01LjM4MWExLjczMSwxLjczMSwwLDAsMSwxLjQ4Ny43MzgsMi43MTEsMi43MTEsMCwwLDEsLjM3NCwxLjg3M2wtLjA2OC41MDlINy43NjZBMS40MzUsMS40MzUsMCwwLDAsOC4wMi0xLjI0OWExLjAwNiwxLjAwNiwwLDAsMCwuODIuMzk0QTEuNzgsMS43OCwwLDAsMCwxMC4yMTctMS41bC41ODYuNjE1YTIuMjI3LDIuMjI3LDAsMCwxLS44NzQuNzM1QTIuNiwyLjYsMCwwLDEsOC43NDMuMVptLjQ5My00LjUzMXEtLjkxOC0uMDI5LTEuMzc3LDEuM2wyLjE5MiwwLC4wMi0uMWExLjUzMiwxLjUzMiwwLDAsMCwwLS40MzlBLjkuOSwwLDAsMCw5LjgtNC4yMTkuODY2Ljg2NiwwLDAsMCw5LjIzNi00LjQzNFptNS44MjUuMjM0YTIuMTMyLDIuMTMyLDAsMCwwLS40NTQtLjA0OSwxLjM1NSwxLjM1NSwwLDAsMC0xLjIxMS42M0wxMi43NjEsMEgxMS42bC45MTMtNS4yODMsMS4xLDAtLjExNy42YTEuNTEyLDEuNTEyLDAsMCwxLDEuMjUtLjcsMS45LDEuOSwwLDAsMSwuNDQ0LjA3M1oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc3NiA3NjApIiBmaWxsPSIjMDUwYzFhIi8+DQogICAgICAgICAgPHBhdGggaWQ9IlBhdGhfMTQxNzkiIGRhdGEtbmFtZT0iUGF0aCAxNDE3OSIgZD0iTS04MjY2LjMzMiwyNjYyLjgzMmgtMTEuMzMzVjI2NjVsLTUuMzM1LTQuNSw1LjMzNS00LjV2Mi4xNjdoMTEuMzMzVjI2NTZsNS4zMzMsNC41LTUuMzMzLDQuNVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xODg0IC03NTM0KSByb3RhdGUoLTkwKSIgZmlsbD0iIzIxMjMyOSIgb3BhY2l0eT0iMC40Ii8+DQogICAgICAgIDwvZz4NCiAgICAgIDwvZz4NCiAgICAgIDxwYXRoIGlkPSJMYWJlbC1XZWxjb21lLTI5IiBkYXRhLW5hbWU9IkxhYmVsLVdlbGNvbWUiIGQ9Ik0tNjUuNzQ1LDBoLTEuMmwuNTQ3LTMuMTU0aC0zLjA3NkwtNzAuMDIyLDBoLTEuMjA2bDEuMjM1LTcuMTA5aDEuMjA2TC02OS4zLTQuMTVoMy4wNzZsLjUxMy0yLjk1OWgxLjIwNlptMS42MjEtMi42NjFhMy40NzYsMy40NzYsMCwwLDEsLjQ1Ny0xLjQxMSwyLjcwOSwyLjcwOSwwLDAsMSwuOTU5LS45ODEsMi4zNzEsMi4zNzEsMCwwLDEsMS4zLS4zMjcsMi4wMTgsMi4wMTgsMCwwLDEsMS4xNzIuMzYxLDIuMDA3LDIuMDA3LDAsMCwxLC43Mi45NjJBMy4wNTQsMy4wNTQsMCwwLDEtNTkuMzU4LTIuN2EzLjU0MSwzLjU0MSwwLDAsMS0uNDU3LDEuNDg0LDIuNywyLjcsMCwwLDEtLjk2Ny45ODlBMi40LDIuNCwwLDAsMS02Mi4wODcuMWEyLjAwOSwyLjAwOSwwLDAsMS0xLjE2NS0uMzU5LDIuMDE0LDIuMDE0LDAsMCwxLS43Mi0uOTU3LDMuMDE1LDMuMDE1LDAsMCwxLS4xNjYtMS4zNFptMS4xMzguNjY5YTEuNCwxLjQsMCwwLDAsLjI3MS44MjMuODY3Ljg2NywwLDAsMCwuNjg2LjMyNSwxLjIxNywxLjIxNywwLDAsMCwxLS40NTlBMi40MTUsMi40MTUsMCwwLDAtNjAuNTI1LTIuNmwuMDI5LS40NzlhMS42OTEsMS42OTEsMCwwLDAtLjI0OS0uOTgxLjg3NC44NzQsMCwwLDAtLjcyMy0uMzc2LDEuMjY1LDEuMjY1LDAsMCwwLTEuMTcyLjcyOCwyLjcxOCwyLjcxOCwwLDAsMC0uMzI3LDEuMDQ1QTQuMDg4LDQuMDg4LDAsMCwwLTYyLjk4Ni0xLjk5MlpNLTU3LjYsMGgtMS4xNTdsMS4zLTcuNUgtNTYuM1ptMS41NDgtMi42NDZhNC4xODUsNC4xODUsMCwwLDEsLjQzOS0xLjQ2NSwyLjQ4LDIuNDgsMCwwLDEsLjg0NS0uOTY5LDEuOTUxLDEuOTUxLDAsMCwxLDEuMTE4LS4zMDUsMS41NjEsMS41NjEsMCwwLDEsMS4yNi42bC41MDgtMi43MTVoMS4xNjJsLTEuMyw3LjVoLTEuMDM1bC4wNzgtLjU0N0ExLjg0MSwxLjg0MSwwLDAsMS01NC40MjYuMWExLjQ1MywxLjQ1MywwLDAsMS0xLjE3OS0uNTY5LDIuNDg0LDIuNDg0LDAsMCwxLS40NzYtMS40ODcsMy45NDgsMy45NDgsMCwwLDEsLjAxNS0uNTkxWm0xLjEyMy40NTRhMS42MjcsMS42MjcsMCwwLDAsLjE4OC45NjIuNzUxLjc1MSwwLDAsMCwuNjYyLjM2NiwxLjM1OSwxLjM1OSwwLDAsMCwxLjE1Ny0uNjQ5bC40LTIuMjcxYS45LjksMCwwLDAtLjg4OS0uNjMsMS4xODksMS4xODksMCwwLDAtMS4wNjkuNTg2QTMuMTIzLDMuMTIzLDAsMCwwLTU0LjkyOS0yLjE5MlptMTIuMzYzLS4xMjdhMi43NjEsMi43NjEsMCwwLDEtMSwxLjc3NSwzLDMsMCwwLDEtMiwuNjQyLDIuMzYsMi4zNiwwLDAsMS0xLjE4OS0uMzIyLDIuMDg1LDIuMDg1LDAsMCwxLS44LS45LDMuMzQ0LDMuMzQ0LDAsMCwxLS4zMjItMS4zMzEsNy4yLDcuMiwwLDAsMSwuMTM3LTEuNTE2QTQuNzg5LDQuNzg5LDAsMCwxLTQ3LjEtNS42ODhhMy4yMjQsMy4yMjQsMCwwLDEsMS4xNTctMS4xNDcsMi45NTEsMi45NTEsMCwwLDEsMS41MjYtLjM3MSwyLjI3MSwyLjI3MSwwLDAsMSwxLjY3Ny42NjcsMi42MTYsMi42MTYsMCwwLDEsLjY1NywxLjc4NWgtMS4yYTEuNzUyLDEuNzUyLDAsMCwwLS4zMi0xLjEsMS4xNCwxLjE0LDAsMCwwLS44NzYtLjM1NCwxLjY1LDEuNjUsMCwwLDAtMS4zMzMuNTcxLDMuMzQsMy4zNCwwLDAsMC0uNzIzLDEuNzMybC0uMS42NDktLjA0NC41YTIuOTQ0LDIuOTQ0LDAsMCwwLC4wNzEuOTQ0LDEuMjMxLDEuMjMxLDAsMCwwLC4zODguNjczLDEuMTMyLDEuMTMyLDAsMCwwLC43MDguMjQ2QTEuNjI4LDEuNjI4LDAsMCwwLTQzLjc1Ny0yLjMxWm0zLjIyMy00LjI0OC0uMjI1LDEuMjg0aC45bC0uMTUxLjg3OWgtLjkwOGwtLjUsMi45NTlhMS4wMTIsMS4wMTIsMCwwLDAsMCwuMjJxLjAyOS4zMTcuMzkxLjMzMmEyLjIwNiwyLjIwNiwwLDAsMCwuNDEtLjA0NEwtMzkuNS0uMDFhMi42NTMsMi42NTMsMCwwLDEtLjcyOC4xLDEuMDgsMS4wOCwwLDAsMS0uOTA2LS40MTMsMS40OTMsMS40OTMsMCwwLDEtLjIzNy0xLjA2N2wuNDkzLTMuMDE4aC0uODQ1bC4xNTYtLjg3OWguODRsLjIyNS0xLjI4NFpNLTM1LjItNC4yYTIuMTMyLDIuMTMyLDAsMCwwLS40NTQtLjA0OSwxLjM1NSwxLjM1NSwwLDAsMC0xLjIxMS42M0wtMzcuNSwwSC0zOC42NmwuOTEzLTUuMjgzLDEuMSwwLS4xMTcuNmExLjUxMiwxLjUxMiwwLDAsMSwxLjI1LS43LDEuOSwxLjksMCwwLDEsLjQ0NC4wNzNabTEuMjMsNC4yaC0xLjE1N2wxLjMtNy41aDEuMTU3Wm02LjksMGExLjU2NywxLjU2NywwLDAsMS0uMDQ5LS40OTNBMS45NTksMS45NTksMCwwLDEtMjguNTMzLjFhMS42MTgsMS42MTgsMCwwLDEtMS4xNC0uNDQyLDEuMzYzLDEuMzYzLDAsMCwxLS40MjItMS4xLDEuNjE4LDEuNjE4LDAsMCwxLC43MjMtMS4zMTMsMy4xNDYsMy4xNDYsMCwwLDEsMS44MzYtLjQ3OWwuNzUyLjAxLjA2OC0uMzYxYTEuMDksMS4wOSwwLDAsMCwwLS4zNTYuNjM2LjYzNiwwLDAsMC0uNy0uNTQyLDEuMDUzLDEuMDUzLDAsMCwwLS42NTIuMTg4LjgxMy44MTMsMCwwLDAtLjM0NC41M2wtMS4xNTcuMDFhMS40NDksMS40NDksMCwwLDEsLjM0Ny0uODU3LDIuMDU2LDIuMDU2LDAsMCwxLC44My0uNTc0LDIuODEsMi44MSwwLDAsMSwxLjA5NC0uMiwxLjg0OCwxLjg0OCwwLDAsMSwxLjM0OC41MiwxLjU0MSwxLjU0MSwwLDAsMSwuNCwxLjNsLS40MDUsMi40NzYtLjAzOS40MzlhMS41NjEsMS41NjEsMCwwLDAsLjA3My41NjJsMCwuMDg4Wm0tMS4xOTEtLjg1YTEuMjc2LDEuMjc2LDAsMCwwLC42NzktLjE2OCwxLjc4OCwxLjc4OCwwLDAsMCwuNTMyLS40NjFsLjE4MS0xLS41NTIsMGExLjkzOSwxLjkzOSwwLDAsMC0xLjA0NS4yNDcuOS45LDAsMCwwLS40NDQuNjc2LjYuNiwwLDAsMCwuMTQ0LjUxNUEuNy43LDAsMCwwLTI4LjI2NC0uODVabTUuMzM3LTQuNDM4LS4xMTcuNjJhMi4wMTYsMi4wMTYsMCwwLDEsMS41NjctLjcxMywxLjI3NywxLjI3NywwLDAsMSwxLjEuNTMsMi4xMTUsMi4xMTUsMCwwLDEsLjI2NCwxLjQzOEwtMjAuNjg2LDBoLTEuMTU3bC41NzYtMy40MjhhMS43NTQsMS43NTQsMCwwLDAsMC0uMzkxLjYyMy42MjMsMCwwLDAtLjY5My0uNiwxLjQwNywxLjQwNywwLDAsMC0xLjE1Ny42NDlMLTIzLjc3MiwwaC0xLjE1N2wuOTEzLTUuMjgzWm0zLjcxMSwyLjY0MmE0LjE4NSw0LjE4NSwwLDAsMSwuNDM5LTEuNDY1LDIuNDgsMi40OCwwLDAsMSwuODQ1LS45NjksMS45NTEsMS45NTEsMCwwLDEsMS4xMTgtLjMwNSwxLjU2MSwxLjU2MSwwLDAsMSwxLjI2LjZsLjUwOC0yLjcxNWgxLjE2MmwtMS4zLDcuNWgtMS4wMzVsLjA3OC0uNTQ3QTEuODQxLDEuODQxLDAsMCwxLTE3LjU5LjEsMS40NTMsMS40NTMsMCwwLDEtMTguNzctLjQ2NmEyLjQ4NCwyLjQ4NCwwLDAsMS0uNDc2LTEuNDg3LDMuOTQ4LDMuOTQ4LDAsMCwxLC4wMTUtLjU5MVptMS4xMjMuNDU0YTEuNjI3LDEuNjI3LDAsMCwwLC4xODguOTYyLjc1MS43NTEsMCwwLDAsLjY2Mi4zNjYsMS4zNTksMS4zNTksMCwwLDAsMS4xNTctLjY0OWwuNC0yLjI3MWEuOS45LDAsMCwwLS44ODktLjYzLDEuMTg5LDEuMTg5LDAsMCwwLTEuMDY5LjU4NkEzLjEyMywzLjEyMywwLDAsMC0xOC4wOTMtMi4xOTJabTEwLjY1NC4zMjdxLjEwNy0uNy0uNzY3LTEuMDQ1bC0uNC0uMTQ2YTMuNywzLjcsMCwwLDEtMS41NjctLjkxMywxLjYzMywxLjYzMywwLDAsMS0uNDItMS4yMjYsMS44NDMsMS44NDMsMCwwLDEsLjQxMy0xLjA2NywyLjQwNiwyLjQwNiwwLDAsMSwuOTg0LS43MSwzLjIyLDMuMjIsMCwwLDEsMS4zLS4yMzQsMi42LDIuNiwwLDAsMSwxLjE4Mi4yOTEsMS45MTIsMS45MTIsMCwwLDEsLjc5MS43NjcsMi4xMjMsMi4xMjMsMCwwLDEsLjI1NCwxLjEyMWwtMS4yLDBBMS4xMjcsMS4xMjcsMCwwLDAtNy4xMTQtNS45YTEuMTMzLDEuMTMzLDAsMCwwLS44NDctLjMyMiwxLjU3OCwxLjU3OCwwLDAsMC0uOTY0LjI2OSwxLjA3NCwxLjA3NCwwLDAsMC0uNDYxLjc1MnEtLjEuNjIuODMuOTc3bC4zNjYuMTMyYTMuNTU1LDMuNTU1LDAsMCwxLDEuNTYzLjk0LDEuNzM1LDEuNzM1LDAsMCwxLC4zOTEsMS4yNzcsMS45MjMsMS45MjMsMCwwLDEtLjQsMS4wNDcsMi4yMjEsMi4yMjEsMCwwLDEtLjk1OS42OTFBMy40OSwzLjQ5LDAsMCwxLTguOTQzLjEsMi44MDksMi44MDksMCwwLDEtMTAuMjEtLjJhMi4wNzUsMi4wNzUsMCwwLDEtLjg3Mi0uOCwyLjA3MSwyLjA3MSwwLDAsMS0uMjc4LTEuMTZsMS4yMDYsMGExLjEzMiwxLjEzMiwwLDAsMCwuMy45MzMsMS4zNjQsMS4zNjQsMCwwLDAsLjk2Ny4zMzcsMS42OSwxLjY5LDAsMCwwLC45NzktLjI0OUExLjA0NiwxLjA0NiwwLDAsMC03LjQzOS0xLjg2NVpNLTMuMjc0LS44NDVhMS4xMTEsMS4xMTEsMCwwLDAsLjczNS0uMjQyLDEuMTA5LDEuMTA5LDAsMCwwLC40MDgtLjY1N2wxLjA5NCwwQTEuODcsMS44NywwLDAsMS0xLjQxNi0uOGEyLjIsMi4yLDAsMCwxLS44MzMuNjY5QTIuMzEsMi4zMSwwLDAsMS0zLjMwOC4xLDEuOTksMS45OSwwLDAsMS00LjQ2NS0uMjU0YTEuOTQ0LDEuOTQ0LDAsMCwxLS43LS45NDVBMy4wMjMsMy4wMjMsMCwwLDEtNS4zMS0yLjU0NGwuMDE1LS4xNzFBMy40NTcsMy40NTcsMCwwLDEtNC44NDktNC4xYTIuNjA4LDIuNjA4LDAsMCwxLC45NC0uOTU5LDIuMzU0LDIuMzU0LDAsMCwxLDEuMjc5LS4zMTcsMS44NDgsMS44NDgsMCwwLDEsMS4zNzIuNTY5QTIuMDA5LDIuMDA5LDAsMCwxLS43NDUtMy4zODRILTEuODI5YTEuMTgxLDEuMTgxLDAsMCwwLS4yMjItLjc0Mi44MTMuODEzLDAsMCwwLS42NDItLjMwOCwxLjE3MiwxLjE3MiwwLDAsMC0xLjA2OS41NzYsMy4yMTYsMy4yMTYsMCwwLDAtLjQyLDEuNjhRLTQuMjE2LS44NjQtMy4yNzQtLjg0NVpNMy4wMDUtNC4yYTIuMTMyLDIuMTMyLDAsMCwwLS40NTQtLjA0OSwxLjM1NSwxLjM1NSwwLDAsMC0xLjIxMS42M0wuNzA2LDBILS40NTJMLjQ2MS01LjI4M2wxLjEsMC0uMTE3LjZhMS41MTIsMS41MTIsMCwwLDEsMS4yNS0uNywxLjksMS45LDAsMCwxLC40NDQuMDczWm0uMSwxLjUzOGEzLjQ3NiwzLjQ3NiwwLDAsMSwuNDU3LTEuNDExLDIuNzA5LDIuNzA5LDAsMCwxLC45NTktLjk4MSwyLjM3MSwyLjM3MSwwLDAsMSwxLjMtLjMyNywyLjAxOCwyLjAxOCwwLDAsMSwxLjE3Mi4zNjEsMi4wMDcsMi4wMDcsMCwwLDEsLjcyLjk2MkEzLjA1NCwzLjA1NCwwLDAsMSw3Ljg3NC0yLjdhMy41NDEsMy41NDEsMCwwLDEtLjQ1NywxLjQ4NCwyLjcsMi43LDAsMCwxLS45NjcuOTg5QTIuNCwyLjQsMCwwLDEsNS4xNDQuMSwyLjAwOSwyLjAwOSwwLDAsMSwzLjk3OS0uMjYxYTIuMDE0LDIuMDE0LDAsMCwxLS43Mi0uOTU3LDMuMDE1LDMuMDE1LDAsMCwxLS4xNjYtMS4zNFptMS4xMzguNjY5YTEuNCwxLjQsMCwwLDAsLjI3MS44MjNBLjg2Ny44NjcsMCwwLDAsNS4yLS44NDVhMS4yMTcsMS4yMTcsMCwwLDAsMS0uNDU5QTIuNDE1LDIuNDE1LDAsMCwwLDYuNzA3LTIuNmwuMDI5LS40NzlhMS42OTEsMS42OTEsMCwwLDAtLjI0OS0uOTgxLjg3NC44NzQsMCwwLDAtLjcyMy0uMzc2LDEuMjY1LDEuMjY1LDAsMCwwLTEuMTcyLjcyOCwyLjcxOCwyLjcxOCwwLDAsMC0uMzI3LDEuMDQ1QTQuMDg4LDQuMDg4LDAsMCwwLDQuMjQ2LTEuOTkyWk05LjYzMSwwSDguNDc0bDEuMy03LjVoMS4xNTdabTIuNTI0LDBIMTFsMS4zLTcuNWgxLjE1N1pNMTguOC03LjEwOWwxLjA0LDUuNDM5LDIuOTI1LTUuNDM5aDEuNTgyTDIzLjExMywwaC0xLjJsLjQxNS0yLjQwNy42My0yLjk2NEwyMC4wMjcsMGgtLjg2OUwxOC4wNjktNS41MzIsMTcuNjI1LTIuMjgsMTcuMjI5LDBoLTEuMmwxLjIzNS03LjEwOVptNS45MzgsNC40NDhhMy40NzYsMy40NzYsMCwwLDEsLjQ1Ny0xLjQxMSwyLjcwOSwyLjcwOSwwLDAsMSwuOTU5LS45ODEsMi4zNzEsMi4zNzEsMCwwLDEsMS4zLS4zMjcsMi4wMTgsMi4wMTgsMCwwLDEsMS4xNzIuMzYxLDIuMDA3LDIuMDA3LDAsMCwxLC43Mi45NjJBMy4wNTQsMy4wNTQsMCwwLDEsMjkuNS0yLjdhMy41NDEsMy41NDEsMCwwLDEtLjQ1NywxLjQ4NCwyLjcsMi43LDAsMCwxLS45NjcuOTg5QTIuNCwyLjQsMCwwLDEsMjYuNzcuMWEyLjAwOSwyLjAwOSwwLDAsMS0xLjE2NS0uMzU5LDIuMDE0LDIuMDE0LDAsMCwxLS43Mi0uOTU3LDMuMDE1LDMuMDE1LDAsMCwxLS4xNjYtMS4zNFptMS4xMzguNjY5YTEuNCwxLjQsMCwwLDAsLjI3MS44MjMuODY3Ljg2NywwLDAsMCwuNjg2LjMyNSwxLjIxNywxLjIxNywwLDAsMCwxLS40NTlBMi40MTUsMi40MTUsMCwwLDAsMjguMzMzLTIuNmwuMDI5LS40NzlhMS42OTEsMS42OTEsMCwwLDAtLjI0OS0uOTgxLjg3NC44NzQsMCwwLDAtLjcyMy0uMzc2LDEuMjY1LDEuMjY1LDAsMCwwLTEuMTcyLjcyOCwyLjcxOCwyLjcxOCwwLDAsMC0uMzI3LDEuMDQ1QTQuMDg4LDQuMDg4LDAsMCwwLDI1Ljg3Mi0xLjk5MlptNy40MjIsMS40N2ExLjkxNiwxLjkxNiwwLDAsMS0xLjUuNjIsMS40NzIsMS40NzIsMCwwLDEtLjg1Mi0uMjU0LDEuMzIxLDEuMzIxLDAsMCwxLS40ODMtLjY4MSwyLjQ5NCwyLjQ5NCwwLDAsMS0uMDg1LTEuMDI4bC41NzEtMy40MThIMzIuMWwtLjU3NiwzLjQzM2ExLjgyLDEuODIsMCwwLDAsMCwuMzUyLjU5NC41OTQsMCwwLDAsLjYxLjYzLDEuNCwxLjQsMCwwLDAsMS4yNC0uNjE1bC42NjQtMy44aDEuMTU3TDM0LjI3NSwwSDMzLjE5MVptNS4zMzItLjk0MnEuMDgzLS40ODMtLjYyNy0uNjcxYTcuOTc3LDcuOTc3LDAsMCwxLS45NjktLjMsMS4zMzYsMS4zMzYsMCwwLDEtLjk3Mi0xLjMwOUExLjQ4NiwxLjQ4NiwwLDAsMSwzNi43LTQuOTI0LDIuMzcxLDIuMzcxLDAsMCwxLDM4LjItNS4zODFhMi4wNDEsMi4wNDEsMCwwLDEsMS4zNy40NzQsMS41MSwxLjUxLDAsMCwxLC41MiwxLjIxNmwtMS4xNDcsMGEuNzQxLjc0MSwwLDAsMC0uMi0uNTc0LjgxNy44MTcsMCwwLDAtLjU3Ni0uMjE3LDEuMTM2LDEuMTM2LDAsMCwwLS42NjIuMTkuNzEuNzEsMCwwLDAtLjMyLjVxLS4wNjguNDQ0LjYyNS42MThhNi44Niw2Ljg2LDAsMCwxLDEuMDI1LjMyLDEuMzM3LDEuMzM3LDAsMCwxLC45MzMsMS4zMjgsMS40NiwxLjQ2LDAsMCwxLS4zMy44NzYsMS45MjMsMS45MjMsMCwwLDEtLjgxOC41NzFBMi44LDIuOCwwLDAsMSwzNy41MjcuMWEyLjE0OCwyLjE0OCwwLDAsMS0xLjQzMy0uNSwxLjU3LDEuNTcsMCwwLDEtLjU1OS0xLjI2NWwxLjExOCwwYS44NTEuODUxLDAsMCwwLC4yNTQuNjQ1Ljk4MS45ODEsMCwwLDAsLjY2OS4yMjUsMS4zMjgsMS4zMjgsMCwwLDAsLjcxNS0uMTc4QS42ODQuNjg0LDAsMCwwLDM4LjYyNS0xLjQ2NVpNNDIuOTEzLjFhMi4yMTMsMi4yMTMsMCwwLDEtMS4xOTQtLjM0NywxLjk3MiwxLjk3MiwwLDAsMS0uNzQ3LS45MDgsMi43LDIuNywwLDAsMS0uMTgzLTEuMjg0bC4wMTUtLjJhMy41MzYsMy41MzYsMCwwLDEsLjQ3MS0xLjQ0OCwyLjY4OSwyLjY4OSwwLDAsMSwuOTU1LS45NzQsMi4zMjEsMi4zMjEsMCwwLDEsMS4yNC0uMzE3LDEuNzMxLDEuNzMxLDAsMCwxLDEuNDg3LjczOCwyLjcxMSwyLjcxMSwwLDAsMSwuMzc0LDEuODczbC0uMDY4LjUwOUg0MS45MzZhMS40MzUsMS40MzUsMCwwLDAsLjI1NCwxLjAxMiwxLjAwNiwxLjAwNiwwLDAsMCwuODIuMzk0QTEuNzgsMS43OCwwLDAsMCw0NC4zODctMS41bC41ODYuNjE1YTIuMjI3LDIuMjI3LDAsMCwxLS44NzQuNzM1QTIuNiwyLjYsMCwwLDEsNDIuOTEzLjFabS40OTMtNC41MzFxLS45MTgtLjAyOS0xLjM3NywxLjNsMi4xOTIsMCwuMDItLjFhMS41MzIsMS41MzIsMCwwLDAsMC0uNDM5LjkuOSwwLDAsMC0uMjczLS41NDdBLjg2Ni44NjYsMCwwLDAsNDMuNDA2LTQuNDM0Wm03LjEzOSwyLjc4OCwxLjQ1LTMuNjM4aDEuMTYyTDUwLjg0MiwwSDQ5Ljg5bC0uNDY0LTMuNjEzTDQ3LjcxNywwSDQ2Ljc2bC0uNDgzLTUuMjgzaDEuMDk0bC4yLDMuNTg0LDEuNjctMy41ODRoLjg3NFpNNTQuOTM5LTQuN2ExLjk1MywxLjk1MywwLDAsMSwxLjUtLjY3NCwxLjI4OSwxLjI4OSwwLDAsMSwxLjExNi41MzJBMi4xMTMsMi4xMTMsMCwwLDEsNTcuODI1LTMuNEw1Ny4yNTgsMEg1Ni4xbC41NzYtMy40MTNhMS45OTQsMS45OTQsMCwwLDAsLjAxLS4zOTEuNjMzLjYzMywwLDAsMC0uNy0uNjEsMS40MjcsMS40MjcsMCwwLDAtMS4xNTIuNjM1TDU0LjE3MiwwSDUzLjAxNWwxLjMtNy41aDEuMTYyWk02MC44NTcuMWEyLjIxMywyLjIxMywwLDAsMS0xLjE5NC0uMzQ3LDEuOTcyLDEuOTcyLDAsMCwxLS43NDctLjkwOCwyLjcsMi43LDAsMCwxLS4xODMtMS4yODRsLjAxNS0uMmEzLjUzNiwzLjUzNiwwLDAsMSwuNDcxLTEuNDQ4LDIuNjg5LDIuNjg5LDAsMCwxLC45NTUtLjk3NCwyLjMyMSwyLjMyMSwwLDAsMSwxLjI0LS4zMTcsMS43MzEsMS43MzEsMCwwLDEsMS40ODcuNzM4LDIuNzExLDIuNzExLDAsMCwxLC4zNzQsMS44NzNsLS4wNjguNTA5SDU5Ljg4YTEuNDM1LDEuNDM1LDAsMCwwLC4yNTQsMS4wMTIsMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAsNjIuMzMyLTEuNWwuNTg2LjYxNWEyLjIyNywyLjIyNywwLDAsMS0uODc0LjczNUEyLjYsMi42LDAsMCwxLDYwLjg1Ny4xWm0uNDkzLTQuNTMxcS0uOTE4LS4wMjktMS4zNzcsMS4zbDIuMTkyLDAsLjAyLS4xYTEuNTMyLDEuNTMyLDAsMCwwLDAtLjQzOS45LjksMCwwLDAtLjI3My0uNTQ3QS44NjYuODY2LDAsMCwwLDYxLjM1LTQuNDM0Wk02Ni4xMTEuMWEyLjIxMywyLjIxMywwLDAsMS0xLjE5NC0uMzQ3LDEuOTcyLDEuOTcyLDAsMCwxLS43NDctLjkwOCwyLjcsMi43LDAsMCwxLS4xODMtMS4yODRsLjAxNS0uMmEzLjUzNiwzLjUzNiwwLDAsMSwuNDcxLTEuNDQ4LDIuNjg5LDIuNjg5LDAsMCwxLC45NTUtLjk3NCwyLjMyMSwyLjMyMSwwLDAsMSwxLjI0LS4zMTcsMS43MzEsMS43MzEsMCwwLDEsMS40ODcuNzM4LDIuNzExLDIuNzExLDAsMCwxLC4zNzQsMS44NzNsLS4wNjguNTA5SDY1LjEzNGExLjQzNSwxLjQzNSwwLDAsMCwuMjU0LDEuMDEyLDEuMDA2LDEuMDA2LDAsMCwwLC44Mi4zOTRBMS43OCwxLjc4LDAsMCwwLDY3LjU4NS0xLjVsLjU4Ni42MTVhMi4yMjcsMi4yMjcsMCwwLDEtLjg3NC43MzVBMi42LDIuNiwwLDAsMSw2Ni4xMTEuMVpNNjYuNi00LjQzNHEtLjkxOC0uMDI5LTEuMzc3LDEuM2wyLjE5MiwwLC4wMi0uMWExLjUzMiwxLjUzMiwwLDAsMCwwLS40MzkuOS45LDAsMCwwLS4yNzMtLjU0N0EuODY2Ljg2NiwwLDAsMCw2Ni42LTQuNDM0Wk03MC4yLDBINjkuMDQ1bDEuMy03LjVoMS4xNTdaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3MTMgNzc3KSIgZmlsbD0iIzA1MGMxYSIvPg0KICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtMzAiIGRhdGEtbmFtZT0iTGFiZWwtV2VsY29tZSIgZD0iTS02LjgtMi41MDZILTkuMjU0bC4xNjgtLjk0M2gyLjQ1OFpNLTMuNDQ4LjFhMi4zNzMsMi4zNzMsMCwwLDEtMS4yLS4zMjcsMi4xLDIuMSwwLDAsMS0uODA2LS45MDcsMy40NiwzLjQ2LDAsMCwxLS4zMjctMS4zNDksNi4yLDYuMiwwLDAsMSwuMTA4LTEuNCw0LjcyOCw0LjcyOCwwLDAsMSwuNTA1LTEuNDY1QTMuNjgxLDMuNjgxLDAsMCwxLTQuMy02LjQzNSwyLjg2LDIuODYsMCwwLDEtMi4zNzYtNy4xYTIuMTYxLDIuMTYxLDAsMCwxLDEuNjU3LjcxN0EyLjk2OCwyLjk2OCwwLDAsMS0uMDQzLTQuNSw2LjIsNi4yLDAsMCwxLS4xNTItMy4xMjksNC45Niw0Ljk2LDAsMCwxLS42MjMtMS43MWEzLjYyMSwzLjYyMSwwLDAsMS0uODMsMS4wOEEyLjgzOCwyLjgzOCwwLDAsMS0zLjQ0OC4xWk0tMS4yNi0zLjY4OWwuMDQzLS41MWEzLjA1NSwzLjA1NSwwLDAsMC0uMDkxLS45NjksMS4yNzIsMS4yNzIsMCwwLDAtLjQwNi0uNjc4LDEuMTcyLDEuMTcyLDAsMCwwLS43MjQtLjI0OCwxLjYyNiwxLjYyNiwwLDAsMC0xLjA3NS4zNDEsMi41LDIuNSwwLDAsMC0uNzYsMS4xLDUuNzQ1LDUuNzQ1LDAsMCwwLS4zMzksMS44NDcsMi4zNDIsMi4zNDIsMCwwLDAsLjI2OSwxLjM4NUExLjA5MywxLjA5MywwLDAsMC0zLjM5MS0uOWExLjY0NCwxLjY0NCwwLDAsMCwxLjM3My0uNjI1LDMuNiwzLjYsMCwwLDAsLjcwOS0xLjgyOFptNC43NjEsMUgyLjE2NEwxLjY5MywwSC41MDVMMS43MjItNywzLjkyOS03YTIuNTE1LDIuNTE1LDAsMCwxLDEuNzQ2LjU0OUExLjc0MywxLjc0MywwLDAsMSw2LjItNC45MjNhMi4xLDIuMSwwLDAsMS0uNDUyLDEuMTc3LDIuNjMxLDIuNjMxLDAsMCwxLTEuMTIxLjc4Mkw1LjY2MS0uMDcybDAsLjA3Mkg0LjRaTTIuMzI4LTMuNjc1bDEuMTQ5LjAxQTEuNjM0LDEuNjM0LDAsMCwwLDQuNTE0LTMuOTksMS4yOCwxLjI4LDAsMCwwLDUtNC44NzJhLjk5Mi45OTIsMCwwLDAtLjE5Mi0uODM0LDEuMDg4LDEuMDg4LDAsMCwwLS44LS4zMWwtMS4yNywwWk05LjA0Ny0yLjUwNkg2LjU4OWwuMTY4LS45NDNIOS4yMTVaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MTggNzIxKSIgZmlsbD0iIzA1MGMxYSIvPg0KICAgICAgPGcgaWQ9Ikdyb3VwXzQ1MzIiIGRhdGEtbmFtZT0iR3JvdXAgNDUzMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAzKSI+DQogICAgICAgIDxwYXRoIGlkPSJMYWJlbC1XZWxjb21lLTMxIiBkYXRhLW5hbWU9IkxhYmVsLVdlbGNvbWUiIGQ9Ik0tOC45NDYtMi45NjhoLTIuNzMyTC0xMi4xOTIsMEgtMTMuMzhsMS4yMTItN0gtNy44NGwtLjE3My45ODFoLTMuMTM2bC0uMzYxLDIuMDgzaDIuNzM3Wk0tNS4yNjYsMGExLjU0NCwxLjU0NCwwLDAsMS0uMDQ4LS40ODZBMS45MywxLjkzLDAsMCwxLTYuNy4xLDEuNTk0LDEuNTk0LDAsMCwxLTcuODI4LS4zMzlhMS4zNDIsMS4zNDIsMCwwLDEtLjQxNi0xLjA4LDEuNTk0LDEuNTk0LDAsMCwxLC43MTItMS4yOTQsMy4xLDMuMSwwLDAsMSwxLjgwOC0uNDcxbC43NDEuMDEuMDY3LS4zNTZhMS4wNzQsMS4wNzQsMCwwLDAsMC0uMzUxQS42MjYuNjI2LDAsMCwwLTUuNi00LjQxNWExLjAzNywxLjAzNywwLDAsMC0uNjQyLjE4NS44LjgsMCwwLDAtLjMzOS41MjJsLTEuMTQuMDFhMS40MjcsMS40MjcsMCwwLDEsLjM0MS0uODQ0LDIuMDI1LDIuMDI1LDAsMCwxLC44MTgtLjU2NUEyLjc2OCwyLjc2OCwwLDAsMS01LjQ4OC01LjNhMS44MiwxLjgyLDAsMCwxLDEuMzI3LjUxMiwxLjUxOCwxLjUxOCwwLDAsMSwuMzk0LDEuMjc3bC0uNCwyLjQzOEwtNC4yLS42NGExLjUzOCwxLjUzOCwwLDAsMCwuMDcyLjU1M2wwLC4wODdaTS02LjQ0LS44MzdBMS4yNTcsMS4yNTcsMCwwLDAtNS43NzEtMWExLjc2MiwxLjc2MiwwLDAsMCwuNTI0LS40NTVsLjE3OC0uOTg2LS41NDMsMGExLjkxLDEuOTEsMCwwLDAtMS4wMjkuMjQzLjg5MS44OTEsMCwwLDAtLjQzOC42NjYuNTg5LjU4OSwwLDAsMCwuMTQyLjUwN0EuNjk0LjY5NCwwLDAsMC02LjQ0LS44MzdabTYuNDExLS42MDZRLjA1My0xLjkxOS0uNjQ3LTIuMUE3Ljg1Nyw3Ljg1NywwLDAsMS0xLjYtMi40YTEuMzE2LDEuMzE2LDAsMCwxLS45NTctMS4yODlBMS40NjQsMS40NjQsMCwwLDEtMS45MjEtNC44NSwyLjMzNSwyLjMzNSwwLDAsMS0uNDUyLTUuMywyLjAxMSwyLjAxMSwwLDAsMSwuOS00LjgzNGExLjQ4OCwxLjQ4OCwwLDAsMSwuNTEyLDEuMmwtMS4xMywwYS43My43MywwLDAsMC0uMi0uNTY1QS44LjgsMCwwLDAtLjQ4Ni00LjQyYTEuMTE5LDEuMTE5LDAsMCwwLS42NTIuMTg4LjcuNywwLDAsMC0uMzE1LjQ5MXEtLjA2Ny40MzguNjE2LjYwOGE2Ljc1Nyw2Ljc1NywwLDAsMSwxLjAxLjMxNUExLjMxNywxLjMxNywwLDAsMSwxLjA5Mi0xLjUxYTEuNDM4LDEuNDM4LDAsMCwxLS4zMjUuODYzLDEuODk0LDEuODk0LDAsMCwxLS44MDYuNTYzQTIuNzU2LDIuNzU2LDAsMCwxLTEuMTExLjEsMi4xMTYsMi4xMTYsMCwwLDEtMi41MjMtLjRhMS41NDYsMS41NDYsMCwwLDEtLjU1MS0xLjI0NmwxLjEsMGEuODM4LjgzOCwwLDAsMCwuMjUuNjM1Ljk2Ni45NjYsMCwwLDAsLjY1OS4yMjEsMS4zMDksMS4zMDksMCwwLDAsLjctLjE3NkEuNjczLjY3MywwLDAsMC0uMDI5LTEuNDQzWm00LjQyLTUuMDI2TDQuMTctNS4yaC44OWwtLjE0OS44NjZINC4wMTZMMy41MjUtMS40MjRhMSwxLDAsMCwwLDAsLjIxNnEuMDI5LjMxMy4zODUuMzI3YTIuMTczLDIuMTczLDAsMCwwLC40LS4wNDNMNC4yMzItLjAxYTIuNjEzLDIuNjEzLDAsMCwxLS43MTcuMSwxLjA2NCwxLjA2NCwwLDAsMS0uODkyLS40MDZBMS40NzEsMS40NzEsMCwwLDEsMi4zOS0xLjM2NmwuNDg2LTIuOTcySDIuMDQ0TDIuMi01LjJoLjgyN2wuMjIxLTEuMjY1Wk03LjQyMS4xQTIuMTgsMi4xOCwwLDAsMSw2LjI0NS0uMjQ1YTEuOTQzLDEuOTQzLDAsMCwxLS43MzYtLjg5NUEyLjY1OSwyLjY1OSwwLDAsMSw1LjMyOS0yLjRsLjAxNC0uMmEzLjQ4MywzLjQ4MywwLDAsMSwuNDY0LTEuNDI2LDIuNjQ4LDIuNjQ4LDAsMCwxLC45NC0uOTZBMi4yODYsMi4yODYsMCwwLDEsNy45NjktNS4zYTEuNywxLjcsMCwwLDEsMS40NjUuNzI3QTIuNjcsMi42NywwLDAsMSw5LjgtMi43MjhsLS4wNjcuNUg2LjQ1OWExLjQxNCwxLjQxNCwwLDAsMCwuMjUsMSwuOTkxLjk5MSwwLDAsMCwuODA4LjM4OCwxLjc1MywxLjc1MywwLDAsMCwxLjM1Ni0uNjRsLjU3Ny42MDZhMi4xOTQsMi4xOTQsMCwwLDEtLjg2MS43MjRBMi41NjQsMi41NjQsMCwwLDEsNy40MjEuMVptLjQ4Ni00LjQ2M1E3LTQuNCw2LjU1MS0zLjA4OGwyLjE1OSwwLC4wMTktLjFhMS41MDksMS41MDksMCwwLDAsMC0uNDMzLjg4NS44ODUsMCwwLDAtLjI2OS0uNTM5QS44NTMuODUzLDAsMCwwLDcuOTA3LTQuMzY3Wm01LjczOC4yMzFhMi4xLDIuMSwwLDAsMC0uNDQ3LS4wNDhBMS4zMzUsMS4zMzUsMCwwLDAsMTItMy41NjRMMTEuMzc5LDBIMTAuMjRsLjktNS4yLDEuMDgyLDAtLjExNS41OTJhMS40ODksMS40ODksMCwwLDEsMS4yMzEtLjY5MywxLjg3MSwxLjg3MSwwLDAsMSwuNDM4LjA3MloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDg2MCA3MTgpIiBmaWxsPSIjMDUwYzFhIi8+DQogICAgICAgIDxwYXRoIGlkPSJMYWJlbC1XZWxjb21lLTMyIiBkYXRhLW5hbWU9IkxhYmVsLVdlbGNvbWUiIGQ9Ik0tMTAuNy0xLjgzN3EuMTA2LS42OTMtLjc1NS0xLjAyOWwtLjM5LS4xNDRhMy42NCwzLjY0LDAsMCwxLTEuNTQ0LS45QTEuNjA5LDEuNjA5LDAsMCwxLTEzLjgtNS4xMTdhMS44MTYsMS44MTYsMCwwLDEsLjQwNi0xLjA1MSwyLjM3LDIuMzcsMCwwLDEsLjk2OS0uN0EzLjE3MiwzLjE3MiwwLDAsMS0xMS4xNDYtNy4xYTIuNTU5LDIuNTU5LDAsMCwxLDEuMTY0LjI4NiwxLjg4MywxLjg4MywwLDAsMSwuNzc5Ljc1NSwyLjA5MiwyLjA5MiwwLDAsMSwuMjUsMS4xbC0xLjE4MywwYTEuMTEsMS4xMSwwLDAsMC0uMjQzLS44NTEsMS4xMTYsMS4xMTYsMCwwLDAtLjgzNC0uMzE3LDEuNTU0LDEuNTU0LDAsMCwwLS45NS4yNjUsMS4wNTgsMS4wNTgsMCwwLDAtLjQ1NS43NDFxLS4xLjYxMS44MTguOTYybC4zNjEuMTNBMy41LDMuNSwwLDAsMS05LjktMy4xYTEuNzA5LDEuNzA5LDAsMCwxLC4zODUsMS4yNTgsMS44OTQsMS44OTQsMCwwLDEtLjM5LDEuMDMyLDIuMTg4LDIuMTg4LDAsMCwxLS45NDUuNjgxQTMuNDM3LDMuNDM3LDAsMCwxLTEyLjE4LjFhMi43NjYsMi43NjYsMCwwLDEtMS4yNDgtLjI4OSwyLjA0NCwyLjA0NCwwLDAsMS0uODU5LS43ODYsMi4wNCwyLjA0LDAsMCwxLS4yNzQtMS4xNDJsMS4xODgsMGExLjExNSwxLjExNSwwLDAsMCwuMjkzLjkxOSwxLjM0MywxLjM0MywwLDAsMCwuOTUyLjMzMiwxLjY2NSwxLjY2NSwwLDAsMCwuOTY0LS4yNDVBMS4wMywxLjAzLDAsMCwwLTEwLjctMS44MzdaTS03LjY1NCwwaC0xLjE0TC03LjUxLTcuMzg4aDEuMTRabTEuNTQ5LTIuNjIxYTMuNDI0LDMuNDI0LDAsMCwxLC40NS0xLjM5LDIuNjY5LDIuNjY5LDAsMCwxLC45NDUtLjk2N0EyLjMzNSwyLjMzNSwwLDAsMS0zLjQzMi01LjNhMS45ODgsMS45ODgsMCwwLDEsMS4xNTQuMzU2QTEuOTc2LDEuOTc2LDAsMCwxLTEuNTY4LTQsMy4wMDgsMy4wMDgsMCwwLDEtMS40MTItMi42NiwzLjQ4OCwzLjQ4OCwwLDAsMS0xLjg2MS0xLjJhMi42NTksMi42NTksMCwwLDEtLjk1Mi45NzRBMi4zNjksMi4zNjksMCwwLDEtNC4xLjEsMS45NzgsMS45NzgsMCwwLDEtNS4yNDctLjI1NywxLjk4MywxLjk4MywwLDAsMS01Ljk1Ny0xLjIsMi45NywyLjk3LDAsMCwxLTYuMTItMi41MlptMS4xMjEuNjU5YTEuMzc0LDEuMzc0LDAsMCwwLC4yNjcuODEuODU0Ljg1NCwwLDAsMCwuNjc2LjMyLDEuMiwxLjIsMCwwLDAsLjk4NC0uNDUyLDIuMzc4LDIuMzc4LDAsMCwwLC41LTEuMjc1bC4wMjktLjQ3MUExLjY2NSwxLjY2NSwwLDAsMC0yLjc3OC00YS44NjEuODYxLDAsMCwwLS43MTItLjM3LDEuMjQ2LDEuMjQ2LDAsMCwwLTEuMTU0LjcxNywyLjY3NywyLjY3NywwLDAsMC0uMzIyLDEuMDI5QTQuMDI3LDQuMDI3LDAsMCwwLTQuOTg1LTEuOTYyWm04Ljc5Mi4zNDFMNS4yMzUtNS4ySDYuMzhMNC4xLDBIMy4xNjJMMi43MDUtMy41NTksMS4wMjIsMEguMDc5TC0uNC01LjJILjY4MWwuMiwzLjUzTDIuNTIzLTUuMmguODYxWk04LjYxMi4xQTIuMTgsMi4xOCwwLDAsMSw3LjQzNi0uMjQ1LDEuOTQzLDEuOTQzLDAsMCwxLDYuNy0xLjE0LDIuNjU5LDIuNjU5LDAsMCwxLDYuNTE5LTIuNGwuMDE0LS4yQTMuNDgzLDMuNDgzLDAsMCwxLDctNC4wMjhhMi42NDgsMi42NDgsMCwwLDEsLjk0LS45NkEyLjI4NiwyLjI4NiwwLDAsMSw5LjE2LTUuM2ExLjcsMS43LDAsMCwxLDEuNDY1LjcyNywyLjY3LDIuNjcsMCwwLDEsLjM2OCwxLjg0NWwtLjA2Ny41SDcuNjVhMS40MTQsMS40MTQsMCwwLDAsLjI1LDEsLjk5MS45OTEsMCwwLDAsLjgwOC4zODgsMS43NTMsMS43NTMsMCwwLDAsMS4zNTYtLjY0bC41NzcuNjA2YTIuMTk0LDIuMTk0LDAsMCwxLS44NjEuNzI0QTIuNTY0LDIuNTY0LDAsMCwxLDguNjEyLjFaTTkuMS00LjM2N3EtLjktLjAyOS0xLjM1NiwxLjI3OWwyLjE1OSwwLC4wMTktLjFhMS41MDksMS41MDksMCwwLDAsMC0uNDMzLjg4NS44ODUsMCwwLDAtLjI2OS0uNTM5QS44NTMuODUzLDAsMCwwLDkuMS00LjM2N1ptNS43MzguMjMxYTIuMSwyLjEsMCwwLDAtLjQ0Ny0uMDQ4LDEuMzM1LDEuMzM1LDAsMCwwLTEuMTkzLjYyTDEyLjU3LDBIMTEuNDNsLjktNS4yLDEuMDgyLDAtLjExNS41OTJhMS40ODksMS40ODksMCwwLDEsMS4yMzEtLjY5MywxLjg3MSwxLjg3MSwwLDAsMSwuNDM4LjA3MloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDg2MCA3NzIpIiBmaWxsPSIjMDUwYzFhIi8+DQogICAgICAgIDxnIGlkPSJTcXVhcmUtMTAiIGRhdGEtbmFtZT0iU3F1YXJlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4NDQgNzI4KSI+DQogICAgICAgICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgLTY2MSwgLTkxKSIgZmlsdGVyPSJ1cmwoI1BhdGhfOTE0LTE0KSI+DQogICAgICAgICAgICA8cGF0aCBpZD0iUGF0aF85MTQtMjkiIGRhdGEtbmFtZT0iUGF0aCA5MTQiIGQ9Ik0yLDBIMzBhMi4xNzUsMi4xNzUsMCwwLDEsMS41LjY3M0EyLjQwOCwyLjQwOCwwLDAsMSwzMS43NjUsMlYzMEExLjY0LDEuNjQsMCwwLDEsMzAsMzEuNzg5bC0yOC4wMzEuMTQ5YTIuMiwyLjIsMCwwLDEtMS4zOTEtLjU3OEExLjY1NiwxLjY1NiwwLDAsMSwwLDMwVjJBMiwyLDAsMCwxLDIsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY2MSA5MSkiIGZpbGw9IiM0YTRhNGEiLz4NCiAgICAgICAgICA8L2c+DQogICAgICAgICAgPGcgaWQ9Ik1hc2tfR3JvdXBfMy0xNCIgZGF0YS1uYW1lPSJNYXNrIEdyb3VwIDMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC02OTEgLTY1MCkiIGNsaXAtcGF0aD0idXJsKCNjbGlwLXBhdGgtNCkiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE1LTE0IiBkYXRhLW5hbWU9IlBhdGggOTE1IiBkPSJNMiwwSDMwYTIsMiwwLDAsMSwyLDJWMzBhMiwyLDAsMCwxLTIsMkgyYTIsMiwwLDAsMS0yLTJWMkEyLDIsMCwwLDEsMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjkxIDY1MCkiIGZpbGw9IiMyMTIxMjEiLz4NCiAgICAgICAgICA8L2c+DQogICAgICAgICAgPHBhdGggaWQ9IlBhdGhfOTE2LTE0IiBkYXRhLW5hbWU9IlBhdGggOTE2IiBkPSJNMS45NjQsMEgyNS41MzZBMS45NjQsMS45NjQsMCwwLDEsMjcuNSwxLjk2NFYyNS41MzZBMS45NjQsMS45NjQsMCwwLDEsMjUuNTM2LDI3LjVIMS45NjRBMS45NjQsMS45NjQsMCwwLDEsMCwyNS41MzZWMS45NjRBMS45NjQsMS45NjQsMCwwLDEsMS45NjQsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiIGZpbGw9InVybCgjbGluZWFyLWdyYWRpZW50LTcpIi8+DQogICAgICAgICAgPHBhdGggaWQ9IlBhdGhfMTU1MzkiIGRhdGEtbmFtZT0iUGF0aCAxNTUzOSIgZD0iTTEyLjE4OCwxMC4xMDloMy42MjV2MS4zMjhIMTIuMTg4WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiA0LjUpIiBmaWxsPSIjZmZmIi8+DQogICAgICAgIDwvZz4NCiAgICAgICAgPGcgaWQ9IlNxdWFyZS0xMSIgZGF0YS1uYW1lPSJTcXVhcmUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDg0NCA2NzQpIj4NCiAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLCAwLCAwLCAxLCAtNjYxLCAtMzcpIiBmaWx0ZXI9InVybCgjUGF0aF85MTQtMTUpIj4NCiAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoXzkxNC0zMCIgZGF0YS1uYW1lPSJQYXRoIDkxNCIgZD0iTTIsMEgzMGEyLjE3NSwyLjE3NSwwLDAsMSwxLjUuNjczQTIuNDA4LDIuNDA4LDAsMCwxLDMxLjc2NSwyVjMwQTEuNjQsMS42NCwwLDAsMSwzMCwzMS43ODlsLTI4LjAzMS4xNDlhMi4yLDIuMiwwLDAsMS0xLjM5MS0uNTc4QTEuNjU2LDEuNjU2LDAsMCwxLDAsMzBWMkEyLDIsMCwwLDEsMiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjYxIDM3KSIgZmlsbD0iIzRhNGE0YSIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8ZyBpZD0iTWFza19Hcm91cF8zLTE1IiBkYXRhLW5hbWU9Ik1hc2sgR3JvdXAgMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTY5MSAtNjUwKSIgY2xpcC1wYXRoPSJ1cmwoI2NsaXAtcGF0aC00KSI+DQogICAgICAgICAgICA8cGF0aCBpZD0iUGF0aF85MTUtMTUiIGRhdGEtbmFtZT0iUGF0aCA5MTUiIGQ9Ik0yLDBIMzBhMiwyLDAsMCwxLDIsMlYzMGEyLDIsMCwwLDEtMiwySDJhMiwyLDAsMCwxLTItMlYyQTIsMiwwLDAsMSwyLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2OTEgNjUwKSIgZmlsbD0iIzIxMjEyMSIvPg0KICAgICAgICAgIDwvZz4NCiAgICAgICAgICA8cGF0aCBpZD0iUGF0aF85MTYtMTUiIGRhdGEtbmFtZT0iUGF0aCA5MTYiIGQ9Ik0xLjk2NCwwSDI1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSwyNy41LDEuOTY0VjI1LjUzNkExLjk2NCwxLjk2NCwwLDAsMSwyNS41MzYsMjcuNUgxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwwLDI1LjUzNlYxLjk2NEExLjk2NCwxLjk2NCwwLDAsMSwxLjk2NCwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQtNykiLz4NCiAgICAgICAgICA8cGF0aCBpZD0iUGF0aF8xNTU0MCIgZGF0YS1uYW1lPSJQYXRoIDE1NTQwIiBkPSJNOS43MzQsOC4zMmgzLjcyN1Y0LjU3OGgxLjAyM1Y4LjMySDE4LjI1VjkuMzQ0SDE0LjQ4NHYzLjcxMUgxMy40NjFWOS4zNDRIOS43MzRaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDYuNSkiIGZpbGw9IiNmZmYiLz4NCiAgICAgICAgPC9nPg0KICAgICAgPC9nPg0KICAgIDwvZz4NCiAgICA8ZyBpZD0iR3JvdXBfMzUyNSIgZGF0YS1uYW1lPSJHcm91cCAzNTI1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyODMgLTI2MikiPg0KICAgICAgPGcgaWQ9IkNvbnRhaW5lci03IiBkYXRhLW5hbWU9IkNvbnRhaW5lciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjE1IDY0MCkiPg0KICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlXzE2OTU3LTciIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDE2OTU3IiB3aWR0aD0iMTA0IiBoZWlnaHQ9IjE2MCIgcng9IjQiIGZpbGw9IiNmNmY2ZjYiLz4NCiAgICAgICAgPHBhdGggaWQ9IkxhYmVsLVdlbGNvbWUtMzMiIGRhdGEtbmFtZT0iTGFiZWwtV2VsY29tZSIgZD0iTTIuNDYxLTEuMzE4aDMuNFYwSC4zMjJWLS45TDMuNzExLTUuNzg2SC4zVi03LjEwOUg1LjgyNXYuODc5Wm0xMC4yNjgtMi4wOWE0LjE5Miw0LjE5MiwwLDAsMS0uMzg2LDEuODQxLDIuODUxLDIuODUxLDAsMCwxLTEuMSwxLjIzM0EzLjA1MiwzLjA1MiwwLDAsMSw5LjYyOS4xLDMuMSwzLjEsMCwwLDEsOC4wMTctLjMyYTIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSw2LjUwOS0zLjN2LS40QTQuMjExLDQuMjExLDAsMCwxLDYuODkyLTUuNTRhMi44NDQsMi44NDQsMCwwLDEsMS4xLTEuMjMzLDMuMDc0LDMuMDc0LDAsMCwxLDEuNjI4LS40MzUsMy4wNDQsMy4wNDQsMCwwLDEsMS42MTEuNDMsMi45LDIuOSwwLDAsMSwxLjEsMS4yMjMsNC4wOSw0LjA5LDAsMCwxLC40LDEuODE5Wm0tMS43NDMtLjNhMi45OSwyLjk5LDAsMCwwLS4zNTQtMS42MDksMS4xMzUsMS4xMzUsMCwwLDAtMS4wMTMtLjU0OXEtMS4yODksMC0xLjM2MiwxLjkzNGwwLC41MjJBMy4wNzUsMy4wNzUsMCwwLDAsOC42LTEuOGExLjEzNCwxLjEzNCwwLDAsMCwxLjAzLjU2MiwxLjEyLDEuMTIsMCwwLDAsMS0uNTUyLDIuOTkxLDIuOTkxLDAsMCwwLC4zNTYtMS41ODdabTguODQ3LjNhNC4xOTIsNC4xOTIsMCwwLDEtLjM4NiwxLjg0MSwyLjg1MSwyLjg1MSwwLDAsMS0xLjEsMS4yMzNBMy4wNTIsMy4wNTIsMCwwLDEsMTYuNzMzLjEsMy4xLDMuMSwwLDAsMSwxNS4xMjItLjMyYTIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSwxMy42MTMtMy4zdi0uNEE0LjIxMSw0LjIxMSwwLDAsMSwxNC01LjU0YTIuODQ0LDIuODQ0LDAsMCwxLDEuMS0xLjIzMywzLjA3NCwzLjA3NCwwLDAsMSwxLjYyOC0uNDM1LDMuMDQ0LDMuMDQ0LDAsMCwxLDEuNjExLjQzLDIuOSwyLjksMCwwLDEsMS4xLDEuMjIzLDQuMDksNC4wOSwwLDAsMSwuNCwxLjgxOVptLTEuNzQzLS4zYTIuOTksMi45OSwwLDAsMC0uMzU0LTEuNjA5LDEuMTM1LDEuMTM1LDAsMCwwLTEuMDEzLS41NDlxLTEuMjg5LDAtMS4zNjIsMS45MzRsMCwuNTIyQTMuMDc1LDMuMDc1LDAsMCwwLDE1LjctMS44YTEuMTM0LDEuMTM0LDAsMCwwLDEuMDMuNTYyLDEuMTIsMS4xMiwwLDAsMCwxLS41NTIsMi45OTEsMi45OTEsMCwwLDAsLjM1Ni0xLjU4N1ptNS4wNzgtMy40LDEuNTg3LDQuOTQ2LDEuNTgyLTQuOTQ2aDIuMjU2VjBIMjYuODc0Vi0xLjY2bC4xNjYtMy40TDI1LjMyMiwwSDI0LjE4OUwyMi40NjUtNS4wNjNsLjE2NiwzLjRWMEgyMC45MTdWLTcuMTA5Wk0zNy44Ni01Ljc4NkgzNS43MjdWMEgzNC4wMTNWLTUuNzg2SDMxLjkxOFYtNy4xMDlIMzcuODZabTYuODA2LDIuMzc4YTQuMTkyLDQuMTkyLDAsMCwxLS4zODYsMS44NDEsMi44NTEsMi44NTEsMCwwLDEtMS4xLDEuMjMzQTMuMDUyLDMuMDUyLDAsMCwxLDQxLjU2Ni4xLDMuMSwzLjEsMCwwLDEsMzkuOTU1LS4zMmEyLjg0NiwyLjg0NiwwLDAsMS0xLjEtMS4xOTRBNC4wNzIsNC4wNzIsMCwwLDEsMzguNDQ2LTMuM3YtLjRhNC4yMTEsNC4yMTEsMCwwLDEsLjM4My0xLjg0MywyLjg0NCwyLjg0NCwwLDAsMSwxLjEtMS4yMzMsMy4wNzQsMy4wNzQsMCwwLDEsMS42MjgtLjQzNSwzLjA0NCwzLjA0NCwwLDAsMSwxLjYxMS40MywyLjksMi45LDAsMCwxLDEuMSwxLjIyMyw0LjA5LDQuMDksMCwwLDEsLjQsMS44MTlabS0xLjc0My0uM2EyLjk5LDIuOTksMCwwLDAtLjM1NC0xLjYwOSwxLjEzNSwxLjEzNSwwLDAsMC0xLjAxMy0uNTQ5cS0xLjI4OSwwLTEuMzYyLDEuOTM0bDAsLjUyMkEzLjA3NSwzLjA3NSwwLDAsMCw0MC41MzYtMS44YTEuMTM0LDEuMTM0LDAsMCwwLDEuMDMuNTYyLDEuMTIsMS4xMiwwLDAsMCwxLS41NTIsMi45OTEsMi45OTEsMCwwLDAsLjM1Ni0xLjU4N1ptMTEuNTM4LjNhNC4xOTIsNC4xOTIsMCwwLDEtLjM4NiwxLjg0MSwyLjg1MSwyLjg1MSwwLDAsMS0xLjEsMS4yMzNBMy4wNTIsMy4wNTIsMCwwLDEsNTEuMzYxLjEsMy4xLDMuMSwwLDAsMSw0OS43NDktLjMyYTIuODQ2LDIuODQ2LDAsMCwxLTEuMS0xLjE5NEE0LjA3Miw0LjA3MiwwLDAsMSw0OC4yNDEtMy4zdi0uNGE0LjIxMSw0LjIxMSwwLDAsMSwuMzgzLTEuODQzLDIuODQ0LDIuODQ0LDAsMCwxLDEuMS0xLjIzMywzLjA3NCwzLjA3NCwwLDAsMSwxLjYyOC0uNDM1LDMuMDQ0LDMuMDQ0LDAsMCwxLDEuNjExLjQzLDIuOSwyLjksMCwwLDEsMS4xLDEuMjIzLDQuMDksNC4wOSwwLDAsMSwuNCwxLjgxOVptLTEuNzQzLS4zYTIuOTksMi45OSwwLDAsMC0uMzU0LTEuNjA5LDEuMTM1LDEuMTM1LDAsMCwwLTEuMDEzLS41NDlxLTEuMjg5LDAtMS4zNjIsMS45MzRsMCwuNTIyQTMuMDc1LDMuMDc1LDAsMCwwLDUwLjMzLTEuOGExLjEzNCwxLjEzNCwwLDAsMCwxLjAzLjU2MiwxLjEyLDEuMTIsMCwwLDAsMS0uNTUyLDIuOTkxLDIuOTkxLDAsMCwwLC4zNTYtMS41ODdaTTU1LjU0NSwwVi03LjEwOUg1OC4xYTMuNjE2LDMuNjE2LDAsMCwxLDIuMDg3LjUsMS42NzMsMS42NzMsMCwwLDEsLjcxNSwxLjQ2LDEuNjkyLDEuNjkyLDAsMCwxLS4yNTQuOTQyLDEuNDgsMS40OCwwLDAsMS0uNzQ3LjU3NiwxLjUsMS41LDAsMCwxLC44NTQuNTQ3LDEuNTksMS41OSwwLDAsMSwuMy45NzcsMS44ODIsMS44ODIsMCwwLDEtLjY2MiwxLjU3QTMuMTQ5LDMuMTQ5LDAsMCwxLDU4LjQzMSwwWm0xLjcxNC0zLjAyMnYxLjdoMS4xMjNhMS4wNjgsMS4wNjgsMCwwLDAsLjcxMy0uMjEyLjc0My43NDMsMCwwLDAsLjI0OS0uNi43ODguNzg4LDAsMCwwLS44ODQtLjg5NFptMC0xLjEyM2guODk0YTEuMjY5LDEuMjY5LDAsMCwwLC44LS4yMDYuNzMuNzMsMCwwLDAsLjIzOS0uNTkzLjc2Ni43NjYsMCwwLDAtLjI1OS0uNjQ5LDEuMzg1LDEuMzg1LDAsMCwwLS44MzUtLjJoLS44NFptNy43NjgtMi45NjRoMS43MDl2NC44NzhhMi4zMzIsMi4zMzIsMCwwLDEtLjMxNSwxLjIxMSwyLjE1LDIuMTUsMCwwLDEtLjg3OS44MjVBMi42ODYsMi42ODYsMCwwLDEsNjQuMjg1LjFhMi41ODksMi41ODksMCwwLDEtMS44MDctLjU4NiwyLjEyOSwyLjEyOSwwLDAsMS0uNjQ1LTEuNjZoMS43MTlhMS4xNzQsMS4xNzQsMCwwLDAsLjE2OC43MDguNjY3LjY2NywwLDAsMCwuNTY0LjIyLjYzOC42MzgsMCwwLDAsLjU0OS0uMjY2LDEuMjUxLDEuMjUxLDAsMCwwLC4xOTMtLjc0NVptNy40LDQuMDkyaC0yLjd2MS43aDMuMTg0VjBoLTQuOVYtNy4xMDloNC45MDd2MS4zMjNINjkuNzI5djEuNWgyLjdabTcuMTM4LjYxYTIuNiwyLjYsMCwwLDEtLjQsMS4zMTEsMi40MTYsMi40MTYsMCwwLDEtMS4wMjguODgxQTMuNSwzLjUsMCwwLDEsNzYuNjI0LjFhMi43OTIsMi43OTIsMCwwLDEtMi4yMDctLjkxMywzLjc3LDMuNzcsMCwwLDEtLjgwNi0yLjU3OHYtLjM1MmE0LjMsNC4zLDAsMCwxLC4zNjQtMS44MjksMi43NTYsMi43NTYsMCwwLDEsMS4wNDctMS4yMTFBMi45MjIsMi45MjIsMCwwLDEsNzYuNi03LjIxMmEzLjA2NCwzLjA2NCwwLDAsMSwyLjA4LjY4MSwyLjY5MSwyLjY5MSwwLDAsMSwuODk0LDEuODc3SDc3Ljg2OWExLjI3MywxLjI3MywwLDAsMC0uMzI3LS45MzMsMS4zNDYsMS4zNDYsMCwwLDAtLjkzNy0uMjgzLDEuMDI0LDEuMDI0LDAsMCwwLS45MzcuNDc5LDMuMDc1LDMuMDc1LDAsMCwwLS4zMTIsMS41Mjh2LjVhMy40LDMuNCwwLDAsMCwuMjg2LDEuNjI2LDEuMDQ1LDEuMDQ1LDAsMCwwLC45ODQuNDg4LDEuMzE2LDEuMzE2LDAsMCwwLC45LS4yNzgsMS4xODEsMS4xODEsMCwwLDAsLjMzMi0uODg0Wm02LjQ1LTMuMzc5SDgzLjg3OVYwSDgyLjE2NVYtNS43ODZIODAuMDcxVi03LjEwOWg1Ljk0MloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwIDE4KSIgZmlsbD0iIzA1MGMxYSIvPg0KICAgICAgPC9nPg0KICAgICAgPGcgaWQ9Il9Nb3VzZS02IiBkYXRhLW5hbWU9IvCfjJUgIE1vdXNlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2NDAgNjgxKSI+DQogICAgICAgIDxnIGlkPSJCYXNlLTYiIGRhdGEtbmFtZT0iQmFzZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTkxMCAtNjM0KSI+DQogICAgICAgICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgNTYxLCA1OTMpIiBmaWx0ZXI9InVybCgjUmVjdGFuZ2xlXzE4OTktNikiPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlJlY3RhbmdsZV8xODk5LTEyIiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAxODk5IiBkPSJNNy4yLDBIMjguOEE3LjIsNy4yLDAsMCwxLDM2LDcuMlYzNkExOCwxOCwwLDAsMSwxOCw1NGgwQTE4LDE4LDAsMCwxLDAsMzZWNy4yQTcuMiw3LjIsMCwwLDEsNy4yLDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTggNTApIiBmaWxsPSIjMjEyMTIxIi8+DQogICAgICAgICAgPC9nPg0KICAgICAgICAgIDxwYXRoIGlkPSJTdWJ0cmFjdGlvbl8xMi02IiBkYXRhLW5hbWU9IlN1YnRyYWN0aW9uIDEyIiBkPSJNLTQxMDIsMjcwNGExNy44ODEsMTcuODgxLDAsMCwxLTEyLjcyOC01LjI3MkExNy44ODIsMTcuODgyLDAsMCwxLTQxMjAsMjY4NnYtMjguOGE3LjIwOCw3LjIwOCwwLDAsMSw3LjItNy4yaDIxLjZhNy4yMDgsNy4yMDgsMCwwLDEsNy4yLDcuMlYyNjg2YTE3Ljg4MSwxNy44ODEsMCwwLDEtNS4yNzIsMTIuNzI4QTE3Ljg4NCwxNy44ODQsMCwwLDEtNDEwMiwyNzA0Wm0tMTAuNC01MmE1LjYwNiw1LjYwNiwwLDAsMC01LjYsNS42VjI2ODJhMTYuMDE4LDE2LjAxOCwwLDAsMCwxNiwxNiwxNi4wMTgsMTYuMDE4LDAsMCwwLDE2LTE2di0yNC40YTUuNjA2LDUuNjA2LDAsMCwwLTUuNi01LjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MDM5IC0yMDA3KSIgZmlsbD0idXJsKCNsaW5lYXItZ3JhZGllbnQpIi8+DQogICAgICAgIDwvZz4NCiAgICAgICAgPHBhdGggaWQ9IlRvcC02IiBkYXRhLW5hbWU9IlRvcCIgZD0iTTUuNiwwSDI2LjRBNS42LDUuNiwwLDAsMSwzMiw1LjZWMzBBMTYsMTYsMCwwLDEsMTYsNDZoMEExNiwxNiwwLDAsMSwwLDMwVjUuNkE1LjYsNS42LDAsMCwxLDUuNiwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEgMTEpIiBmaWxsPSJ1cmwoI2xpbmVhci1ncmFkaWVudC0yKSIvPg0KICAgICAgICA8cGF0aCBpZD0iVHJpZ2dlci1SaWdodC03IiBkYXRhLW5hbWU9IlRyaWdnZXItUmlnaHQiIGQ9Ik0wLDBIOS41YTUsNSwwLDAsMSw1LDVWMTdhMCwwLDAsMCwxLDAsMEgwYTAsMCwwLDAsMSwwLDBWMEEwLDAsMCwwLDEsMCwwWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjcuNSAxMikiIGZpbGw9IiNmZmYiIG9wYWNpdHk9IjAuMTUiLz4NCiAgICAgICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgLTM0OSwgLTQxKSIgZmlsdGVyPSJ1cmwoI1RyaWdnZXItTGVmdC0yKSI+DQogICAgICAgICAgPHBhdGggaWQ9IlRyaWdnZXItTGVmdC04IiBkYXRhLW5hbWU9IlRyaWdnZXItTGVmdCIgZD0iTTUsMGg5LjVhMCwwLDAsMCwxLDAsMFYxN2EwLDAsMCwwLDEsMCwwSDBhMCwwLDAsMCwxLDAsMFY1QTUsNSwwLDAsMSw1LDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNjEgNTMpIiBmaWxsPSIjZmZiNzAwIi8+DQogICAgICAgIDwvZz4NCiAgICAgICAgPGcgaWQ9IlNjcm9sbHdoZWVsLTkiIGRhdGEtbmFtZT0iU2Nyb2xsd2hlZWwiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI0IDIwKSIgZmlsbD0iIzRkNGQ0ZCIgc3Ryb2tlPSIjMzEzMTMxIiBzdHJva2Utd2lkdGg9IjEiPg0KICAgICAgICAgIDxyZWN0IHdpZHRoPSI2IiBoZWlnaHQ9IjE0IiBzdHJva2U9Im5vbmUiLz4NCiAgICAgICAgICA8cmVjdCB4PSItMC41IiB5PSItMC41IiB3aWR0aD0iNyIgaGVpZ2h0PSIxNSIgZmlsbD0ibm9uZSIvPg0KICAgICAgICA8L2c+DQogICAgICAgIDxnIGlkPSJNYXNrX0dyb3VwXzI5IiBkYXRhLW5hbWU9Ik1hc2sgR3JvdXAgMjkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDA4IC03NjUpIiBvcGFjaXR5PSIwLjQiIGNsaXAtcGF0aD0idXJsKCNjbGlwLXBhdGgtMTYpIj4NCiAgICAgICAgICA8cGF0aCBpZD0iVW5pb25fMzAiIGRhdGEtbmFtZT0iVW5pb24gMzAiIGQ9Ik0tNDEzMywyNjc4aC0ydi04YTkuMDA5LDkuMDA5LDAsMCwxLDktOWg2djJoLTVhOC4wMDksOC4wMDksMCwwLDAtOCw4djdoMFptLTQsMGgtMnYtMTBhMTAuOTI3LDEwLjkyNywwLDAsMSwzLjIyMi03Ljc3OEExMC45MjYsMTAuOTI2LDAsMCwxLTQxMjgsMjY1N2g4djJoLTdhMTAuMDExLDEwLjAxMSwwLDAsMC0xMCwxMHY5aDBaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MTQ4IC0xODkxKSIgZmlsbD0iIzhhOGQ5NSIvPg0KICAgICAgICA8L2c+DQogICAgICA8L2c+DQogICAgICA8cGF0aCBpZD0iTGFiZWwtV2VsY29tZS0zNCIgZGF0YS1uYW1lPSJMYWJlbC1XZWxjb21lIiBkPSJNLTM2Ljg2NSwwbDEuMjMtNy4xMDksMS45MjQsMGEyLjYzMywyLjYzMywwLDAsMSwxLjUzMS40NDIsMi40ODQsMi40ODQsMCwwLDEsLjkzLDEuMjIxLDMuNjM5LDMuNjM5LDAsMCwxLC4xNzYsMS43MTZsLS4wNTQuMzg2QTQuMjYzLDQuMjYzLDAsMCwxLTMxLjc3NS0xLjYsMy40ODEsMy40ODEsMCwwLDEtMzMuMDY2LS40MiwzLjY0OSwzLjY0OSwwLDAsMS0zNC44LDBaTS0zNC42LTYuMTEzbC0uODg5LDUuMTI3LjcxMywwYTIuMjIxLDIuMjIxLDAsMCwwLDEuNi0uNjEzLDIuOTQzLDIuOTQzLDAsMCwwLC44MTgtMS42OTIsNS43LDUuNywwLDAsMCwuMDkzLTEuMjk0LDEuNzQyLDEuNzQyLDAsMCwwLS40MTMtMS4xMDgsMS4zODEsMS4zODEsMCwwLDAtMS4wMjMtLjQyWm00LjI4NywzLjQ1MmEzLjQ3NiwzLjQ3NiwwLDAsMSwuNDU3LTEuNDExLDIuNzA5LDIuNzA5LDAsMCwxLC45NTktLjk4MSwyLjM3MSwyLjM3MSwwLDAsMSwxLjMtLjMyNywyLjAxOCwyLjAxOCwwLDAsMSwxLjE3Mi4zNjEsMi4wMDcsMi4wMDcsMCwwLDEsLjcyLjk2MkEzLjA1NCwzLjA1NCwwLDAsMS0yNS41NDctMi43LDMuNTQxLDMuNTQxLDAsMCwxLTI2LTEuMjE2YTIuNywyLjcsMCwwLDEtLjk2Ny45ODlBMi40LDIuNCwwLDAsMS0yOC4yNzYuMWEyLjAwOSwyLjAwOSwwLDAsMS0xLjE2NS0uMzU5LDIuMDE0LDIuMDE0LDAsMCwxLS43Mi0uOTU3LDMuMDE1LDMuMDE1LDAsMCwxLS4xNjYtMS4zNFptMS4xMzguNjY5YTEuNCwxLjQsMCwwLDAsLjI3MS44MjMuODY3Ljg2NywwLDAsMCwuNjg2LjMyNSwxLjIxNywxLjIxNywwLDAsMCwxLS40NTlBMi40MTUsMi40MTUsMCwwLDAtMjYuNzE0LTIuNmwuMDI5LS40NzlhMS42OTEsMS42OTEsMCwwLDAtLjI0OS0uOTgxLjg3NC44NzQsMCwwLDAtLjcyMy0uMzc2LDEuMjY1LDEuMjY1LDAsMCwwLTEuMTcyLjcyOCwyLjcxOCwyLjcxOCwwLDAsMC0uMzI3LDEuMDQ1QTQuMDg4LDQuMDg4LDAsMCwwLTI5LjE3NS0xLjk5MlptNy40MjIsMS40N2ExLjkxNiwxLjkxNiwwLDAsMS0xLjUuNjIsMS40NzIsMS40NzIsMCwwLDEtLjg1Mi0uMjU0LDEuMzIxLDEuMzIxLDAsMCwxLS40ODMtLjY4MSwyLjQ5NCwyLjQ5NCwwLDAsMS0uMDg1LTEuMDI4bC41NzEtMy40MThoMS4xNTdsLS41NzYsMy40MzNhMS44MiwxLjgyLDAsMCwwLDAsLjM1Mi41OTQuNTk0LDAsMCwwLC42MS42MywxLjQsMS40LDAsMCwwLDEuMjQtLjYxNWwuNjY0LTMuOGgxLjE1N0wtMjAuNzcxLDBoLTEuMDg0Wm03LjEyOS0yLjA5NWE0LjMsNC4zLDAsMCwxLS40MzIsMS40NTgsMi4zOTEsMi4zOTEsMCwwLDEtLjgzLjk2NEExLjk1OCwxLjk1OCwwLDAsMS0xNywuMWExLjU1MywxLjU1MywwLDAsMS0xLjMzMy0uNjc5TC0xOC41MjEsMGgtMS4wNmwxLjMtNy41aDEuMTYybC0uNTI3LDIuNzI5YTEuOCwxLjgsMCwwLDEsMS40LS42MSwxLjUsMS41LDAsMCwxLDEuMi41NjIsMi40MjQsMi40MjQsMCwwLDEsLjQ1NywxLjQ4NEE2LjgwNyw2LjgwNywwLDAsMS0xNC42MjQtMi42MTdabS0xLjExMy0uNjU0YTEuMzg2LDEuMzg2LDAsMCwwLS4yMi0uODMzLjc2Mi43NjIsMCwwLDAtLjYzNS0uMzEsMS4zNjEsMS4zNjEsMCwwLDAtMS4xODIuNjc0bC0uMzgxLDIuMTg4YS45MjIuOTIyLDAsMCwwLC45MjMuNjg4LDEuMTUsMS4xNSwwLDAsMCwuOTY0LS40NDksMi41NDcsMi41NDcsMCwwLDAsLjQ4Ni0xLjMwOVEtMTUuNzQyLTMuMDM3LTE1LjczNy0zLjI3MVpNLTEyLjg0MiwwSC0xNGwxLjMtNy41aDEuMTU3Wm0zLjY4Ny4xYTIuMjEzLDIuMjEzLDAsMCwxLTEuMTk0LS4zNDcsMS45NzIsMS45NzIsMCwwLDEtLjc0Ny0uOTA4LDIuNywyLjcsMCwwLDEtLjE4My0xLjI4NGwuMDE1LS4yYTMuNTM2LDMuNTM2LDAsMCwxLC40NzEtMS40NDgsMi42ODksMi42ODksMCwwLDEsLjk1NS0uOTc0QTIuMzIxLDIuMzIxLDAsMCwxLTguNi01LjM4MWExLjczMSwxLjczMSwwLDAsMSwxLjQ4Ny43MzgsMi43MTEsMi43MTEsMCwwLDEsLjM3NCwxLjg3M2wtLjA2OC41MDloLTMuMzI1YTEuNDM1LDEuNDM1LDAsMCwwLC4yNTQsMS4wMTIsMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAtNy42ODEtMS41bC41ODYuNjE1YTIuMjI3LDIuMjI3LDAsMCwxLS44NzQuNzM1QTIuNiwyLjYsMCwwLDEtOS4xNTUuMVptLjQ5My00LjUzMXEtLjkxOC0uMDI5LTEuMzc3LDEuM2wyLjE5MiwwLC4wMi0uMWExLjUzMiwxLjUzMiwwLDAsMCwwLS40MzlBLjkuOSwwLDAsMC04LjEtNC4yMTkuODY2Ljg2NiwwLDAsMC04LjY2Mi00LjQzNFpNLTIuMzM5LS45ODZILjhMLjYyLDBILTMuNzE2TC0yLjQ4LTcuMTA5aDEuMjA2Wk0zLjg2Mi4xQTIuMjEzLDIuMjEzLDAsMCwxLDIuNjY4LS4yNDlhMS45NzIsMS45NzIsMCwwLDEtLjc0Ny0uOTA4LDIuNywyLjcsMCwwLDEtLjE4My0xLjI4NGwuMDE1LS4yYTMuNTM2LDMuNTM2LDAsMCwxLC40NzEtMS40NDgsMi42ODksMi42ODksMCwwLDEsLjk1NS0uOTc0LDIuMzIxLDIuMzIxLDAsMCwxLDEuMjQtLjMxNywxLjczMSwxLjczMSwwLDAsMSwxLjQ4Ny43MzgsMi43MTEsMi43MTEsMCwwLDEsLjM3NCwxLjg3M2wtLjA2OC41MDlIMi44ODZBMS40MzUsMS40MzUsMCwwLDAsMy4xNC0xLjI0OWExLjAwNiwxLjAwNiwwLDAsMCwuODIuMzk0QTEuNzgsMS43OCwwLDAsMCw1LjMzNy0xLjVsLjU4Ni42MTVhMi4yMjcsMi4yMjcsMCwwLDEtLjg3NC43MzVBMi42LDIuNiwwLDAsMSwzLjg2Mi4xWm0uNDkzLTQuNTMxcS0uOTE4LS4wMjktMS4zNzcsMS4zbDIuMTkyLDAsLjAyLS4xYTEuNTMyLDEuNTMyLDAsMCwwLDAtLjQzOS45LjksMCwwLDAtLjI3My0uNTQ3QS44NjYuODY2LDAsMCwwLDQuMzU1LTQuNDM0Wk03LjEyOSwwLDcuOS00LjRINy4xMDlsLjE1Ni0uODc5aC43ODFsLjA3OC0uNTY2YTIuMTExLDIuMTExLDAsMCwxLC42NjItMS4zLDEuOTU0LDEuOTU0LDAsMCwxLDEuMzc5LS40NjksMy43NDYsMy43NDYsMCwwLDEsLjY4OC4xbC0uMTI3LjkyOGExLjk1NSwxLjk1NSwwLDAsMC0uNDM1LS4wNDkuOTc4Ljk3OCwwLDAsMC0uNjc5LjIyNSwxLjA2LDEuMDYsMCwwLDAtLjMzNy42MzVsLS4wNzMuNWgxLjA0NWwtLjE1Ni44NzlIOS4wNTNMOC4yODYsMFpNMTIuOC02LjU2N2wtLjIyNSwxLjI4NGguOUwxMy4zMy00LjRoLS45MDhsLS41LDIuOTU5YTEuMDEyLDEuMDEyLDAsMCwwLDAsLjIycS4wMjkuMzE3LjM5MS4zMzJhMi4yMDYsMi4yMDYsMCwwLDAsLjQxLS4wNDRsLS4wNzguOTI4YTIuNjUzLDIuNjUzLDAsMCwxLS43MjguMSwxLjA4LDEuMDgsMCwwLDEtLjkwNi0uNDEzLDEuNDkzLDEuNDkzLDAsMCwxLS4yMzctMS4wNjdMMTEuMjY1LTQuNEgxMC40MmwuMTU2LS44NzloLjg0bC4yMjUtMS4yODRabTMuMzY0LDQuMDIzaC0yLjVsLjE3MS0uOTU3aDIuNVptMi44NTYsMS43YTEuMTExLDEuMTExLDAsMCwwLC43MzUtLjI0MiwxLjEwOSwxLjEwOSwwLDAsMCwuNDA4LS42NTdsMS4wOTQsMGExLjg3LDEuODcsMCwwLDEtLjM3OC45NTIsMi4yLDIuMiwwLDAsMS0uODMzLjY2OUEyLjMxLDIuMzEsMCwwLDEsMTguOTg5LjFhMS45OSwxLjk5LDAsMCwxLTEuMTU3LS4zNTIsMS45NDQsMS45NDQsMCwwLDEtLjctLjk0NSwzLjAyMywzLjAyMywwLDAsMS0uMTQ2LTEuMzQ1TDE3LTIuNzE1QTMuNDU3LDMuNDU3LDAsMCwxLDE3LjQ0OS00LjFhMi42MDgsMi42MDgsMCwwLDEsLjk0LS45NTksMi4zNTQsMi4zNTQsMCwwLDEsMS4yNzktLjMxNywxLjg0OCwxLjg0OCwwLDAsMSwxLjM3Mi41NjksMi4wMDksMi4wMDksMCwwLDEsLjUxMywxLjQyOEgyMC40NjlhMS4xODEsMS4xODEsMCwwLDAtLjIyMi0uNzQyLjgxMy44MTMsMCwwLDAtLjY0Mi0uMzA4LDEuMTcyLDEuMTcyLDAsMCwwLTEuMDY5LjU3NiwzLjIxNiwzLjIxNiwwLDAsMC0uNDIsMS42OFExOC4wODEtLjg2NCwxOS4wMjMtLjg0NVpNMjMuMDc2LDBIMjEuOTE5bDEuMy03LjVIMjQuMzhaTTI1LjYsMEgyNC40NDNsLjkxOC01LjI4M2gxLjE1N1ptLS4wNzMtNi42MzZhLjY1My42NTMsMCwwLDEsLjE3Ni0uNDU5LjY0NC42NDQsMCwwLDEsLjQ3NC0uMi42MTYuNjE2LDAsMCwxLC40NzEuMTczLjYuNiwwLDAsMSwuMTg4LjQ0Ny42MTcuNjE3LDAsMCwxLS4xODMuNDU5LjY3MS42NzEsMCwwLDEtLjQ2Ni4xOS42MjYuNjI2LDAsMCwxLS40NjktLjE2OEEuNTgxLjU4MSwwLDAsMSwyNS41MjctNi42MzZaTTI5LjItLjg0NWExLjExMSwxLjExMSwwLDAsMCwuNzM1LS4yNDIsMS4xMDksMS4xMDksMCwwLDAsLjQwOC0uNjU3bDEuMDk0LDBhMS44NywxLjg3LDAsMCwxLS4zNzguOTUyLDIuMiwyLjIsMCwwLDEtLjgzMy42NjlBMi4zMSwyLjMxLDAsMCwxLDI5LjE2NS4xYTEuOTksMS45OSwwLDAsMS0xLjE1Ny0uMzUyLDEuOTQ0LDEuOTQ0LDAsMCwxLS43LS45NDUsMy4wMjMsMy4wMjMsMCwwLDEtLjE0Ni0xLjM0NWwuMDE1LS4xNzFBMy40NTcsMy40NTcsMCwwLDEsMjcuNjI1LTQuMWEyLjYwOCwyLjYwOCwwLDAsMSwuOTQtLjk1OSwyLjM1NCwyLjM1NCwwLDAsMSwxLjI3OS0uMzE3LDEuODQ4LDEuODQ4LDAsMCwxLDEuMzcyLjU2OSwyLjAwOSwyLjAwOSwwLDAsMSwuNTEzLDEuNDI4SDMwLjY0NWExLjE4MSwxLjE4MSwwLDAsMC0uMjIyLS43NDIuODEzLjgxMywwLDAsMC0uNjQyLS4zMDgsMS4xNzIsMS4xNzIsMCwwLDAtMS4wNjkuNTc2LDMuMjE2LDMuMjE2LDAsMCwwLS40MiwxLjY4UTI4LjI1Ny0uODY0LDI5LjItLjg0NVptNC45MjctMS40MTEtLjY1NC41ODFMMzMuMTg0LDBIMzIuMDI2bDEuMy03LjVoMS4xNTdMMzMuNzQtMy4yNDJsLjQwNS0uNDIsMS42OC0xLjYyMUgzNy4zTDM0Ljk2MS0zLjAyNywzNi41LDBIMzUuMjQ5Wk0tMjAuNTgxLDcuMzM5YTMuNDc2LDMuNDc2LDAsMCwxLC40NTctMS40MTEsMi43MDksMi43MDksMCwwLDEsLjk1OS0uOTgxLDIuMzcxLDIuMzcxLDAsMCwxLDEuMy0uMzI3LDIuMDE4LDIuMDE4LDAsMCwxLDEuMTcyLjM2MSwyLjAwNywyLjAwNywwLDAsMSwuNzIuOTYyQTMuMDU0LDMuMDU0LDAsMCwxLTE1LjgxNSw3LjNhMy41NDEsMy41NDEsMCwwLDEtLjQ1NywxLjQ4NCwyLjcsMi43LDAsMCwxLS45NjcuOTg5LDIuNCwyLjQsMCwwLDEtMS4zMDYuMzI1LDIuMDA5LDIuMDA5LDAsMCwxLTEuMTY1LS4zNTksMi4wMTQsMi4wMTQsMCwwLDEtLjcyLS45NTcsMy4wMTUsMy4wMTUsMCwwLDEtLjE2Ni0xLjM0Wm0xLjEzOC42NjlhMS40LDEuNCwwLDAsMCwuMjcxLjgyMy44NjcuODY3LDAsMCwwLC42ODYuMzI1LDEuMjE3LDEuMjE3LDAsMCwwLDEtLjQ1OUEyLjQxNSwyLjQxNSwwLDAsMC0xNi45ODIsNy40bC4wMjktLjQ3OWExLjY5MSwxLjY5MSwwLDAsMC0uMjQ5LS45ODEuODc0Ljg3NCwwLDAsMC0uNzIzLS4zNzYsMS4yNjUsMS4yNjUsMCwwLDAtMS4xNzIuNzI4LDIuNzE4LDIuNzE4LDAsMCwwLS4zMjcsMS4wNDVBNC4wODgsNC4wODgsMCwwLDAtMTkuNDQzLDguMDA4Wm02LjE0My0zLjMtLjExNy42MmEyLjAxNiwyLjAxNiwwLDAsMSwxLjU2Ny0uNzEzLDEuMjc3LDEuMjc3LDAsMCwxLDEuMS41MywyLjExNSwyLjExNSwwLDAsMSwuMjY0LDEuNDM4TC0xMS4wNiwxMGgtMS4xNTdsLjU3Ni0zLjQyOGExLjc1NCwxLjc1NCwwLDAsMCwwLS4zOTEuNjIzLjYyMywwLDAsMC0uNjkzLS42LDEuNDA3LDEuNDA3LDAsMCwwLTEuMTU3LjY0OUwtMTQuMTQ2LDEwSC0xNS4zbC45MTMtNS4yODNabTguNzcsNS4zODZBMi40MSwyLjQxLDAsMCwxLTUuNzUsOS43NjZhMi4xMzIsMi4xMzIsMCwwLDEtLjgxOC0uOTJBMy41MTIsMy41MTIsMCwwLDEtNi45LDcuNDc2LDYuMyw2LjMsMCwwLDEtNi43OSw2LjA1YTQuOCw0LjgsMCwwLDEsLjUxMy0xLjQ4NywzLjczNywzLjczNywwLDAsMSwuODgxLTEuMSwyLjksMi45LDAsMCwxLDEuOTUzLS42NzQsMi4xOTQsMi4xOTQsMCwwLDEsMS42ODIuNzI4LDMuMDEzLDMuMDEzLDAsMCwxLC42ODYsMS45MTQsNi4zLDYuMywwLDAsMS0uMTEsMS4zODksNS4wMzUsNS4wMzUsMCwwLDEtLjQ3OSwxLjQ0QTMuNjc2LDMuNjc2LDAsMCwxLTIuNSw5LjM2LDIuODgxLDIuODgxLDAsMCwxLTQuNTMxLDEwLjFaTS0yLjMxLDYuMjU1bC4wNDQtLjUxOGEzLjEsMy4xLDAsMCwwLS4wOTMtLjk4NCwxLjI5MSwxLjI5MSwwLDAsMC0uNDEzLS42ODgsMS4xOSwxLjE5LDAsMCwwLS43MzUtLjI1MUExLjY1MSwxLjY1MSwwLDAsMC00LjYsNC4xNmEyLjU0MSwyLjU0MSwwLDAsMC0uNzcxLDEuMTEzLDUuODMzLDUuODMzLDAsMCwwLS4zNDQsMS44NzUsMi4zNzgsMi4zNzgsMCwwLDAsLjI3MywxLjQwNiwxLjExLDEuMTEsMCwwLDAsLjk2Ny41MzIsMS42NjksMS42NjksMCwwLDAsMS4zOTQtLjYzNUEzLjY2LDMuNjYsMCwwLDAtMi4zNTgsNi42Wk00LjMyNiw3LjM4M0E0LjMsNC4zLDAsMCwxLDMuODk0LDguODRhMi4zOTEsMi4zOTEsMCwwLDEtLjgzLjk2NCwxLjk1OCwxLjk1OCwwLDAsMS0xLjExNi4zQTEuNTUzLDEuNTUzLDAsMCwxLC42MTUsOS40MjRMLjQzLDEwSC0uNjNsMS4zLTcuNUgxLjgzMUwxLjMsNS4yMjlhMS44LDEuOCwwLDAsMSwxLjQtLjYxLDEuNSwxLjUsMCwwLDEsMS4yLjU2MkEyLjQyNCwyLjQyNCwwLDAsMSw0LjM2LDYuNjY1LDYuODA3LDYuODA3LDAsMCwxLDQuMzI2LDcuMzgzWk0zLjIxMyw2LjcyOWExLjM4NiwxLjM4NiwwLDAsMC0uMjItLjgzMy43NjIuNzYyLDAsMCwwLS42MzUtLjMxLDEuMzYxLDEuMzYxLDAsMCwwLTEuMTgyLjY3NEwuOCw4LjQ0N2EuOTIyLjkyMiwwLDAsMCwuOTIzLjY4OCwxLjE1LDEuMTUsMCwwLDAsLjk2NC0uNDQ5LDIuNTQ3LDIuNTQ3LDAsMCwwLC40ODYtMS4zMDlRMy4yMDgsNi45NjMsMy4yMTMsNi43MjlaTTcsNC43MTcsNi4wMywxMC40NjRhMi4wMzksMi4wMzksMCwwLDEtLjU2NiwxLjI1NywxLjYzLDEuNjMsMCwwLDEtMS4yLjQyNywzLjI3NSwzLjI3NSwwLDAsMS0uNjU5LS4wOTNsLjEtLjkzN2ExLjc3NiwxLjc3NiwwLDAsMCwuNDEuMDU0cS42MiwwLC43NDctLjcyOGwuOTgxLTUuNzI4Wk01Ljk4NiwzLjM2NGEuNjMuNjMsMCwwLDEsLjY0NS0uNjU5LjYyNS42MjUsMCwwLDEsLjQ3MS4xNjguNi42LDAsMCwxLC4xODguNDUyLjYxNy42MTcsMCwwLDEtLjE4My40NTkuNjcxLjY3MSwwLDAsMS0uNDY2LjE5QS42NTYuNjU2LDAsMCwxLDYuMTY3LDMuOC41OC41OCwwLDAsMSw1Ljk4NiwzLjM2NFpNOS43NTEsMTAuMWEyLjIxMywyLjIxMywwLDAsMS0xLjE5NC0uMzQ3LDEuOTcyLDEuOTcyLDAsMCwxLS43NDctLjkwOCwyLjcsMi43LDAsMCwxLS4xODMtMS4yODRsLjAxNS0uMmEzLjUzNiwzLjUzNiwwLDAsMSwuNDcxLTEuNDQ4LDIuNjg5LDIuNjg5LDAsMCwxLC45NTUtLjk3NCwyLjMyMSwyLjMyMSwwLDAsMSwxLjI0LS4zMTcsMS43MzEsMS43MzEsMCwwLDEsMS40ODcuNzM4LDIuNzExLDIuNzExLDAsMCwxLC4zNzQsMS44NzNsLS4wNjguNTA5SDguNzc0YTEuNDM1LDEuNDM1LDAsMCwwLC4yNTQsMS4wMTIsMS4wMDYsMS4wMDYsMCwwLDAsLjgyLjM5NEExLjc4LDEuNzgsMCwwLDAsMTEuMjI2LDguNWwuNTg2LjYxNWEyLjIyNywyLjIyNywwLDAsMS0uODc0LjczNUEyLjYsMi42LDAsMCwxLDkuNzUxLDEwLjFabS40OTMtNC41MzFxLS45MTgtLjAyOS0xLjM3NywxLjNsMi4xOTIsMCwuMDItLjFhMS41MzIsMS41MzIsMCwwLDAsMC0uNDM5LjkuOSwwLDAsMC0uMjczLS41NDdBLjg2Ni44NjYsMCwwLDAsMTAuMjQ0LDUuNTY2Wm00LjY3MywzLjU4OWExLjEzMiwxLjEzMiwwLDAsMCwxLjE0My0uOWwxLjA5NCwwYTEuODcsMS44NywwLDAsMS0uMzc4Ljk1MiwyLjIsMi4yLDAsMCwxLS44MzMuNjY5LDIuMzEsMi4zMSwwLDAsMS0xLjA2LjIyNSwxLjk5LDEuOTksMCwwLDEtMS4xNTctLjM1MiwxLjk0NCwxLjk0NCwwLDAsMS0uNy0uOTQ1LDMuMDIzLDMuMDIzLDAsMCwxLS4xNDYtMS4zNDVsLjAxNS0uMTcxQTMuNDU3LDMuNDU3LDAsMCwxLDEzLjM0Miw1LjlhMi42MDgsMi42MDgsMCwwLDEsLjk0LS45NTksMi4zNTQsMi4zNTQsMCwwLDEsMS4yNzktLjMxNywxLjg0OCwxLjg0OCwwLDAsMSwxLjM3Mi41NjksMi4wMDksMi4wMDksMCwwLDEsLjUxMywxLjQyOEgxNi4zNjJhMS4xODEsMS4xODEsMCwwLDAtLjIyMi0uNzQyLjgxMy44MTMsMCwwLDAtLjY0Mi0uMzA4LDEuMTcyLDEuMTcyLDAsMCwwLTEuMDY5LjU3NiwzLjIxNiwzLjIxNiwwLDAsMC0uNDIsMS42OFExMy45NzUsOS4xMzYsMTQuOTE3LDkuMTU1Wm01LjQxNS01LjcyMy0uMjI1LDEuMjg0aC45bC0uMTUxLjg3OWgtLjkwOGwtLjUsMi45NTlhMS4wMTIsMS4wMTIsMCwwLDAsMCwuMjJxLjAyOS4zMTcuMzkxLjMzMmEyLjIwNiwyLjIwNiwwLDAsMCwuNDEtLjA0NGwtLjA3OC45MjhhMi42NTMsMi42NTMsMCwwLDEtLjcyOC4xLDEuMDgsMS4wOCwwLDAsMS0uOTA2LS40MTNBMS40OTMsMS40OTMsMCwwLDEsMTguMyw4LjYxM0wxOC43OTQsNS42aC0uODQ1bC4xNTYtLjg3OWguODRsLjIyNS0xLjI4NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY2NyA3NzcpIiBmaWxsPSIjMDUwYzFhIi8+DQogICAgPC9nPg0KICA8L2c+DQo8L3N2Zz4NCg==\"","/**\r\n * @module viw-webgl-component\r\n */\r\n\r\nimport React from 'react'\r\nimport helpImage from '../assets/quick-controls.svg'\r\n\r\nconst urlSupport = 'https://support.vimaec.com'\r\nconst urlControls =\r\n  'https://support.vimaec.com/en/articles/5872168-navigation-and-controls'\r\n\r\nexport type HelpProps = {\r\n  link: boolean\r\n}\r\n\r\nexport type HelpPropsTyped = HelpProps & {\r\n  type: 'help'\r\n}\r\n\r\n/**\r\n * JSX Component for help page.\r\n */\r\nexport function MenuHelp (props: {\r\n  value: HelpProps\r\n}) {\r\n  const prop = props.value\r\n  return (\r\n    <>\r\n      <div\r\n        className=\"vim-help-blocker vc-gap-4 vc-justify-center vc-max-w-[900px] vc-w-[90%] vc-h-[80%] vc-absolute vc-p-5 vc-flex vc-flex-col\"\r\n        onClick={(e) => {\r\n          e.stopPropagation()\r\n        }}\r\n      >\r\n        <div className=\"vim-help-top\">\r\n          <h2\r\n            className=\"vim-help-title vc-text-center vc-font-bold vc-uppercase vc-text-white\"\r\n          >\r\n            Key navigation controls\r\n          </h2>\r\n        </div>\r\n          <img\r\n            className=\"vim-help-img vc-min-h-0\"\r\n            src={helpImage}\r\n          ></img>\r\n        {prop.link ? linkButtons() : null}\r\n      </div>\r\n    </>\r\n  )\r\n}\r\n\r\nfunction linkButtons () {\r\n  const onControlsBtn = () => {\r\n    window.open(urlControls)\r\n  }\r\n  const onHelpBtn = () => {\r\n    window.open(urlSupport)\r\n  }\r\n\r\n  const text = (text: string) => {\r\n    return <div className=\"vc-overflow-hidden vc-whitespace-nowrap vc-text-clip vc-uppercase vc-font-bold\">{text}</div>\r\n  }\r\n\r\n  const hover = 'hover:vc-border-primary-royal hover:vc-bg-primary-royal hover:vc-text-white'\r\n  const shape = 'vc-rounded-full vc-border vc-border-white'\r\n  return (\r\n    <div\r\n    className=\"vim-help-bottom vc-flex vc-gap-4 vc-justify-center vc-min-w-0 vc-min-h-0\">\r\n      <button\r\n        className={`vim-help-button ${hover} ${shape} vc-text-white`}\r\n        onClick={onControlsBtn}\r\n      >\r\n        {text('Full Control List')}\r\n      </button>\r\n      <button\r\n        className= {`vim-help-button ${hover} ${shape} vc-bg-white vc-text-primary`}\r\n        onClick={onHelpBtn}\r\n      >{text('Help Center')}\r\n      </button>\r\n    </div>\r\n  )\r\n}\r\n","import React, { useEffect, useRef, useState } from 'react'\r\nimport MessageBox, { MessageBoxProps, MessageBoxPropsTyped } from './messageBox'\r\nimport { LoadingBox, LoadingBoxProps, LoadingBoxPropsTyped } from './loadingBox'\r\nimport { HelpProps, HelpPropsTyped, MenuHelp } from './help'\r\nimport { Icons } from '../webgl/webglComponent'\r\n\r\nexport type ModalProps = MessageBoxProps | LoadingBoxProps | HelpProps\r\nexport type ModalPropsTyped = (MessageBoxPropsTyped | LoadingBoxPropsTyped | HelpPropsTyped) & {\r\n  canClose: boolean\r\n  onClose?: () => void\r\n}\r\n\r\nexport type ModalRef = {\r\n  current: ModalPropsTyped | undefined\r\n  loading (content: LoadingBoxProps | undefined): void\r\n  message (content: MessageBoxProps | undefined): void\r\n  help (show: boolean): void\r\n}\r\n\r\nexport function useModal (canFollowLinks: boolean) : ModalRef {\r\n  const [modal, setModal] = useState<ModalPropsTyped[] | undefined>([])\r\n  const refModal = useRef(modal)\r\n\r\n  const update = (value: ModalPropsTyped | undefined, index: number) => {\r\n    refModal.current = [...refModal.current]\r\n    refModal.current[index] = value\r\n    setModal(refModal.current)\r\n  }\r\n\r\n  return {\r\n    get current () {\r\n      return refModal.current?.[0] ?? refModal.current?.[1] ?? refModal.current?.[2]\r\n    },\r\n    loading (content: LoadingBoxProps) {\r\n      if (content === undefined) {\r\n        update(undefined, 2)\r\n      } else {\r\n        update({ ...content, type: 'loading', canClose: false }, 2)\r\n      }\r\n    },\r\n    help (show: boolean) {\r\n      if (show) {\r\n        update({ type: 'help', link: canFollowLinks, canClose: true, onClose: () => update(undefined, 0) }, 0)\r\n      } else {\r\n        update(undefined, 0)\r\n      }\r\n    },\r\n    message (content: MessageBoxProps) {\r\n      if (content === undefined) {\r\n        update(undefined, 1)\r\n      } else {\r\n        update({ ...content, type: 'message', onClose: () => update(undefined, 1) }, 1)\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\nexport function Modal (props: {state: ModalRef}) {\r\n  const state = props.state\r\n  useEffect(() => {\r\n    setComponentBehind(state.current !== undefined)\r\n  }, [state])\r\n\r\n  if (state.current === undefined) return null\r\n  return <div\r\n    className=\"vim-modal vc-absolute vc-inset-0 vc-z-40 vc-flex vc-items-center vc-justify-center vc-bg-overflow vc-backdrop-blur\"\r\n    onClick={props.state.current?.canClose ? () => state.current?.onClose?.() : () => {}}\r\n    onContextMenu={(event) => event.preventDefault()}\r\n  >\r\n    {props.state.current?.canClose && closeButton(() => state.current?.onClose?.())}\r\n    {modalContent(state.current)}\r\n  </div>\r\n}\r\n\r\nfunction closeButton (onButton: () => void) {\r\n  if (onButton === undefined) return null\r\n  return (\r\n    <button\r\n      className=\"vim-help-close vc-absolute vc-top-[20px] vc-right-[20px] vc-text-white\"\r\n      onClick={onButton}\r\n    >\r\n      {Icons.close({\r\n        height: '20px',\r\n        width: '20px',\r\n        fill: 'currentColor'\r\n      })}\r\n    </button>\r\n  )\r\n}\r\n\r\nfunction modalContent (modal: ModalPropsTyped) {\r\n  if (modal.type === 'help') {\r\n    return <MenuHelp value={modal}/>\r\n  }\r\n  if (modal.type === 'message') {\r\n    return <MessageBox value={modal} />\r\n  } else {\r\n    return <LoadingBox content={modal} />\r\n  }\r\n}\r\n\r\n/**\r\n * Ads the behind css class to the vim component div.\r\n */\r\nfunction setComponentBehind (value: boolean) {\r\n  const component = document.getElementsByClassName('vim-component')[0]\r\n  const behind = component.classList.contains('behind')\r\n  if (value && !behind) {\r\n    component.classList.add('behind')\r\n  } else if (!value && behind) {\r\n    component.classList.remove('behind')\r\n  }\r\n}\r\n","/**\r\n * @module public-api\r\n */\r\n\r\nimport React, { useEffect, useRef, useState, useMemo } from 'react'\r\nimport { createRoot } from 'react-dom/client'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport '../style.css'\r\nimport 'vim-webgl-viewer/dist/style.css'\r\n\r\nimport * as VIM from 'vim-webgl-viewer/'\r\nimport { AxesPanelMemo } from '../panels/axesPanel'\r\nimport { ControlBar, ControlBarCustomization } from '../controlbar/controlBar'\r\nimport { RestOfScreen } from '../controlbar/restOfScreen'\r\nimport { OptionalBimPanel } from '../bim/bimPanel'\r\nimport {\r\n  ContextMenuCustomization,\r\n  showContextMenu,\r\n  VimContextMenuMemo\r\n} from '../panels/contextMenu'\r\nimport { SidePanelMemo } from '../sidePanel/sidePanel'\r\nimport { useSideState } from '../sidePanel/sideState'\r\nimport { MenuSettings } from '../settings/menuSettings'\r\nimport { MenuToastMemo } from '../panels/toast'\r\nimport { Overlay } from '../panels/overlay'\r\nimport { addPerformanceCounter } from '../panels/performance'\r\nimport { ComponentInputs as ComponentInputScheme } from '../helpers/inputs'\r\nimport { CursorManager } from '../helpers/cursor'\r\nimport { PartialComponentSettings, isTrue } from '../settings/settings'\r\nimport { useSettings } from '../settings/settingsState'\r\nimport { Isolation } from '../helpers/isolation'\r\nimport { ComponentCamera } from '../helpers/camera'\r\nimport { TreeActionRef } from '../bim/bimTree'\r\nimport { VimComponentContainer, createContainer } from '../container'\r\nimport { useViewerState } from './viewerState'\r\nimport { LogoMemo } from '../panels/logo'\r\nimport { VimComponentRef } from './webglComponentRef'\r\nimport { createBimInfoState } from '../bim/bimInfoData'\r\nimport { whenTrue } from '../helpers/utils'\r\nimport { DeferredPromise } from '../helpers/deferredPromise'\r\nimport { ComponentLoader } from './webglLoading'\r\nimport { Modal, useModal } from '../panels/modal'\r\n\r\nexport * as VIM from 'vim-webgl-viewer/'\r\nexport const THREE = VIM.THREE\r\nexport * as ContextMenu from '../panels/contextMenu'\r\nexport * as BimInfo from '../bim/bimInfoData'\r\nexport * as ControlBar from '../controlbar/controlBar'\r\nexport * as Icons from '../panels/icons'\r\nexport * from '../helpers/loadRequest'\r\nexport * from './webglComponentRef'\r\nexport { getLocalComponentSettings as getLocalSettings } from '../settings/settingsStorage'\r\nexport { type ComponentSettings as Settings, type PartialComponentSettings as PartialSettings, defaultSettings } from '../settings/settings'\r\nexport * from '../container'\r\n\r\n/**\r\n * Creates a UI container along with a VIM.Viewer and its associated React component.\r\n * @param container An optional container object. If none is provided, a container will be created.\r\n * @param componentSettings UI Component settings.\r\n*  @param viewerSettings Viewer settings.\r\n * @returns An object containing the resulting container, reactRoot, and viewer.\r\n */\r\nexport function createWebglComponent (\r\n  container?: VimComponentContainer | HTMLElement,\r\n  componentSettings: PartialComponentSettings = {},\r\n  viewerSettings: VIM.PartialViewerSettings = {}\r\n) : Promise<VimComponentRef> {\r\n  const promise = new DeferredPromise<VimComponentRef>()\r\n\r\n  // Create the container\r\n  const cmpContainer = container instanceof HTMLElement\r\n    ? createContainer(container)\r\n    : container ?? createContainer()\r\n\r\n  // Create the viewer inside the container\r\n  const viewer = new VIM.Viewer(viewerSettings)\r\n  viewer.viewport.reparent(cmpContainer.gfx)\r\n\r\n  // Create the React root\r\n  const reactRoot = createRoot(cmpContainer.ui)\r\n\r\n  // Patch the component to clean up after itself\r\n  const patchRef = (cmp : VimComponentRef) => {\r\n    cmp.dispose = () => {\r\n      viewer.dispose()\r\n      cmpContainer.dispose()\r\n      reactRoot.unmount()\r\n    }\r\n    return cmp\r\n  }\r\n\r\n  reactRoot.render(\r\n    <VimComponent\r\n      container={cmpContainer}\r\n      viewer={viewer}\r\n      onMount = {(cmp : VimComponentRef) => promise.resolve(patchRef(cmp))}\r\n      settings={componentSettings}\r\n    />\r\n  )\r\n  return promise\r\n}\r\n\r\n/**\r\n * Represents a React component providing UI for the Vim viewer.\r\n * @param container The container object containing root, gfx, and UI elements for the Vim viewer.\r\n * @param viewer The Vim viewer instance for which UI is provided.\r\n * @param onMount A callback function triggered when the component is mounted. Receives a reference to the Vim component.\r\n * @param settings Optional settings for configuring the Vim component's behavior.\r\n */\r\nexport function VimComponent (props: {\r\n  container: VimComponentContainer\r\n  viewer: VIM.Viewer\r\n  onMount: (component: VimComponentRef) => void\r\n  settings?: PartialComponentSettings\r\n}) {\r\n  const settings = useSettings(props.viewer, props.settings ?? {})\r\n  const modal = useModal(settings.value.capacity.canFollowUrl)\r\n\r\n  const camera = useMemo(() => new ComponentCamera(props.viewer), [])\r\n  const cursor = useMemo(() => new CursorManager(props.viewer), [])\r\n  const loader = useRef(new ComponentLoader(props.viewer, modal))\r\n\r\n  const [isolation] = useState(() => new Isolation(props.viewer, camera, settings.value))\r\n  useEffect(() => isolation.applySettings(settings.value), [settings])\r\n\r\n  const side = useSideState(\r\n    isTrue(settings.value.ui.bimTreePanel) ||\r\n    isTrue(settings.value.ui.bimInfoPanel),\r\n    Math.min(props.container.root.clientWidth * 0.25, 340)\r\n  )\r\n  const [contextMenu, setcontextMenu] = useState<ContextMenuCustomization>()\r\n  const [controlBar, setControlBar] = useState<ControlBarCustomization>()\r\n  const bimInfoRef = createBimInfoState()\r\n\r\n  const viewerState = useViewerState(props.viewer)\r\n  const treeRef = useRef<TreeActionRef>()\r\n  const performanceRef = useRef<HTMLDivElement>(null)\r\n\r\n  useEffect(() => {\r\n    side.setHasBim(viewerState.vim?.bim !== undefined)\r\n  }, [viewerState.vim?.bim])\r\n\r\n  // On first render\r\n  useEffect(() => {\r\n    if (performanceRef.current) {\r\n      addPerformanceCounter(performanceRef.current)\r\n    }\r\n\r\n    cursor.register()\r\n\r\n    // Setup custom input scheme\r\n    props.viewer.viewport.canvas.tabIndex = 0\r\n    props.viewer.inputs.scheme = new ComponentInputScheme(\r\n      props.viewer,\r\n      camera,\r\n      isolation,\r\n      side\r\n    )\r\n\r\n    // Register context menu\r\n    const subContext =\r\n      props.viewer.inputs.onContextMenu.subscribe(showContextMenu)\r\n\r\n    props.onMount({\r\n      container: props.container,\r\n      viewer: props.viewer,\r\n      loader: loader.current,\r\n      isolation,\r\n      camera,\r\n      settings,\r\n      contextMenu: {\r\n        customize: (v) => setcontextMenu(() => v)\r\n      },\r\n      controlBar: {\r\n        customize: (v) => setControlBar(() => v)\r\n      },\r\n      modal,\r\n      bimInfo: bimInfoRef,\r\n      dispose: () => {}\r\n    })\r\n\r\n    // Clean up\r\n    return () => {\r\n      subContext()\r\n      cursor.register()\r\n    }\r\n  }, [])\r\n\r\n  const sidePanel = () => (\r\n    <>\r\n      {<OptionalBimPanel\r\n        viewer={props.viewer}\r\n        camera={camera}\r\n        viewerState={viewerState}\r\n        visible={side.getContent() === 'bim'}\r\n        isolation={isolation}\r\n        treeRef={treeRef}\r\n        settings={settings.value}\r\n        bimInfoRef={bimInfoRef}\r\n      />}\r\n      <MenuSettings\r\n        visible={side.getContent() === 'settings'}\r\n        viewer={props.viewer}\r\n        settings={settings}\r\n      />\r\n    </>\r\n  )\r\n  return (\r\n    <>\r\n      <div className=\"vim-performance-div\" ref={performanceRef}></div>\r\n      <Modal state={modal} />\r\n      <SidePanelMemo\r\n        container={props.container}\r\n        viewer={props.viewer}\r\n        side={side}\r\n        content={sidePanel}\r\n      />\r\n      <RestOfScreen side={side} content={() => {\r\n        return <>\r\n        <Overlay canvas={props.viewer.viewport.canvas}></Overlay>\r\n        {whenTrue(settings.value.ui.logo, <LogoMemo/>)}\r\n        <ControlBar\r\n          viewer={props.viewer}\r\n          camera={camera}\r\n          modal={modal}\r\n          side={side}\r\n          isolation={isolation}\r\n          cursor={cursor}\r\n          settings={settings.value}\r\n          customization={controlBar}\r\n        />\r\n        <AxesPanelMemo\r\n          viewer={props.viewer}\r\n          camera={camera}\r\n          settings={settings}\r\n        />\r\n      </>\r\n      }}/>\r\n\r\n      <VimContextMenuMemo\r\n        viewer={props.viewer}\r\n        camera={camera}\r\n        modal={modal}\r\n        isolation={isolation}\r\n        selection={viewerState.selection}\r\n        customization={contextMenu}\r\n        treeRef={treeRef}\r\n      />\r\n      <MenuToastMemo viewer={props.viewer} side={side}></MenuToastMemo>\r\n      <ReactTooltip\r\n        multiline={true}\r\n        arrowColor=\"transparent\"\r\n        type=\"light\"\r\n        className=\"!vc-max-w-xs !vc-border !vc-border-solid !vc-border-gray-medium !vc-bg-white !vc-text-xs !vc-text-gray-darkest !vc-opacity-100 !vc-shadow-[2px_6px_15px_rgba(0,0,0,0.3)] !vc-transition-opacity\"\r\n        delayShow={200}\r\n      />\r\n    </>\r\n  )\r\n}\r\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport React, { useRef, useState, useEffect } from \"react\";\nimport require$$0 from \"react-dom\";\nclass InputHandler {\n  constructor() {\n    __publicField(this, \"_disconnect\", []);\n  }\n  register() {\n  }\n  dispose() {\n  }\n  unregister() {\n    this._disconnect.forEach((d) => {\n      d();\n    });\n    this._disconnect.length = 0;\n  }\n  // Helper to unregister all event listeners\n  reg(element, eventType, callback) {\n    const f = (e) => {\n      callback(e);\n    };\n    element.addEventListener(eventType, f);\n    this._disconnect.push(() => {\n      element.removeEventListener(eventType, f);\n    });\n  }\n}\nclass Vector3 {\n  constructor(x = 0, y = 0, z = 0) {\n    this.x = x;\n    this.y = y;\n    this.z = z;\n  }\n  set(x, y, z) {\n    this.x = x;\n    this.y = y;\n    this.z = z;\n    return this;\n  }\n  copy(v) {\n    this.x = v.x;\n    this.y = v.y;\n    this.z = v.z;\n    return this;\n  }\n  add(v) {\n    this.x += v.x;\n    this.y += v.y;\n    this.z += v.z;\n    return this;\n  }\n  sub(v) {\n    this.x -= v.x;\n    this.y -= v.y;\n    this.z -= v.z;\n    return this;\n  }\n  multiplyScalar(scalar) {\n    this.x *= scalar;\n    this.y *= scalar;\n    this.z *= scalar;\n    return this;\n  }\n  min(v) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    this.z = Math.min(this.z, v.z);\n    return this;\n  }\n  max(v) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    this.z = Math.max(this.z, v.z);\n    return this;\n  }\n  isValid() {\n    return Number.isFinite(this.x) && Number.isFinite(this.y) && Number.isFinite(this.z);\n  }\n  equals(v) {\n    return this.x === v.x && this.y === v.y && this.z === v.z;\n  }\n  toArray() {\n    return [this.x, this.y, this.z];\n  }\n}\nclass Vector2 {\n  constructor(x = 0, y = 0) {\n    this.x = x;\n    this.y = y;\n  }\n  set(x, y) {\n    this.x = x;\n    this.y = y;\n    return this;\n  }\n  copy(v) {\n    this.x = v.x;\n    this.y = v.y;\n    return this;\n  }\n  add(v) {\n    this.x += v.x;\n    this.y += v.y;\n    return this;\n  }\n  sub(v) {\n    this.x -= v.x;\n    this.y -= v.y;\n    return this;\n  }\n  multiplyScalar(scalar) {\n    this.x *= scalar;\n    this.y *= scalar;\n    return this;\n  }\n  min(v) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    return this;\n  }\n  max(v) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    return this;\n  }\n  equals(v) {\n    return this.x === v.x && this.y === v.y;\n  }\n  isValid() {\n    return Number.isFinite(this.x) && Number.isFinite(this.y);\n  }\n  almostEquals(v, tolerance = Number.EPSILON) {\n    return Math.abs(this.x - v.x) < tolerance && Math.abs(this.y - v.y) < tolerance;\n  }\n  toArray() {\n    return [this.x, this.y];\n  }\n  distanceTo(v) {\n    const dx = this.x - v.x;\n    const dy = this.y - v.y;\n    return Math.sqrt(dx * dx + dy * dy);\n  }\n  clamp01() {\n    this.x = clamp(this.x, 0, 1);\n    this.y = clamp(this.y, 0, 1);\n    return this;\n  }\n}\nclass Segment {\n  constructor(origin = new Vector3(), target = new Vector3()) {\n    __publicField(this, \"origin\");\n    __publicField(this, \"target\");\n    this.origin = origin;\n    this.target = target;\n  }\n  static fromArray(array) {\n    return new Segment(\n      new Vector3(array[0], array[1], array[2]),\n      new Vector3(array[3], array[4], array[5])\n    );\n  }\n  toArray() {\n    return [this.origin.x, this.origin.y, this.origin.z, this.target.x, this.target.y, this.target.z];\n  }\n  isValid() {\n    return !this.origin.equals(this.target);\n  }\n  equals(segment) {\n    return this.origin.equals(segment.origin) && this.target.equals(segment.target);\n  }\n}\nclass Box3 {\n  constructor(min = new Vector3(Infinity, Infinity, Infinity), max = new Vector3(-Infinity, -Infinity, -Infinity)) {\n    __publicField(this, \"min\");\n    __publicField(this, \"max\");\n    this.min = min;\n    this.max = max;\n  }\n  static fromArray(array) {\n    return new Box3().set(\n      new Vector3(array[0], array[1], array[2]),\n      new Vector3(array[3], array[4], array[5])\n    );\n  }\n  isValid() {\n    return this.min.x <= this.max.x && this.min.y <= this.max.y && this.min.z <= this.max.z;\n  }\n  set(min, max) {\n    this.min.copy(min);\n    this.max.copy(max);\n    return this;\n  }\n  setFromPoints(points) {\n    this.min.set(Infinity, Infinity, Infinity);\n    this.max.set(-Infinity, -Infinity, -Infinity);\n    points.forEach((point) => {\n      this.min.min(point);\n      this.max.max(point);\n    });\n    return this;\n  }\n  getCenter(target = new Vector3()) {\n    return target.copy(this.min).add(this.max).multiplyScalar(0.5);\n  }\n  getSize(target = new Vector3()) {\n    return target.copy(this.max).sub(this.min);\n  }\n  containsPoint(point) {\n    return point.x >= this.min.x && point.x <= this.max.x && point.y >= this.min.y && point.y <= this.max.y && point.z >= this.min.z && point.z <= this.max.z;\n  }\n  intersectsBox(box) {\n    return !(box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y || box.max.z < this.min.z || box.min.z > this.max.z);\n  }\n  expandByPoint(point) {\n    this.min.min(point);\n    this.max.max(point);\n    return this;\n  }\n  union(box) {\n    this.min.min(box.min);\n    this.max.max(box.max);\n    return this;\n  }\n  toArray() {\n    return [this.min.x, this.min.y, this.min.z, this.max.x, this.max.y, this.max.z];\n  }\n}\nclass RGBA {\n  constructor(r, g, b, a = 1) {\n    __publicField(this, \"r\");\n    __publicField(this, \"g\");\n    __publicField(this, \"b\");\n    __publicField(this, \"a\");\n    this.r = r;\n    this.g = g;\n    this.b = b;\n    this.a = a;\n  }\n  isValid() {\n    return Number.isFinite(this.r) && Number.isFinite(this.g) && Number.isFinite(this.b) && Number.isFinite(this.a);\n  }\n  equals(color) {\n    return this.r === color.r && this.g === color.g && this.b === color.b && this.a === color.a;\n  }\n  static fromString(str) {\n    str = str.trim();\n    if (str.startsWith(\"(\")) {\n      str = str.substring(1);\n    }\n    if (str.endsWith(\")\")) {\n      str = str.substring(0, str.length - 1);\n    }\n    const parts = str.split(\",\");\n    if (parts.length < 3 || parts.length > 4) {\n      throw new Error(\"Invalid color string format. Expected 3 or 4 components.\");\n    }\n    const r = parseFloat(parts[0]);\n    const g = parseFloat(parts[1]);\n    const b = parseFloat(parts[2]);\n    const a = parts.length === 4 ? parseFloat(parts[3]) : 1;\n    if ([r, g, b, a].some((n) => isNaN(n))) {\n      throw new Error(\"Invalid number in color string.\");\n    }\n    return new RGBA(r, g, b, a);\n  }\n}\nclass RGB {\n  constructor(r, g, b) {\n    __publicField(this, \"r\");\n    __publicField(this, \"g\");\n    __publicField(this, \"b\");\n    this.r = r;\n    this.g = g;\n    this.b = b;\n  }\n}\nclass RGBA32 {\n  constructor(hex) {\n    __publicField(this, \"hex\");\n    if (!Number.isInteger(hex) || hex < 0 || hex > 4294967295) {\n      throw new Error(\"Invalid value: must be a 32-bit unsigned integer\");\n    }\n    this.hex = hex;\n  }\n  static fromInts(r, g, b, a = 1) {\n    if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255 || a < 0 || a > 255) {\n      throw new Error(\"Each RGBA component must be in the range 0-255.\");\n    }\n    const hex = r * 2 ** 24 + g * 2 ** 16 + b * 2 ** 8 + a;\n    return new RGBA32(hex);\n  }\n  static fromFloats(r, g, b, a = 1) {\n    return this.fromInts(\n      remap(r, 255),\n      remap(g, 255),\n      remap(b, 255),\n      remap(a, 255)\n    );\n  }\n  static fromString(str) {\n    if (str.startsWith(\"#\")) {\n      str = str.slice(1);\n    }\n    if (str.length === 3 || str.length === 4) {\n      str = str.split(\"\").map((c) => c + c).join(\"\");\n    }\n    let r = 0, g = 0, b = 0, a = 255;\n    if (str.length === 6 || str.length === 8) {\n      r = parseInt(str.slice(0, 2), 16);\n      g = parseInt(str.slice(2, 4), 16);\n      b = parseInt(str.slice(4, 6), 16);\n      if (str.length === 8) {\n        a = parseInt(str.slice(6, 8), 16);\n      }\n    } else {\n      throw new Error(\"Invalid color string format\");\n    }\n    if ([r, g, b, a].some((v) => isNaN(v))) {\n      throw new Error(\"Invalid color string format\");\n    }\n    return this.fromInts(r, g, b, a);\n  }\n  /**\n   * The red component of the color in the range [0-255].\n   */\n  get r() {\n    return this.hex >>> 24;\n  }\n  /**\n   * The green component of the color in the range [0-255].\n   */\n  get g() {\n    return this.hex >>> 16 & 255;\n  }\n  /**\n   * The blue component of the color in the range [0-255].\n   */\n  get b() {\n    return this.hex >>> 8 & 255;\n  }\n  /**\n   * The alpha component of the color in the range [0-255].\n   */\n  get a() {\n    return this.hex & 255;\n  }\n}\nfunction remap(value, max) {\n  return Math.round(clamp(value, 0, 1) * max);\n}\nfunction clamp(value, min, max) {\n  if (!Number.isFinite(value)) {\n    return min;\n  }\n  return Math.min(Math.max(value, min), max);\n}\nclass InputMouse extends InputHandler {\n  constructor(canvas, rpc, selection, camera) {\n    super();\n    __publicField(this, \"_rpc\");\n    __publicField(this, \"_canvas\");\n    __publicField(this, \"_lastMouseDownPosition\", new Vector2(0, 0));\n    __publicField(this, \"_selection\");\n    __publicField(this, \"_camera\");\n    this._canvas = canvas;\n    this._rpc = rpc;\n    this._selection = selection;\n    this._camera = camera;\n  }\n  register() {\n    this.reg(this._canvas, \"pointerdown\", (e) => {\n      this.handlePointerDown(e);\n    });\n    this.reg(this._canvas, \"pointerup\", (e) => {\n      this.handlePointerUp(e);\n    });\n    this.reg(this._canvas, \"pointermove\", (e) => {\n      this.handlePointerMove(e);\n    });\n    this.reg(this._canvas, \"wheel\", (e) => {\n      this.handleMouseScroll(e);\n    });\n    this.reg(this._canvas, \"dblclick\", (e) => {\n      this.handleDoubleClick(e);\n    });\n  }\n  dispose() {\n    this.unregister();\n  }\n  handlePointerDown(event) {\n    if (event.pointerType !== \"mouse\") return;\n    const pos = this.relativePosition(event);\n    this._rpc.RPCMouseButtonEvent(pos, event.button, true);\n    this._lastMouseDownPosition = pos;\n    this._canvas.setPointerCapture(event.pointerId);\n    event.preventDefault();\n  }\n  handlePointerUp(event) {\n    if (event.pointerType !== \"mouse\") return;\n    const pos = this.relativePosition(event);\n    this._rpc.RPCMouseButtonEvent(pos, event.button, false);\n    this.handleMouseClick(event);\n    this._canvas.releasePointerCapture(event.pointerId);\n    event.preventDefault();\n  }\n  async handleMouseClick(event) {\n    if (event.pointerType !== \"mouse\") return;\n    const pos = this.relativePosition(event);\n    if (!this._lastMouseDownPosition.almostEquals(pos, 0.01)) {\n      return;\n    }\n    const hit = await this._selection.hitTest(pos);\n    if (!hit) {\n      this._selection.clear();\n      return;\n    }\n    if (event.getModifierState(\"Shift\") || event.getModifierState(\"Control\")) {\n      this._selection.toggle(hit.vim, hit.nodeIndex);\n    } else {\n      this._selection.select(hit.vim, hit.nodeIndex);\n    }\n  }\n  handlePointerMove(event) {\n    if (event.pointerType !== \"mouse\") return;\n    this._canvas.focus();\n    const pos = this.relativePosition(event);\n    this._rpc.RPCMouseMoveEvent(pos);\n  }\n  async handleDoubleClick(event) {\n    const pos = this.relativePosition(event);\n    const hit = await this._selection.hitTest(pos);\n    if (hit) {\n      this._camera.frameVim(hit.vim, [hit.nodeIndex], 1);\n    }\n    event.preventDefault();\n  }\n  handleMouseScroll(event) {\n    this._rpc.RPCMouseScrollEvent(Math.sign(event.deltaY));\n    event.preventDefault();\n  }\n  relativePosition(event) {\n    const rect = this._canvas.getBoundingClientRect();\n    return new Vector2(\n      event.offsetX / rect.width,\n      event.offsetY / rect.height\n    );\n  }\n}\nclass InputTouch extends InputHandler {\n  constructor(canvas, rpc) {\n    super();\n    __publicField(this, \"_rpc\");\n    __publicField(this, \"_canvas\");\n    __publicField(this, \"_lastTouchStartPosition\", new Vector2(0, 0));\n    // Add these properties to your InputTouch class\n    __publicField(this, \"_initialTouchDistance\");\n    this._canvas = canvas;\n    this._rpc = rpc;\n  }\n  register() {\n    this.reg(this._canvas, \"touchstart\", (e) => {\n      this.handleTouchStart(e);\n    });\n    this.reg(this._canvas, \"touchmove\", (e) => {\n      this.handleTouchMove(e);\n    });\n    this.reg(this._canvas, \"touchend\", (e) => {\n      this.handleTouchEnd(e);\n    });\n    this.reg(this._canvas, \"touchcancel\", (e) => {\n      this.handleTouchCancel(e);\n    });\n  }\n  dispose() {\n    this.unregister();\n  }\n  handleTouchStart(event) {\n    const touches = event.touches;\n    if (touches.length === 1) {\n      this.handleSingleTouchStart(touches[0]);\n    } else if (touches.length >= 2) {\n      this.handleDoubleTouchStart(touches[0], touches[1]);\n    }\n    event.preventDefault();\n  }\n  handleSingleTouchStart(touch) {\n    const pos = this.relativeTouchPosition(touch);\n    this._rpc.RPCMouseMoveEvent(pos);\n    this._rpc.RPCMouseButtonEvent(pos, 0, true);\n    this._lastTouchStartPosition = pos;\n  }\n  handleDoubleTouchStart(touch1, touch2) {\n    const pos1 = this.relativeTouchPosition(touch1);\n    const pos2 = this.relativeTouchPosition(touch2);\n    this._rpc.RPCMouseButtonEvent(pos1, 1, true);\n    this._initialTouchDistance = pos1.distanceTo(pos2);\n  }\n  handleTouchMove(event) {\n    this._canvas.focus();\n    const touches = event.touches;\n    if (touches.length === 1) {\n      this.handleSingleTouchMove(touches[0]);\n    } else if (touches.length >= 2) {\n      this.handleDoubleTouchMove(touches[0], touches[1]);\n    }\n    event.preventDefault();\n  }\n  handleSingleTouchMove(touch) {\n    const pos = this.relativeTouchPosition(touch);\n    this._rpc.RPCMouseMoveEvent(pos);\n  }\n  handleDoubleTouchMove(touch1, touch2) {\n    const pos1 = this.relativeTouchPosition(touch1);\n    const pos2 = this.relativeTouchPosition(touch2);\n    if (this.handlePinch(pos1, pos2)) {\n      return;\n    }\n    const avg = new Vector2(\n      (pos1.x + pos2.x) / 2,\n      (pos1.y + pos2.y) / 2\n    );\n    this._rpc.RPCMouseMoveEvent(avg);\n  }\n  handlePinch(pos1, pos2) {\n    if (this._initialTouchDistance === void 0) return;\n    const currentDistance = pos1.distanceTo(pos2);\n    const distanceChange = currentDistance - this._initialTouchDistance;\n    if (Math.abs(distanceChange) < 0.01) {\n      return false;\n    }\n    if (distanceChange > 0) {\n      console.log(\"Stretch gesture detected\");\n    } else {\n      console.log(\"Pinch gesture detected\");\n    }\n    this._initialTouchDistance = currentDistance;\n    return true;\n  }\n  handleTouchEnd(event) {\n    const touches = event.changedTouches;\n    if (touches.length === 1) {\n      this.handleSingleTouchEnd(touches[0]);\n    } else if (touches.length >= 2) {\n      this.handleDoubleTouchEnd(touches[0], touches[1]);\n    }\n    this._initialTouchDistance = void 0;\n    event.preventDefault();\n  }\n  handleSingleTouchEnd(touch) {\n    const pos = this.relativeTouchPosition(touch);\n    this._rpc.RPCMouseButtonEvent(pos, 0, false);\n    this.handleTouchClick(touch);\n  }\n  handleDoubleTouchEnd(touch1, touch2) {\n    const pos1 = this.relativeTouchPosition(touch1);\n    const pos2 = this.relativeTouchPosition(touch2);\n    const avg = new Vector2(\n      (pos1.x + pos2.x) / 2,\n      (pos1.y + pos2.y) / 2\n    );\n    this._rpc.RPCMouseButtonEvent(avg, 1, false);\n  }\n  handleTouchCancel(event) {\n    event.preventDefault();\n  }\n  handleTouchClick(touch) {\n    const pos = this.relativeTouchPosition(touch);\n    if (!this.hasMoved(pos)) {\n      this._rpc.RPCMouseSelectEvent(pos, 0);\n    }\n  }\n  hasMoved(pos) {\n    return this._lastTouchStartPosition.distanceTo(pos) > 0.01;\n  }\n  relativeTouchPosition(touch) {\n    const rect = this._canvas.getBoundingClientRect();\n    return new Vector2(\n      (touch.clientX - rect.left) / rect.width,\n      (touch.clientY - rect.top) / rect.height\n    );\n  }\n}\nfunction isURL(str) {\n  try {\n    const url = new URL(str);\n    return url.protocol === \"http:\" || url.protocol === \"https:\";\n  } catch (_) {\n    return false;\n  }\n}\nfunction isFileURI(inputString) {\n  if (typeof inputString !== \"string\" || inputString === null) {\n    return false;\n  }\n  const trimmedString = inputString.trim();\n  const normalizedString = trimmedString.toLowerCase();\n  return normalizedString.startsWith(\"file://\");\n}\nfunction isWebSocketUrl(input) {\n  try {\n    const url = new URL(input);\n    return url.protocol === \"ws:\" || url.protocol === \"wss:\";\n  } catch (e) {\n    return false;\n  }\n}\nclass Marshal {\n  constructor(initialSize = 1024) {\n    __publicField(this, \"buffer\");\n    __publicField(this, \"dataView\");\n    __publicField(this, \"readOffset\", 0);\n    __publicField(this, \"writeOffset\", 0);\n    this.buffer = new ArrayBuffer(initialSize);\n    this.dataView = new DataView(this.buffer);\n  }\n  getBuffer() {\n    return this.buffer.slice(0, this.writeOffset);\n  }\n  ensureCapacity(additionalSize) {\n    const requiredSize = this.writeOffset + additionalSize;\n    if (requiredSize > this.buffer.byteLength) {\n      let newLength = this.buffer.byteLength;\n      while (newLength < requiredSize) {\n        newLength *= 2;\n      }\n      const newBuffer = new ArrayBuffer(newLength);\n      new Uint8Array(newBuffer).set(new Uint8Array(this.buffer));\n      this.buffer = newBuffer;\n      this.dataView = new DataView(this.buffer);\n    }\n  }\n  writeData(data) {\n    this.ensureCapacity(data.byteLength);\n    new Uint8Array(this.buffer, this.writeOffset).set(new Uint8Array(data));\n    this.writeOffset += data.byteLength;\n  }\n  // -------------------- Boolean Methods --------------------\n  writeBoolean(value) {\n    this.ensureCapacity(4);\n    this.dataView.setUint32(this.writeOffset, value ? 1 : 0, true);\n    this.writeOffset += 4;\n  }\n  readBoolean() {\n    const value = this.dataView.getUint32(this.readOffset, true);\n    this.readOffset += 4;\n    return value !== 0;\n  }\n  // -------------------- Int Methods --------------------\n  writeInt(value) {\n    this.ensureCapacity(4);\n    this.dataView.setInt32(this.writeOffset, value, true);\n    this.writeOffset += 4;\n  }\n  readInt() {\n    const value = this.dataView.getInt32(this.readOffset, true);\n    this.readOffset += 4;\n    return value;\n  }\n  // -------------------- UInt Methods --------------------\n  writeUInt(value) {\n    this.ensureCapacity(4);\n    this.dataView.setUint32(this.writeOffset, value, true);\n    this.writeOffset += 4;\n  }\n  readUInt() {\n    const value = this.dataView.getUint32(this.readOffset, true);\n    this.readOffset += 4;\n    return value;\n  }\n  // -------------------- Float Methods --------------------\n  writeFloat(value) {\n    this.ensureCapacity(4);\n    this.dataView.setFloat32(this.writeOffset, value, true);\n    this.writeOffset += 4;\n  }\n  readFloat() {\n    const value = this.dataView.getFloat32(this.readOffset, true);\n    this.readOffset += 4;\n    return value;\n  }\n  // -------------------- String Methods --------------------\n  writeString(value) {\n    const textEncoder = new TextEncoder();\n    const encodedString = textEncoder.encode(value + \"\\0\");\n    this.ensureCapacity(4 + encodedString.byteLength);\n    this.writeUInt(encodedString.length);\n    new Uint8Array(this.buffer, this.writeOffset).set(encodedString);\n    this.writeOffset += encodedString.length;\n  }\n  readString() {\n    const length = this.readUInt();\n    const textDecoder = new TextDecoder();\n    const stringData = new Uint8Array(this.buffer, this.readOffset, length - 1);\n    this.readOffset += length;\n    return textDecoder.decode(stringData);\n  }\n  // -------------------- HitCheckResult Methods --------------------\n  writeHitCheckResult(data) {\n    this.ensureCapacity(4 + 4 + 4 * 3 + 4 * 3);\n    this.writeUInt(data.vimHandle);\n    this.writeUInt(data.nodeIndex);\n    this.writeVector3(data.worldPosition);\n    this.writeVector3(data.worldNormal);\n  }\n  readHitCheckResult() {\n    const vimHandle = this.readUInt();\n    const nodeIndex = this.readUInt();\n    const worldPosition = this.readVector3();\n    const worldNormal = this.readVector3();\n    return {\n      vimHandle,\n      nodeIndex,\n      worldPosition,\n      worldNormal\n    };\n  }\n  // -------------------- VimStatus Methods --------------------\n  writeVimStatus(data) {\n    this.ensureCapacity(4 + 4);\n    this.writeUInt(data.status);\n    this.writeFloat(data.progress);\n  }\n  readVimStatus() {\n    const status = this.readUInt();\n    const progress = this.readFloat();\n    return {\n      status,\n      progress\n    };\n  }\n  // -------------------- Vector2 Methods --------------------\n  writeVector2(data) {\n    this.ensureCapacity(4 + 4);\n    this.writeFloat(data.x);\n    this.writeFloat(data.y);\n  }\n  readVector2() {\n    const x = this.readFloat();\n    const y = this.readFloat();\n    return new Vector2(x, y);\n  }\n  // -------------------- Vector3 Methods --------------------\n  writeVector3(data) {\n    this.ensureCapacity(4 + 4 + 4);\n    this.writeFloat(data.x);\n    this.writeFloat(data.y);\n    this.writeFloat(data.z);\n  }\n  readVector3() {\n    const x = this.readFloat();\n    const y = this.readFloat();\n    const z = this.readFloat();\n    return new Vector3(x, y, z);\n  }\n  // -------------------- Vector4 Methods --------------------\n  writeVector4(data) {\n    this.ensureCapacity(4 + 4 + 4 + 4);\n    this.writeFloat(data.x);\n    this.writeFloat(data.y);\n    this.writeFloat(data.z);\n    this.writeFloat(data.w);\n  }\n  readVector4() {\n    const x = this.readFloat();\n    const y = this.readFloat();\n    const z = this.readFloat();\n    const w = this.readFloat();\n    return {\n      x,\n      y,\n      z,\n      w\n    };\n  }\n  // -------------------- RGBA Methods --------------------\n  writeRGBA(color) {\n    this.ensureCapacity(4 + 4 + 4 + 4);\n    this.writeFloat(color.r);\n    this.writeFloat(color.g);\n    this.writeFloat(color.b);\n    this.writeFloat(color.a);\n  }\n  readRGBA() {\n    const r = this.readFloat();\n    const g = this.readFloat();\n    const b = this.readFloat();\n    const a = this.readFloat();\n    return new RGBA(r, g, b, a);\n  }\n  // -------------------- RGB Methods --------------------\n  writeRGB(color) {\n    this.ensureCapacity(4 + 4 + 4 + 4);\n    this.writeFloat(color.r);\n    this.writeFloat(color.g);\n    this.writeFloat(color.b);\n  }\n  readRGB() {\n    const r = this.readFloat();\n    const g = this.readFloat();\n    const b = this.readFloat();\n    return new RGB(r, g, b);\n  }\n  // -------------------- RGBA32 Methods --------------------\n  writeRGBA32(color) {\n    this.ensureCapacity(4);\n    this.writeUInt(color.hex);\n  }\n  readRGBA32() {\n    const hex = this.readUInt();\n    return new RGBA32(hex);\n  }\n  // -------------------- CameraPositionAndTarget Methods --------------------\n  writeSegment(segment) {\n    this.ensureCapacity(4 * 3 * 2);\n    this.writeVector3(segment.origin);\n    this.writeVector3(segment.target);\n  }\n  readSegment() {\n    const position = this.readVector3();\n    const target = this.readVector3();\n    return new Segment(position, target);\n  }\n  // -------------------- Box3 Methods --------------------\n  writeBox3(data) {\n    this.ensureCapacity(4 * 3 * 2);\n    this.writeVector3(data.min);\n    this.writeVector3(data.max);\n  }\n  readBox3() {\n    const min = this.readVector3();\n    const max = this.readVector3();\n    return new Box3(min, max);\n  }\n  // -------------------- Array of Int Methods --------------------\n  writeArrayOfInt(values) {\n    this.writeArray(values, 4, (v) => this.writeInt(v));\n  }\n  readArrayOfInt() {\n    return this.readArray(() => this.readInt());\n  }\n  // -------------------- Array of UInt Methods --------------------\n  writeArrayOfUInt(values) {\n    this.writeArray(values, 4, (v) => this.writeUInt(v));\n  }\n  readArrayOfUInt() {\n    return this.readArray(() => this.readUInt());\n  }\n  // -------------------- Array of Float Methods --------------------\n  writeArrayOfFloat(values) {\n    this.writeArray(values, 4, (v) => this.writeFloat(v));\n  }\n  readArrayOfFloat() {\n    return this.readArray(() => this.readFloat());\n  }\n  // -------------------- Array of Bool Methods --------------------\n  writeArrayOfBool(values) {\n    this.writeArray(values, 4, (v) => this.writeBoolean(v));\n  }\n  readArrayOfBool() {\n    return this.readArray(() => this.readBoolean());\n  }\n  // -------------------- Array of RGBA32 Methods --------------------\n  writeArrayOfRGBA32(values) {\n    this.writeArray(values, 4, (v) => this.writeRGBA32(v));\n  }\n  readArrayOfRGBA32() {\n    return this.readArray(() => this.readRGBA32());\n  }\n  // -------------------- Helpers --------------------\n  writeArray(data, sizeT, write) {\n    this.ensureCapacity(4 + data.length * sizeT);\n    this.writeUInt(data.length);\n    data.forEach((value) => write(value));\n  }\n  readArray(read) {\n    const length = this.readUInt();\n    const array = [];\n    for (let i = 0; i < length; i++) {\n      array.push(read());\n    }\n    return array;\n  }\n}\nclass MaterialHandles {\n}\n__publicField(MaterialHandles, \"Invalid\", 4294967295);\n__publicField(MaterialHandles, \"Wireframe\", 6);\n__publicField(MaterialHandles, \"FlatShaded\", 2);\n__publicField(MaterialHandles, \"StandardOpaque\", 0);\n__publicField(MaterialHandles, \"StandardGlass\", 1);\n__publicField(MaterialHandles, \"GhostOutline\", 3);\n__publicField(MaterialHandles, \"GhostFill\", 4);\n__publicField(MaterialHandles, \"GhostBoth\", 5);\n__publicField(MaterialHandles, \"Highlight\", 7);\n__publicField(MaterialHandles, \"Invisible\", 8);\nconst materialHandles = [\n  MaterialHandles.Invalid,\n  MaterialHandles.Wireframe,\n  MaterialHandles.FlatShaded,\n  MaterialHandles.StandardOpaque,\n  MaterialHandles.StandardGlass,\n  MaterialHandles.GhostOutline,\n  MaterialHandles.GhostFill,\n  MaterialHandles.GhostBoth,\n  MaterialHandles.Highlight,\n  MaterialHandles.Invisible\n];\nclass RpcClient {\n  constructor(_messenger) {\n    __publicField(this, \"_messenger\");\n    // RPC Generated Code\n    __publicField(this, \"API_VERSION\", \"4.0.0\");\n    this._messenger = _messenger;\n  }\n  RPCClearMaterialOverrides(componentHandle) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCClearMaterialOverrides\");\n    marshal.writeUInt(componentHandle);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCClearScene() {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCClearScene\");\n    this._messenger.sendRPC(marshal);\n  }\n  async RPCCreateMaterialInstances(materialHandle, smoothness, colors) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCCreateMaterialInstances\");\n    marshal.writeUInt(materialHandle);\n    marshal.writeUInt(smoothness);\n    marshal.writeArrayOfRGBA32(colors);\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readUInt();\n    return ret;\n  }\n  async RPCCreateText(position, color, text) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCCreateText\");\n    marshal.writeVector3(position);\n    marshal.writeRGBA32(color);\n    marshal.writeString(text);\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readUInt();\n    return ret;\n  }\n  RPCDestroyMaterialInstances(materialInstanceHandle) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCDestroyMaterialInstances\");\n    marshal.writeArrayOfUInt(materialInstanceHandle);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCDestroyText(componentHandle) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCDestroyText\");\n    marshal.writeUInt(componentHandle);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCEnableSectionBox(enable) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCEnableSectionBox\");\n    marshal.writeBoolean(enable);\n    this._messenger.sendRPC(marshal);\n  }\n  async RPCFrameAll(blendTime) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCFrameAll\");\n    marshal.writeFloat(blendTime);\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readSegment();\n    return ret;\n  }\n  async RPCFrameBox(box, blendTime) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCFrameBox\");\n    marshal.writeBox3(box);\n    marshal.writeFloat(blendTime);\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readSegment();\n    return ret;\n  }\n  async RPCFrameInstances(componentHandle, nodes, blendTime) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCFrameInstances\");\n    marshal.writeUInt(componentHandle);\n    marshal.writeArrayOfUInt(nodes);\n    marshal.writeFloat(blendTime);\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readSegment();\n    return ret;\n  }\n  async RPCFrameVim(componentHandle, blendTime) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCFrameVim\");\n    marshal.writeUInt(componentHandle);\n    marshal.writeFloat(blendTime);\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readSegment();\n    return ret;\n  }\n  async RPCGetAPIVersion() {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCGetAPIVersion\");\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readString();\n    return ret;\n  }\n  async RPCGetBoundingBox(componentHandle, nodes) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCGetBoundingBox\");\n    marshal.writeUInt(componentHandle);\n    marshal.writeArrayOfUInt(nodes);\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readBox3();\n    return ret;\n  }\n  async RPCGetCameraPosition() {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCGetCameraPosition\");\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readSegment();\n    return ret;\n  }\n  async RPCGetLastError() {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCGetLastError\");\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readString();\n    return ret;\n  }\n  async RPCGetVimLoadingState(componentHandle) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCGetVimLoadingState\");\n    marshal.writeUInt(componentHandle);\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readVimStatus();\n    return ret;\n  }\n  RPCGhost(componentHandle, nodes) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCGhost\");\n    marshal.writeUInt(componentHandle);\n    marshal.writeArrayOfUInt(nodes);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCGhostAll(componentHandle) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCGhostAll\");\n    marshal.writeUInt(componentHandle);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCHide(componentHandle, nodes) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCHide\");\n    marshal.writeUInt(componentHandle);\n    marshal.writeArrayOfUInt(nodes);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCHideAABBs(componentHandle, nodes) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCHideAABBs\");\n    marshal.writeUInt(componentHandle);\n    marshal.writeArrayOfUInt(nodes);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCHideAll(componentHandle) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCHideAll\");\n    marshal.writeUInt(componentHandle);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCHideAllAABBs(componentHandle) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCHideAllAABBs\");\n    marshal.writeUInt(componentHandle);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCHighlight(componentHandle, nodes) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCHighlight\");\n    marshal.writeUInt(componentHandle);\n    marshal.writeArrayOfUInt(nodes);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCHighlightAll(componentHandle) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCHighlightAll\");\n    marshal.writeUInt(componentHandle);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCKeyEvent(keyCode, down) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCKeyEvent\");\n    marshal.writeInt(keyCode);\n    marshal.writeBoolean(down);\n    this._messenger.sendRPC(marshal);\n  }\n  async RPCLoadVim(fileName) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCLoadVim\");\n    marshal.writeString(fileName);\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readUInt();\n    return ret;\n  }\n  async RPCLoadVimURL(url, authToken) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCLoadVimURL\");\n    marshal.writeString(url);\n    marshal.writeString(authToken);\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readUInt();\n    return ret;\n  }\n  RPCLockIblRotation(lock) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCLockIblRotation\");\n    marshal.writeBoolean(lock);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCMouseButtonEvent(mousePos, mouseButton, down) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCMouseButtonEvent\");\n    marshal.writeVector2(mousePos);\n    marshal.writeInt(mouseButton);\n    marshal.writeBoolean(down);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCMouseDoubleClickEvent(mousePos, mouseButton) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCMouseDoubleClickEvent\");\n    marshal.writeVector2(mousePos);\n    marshal.writeInt(mouseButton);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCMouseMoveEvent(mousePos) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCMouseMoveEvent\");\n    marshal.writeVector2(mousePos);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCMouseScrollEvent(scrollValue) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCMouseScrollEvent\");\n    marshal.writeInt(scrollValue);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCMouseSelectEvent(mousePos, mouseButton) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCMouseSelectEvent\");\n    marshal.writeVector2(mousePos);\n    marshal.writeInt(mouseButton);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCMoveCameraTo(usePosition, useTarget, position, target, blendTime) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCMoveCameraTo\");\n    marshal.writeBoolean(usePosition);\n    marshal.writeBoolean(useTarget);\n    marshal.writeVector3(position);\n    marshal.writeVector3(target);\n    marshal.writeFloat(blendTime);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCPauseRendering(pause) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCPauseRendering\");\n    marshal.writeBoolean(pause);\n    this._messenger.sendRPC(marshal);\n  }\n  async RPCPerformHitTest(pos) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCPerformHitTest\");\n    marshal.writeVector2(pos);\n    const returnMarshal = await this._messenger.sendRPCWithReturn(marshal);\n    const ret = returnMarshal.readHitCheckResult();\n    return ret;\n  }\n  RPCSetAspectRatio(width, height) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCSetAspectRatio\");\n    marshal.writeUInt(width);\n    marshal.writeUInt(height);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCSetCameraMode(orbit) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCSetCameraMode\");\n    marshal.writeBoolean(orbit);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCSetCameraPosition(state, blendTime) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCSetCameraPosition\");\n    marshal.writeSegment(state);\n    marshal.writeFloat(blendTime);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCSetGhostColor(ghostColor) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCSetGhostColor\");\n    marshal.writeRGBA(ghostColor);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCSetLighting(toneMappingWhitePoint, hdrScale, hdrBackgroundScale, hdrBackgroundSaturation, backgroundBlur, backgroundColor) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCSetLighting\");\n    marshal.writeFloat(toneMappingWhitePoint);\n    marshal.writeFloat(hdrScale);\n    marshal.writeFloat(hdrBackgroundScale);\n    marshal.writeFloat(hdrBackgroundSaturation);\n    marshal.writeFloat(backgroundBlur);\n    marshal.writeRGBA(backgroundColor);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCSetMaterialOverrides(componentHandle, nodes, materialInstanceHandles) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCSetMaterialOverrides\");\n    marshal.writeUInt(componentHandle);\n    marshal.writeArrayOfUInt(nodes);\n    marshal.writeArrayOfUInt(materialInstanceHandles);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCSetMoveSpeed(speed) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCSetMoveSpeed\");\n    marshal.writeFloat(speed);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCSetSectionBox(aabb) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCSetSectionBox\");\n    marshal.writeBox3(aabb);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCShow(componentHandle, nodes) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCShow\");\n    marshal.writeUInt(componentHandle);\n    marshal.writeArrayOfUInt(nodes);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCShowAABBs(componentHandle, nodes, colors) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCShowAABBs\");\n    marshal.writeUInt(componentHandle);\n    marshal.writeArrayOfUInt(nodes);\n    marshal.writeArrayOfRGBA32(colors);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCShowAll(componentHandle) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCShowAll\");\n    marshal.writeUInt(componentHandle);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCStartScene(toneMappingWhitePoint, hdrScale, hdrBackgroundScale, hdrBackgroundSaturation, backgroundBlur, backgroundColor) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCStartScene\");\n    marshal.writeFloat(toneMappingWhitePoint);\n    marshal.writeFloat(hdrScale);\n    marshal.writeFloat(hdrBackgroundScale);\n    marshal.writeFloat(hdrBackgroundSaturation);\n    marshal.writeFloat(backgroundBlur);\n    marshal.writeRGBA(backgroundColor);\n    this._messenger.sendRPC(marshal);\n  }\n  RPCTriggerRenderDocCapture() {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCTriggerRenderDocCapture\");\n    this._messenger.sendRPC(marshal);\n  }\n  RPCUnloadVim(componentHandle) {\n    const marshal = new Marshal();\n    marshal.writeString(\"RPCUnloadVim\");\n    marshal.writeUInt(componentHandle);\n    this._messenger.sendRPC(marshal);\n  }\n}\nclass Validation {\n  //============================================================================\n  // BASIC NUMBER VALIDATIONS\n  //============================================================================\n  static isNumber(value) {\n    if (!Number.isFinite(value)) {\n      console.warn(`Invalid value: must be a finite number. Aborting operation.`);\n      return false;\n    }\n    return true;\n  }\n  static isPositiveNumber(value) {\n    if (!this.isNumber(value)) return false;\n    if (value < 0) {\n      console.warn(`Invalid value: must be a non-negative number. Aborting operation.`);\n      return false;\n    }\n    return true;\n  }\n  static isInteger(value) {\n    if (!Number.isInteger(value)) {\n      console.warn(\"Invalid value: must be an integer. Aborting operation.\");\n      return false;\n    }\n    return true;\n  }\n  static isPositiveInteger(value) {\n    if (!Number.isInteger(value)) {\n      console.warn(\"Invalid value: must be a positive integer. Aborting operation.\");\n      return false;\n    }\n    if (value < 0) {\n      console.warn(\"Invalid value: must be a positive integer. Aborting operation.\");\n      return false;\n    }\n    return true;\n  }\n  static isInRange01(value) {\n    if (!this.isNumber(value)) return false;\n    if (value < 0 || value > 1) {\n      console.warn(\"Invalid value: must be a relative number (0-1). Aborting operation.\");\n      return false;\n    }\n    return true;\n  }\n  static areIntegers(values) {\n    return values.every((i) => this.isInteger(i));\n  }\n  //============================================================================\n  // HANDLE VALIDATIONS\n  //============================================================================\n  static isComponentHandle(handle) {\n    if (!this.isPositiveInteger(handle)) return false;\n    if (handle === INVALID_HANDLE) {\n      console.warn(`Invalid handle ${handle}. Aborting operation.`);\n      return false;\n    }\n    return true;\n  }\n  static areComponentHandles(handles) {\n    return handles.every((h) => this.isComponentHandle(h));\n  }\n  static isMaterialHandle(handle) {\n    if (!materialHandles.includes(handle)) {\n      console.warn(`Invalid material handle ${handle}. Aborting operation.`);\n      return false;\n    }\n    return true;\n  }\n  //============================================================================\n  // VECTOR AND GEOMETRY VALIDATIONS\n  //============================================================================\n  static isValidVector2(value) {\n    if (!value.isValid()) {\n      console.warn(\"Invalid value: must be a valid Vector2. Aborting operation.\");\n      return false;\n    }\n    return true;\n  }\n  static isRelativeVector2(value) {\n    if (!value.isValid()) {\n      console.warn(\"Invalid value: must be a valid Vector2. Aborting operation.\");\n      return false;\n    }\n    if (value.x < 0 || value.x > 1 || value.y < 0 || value.y > 1) {\n      console.warn(\"Invalid value: must be a relative Vector2 (0-1, 0-1). Aborting operation.\");\n      return false;\n    }\n    return true;\n  }\n  static isValidVector3(value) {\n    if (!value.isValid()) {\n      console.warn(\"Invalid Vector3. Aborting operation.\");\n      return false;\n    }\n    return true;\n  }\n  static isValidBox(box) {\n    if (!box.isValid()) {\n      console.warn(\"Box is invalid. Min values must be less than max values\");\n      return false;\n    }\n    return true;\n  }\n  static isValidSegment(segment) {\n    if (!segment.isValid()) {\n      console.warn(\"Segment is invalid. Origin must be different from target\");\n      return false;\n    }\n    return true;\n  }\n  //============================================================================\n  // COLOR VALIDATIONS\n  //============================================================================\n  static isRelativeRGBA(color) {\n    if (color.r < 0 || color.r > 1 || color.g < 0 || color.g > 1 || color.b < 0 || color.b > 1) {\n      console.warn(\"Invalid value: must be a relative color (0-1, 0-1, 0-1)\");\n      return false;\n    }\n    return true;\n  }\n  static isRelativeRGB(color) {\n    if (color.r < 0 || color.r > 1 || color.g < 0 || color.g > 1 || color.b < 0 || color.b > 1) {\n      console.warn(\"Invalid value: must be a relative color (0-1, 0-1, 0-1)\");\n      return false;\n    }\n    return true;\n  }\n  //============================================================================\n  // STRING AND URL VALIDATIONS\n  //============================================================================\n  static isNonEmptyString(value) {\n    if (typeof value !== \"string\" || value.trim() === \"\") {\n      console.warn(\"Invalid value: must be a non-empty string. Aborting operation.\");\n      return false;\n    }\n    return true;\n  }\n  static isURL(value) {\n    if (!isURL(value)) {\n      console.warn(\"Invalid value: must be a valid URL. Aborting operation.\");\n      return false;\n    }\n    return true;\n  }\n  //============================================================================\n  // ARRAY VALIDATIONS\n  //============================================================================\n  static areSameLength(array, array2) {\n    if (array.length !== array2.length) {\n      console.warn(\"Arrays must be of the same length. Aborting operation.\");\n      return false;\n    }\n    return true;\n  }\n  static isFullArray(array) {\n    if (!Array.isArray(array)) {\n      console.warn(\"Invalid value: must be an array. Aborting operation.\");\n      return false;\n    }\n    if (array.length === 0) {\n      console.warn(\"Invalid value: array must not be empty. Aborting operation.\");\n      return false;\n    }\n    for (let i = 0; i < array.length; i++) {\n      if (array[i] === void 0) {\n        console.warn(\"Invalid value: array must not contain undefined values. Aborting operation.\");\n        return false;\n      }\n    }\n    return true;\n  }\n  //============================================================================\n  // UTILITY METHODS FOR NUMBER CONSTRAINTS\n  //============================================================================\n  static clamp(min, max, value) {\n    if (!Number.isFinite(value)) {\n      console.warn(\"Invalid value: must be a finite number. Clamping to min.\");\n      return min;\n    }\n    if (value < min) {\n      console.warn(`Invalid value: must be greater than or equal to ${min}. Clamping to ${min}.`);\n      return min;\n    }\n    if (value > max) {\n      console.warn(`Invalid value: must be less than or equal to ${max}. Clamping to ${max}.`);\n      return max;\n    }\n    return value;\n  }\n  static clamp01(value) {\n    if (!Number.isFinite(value)) {\n      console.warn(\"Invalid value: must be a finite number. Clamping to 0.\");\n    }\n    if (value < 0) {\n      console.warn(\"Invalid value: must be a non-negative number. Clamping to 0.\");\n      return 0;\n    }\n    if (value > 1) {\n      console.warn(\"Invalid value: must be a relative number (0-1). Clamping to 1.\");\n      return 1;\n    }\n    return value;\n  }\n  static min0(value) {\n    if (!Number.isFinite(value)) {\n      console.warn(\"Invalid value: must be a finite number. Clamping to 0.\");\n      return 0;\n    }\n    if (value < 0) {\n      console.warn(\"Invalid value: must be a non-negative number. Clamping to 0.\");\n      return 0;\n    }\n    return value;\n  }\n  static clampRGBA01(value) {\n    return new RGBA(\n      this.clamp01(value.r),\n      this.clamp01(value.g),\n      this.clamp01(value.b),\n      this.clamp01(value.a)\n    );\n  }\n  static clampRGB01(value) {\n    return new RGBA(\n      this.clamp01(value.r),\n      this.clamp01(value.g),\n      this.clamp01(value.b)\n    );\n  }\n}\nfunction invertMap(inputMap) {\n  const invertedMap = /* @__PURE__ */ new Map();\n  inputMap.forEach((value, key) => {\n    const keys = invertedMap.get(value) || [];\n    keys.push(key);\n    invertedMap.set(value, keys);\n  });\n  return invertedMap;\n}\nfunction batchArray(array, batchSize) {\n  if (batchSize <= 0) {\n    throw new Error(\"Batch size must be a positive integer\");\n  }\n  const batchedArray = [];\n  for (let i = 0; i < array.length; i += batchSize) {\n    const batch = array.slice(i, i + batchSize);\n    if (batch.length > 0) {\n      batchedArray.push(batch);\n    }\n  }\n  return batchedArray;\n}\nfunction batchArrays(array1, array2, batchSize) {\n  if (array1.length !== array2.length) {\n    throw new Error(\"Arrays must be of the same length\");\n  }\n  if (batchSize <= 0) {\n    throw new Error(\"Batch size must be a positive integer\");\n  }\n  const batchedArrays = [];\n  for (let i = 0; i < array1.length; i += batchSize) {\n    const batch1 = array1.slice(i, i + batchSize);\n    const batch2 = array2.slice(i, i + batchSize);\n    batchedArrays.push([batch1, batch2]);\n  }\n  return batchedArrays;\n}\nconst defaultBatchSize = 1e4;\nvar InputMode = /* @__PURE__ */ ((InputMode2) => {\n  InputMode2[\"Orbit\"] = \"orbit\";\n  InputMode2[\"Free\"] = \"free\";\n  return InputMode2;\n})(InputMode || {});\nconst defaultSceneSettings = {\n  toneMappingWhitePoint: 0.1009,\n  hdrScale: 1.37,\n  hdrBackgroundScale: 1,\n  hdrBackgroundSaturation: 1,\n  backGroundBlur: 1,\n  backgroundColor: new RGBA(0.9, 0.9, 0.9, 1)\n};\nvar VimLoadingStatus = /* @__PURE__ */ ((VimLoadingStatus2) => {\n  VimLoadingStatus2[VimLoadingStatus2[\"Unknown\"] = 0] = \"Unknown\";\n  VimLoadingStatus2[VimLoadingStatus2[\"Loading\"] = 1] = \"Loading\";\n  VimLoadingStatus2[VimLoadingStatus2[\"Downloading\"] = 2] = \"Downloading\";\n  VimLoadingStatus2[VimLoadingStatus2[\"Done\"] = 3] = \"Done\";\n  VimLoadingStatus2[VimLoadingStatus2[\"FailedToDownload\"] = 4] = \"FailedToDownload\";\n  VimLoadingStatus2[VimLoadingStatus2[\"FailedToLoad\"] = 5] = \"FailedToLoad\";\n  return VimLoadingStatus2;\n})(VimLoadingStatus || {});\nclass RpcSafeClient {\n  constructor(rpc, batchSize = defaultBatchSize) {\n    __publicField(this, \"rpc\");\n    __publicField(this, \"batchSize\");\n    this.rpc = rpc;\n    this.batchSize = batchSize;\n  }\n  /*******************************************************************************\n   * SCENE MANAGEMENT METHODS\n   * Methods for managing the overall scene, including initialization, lighting,\n   * and scene-wide settings.\n   ******************************************************************************/\n  /**\n   * Initializes and starts the scene with specified settings.\n   * @param settings - Optional partial scene settings to override defaults\n   * @remarks If no settings are provided, default values will be used\n   */\n  RPCStartScene(settings) {\n    const s = { ...defaultSceneSettings, ...settings ?? {} };\n    this.rpc.RPCStartScene(\n      Validation.clamp01(s.toneMappingWhitePoint),\n      Validation.min0(s.hdrScale),\n      Validation.clamp01(s.hdrBackgroundScale),\n      Validation.clamp01(s.hdrBackgroundSaturation),\n      Validation.clamp01(s.backGroundBlur),\n      Validation.clampRGBA01(s.backgroundColor)\n    );\n  }\n  /**\n   * Sets the lighting settings for the scene.\n   * @param settings - The lighting settings to apply\n   */\n  RPCSetLighting(settings) {\n    const s = settings;\n    this.rpc.RPCSetLighting(\n      Validation.clamp01(s.toneMappingWhitePoint),\n      Validation.min0(s.hdrScale),\n      Validation.clamp01(s.hdrBackgroundScale),\n      Validation.clamp01(s.hdrBackgroundSaturation),\n      Validation.clamp01(s.backGroundBlur),\n      Validation.clampRGBA01(s.backgroundColor)\n    );\n  }\n  RPCLockIblRotation(lock) {\n    this.rpc.RPCLockIblRotation(lock);\n  }\n  /*******************************************************************************\n   * NODE VISIBILITY METHODS\n   * Methods for controlling node visibility, including show/hide, ghosting,\n   * and highlighting functionality.\n   ******************************************************************************/\n  /**\n   * Hides all nodes in a component, making the entire component invisible.\n   * @param componentHandle - The component to hide entirely\n   * @throws {Error} If the component handle is invalid\n   */\n  RPCHideAll(componentHandle) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    this.rpc.RPCHideAll(componentHandle);\n  }\n  /**\n   * Shows all nodes in a component, making the entire component visible.\n   * @param componentHandle - The component to show entirely\n   * @throws {Error} If the component handle is invalid\n   */\n  RPCShowAll(componentHandle) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    this.rpc.RPCShowAll(componentHandle);\n  }\n  /**\n   * Makes all nodes in a component semi-transparent (ghosted).\n   * @param componentHandle - The component to ghost entirely\n   * @throws {Error} If the component handle is invalid\n   */\n  RPCGhostAll(componentHandle) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    this.rpc.RPCGhostAll(componentHandle);\n  }\n  /**\n   * Highlights all nodes in a component.\n   * @param componentHandle - The component to highlight entirely\n   * @throws {Error} If the component handle is invalid\n   */\n  RPCHighlightAll(componentHandle) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    this.rpc.RPCHighlightAll(componentHandle);\n  }\n  /**\n   * Hides specified nodes in a component, making them invisible.\n   * Large node arrays are automatically processed in batches.\n   * @param componentHandle - The component containing the nodes\n   * @param nodes - Array of node indices to hide\n   * @throws {Error} If the component handle is invalid or nodes array is invalid\n   */\n  RPCHide(componentHandle, nodes) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    if (!Validation.areComponentHandles(nodes)) return;\n    const batches = batchArray(nodes, this.batchSize);\n    for (const batch of batches) {\n      this.rpc.RPCHide(componentHandle, batch);\n    }\n  }\n  /**\n   * Shows specified nodes in a component, making them visible.\n   * Large node arrays are automatically processed in batches.\n   * @param componentHandle - The component containing the nodes\n   * @param nodes - Array of node indices to show\n   * @throws {Error} If the component handle is invalid or nodes array is invalid\n   */\n  RPCShow(componentHandle, nodes) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    if (!Validation.areComponentHandles(nodes)) return;\n    const batches = batchArray(nodes, this.batchSize);\n    for (const batch of batches) {\n      this.rpc.RPCShow(componentHandle, batch);\n    }\n  }\n  /**\n   * Makes specified nodes semi-transparent (ghosted) in a component.\n   * Large node arrays are automatically processed in batches.\n   * @param componentHandle - The component containing the nodes\n   * @param nodes - Array of node indices to ghost\n   * @throws {Error} If the component handle is invalid or nodes array is invalid\n   */\n  RPCGhost(componentHandle, nodes) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    if (!Validation.areComponentHandles(nodes)) return;\n    const batches = batchArray(nodes, this.batchSize);\n    for (const batch of batches) {\n      this.rpc.RPCGhost(componentHandle, batch);\n    }\n  }\n  /**\n   * Highlights specified nodes in a component.\n   * Large node arrays are automatically processed in batches.\n   * @param componentHandle - The component containing the nodes\n   * @param nodes - Array of node indices to highlight\n   * @throws {Error} If the component handle is invalid or nodes array is invalid\n   */\n  RPCHighlight(componentHandle, nodes) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    if (!Validation.areComponentHandles(nodes)) return;\n    const batches = batchArray(nodes, this.batchSize);\n    for (const batch of batches) {\n      this.rpc.RPCHighlight(componentHandle, batch);\n    }\n  }\n  /*******************************************************************************\n   * TEXT AND UI METHODS\n   * Methods for creating and managing 3D text elements in the scene.\n   ******************************************************************************/\n  /**\n   * Creates a 3D text element in the scene.\n   * @param position - The world-space position for the text\n   * @param color - The color of the text\n   * @param text - The content to display\n   * @returns Promise resolving to the handle of the created text component\n   * @throws {Error} If the text is empty\n   */\n  async RPCCreateText(position, color, text) {\n    if (!Validation.isNonEmptyString(text)) return INVALID_HANDLE;\n    if (!Validation.isValidVector3(position)) return INVALID_HANDLE;\n    return await this.safeCall(\n      () => this.rpc.RPCCreateText(position, color, text),\n      INVALID_HANDLE\n    );\n  }\n  /**\n   * Destroys a text component, removing it from the scene.\n   * @param componentHandle - The handle of the text component to destroy\n   * @throws {Error} If the component handle is invalid\n   */\n  RPCDestroyText(componentHandle) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    this.rpc.RPCDestroyText(componentHandle);\n  }\n  /*******************************************************************************\n   * CAMERA AND VIEW METHODS\n   * Methods for controlling camera position, movement, framing, and view settings.\n   ******************************************************************************/\n  /**\n   * Retrieves the current camera position and orientation.\n   * @returns Promise resolving to a segment representing the camera's current position and target\n   */\n  async RPCGetCameraPosition() {\n    return await this.safeCall(\n      () => this.rpc.RPCGetCameraPosition(),\n      void 0\n    );\n  }\n  /**\n   * Sets the camera position and orientation.\n   * @param segment - The desired camera position and target\n   * @param blendTime - Duration of the camera transition in seconds (non-negative)\n   * @throws {Error} If segment is invalid or blendTime is negative\n   */\n  RPCSetCameraPosition(segment, blendTime) {\n    if (!Validation.isValidSegment(segment)) return;\n    blendTime = Validation.clamp01(blendTime);\n    this.rpc.RPCSetCameraPosition(segment, blendTime);\n  }\n  /**\n   * Calculates the bounding box for specified nodes in a component.\n   * Large node arrays are automatically processed in batches for better performance.\n   * @param componentHandle - The component containing the nodes\n   * @param nodes - Array of node indices to calculate bounds for\n   * @returns Promise resolving to the combined bounding box\n   * @throws {Error} If the component handle is invalid or nodes array is invalid\n   */\n  async RPCGetBoundingBox(componentHandle, nodes) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    if (!Validation.areComponentHandles(nodes)) return;\n    return await this.safeCall(\n      () => this.getBoundingBoxBatched(componentHandle, nodes),\n      void 0\n    );\n  }\n  async getBoundingBoxBatched(componentHandle, nodes) {\n    if (nodes.length === 0) {\n      return new Box3();\n    }\n    const batches = batchArray(nodes, this.batchSize);\n    const promises = batches.map(async (batch) => {\n      const aabb = await this.rpc.RPCGetBoundingBox(componentHandle, batch);\n      const v1 = new Vector3(aabb.min.x, aabb.min.y, aabb.min.z);\n      const v2 = new Vector3(aabb.max.x, aabb.max.y, aabb.max.z);\n      return new Box3(v1, v2);\n    });\n    const boxes = await Promise.all(promises);\n    const box = boxes[0];\n    boxes.forEach((b) => box.union(b));\n    return box;\n  }\n  /**\n   * Frames the camera to show all components in the scene.\n   * @param blendTime - Duration of the camera transition in seconds (non-negative)\n   * @returns Promise resolving to camera segment representing the final position\n   */\n  async RPCFrameAll(blendTime) {\n    blendTime = Validation.clamp01(blendTime);\n    return await this.safeCall(\n      () => this.rpc.RPCFrameAll(blendTime),\n      void 0\n    );\n  }\n  /**\n   * Frames a specific VIM component in the scene.\n   * @param componentHandle - The handle of the VIM component to frame\n   * @param blendTime - Duration of the camera transition in seconds (non-negative)\n   * @returns Promise resolving to camera segment representing the final position\n   * @throws {Error} If the component handle is invalid\n   */\n  async RPCFrameVim(componentHandle, blendTime) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    blendTime = Validation.clamp01(blendTime);\n    return await this.safeCall(\n      () => this.rpc.RPCFrameVim(componentHandle, blendTime),\n      void 0\n    );\n  }\n  /**\n   * Frames specific instances within a component. For large numbers of instances,\n   * automatically switches to bounding box framing for better performance.\n   * @param componentHandle - The component containing the instances\n   * @param nodes - Array of node indices to frame\n   * @param blendTime - Duration of the camera transition in seconds (non-negative)\n   * @returns Promise resolving to camera segment representing the final position\n   * @throws {Error} If the component handle is invalid or nodes array is empty\n   */\n  async RPCFrameInstances(componentHandle, nodes, blendTime) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    if (!Validation.areComponentHandles(nodes)) return;\n    blendTime = Validation.clamp01(blendTime);\n    if (nodes.length < this.batchSize) {\n      return await this.safeCall(\n        () => this.rpc.RPCFrameInstances(componentHandle, nodes, blendTime),\n        void 0\n      );\n    } else {\n      const box = await this.safeCall(\n        () => this.getBoundingBoxBatched(componentHandle, nodes),\n        void 0\n      );\n      if (!box) return void 0;\n      return await this.safeCall(\n        () => this.rpc.RPCFrameBox(box, blendTime),\n        void 0\n      );\n    }\n  }\n  /**\n   * Frames the camera to show a specific bounding box.\n   * @param box - The bounding box to frame\n   * @param blendTime - Duration of the camera transition in seconds (non-negative)\n   * @throws {Error} If the box is invalid (min values must be less than max values)\n   */\n  async RPCFrameBox(box, blendTime) {\n    if (!Validation.isValidBox(box)) return;\n    blendTime = Validation.clamp01(blendTime);\n    return await this.safeCall(\n      () => this.rpc.RPCFrameBox(box, blendTime),\n      void 0\n    );\n  }\n  /*******************************************************************************\n   * INPUT HANDLING METHODS\n   * Methods for handling user input including mouse, keyboard, and camera controls.\n   ******************************************************************************/\n  /**\n   * Sets the camera movement speed.\n   * @param speed - The desired movement speed (must be positive)\n   * @throws {Error} If speed is not positive\n   */\n  RPCSetMoveSpeed(speed) {\n    speed = Validation.min0(speed);\n    this.rpc.RPCSetMoveSpeed(speed);\n  }\n  RPCSetCameraMode(mode) {\n    this.rpc.RPCSetCameraMode(\n      mode === \"orbit\"\n      /* Orbit */\n    );\n  }\n  /**\n   * Sets the viewer's aspect ratio.\n   * @param width - The width component of the aspect ratio\n   * @param height - The height component of the aspect ratio\n   * @throws {Error} If width or height are not positive integers\n   */\n  RPCSetAspectRatio(width, height) {\n    if (!Validation.isPositiveInteger(width)) return;\n    if (!Validation.isPositiveInteger(height)) return;\n    this.rpc.RPCSetAspectRatio(width, height);\n  }\n  /*******************************************************************************\n   * VIM FILE MANAGEMENT METHODS\n   * Methods for loading, unloading, and managing VIM files and components.\n   ******************************************************************************/\n  /**\n   * Loads a VIM file from the local filesystem.\n   * @param fileName - The path to the VIM file (supports file:// protocol)\n   * @returns Promise resolving to the handle of the loaded VIM component\n   * @throws {Error} If the filename is invalid or empty\n   */\n  async RPCLoadVim(fileName) {\n    if (!Validation.isNonEmptyString(fileName)) return INVALID_HANDLE;\n    fileName = fileName.replace(\"file:///\", \"file://\");\n    return await this.safeCall(\n      () => this.rpc.RPCLoadVim(fileName),\n      INVALID_HANDLE\n    );\n  }\n  /**\n   * Loads a VIM file from a remote URL.\n   * @param url - The URL of the VIM file to load\n   * @returns Promise resolving to the handle of the loaded VIM component\n   * @throws {Error} If the URL is invalid\n   */\n  async RPCLoadVimURL(url) {\n    if (!Validation.isURL(url)) return INVALID_HANDLE;\n    return await this.safeCall(\n      () => this.rpc.RPCLoadVimURL(url, \"\"),\n      INVALID_HANDLE\n    );\n  }\n  /**\n   * Retrieves the current loading state and progress of a VIM component.\n   * @param componentHandle - The handle of the VIM component\n   * @returns Promise resolving to the current loading state and progress\n   * @throws {Error} If the component handle is invalid\n   */\n  async RPCGetVimLoadingState(componentHandle) {\n    if (!Validation.isComponentHandle(componentHandle)) {\n      return { status: 0, progress: 0 };\n    }\n    const result = await this.safeCall(\n      () => this.rpc.RPCGetVimLoadingState(componentHandle),\n      { status: 0, progress: 0 }\n    );\n    if (!(result.status in VimLoadingStatus)) {\n      result.status = 0;\n    }\n    return result;\n  }\n  /**\n   * Unloads a VIM component and frees associated resources.\n   * @param componentHandle - The handle of the component to unload\n   * @throws {Error} If the component handle is invalid\n   */\n  RPCUnloadVim(componentHandle) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    this.rpc.RPCUnloadVim(componentHandle);\n  }\n  /**\n   * Clears the entire scene, removing all components and resetting to initial state.\n   */\n  RPCClearScene() {\n    this.rpc.RPCClearScene();\n  }\n  /**\n   * Sets the color used for ghosted geometry.\n   * @param ghostColor - The RGBA color to use for ghosted elements\n   */\n  RPCSetGhostColor(ghostColor) {\n    const color = Validation.clampRGBA01(ghostColor);\n    this.rpc.RPCSetGhostColor(color);\n  }\n  /**\n   * Performs hit testing at a specified screen position.\n   * @param pos - Normalized screen coordinates (0-1, 0-1)\n   * @returns Promise resolving to hit test result if something was hit, undefined otherwise\n   */\n  async RPCPerformHitTest(pos) {\n    if (!Validation.isRelativeVector2(pos)) return;\n    const result = await this.safeCall(\n      () => this.rpc.RPCPerformHitTest(pos),\n      void 0\n    );\n    if (!result || result.nodeIndex < 0) {\n      return void 0;\n    }\n    return result;\n  }\n  /**\n   * Sends a mouse button event to the viewer.\n   * @param position - The normalized screen coordinates (0-1, 0-1)\n   * @param mouseButton - The mouse button code (0=left, 1=middle, 2=right)\n   * @param down - True if button is pressed down, false if released\n   * @throws {Error} If mouseButton is not a valid positive integer\n   */\n  RPCMouseButtonEvent(position, mouseButton, down) {\n    if (!Validation.isPositiveInteger(mouseButton)) return;\n    if (!Validation.isRelativeVector2(position)) return;\n    this.rpc.RPCMouseButtonEvent(position, mouseButton, down);\n  }\n  /**\n   * Sends a mouse double-click event to the viewer.\n   * @param position - The normalized screen coordinates (0-1, 0-1)\n   * @param mouseButton - The mouse button code (0=left, 1=middle, 2=right)\n   * @throws {Error} If mouseButton is not a valid positive integer\n   */\n  RPCMouseDoubleClickEvent(position, mouseButton) {\n    if (!Validation.isPositiveInteger(mouseButton)) return;\n    if (!Validation.isRelativeVector2(position)) return;\n    this.rpc.RPCMouseDoubleClickEvent(position, mouseButton);\n  }\n  /**\n   * Sends a mouse movement event to the viewer.\n   * @param position - The normalized screen coordinates (0-1, 0-1)\n   */\n  RPCMouseMoveEvent(position) {\n    if (!Validation.isRelativeVector2(position)) return;\n    this.rpc.RPCMouseMoveEvent(position);\n  }\n  /**\n   * Sends a mouse scroll wheel event to the viewer.\n   * @param scrollValue - The scroll amount (-1 to 1)\n   */\n  RPCMouseScrollEvent(scrollValue) {\n    scrollValue = Validation.clamp(-1, 1, scrollValue);\n    this.rpc.RPCMouseScrollEvent(scrollValue);\n  }\n  /**\n   * Sends a mouse selection event to the viewer.\n   * @param position - The normalized screen coordinates (0-1, 0-1)\n   * @param mouseButton - The mouse button code (0=left, 1=middle, 2=right)\n   * @throws {Error} If mouseButton is not a valid positive integer\n   */\n  RPCMouseSelectEvent(position, mouseButton) {\n    if (!Validation.isPositiveInteger(mouseButton)) return;\n    if (!Validation.isRelativeVector2(position)) return;\n    this.rpc.RPCMouseSelectEvent(position, mouseButton);\n  }\n  /**\n   * Sends a keyboard event to the viewer.\n   * @param keyCode - The key code of the event\n   * @param down - True if key is pressed down, false if released\n   */\n  RPCKeyEvent(keyCode, down) {\n    if (!Validation.isPositiveInteger(keyCode)) return;\n    this.rpc.RPCKeyEvent(keyCode, down);\n  }\n  /*******************************************************************************\n   * MATERIAL MANAGEMENT METHODS\n   * Methods for creating and managing materials and material instances.\n   ******************************************************************************/\n  /**\n   * Creates multiple material instances with the same smoothness but different colors.\n   * Large color arrays are automatically processed in batches for better performance.\n   * @param materialHandle - The base material to create instances from\n   * @param smoothness - The smoothness value to apply (clamped between 0 and 1)\n   * @param colors - Array of colors for each material instance\n   * @returns Array of handles for the created material instances\n   * @throws {Error} If the material handle is invalid or smoothness is out of range\n   */\n  async RPCCreateMaterialInstances(materialHandle, smoothness, colors) {\n    if (!Validation.isMaterialHandle(materialHandle)) return;\n    if (!Validation.isFullArray(colors)) return;\n    if (!Validation.isPositiveNumber(smoothness)) return;\n    return await this.safeCall(\n      () => this.createMaterialInstancesBatched(materialHandle, smoothness, colors),\n      void 0\n    );\n  }\n  async createMaterialInstancesBatched(materialHandle, smoothness, colors) {\n    const batches = batchArray(colors, this.batchSize);\n    const promises = batches.map(async (batch) => {\n      const id = await this.rpc.RPCCreateMaterialInstances(materialHandle, smoothness, batch);\n      return Array.from({ length: batch.length }, (_, index) => id + index);\n    });\n    const handles = await Promise.all(promises);\n    const result = handles.flat();\n    return result;\n  }\n  /**\n   * Destroys multiple material instances, freeing associated resources.\n   * @param materialInstanceHandle - Array of handles for material instances to destroy\n   * @throws {Error} If any handle in the array is invalid\n   */\n  RPCDestroyMaterialInstances(materialInstanceHandle) {\n    if (!Validation.areComponentHandles(materialInstanceHandle)) return;\n    this.rpc.RPCDestroyMaterialInstances(materialInstanceHandle);\n  }\n  /**\n   * Sets material overrides for specific nodes in a component.\n   * Large arrays are automatically processed in batches for better performance.\n   * @param componentHandle - The component containing the nodes\n   * @param nodes - Array of node indices to override\n   * @param materialInstanceHandles - Array of material instance handles to apply (must match nodes length)\n   * @throws {Error} If arrays have different lengths or any handle is invalid\n   */\n  RPCSetMaterialOverrides(componentHandle, nodes, materialInstanceHandles) {\n    if (!Validation.areSameLength(nodes, materialInstanceHandles)) return;\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    if (!Validation.areComponentHandles(nodes)) return;\n    if (!Validation.areIntegers(materialInstanceHandles)) return;\n    this.setMaterialOverridesBatched(\n      componentHandle,\n      nodes,\n      materialInstanceHandles\n    );\n  }\n  setMaterialOverridesBatched(componentHandle, nodes, materialInstanceHandles) {\n    const batches = batchArrays(nodes, materialInstanceHandles, this.batchSize);\n    for (const [batchedNodes, batchedMaterials] of batches) {\n      this.rpc.RPCSetMaterialOverrides(componentHandle, batchedNodes, batchedMaterials);\n    }\n  }\n  /**\n   * Clears all material overrides for the specified component, restoring default materials.\n   * @param componentHandle - The unique identifier of the component\n   * @throws {Error} If the component handle is invalid or INVALID_HANDLE\n   */\n  RPCClearMaterialOverrides(componentHandle) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    this.rpc.RPCClearMaterialOverrides(componentHandle);\n  }\n  /*******************************************************************************\n   * DEBUG AND UTILITY METHODS\n   * Utility methods for debugging, error handling, and misc functionality.\n   ******************************************************************************/\n  /**\n   * Retrieves the current API version from the RPC client.\n   * @returns Promise resolving to the API version string\n   */\n  async RPCGetAPIVersion() {\n    return await this.safeCall(\n      () => this.rpc.RPCGetAPIVersion(),\n      \"\"\n    );\n  }\n  /**\n   * Gets the API version of the underlying RPC client.\n   * @returns The API version string.\n   */\n  get API_VERSION() {\n    return this.rpc.API_VERSION;\n  }\n  /**\n   * Retrieves the last error message from the RPC client.\n   * @returns Promise resolving to the last error message string\n   */\n  async RPCGetLastError() {\n    return await this.safeCall(\n      () => this.rpc.RPCGetLastError(),\n      \"\"\n    );\n  }\n  /**\n   * Pauses or resumes the rendering loop.\n   * @param pause - True to pause rendering, false to resume\n   */\n  RPCPauseRendering(pause) {\n    this.rpc.RPCPauseRendering(pause);\n  }\n  /**\n   * Triggers a RenderDoc frame capture if RenderDoc is attached.\n   */\n  RPCTriggerRenderDocCapture() {\n    this.rpc.RPCTriggerRenderDocCapture();\n  }\n  /**\n   * Shows axis-aligned bounding boxes (AABBs) for specified nodes with custom colors.\n   * Large arrays are automatically processed in batches for better performance.\n   * @param componentHandle - The component containing the nodes\n   * @param nodes - Array of node indices to show AABBs for\n   * @param colors - Array of colors for each AABB (must match nodes length)\n   * @throws {Error} If arrays have different lengths or component handle is invalid\n   */\n  RPCShowAABBs(componentHandle, nodes, colors) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    if (!Validation.areComponentHandles(nodes)) return;\n    const batches = batchArrays(nodes, colors, this.batchSize);\n    for (const [batchedNodes, batchedColors] of batches) {\n      this.rpc.RPCShowAABBs(componentHandle, batchedNodes, batchedColors);\n    }\n  }\n  /**\n   * Hides the axis-aligned bounding boxes (AABBs) for specified nodes.\n   * Large node arrays are automatically processed in batches.\n   * @param componentHandle - The component containing the nodes\n   * @param nodes - Array of node indices whose AABBs should be hidden\n   * @throws {Error} If the component handle is invalid or nodes array is invalid\n   */\n  RPCHideAABBs(componentHandle, nodes) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    if (!Validation.areComponentHandles(nodes)) return;\n    const batches = batchArray(nodes, this.batchSize);\n    for (const batch of batches) {\n      this.rpc.RPCHideAABBs(componentHandle, batch);\n    }\n  }\n  /**\n   * Hides all axis-aligned bounding boxes (AABBs) in a component.\n   * @param componentHandle - The component whose AABBs should be hidden\n   * @throws {Error} If the component handle is invalid\n   */\n  RPCHideAllAABBs(componentHandle) {\n    if (!Validation.isComponentHandle(componentHandle)) return;\n    this.rpc.RPCHideAllAABBs(componentHandle);\n  }\n  async safeCall(func, defaultValue) {\n    try {\n      return await func();\n    } catch (e) {\n      console.error(e);\n      return defaultValue;\n    }\n  }\n}\nconst serverKeys = /* @__PURE__ */ new Set([\n  \"ArrowDown\",\n  \"ArrowLeft\",\n  \"ArrowRight\",\n  \"ArrowUp\",\n  \"w\",\n  \"a\",\n  \"s\",\n  \"d\",\n  \"q\",\n  \"e\",\n  \"Control\",\n  \"Shift\"\n]);\nclass InputKeyboard extends InputHandler {\n  constructor(rpc, selection, camera, inputs) {\n    super();\n    __publicField(this, \"_rpc\");\n    __publicField(this, \"_selection\");\n    __publicField(this, \"_camera\");\n    __publicField(this, \"_inputs\");\n    this._rpc = rpc;\n    this._selection = selection;\n    this._camera = camera;\n    this._inputs = inputs;\n  }\n  register() {\n    this.reg(window, \"keydown\", (e) => {\n      this.handleKeyDown(e);\n    });\n    this.reg(window, \"keyup\", (e) => {\n      this.handleKeyUp(e);\n    });\n  }\n  dispose() {\n    this.unregister();\n  }\n  handleKeyDown(event) {\n    this.handleServerKeys(event, true);\n  }\n  handleKeyUp(event) {\n    this.handleServerKeys(event, false);\n    this.handleClientKeys(event);\n  }\n  handleServerKeys(event, down) {\n    if (!serverKeys.has(event.key)) return;\n    this._rpc.RPCKeyEvent(event.keyCode, down);\n    event.preventDefault();\n  }\n  handleClientKeys(event) {\n    switch (event.key) {\n      case \"Escape\":\n        this._selection.clear();\n        break;\n      case \"f\":\n        this.frameContext();\n        break;\n      case \"Home\":\n        this._camera.restoreSavedPosition();\n        break;\n      case \" \":\n        this._inputs.mode = this._inputs.mode === InputMode.Orbit ? InputMode.Free : InputMode.Orbit;\n        break;\n    }\n  }\n  async frameContext() {\n    if (this._selection.count > 0) {\n      this.frameSelection();\n    } else {\n      this._camera.frameAll();\n    }\n  }\n  async frameSelection() {\n    const box = await this._selection.getBoundingBox();\n    if (!box) return;\n    this._camera.frameBox(box);\n  }\n}\nclass Inputs extends InputHandler {\n  constructor(canvas, rpc, selection, camera, renderer) {\n    super();\n    __publicField(this, \"_rpc\");\n    __publicField(this, \"_canvas\");\n    __publicField(this, \"_inputsMouse\");\n    __publicField(this, \"_inputsTouch\");\n    __publicField(this, \"_keyboard\");\n    __publicField(this, \"_renderer\");\n    __publicField(this, \"_moveSpeed\", 20);\n    __publicField(this, \"_mode\", InputMode.Orbit);\n    this._canvas = canvas;\n    this._rpc = rpc;\n    this._renderer = renderer;\n    this._inputsMouse = new InputMouse(this._canvas, this._rpc, selection, camera);\n    this._inputsTouch = new InputTouch(this._canvas, this._rpc);\n    this._keyboard = new InputKeyboard(this._rpc, selection, camera, this);\n    this.register();\n  }\n  onConnect() {\n    this._rpc.RPCSetMoveSpeed(this._moveSpeed);\n  }\n  register() {\n    this.reg(this._canvas, \"contextmenu\", (e) => {\n      e.preventDefault();\n    });\n    this._inputsMouse.register();\n    this._inputsTouch.register();\n    this._keyboard.register();\n  }\n  get moveSpeed() {\n    return this._moveSpeed;\n  }\n  set moveSpeed(value) {\n    if (this._moveSpeed === value) return;\n    this._moveSpeed = value;\n    this._rpc.RPCSetMoveSpeed(this._moveSpeed);\n  }\n  get mode() {\n    return this._mode;\n  }\n  set mode(value) {\n    if (this._mode === value) return;\n    this._mode = value;\n    this._rpc.RPCSetCameraMode(this._mode);\n    this._renderer.lockIblRotation = this._mode === InputMode.Orbit;\n  }\n  dispose() {\n    this.unregister();\n    this._inputsMouse.dispose();\n    this._inputsTouch.dispose();\n    this._keyboard.dispose();\n  }\n}\nclass StreamLogger {\n  constructor(logger) {\n    __publicField(this, \"_logger\");\n    __publicField(this, \"_frameCount\", 0);\n    __publicField(this, \"_dataLengthSum\", 0);\n    __publicField(this, \"_id\");\n    this._logger = logger;\n  }\n  /**\n   * Starts logging the stream metrics.\n   */\n  startLoggging() {\n    this._id = setInterval(() => {\n      this.logMetrics();\n    }, 5e3);\n  }\n  /**\n   * Stops logging the stream metrics.\n   */\n  stopLogging() {\n    clearInterval(this._id);\n    this._id = void 0;\n  }\n  onFrame(frameMsg) {\n    this._frameCount++;\n    this._dataLengthSum += frameMsg.header.dataLength;\n  }\n  logMetrics() {\n    const avgDataRatePS = this._dataLengthSum / 1024;\n    const avgDataRatePF = this._dataLengthSum / this._frameCount / 1024;\n    const avgFrameRate = this._frameCount;\n    this._logger.log(\n      `\nVideo Stream Metrics: \n\nAverage Frame Size: ${avgDataRatePF} kb \n\nAverage Frame/Second ${avgFrameRate} \n\nAverrage Date/Second ${avgDataRatePS} kb\n`\n    );\n    this._frameCount = 0;\n    this._dataLengthSum = 0;\n  }\n}\nconst HEADER_SIZE = 16;\nfunction readHeader(buffer) {\n  const headerView = new DataView(buffer);\n  return {\n    timestamp: headerView.getInt32(0, true),\n    duration: headerView.getInt32(4, true),\n    frameType: headerView.getInt32(8, true),\n    dataLength: headerView.getInt32(12, true)\n  };\n}\nasync function readBlob(blob) {\n  const headerBytes = blob.slice(0, HEADER_SIZE);\n  const buffer = await headerBytes.arrayBuffer();\n  const header = readHeader(buffer);\n  const data = blob.slice(HEADER_SIZE);\n  const dataBuffer = await data.arrayBuffer();\n  return { header, dataBuffer };\n}\nclass ControllablePromise {\n  constructor() {\n    __publicField(this, \"_resolve\");\n    __publicField(this, \"_reject\");\n    __publicField(this, \"_promise\");\n    this._promise = new Promise((resolve, reject) => {\n      this._resolve = resolve;\n      this._reject = reject;\n    });\n  }\n  get promise() {\n    return this._promise;\n  }\n  resolve(value) {\n    var _a;\n    (_a = this._resolve) == null ? void 0 : _a.call(this, value);\n  }\n  reject(reason) {\n    var _a;\n    (_a = this._reject) == null ? void 0 : _a.call(this, reason);\n  }\n}\nclass ResolvedPromise {\n  constructor(value) {\n    __publicField(this, \"_value\");\n    this._value = value;\n  }\n  get promise() {\n    return Promise.resolve(this._value);\n  }\n  resolve(_) {\n  }\n  reject(_) {\n  }\n}\nconst promise = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  ControllablePromise,\n  ResolvedPromise\n}, Symbol.toStringTag, { value: \"Module\" }));\nvar dist$1 = {};\nvar SimpleEventDispatcher$1 = {};\nvar dist = {};\nvar DispatcherBase$1 = {};\nvar DispatcherWrapper$1 = {};\nObject.defineProperty(DispatcherWrapper$1, \"__esModule\", { value: true });\nDispatcherWrapper$1.DispatcherWrapper = void 0;\nclass DispatcherWrapper {\n  /**\n   * Creates an instance of DispatcherWrapper.\n   * @param {ISubscribable<TEventHandler>} dispatcher\n   *\n   * @memberOf DispatcherWrapper\n   */\n  constructor(dispatcher) {\n    this._subscribe = (fn) => dispatcher.subscribe(fn);\n    this._unsubscribe = (fn) => dispatcher.unsubscribe(fn);\n    this._one = (fn) => dispatcher.one(fn);\n    this._has = (fn) => dispatcher.has(fn);\n    this._clear = () => dispatcher.clear();\n    this._count = () => dispatcher.count;\n    this._onSubscriptionChange = () => dispatcher.onSubscriptionChange;\n  }\n  /**\n   * Triggered when subscriptions are changed (added or removed).\n   *\n   * @readonly\n   * @type {ISubscribable<SubscriptionChangeEventHandler>}\n   * @memberOf DispatcherWrapper\n   */\n  get onSubscriptionChange() {\n    return this._onSubscriptionChange();\n  }\n  /**\n   * Returns the number of subscriptions.\n   *\n   * @readonly\n   * @type {number}\n   * @memberOf DispatcherWrapper\n   */\n  get count() {\n    return this._count();\n  }\n  /**\n   * Subscribe to the event dispatcher.\n   *\n   * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n   * @returns {() => void} A function that unsubscribes the event handler from the event.\n   *\n   * @memberOf DispatcherWrapper\n   */\n  subscribe(fn) {\n    return this._subscribe(fn);\n  }\n  /**\n   * Subscribe to the event dispatcher.\n   *\n   * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n   * @returns {() => void} A function that unsubscribes the event handler from the event.\n   *\n   * @memberOf DispatcherWrapper\n   */\n  sub(fn) {\n    return this.subscribe(fn);\n  }\n  /**\n   * Unsubscribe from the event dispatcher.\n   *\n   * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n   *\n   * @memberOf DispatcherWrapper\n   */\n  unsubscribe(fn) {\n    this._unsubscribe(fn);\n  }\n  /**\n   * Unsubscribe from the event dispatcher.\n   *\n   * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n   *\n   * @memberOf DispatcherWrapper\n   */\n  unsub(fn) {\n    this.unsubscribe(fn);\n  }\n  /**\n   * Subscribe once to the event with the specified name.\n   *\n   * @returns {() => void} A function that unsubscribes the event handler from the event.\n   *\n   * @memberOf DispatcherWrapper\n   */\n  one(fn) {\n    return this._one(fn);\n  }\n  /**\n   * Checks it the event has a subscription for the specified handler.\n   *\n   * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n   *\n   * @memberOf DispatcherWrapper\n   */\n  has(fn) {\n    return this._has(fn);\n  }\n  /**\n   * Clears all the subscriptions.\n   *\n   * @memberOf DispatcherWrapper\n   */\n  clear() {\n    this._clear();\n  }\n}\nDispatcherWrapper$1.DispatcherWrapper = DispatcherWrapper;\nvar Subscription$1 = {};\nObject.defineProperty(Subscription$1, \"__esModule\", { value: true });\nSubscription$1.Subscription = void 0;\nclass Subscription {\n  /**\n   * Creates an instance of Subscription.\n   *\n   * @param {TEventHandler} handler The handler for the subscription.\n   * @param {boolean} isOnce Indicates if the handler should only be executed once.\n   */\n  constructor(handler, isOnce) {\n    this.handler = handler;\n    this.isOnce = isOnce;\n    this.isExecuted = false;\n  }\n  /**\n   * Executes the handler.\n   *\n   * @param {boolean} executeAsync True if the even should be executed async.\n   * @param {*} scope The scope the scope of the event.\n   * @param {IArguments} args The arguments for the event.\n   */\n  execute(executeAsync, scope, args) {\n    if (!this.isOnce || !this.isExecuted) {\n      this.isExecuted = true;\n      var fn = this.handler;\n      if (executeAsync) {\n        setTimeout(() => {\n          fn.apply(scope, args);\n        }, 1);\n      } else {\n        fn.apply(scope, args);\n      }\n    }\n  }\n}\nSubscription$1.Subscription = Subscription;\nvar EventManagement$1 = {};\nObject.defineProperty(EventManagement$1, \"__esModule\", { value: true });\nEventManagement$1.EventManagement = void 0;\nclass EventManagement {\n  /**\n   * Creates an instance of EventManagement.\n   * @param {() => void} unsub An unsubscribe handler.\n   *\n   * @memberOf EventManagement\n   */\n  constructor(unsub) {\n    this.unsub = unsub;\n    this.propagationStopped = false;\n  }\n  /**\n   * Stops the propagation of the event.\n   * Cannot be used when async dispatch is done.\n   *\n   * @memberOf EventManagement\n   */\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n}\nEventManagement$1.EventManagement = EventManagement;\nObject.defineProperty(DispatcherBase$1, \"__esModule\", { value: true });\nDispatcherBase$1.SubscriptionChangeEventDispatcher = DispatcherBase$1.DispatcherBase = void 0;\nconst DispatcherWrapper_1 = DispatcherWrapper$1;\nconst Subscription_1 = Subscription$1;\nconst EventManagement_1$1 = EventManagement$1;\nclass DispatcherBase {\n  constructor() {\n    this._subscriptions = new Array();\n  }\n  /**\n   * Returns the number of subscriptions.\n   *\n   * @readonly\n   * @type {number}\n   * @memberOf DispatcherBase\n   */\n  get count() {\n    return this._subscriptions.length;\n  }\n  /**\n   * Triggered when subscriptions are changed (added or removed).\n   *\n   * @readonly\n   * @type {ISubscribable<SubscriptionChangeEventHandler>}\n   * @memberOf DispatcherBase\n   */\n  get onSubscriptionChange() {\n    if (this._onSubscriptionChange == null) {\n      this._onSubscriptionChange = new SubscriptionChangeEventDispatcher();\n    }\n    return this._onSubscriptionChange.asEvent();\n  }\n  /**\n   * Subscribe to the event dispatcher.\n   *\n   * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n   * @returns A function that unsubscribes the event handler from the event.\n   *\n   * @memberOf DispatcherBase\n   */\n  subscribe(fn) {\n    if (fn) {\n      this._subscriptions.push(this.createSubscription(fn, false));\n      this.triggerSubscriptionChange();\n    }\n    return () => {\n      this.unsubscribe(fn);\n    };\n  }\n  /**\n   * Subscribe to the event dispatcher.\n   *\n   * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n   * @returns A function that unsubscribes the event handler from the event.\n   *\n   * @memberOf DispatcherBase\n   */\n  sub(fn) {\n    return this.subscribe(fn);\n  }\n  /**\n   * Subscribe once to the event with the specified name.\n   *\n   * @param {TEventHandler} fn The event handler that is called when the event is dispatched.\n   * @returns A function that unsubscribes the event handler from the event.\n   *\n   * @memberOf DispatcherBase\n   */\n  one(fn) {\n    if (fn) {\n      this._subscriptions.push(this.createSubscription(fn, true));\n      this.triggerSubscriptionChange();\n    }\n    return () => {\n      this.unsubscribe(fn);\n    };\n  }\n  /**\n   * Checks it the event has a subscription for the specified handler.\n   *\n   * @param {TEventHandler} fn The event handler.\n   *\n   * @memberOf DispatcherBase\n   */\n  has(fn) {\n    if (!fn)\n      return false;\n    return this._subscriptions.some((sub) => sub.handler == fn);\n  }\n  /**\n   * Unsubscribes the handler from the dispatcher.\n   *\n   * @param {TEventHandler} fn The event handler.\n   *\n   * @memberOf DispatcherBase\n   */\n  unsubscribe(fn) {\n    if (!fn)\n      return;\n    let changes = false;\n    for (let i = 0; i < this._subscriptions.length; i++) {\n      if (this._subscriptions[i].handler == fn) {\n        this._subscriptions.splice(i, 1);\n        changes = true;\n        break;\n      }\n    }\n    if (changes) {\n      this.triggerSubscriptionChange();\n    }\n  }\n  /**\n   * Unsubscribes the handler from the dispatcher.\n   *\n   * @param {TEventHandler} fn The event handler.\n   *\n   * @memberOf DispatcherBase\n   */\n  unsub(fn) {\n    this.unsubscribe(fn);\n  }\n  /**\n   * Generic dispatch will dispatch the handlers with the given arguments.\n   *\n   * @protected\n   * @param {boolean} executeAsync `True` if the even should be executed async.\n   * @param {*} scope The scope of the event. The scope becomes the `this` for handler.\n   * @param {IArguments} args The arguments for the event.\n   * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.\n   *\n   * @memberOf DispatcherBase\n   */\n  _dispatch(executeAsync, scope, args) {\n    for (let sub of [...this._subscriptions]) {\n      let ev = new EventManagement_1$1.EventManagement(() => this.unsub(sub.handler));\n      let nargs = Array.prototype.slice.call(args);\n      nargs.push(ev);\n      let s = sub;\n      s.execute(executeAsync, scope, nargs);\n      this.cleanup(sub);\n      if (!executeAsync && ev.propagationStopped) {\n        return { propagationStopped: true };\n      }\n    }\n    if (executeAsync) {\n      return null;\n    }\n    return { propagationStopped: false };\n  }\n  /**\n   * Creates a subscription.\n   *\n   * @protected\n   * @param {TEventHandler} handler The handler.\n   * @param {boolean} isOnce True if the handler should run only one.\n   * @returns {ISubscription<TEventHandler>} The subscription.\n   *\n   * @memberOf DispatcherBase\n   */\n  createSubscription(handler, isOnce) {\n    return new Subscription_1.Subscription(handler, isOnce);\n  }\n  /**\n   * Cleans up subs that ran and should run only once.\n   *\n   * @protected\n   * @param {ISubscription<TEventHandler>} sub The subscription.\n   *\n   * @memberOf DispatcherBase\n   */\n  cleanup(sub) {\n    let changes = false;\n    if (sub.isOnce && sub.isExecuted) {\n      let i = this._subscriptions.indexOf(sub);\n      if (i > -1) {\n        this._subscriptions.splice(i, 1);\n        changes = true;\n      }\n    }\n    if (changes) {\n      this.triggerSubscriptionChange();\n    }\n  }\n  /**\n   * Creates an event from the dispatcher. Will return the dispatcher\n   * in a wrapper. This will prevent exposure of any dispatcher methods.\n   *\n   * @returns {ISubscribable<TEventHandler>}\n   *\n   * @memberOf DispatcherBase\n   */\n  asEvent() {\n    if (this._wrap == null) {\n      this._wrap = new DispatcherWrapper_1.DispatcherWrapper(this);\n    }\n    return this._wrap;\n  }\n  /**\n   * Clears the subscriptions.\n   *\n   * @memberOf DispatcherBase\n   */\n  clear() {\n    if (this._subscriptions.length != 0) {\n      this._subscriptions.splice(0, this._subscriptions.length);\n      this.triggerSubscriptionChange();\n    }\n  }\n  /**\n   * Triggers the subscription change event.\n   *\n   * @private\n   *\n   * @memberOf DispatcherBase\n   */\n  triggerSubscriptionChange() {\n    if (this._onSubscriptionChange != null) {\n      this._onSubscriptionChange.dispatch(this.count);\n    }\n  }\n}\nDispatcherBase$1.DispatcherBase = DispatcherBase;\nclass SubscriptionChangeEventDispatcher extends DispatcherBase {\n  /**\n   * Dispatches the event.\n   *\n   * @param {number} count The currrent number of subscriptions.\n   *\n   * @memberOf SubscriptionChangeEventDispatcher\n   */\n  dispatch(count) {\n    this._dispatch(false, this, arguments);\n  }\n}\nDispatcherBase$1.SubscriptionChangeEventDispatcher = SubscriptionChangeEventDispatcher;\nvar DispatchError$1 = {};\nObject.defineProperty(DispatchError$1, \"__esModule\", { value: true });\nDispatchError$1.DispatchError = void 0;\nclass DispatchError extends Error {\n  /**\n   * Creates an instance of DispatchError.\n   * @param {string} message The message.\n   *\n   * @memberOf DispatchError\n   */\n  constructor(message) {\n    super(message);\n  }\n}\nDispatchError$1.DispatchError = DispatchError;\nvar EventListBase$1 = {};\nObject.defineProperty(EventListBase$1, \"__esModule\", { value: true });\nEventListBase$1.EventListBase = void 0;\nclass EventListBase {\n  constructor() {\n    this._events = {};\n  }\n  /**\n   * Gets the dispatcher associated with the name.\n   *\n   * @param {string} name The name of the event.\n   * @returns {TEventDispatcher} The disptacher.\n   *\n   * @memberOf EventListBase\n   */\n  get(name) {\n    let event = this._events[name];\n    if (event) {\n      return event;\n    }\n    event = this.createDispatcher();\n    this._events[name] = event;\n    return event;\n  }\n  /**\n   * Removes the dispatcher associated with the name.\n   *\n   * @param {string} name\n   *\n   * @memberOf EventListBase\n   */\n  remove(name) {\n    delete this._events[name];\n  }\n}\nEventListBase$1.EventListBase = EventListBase;\nvar HandlingBase$1 = {};\nObject.defineProperty(HandlingBase$1, \"__esModule\", { value: true });\nHandlingBase$1.HandlingBase = void 0;\nclass HandlingBase {\n  /**\n   * Creates an instance of HandlingBase.\n   * @param {TList} events The event list. Used for event management.\n   *\n   * @memberOf HandlingBase\n   */\n  constructor(events) {\n    this.events = events;\n  }\n  /**\n   * Subscribes once to the event with the specified name.\n   * @param {string} name The name of the event.\n   * @param {TEventHandler} fn The event handler.\n   *\n   * @memberOf HandlingBase\n   */\n  one(name, fn) {\n    this.events.get(name).one(fn);\n  }\n  /**\n   * Checks it the event has a subscription for the specified handler.\n   * @param {string} name The name of the event.\n   * @param {TEventHandler} fn The event handler.\n   *\n   * @memberOf HandlingBase\n   */\n  has(name, fn) {\n    return this.events.get(name).has(fn);\n  }\n  /**\n   * Subscribes to the event with the specified name.\n   * @param {string} name The name of the event.\n   * @param {TEventHandler} fn The event handler.\n   *\n   * @memberOf HandlingBase\n   */\n  subscribe(name, fn) {\n    this.events.get(name).subscribe(fn);\n  }\n  /**\n   * Subscribes to the event with the specified name.\n   * @param {string} name The name of the event.\n   * @param {TEventHandler} fn The event handler.\n   *\n   * @memberOf HandlingBase\n   */\n  sub(name, fn) {\n    this.subscribe(name, fn);\n  }\n  /**\n   * Unsubscribes from the event with the specified name.\n   * @param {string} name The name of the event.\n   * @param {TEventHandler} fn The event handler.\n   *\n   * @memberOf HandlingBase\n   */\n  unsubscribe(name, fn) {\n    this.events.get(name).unsubscribe(fn);\n  }\n  /**\n   * Unsubscribes from the event with the specified name.\n   * @param {string} name The name of the event.\n   * @param {TEventHandler} fn The event handler.\n   *\n   * @memberOf HandlingBase\n   */\n  unsub(name, fn) {\n    this.unsubscribe(name, fn);\n  }\n}\nHandlingBase$1.HandlingBase = HandlingBase;\nvar PromiseDispatcherBase$1 = {};\nvar PromiseSubscription$1 = {};\nObject.defineProperty(PromiseSubscription$1, \"__esModule\", { value: true });\nPromiseSubscription$1.PromiseSubscription = void 0;\nclass PromiseSubscription {\n  /**\n   * Creates an instance of PromiseSubscription.\n   * @param {TEventHandler} handler The handler for the subscription.\n   * @param {boolean} isOnce Indicates if the handler should only be executed once.\n   *\n   * @memberOf PromiseSubscription\n   */\n  constructor(handler, isOnce) {\n    this.handler = handler;\n    this.isOnce = isOnce;\n    this.isExecuted = false;\n  }\n  /**\n   * Executes the handler.\n   *\n   * @param {boolean} executeAsync True if the even should be executed async.\n   * @param {*} scope The scope the scope of the event.\n   * @param {IArguments} args The arguments for the event.\n   *\n   * @memberOf PromiseSubscription\n   */\n  async execute(executeAsync, scope, args) {\n    if (!this.isOnce || !this.isExecuted) {\n      this.isExecuted = true;\n      var fn = this.handler;\n      if (executeAsync) {\n        setTimeout(() => {\n          fn.apply(scope, args);\n        }, 1);\n        return;\n      }\n      let result = fn.apply(scope, args);\n      await result;\n    }\n  }\n}\nPromiseSubscription$1.PromiseSubscription = PromiseSubscription;\nObject.defineProperty(PromiseDispatcherBase$1, \"__esModule\", { value: true });\nPromiseDispatcherBase$1.PromiseDispatcherBase = void 0;\nconst PromiseSubscription_1 = PromiseSubscription$1;\nconst EventManagement_1 = EventManagement$1;\nconst DispatcherBase_1 = DispatcherBase$1;\nconst DispatchError_1 = DispatchError$1;\nclass PromiseDispatcherBase extends DispatcherBase_1.DispatcherBase {\n  /**\n   * The normal dispatch cannot be used in this class.\n   *\n   * @protected\n   * @param {boolean} executeAsync `True` if the even should be executed async.\n   * @param {*} scope The scope of the event. The scope becomes the `this` for handler.\n   * @param {IArguments} args The arguments for the event.\n   * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.\n   *\n   * @memberOf DispatcherBase\n   */\n  _dispatch(executeAsync, scope, args) {\n    throw new DispatchError_1.DispatchError(\"_dispatch not supported. Use _dispatchAsPromise.\");\n  }\n  /**\n   * Crates a new subscription.\n   *\n   * @protected\n   * @param {TEventHandler} handler The handler.\n   * @param {boolean} isOnce Indicates if the handler should only run once.\n   * @returns {ISubscription<TEventHandler>} The subscription.\n   *\n   * @memberOf PromiseDispatcherBase\n   */\n  createSubscription(handler, isOnce) {\n    return new PromiseSubscription_1.PromiseSubscription(handler, isOnce);\n  }\n  /**\n   * Generic dispatch will dispatch the handlers with the given arguments.\n   *\n   * @protected\n   * @param {boolean} executeAsync `True` if the even should be executed async.\n   * @param {*} scope The scope of the event. The scope becomes the `this` for handler.\n   * @param {IArguments} args The arguments for the event.\n   * @returns {(IPropagationStatus | null)} The propagation status, or if an `executeAsync` is used `null`.\n   *\n   * @memberOf DispatcherBase\n   */\n  async _dispatchAsPromise(executeAsync, scope, args) {\n    for (let sub of [...this._subscriptions]) {\n      let ev = new EventManagement_1.EventManagement(() => this.unsub(sub.handler));\n      let nargs = Array.prototype.slice.call(args);\n      nargs.push(ev);\n      let ps = sub;\n      await ps.execute(executeAsync, scope, nargs);\n      this.cleanup(sub);\n      if (!executeAsync && ev.propagationStopped) {\n        return { propagationStopped: true };\n      }\n    }\n    if (executeAsync) {\n      return null;\n    }\n    return { propagationStopped: false };\n  }\n}\nPromiseDispatcherBase$1.PromiseDispatcherBase = PromiseDispatcherBase;\n(function(exports) {\n  /*!\n   * Strongly Typed Events for TypeScript - Core\n   * https://github.com/KeesCBakker/StronlyTypedEvents/\n   * http://keestalkstech.com\n   *\n   * Copyright Kees C. Bakker / KeesTalksTech\n   * Released under the MIT license\n   */\n  Object.defineProperty(exports, \"__esModule\", { value: true });\n  exports.SubscriptionChangeEventDispatcher = exports.HandlingBase = exports.PromiseDispatcherBase = exports.PromiseSubscription = exports.DispatchError = exports.EventManagement = exports.EventListBase = exports.DispatcherWrapper = exports.DispatcherBase = exports.Subscription = void 0;\n  const DispatcherBase_12 = DispatcherBase$1;\n  Object.defineProperty(exports, \"DispatcherBase\", { enumerable: true, get: function() {\n    return DispatcherBase_12.DispatcherBase;\n  } });\n  Object.defineProperty(exports, \"SubscriptionChangeEventDispatcher\", { enumerable: true, get: function() {\n    return DispatcherBase_12.SubscriptionChangeEventDispatcher;\n  } });\n  const DispatchError_12 = DispatchError$1;\n  Object.defineProperty(exports, \"DispatchError\", { enumerable: true, get: function() {\n    return DispatchError_12.DispatchError;\n  } });\n  const DispatcherWrapper_12 = DispatcherWrapper$1;\n  Object.defineProperty(exports, \"DispatcherWrapper\", { enumerable: true, get: function() {\n    return DispatcherWrapper_12.DispatcherWrapper;\n  } });\n  const EventListBase_1 = EventListBase$1;\n  Object.defineProperty(exports, \"EventListBase\", { enumerable: true, get: function() {\n    return EventListBase_1.EventListBase;\n  } });\n  const EventManagement_12 = EventManagement$1;\n  Object.defineProperty(exports, \"EventManagement\", { enumerable: true, get: function() {\n    return EventManagement_12.EventManagement;\n  } });\n  const HandlingBase_1 = HandlingBase$1;\n  Object.defineProperty(exports, \"HandlingBase\", { enumerable: true, get: function() {\n    return HandlingBase_1.HandlingBase;\n  } });\n  const PromiseDispatcherBase_1 = PromiseDispatcherBase$1;\n  Object.defineProperty(exports, \"PromiseDispatcherBase\", { enumerable: true, get: function() {\n    return PromiseDispatcherBase_1.PromiseDispatcherBase;\n  } });\n  const PromiseSubscription_12 = PromiseSubscription$1;\n  Object.defineProperty(exports, \"PromiseSubscription\", { enumerable: true, get: function() {\n    return PromiseSubscription_12.PromiseSubscription;\n  } });\n  const Subscription_12 = Subscription$1;\n  Object.defineProperty(exports, \"Subscription\", { enumerable: true, get: function() {\n    return Subscription_12.Subscription;\n  } });\n})(dist);\nObject.defineProperty(SimpleEventDispatcher$1, \"__esModule\", { value: true });\nSimpleEventDispatcher$1.SimpleEventDispatcher = void 0;\nconst ste_core_1$2 = dist;\nclass SimpleEventDispatcher extends ste_core_1$2.DispatcherBase {\n  /**\n   * Creates an instance of SimpleEventDispatcher.\n   *\n   * @memberOf SimpleEventDispatcher\n   */\n  constructor() {\n    super();\n  }\n  /**\n   * Dispatches the event.\n   *\n   * @param {TArgs} args The arguments object.\n   * @returns {IPropagationStatus} The status of the event.\n   *\n   * @memberOf SimpleEventDispatcher\n   */\n  dispatch(args) {\n    const result = this._dispatch(false, this, arguments);\n    if (result == null) {\n      throw new ste_core_1$2.DispatchError(\"Got `null` back from dispatch.\");\n    }\n    return result;\n  }\n  /**\n   * Dispatches the event without waiting for the result.\n   *\n   * @param {TArgs} args The arguments object.\n   *\n   * @memberOf SimpleEventDispatcher\n   */\n  dispatchAsync(args) {\n    this._dispatch(true, this, arguments);\n  }\n  /**\n   * Creates an event from the dispatcher. Will return the dispatcher\n   * in a wrapper. This will prevent exposure of any dispatcher methods.\n   *\n   * @returns {ISimpleEvent<TArgs>} The event.\n   *\n   * @memberOf SimpleEventDispatcher\n   */\n  asEvent() {\n    return super.asEvent();\n  }\n}\nSimpleEventDispatcher$1.SimpleEventDispatcher = SimpleEventDispatcher;\nvar SimpleEventHandlingBase$1 = {};\nvar SimpleEventList$1 = {};\nObject.defineProperty(SimpleEventList$1, \"__esModule\", { value: true });\nSimpleEventList$1.SimpleEventList = void 0;\nconst ste_core_1$1 = dist;\nconst SimpleEventDispatcher_1$1 = SimpleEventDispatcher$1;\nclass SimpleEventList extends ste_core_1$1.EventListBase {\n  /**\n   * Creates a new SimpleEventList instance.\n   */\n  constructor() {\n    super();\n  }\n  /**\n   * Creates a new dispatcher instance.\n   */\n  createDispatcher() {\n    return new SimpleEventDispatcher_1$1.SimpleEventDispatcher();\n  }\n}\nSimpleEventList$1.SimpleEventList = SimpleEventList;\nObject.defineProperty(SimpleEventHandlingBase$1, \"__esModule\", { value: true });\nSimpleEventHandlingBase$1.SimpleEventHandlingBase = void 0;\nconst ste_core_1 = dist;\nconst SimpleEventList_1 = SimpleEventList$1;\nclass SimpleEventHandlingBase extends ste_core_1.HandlingBase {\n  constructor() {\n    super(new SimpleEventList_1.SimpleEventList());\n  }\n}\nSimpleEventHandlingBase$1.SimpleEventHandlingBase = SimpleEventHandlingBase;\nvar NonUniformSimpleEventList$1 = {};\nObject.defineProperty(NonUniformSimpleEventList$1, \"__esModule\", { value: true });\nNonUniformSimpleEventList$1.NonUniformSimpleEventList = void 0;\nconst SimpleEventDispatcher_1 = SimpleEventDispatcher$1;\nclass NonUniformSimpleEventList {\n  constructor() {\n    this._events = {};\n  }\n  /**\n   * Gets the dispatcher associated with the name.\n   * @param name The name of the event.\n   */\n  get(name) {\n    if (this._events[name]) {\n      return this._events[name];\n    }\n    const event = this.createDispatcher();\n    this._events[name] = event;\n    return event;\n  }\n  /**\n   * Removes the dispatcher associated with the name.\n   * @param name The name of the event.\n   */\n  remove(name) {\n    delete this._events[name];\n  }\n  /**\n   * Creates a new dispatcher instance.\n   */\n  createDispatcher() {\n    return new SimpleEventDispatcher_1.SimpleEventDispatcher();\n  }\n}\nNonUniformSimpleEventList$1.NonUniformSimpleEventList = NonUniformSimpleEventList;\n(function(exports) {\n  Object.defineProperty(exports, \"__esModule\", { value: true });\n  exports.NonUniformSimpleEventList = exports.SimpleEventList = exports.SimpleEventHandlingBase = exports.SimpleEventDispatcher = void 0;\n  const SimpleEventDispatcher_12 = SimpleEventDispatcher$1;\n  Object.defineProperty(exports, \"SimpleEventDispatcher\", { enumerable: true, get: function() {\n    return SimpleEventDispatcher_12.SimpleEventDispatcher;\n  } });\n  const SimpleEventHandlingBase_1 = SimpleEventHandlingBase$1;\n  Object.defineProperty(exports, \"SimpleEventHandlingBase\", { enumerable: true, get: function() {\n    return SimpleEventHandlingBase_1.SimpleEventHandlingBase;\n  } });\n  const NonUniformSimpleEventList_1 = NonUniformSimpleEventList$1;\n  Object.defineProperty(exports, \"NonUniformSimpleEventList\", { enumerable: true, get: function() {\n    return NonUniformSimpleEventList_1.NonUniformSimpleEventList;\n  } });\n  const SimpleEventList_12 = SimpleEventList$1;\n  Object.defineProperty(exports, \"SimpleEventList\", { enumerable: true, get: function() {\n    return SimpleEventList_12.SimpleEventList;\n  } });\n})(dist$1);\nclass SocketClient {\n  /**\n   * Constructs a new Messenger instance.\n   * @param logger - The logger for logging messages.\n   */\n  constructor(logger) {\n    __publicField(this, \"_streamLogger\");\n    __publicField(this, \"_logger\");\n    __publicField(this, \"_socket\");\n    __publicField(this, \"_queue\", []);\n    __publicField(this, \"_pendingRPCs\", /* @__PURE__ */ new Map());\n    __publicField(this, \"_rpcCallId\", 0);\n    __publicField(this, \"_reconnectTimeout\");\n    __publicField(this, \"_connectionTimeout\");\n    /**\n     * Callback function to handle incoming video frames.\n     * @param msg - The video frame message received from the server.\n     */\n    __publicField(this, \"onVideoFrame\", () => {\n    });\n    __publicField(this, \"_state\", { status: \"disconnected\" });\n    __publicField(this, \"_onStatusUpdate\", new dist$1.SimpleEventDispatcher());\n    __publicField(this, \"_connectPromise\", new ResolvedPromise(void 0));\n    __publicField(this, \"_connectingUrl\");\n    this._logger = logger;\n    this._rpcCallId = 0;\n    this._streamLogger = new StreamLogger(logger);\n  }\n  /**\n   * Event that is triggered when the connection status updates.\n   * @returns An event dispatcher for connection status updates.\n   */\n  get onStatusUpdate() {\n    return this._onStatusUpdate.asEvent();\n  }\n  /**\n   * Gets the current connection status.\n   * @returns The current ClientStatus.\n   */\n  get state() {\n    return this._state;\n  }\n  /**\n   * Updates the connection state and dispatches the status update event.\n   * @param state - The new connection state.\n   */\n  updateState(state) {\n    this._state = state;\n    this._onStatusUpdate.dispatch(state);\n  }\n  /**\n   * Gets the URL to which the messenger is currently connecting or connected.\n   * @returns The WebSocket URL as a string, or undefined if not set.\n   */\n  get url() {\n    return this._connectingUrl;\n  }\n  /**\n   * Connects to a WebSocket server at the specified URL.\n   * @param url - The WebSocket URL to connect to.\n   * @returns A promise that resolves when the connection is established.\n   */\n  connect(url) {\n    if (!isWebSocketUrl(url)) {\n      this._disconnect({ status: \"error\", error: \"connection\", serverUrl: url });\n      return Promise.reject(`Invalid WebSocket URL: ${url}`);\n    }\n    if (this._socket) {\n      if (this._socket.url === url) {\n        return this._connectPromise.promise;\n      } else {\n        this._clearSocket();\n        this._connectPromise.reject(\"Connection to a different server\");\n        this._connectPromise = new ControllablePromise();\n      }\n    } else if (this._connectingUrl !== url) {\n      this._connectPromise = new ControllablePromise();\n      this._connectingUrl = url;\n    }\n    this.updateState({ status: \"connecting\" });\n    try {\n      this._socket = new WebSocket(url);\n      this._connectionTimeout = setTimeout(() => this._onClose(), 5e3);\n      this._socket.onopen = (e) => {\n        this._onOpen(e);\n      };\n      this._socket.onclose = (e) => {\n        this._onClose(e);\n      };\n      this._socket.onerror = (e) => {\n        this._onClose(e);\n      };\n      this._socket.onmessage = async (e) => {\n        await this.onMessage(e);\n      };\n    } catch (e) {\n      this._logger.error(\"Error opening socket: \", e);\n      this._onClose();\n    }\n    return this._connectPromise.promise;\n  }\n  /**\n   * Disconnects from the current WebSocket server.\n   */\n  disconnect(error) {\n    this._logger.log(\"Disconnecting from \" + this._connectingUrl);\n    this._connectingUrl = void 0;\n    this._disconnect(error);\n  }\n  /**\n   * Handles the disconnection logic, stopping logging and clearing the socket.\n   */\n  _disconnect(error) {\n    clearTimeout(this._reconnectTimeout);\n    clearTimeout(this._connectionTimeout);\n    this._queue.length = 0;\n    this._streamLogger.stopLogging();\n    this._clearSocket();\n    this._clearPendingRPCs();\n    this.updateState(error ?? { status: \"disconnected\" });\n  }\n  /**\n   * Clears the WebSocket event handlers and closes the connection if open.\n   */\n  _clearSocket() {\n    if (this._socket === void 0) return;\n    this._socket.onopen = () => {\n    };\n    this._socket.onclose = () => {\n    };\n    this._socket.onerror = () => {\n    };\n    this._socket.onmessage = () => {\n    };\n    if (this._socket.readyState === WebSocket.OPEN) {\n      this._socket.close();\n    }\n    this._socket = void 0;\n  }\n  /**\n   * Handles incoming messages from the WebSocket server.\n   * @param event - The message event containing the data.\n   */\n  async onMessage(event) {\n    const msg = await readBlob(event.data);\n    switch (msg.header.frameType) {\n      case 2:\n        this._logger.log(\"Server Disconnected (User Timeout)\");\n        this.disconnect();\n        return;\n      case 255:\n        this.handleRPCResponse(msg.dataBuffer);\n        return;\n      case 254:\n        return;\n      case 0:\n      case 1:\n        this.onVideoFrame(msg);\n        this._streamLogger.onFrame(msg);\n        return;\n    }\n  }\n  /**\n   * Handles RPC responses received from the server.\n   * @param buffer - The ArrayBuffer containing the response data.\n   */\n  handleRPCResponse(buffer) {\n    const m2 = new Marshal();\n    m2.writeData(buffer);\n    const callId = m2.readUInt();\n    const pendingRPC = this._pendingRPCs.get(callId);\n    if (pendingRPC !== void 0) {\n      pendingRPC.resolve(m2);\n      this._pendingRPCs.delete(callId);\n    } else {\n      this._logger.log(`Received response for non-pending or already handled RPC call with callId ${callId}`);\n    }\n  }\n  /**\n   * Handler for WebSocket 'open' event.\n   * @param _ - The event object (unused).\n   */\n  async _onOpen(_) {\n    var _a, _b;\n    clearTimeout(this._connectionTimeout);\n    this._streamLogger.startLoggging();\n    this._logger.log(\"Connected to \" + ((_a = this._socket) == null ? void 0 : _a.url));\n    for (const message of this._queue) {\n      (_b = this._socket) == null ? void 0 : _b.send(message);\n    }\n    this._queue.length = 0;\n    this.updateState({ status: \"connected\" });\n    this._connectPromise.resolve();\n  }\n  /**\n   * Handler for WebSocket 'close' event.\n   * @param _event - The event object.\n   */\n  _onClose(_event) {\n    clearTimeout(this._connectionTimeout);\n    this._disconnect({ status: \"error\", error: \"connection\", serverUrl: this._connectingUrl });\n    this._logger.log(\"WebSocket closed.\");\n    this._logger.log(\"Attempting to reconnect in 5 seconds\");\n    this._reconnectTimeout = setTimeout(() => {\n      this.updateState({ status: \"connecting\" });\n      this.connect(this._connectingUrl);\n    }, 5e3);\n  }\n  /**\n   * Sends binary data over the WebSocket connection.\n   * @param data - The ArrayBuffer containing the binary data to send.\n   */\n  sendBinary(data) {\n    var _a;\n    if (this.state.status === \"connecting\") {\n      this._queue.push(data);\n    } else if (this.state.status === \"connected\") {\n      (_a = this._socket) == null ? void 0 : _a.send(data);\n    } else if (this.state.status === \"disconnected\") ;\n  }\n  /**\n   * Sends an RPC request and waits for a response.\n   * @param marshal - The Marshal containing the request data.\n   * @returns A promise that resolves with the response data.\n   */\n  async sendRPCWithReturn(marshal) {\n    const promise2 = new Promise((resolve, reject) => {\n      const callId = this._rpcCallId++;\n      this._rpcCallId = this._rpcCallId % Number.MAX_SAFE_INTEGER;\n      this._pendingRPCs.set(callId, { resolve, reject });\n      marshal.writeUInt(callId);\n      this.sendBinary(marshal.getBuffer());\n    });\n    return await promise2;\n  }\n  /**\n   * Sends an RPC request without expecting a response.\n   * @param marshal - The Marshal containing the request data.\n   */\n  sendRPC(marshal) {\n    const callId = 4294967295;\n    marshal.writeUInt(callId);\n    this.sendBinary(marshal.getBuffer());\n  }\n  _clearPendingRPCs() {\n    for (const pendingRPC of this._pendingRPCs.values()) {\n      pendingRPC.reject(\"Connection closed\");\n    }\n    this._pendingRPCs.clear();\n  }\n  /**\n   * Disposes of the messenger, cleaning up resources and event handlers.\n   */\n  dispose() {\n    this.disconnect();\n    this._onStatusUpdate.clear();\n    this.onVideoFrame = () => {\n    };\n  }\n}\nconst vertexShaderSource = `\n  attribute vec2 xy;\n  varying highp vec2 uv;\n  void main(void) {\n    gl_Position = vec4(xy, 0.0, 1.0);\n    // Map vertex coordinates (-1 to +1) to UV coordinates (0 to 1).\n    // UV coordinates are Y-flipped relative to vertex coordinates.\n    uv = vec2((1.0 + xy.x) / 2.0, (1.0 - xy.y) / 2.0);\n  }\n`;\nconst fragmentShaderSource = `\n  varying highp vec2 uv;\n  uniform sampler2D texture;\n  void main(void) {\n    gl_FragColor = texture2D(texture, uv);\n  }\n`;\nclass WebGLRenderer {\n  constructor(canvas) {\n    __publicField(this, \"canvas\", null);\n    __publicField(this, \"ctx\", null);\n    this.canvas = canvas;\n    const gl = this.ctx = canvas.getContext(\n      \"webgl2\"\n    );\n    const vertexShader = gl.createShader(gl.VERTEX_SHADER);\n    if (vertexShader !== null) {\n      gl.shaderSource(vertexShader, vertexShaderSource);\n      gl.compileShader(vertexShader);\n      if (gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS) === false) {\n        throw new Error(gl.getShaderInfoLog(vertexShader) ?? \"Unknown error\");\n      }\n    }\n    const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n    if (fragmentShader !== null) {\n      gl.shaderSource(fragmentShader, fragmentShaderSource);\n      gl.compileShader(fragmentShader);\n      if (gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS) === false) {\n        throw new Error(gl.getShaderInfoLog(fragmentShader) ?? \"Unknown error\");\n      }\n    }\n    const shaderProgram = gl.createProgram();\n    if (shaderProgram === null) {\n      throw new Error(\"Could not create program\");\n    }\n    if (shaderProgram !== null && vertexShader !== null && fragmentShader !== null) {\n      gl.attachShader(shaderProgram, vertexShader);\n      gl.attachShader(shaderProgram, fragmentShader);\n      gl.linkProgram(shaderProgram);\n      if (gl.getProgramParameter(shaderProgram, gl.LINK_STATUS) === false) {\n        throw new Error(gl.getProgramInfoLog(shaderProgram) ?? \"Unknown error\");\n      }\n      gl.useProgram(shaderProgram);\n    }\n    const vertexBuffer = gl.createBuffer();\n    gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);\n    gl.bufferData(\n      gl.ARRAY_BUFFER,\n      new Float32Array([-1, -1, -1, 1, 1, 1, 1, -1]),\n      gl.STATIC_DRAW\n    );\n    const xyLocation = gl.getAttribLocation(shaderProgram, \"xy\");\n    gl.vertexAttribPointer(xyLocation, 2, gl.FLOAT, false, 0, 0);\n    gl.enableVertexAttribArray(xyLocation);\n    const texture = gl.createTexture();\n    gl.bindTexture(gl.TEXTURE_2D, texture);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n    this.clear();\n  }\n  draw(frame) {\n    if (this.canvas !== null) {\n      this.canvas.width = frame.displayWidth;\n      this.canvas.height = frame.displayHeight;\n    }\n    const gl = this.ctx;\n    if (gl !== null) {\n      gl.texImage2D(\n        gl.TEXTURE_2D,\n        0,\n        gl.RGBA,\n        gl.RGBA,\n        gl.UNSIGNED_BYTE,\n        frame\n      );\n      gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n      this.clear();\n      gl.drawArrays(gl.TRIANGLE_FAN, 0, 4);\n    }\n  }\n  clear() {\n    const gl = this.ctx;\n    if (gl !== null) {\n      gl.clearColor(1, 1, 1, 1);\n      gl.clear(gl.COLOR_BUFFER_BIT);\n    }\n  }\n}\nconst RenderDelayMs = 500;\nconst videoDecoderConfig = {\n  // codec: 'avc1.420014', // Baseline\n  // codec: 'avc1.4D0014', // Main\n  codec: \"avc1.580014\",\n  // Extended\n  codedWidth: 1280,\n  codedHeight: 720\n};\nclass Decoder {\n  /**\n   * Creates an instance of the Decoder class.\n   * @param originalCanvas - The original HTML canvas element to render frames onto\n   * @param logger - Logger instance for debugging and error reporting\n   * @throws {Error} When video decoder configuration is not supported\n   */\n  constructor(originalCanvas, logger) {\n    __publicField(this, \"_decoder\");\n    __publicField(this, \"_canvas\");\n    __publicField(this, \"_renderer\");\n    __publicField(this, \"_logger\");\n    __publicField(this, \"_firstDecoded\", false);\n    __publicField(this, \"_skipUntil\", 0);\n    __publicField(this, \"_queue\", []);\n    __publicField(this, \"_pendingFrame\");\n    __publicField(this, \"_renderId\");\n    __publicField(this, \"_decodeId\");\n    this._logger = logger;\n    this._canvas = originalCanvas.transferControlToOffscreen();\n    this._renderer = new WebGLRenderer(this._canvas);\n    VideoDecoder.isConfigSupported(videoDecoderConfig).then((v) => {\n      if (v.supported === true) {\n        this._decoder = new VideoDecoder({\n          output: (c) => {\n            this.renderFrame(c);\n          },\n          error: (e) => {\n            this._logger.log(e.message);\n          }\n        });\n        this._decoder.configure(videoDecoderConfig);\n        this._logger.log(\"Decoder initialized\");\n      } else {\n        this._logger.log(\"The codec is not supported\");\n      }\n    }).catch((e) => {\n      this._logger.log(e.message);\n    });\n  }\n  /**\n   * Indicates whether the decoder is ready and configured.\n   * @returns {boolean} True if the decoder is configured, false otherwise.\n   */\n  get ready() {\n    var _a;\n    return ((_a = this._decoder) == null ? void 0 : _a.state) === \"configured\";\n  }\n  /**\n   * Indicates whether the decoder is currently paused.\n   * @returns {boolean} True if paused, false otherwise.\n   */\n  get paused() {\n    return this._decodeId === void 0;\n  }\n  /**\n   * Pauses the decoder and renderer.\n   */\n  stop() {\n    this._logger.log(\"Stopping Decoder\");\n    this._clearCallbacks();\n  }\n  /**\n   * Resumes the decoder and renderer.\n   */\n  start() {\n    this._clearCallbacks();\n    this._logger.log(\"Starting Decoder\");\n    this._decodeId = setInterval(() => {\n      this.decode();\n    }, 0);\n    if (!this._firstDecoded) {\n      this._skipUntil = performance.now() + RenderDelayMs;\n    }\n    this.animate();\n  }\n  /**\n   * Clears decoding and rendering callbacks.\n   */\n  _clearCallbacks() {\n    var _a;\n    if (this._decodeId) {\n      clearInterval(this._decodeId);\n      this._decodeId = void 0;\n    }\n    if (this._renderId) {\n      cancelAnimationFrame(this._renderId);\n      this._renderId = void 0;\n    }\n    (_a = this._pendingFrame) == null ? void 0 : _a.close();\n    this._pendingFrame = void 0;\n  }\n  /**\n   * Enqueues a video frame message for decoding.\n   * If a key frame is received, the queue is cleared except for the first frame\n   * to maintain decoder stability.\n   * @param frame - The video frame message to be queued for decoding\n   */\n  enqueue(frame) {\n    if (frame.header.frameType === 0 && this._queue.length > 0) {\n      this._queue.length = this._firstDecoded ? 0 : 1;\n    }\n    this._queue.push(frame);\n  }\n  /**\n   * Processes and decodes all queued video frame messages.\n   * Skips processing if the decoder isn't ready or the queue is empty.\n   * @throws {Error} When decoding fails for a video chunk\n   */\n  decode() {\n    var _a;\n    if (!this.ready) return;\n    if (this._queue.length === 0) return;\n    const msgs = [...this._queue];\n    this._queue.length = 0;\n    for (const message of msgs) {\n      const chunk = this.createChunk(message);\n      try {\n        (_a = this._decoder) == null ? void 0 : _a.decode(chunk);\n      } catch (e) {\n        this._logger.error(\"Error decoding video chunk: \", e);\n      }\n    }\n    this._firstDecoded = true;\n  }\n  /**\n   * Clears the decoder state and renderer buffer.\n   * Does not close the decoder instance.\n   */\n  clear() {\n    this._logger.log(\"Clearing Decoder\");\n    this._cleanUp();\n  }\n  /**\n   * Completely disposes of the decoder instance and releases all resources.\n   * Should be called when the decoder is no longer needed.\n   */\n  dispose() {\n    var _a;\n    this._logger.log(\"Disposing Decoder\");\n    this._cleanUp();\n    (_a = this._decoder) == null ? void 0 : _a.close();\n  }\n  /**\n   * Cleans up internal resources and cancels ongoing operations.\n   * @private\n   */\n  _cleanUp() {\n    this._renderer.clear();\n    this._queue.length = 0;\n  }\n  /**\n   * Creates an EncodedVideoChunk from a VideoFrameMessage.\n   * @param message - The video frame message to convert\n   * @returns {EncodedVideoChunk} A chunk ready for decoder processing\n   * @private\n   */\n  createChunk(message) {\n    const init = {\n      type: message.header.frameType === 0 ? \"key\" : \"delta\",\n      data: message.dataBuffer,\n      timestamp: message.header.timestamp,\n      duration: message.header.duration\n    };\n    return new EncodedVideoChunk(init);\n  }\n  /**\n   * Handles the animation loop for continuous frame rendering.\n   * Processes pending frames and manages the render timing.\n   * @private\n   */\n  animate() {\n    this._renderId = requestAnimationFrame(() => {\n      this.animate();\n    });\n    if (this._pendingFrame !== void 0) {\n      if (performance.now() > this._skipUntil) {\n        this._renderer.draw(this._pendingFrame);\n      }\n      this._pendingFrame.close();\n      this._pendingFrame = void 0;\n    }\n  }\n  /**\n   * Processes a decoded video frame for rendering.\n   * Manages frame replacement and cleanup of previous frames.\n   * @param frame - The decoded video frame ready for rendering\n   * @private\n   */\n  renderFrame(frame) {\n    if (this._pendingFrame !== void 0) {\n      this._pendingFrame.close();\n    }\n    this._pendingFrame = frame;\n  }\n}\nclass DeferredPromise extends Promise {\n  constructor(executor = () => {\n  }) {\n    var _a;\n    let resolver;\n    let rejector;\n    super((resolve, reject) => {\n      resolver = resolve;\n      rejector = reject;\n      return executor(resolve, reject);\n    });\n    __publicField(this, \"resolve\");\n    __publicField(this, \"reject\");\n    __publicField(this, \"initialCallStack\");\n    this.resolve = resolver;\n    this.reject = rejector;\n    this.initialCallStack = (_a = Error().stack) == null ? void 0 : _a.split(\"\\n\").slice(2).join(\"\\n\");\n  }\n  /** @throws error with amended call stack */\n  rejectWithError(error) {\n    var _a;\n    error.stack = [(_a = error.stack) == null ? void 0 : _a.split(\"\\n\")[0], this.initialCallStack].join(\"\\n\");\n    this.reject(error);\n  }\n}\nclass LoadSuccess {\n  constructor(vim) {\n    __publicField(this, \"isError\", false);\n    __publicField(this, \"isSuccess\", true);\n    __publicField(this, \"vim\");\n    this.vim = vim;\n  }\n}\nclass LoadError {\n  constructor(error, details) {\n    __publicField(this, \"isError\", true);\n    __publicField(this, \"isSuccess\", false);\n    __publicField(this, \"type\");\n    __publicField(this, \"details\");\n    this.error = error;\n    this.type = error;\n    this.details = details;\n  }\n}\nclass LoadRequest {\n  constructor() {\n    __publicField(this, \"_progress\", 0);\n    __publicField(this, \"_progressPromise\", new DeferredPromise());\n    __publicField(this, \"_completionPromise\", new DeferredPromise());\n    __publicField(this, \"_result\");\n  }\n  get isCompleted() {\n    return this._result !== void 0;\n  }\n  async *getProgress() {\n    if (this._result !== void 0) {\n      yield this._progress;\n      return;\n    }\n    while (this._result === void 0) {\n      await this._progressPromise;\n      yield this._progress;\n    }\n  }\n  async getResult() {\n    await this._completionPromise;\n    return this._result;\n  }\n  onProgress(progress) {\n    this._progress = progress;\n    this._progressPromise.resolve();\n    this._progressPromise = new DeferredPromise();\n  }\n  success(vim) {\n    this._result = new LoadSuccess(vim);\n    this._progress = 1;\n    this._progressPromise.resolve();\n    this._completionPromise.resolve();\n    return this;\n  }\n  error(error, details) {\n    this._result = new LoadError(error, details);\n    this._progress = 1;\n    this._progressPromise.resolve();\n    this._completionPromise.resolve();\n    return this;\n  }\n  abort() {\n    this.error(\"cancelled\");\n  }\n}\nclass Vim {\n  /**\n   * Creates an instance of the Vim class.\n   * @param rpc - The RPC client used for communication.\n   * @param color - The color manager for handling colors.\n   * @param source - The source URL or file path of the Vim.\n   * @param logger - The logger for logging messages.\n   */\n  constructor(rpc, color, source, logger) {\n    __publicField(this, \"source\");\n    __publicField(this, \"_handle\", -1);\n    __publicField(this, \"_request\");\n    __publicField(this, \"_rpc\");\n    __publicField(this, \"_colors\");\n    __publicField(this, \"_logger\");\n    __publicField(this, \"_nodeStates\", /* @__PURE__ */ new Map());\n    __publicField(this, \"_allNodeState\", \"visible\");\n    __publicField(this, \"_nodeColors\", /* @__PURE__ */ new Map());\n    // New properties for delayed updates\n    __publicField(this, \"_pendingNodeStateChanges\", /* @__PURE__ */ new Map());\n    __publicField(this, \"_updateScheduled\", false);\n    this._rpc = rpc;\n    this.source = source;\n    this._colors = color;\n    this._logger = logger;\n  }\n  get handle() {\n    return this._handle;\n  }\n  /**\n   * Indicates whether the Vim is connected.\n   * @returns True if connected; otherwise, false.\n   */\n  get connected() {\n    return this._handle >= 0;\n  }\n  /**\n   * Connects to the Vim and initiates loading.\n   * @returns The load request associated with this operation.\n   */\n  connect() {\n    if (this._request) {\n      return this._request;\n    }\n    this._logger.log(\"Loading \" + this.source);\n    this._request = new LoadRequest();\n    this._load(this.source, this._request).then(async (request) => {\n      const result = await request.getResult();\n      if (result.isSuccess) {\n        this._logger.log(`Successfully loaded vim: ${this.source}`);\n        this.reapplyNodes();\n        this.reapplyColors();\n      } else {\n        this._logger.log(`Failed to load vim:  ${this.source}`);\n      }\n    });\n    return this._request;\n  }\n  reapplyNodes() {\n    this.scheduleNodeStateChange(\"all\", this._allNodeState ?? \"visible\");\n    invertMap(this._nodeStates).forEach((nodes, state) => {\n      this.scheduleNodeStateChange(nodes, state);\n    });\n    this.scheduleUpdate();\n  }\n  async reapplyColors() {\n    const nodes = Array.from(this._nodeColors.keys());\n    const color = Array.from(this._nodeColors.values());\n    const colors = await this._colors.getColors(color);\n    if (!colors) return;\n    this.applyColors(colors, nodes);\n  }\n  /**\n   * Disconnects the Vim and unloads it from the server.\n   */\n  disconnect() {\n    var _a;\n    (_a = this._request) == null ? void 0 : _a.error(\"cancelled\", \"The request was cancelled\");\n    this._request = void 0;\n    if (this.connected) {\n      this._rpc.RPCUnloadVim(this._handle);\n      this._handle = -1;\n    }\n  }\n  /**\n   * Requests for the server to load the given URL or file path.\n   * @param url - The URL or file path to load.\n   * @param result - The load request object to update.\n   * @returns The updated load request.\n   */\n  async _load(url, result) {\n    let handle = await this._getHandle(url, result);\n    if (result.isCompleted || handle === INVALID_HANDLE) {\n      return result;\n    }\n    while (true) {\n      try {\n        const state = await this._rpc.RPCGetVimLoadingState(handle);\n        result.onProgress(state.progress);\n        switch (state.status) {\n          case VimLoadingStatus.Loading:\n          case VimLoadingStatus.Downloading:\n            await wait(100);\n            continue;\n          case VimLoadingStatus.FailedToDownload:\n          case VimLoadingStatus.FailedToLoad:\n          case VimLoadingStatus.Unknown:\n            this._rpc.RPCUnloadVim(handle);\n            const details = await this._rpc.RPCGetLastError();\n            const error = this.getErrorType(state.status);\n            return result.error(error, details);\n          case VimLoadingStatus.Done:\n            this._handle = handle;\n            return result.success(this);\n        }\n      } catch (e) {\n        const details = e instanceof Error ? e.message : \"An unknown error occurred\";\n        return result.error(\"unknown\", details);\n      }\n    }\n  }\n  getErrorType(status) {\n    switch (status) {\n      case VimLoadingStatus.FailedToDownload:\n        return \"downloadingError\";\n      case VimLoadingStatus.FailedToLoad:\n        return \"loadingError\";\n      default:\n        return \"unknown\";\n    }\n  }\n  async _getHandle(url, result) {\n    let handle = void 0;\n    try {\n      if (isURL(url)) {\n        handle = await this._rpc.RPCLoadVimURL(url);\n      } else if (isFileURI(url)) {\n        handle = await this._rpc.RPCLoadVim(url);\n      } else {\n        console.log(\"Defaulting to file path\");\n        handle = await this._rpc.RPCLoadVim(url);\n      }\n    } catch (e) {\n      result.error(\"downloadingError\", e.message);\n      return INVALID_HANDLE;\n    }\n    if (handle === INVALID_HANDLE) {\n      result.error(\"downloadingError\");\n      return INVALID_HANDLE;\n    }\n    return handle;\n  }\n  /**\n   * Shows the given nodes.\n   * @param nodes - The nodes to show. If 'all' is passed, all nodes will be shown.\n   */\n  show(nodes) {\n    this.updateMap(nodes, \"visible\");\n    this.scheduleNodeStateChange(nodes, \"visible\");\n  }\n  /**\n   * Hides the given nodes.\n   * @param nodes - The nodes to hide. If 'all' is passed, all nodes will be hidden.\n   */\n  hide(nodes) {\n    this.updateMap(nodes, \"hidden\");\n    this.scheduleNodeStateChange(nodes, \"hidden\");\n  }\n  /**\n   * Ghosts the given nodes.\n   * @param nodes - The nodes to ghost. If 'all' is passed, all nodes will be ghosted.\n   */\n  ghost(nodes) {\n    this.updateMap(nodes, \"ghosted\");\n    this.scheduleNodeStateChange(nodes, \"ghosted\");\n  }\n  /**\n   * Highlights the given nodes.\n   * @param nodes - The nodes to highlight. If 'all' is passed, all nodes will be highlighted.\n   */\n  highlight(nodes) {\n    this.updateMap(nodes, \"highlighted\");\n    this.scheduleNodeStateChange(nodes, \"highlighted\");\n  }\n  /**\n   * Removes the highlight from the given nodes and reverts them to a fallback state.\n   * @param nodes - The nodes to remove the highlight from.\n   * @param fallback - The state to revert the nodes to.\n   */\n  removeHighlight(nodes, fallback) {\n    const toUpdate = [];\n    for (const node of nodes) {\n      const state = this._nodeStates.get(node);\n      if (state === \"highlighted\") {\n        this._nodeStates.set(node, fallback);\n        toUpdate.push(node);\n      }\n    }\n    if (toUpdate.length > 0) {\n      this.scheduleNodeStateChange(toUpdate, fallback);\n    }\n  }\n  /**\n   * Retrieves the bounding box of the given nodes.\n   * @param nodes - The nodes to get the bounding box for.\n   * @returns A Promise that resolves to the bounding box, or undefined if not connected or nodes are empty.\n   * @throws Error if 'all' is passed, as this feature is not supported yet.\n   */\n  async getBoundingBox(nodes) {\n    if (nodes === \"all\") {\n      throw new Error(\"Feature not supported yet.\");\n    }\n    if (!this.connected || nodes.length === 0) {\n      return Promise.resolve(void 0);\n    }\n    return await this._rpc.RPCGetBoundingBox(this._handle, nodes);\n  }\n  /**\n   * Applies a color to the given nodes.\n   * @param color - The color to apply.\n   * @param nodes - The nodes to apply the color to.\n   */\n  applyColor(color, nodes) {\n    const colors = new Array(nodes.length).fill(color);\n    this.applyColors(colors, nodes);\n  }\n  /**\n   * Applies an array of colors to the given nodes.\n   * @param color - An array of colors to apply, corresponding to each node.\n   * @param nodes - The nodes to apply the colors to.\n   * @throws Will throw an error if the lengths of the colors and nodes arrays do not match.\n   */\n  applyColors(color, nodes) {\n    if (color.length !== nodes.length) {\n      throw new Error(\"Color and nodes length must be equal\");\n    }\n    for (let i = 0; i < color.length; i++) {\n      const c = color[i];\n      const n = nodes[i];\n      if (c === void 0) {\n        this._nodeColors.delete(n);\n      } else {\n        this._nodeColors.set(n, c.color);\n      }\n    }\n    if (!this.connected) return;\n    this._rpc.RPCSetMaterialOverrides(\n      this._handle,\n      nodes,\n      color.map((c) => (c == null ? void 0 : c.id) ?? -1)\n    );\n  }\n  /**\n   * Clears the color from the given nodes.\n   * @param nodes - The nodes to clear the color from.\n   */\n  clearColor(nodes) {\n    if (nodes === \"all\") {\n      this._nodeColors.clear();\n    } else {\n      nodes.forEach((n) => this._nodeColors.delete(n));\n    }\n    if (!this.connected) return;\n    if (nodes === \"all\") {\n      this._rpc.RPCClearMaterialOverrides(this._handle);\n    } else {\n      const ids = new Array(nodes.length).fill(MaterialHandles.Invalid);\n      this._rpc.RPCSetMaterialOverrides(this._handle, nodes, ids);\n    }\n  }\n  updateMap(nodes, state) {\n    if (nodes === \"all\") {\n      this._allNodeState = state;\n      this._nodeStates.clear();\n    } else if (state !== this._allNodeState) {\n      nodes.forEach((n) => this._nodeStates.set(n, state));\n    }\n  }\n  scheduleNodeStateChange(nodes, state) {\n    if (nodes === \"all\") {\n      this._pendingNodeStateChanges.clear();\n      this._pendingNodeStateChanges.set(\"all\", state);\n    } else {\n      nodes.forEach((node) => {\n        this._pendingNodeStateChanges.set(node, state);\n      });\n    }\n    this.scheduleUpdate();\n  }\n  scheduleUpdate() {\n    if (!this._updateScheduled) {\n      this._updateScheduled = true;\n      requestAnimationFrame(() => this.update());\n    }\n  }\n  update() {\n    this._updateScheduled = false;\n    if (!this.connected) return;\n    if (this._pendingNodeStateChanges.has(\"all\")) {\n      const state = this._pendingNodeStateChanges.get(\"all\");\n      this.callRPCForState(state, \"all\");\n      this._pendingNodeStateChanges.delete(\"all\");\n    }\n    const nodesByState = /* @__PURE__ */ new Map();\n    for (const [node, state] of this._pendingNodeStateChanges.entries()) {\n      if (node !== \"all\") {\n        if (!nodesByState.has(state)) {\n          nodesByState.set(state, []);\n        }\n        nodesByState.get(state).push(node);\n      }\n    }\n    for (const [state, nodes] of nodesByState.entries()) {\n      this.callRPCForState(state, nodes);\n    }\n    this._pendingNodeStateChanges.clear();\n  }\n  callRPCForState(state, nodes) {\n    if (!this.connected) return;\n    switch (state) {\n      case \"visible\":\n        if (nodes === \"all\") {\n          this._rpc.RPCShowAll(this._handle);\n        } else {\n          this._rpc.RPCShow(this._handle, nodes);\n        }\n        break;\n      case \"hidden\":\n        if (nodes === \"all\") {\n          this._rpc.RPCHideAll(this._handle);\n        } else {\n          this._rpc.RPCHide(this._handle, nodes);\n        }\n        break;\n      case \"ghosted\":\n        if (nodes === \"all\") {\n          this._rpc.RPCGhostAll(this._handle);\n        } else {\n          this._rpc.RPCGhost(this._handle, nodes);\n        }\n        break;\n      case \"highlighted\":\n        if (nodes === \"all\") {\n          this._rpc.RPCHighlightAll(this._handle);\n        } else {\n          this._rpc.RPCHighlight(this._handle, nodes);\n        }\n        break;\n    }\n  }\n}\nfunction wait(ms) {\n  return new Promise((resolve) => setTimeout(resolve, ms));\n}\nconst defaultLogger = {\n  log: (message) => {\n    console.log(\"VIM Ultra: \" + message);\n  },\n  error: (message, e) => {\n    console.error(\"VIM Ultra: \" + message, e);\n  }\n};\nfunction createLogger(onMsg) {\n  return {\n    log: (str) => {\n      defaultLogger.log(str);\n      onMsg(str);\n    },\n    error: (str, e) => {\n      defaultLogger.error(str, e);\n      onMsg(str + \" \" + e.message);\n    }\n  };\n}\nfunction debounce(func, delay) {\n  let timeoutId;\n  return [function(...args) {\n    if (timeoutId) {\n      clearTimeout(timeoutId);\n    }\n    timeoutId = setTimeout(() => {\n      func(...args);\n    }, delay);\n  }, () => clearTimeout(timeoutId)];\n}\nclass Viewport {\n  /**\n   * Creates a new Viewport instance\n   * @param canvas - The HTML canvas element to observe and manage\n   * @param rpc - RPC client for viewport communication\n   */\n  constructor(canvas, rpc) {\n    /** The HTML canvas element used for rendering */\n    __publicField(this, \"canvas\");\n    __publicField(this, \"_rpc\");\n    __publicField(this, \"_observer\");\n    __publicField(this, \"_clearTimeout\");\n    this.canvas = canvas;\n    this._rpc = rpc;\n    const [debounced, clear] = debounce(() => this.onResize(), 250);\n    this._observer = new ResizeObserver(debounced);\n    this._observer.observe(canvas);\n    this._clearTimeout = clear;\n  }\n  /**\n   * Handles resize events for the canvas\n   * @private\n   */\n  onResize() {\n    console.log(\"Canvas resized to\", this.canvas.offsetWidth, \"x\", this.canvas.offsetHeight);\n    this.update();\n  }\n  /**\n   * Updates the aspect ratio of the viewport on the server\n   */\n  update() {\n    this._rpc.RPCSetAspectRatio(this.canvas.offsetWidth, this.canvas.offsetHeight);\n  }\n  /**\n   * Cleans up resources by removing resize observer and clearing timeouts\n   */\n  dispose() {\n    console.log(\"Disposing Viewport\");\n    this._clearTimeout();\n    this._observer.disconnect();\n  }\n}\nclass ColorHandle {\n  /**\n   * Creates a new ColorHandle instance.\n   * @param {RGBA32} color - The RGBA color value.\n   * @param {number} serverId - The unique identifier assigned by the server.\n   * @param {ColorManager} manager - The color manager instance that manages this color handle.\n   */\n  constructor(color, serverId, manager) {\n    __publicField(this, \"_manager\");\n    /** Unique identifier for the color instance */\n    __publicField(this, \"id\");\n    /** The RGBA color value */\n    __publicField(this, \"color\");\n    __publicField(this, \"_disposed\", false);\n    this._manager = manager;\n    this.color = color;\n    this.id = serverId;\n  }\n  /**\n   * Indicates whether the color handle has been disposed.\n   * @returns {boolean} True if the color handle has been disposed, false otherwise.\n   */\n  get disposed() {\n    return this._disposed;\n  }\n  /**\n   * Gets the hexadecimal representation of the color.\n   * @returns {number} The color value as a hexadecimal number.\n   */\n  get hex() {\n    return this.color.hex;\n  }\n  /**\n   * Gets the red component of the color.\n   * @returns {number} The red component value in the range [0-255].\n   */\n  get r() {\n    return this.color.r;\n  }\n  /**\n   * Gets the green component of the color.\n   * @returns {number} The green component value in the range [0-255].\n   */\n  get g() {\n    return this.color.g;\n  }\n  /**\n   * Gets the blue component of the color.\n   * @returns {number} The blue component value in the range [0-255].\n   */\n  get b() {\n    return this.color.b;\n  }\n  /**\n   * Gets the alpha (opacity) component of the color.\n   * @returns {number} The alpha component value in the range [0-255].\n   */\n  get a() {\n    return this.color.a;\n  }\n  /**\n   * Disposes of the color handle and releases associated resources.\n   * Once disposed, the color handle cannot be used anymore.\n   * Multiple calls to dispose are safely ignored.\n   */\n  dispose() {\n    if (this._disposed) return;\n    this._manager.destroy(this);\n    this._disposed = true;\n  }\n}\nconst MAX_BATCH_SIZE = 3e3;\nclass ColorManager {\n  /**\n   * Creates a new ColorManager instance.\n   * @param rpc - The RPC client used for communication with the rendering backend\n   */\n  constructor(rpc) {\n    __publicField(this, \"_rpc\");\n    __publicField(this, \"_hexToColor\", /* @__PURE__ */ new Map());\n    __publicField(this, \"_idToColor\", /* @__PURE__ */ new Map());\n    __publicField(this, \"_toDelete\", []);\n    __publicField(this, \"_deleteId\");\n    this._rpc = rpc;\n  }\n  /**\n   * Creates or retrieves a cached color instance for the given hex value.\n   * @param hex - The RGBA32 color value\n   * @returns Promise resolving to a ColorHandle, or undefined if creation fails\n   */\n  async getColor(hex) {\n    const colors = await this.getColors([hex]);\n    if (!colors) return void 0;\n    return colors[0];\n  }\n  /**\n   * Creates or retrieves cached color instances for multiple hex values.\n   * @param c - Array of RGBA32 color values\n   * @returns Promise resolving to an array of ColorHandles in the same order as input, or undefined if creation fails\n   * @remarks Duplicate hex values will be mapped to the same color instance for efficiency\n   */\n  async getColors(c) {\n    const result = new Array(c.length);\n    const hexToIndices = /* @__PURE__ */ new Map();\n    const toCreate = new Array();\n    for (let i = 0; i < c.length; i++) {\n      const color = c[i];\n      if (this._hexToColor.has(color.hex)) {\n        result[i] = this._hexToColor.get(color.hex);\n      } else if (hexToIndices.has(color.hex)) {\n        hexToIndices.get(color.hex).push(i);\n      } else {\n        toCreate.push(color);\n        hexToIndices.set(color.hex, [i]);\n      }\n    }\n    const colors = await this._createColors(toCreate);\n    if (!colors) return void 0;\n    for (let i = 0; i < colors.length; i++) {\n      const color = toCreate[i];\n      const indices = hexToIndices.get(color.hex);\n      for (const index of indices) {\n        result[index] = colors[i];\n      }\n    }\n    return result;\n  }\n  /**\n   * Retrieves a color instance by its unique identifier.\n   * @param id - The unique identifier of the color\n   * @returns The ColorHandle associated with the ID, or undefined if not found\n   */\n  getFromId(id) {\n    return this._idToColor.get(id);\n  }\n  /**\n   * Destroys a color instance and removes it from the cache.\n   * @param color - The ColorHandle to destroy\n   */\n  destroy(color) {\n    this._hexToColor.delete(color.hex);\n    this._idToColor.delete(color.id);\n    this._deleteColor(color);\n  }\n  /**\n   * Destroys all color instances and clears the cache.\n   */\n  clear() {\n    for (const color of this._idToColor.values()) {\n      this.destroy(color);\n    }\n    this._idToColor.clear();\n    this._hexToColor.clear();\n  }\n  /**\n   * Creates multiple color instances via RPC.\n   * @param colors - Array of RGBA32 color values to create\n   * @returns Promise resolving to an array of ColorHandles, or undefined if creation fails\n   * @private\n   */\n  async _createColors(colors) {\n    const result = [];\n    if (colors.length === 0) {\n      return result;\n    }\n    const instances = await this._rpc.RPCCreateMaterialInstances(MaterialHandles.StandardOpaque, 1, colors);\n    if (!instances) return void 0;\n    for (var i = 0; i < colors.length; i++) {\n      const color = this._createColor(colors[i], instances[i]);\n      result.push(color);\n    }\n    return result;\n  }\n  /**\n   * Creates a single color instance and adds it to the cache.\n   * @param color - The RGBA32 color value\n   * @param id - The unique identifier for the color instance\n   * @returns The created ColorHandle\n   * @private\n   */\n  _createColor(color, id) {\n    var handle = new ColorHandle(color, id, this);\n    this._hexToColor.set(color.hex, handle);\n    this._idToColor.set(handle.id, handle);\n    return handle;\n  }\n  /**\n   * Queues a color for deletion in the next batch.\n   * @param color - The ColorHandle to delete\n   * @private\n   */\n  _deleteColor(color) {\n    if (this._toDelete.length >= MAX_BATCH_SIZE) {\n      this._deleteBatch();\n    }\n    if (this._toDelete.length === 0) {\n      this._deleteId = setTimeout(() => {\n        this._rpc.RPCDestroyMaterialInstances(this._toDelete.map((c) => c.id));\n        this._toDelete.length = 0;\n      }, 0);\n    }\n    this._toDelete.push(color);\n  }\n  /**\n   * Immediately deletes all queued colors.\n   * @private\n   */\n  _deleteBatch() {\n    this._rpc.RPCDestroyMaterialInstances(this._toDelete.map((c) => c.id));\n    this._toDelete.length = 0;\n    clearTimeout(this._deleteId);\n    this._deleteId = void 0;\n  }\n}\nclass Camera {\n  /** \n   * Creates a new Camera instance\n   * @param rpc - RPC client for camera communication\n   */\n  constructor(rpc) {\n    __publicField(this, \"_rpc\");\n    __publicField(this, \"_lastPosition\");\n    __publicField(this, \"_interval\");\n    __publicField(this, \"_defaultBlendTime\", 0.5);\n    __publicField(this, \"_savedPosition\");\n    this._rpc = rpc;\n  }\n  /**\n   * Saves the current camera position for later restoration\n   * @param segment - Optional segment to save as the camera position\n   */\n  async save(segment) {\n    this._savedPosition = segment ?? await this._rpc.RPCGetCameraPosition();\n  }\n  /**\n   * Resets the camera to the last saved position\n   */\n  restoreSavedPosition(blendTime = this._defaultBlendTime) {\n    if (!this._savedPosition) return;\n    this._rpc.RPCSetCameraPosition(this._savedPosition, blendTime);\n  }\n  /**\n   * Restores the camera to its last tracked position\n   * @param blendTime - Duration of the camera animation in seconds\n   */\n  restoreLastPosition(blendTime = this._defaultBlendTime) {\n    var _a;\n    if ((_a = this._lastPosition) == null ? void 0 : _a.isValid()) {\n      console.log(\"Restoring camera position: \", this._lastPosition);\n      this._rpc.RPCSetCameraPosition(this._lastPosition, blendTime);\n    }\n  }\n  /**\n   * Handles camera initialization when connection is established\n   */\n  onConnect() {\n    this.startTracking();\n    this.restoreLastPosition();\n  }\n  /**\n   * Starts tracking camera position at regular intervals\n   */\n  startTracking() {\n    clearInterval(this._interval);\n    this._interval = setInterval(() => this.update(), 1e3);\n  }\n  /**\n   * Stops tracking camera position\n   */\n  stopTracking() {\n    clearInterval(this._interval);\n    this._interval = void 0;\n  }\n  /**\n   * Updates the stored camera position\n   * @private\n   */\n  async update() {\n    this._lastPosition = await this._rpc.RPCGetCameraPosition();\n  }\n  /**\n   * Pauses or resumes rendering\n   * @param value - True to pause rendering, false to resume\n   */\n  pause(value) {\n    this._rpc.RPCPauseRendering(value);\n  }\n  /**\n   * Frames all vims in the viewer to fit within the camera view\n   * @param blendTime - Duration of the camera animation in seconds (defaults to 0.5)\n   * @returns Promise that resolves when the framing animation is complete\n   */\n  async frameAll(blendTime = this._defaultBlendTime) {\n    const segment = await this._rpc.RPCFrameAll(blendTime);\n    this._savedPosition = this._savedPosition ?? segment;\n    return segment;\n  }\n  /**\n   * Frames a specific bounding box in the viewer\n   * @param box - The 3D bounding box to frame in the camera view\n   * @param blendTime - Duration of the camera animation in seconds (defaults to 0.5)\n   */\n  async frameBox(box, blendTime = this._defaultBlendTime) {\n    const segment = await this._rpc.RPCFrameBox(box, blendTime);\n    this._savedPosition = this._savedPosition ?? segment;\n    return segment;\n  }\n  /**\n   * Frames specific nodes of a Vim model in the camera view\n   * @param vim - The Vim model containing the nodes to frame\n   * @param nodes - Array of node indices to frame, or 'all' to frame the entire model\n   * @param blendTime - Duration of the camera animation in seconds (defaults to 0.5)\n   * @returns Promise that resolves when the framing animation is complete\n   */\n  async frameVim(vim, nodes, blendTime = this._defaultBlendTime) {\n    let segment;\n    if (nodes === \"all\") {\n      segment = await this._rpc.RPCFrameVim(vim.handle, blendTime);\n    } else {\n      segment = await this._rpc.RPCFrameInstances(vim.handle, nodes, blendTime);\n    }\n    this._savedPosition = this._savedPosition ?? segment;\n    return segment;\n  }\n}\nclass ViewerSelection {\n  /**\n   * Creates a new ViewerSelection instance.\n   * @param rpc - RPC client for communication with the viewer.\n   * @param vims - Collection of VIM instances to manage.\n   */\n  constructor(rpc, vims) {\n    __publicField(this, \"_rpc\");\n    __publicField(this, \"_vims\");\n    __publicField(this, \"_selectedNodes\");\n    this._rpc = rpc;\n    this._vims = vims;\n    this._selectedNodes = /* @__PURE__ */ new Map();\n  }\n  /**\n   * Gets the total number of selected nodes across all VIMs.\n   * @returns The total count of selected nodes.\n   */\n  get count() {\n    let count = 0;\n    this._selectedNodes.forEach((nodes) => {\n      count += nodes.size;\n    });\n    return count;\n  }\n  /**\n   * Performs a hit test at the specified screen position.\n   * @param pos - The screen position in 2D coordinates.\n   * @returns Promise resolving to hit test result or undefined if no hit.\n   */\n  async hitTest(pos) {\n    const test = await this._rpc.RPCPerformHitTest(pos);\n    if (!test) return void 0;\n    const vim = this._vims.getFromHandle(test.vimHandle);\n    if (!vim) return void 0;\n    return {\n      vim,\n      nodeIndex: test.nodeIndex,\n      worldPosition: test.worldPosition,\n      worldNormal: test.worldNormal\n    };\n  }\n  /**\n   * Replaces the current selection with the specified node(s).\n   * Clears all previous selections across all VIMs.\n   * @param vim - The Vim instance to select nodes from.\n   * @param node - A single node index or array of node indices to select.\n   */\n  select(vim, node) {\n    this.clear();\n    this.add(vim, node);\n  }\n  /**\n   * Toggles the selection state of the specified node(s).\n   * If a node is currently selected, it will be deselected, and vice versa.\n   * @param vim - The Vim instance containing the nodes.\n   * @param node - A single node index or array of node indices to toggle.\n   */\n  toggle(vim, node) {\n    const nodes = Array.isArray(node) ? node : [node];\n    nodes.forEach((n) => {\n      const nodeSet = this._selectedNodes.get(vim);\n      if (nodeSet && nodeSet.has(n)) {\n        this.remove(vim, n);\n      } else {\n        this.add(vim, n);\n      }\n    });\n  }\n  /**\n   * Adds the specified node(s) to the current selection.\n   * If a node is already selected, it remains selected.\n   * @param vim - The Vim instance containing the nodes.\n   * @param node - A single node index or array of node indices to add.\n   */\n  add(vim, node) {\n    const nodes = Array.isArray(node) ? node : [node];\n    let nodeSet = this._selectedNodes.get(vim);\n    if (!nodeSet) {\n      nodeSet = /* @__PURE__ */ new Set();\n      this._selectedNodes.set(vim, nodeSet);\n    }\n    nodes.forEach((n) => {\n      if (!nodeSet.has(n)) {\n        nodeSet.add(n);\n        vim.highlight([n]);\n      }\n    });\n  }\n  /**\n   * Removes the specified node(s) from the current selection.\n   * If a node is not selected, no action is taken for that node.\n   * @param vim - The Vim instance containing the nodes.\n   * @param node - A single node index or array of node indices to remove.\n   */\n  remove(vim, node) {\n    const nodeSet = this._selectedNodes.get(vim);\n    if (!nodeSet) return;\n    const nodes = Array.isArray(node) ? node : [node];\n    nodes.forEach((n) => {\n      if (nodeSet.has(n)) {\n        nodeSet.delete(n);\n        vim.removeHighlight([n], \"visible\");\n      }\n    });\n    if (nodeSet.size === 0) {\n      this._selectedNodes.delete(vim);\n    }\n  }\n  /**\n   * Clears all selections across all VIMs or for a specific VIM.\n   * @param vim - Optional. If provided, only clears selections for the specified VIM.\n   */\n  clear(vim) {\n    this._selectedNodes.forEach((nodes, v) => {\n      if (vim === void 0 || v === vim) {\n        v.removeHighlight(Array.from(nodes), \"visible\");\n      }\n    });\n    this._selectedNodes.clear();\n  }\n  /**\n   * Calculates the bounding box encompassing all selected nodes.\n   * @returns Promise resolving to a Box3 representing the bounds of all selected nodes,\n   *          or undefined if no nodes are selected or bounds cannot be calculated.\n   */\n  async getBoundingBox() {\n    let box = void 0;\n    for (const [vim, nodes] of this._selectedNodes.entries()) {\n      const array = Array.from(nodes);\n      const b = await vim.getBoundingBox(array);\n      if (!b) continue;\n      box = box ? box.union(b) : b;\n    }\n    return box;\n  }\n  /**\n   * Cleans up resources and releases memory.\n   * Should be called when the selection manager is no longer needed.\n   */\n  dispose() {\n    this.clear();\n    this._selectedNodes = /* @__PURE__ */ new Map();\n  }\n}\nclass VimCollection {\n  constructor() {\n    __publicField(this, \"_vims\");\n    this._vims = [];\n  }\n  get count() {\n    return this._vims.length;\n  }\n  /**\n   * Adds a Vim instance to the collection.\n   * @param vim - The Vim instance to add.\n   */\n  add(vim) {\n    if (!this._vims.some((v) => v.handle === vim.handle)) {\n      this._vims.push(vim);\n    }\n  }\n  /**\n   * Removes a Vim instance from the collection.\n   * @param vim - The Vim instance to remove.\n   */\n  remove(vim) {\n    this._vims = this._vims.filter((v) => v.handle !== vim.handle);\n  }\n  /**\n   * Gets a Vim instance by its handle.\n   * @param handle - The handle of the Vim instance.\n   * @returns The Vim instance or undefined if not found.\n   */\n  getFromHandle(handle) {\n    return this._vims.find((v) => v.handle === handle);\n  }\n  /**\n   * Gets a Vim instance at a specific index.\n   * @param index - The index of the Vim instance.\n   * @returns The Vim instance or undefined if the index is out of bounds.\n   */\n  getAt(index) {\n    return this._vims[index];\n  }\n  /**\n   * Gets all Vim instances.\n   * @returns An array of Vim instances.\n   */\n  getAll() {\n    return this._vims;\n  }\n  /**\n   * Clears all Vim instances from the collection.\n   */\n  clear() {\n    this._vims = [];\n  }\n}\nconst defaultRenderSettings = {\n  ...defaultSceneSettings,\n  lockIblRotation: true,\n  ghostColor: new RGBA(0.7, 0.62, 0.66, 5e-3)\n};\nclass Renderer {\n  /**\n   * Creates a new Renderer instance\n   * @param rpc - RPC client for communication with the rendering backend\n   * @param settings - Optional partial render settings to override defaults\n   */\n  constructor(rpc, settings = {}) {\n    __publicField(this, \"_rpc\");\n    __publicField(this, \"_settings\");\n    __publicField(this, \"_animationFrame\");\n    __publicField(this, \"_updateLighting\", false);\n    __publicField(this, \"_updateGhostColor\", false);\n    __publicField(this, \"_updateIblRotation\", false);\n    this._rpc = rpc;\n    this._settings = { ...defaultRenderSettings, ...settings };\n  }\n  /**\n   * Initializes the renderer when connection is established\n   * Sets up initial scene settings, ghost color, and IBL rotation\n   */\n  onConnect() {\n    this._rpc.RPCStartScene(this._settings);\n    this._rpc.RPCSetGhostColor(this._settings.ghostColor);\n    this._rpc.RPCLockIblRotation(this._settings.lockIblRotation);\n  }\n  // Getters\n  /**\n   * Gets the ghost color used for transparent rendering\n   * @returns Current ghost color as RGBA\n   */\n  get ghostColor() {\n    return this._settings.ghostColor;\n  }\n  /**\n   * Gets the IBL rotation lock setting\n   * @returns Whether IBL rotation is locked\n   */\n  get lockIblRotation() {\n    return this._settings.lockIblRotation;\n  }\n  /**\n   * Gets the tone mapping white point value\n   * @returns Current tone mapping white point\n   */\n  get toneMappingWhitePoint() {\n    return this._settings.toneMappingWhitePoint;\n  }\n  /**\n   * Gets the HDR scale value\n   * @returns Current HDR scale\n   */\n  get hdrScale() {\n    return this._settings.hdrScale;\n  }\n  /**\n   * Gets the HDR background scale value\n   * @returns Current HDR background scale\n   */\n  get hdrBackgroundScale() {\n    return this._settings.hdrBackgroundScale;\n  }\n  /**\n   * Gets the HDR background saturation value\n   * @returns Current HDR background saturation\n   */\n  get hdrBackgroundSaturation() {\n    return this._settings.hdrBackgroundSaturation;\n  }\n  /**\n   * Gets the background blur value\n   * @returns Current background blur\n   */\n  get backgroundBlur() {\n    return this._settings.backGroundBlur;\n  }\n  /**\n   * Gets the background color\n   * @returns Current background color as RGBA\n   */\n  get backgroundColor() {\n    return this._settings.backgroundColor;\n  }\n  // Setters\n  /**\n   * Updates the ghost color used for transparent rendering\n   * @param value - New ghost color as RGBA\n   */\n  set ghostColor(value) {\n    value = Validation.clampRGBA01(value);\n    if (this._settings.ghostColor.equals(value)) return;\n    this._settings.ghostColor = value;\n    this._updateGhostColor = true;\n    this.requestSettingsUpdate();\n  }\n  /**\n   * Updates the IBL rotation lock setting\n   * @param value - Whether to lock IBL rotation\n   */\n  set lockIblRotation(value) {\n    if (this._settings.lockIblRotation === value) return;\n    this._settings.lockIblRotation = value;\n    this._updateIblRotation = true;\n    this.requestSettingsUpdate();\n  }\n  /**\n   * Sets the tone mapping white point value\n   * @param value - New tone mapping white point value\n   */\n  set toneMappingWhitePoint(value) {\n    value = Validation.clamp01(value);\n    if (this._settings.toneMappingWhitePoint === value) return;\n    this._settings.toneMappingWhitePoint = value;\n    this._updateLighting = true;\n    this.requestSettingsUpdate();\n  }\n  /**\n   * Sets the HDR scale value\n   * @param value - New HDR scale value\n   */\n  set hdrScale(value) {\n    value = Validation.min0(value);\n    if (this._settings.hdrScale === value) return;\n    this._settings.hdrScale = value;\n    this._updateLighting = true;\n    this.requestSettingsUpdate();\n  }\n  /**\n   * Sets the HDR background scale value\n   * @param value - New HDR background scale value\n   */\n  set hdrBackgroundScale(value) {\n    value = Validation.clamp01(value);\n    if (this._settings.hdrBackgroundScale === value) return;\n    this._settings.hdrBackgroundScale = value;\n    this._updateLighting = true;\n    this.requestSettingsUpdate();\n  }\n  /**\n   * Sets the HDR background saturation value\n   * @param value - New HDR background saturation value\n   */\n  set hdrBackgroundSaturation(value) {\n    value = Validation.clamp01(value);\n    if (this._settings.hdrBackgroundSaturation === value) return;\n    this._settings.hdrBackgroundSaturation = value;\n    this._updateLighting = true;\n    this.requestSettingsUpdate();\n  }\n  /**\n   * Sets the background blur value\n   * @param value - New background blur value\n   */\n  set backgroundBlur(value) {\n    value = Validation.clamp01(value);\n    if (this._settings.backGroundBlur === value) return;\n    this._settings.backGroundBlur = value;\n    this._updateLighting = true;\n    this.requestSettingsUpdate();\n  }\n  /**\n   * Sets the background color\n   * @param value - New background color as RGBA\n   */\n  set backgroundColor(value) {\n    value = Validation.clampRGBA01(value);\n    if (this._settings.backgroundColor.equals(value)) return;\n    this._settings.backgroundColor = value;\n    this._updateLighting = true;\n    this.requestSettingsUpdate();\n  }\n  /**\n   * Requests an update to be performed on the next animation frame.\n   * Multiple setting changes will be batched into a single update.\n   * @private\n   */\n  requestSettingsUpdate() {\n    if (this._animationFrame) return;\n    this._animationFrame = requestAnimationFrame(() => {\n      this.applySettings();\n    });\n  }\n  async applySettings() {\n    if (this._updateLighting) await this._rpc.RPCSetLighting(this._settings);\n    if (this._updateGhostColor) await this._rpc.RPCSetGhostColor(this._settings.ghostColor);\n    if (this._updateIblRotation) await this._rpc.RPCLockIblRotation(this._settings.lockIblRotation);\n    this._updateLighting = false;\n    this._updateGhostColor = false;\n    this._updateIblRotation = false;\n    this._animationFrame = void 0;\n  }\n  /**\n   * Cleans up renderer resources\n   * Cancels any pending animation frames\n   */\n  dispose() {\n    if (this._animationFrame) {\n      cancelAnimationFrame(this._animationFrame);\n      this._animationFrame = void 0;\n    }\n  }\n}\nconst DEFAULT_LOCAL_ULTRA_SERVER_URL = \"ws://localhost:8123\";\nconst INVALID_HANDLE = 4294967295;\nclass Viewer {\n  /**\n   * Constructs a new Viewer instance.\n   * @param canvas - The HTML canvas element for rendering.\n   * @param logger - Optional logger for logging messages.\n   */\n  constructor(canvas, logger) {\n    __publicField(this, \"_decoder\");\n    __publicField(this, \"_socketClient\");\n    __publicField(this, \"_input\");\n    __publicField(this, \"_logger\");\n    __publicField(this, \"_canvas\");\n    __publicField(this, \"_renderer\");\n    __publicField(this, \"_viewport\");\n    __publicField(this, \"_camera\");\n    __publicField(this, \"_selection\");\n    __publicField(this, \"_vims\");\n    __publicField(this, \"_disposed\", false);\n    /**\n     * The RPC client for making remote procedure calls.\n     */\n    __publicField(this, \"rpc\");\n    /**\n     * API to create, manage, and destroy colors.\n     */\n    __publicField(this, \"colors\");\n    this._logger = logger ?? defaultLogger;\n    this._socketClient = new SocketClient(this._logger);\n    this.rpc = new RpcSafeClient(new RpcClient(this._socketClient));\n    this._canvas = canvas;\n    this._vims = new VimCollection();\n    this._viewport = new Viewport(canvas, this.rpc);\n    this._decoder = new Decoder(canvas, this._logger);\n    this._selection = new ViewerSelection(this.rpc, this._vims);\n    this._renderer = new Renderer(this.rpc);\n    this.colors = new ColorManager(this.rpc);\n    this._camera = new Camera(this.rpc);\n    this._input = new Inputs(canvas, this.rpc, this._selection, this._camera, this._renderer);\n    this._socketClient.onVideoFrame = (msg) => this._decoder.enqueue(msg);\n    this._socketClient.onStatusUpdate.subscribe((state) => {\n      if (state.status === \"disconnected\") {\n        this.onDisconnect();\n      } else if (state.status === \"connected\") {\n        this.onConnect();\n      }\n      if (state.status === \"error\") {\n        this.onDisconnect();\n      }\n    });\n    window.onbeforeunload = () => this.dispose();\n  }\n  // API components\n  /**\n   * The camera API for controlling camera movements and settings.\n   */\n  get camera() {\n    return this._camera;\n  }\n  /**\n   * The input API for handling user input events.\n   */\n  get inputs() {\n    return this._input;\n  }\n  get vims() {\n    return this._vims;\n  }\n  /**\n   * The viewport API for managing the rendering viewport.\n   */\n  get viewport() {\n    return this._viewport;\n  }\n  get renderer() {\n    return this._renderer;\n  }\n  get decoder() {\n    return this._decoder;\n  }\n  /**\n   * Gets the current URL to which the viewer is connected.\n   * @returns The URL as a string, or undefined if not connected.\n   */\n  get serverUrl() {\n    return this._socketClient.url;\n  }\n  /**\n   * Event that is triggered when the viewer's connection status changes.\n   * @returns An event that emits the current ClientStatus.\n   */\n  get onStateChanged() {\n    return this._socketClient.onStatusUpdate;\n  }\n  /**\n   * Gets the current connection status of the viewer.\n   * @returns The current ClientStatus.\n   */\n  get state() {\n    return this._socketClient.state;\n  }\n  /**\n   * Creates a Viewer instance with a new canvas element appended to the given parent element.\n   * @param parent - The parent HTML element to which the canvas will be appended.\n   * @param logger - Optional logger for logging messages.\n   * @returns A new instance of the Viewer class.\n   */\n  static createWithCanvas(parent, logger) {\n    const canvas = document.createElement(\"canvas\");\n    parent.appendChild(canvas);\n    canvas.style.width = \"100%\";\n    canvas.style.height = \"100%\";\n    const uv = new Viewer(canvas, logger);\n    return uv;\n  }\n  /**\n   * Handles connection logic when the viewer connects to the server.\n   * Initializes components and checks for API version compatibility.\n   */\n  async onConnect() {\n    if (!this.checkAPIVersion()) return;\n    this._renderer.onConnect();\n    this._input.onConnect();\n    this._camera.onConnect();\n    this._vims.getAll().forEach((vim) => vim.connect());\n    this._viewport.update();\n    this._decoder.start();\n  }\n  async checkAPIVersion() {\n    const version = await this.rpc.RPCGetAPIVersion();\n    const localVersion = this.rpc.API_VERSION;\n    const parseVersion = (v) => {\n      const [major, minor, patch] = v.split(\".\").map(Number);\n      return { major, minor, patch };\n    };\n    const remoteVersion = parseVersion(version);\n    const localParsedVersion = parseVersion(localVersion);\n    if (localParsedVersion.major !== remoteVersion.major) {\n      this._socketClient.disconnect({\n        status: \"error\",\n        error: \"compatibility\",\n        serverUrl: this._socketClient.url ?? \"\",\n        clientVersion: localVersion,\n        serverVersion: version\n      });\n      return false;\n    }\n    return true;\n  }\n  /**\n   * Handles disconnection logic when the viewer disconnects from the server.\n   * Cleans up resources and stops tracking.\n   */\n  onDisconnect() {\n    this._camera.stopTracking();\n    this._decoder.stop();\n    this._decoder.clear();\n    this.colors.clear();\n    this._vims.getAll().forEach((vim) => vim.disconnect());\n  }\n  /**\n   * Connects to a VIM Ultra server.\n   * @param url - The server URL to connect to. Defaults to 'ws://localhost:8123'.\n   * @returns A promise that resolves when the connection is established.\n   */\n  async connect(url = DEFAULT_LOCAL_ULTRA_SERVER_URL) {\n    await this._socketClient.connect(url);\n  }\n  /**\n   * Disconnects from the current VIM Ultra server.\n   */\n  disconnect() {\n    this._socketClient.disconnect();\n  }\n  /**\n   * Requests the server to load the given URL or file path.\n   * @param path - The path or URL to the VIM file.\n   * @returns A load request object that can be used to wait for the load to complete.\n   */\n  loadVim(path) {\n    if (typeof path !== \"string\" || path.trim() === \"\") {\n      const request2 = new LoadRequest();\n      request2.error(\"loadingError\", \"Invalid path\");\n      return request2;\n    }\n    const vim = new Vim(this.rpc, this.colors, path, this._logger);\n    this._vims.add(vim);\n    const request = vim.connect();\n    request.getResult().then((result) => {\n      if (result.isError) {\n        this._vims.remove(vim);\n      }\n    });\n    return request;\n  }\n  /**\n   * Unloads the given VIM from the viewer.\n   * @param vim - The VIM instance to unload.\n   */\n  unloadVim(vim) {\n    this._vims.remove(vim);\n    vim.disconnect();\n  }\n  /**\n   * Clears all loaded VIMs from the viewer.\n   */\n  clearVims() {\n    this._vims.getAll().forEach((vim) => vim.disconnect());\n    this._vims.clear();\n  }\n  /**\n   * Disposes all resources used by the viewer and disconnects from the server.\n   */\n  dispose() {\n    if (this._disposed) return;\n    this._disposed = true;\n    this.disconnect();\n    this._socketClient.dispose();\n    this._viewport.dispose();\n    this._decoder.dispose();\n    this._input.dispose();\n    this._canvas.remove();\n    window.onbeforeunload = null;\n  }\n}\nvar createRoot;\nvar m = require$$0;\nif (process.env.NODE_ENV === \"production\") {\n  createRoot = m.createRoot;\n  m.hydrateRoot;\n} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\nclass ComponentRef {\n  constructor(viewer, message, logs) {\n    __publicField(this, \"_viewer\");\n    __publicField(this, \"_message\");\n    __publicField(this, \"logs\");\n    this._viewer = viewer;\n    this._message = message;\n    this.logs = logs;\n  }\n  get viewer() {\n    return this._viewer;\n  }\n  /**\n   * Display a message in the react ui.\n   * @param message message to display. Undefined to clear the message.\n   */\n  message(message) {\n    this._message(message);\n  }\n  /**\n   * Load a vim file from a url or local path on the server.\n   * @param url url or local path to the vim file.\n   * @returns a request object that can be used to wait for the load to complete.\n   */\n  load(url) {\n    const request = this._viewer.loadVim(url);\n    return request;\n  }\n}\nfunction createComponent(parent) {\n  const promise2 = new ControllablePromise();\n  const reactRoot = createRoot(parent ?? document.createElement(\"div\"));\n  reactRoot.render(\n    /* @__PURE__ */ React.createElement(UltraComponent, { onReady: (ref) => promise2.resolve(ref) })\n  );\n  return promise2.promise;\n}\nfunction UltraComponent(props) {\n  const div = useRef(null);\n  const autoScroll = useRef(true);\n  const [expandLogs, setExpandLogs] = useState(false);\n  const [logContent, setLogContent] = useState(\"\");\n  const [useLogs, setUseLogs] = useState(false);\n  const [msg, setMsg] = useState(void 0);\n  const text = useRef(null);\n  const unsubscribe = useRef();\n  const timeout = useRef();\n  useEffect(() => {\n    var _a;\n    if (autoScroll.current) {\n      (_a = text.current) == null ? void 0 : _a.scroll(0, 1e5);\n    }\n  });\n  useEffect(() => {\n    clearTimeout(timeout.current);\n    if (msg !== void 0) {\n      timeout.current = setTimeout(() => {\n        setMsg(void 0);\n      }, 5e3);\n    }\n  }, [msg]);\n  useEffect(() => {\n    const logger = createLogger((str) => setLogContent((c) => c + \"\\n\" + str));\n    const viewer = Viewer.createWithCanvas(div.current, logger);\n    unsubscribe.current = viewer.onStateChanged.subscribe(() => {\n      clearTimeout(timeout.current);\n      setMsg(connectionMessage(viewer.state, viewer.serverUrl ?? \"\"));\n    });\n    const log = {\n      get enable() {\n        return useLogs;\n      },\n      set enable(use) {\n        setUseLogs(use);\n      }\n    };\n    props.onReady(new ComponentRef(viewer, setMsg, log));\n  }, []);\n  const msgbox = () => {\n    const shadow = \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\";\n    return /* @__PURE__ */ React.createElement(\"div\", { className: \"msgbox\", style: { position: \"absolute\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", boxShadow: shadow, border: \"1px solid black\", borderRadius: \"8px\", backgroundColor: \"white\", opacity: \"80%\", top: \"40px\", left: \"30%\", right: \"30%\", height: \"60px\", padding: \"10px\", overflow: \"hidden\", whiteSpace: \"pre-wrap\", wordBreak: \"break-word\" } }, /* @__PURE__ */ React.createElement(\"span\", { style: { fontSize: \"clamp(8px, 2vw, 16px)\" } }, msg));\n  };\n  const logs = () => {\n    return /* @__PURE__ */ React.createElement(\"div\", { className: \"logs\", style: { transition: \"height 0.5s ease\", position: \"absolute\", right: \"0px\", bottom: \"0px\", width: \"300px\", height: expandLogs ? \"80%\" : \"0%\" }, ref: div }, /* @__PURE__ */ React.createElement(\"button\", { onClick: () => setExpandLogs(!expandLogs), style: { position: \"absolute\", right: \"0px\", top: \"-20px\", width: \"40px\", height: \"20px\", opacity: \"100%\" } }, \"logs\"), /* @__PURE__ */ React.createElement(\"textarea\", { ref: text, value: logContent, readOnly: true, style: { position: \"absolute\", borderWidth: expandLogs ? \"1px\" : \"0px\", opacity: \"80%\", inset: \"0px\", padding: \"0px\", resize: \"none\" } }));\n  };\n  return /* @__PURE__ */ React.createElement(\"div\", { style: { position: \"relative\", minHeight: \"0px\", height: \"100%\", width: \"100%\", textAlign: \"center\" }, ref: div }, msg ? msgbox() : null, useLogs ? logs() : null);\n}\nfunction connectionMessage(state, url) {\n  switch (state.status) {\n    case \"connecting\":\n      return `Connecting to ${url}`;\n    case \"connected\":\n      return `Connected to ${url}`;\n    case \"disconnected\":\n      return `Cannot connect to ${url ?? \"Missing URL\"}. Please ensure the VIM Ultra process is running and that it can be reached by the local machine.`;\n  }\n}\nexport {\n  Box3,\n  ColorHandle,\n  ComponentRef,\n  DEFAULT_LOCAL_ULTRA_SERVER_URL,\n  INVALID_HANDLE,\n  RGB,\n  RGBA,\n  RGBA32,\n  Segment,\n  UltraComponent,\n  Vector2,\n  Vector3,\n  Viewer,\n  Vim,\n  clamp,\n  createComponent,\n  remap,\n  promise as utils\n};\n//# sourceMappingURL=vim-ultra-viewer.js.map\n","import React from 'react'\r\n\r\nexport const vcColorPrimary = 'vc-text-[#212733]'\r\nexport const vcColorSecondary = 'vc-text-[#787C83]'\r\nexport const vcColorLink = 'vc-text-[#0590CC]'\r\nexport const vcLink = `${vcColorLink} vc-underline`\r\nexport const vcLabel = 'vc-text-[#3F444F]'\r\nexport const vcRoboto = 'vc-font-[\\'Roboto\\',sans-serif]'\r\n\r\nexport function footer (url: string) {\r\n  return (\r\n    <span className={`vc-text-[12.8px] vc-font-normal ${vcColorSecondary}`}>\r\n      More troubleshooting tips can be found{' '}\r\n      {link(url, 'here')}\r\n    </span>\r\n  )\r\n}\r\n\r\nexport function mainText (text: JSX.Element) {\r\n  return <p className={`vc-text-base ${vcColorPrimary} vc-mb-4 vc-font-normal`}>\r\n    {text}\r\n  </p>\r\n}\r\n\r\nexport function detailText (text: string) {\r\n  return <span className={`${vcColorSecondary} vc-text-base vc-italic vc-break-words vc-font-normal`}>{text}</span>\r\n}\r\n\r\nexport function bold (text: string) {\r\n  return <span className=\"vc-text-base vc-font-bold\">{text}</span>\r\n}\r\n\r\nexport function subTitle (title: string) {\r\n  return <span className={`vc-text-base vc-font-bold ${vcColorPrimary}`}>{title}</span>\r\n}\r\n\r\nexport function dotList (elements: (JSX.Element | string)[]) {\r\n  return (\r\n    <ul className={`vc-space-y-1 vc-ml-5 ${vcColorPrimary} vc-mb-4`}>\r\n      {elements.filter(v => v).map((element, index) => (\r\n        <li className='vc-list-disc vc-text-base vc-font-normal' key={index}>{element}</li>\r\n      ))}\r\n    </ul>\r\n  )\r\n}\r\n\r\nexport function numList (elements: (JSX.Element | string)[]) {\r\n  return (\r\n    <ul className={`vc-space-y-1 vc-ml-5 ${vcColorPrimary} vc-mb-4`}>\r\n      {elements.filter(v => v).map((element, index) => (\r\n        <li className='vc-list-decimal vc-text-base vc-font-normal' key={index}>{element}</li>\r\n      ))}\r\n    </ul>\r\n  )\r\n}\r\n\r\nexport function bullet (label: string, value: string) {\r\n  return <>\r\n    <span className={vcLabel}>{label}</span> <span className={` vc-break-all  ${vcColorSecondary}`}>{value}</span>\r\n  </>\r\n}\r\n\r\nexport function link (url: string, text: string) {\r\n  return <a href={url} className={vcLink}>\r\n    {text}\r\n  </a>\r\n}\r\n","export const residence = 'https://vim.azureedge.net/samples/residence.v1.2.75.vim'\r\n\r\n// Ask Martin or Simon for the access token\r\nexport const residenceWithAccessToken = 'https://saas-api-v2.vimaec.com/api/public/542c2335-992d-4af0-ffd9-08dd0262dd9c/2024-11-11T15:09:43'\r\n\r\nexport const support = 'https://docs.vimaec.com'\r\nexport const supportControls = 'https://docs.vimaec.com/docs/vim-cloud/webgl-navigation-and-controls-guide'\r\n\r\nexport const notAVim = 'https://vimdevelopment01storage.blob.core.windows.net/samples/not_a_vim.vim'\r\n\r\nexport const medicalTower = 'https://vim.azureedge.net/samples/Medical_Tower.vim'\r\n","import React from 'react'\r\nimport { MessageBoxProps } from '../panels/messageBox'\r\nimport * as style from './errorStyle'\r\nimport * as Urls from '../../urls'\r\n\r\nexport function fileOpeningError (url: string): MessageBoxProps {\r\n  return {\r\n    title: 'File Opening Error',\r\n    body: serverFileOpeningErrorBody(url),\r\n    footer: style.footer(Urls.support),\r\n    canClose: false\r\n  }\r\n}\r\n\r\nfunction serverFileOpeningErrorBody (url : string) {\r\n  return (\r\n    <div className={style.vcRoboto}>\r\n      {style.mainText(<>\r\n        Oops, it appears that there's an {style.bold('error opening the VIM file')}.\r\n        Please check the file exists at the path noted below.\r\n      </>)}\r\n      {style.subTitle('Error details:')}\r\n      {style.dotList([style.bullet('File path:', url)])}\r\n    </div>\r\n  )\r\n}\r\n","export function isLocalUrl (url: string): boolean {\r\n  try {\r\n    const parsedUrl = new URL(url)\r\n    return parsedUrl.hostname === 'localhost' || parsedUrl.hostname === '127.0.0.1'\r\n  } catch (e) {\r\n    return false\r\n  }\r\n}\r\n\r\nexport function isFilePathOrUri (input: string): boolean {\r\n  // Check if it's a file URI\r\n  const fileUriPattern = /^file:\\/\\//i\r\n  if (fileUriPattern.test(input)) {\r\n    return true\r\n  }\r\n\r\n  // Check if it's a URL with a common scheme\r\n  const urlPattern = /^(https?|ftp|data|mailto|tel):/i\r\n  if (urlPattern.test(input)) {\r\n    return false // It's a URL, not a file path\r\n  }\r\n\r\n  // If none of the URL patterns match, consider it a file path\r\n  return true\r\n}\r\n","import React from 'react'\r\nimport { MessageBoxProps } from '../panels/messageBox'\r\nimport * as style from './errorStyle'\r\nimport * as Urls from '../../urls'\r\nimport { isFilePathOrUri } from './errorUtils'\r\nimport { fileOpeningError } from './fileOpeningError'\r\n\r\nexport function fileDownloadingError (url : string, server?: string): MessageBoxProps {\r\n  if (isFilePathOrUri(url)) {\r\n    return fileOpeningError(url)\r\n  }\r\n\r\n  return {\r\n    title: 'File Downloading Error',\r\n    body: body(server, url),\r\n    footer: style.footer(Urls.support),\r\n    canClose: false\r\n  }\r\n}\r\n\r\nfunction body (server : string, url : string) {\r\n  return (\r\n    <div className={style.vcRoboto}>\r\n      {style.mainText(<>\r\n        Oops, it appears that there’s an {style.bold('error downloading the VIM file')}.\r\n        Please check the following conditions to get back up and running quickly.\r\n      </>)}\r\n      {style.subTitle('Error details:')}\r\n      {style.dotList([\r\n        server ? style.bullet('VIM ULTRA Server:', server) : null,\r\n        style.bullet('File URL:', url)\r\n      ])}\r\n      {style.subTitle('Troubleshooting tips:')}\r\n      {style.numList([\r\n        'Make sure the VIM exists at the url listed above.',\r\n        'Reprocess the VIM file and refresh the Power BI report dataset.',\r\n        server ? 'Check network access policies to allow the VIM Ultra Server access to the VIM File url.' : ''\r\n      ])}\r\n    </div>\r\n  )\r\n}\r\n","import React from 'react'\r\nimport { MessageBoxProps } from '../panels/messageBox'\r\nimport * as style from './errorStyle'\r\nimport * as Urls from '../../urls'\r\n\r\nexport function serverFileLoadingError (url: string): MessageBoxProps {\r\n  return {\r\n    title: 'File Loading Error',\r\n    body: body(url),\r\n    footer: style.footer(Urls.support),\r\n    canClose: false\r\n  }\r\n}\r\n\r\nfunction body (url : string) {\r\n  return (\r\n    <div className={style.vcRoboto}>\r\n      {style.mainText(<>\r\n        Oops, it appears that we {style.bold('couldn’t load the VIM file')}.\r\n        This could be due to a couple of reasons,\r\n        including that the file could be corrupt or not recognizable.\r\n      </>)}\r\n      {style.subTitle('Error details:')}\r\n      {style.dotList([style.bullet('File path:', url)])}\r\n      {style.subTitle('Troubleshooting tips:')}\r\n      {style.numList([\r\n        'Reload this Power BI report',\r\n        'Reprocess the VIM file and refresh the Power BI report dataset'\r\n      ])}\r\n    </div>\r\n  )\r\n}\r\n","import React from 'react'\r\nimport { MessageBoxProps } from '../panels/messageBox'\r\nimport * as style from './errorStyle'\r\nimport * as Urls from '../../urls'\r\nimport { isLocalUrl } from './errorUtils'\r\n\r\nexport function serverConnectionError (url: string): MessageBoxProps {\r\n  return {\r\n    title: 'Connection Error',\r\n    body: body(url, isLocalUrl(url)),\r\n    footer: style.footer(Urls.support),\r\n    canClose: false\r\n  }\r\n}\r\n\r\nfunction body (url: string, local: boolean): JSX.Element {\r\n  return (\r\n    <div className={style.vcRoboto}>\r\n      {style.mainText(<>\r\n        Oops, it appears that there’s an {style.bold('error connecting to the ULTRA server')}.\r\n        Please check the following conditions to get back up and running quickly.\r\n      </>)}\r\n      {style.subTitle('Troubleshooting tips:')}\r\n      {style.numList([<>\r\n        Ensure that VIM Ultra{' '}\r\n        {style.link(Urls.support, 'process is running')}{' '}\r\n        at {style.detailText(url)}\r\n      </>,\r\n      'Check your internet connection.',\r\n      'Check firewall permissions.'\r\n      ])}\r\n    </div>\r\n  )\r\n}\r\n","import React from 'react'\r\nimport { MessageBoxProps } from '../panels/messageBox'\r\nimport * as style from './errorStyle'\r\nimport * as Urls from '../../urls'\r\n\r\nexport function serverCompatibilityError (url: string, localVersion: string, remoteVersion: string): MessageBoxProps {\r\n  return {\r\n    title: 'Compatibility Error',\r\n    body: body(url, localVersion, remoteVersion),\r\n    footer: style.footer(Urls.support),\r\n    canClose: false\r\n  }\r\n}\r\n\r\nfunction body (url: string, localVersion: string, remoteVersion: string): JSX.Element {\r\n  return (\r\n    <div className={style.vcRoboto}>\r\n      {style.mainText(<>\r\n        Oops, it appears that you’re running a {' '}\r\n        {style.bold('version of VIM Ultra Server that isn’t compatible with this visual')}.\r\n        Please check the following conditions to get back up and running quickly.\r\n      </>)}\r\n       {style.subTitle('Error details:')}\r\n      <ul className={`vc-list-disc vc-ml-5 ${style.vcColorPrimary} vc-font-regular vc-mb-4`}>\r\n        {style.bullet('Url:', url)}\r\n        {style.bullet('Local Version:', localVersion)}\r\n        {style.bullet('Remote Version:', remoteVersion)}\r\n      </ul>\r\n      {style.subTitle('Troubleshooting tips:')}\r\n      {style.numList([\r\n        'Update your PowerBI visual with the compatible version.',\r\n        'Or, run the compatible version of VIM Ultra.'\r\n      ]) }\r\n    </div>\r\n  )\r\n}\r\n","import { ClientState } from 'vim-ultra-viewer/dist/types/viewer/socketClient'\r\nimport * as Errors from '../errors/errors'\r\nimport { VimRequestErrorType } from 'vim-ultra-viewer/dist/types/viewer/loadRequest'\r\n\r\nexport function getErrorMessage (state: ClientState) {\r\n  if (state.status !== 'error') return\r\n  if (state.error === 'compatibility') {\r\n    return Errors.serverCompatibilityError(state.serverUrl, state.serverVersion, state.clientVersion)\r\n  }\r\n  if (state.error === 'connection') {\r\n    return Errors.serverConnectionError(state.serverUrl)\r\n  }\r\n}\r\n\r\nexport function getRequestErrorMessage (url: string, error: VimRequestErrorType) {\r\n  console.log(error)\r\n  switch (error) {\r\n    case 'loadingError':\r\n      return Errors.serverFileLoadingError(url)\r\n    case 'downloadingError':\r\n    case 'unknown':\r\n    case 'cancelled':\r\n      return Errors.serverFileDownloadingError(url)\r\n    case 'serverDisconnected':\r\n      return Errors.serverConnectionError(url)\r\n  }\r\n}\r\n","\r\nimport '../style.css'\r\nimport 'vim-webgl-viewer/dist/style.css'\r\nimport * as ULTRA from 'vim-ultra-viewer/'\r\nimport React, { useEffect } from 'react'\r\nimport { VimComponentContainer, createContainer } from '../container'\r\nimport { createRoot } from 'react-dom/client'\r\nimport { DeferredPromise } from '../helpers/deferredPromise'\r\nimport { Overlay } from '../panels/overlay'\r\nimport { Modal, ModalRef, useModal } from '../panels/modal'\r\nimport { getErrorMessage, getRequestErrorMessage } from './ultraErrors'\r\nimport { ClientState } from 'vim-ultra-viewer/dist/types/viewer/socketClient'\r\nimport { ILoadRequest } from 'vim-ultra-viewer/dist/types/viewer/loadRequest'\r\nexport * from 'vim-ultra-viewer/'\r\n\r\nexport type UltraComponentRef = {\r\n  viewer : ULTRA.Viewer\r\n  modal: ModalRef\r\n  dispose: () => void\r\n  load(url: string): ILoadRequest\r\n}\r\n\r\n/**\r\n * Creates a UI container along with a VIM.Viewer and its associated React component.\r\n * @param container An optional container object. If none is provided, a container will be created.\r\n * @param componentSettings UI Component settings.\r\n*  @param viewerSettings Viewer settings.\r\n * @returns An object containing the resulting container, reactRoot, and viewer.\r\n */\r\nexport function createUltraComponent (\r\n  container?: VimComponentContainer | HTMLElement\r\n) : Promise<UltraComponentRef> {\r\n  const promise = new DeferredPromise<UltraComponentRef>()\r\n  const cmpContainer = container instanceof HTMLElement\r\n    ? createContainer(container)\r\n    : container ?? createContainer()\r\n  // Create the viewer and container\r\n  const viewer = ULTRA.Viewer.createWithCanvas(cmpContainer.gfx)\r\n\r\n  // Create the React root\r\n  const reactRoot = createRoot(cmpContainer.ui)\r\n\r\n  // Patch the component to clean up after itself\r\n  const patchRef = (cmp : UltraComponentRef) => {\r\n    cmp.dispose = () => {\r\n      viewer.dispose()\r\n      cmpContainer.dispose()\r\n      reactRoot.unmount()\r\n    }\r\n    return cmp\r\n  }\r\n\r\n  reactRoot.render(\r\n    <UltraComponent\r\n      container={cmpContainer}\r\n      viewer={viewer}\r\n      onMount = {(cmp : UltraComponentRef) => promise.resolve(patchRef(cmp))}\r\n    />\r\n  )\r\n  return promise\r\n}\r\n\r\n/**\r\n * Represents a React component providing UI for the Vim viewer.\r\n * @param container The container object containing root, gfx, and UI elements for the Vim viewer.\r\n * @param viewer The Vim viewer instance for which UI is provided.\r\n * @param onMount A callback function triggered when the component is mounted. Receives a reference to the Vim component.\r\n * @param settings Optional settings for configuring the Vim component's behavior.\r\n */\r\nexport function UltraComponent (props: {\r\n  container: VimComponentContainer\r\n  viewer: ULTRA.Viewer\r\n  onMount: (component: UltraComponentRef) => void}) {\r\n  const modal = useModal(true)\r\n  useEffect(() => {\r\n    props.viewer.onStateChanged.subscribe(state => updateModal(modal, state))\r\n    props.onMount(ToRef(props.viewer, modal))\r\n  }, [])\r\n\r\n  return <>\r\n  <Overlay canvas={props.viewer.viewport.canvas}/>\r\n  <Modal state={modal}/>\r\n  </>\r\n}\r\n\r\nfunction updateModal (modal: ModalRef, state: ClientState) {\r\n  if (state.status === 'connected') {\r\n    modal.loading(undefined)\r\n    modal.message(undefined)\r\n  }\r\n  if (state.status === 'connecting') {\r\n    if (modal.current === undefined || modal.current.type === 'loading') {\r\n      modal.loading({ message: 'Connecting to server...' })\r\n    }\r\n  }\r\n  if (state.status === 'error') {\r\n    console.log('Error loading vim', state)\r\n    modal.message(getErrorMessage(state))\r\n  }\r\n}\r\n\r\nfunction ToRef (viewer: ULTRA.Viewer, modal: ModalRef): UltraComponentRef {\r\n  // Load a file from the server\r\n  function load (url: string): ILoadRequest {\r\n    const request = viewer.loadVim(url)\r\n\r\n    // We don't want to block the main thread to get progress updates\r\n    updateProgress(request, modal)\r\n\r\n    // We decorate the request to display manage modal messages\r\n    request.getResult().then(\r\n      result => {\r\n        if (result.isError) {\r\n          modal.message(getRequestErrorMessage(url, result.error))\r\n          return\r\n        }\r\n        if (result.isSuccess) {\r\n          modal.loading(undefined)\r\n        }\r\n      }\r\n    )\r\n    return request\r\n  }\r\n\r\n  return {\r\n    viewer,\r\n    modal,\r\n    dispose: () => {},\r\n    load\r\n  }\r\n}\r\n\r\nasync function updateProgress (request: ILoadRequest, modal: ModalRef) {\r\n  for await (const progress of request.getProgress()) {\r\n    if (request.isCompleted) break\r\n    modal.loading({ message: 'Loading File...', progress })\r\n  }\r\n}\r\n"],"names":["m","require$$0","createRoot","i","REACT_ELEMENT_TYPE","Element","require$$1","hasOwnProperty","toObject","err","has","require$$2","require$$3","require$$4","data","checker","isSymbol","propTypesModule","keys","_extends","_getPrototypeOf","o","_setPrototypeOf","p","self","call","commonjsGlobal","exec","test","toString$1","process","id","toString","defineProperty","WeakMap","TYPE","store","floor","trunc","hasOwn","ownKeys","getOwnPropertyDescriptor","normalize","isConstructor","isArray","isObject","create","content","activeXDocument","dispatchGlobalEvent","target","checkStatus","isCapture","setUntargetItems","set","listener","get","event","makeProxy","bodyListener","customEvent","findCustomEvents","getBody","body","getMutationObserverClass","getTipOffsetLeft","place","getTipOffsetRight","getTipOffsetTop","getTipOffsetBottom","outsideLeft","outsideRight","outsideTop","outsideBottom","outside","inside","getDimensions","getCurrentOffset","getDefaultPosition","calculateOffset","getParent","React","generateUUID","ReactTooltip","bind","style","updateState","resetState","html","PropTypes","__defProp","__defNormalProp","__publicField","clamp$1","min","max","range","Vector2","cx","Vector3","camera","Box3","data2","version","match","errors","functionName","push","sort","visible","WebGLRenderer","camera2","urls","settings","dist$3","more","uniqueId","title","split","isMergeableObject","isNonNullObject","isSpecial","isReactElement","canUseSymbol","emptyTarget","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getMergeFunction","getEnumerableOwnPropertySymbols","getKeys","propertyIsOnObject","propertyIsUnsafe","mergeObject","deepmerge_1","cjs","elementIds","dist$2","dist$1","DispatcherBase$1","DispatcherWrapper$1","DispatcherWrapper","Subscription$1","Subscription","EventManagement$1","EventManagement","DispatcherWrapper_1","Subscription_1","EventManagement_1$1","DispatcherBase","SubscriptionChangeEventDispatcher","DispatchError$1","DispatchError","EventListBase$1","EventListBase","HandlingBase$1","HandlingBase","PromiseDispatcherBase$1","PromiseSubscription$1","PromiseSubscription","PromiseSubscription_1","EventManagement_1","DispatcherBase_1","DispatchError_1","PromiseDispatcherBase","ste_core_1$5","ste_core_1$4","ste_core_1$3","Vim","DeferredPromise","clamp","Camera","InputHandler","replacement","zoom","dist","SimpleEventDispatcher$1","ste_core_1$2","SimpleEventDispatcher","SimpleEventHandlingBase$1","SimpleEventList$1","ste_core_1$1","SimpleEventDispatcher_1$1","SimpleEventList","ste_core_1","SimpleEventList_1","SimpleEventHandlingBase","NonUniformSimpleEventList$1","SimpleEventDispatcher_1","NonUniformSimpleEventList","Viewport","collapse","Renderer","Viewer","_a","btnStyle","Icons.ghost","Icons.ghostDead","Icons.home","Icons.orthographic","Icons.perspective","hidden","createBar","createSection","measure","Icons.orbit","Icons.look","Icons.pan","Icons.zoom","Icons.frameRect","Icons.frameSelection","Icons.treeView","Icons.settings","Icons.help","Icons.minimize","Icons.fullsScreen","Icons.sectionBoxReset","Icons.sectionBoxShrink","Icons.sectionBoxIgnore","Icons.sectionBoxClip","Icons.checkmark","Icons.trash","Icons.sectionBox","Icons.measure","Icons.toggleIsolation","controlBar","_b","InteractionMode","__assign","this","isControlKey","DoubleClickItemToExpandInteractionManager","ClickItemToExpandInteractionManager","ClickArrowToExpandInteractionManager","trees","__spreadArray","viableDragPositions","draggingItems","draggingPosition","treeId","_c","check","EnvironmentActionsContext","childId","_d","items","item","_e","linearItems","descriptors","assign","divider","currentIndex","styles","createButton","Icons.close","open","Icons.collapse","createEntry","getHeader","__extends","d","b","Resizer","Resizable","flushSync","value","VIM.THREE","construct","e","t","c","VIM.DefaultInputScheme","VIM.KEYS","deepmergeAll","performance","EventListBase_1","HandlingBase_1","PromiseDispatcherBase_1","require$$5","require$$6","require$$7","require$$8","SimpleEventHandlingBase_1","NonUniformSimpleEventList_1","set2","document","elements","LoadRequest","VIM.request","Errors.serverFileDownloadingError","request","footer","text","promise","VIM.Viewer","contextMenu","ComponentInputScheme","orbit","msg","request2","UltraComponent","style.footer","Urls.support","style.vcRoboto","style.mainText","style.bold","style.subTitle","style.dotList","style.bullet","style.numList","style.link","style.detailText","style.vcColorPrimary","Errors.serverCompatibilityError","Errors.serverConnectionError","Errors.serverFileLoadingError","ULTRA.Viewer"],"mappings":"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AAW;AACjB,MAAM,aAAa;AACnB,MAAM,WAAW;AACjB,MAAM,aAAa;AACnB,MAAM,WAAW;AACjB,MAAM,aAAa;AACnB,MAAM,WAAW;AACjB,MAAM,aAAa;AACnB,MAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AACf;AACA,MAAM,cAAc;AAAA,EAClB,QAAQ;AAAA,IACN,SAAS,EAAE,OAAuB,oBAAI,MAAM,QAAQ,EAAG;AAAA,IACvD,SAAS,EAAE,OAAO,EAAG;AAAA,IACrB,KAAK,EAAE,OAAO,KAAM;AAAA,IACpB,aAAa,EAAE,OAAuB,oBAAI,UAAW;AAAA,IACrD,cAAc,EAAE,OAAuB,oBAAI,UAAW;AAAA,IACtD,UAAU,EAAE,OAAO,KAAM;AAAA,IACzB,WAAW,EAAE,OAAO,EAAG;AAAA,EACxB;AAAA,EACD,aAAa;AAAA,IACX,aAAa,EAAE,OAAO,KAAM;AAAA,EAC7B;AAAA,EACD,QAAQ;AAAA,IACN,QAAQ,EAAE,OAAO,KAAM;AAAA,IACvB,YAAY,EAAE,OAAO,GAAI;AAAA,IACzB,cAAc,EAAE,OAAO,EAAG;AAAA,IAC1B,KAAK,EAAE,OAAO,IAAK;AAAA,IACnB,iBAAiB,EAAE,OAAO,KAAM;AAAA,EACjC;AAAA,EACD,OAAO;AAAA,IACL,OAAO,EAAE,OAAO,KAAM;AAAA,IACtB,gBAAgB,EAAE,OAAO,EAAG;AAAA,EAC7B;AAAA,EACD,UAAU;AAAA,IACR,UAAU,EAAE,OAAO,KAAM;AAAA,IACzB,mBAAmB,EAAE,OAAO,EAAG;AAAA,EAChC;AAAA,EACD,aAAa;AAAA,IACX,aAAa,EAAE,OAAO,KAAM;AAAA,EAC7B;AAAA,EACD,SAAS;AAAA,IACP,SAAS,EAAE,OAAO,KAAM;AAAA,IACxB,WAAW,EAAE,OAAO,EAAG;AAAA,EACxB;AAAA,EACD,WAAW;AAAA,IACT,WAAW,EAAE,OAAO,KAAM;AAAA,IAC1B,aAAa,EAAE,OAAuB,oBAAImF,UAAQ,GAAG,CAAC,EAAG;AAAA,EAC1D;AAAA,EACD,iBAAiB;AAAA,IACf,iBAAiB,EAAE,OAAO,KAAM;AAAA,IAChC,mBAAmB,EAAE,OAAO,EAAG;AAAA,IAC/B,kBAAkB,EAAE,OAAO,EAAG;AAAA,EAC/B;AAAA,EACD,cAAc;AAAA,IACZ,cAAc,EAAE,OAAO,KAAM;AAAA,EAC9B;AAAA,EACD,cAAc;AAAA,IACZ,cAAc,EAAE,OAAO,KAAM;AAAA,EAC9B;AAAA,EACD,aAAa;AAAA,IACX,aAAa,EAAE,OAAO,KAAM;AAAA,EAC7B;AAAA,EACD,KAAK;AAAA,IACH,YAAY,EAAE,OAAO,MAAO;AAAA,IAC5B,SAAS,EAAE,OAAO,EAAG;AAAA,IACrB,QAAQ,EAAE,OAAO,IAAK;AAAA,IACtB,UAAU,EAAE,OAAuB,oBAAI,MAAM,QAAQ,EAAG;AAAA,EACzD;AAAA,EACD,QAAQ;AAAA,IACN,mBAAmB,EAAE,OAAO,GAAI;AAAA,IAChC,YAAY,EAAE,OAAO,GAAI;AAAA,IACzB,mBAAmB,EAAE,OAAO,CAAE,GAAE,YAAY;AAAA,MAC1C,WAAW,CAAE;AAAA,MACb,OAAO,CAAE;AAAA,IACf,EAAO;AAAA,IACH,yBAAyB,EAAE,OAAO,CAAE,GAAE,YAAY;AAAA,MAChD,YAAY,CAAE;AAAA,MACd,kBAAkB,CAAE;AAAA,MACpB,cAAc,CAAE;AAAA,MAChB,eAAe,CAAE;AAAA,IACvB,EAAO;AAAA,IACH,sBAAsB,EAAE,OAAO,GAAI;AAAA,IACnC,yBAAyB,EAAE,OAAO,GAAI;AAAA,IACtC,YAAY,EAAE,OAAO,CAAE,GAAE,YAAY;AAAA,MACnC,OAAO,CAAE;AAAA,MACT,UAAU,CAAE;AAAA,MACZ,WAAW,CAAE;AAAA,MACb,UAAU,CAAE;AAAA,MACZ,SAAS,CAAE;AAAA,MACX,aAAa,CAAE;AAAA,MACf,OAAO,CAAE;AAAA,IACf,EAAO;AAAA,IACH,kBAAkB,EAAE,OAAO,CAAE,GAAE,YAAY;AAAA,MACzC,YAAY,CAAE;AAAA,MACd,kBAAkB,CAAE;AAAA,MACpB,cAAc,CAAE;AAAA,MAChB,eAAe,CAAE;AAAA,IACvB,EAAO;AAAA,IACH,eAAe,EAAE,OAAO,GAAI;AAAA,IAC5B,kBAAkB,EAAE,OAAO,GAAI;AAAA,IAC/B,aAAa,EAAE,OAAO,CAAE,GAAE,YAAY;AAAA,MACpC,OAAO,CAAE;AAAA,MACT,UAAU,CAAE;AAAA,MACZ,OAAO,CAAE;AAAA,MACT,UAAU,CAAE;AAAA,IAClB,EAAO;AAAA,IACH,mBAAmB,EAAE,OAAO,CAAE,GAAE,YAAY;AAAA,MAC1C,YAAY,CAAE;AAAA,MACd,kBAAkB,CAAE;AAAA,MACpB,cAAc,CAAE;AAAA,MAChB,eAAe,CAAE;AAAA,MACjB,kBAAkB,CAAE;AAAA,MACpB,iBAAiB,CAAE;AAAA,IACzB,EAAO;AAAA,IACH,gBAAgB,EAAE,OAAO,GAAI;AAAA,IAC7B,mBAAmB,EAAE,OAAO,GAAI;AAAA,IAChC,kBAAkB,EAAE,OAAO,CAAE,GAAE,YAAY;AAAA,MACzC,WAAW,CAAE;AAAA,MACb,UAAU,CAAE;AAAA,MACZ,aAAa,CAAE;AAAA,IACrB,EAAO;AAAA,IACH,gBAAgB,EAAE,OAAO,CAAE,GAAE,YAAY;AAAA,MACvC,OAAO,CAAE;AAAA,MACT,UAAU,CAAE;AAAA,MACZ,OAAO,CAAE;AAAA,MACT,QAAQ,CAAE;AAAA,IAChB,EAAO;AAAA,IACH,OAAO,EAAE,OAAO,KAAM;AAAA,IACtB,OAAO,EAAE,OAAO,KAAM;AAAA,EACvB;AAAA,EACD,QAAQ;AAAA,IACN,SAAS,EAAE,OAAuB,oBAAI,MAAM,QAAQ,EAAG;AAAA,IACvD,SAAS,EAAE,OAAO,EAAG;AAAA,IACrB,MAAM,EAAE,OAAO,EAAG;AAAA,IAClB,OAAO,EAAE,OAAO,EAAG;AAAA,IACnB,KAAK,EAAE,OAAO,KAAM;AAAA,IACpB,UAAU,EAAE,OAAO,KAAM;AAAA,IACzB,WAAW,EAAE,OAAO,EAAG;AAAA,IACvB,aAAa,EAAE,OAAuB,oBAAI,UAAW;AAAA,EACtD;AAAA,EACD,QAAQ;AAAA,IACN,SAAS,EAAE,OAAuB,oBAAI,MAAM,QAAQ,EAAG;AAAA,IACvD,SAAS,EAAE,OAAO,EAAG;AAAA,IACrB,QAAQ,EAAE,OAAuB,oBAAIA,UAAQ,KAAK,GAAG,EAAG;AAAA,IACxD,UAAU,EAAE,OAAO,EAAG;AAAA,IACtB,KAAK,EAAE,OAAO,KAAM;AAAA,IACpB,UAAU,EAAE,OAAO,KAAM;AAAA,IACzB,WAAW,EAAE,OAAO,EAAG;AAAA,IACvB,aAAa,EAAE,OAAuB,oBAAI,UAAW;AAAA,EACtD;AACH;AACA,MAAM,YAAY;AAAA,EAChB,OAAO;AAAA,IACL,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,IAClB,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,SAAS;AAAA,IACP,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,UAAU,EAAE,OAAuB,oBAAI,MAAM,CAAC,EAAG;AAAA,MAClD;AAAA,IACP,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,OAAO;AAAA,IACL,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,UAAU,EAAE,OAAuB,oBAAI,MAAM,CAAC,EAAG;AAAA,QACjD,UAAU,EAAE,OAAuB,oBAAI,MAAM,OAAO,EAAG;AAAA,QACvD,WAAW,EAAE,OAAO,GAAI;AAAA,MACzB;AAAA,IACP,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,UAAU;AAAA,IACR,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,UAAU,EAAE,OAAuB,oBAAI,MAAM,CAAC,EAAG;AAAA,QACjD,WAAW,EAAE,OAAO,EAAG;AAAA,QACvB,WAAW,EAAE,OAAO,EAAG;AAAA,QACvB,iBAAiB,EAAE,OAAO,EAAG;AAAA,MAC9B;AAAA,IACP,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,MAAM;AAAA,IACJ,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,UAAU,EAAE,OAAuB,oBAAI,MAAM,CAAC,EAAG;AAAA,MAClD;AAAA,IACP,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,QAAQ;AAAA,IACN,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,QAAQ,EAAE,OAAO,KAAM;AAAA,MACxB;AAAA,IACP,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,QAAQ;AAAA,IACN,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,IAClB,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,QAAQ;AAAA,IACN,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,OAAO,EAAE,OAAO,EAAG;AAAA,QACnB,UAAU,EAAE,OAAO,EAAG;AAAA,QACtB,WAAW,EAAE,OAAO,EAAG;AAAA,MACxB;AAAA,IACP,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,OAAO;AAAA,IACL,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,IAClB,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,QAAQ;AAAA,IACN,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,SAAS,EAAE,OAAO,EAAG;AAAA,MACtB;AAAA,IACP,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,QAAQ;AAAA,IACN,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,IAClB,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,YAAY;AAAA,IACV,UAAU;AAAA,MACR,aAAa,EAAE,OAAuB,oBAAI,UAAW;AAAA,MACrD,KAAK,EAAE,OAAO,KAAM;AAAA,IACrB;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,MAAM;AAAA,IACJ,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ;AAAA,QACE,SAAS,EAAE,OAAO,EAAG;AAAA,MACtB;AAAA,IACP,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,UAAU;AAAA,IACR,UAAU;AAAA,MACR,WAAW,EAAE,OAAO,KAAM;AAAA,IAC3B;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,cAAc;AAAA,IACZ,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,mBAAmB,EAAE,OAAuB,oBAAIE,YAAW;AAAA,QAC3D,cAAc,EAAE,OAAO,EAAG;AAAA,QAC1B,aAAa,EAAE,OAAO,IAAK;AAAA,MAC5B;AAAA,IACP,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AAAA,EACD,QAAQ;AAAA,IACN,UAA0B,8BAAc;AAAA,MACtC,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,QACE,OAAO,EAAE,OAAuB,oBAAI,MAAM,CAAC,EAAG;AAAA,QAC9C,SAAS,EAAE,OAAO,EAAG;AAAA,MACtB;AAAA,IACP,CAAK;AAAA,IACD,cAAc,YAAY;AAAA,IAC1B,gBAAgB,YAAY;AAAA,EAC7B;AACH;AACA,UAAU,WAAW;AAAA,EACnB,UAA0B,8BAAc;AAAA,IACtC,UAAU,SAAS;AAAA,IACnB;AAAA,MACE,WAAW,EAAE,OAAO,EAAG;AAAA,MACvB,cAAc,EAAE,OAAO,KAAM;AAAA,MAC7B,oBAAoB,EAAE,OAAO,EAAG;AAAA,MAChC,uBAAuB,EAAE,OAAO,KAAM;AAAA,MACtC,sBAAsB,EAAE,OAAuB,oBAAIF,UAAQ,GAAG,CAAC,EAAG;AAAA,MAClE,oBAAoB,EAAE,OAAO,KAAM;AAAA,MACnC,aAAa,EAAE,OAAO,EAAG;AAAA,MACzB,gBAAgB,EAAE,OAAO,KAAM;AAAA,MAC/B,gBAAgB,EAAE,OAAO,IAAK;AAAA,MAC9B,6BAA6B,EAAE,OAAO,IAAK;AAAA,MAC3C,6BAA6B,EAAE,OAAO,IAAK;AAAA,MAC3C,yBAAyB,EAAE,OAAO,KAAM;AAAA,MACxC,OAAO,EAAE,OAAO,EAAG;AAAA,MACnB,YAAY,EAAE,OAAuB,oBAAI,MAAM,CAAC,EAAG;AAAA,MACnD,eAAe,EAAE,OAAO,KAAM;AAAA,MAC9B,gBAAgB,EAAE,OAAO,EAAG;AAAA,MAC5B,mBAAmB,EAAE,OAAO,KAAM;AAAA,MAClC,cAAc,EAAE,OAAO,EAAG;AAAA,MAC1B,iBAAiB,EAAE,OAAO,KAAM;AAAA,MAChC,yBAAyB,EAAE,OAAuB,oBAAIA,YAAW;AAAA,MACjE,wBAAwB,EAAE,OAAO,KAAM;AAAA,MACvC,WAAW,EAAE,OAAO,EAAG;AAAA,MACvB,cAAc,EAAE,OAAO,KAAM;AAAA,MAC7B,qBAAqB,EAAE,OAAO,EAAG;AAAA,MACjC,kBAAkB,EAAE,OAAuB,oBAAI,MAAM,CAAC,EAAG;AAAA,MACzD,mBAAmB,EAAE,OAAO,EAAG;AAAA,MAC/B,sBAAsB,EAAE,OAAO,KAAM;AAAA,MACrC,eAAe,EAAE,OAAuB,oBAAI,MAAM,GAAG,GAAG,CAAC,EAAG;AAAA,MAC5D,kBAAkB,EAAE,OAAO,KAAM;AAAA,IAClC;AAAA,EACL,CAAG;AAAA,EACD,cAAc,YAAY;AAAA,EAC1B,gBAAgB,YAAY;AAC9B;AACA,SAAS,gBAAgB,UAAU,UAAU,OAAO,SAAS,OAAO,oBAAoB;AACtF,QAAM,aAAa,IAAI,MAAM,CAAC;AAC9B,MAAI,aAAa,UAAU,OAAO,IAAI;AACtC,MAAI;AACJ,MAAI;AACJ,MAAI,oBAAoB;AACxB,MAAI,2BAA2B;AAC/B,MAAI,qBAAqB;AACzB,WAAS,OAAO,YAAY,OAAO;AACjC,QAAI,aAAa;AACjB,QAAI,aAAa,MAAM,YAAY,OAAO,MAAM,aAAa;AAC7D,QAAI,cAAc,WAAW,WAAW;AACtC,mBAAa,SAAS,IAAI,UAAU;AAAA,IACrC;AACD,UAAM,KAAK,SAAS;AACpB,UAAM,UAAU,GAAG,cAAc,GAAG,WAAU;AAC9C,QAAI,WAAW,QAAQ,yBAAyB,YAAY;AAC1D,mBAAa;AAAA,IACd;AACD,QAAI,eAAe,MAAM;AACvB,eAAS,YAAY,UAAU;AAAA,IACrC,WAAe,cAAc,WAAW,SAAS;AAC3C,eAAS,YAAY,CAAC;AACtB,mBAAa;AAAA,IACd;AACD,QAAI,SAAS,aAAa,YAAY;AACpC,eAAS,MAAM,SAAS,gBAAgB,SAAS,gBAAgB,SAAS,gBAAgB;AAAA,IAC3F;AACD,QAAI,eAAe,WAAW,iBAAiB,WAAW,YAAY,0BAA0B;AAC9F,UAAI,YAAY,QAAQ;AACtB,kBAAU,IAAI;AAAA,UACZ,IAAI,YAAY,GAAG,GAAG,CAAC;AAAA,UACvB,IAAI,eAAe;AAAA,YACjB,MAAM;AAAA,YACN,UAAU,cAAc,UAAU,KAAK,QAAQ;AAAA,YAC/C,cAAc,UAAU,KAAK;AAAA,YAC7B,gBAAgB,UAAU,KAAK;AAAA,YAC/B,MAAM;AAAA,YACN,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,KAAK;AAAA,UACjB,CAAW;AAAA,QACX;AACQ,gBAAQ,SAAS,gBAAgB,QAAQ;AACzC,gBAAQ,SAAS,gBAAgB,IAAI;AACrC,gBAAQ,iBAAiB,SAAS,WAAW,QAAQG,SAAQ;AAC3D,eAAK,YAAY,aAAaA,QAAO,WAAW;AAAA,QAC1D;AACQ,eAAO,eAAe,QAAQ,UAAU,UAAU;AAAA,UAChD,KAAK,WAAW;AACd,mBAAO,KAAK,SAAS,OAAO;AAAA,UAC7B;AAAA,QACX,CAAS;AACD,gBAAQ,OAAO,OAAO;AAAA,MACvB;AACD,cAAQ,SAAS,SAAS,OAAO,QAAQ;AACzC,cAAQ,SAAS,SAAS,WAAW,QAAQ,WAAW,iBAAiB,WAAW,0BAA0B,QAAQ,KAAK;AAC3H,UAAI,sBAAsB,cAAc,6BAA6B,WAAW,WAAW,uBAAuB,SAAS,aAAa;AACtI,gBAAQ,SAAS,cAAc;AAC/B,4BAAoB;AACpB,mCAA2B,WAAW;AACtC,6BAAqB,SAAS;AAAA,MAC/B;AACD,cAAQ,OAAO;AACf,iBAAW,QAAQ,SAAS,QAAQ,UAAU,QAAQ,UAAU,GAAG,GAAG,IAAI;AAAA,IAChF,WAAe,cAAc,WAAW,WAAW;AAC7C,UAAI,cAAc,QAAQ;AACxB,oBAAY,IAAI;AAAA,UACd,IAAI,cAAc,GAAG,CAAC;AAAA,UACtB,IAAI,eAAe;AAAA,YACjB,MAAM;AAAA,YACN,UAAU,cAAc,UAAU,WAAW,QAAQ;AAAA,YACrD,cAAc,UAAU,WAAW;AAAA,YACnC,gBAAgB,UAAU,WAAW;AAAA,YACrC,MAAM;AAAA,YACN,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,KAAK;AAAA,UACjB,CAAW;AAAA,QACX;AACQ,kBAAU,SAAS,gBAAgB,QAAQ;AAC3C,eAAO,eAAe,UAAU,UAAU,OAAO;AAAA,UAC/C,KAAK,WAAW;AACd,mBAAO,KAAK,SAAS,IAAI;AAAA,UAC1B;AAAA,QACX,CAAS;AACD,gBAAQ,OAAO,SAAS;AAAA,MACzB;AACD,gBAAU,SAAS,SAAS,IAAI,QAAQ;AACxC,UAAI,WAAW,qBAAqB,MAAM;AACxC,mBAAW,aAAY;AAAA,MACxB;AACD,gBAAU,SAAS,SAAS,YAAY,MAAM,KAAK,WAAW,MAAM;AACpE,UAAI,sBAAsB,cAAc,6BAA6B,WAAW,WAAW,uBAAuB,SAAS,aAAa;AACtI,kBAAU,SAAS,cAAc;AACjC,4BAAoB;AACpB,mCAA2B,WAAW;AACtC,6BAAqB,SAAS;AAAA,MAC/B;AACD,gBAAU,OAAO;AACjB,iBAAW,QAAQ,WAAW,UAAU,UAAU,UAAU,UAAU,GAAG,GAAG,IAAI;AAAA,IACjF;AAAA,EACF;AACD,WAAS,SAAS,OAAO,QAAQ;AAC/B,UAAM,QAAQ,MAAM,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,kBAAkB;AAAA,EACnF;AACD,SAAO;AAAA,IACL,eAAe,WAAW;AACxB,aAAO;AAAA,IACR;AAAA,IACD,eAAe,SAAS,OAAO,SAAS,GAAG;AACzC,iBAAW,IAAI,KAAK;AACpB,mBAAa;AACb,eAAS,YAAY,UAAU;AAAA,IAChC;AAAA,IACD,eAAe,WAAW;AACxB,aAAO;AAAA,IACR;AAAA,IACD,eAAe,SAAS,QAAQ;AAC9B,mBAAa;AACb,eAAS,YAAY,UAAU;AAAA,IAChC;AAAA,IACD;AAAA,EACJ;AACA;AACA,SAAS,mBAAmB,IAAI,YAAY,YAAY,cAAc;AACpE,QAAM,sBAAsB,GAAG,aAAa,KAAK;AACjD,QAAM,YAAY,aAAa,WAAW,OAAO,WAAW,IAAI,yBAAyB;AACzF,QAAM,eAAe,aAAa,YAAY,cAAc;AAC5D,QAAM,gBAAgB,CAAA;AACtB,QAAM,eAAe,mBAAmB,IAAI;AAC5C,MAAI,eAAe;AACnB,MAAI,cAAc;AAClB,WAAS,MAAM,QAAQ,UAAU,SAAS,UAAU,OAAO;AACzD,QAAI,gBAAgB;AACpB,QAAI,cAAc;AAChB,YAAM,QAAQ,gBAAgB,UAAU,SAAS,QAAQ;AACzD,UAAI,iBAAiB,OAAO;AAC1B,uBAAe;AACf,8BAAsB,aAAa,MAAM;AAAA,MAC1C;AACD,sBAAgB,YAAY,QAAQ,UAAU,SAAS,KAAK;AAC5D,UAAI;AACF,kBAAU,QAAQ,UAAU,SAAS,KAAK;AAAA,IAClD,OAAW;AACL,YAAM,YAAY,SAAS,cAAc;AACzC,UAAI,aAAa,aAAa,SAAS,MAAM,aAAa,YAAY,QAAQ,MAAM,aAAa,cAAc,WAAW;AACxH,qBAAa,WAAW,SAAS;AACjC,qBAAa,UAAU,QAAQ;AAC/B,qBAAa,YAAY;AACzB,wBAAgB;AAAA,MACjB;AAAA,IACF;AACD,QAAI,UAAU,MAAM;AAClB,iBAAW,OAAO,OAAO,KAAK;AAAA,IAC/B;AACD,QAAI,iBAAiB,aAAa;AAChC,oBAAc;AACd,4BAAsB,QAAQ,UAAU,SAAS,QAAQ;AACzD,UAAI,UAAU,MAAM;AAClB,WAAG,WAAW,OAAO,WAAW,IAAI,KAAK,EAAE,MAAM;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AACD,WAAS,0BAA0B;AACjC,QAAI,aAAa;AACf,aAAO,GAAG;AACZ,WAAO,UAAU;EAClB;AACD,WAAS,sBAAsB,KAAK;AAClC,QAAI,aAAa;AACf,aAAO,GAAG,gBAAgB,GAAG;AAC/B,WAAO,UAAU,mBAAmB,GAAG;AAAA,EACxC;AACD,WAAS,wBAAwB,KAAK;AACpC,QAAI,aAAa;AACf,aAAO,GAAG,kBAAkB,GAAG;AACjC,WAAO,UAAU,qBAAqB,GAAG;AAAA,EAC1C;AACD,WAAS,gBAAgB,UAAU,SAAS,UAAU;AACpD,UAAM,YAAY,SAAS,cAAc;AACzC,QAAI,aAAa,cAAc,SAAS;AACxC,QAAI,eAAe,QAAQ;AACzB,mBAAa,CAAA;AACb,oBAAc,SAAS,MAAM;AAAA,IAC9B;AACD,QAAI,WAAW,WAAW,QAAQ;AAClC,QAAI,aAAa,QAAQ;AACvB,iBAAW,CAAA;AACX,iBAAW,QAAQ,MAAM;AAAA,IAC1B;AACD,QAAI,QAAQ,SAAS;AACrB,QAAI,UAAU,QAAQ;AACpB,cAAQ,mBAAmB,wBAAuB,CAAE;AACpD,eAAS,aAAa;AAAA,IACvB;AACD,WAAO;AAAA,EACR;AACD,WAAS,mBAAmB,KAAK;AAC/B,UAAM,gBAAgB,CAAA;AACtB,UAAM,oBAAoB,CAAA;AAC1B,UAAM,oBAAoB,CAAA;AAC1B,aAAS,IAAI,GAAG,IAAI,qBAAqB,KAAK;AAC5C,oBAAc,KAAK;AACnB,wBAAkB,KAAK;AACvB,wBAAkB,KAAK;AAAA,IACxB;AACD,WAAO;AAAA,MACL,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,YAAY,CAAE;AAAA,MACd,OAAO;AAAA,IACb;AAAA,EACG;AACD,WAAS,YAAY,QAAQ,UAAU,SAAS,OAAO;AACrD,UAAM,mBAAmB,aAAa;AACtC,UAAM,qBAAqB,SAAS;AACpC,QAAI,gBAAgB;AACpB,UAAM,oBAAoB,QAAQ;AAClC,eAAW,QAAQ,mBAAmB;AACpC,YAAM,mBAAmB,kBAAkB;AAC3C,UAAI,iBAAiB,YAAY,GAAG;AAClC,cAAM,kBAAkB,iBAAiB;AACzC,YAAI,oBAAoB,mBAAmB;AAC3C,YAAI,sBAAsB,QAAQ;AAChC,cAAI,SAAS,oBAAoB,OAAO;AACtC,gCAAoB,OAAO;AAC7B,cAAI,SAAS,mBAAmB,OAAO;AACrC,gCAAoB,OAAO;AAAA,QAC9B;AACD,YAAI,oBAAoB;AACtB,iBAAO;AACT,YAAI,gBAAgB,cAAc;AAChC,iBAAO;AACT,YAAI,qBAAqB,gBAAgB,SAAS,kBAAkB;AAClE,iBAAO;AACT;AAAA,MACD;AAAA,IACF;AACD,QAAI,aAAa,kBAAkB;AACjC,aAAO;AACT,QAAI,aAAa,UAAU;AACzB,aAAO;AACT,WAAO;AAAA,EACR;AACD,WAAS,UAAU,QAAQ,UAAU,SAAS,OAAO;AACnD,UAAM,QAAQ,CAAA;AACd,UAAM,cAAc,SAAS;AAC7B,QAAI,gBAAgB;AACpB,UAAM,oBAAoB,QAAQ;AAClC,eAAW,QAAQ,mBAAmB;AACpC,YAAM,mBAAmB,kBAAkB;AAC3C,UAAI,iBAAiB,YAAY,GAAG;AAClC,YAAI,YAAY,YAAY;AAC5B,YAAI,cAAc,QAAQ;AACxB,cAAI,SAAS,oBAAoB,OAAO;AACtC,wBAAY,OAAO;AACrB,cAAI,SAAS,mBAAmB,OAAO;AACrC,wBAAY,OAAO;AAAA,QACtB;AACD,cAAMtF,QAAO,CAAA;AACb,QAAAA,MAAK,YAAY;AACjB,YAAI,aAAa,UAAU,MAAM;AAC/B,UAAAA,MAAK,OAAO,UAAU;AAAA,QACvB;AACD,cAAM,QAAQA;AACd;AAAA,MACD;AAAA,IACF;AACD,iBAAa,aAAa;AAC1B,iBAAa,gBAAgB;AAC7B,iBAAa,QAAQ;AAAA,EACtB;AACD,WAAS,iBAAiB;AACxB,UAAM,gBAAgB,aAAa;AACnC,aAAS,IAAI,GAAG,KAAK,cAAc,QAAQ,IAAI,IAAI,KAAK;AACtD,oBAAc,KAAK;AAAA,IACpB;AAAA,EACF;AACD,WAAS,gBAAgB,WAAW;AAClC,8BAA0B,WAAW,CAAC;AAAA,EACvC;AACD,WAAS,0BAA0B,WAAW,kBAAkB;AAC9D,UAAM,gBAAgB,aAAa;AACnC,UAAM,oBAAoB,aAAa;AACvC,UAAM,oBAAoB,aAAa;AACvC,kBAAc,aAAa;AAC3B,QAAI,kBAAkB,eAAe,GAAG;AACtC,SAAG,wBAAwB,SAAS;AACpC,wBAAkB,aAAa;AAAA,IAChC;AACD,QAAI,kBAAkB,eAAe,kBAAkB;AACrD,YAAM,aAAa,aAAa,WAAW,KAAK,WAAW,IAAI,wBAAwB;AACvF,iBAAW,aAAa,WAAW,wBAAwB,4BAA4B,WAAW,gBAAgB;AAClH,wBAAkB,aAAa;AAAA,IAChC;AAAA,EACF;AACD,WAAS,0BAA0B;AACjC,UAAM,gBAAgB,aAAa;AACnC,UAAM,oBAAoB,aAAa;AACvC,aAAS,IAAI,GAAG,KAAK,kBAAkB,QAAQ,IAAI,IAAI,KAAK;AAC1D,UAAI,kBAAkB,OAAO,cAAc,IAAI;AAC7C,WAAG,yBAAyB,CAAC;AAC7B,0BAAkB,KAAK;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACD,WAAS,oBAAoB,OAAO,MAAM,MAAM,YAAY,QAAQ,QAAQ;AAC1E,QAAI,aAAa,aAAa,SAAS,SAAS,QAAQ,SAAS,OAAO;AACtE,SAAG,qBAAqB,OAAO,MAAM,MAAM,QAAQ,MAAM;AAAA,IAC/D,OAAW;AACL,SAAG,oBAAoB,OAAO,MAAM,MAAM,YAAY,QAAQ,MAAM;AAAA,IACrE;AAAA,EACF;AACD,WAAS,sBAAsB,QAAQ,UAAU,SAAS,UAAU;AAClE,QAAI,aAAa,aAAa,UAAU,OAAO,mBAAmB,SAAS,4BAA4B;AACrG,UAAI,WAAW,IAAI,wBAAwB,MAAM;AAC/C;AAAA,IACH;AACD;AACA,UAAM,qBAAqB,SAAS;AACpC,UAAM,oBAAoB,QAAQ;AAClC,UAAM,iCAAiC,SAAS;AAChD,eAAW,QAAQ,mBAAmB;AACpC,YAAM,mBAAmB,kBAAkB;AAC3C,UAAI,iBAAiB,YAAY,GAAG;AAClC,YAAI,oBAAoB,mBAAmB;AAC3C,YAAI,sBAAsB,QAAQ;AAChC,cAAI,SAAS,oBAAoB,OAAO;AACtC,gCAAoB,OAAO;AAC7B,cAAI,SAAS,mBAAmB,OAAO;AACrC,gCAAoB,OAAO;AAAA,QAC9B;AACD,YAAI,sBAAsB,QAAQ;AAChC,gBAAM,aAAa,kBAAkB;AACrC,gBAAM,OAAO,kBAAkB;AAC/B,gBAAM,YAAY,WAAW,IAAI,iBAAiB;AAClD,cAAI,cAAc;AAChB;AACF,gBAAM,SAAS,UAAU;AACzB,gBAAM,OAAO,UAAU;AACvB,gBAAM,kBAAkB,UAAU;AAClC,cAAI,kBAAkB,8BAA8B;AAClD,kBAAMA,QAAO,kBAAkB;AAC/B,kBAAM,SAASA,MAAK;AACpB,kBAAM,SAAS,kBAAkB;AACjC,gBAAIA,MAAK,8BAA8B;AACrC,uBAAS,IAAI,GAAG,IAAI,iBAAiB,cAAc,KAAK;AACtD,0CAA0B,iBAAiB,WAAW,GAAGA,MAAK,gBAAgB;AAAA,cAC/E;AACD,kBAAI,OAAO,oBAAoB,QAAQ,SAAS,sBAAsB,QAAQ;AAC5E,yBAAS,oBAAoBA,MAAK,mBAAmBA,MAAK;AAAA,cAC3D;AAAA,YACf,OAAmB;AACL,uBAAS,IAAI,GAAG,IAAI,iBAAiB,cAAc,KAAK;AACtD,gCAAgB,iBAAiB,WAAW,CAAC;AAAA,cAC9C;AAAA,YACF;AACD,eAAG,WAAW,OAAO,MAAM;AAC3B,qBAAS,IAAI,GAAG,IAAI,iBAAiB,cAAc,KAAK;AACtD;AAAA,gBACE,iBAAiB,WAAW;AAAA,gBAC5B,OAAO,iBAAiB;AAAA,gBACxB;AAAA,gBACA;AAAA,gBACA,SAAS;AAAA,iBACR,SAAS,OAAO,iBAAiB,eAAe,KAAK;AAAA,cACtE;AAAA,YACa;AAAA,UACb,OAAiB;AACL,gBAAI,kBAAkB,4BAA4B;AAChD,uBAAS,IAAI,GAAG,IAAI,iBAAiB,cAAc,KAAK;AACtD,0CAA0B,iBAAiB,WAAW,GAAG,kBAAkB,gBAAgB;AAAA,cAC5F;AACD,kBAAI,OAAO,oBAAoB,QAAQ,SAAS,sBAAsB,QAAQ;AAC5E,yBAAS,oBAAoB,kBAAkB,mBAAmB,kBAAkB;AAAA,cACrF;AAAA,YACf,OAAmB;AACL,uBAAS,IAAI,GAAG,IAAI,iBAAiB,cAAc,KAAK;AACtD,gCAAgB,iBAAiB,WAAW,CAAC;AAAA,cAC9C;AAAA,YACF;AACD,eAAG,WAAW,OAAO,MAAM;AAC3B,qBAAS,IAAI,GAAG,IAAI,iBAAiB,cAAc,KAAK;AACtD;AAAA,gBACE,iBAAiB,WAAW;AAAA,gBAC5B,OAAO,iBAAiB;AAAA,gBACxB;AAAA,gBACA;AAAA,gBACA,OAAO;AAAA,gBACP,OAAO,iBAAiB,eAAe,IAAI;AAAA,cAC3D;AAAA,YACa;AAAA,UACF;AAAA,QACX,WAAmB,mCAAmC,QAAQ;AACpD,gBAAM,QAAQ,+BAA+B;AAC7C,cAAI,UAAU,QAAQ;AACpB,oBAAQ,MAAM,QAAM;AAAA,cAClB,KAAK;AACH,mBAAG,gBAAgB,iBAAiB,UAAU,KAAK;AACnD;AAAA,cACF,KAAK;AACH,mBAAG,gBAAgB,iBAAiB,UAAU,KAAK;AACnD;AAAA,cACF,KAAK;AACH,mBAAG,gBAAgB,iBAAiB,UAAU,KAAK;AACnD;AAAA,cACF;AACE,mBAAG,gBAAgB,iBAAiB,UAAU,KAAK;AAAA,YACtD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACD;EACD;AACD,WAAS,UAAU;AACjB;AACA,eAAW,cAAc,eAAe;AACtC,YAAM,aAAa,cAAc;AACjC,iBAAW,aAAa,YAAY;AAClC,cAAM,WAAW,WAAW;AAC5B,mBAAW,aAAa,UAAU;AAChC,kCAAwB,SAAS,WAAW,MAAM;AAClD,iBAAO,SAAS;AAAA,QACjB;AACD,eAAO,WAAW;AAAA,MACnB;AACD,aAAO,cAAc;AAAA,IACtB;AAAA,EACF;AACD,WAAS,wBAAwB,UAAU;AACzC,QAAI,cAAc,SAAS,QAAQ;AACjC;AACF,UAAM,aAAa,cAAc,SAAS;AAC1C,eAAW,aAAa,YAAY;AAClC,YAAM,WAAW,WAAW;AAC5B,iBAAW,aAAa,UAAU;AAChC,gCAAwB,SAAS,WAAW,MAAM;AAClD,eAAO,SAAS;AAAA,MACjB;AACD,aAAO,WAAW;AAAA,IACnB;AACD,WAAO,cAAc,SAAS;AAAA,EAC/B;AACD,WAAS,uBAAuB,SAAS;AACvC,eAAW,cAAc,eAAe;AACtC,YAAM,aAAa,cAAc;AACjC,UAAI,WAAW,QAAQ,QAAQ;AAC7B;AACF,YAAM,WAAW,WAAW,QAAQ;AACpC,iBAAW,aAAa,UAAU;AAChC,gCAAwB,SAAS,WAAW,MAAM;AAClD,eAAO,SAAS;AAAA,MACjB;AACD,aAAO,WAAW,QAAQ;AAAA,IAC3B;AAAA,EACF;AACD,WAAS,QAAQ;AACf;AACA,kBAAc;AACd,QAAI,iBAAiB;AACnB;AACF,mBAAe;AACf,0BAAsB,aAAa,MAAM;AAAA,EAC1C;AACD,WAAS,oBAAoB;AAC3B,iBAAa,WAAW;AACxB,iBAAa,UAAU;AACvB,iBAAa,YAAY;AAAA,EAC1B;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,oBAAoB,IAAI,YAAY,MAAM,cAAc;AAC/D,QAAM,WAAW,aAAa;AAC9B,MAAI;AACJ,WAAS,QAAQ,OAAO;AACtB,WAAO;AAAA,EACR;AACD,WAAS,OAAO,OAAO,OAAO;AAC5B,OAAG,WAAW,MAAM,OAAO,KAAK;AAChC,SAAK,OAAO,OAAO,MAAM,CAAC;AAAA,EAC3B;AACD,WAAS,gBAAgB,OAAO,OAAO,WAAW;AAChD,QAAI,cAAc;AAChB;AACF,QAAI,WAAW;AACf,QAAI,UAAU;AACZ,kBAAY;AACZ,mBAAa;AAAA,IACnB,OAAW;AACL,kBAAY,WAAW,IAAI,wBAAwB;AACnD,mBAAa;AACb,UAAI,cAAc,MAAM;AACtB,gBAAQ,MAAM,gIAAgI;AAC9I;AAAA,MACD;AAAA,IACF;AACD,cAAU,YAAY,MAAM,OAAO,OAAO,SAAS;AACnD,SAAK,OAAO,OAAO,MAAM,SAAS;AAAA,EACnC;AACD,OAAK,UAAU;AACf,OAAK,SAAS;AACd,OAAK,kBAAkB;AACzB;AACA,SAAS,kBAAkB,IAAI,YAAY,YAAY;AACrD,MAAI;AACJ,WAAS,mBAAmB;AAC1B,QAAI,kBAAkB;AACpB,aAAO;AACT,QAAI,WAAW,IAAI,gCAAgC,MAAM,MAAM;AAC7D,YAAM,YAAY,WAAW,IAAI,gCAAgC;AACjE,sBAAgB,GAAG,aAAa,UAAU,8BAA8B;AAAA,IAC9E,OAAW;AACL,sBAAgB;AAAA,IACjB;AACD,WAAO;AAAA,EACR;AACD,WAAS,gBAAgB,YAAY;AACnC,QAAI,eAAe,SAAS;AAC1B,UAAI,GAAG,yBAAyB,OAAO,KAAK,EAAE,YAAY,KAAK,GAAG,yBAAyB,OAAO,KAAK,EAAE,YAAY,GAAG;AACtH,eAAO;AAAA,MACR;AACD,mBAAa;AAAA,IACd;AACD,QAAI,eAAe,WAAW;AAC5B,UAAI,GAAG,yBAAyB,OAAO,KAAK,EAAE,YAAY,KAAK,GAAG,yBAAyB,OAAO,KAAK,EAAE,YAAY,GAAG;AACtH,eAAO;AAAA,MACR;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,QAAM,WAAW,OAAO,2BAA2B,eAAe,cAAc,0BAA0B,OAAO,kCAAkC,eAAe,cAAc;AAChL,MAAI,YAAY,WAAW,cAAc,SAAS,WAAW,YAAY;AACzE,QAAM,eAAe,gBAAgB,SAAS;AAC9C,MAAI,iBAAiB,WAAW;AAC9B,YAAQ,KAAK,wBAAwB,WAAW,wBAAwB,cAAc,UAAU;AAChG,gBAAY;AAAA,EACb;AACD,QAAM,cAAc,YAAY,WAAW,IAAI,oBAAoB;AACnE,QAAM,yBAAyB,WAAW,2BAA2B;AACrE,QAAM,cAAc,GAAG,aAAa,KAAK;AACzC,QAAM,oBAAoB,GAAG,aAAa,KAAK;AAC/C,QAAM,iBAAiB,GAAG,aAAa,IAAI;AAC3C,QAAM,iBAAiB,GAAG,aAAa,KAAK;AAC5C,QAAM,gBAAgB,GAAG,aAAa,KAAK;AAC3C,QAAM,oBAAoB,GAAG,aAAa,KAAK;AAC/C,QAAM,cAAc,GAAG,aAAa,KAAK;AACzC,QAAM,sBAAsB,GAAG,aAAa,KAAK;AACjD,QAAM,iBAAiB,oBAAoB;AAC3C,QAAM,wBAAwB,YAAY,WAAW,IAAI,mBAAmB;AAC5E,QAAM,sBAAsB,kBAAkB;AAC9C,QAAM,aAAa,WAAW,GAAG,aAAa,KAAK,IAAI;AACvD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,cAAc,YAAY;AACjC,QAAM,QAAQ;AACd,MAAI,cAAc,MAAM,kBAAkB,GAAG,uBAAuB,OAAO,mBAAmB;AAC9F,QAAM,QAAQ,IAAI,SAAS,mBAAmB,IAAI,QAAO,GAAI,UAAU,EAAE,OAAO,MAAM,aAAa,MAAK;AACxG,OAAK,UAAU;AACf,OAAK,YAAY;AACjB,OAAK,kBAAkB;AACvB,OAAK,OAAO,SAAS,QAAQ,qBAAqBsF,SAAQ;AACxD,UAAM,UAAU,OAAO,WAAW,KAAK,uBAAuB,oBAAoB,KAAK;AACvF,2BAAuB;AACvB,kBAAc,cAAc,QAAQA,SAAQ,CAAC;AAC7C,sBAAkB,OAAO;AACzB,WAAO;AAAA,EACX;AACE,OAAK,eAAe,WAAW;AAC7B,uBAAmB;AACnB,kBAAc,IAAI;AAAA,EACtB;AACE,OAAK,aAAa,WAAW;AAC3B,uBAAmB;AACnB;EACJ;AACE,OAAK,WAAW,SAAS,UAAUA,SAAQ,UAAU;AACnD,UAAM,SAAS,SAAS,gBAAgB,mBAAmB,SAAS,kBAAkB,cAAc,SAAS;AAC7G,UAAM,qBAAqB,WAAW,IAAI,QAAQ;AAClD,QAAI,CAAC,wBAAwB,WAAW,QAAQ,OAAO,WAAW,KAAK,oBAAoB,CAAC,aAAa;AACvG,UAAI,kBAAkB;AACpB,sBAAc,IAAI;AAAA,MAC1B,OAAa;AACL;MACD;AAAA,IACP,OAAW;AACL,YAAM,UAAU,mBAAmB,IAAI,iBAAiB,UAAU,UAAU;AAC5E,UAAI,WAAW,mBAAmB,iBAAiB;AACnD,cAAQ,QAAQ;AAChB,iBAAW,cAAc,QAAQA,SAAQ,SAAS,QAAQ;AAC1D,eAAS,IAAI,GAAG,MAAM,SAAS,EAAE,GAAG;AAClC,iBAAS,KAAK,YAAY;AAAA,MAC3B;AACD,yBAAmB,gBAAgB;AACnC,WAAK,kBAAkB,mBAAmB,KAAK,YAAY;AAC3D,WAAK,aAAa;AAAA,IACnB;AAAA,EACL;AACE,WAAS,mBAAmB;AAC1B,QAAI,QAAQ,UAAU,aAAa;AACjC,cAAQ,QAAQ;AAChB,cAAQ,cAAc,kBAAkB;AAAA,IACzC;AACD,UAAM,YAAY;AAClB,UAAM,kBAAkB;AAAA,EACzB;AACD,WAAS,cAAc,QAAQA,SAAQ,WAAW,eAAe;AAC/D,UAAM,UAAU,WAAW,OAAO,OAAO,SAAS;AAClD,QAAI,WAAW;AACf,QAAI,YAAY,GAAG;AACjB,iBAAW,QAAQ;AACnB,UAAI,kBAAkB,QAAQ,aAAa,MAAM;AAC/C,cAAM,WAAW,YAAY,UAAU,GAAG,aAAaA,QAAO;AAC9D,yBAAiB,gBAAgB,UAAU;AAC3C,YAAI,aAAa,QAAQ,SAAS,SAAS,UAAU;AACnD,qBAAW,IAAI,aAAa,QAAQ;AAAA,QACrC;AACD,iBAAS,IAAI,GAAG,KAAK,WAAW,MAAM,SAAS,EAAE,GAAG,MAAM,GAAG;AAC3D,gBAAM,KAAK,OAAO,EAAE,EAAE,aAAa,YAAY,gBAAgB;AAC/D,gBAAM,OAAO,QAAQ,UAAU,EAAE;AACjC,mBAAS,KAAK,KAAK,MAAM;AAAA,QAC1B;AAAA,MACF;AACD,cAAQ,QAAQ;AAChB,cAAQ,cAAc;AAAA,IACvB;AACD,UAAM,YAAY;AAClB,UAAM,kBAAkB;AACxB,WAAO;AAAA,EACR;AACH;AACA,SAAS,cAAc,UAAU;AAC/B,MAAI,WAA2B,oBAAI;AACnC,WAAS,kBAAkB,SAAS,SAAS;AAC3C,QAAI,YAAY,kCAAkC;AAChD,cAAQ,UAAU;AAAA,IACxB,WAAe,YAAY,kCAAkC;AACvD,cAAQ,UAAU;AAAA,IACnB;AACD,WAAO;AAAA,EACR;AACD,WAAS5C,KAAI,SAAS;AACpB,QAAI,WAAW,QAAQ,aAAa,QAAQ,0BAA0B,OAAO;AAC3E,YAAM,UAAU,QAAQ;AACxB,UAAI,YAAY,oCAAoC,YAAY,kCAAkC;AAChG,YAAI,SAAS,IAAI,OAAO,GAAG;AACzB,gBAAM,UAAU,SAAS,IAAI,OAAO,EAAE;AACtC,iBAAO,kBAAkB,SAAS,QAAQ,OAAO;AAAA,QAC3D,OAAe;AACL,gBAAM,QAAQ,QAAQ;AACtB,cAAI,SAAS,MAAM,SAAS,GAAG;AAC7B,kBAAM,eAAe,IAAI,sBAAsB,MAAM,SAAS,CAAC;AAC/D,yBAAa,2BAA2B,UAAU,OAAO;AACzD,qBAAS,IAAI,SAAS,YAAY;AAClC,oBAAQ,iBAAiB,WAAW,gBAAgB;AACpD,mBAAO,kBAAkB,aAAa,SAAS,QAAQ,OAAO;AAAA,UAC1E,OAAiB;AACL,mBAAO;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,WAAS,iBAAiB,OAAO;AAC/B,UAAM,UAAU,MAAM;AACtB,YAAQ,oBAAoB,WAAW,gBAAgB;AACvD,UAAM,UAAU,SAAS,IAAI,OAAO;AACpC,QAAI,YAAY,QAAQ;AACtB,eAAS,OAAO,OAAO;AACvB,cAAQ,QAAO;AAAA,IAChB;AAAA,EACF;AACD,WAAS,UAAU;AACjB,eAA2B,oBAAI;EAChC;AACD,SAAO;AAAA,IACL,KAAAA;AAAA,IACA;AAAA,EACJ;AACA;AACA,MAAM,2BAA2B,SAAS;AAAA,EACxC,YAAY,OAAO,IAAI,QAAQ,GAAG,MAAM,GAAG,SAAS,IAAI,OAAO,KAAK,MAAM,KAAK;AAC7E;AACA,SAAK,uBAAuB;AAC5B,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,MAAM;AACX,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,MAAM;AACX,SAAK,uBAAsB;AAAA,EAC5B;AAAA,EACD,KAAK,QAAQ,WAAW;AACtB,UAAM,KAAK,QAAQ,SAAS;AAC5B,SAAK,OAAO,OAAO;AACnB,SAAK,QAAQ,OAAO;AACpB,SAAK,MAAM,OAAO;AAClB,SAAK,SAAS,OAAO;AACrB,SAAK,OAAO,OAAO;AACnB,SAAK,MAAM,OAAO;AAClB,SAAK,OAAO,OAAO;AACnB,SAAK,OAAO,OAAO,SAAS,OAAO,OAAO,OAAO,OAAO,CAAA,GAAI,OAAO,IAAI;AACvE,WAAO;AAAA,EACR;AAAA,EACD,cAAc,WAAW,YAAY,GAAG,GAAG,OAAO,QAAQ;AACxD,QAAI,KAAK,SAAS,MAAM;AACtB,WAAK,OAAO;AAAA,QACV,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,QACP,QAAQ;AAAA,MAChB;AAAA,IACK;AACD,SAAK,KAAK,UAAU;AACpB,SAAK,KAAK,YAAY;AACtB,SAAK,KAAK,aAAa;AACvB,SAAK,KAAK,UAAU;AACpB,SAAK,KAAK,UAAU;AACpB,SAAK,KAAK,QAAQ;AAClB,SAAK,KAAK,SAAS;AACnB,SAAK,uBAAsB;AAAA,EAC5B;AAAA,EACD,kBAAkB;AAChB,QAAI,KAAK,SAAS,MAAM;AACtB,WAAK,KAAK,UAAU;AAAA,IACrB;AACD,SAAK,uBAAsB;AAAA,EAC5B;AAAA,EACD,yBAAyB;AACvB,UAAM,MAAM,KAAK,QAAQ,KAAK,SAAS,IAAI,KAAK;AAChD,UAAM,MAAM,KAAK,MAAM,KAAK,WAAW,IAAI,KAAK;AAChD,UAAM0C,OAAM,KAAK,QAAQ,KAAK,QAAQ;AACtC,UAAM,MAAM,KAAK,MAAM,KAAK,UAAU;AACtC,QAAI,OAAOA,MAAK;AAChB,QAAI,QAAQA,MAAK;AACjB,QAAI,MAAM,KAAK;AACf,QAAI,SAAS,KAAK;AAClB,QAAI,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS;AAC3C,YAAM,UAAU,KAAK,QAAQ,KAAK,QAAQ,KAAK,KAAK,YAAY,KAAK;AACrE,YAAM,UAAU,KAAK,MAAM,KAAK,UAAU,KAAK,KAAK,aAAa,KAAK;AACtE,cAAQ,SAAS,KAAK,KAAK;AAC3B,cAAQ,OAAO,SAAS,KAAK,KAAK;AAClC,aAAO,SAAS,KAAK,KAAK;AAC1B,eAAS,MAAM,SAAS,KAAK,KAAK;AAAA,IACnC;AACD,SAAK,iBAAiB,iBAAiB,MAAM,OAAO,KAAK,QAAQ,KAAK,MAAM,KAAK,GAAG;AACpF,SAAK,wBAAwB,KAAK,KAAK,gBAAgB,EAAE;EAC1D;AAAA,EACD,OAAO,MAAM;AACX,UAAMpF,QAAO,MAAM,OAAO,IAAI;AAC9B,IAAAA,MAAK,OAAO,OAAO,KAAK;AACxB,IAAAA,MAAK,OAAO,OAAO,KAAK;AACxB,IAAAA,MAAK,OAAO,QAAQ,KAAK;AACzB,IAAAA,MAAK,OAAO,MAAM,KAAK;AACvB,IAAAA,MAAK,OAAO,SAAS,KAAK;AAC1B,IAAAA,MAAK,OAAO,OAAO,KAAK;AACxB,IAAAA,MAAK,OAAO,MAAM,KAAK;AACvB,QAAI,KAAK,SAAS;AAChB,MAAAA,MAAK,OAAO,OAAO,OAAO,OAAO,IAAI,KAAK,IAAI;AAChD,WAAOA;AAAA,EACR;AACH;AACA,MAAM,UAAU;AAChB,MAAM,kBAAkB,CAAC,OAAO,OAAO,MAAM,OAAO,OAAO,KAAK;AAChE,MAAM,cAAc;AACpB,MAAM,cAA8B,oBAAI;AACxC,MAAM,cAA8B,oBAAI;AACxC,IAAI,aAAa;AACjB,MAAM,OAAO,IAAI,KAAK,KAAK,CAAC,KAAK;AACjC,MAAM,UAAU,IAAI;AACpB,MAAM,kBAAkB;AAAA,EACN,oBAAIqF,UAAQ,GAAG,GAAG,CAAC;AAAA,EACnB,oBAAIA,UAAQ,IAAI,GAAG,CAAC;AAAA,EACpB,oBAAIA,UAAQ,GAAG,GAAG,EAAE;AAAA,EACpB,oBAAIA,UAAQ,IAAI,GAAG,EAAE;AAAA,EACrB,oBAAIA,UAAQ,GAAG,KAAK,OAAO;AAAA,EAC3B,oBAAIA,UAAQ,GAAG,KAAK,CAAC,OAAO;AAAA,EAC5B,oBAAIA,UAAQ,SAAS,GAAG,GAAG;AAAA,EAC3B,oBAAIA,UAAQ,CAAC,SAAS,GAAG,GAAG;AAAA,EAC5B,oBAAIA,UAAQ,KAAK,SAAS,CAAC;AAAA,EAC3B,oBAAIA,UAAQ,CAAC,KAAK,SAAS,CAAC;AAC9C;AACA,MAAM,eAAe;AAAA,EACnB,YAAY,UAAU;AACpB,SAAK,YAAY;AACjB,SAAK,wBAAwB;AAC7B,SAAK,UAAU;AACf,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,UAAU;AACf,SAAK,gBAAgB;AACrB,SAAK,mBAAmB;AACxB,SAAK,oBAAoB;AACzB,SAAK,iBAAiB,KAAK,aAAa;AAAA,EACzC;AAAA,EACD,UAAU,OAAO,QAAQ,GAAG,OAAO,KAAK,MAAM,KAAK;AACjD,iBAAa,KAAK,UAAU;AAC5B,SAAK,SAAS,GAAG;AACjB,UAAM,qBAAqB,KAAK;AAChC,uBAAmB,cAAc;AACjC,SAAK,eAAe,OAAO,MAAM,KAAK,kBAAkB;AACxD,QAAI,QAAQ,GAAG;AACb,WAAK,MAAM,oBAAoB,GAAG,GAAG,KAAK;AAAA,IAC3C;AACD,SAAK,YAAY,kBAAkB;AACnC,SAAK,SAAS,kBAAkB;AAChC,WAAO;AAAA,EACR;AAAA,EACD,oBAAoB,iBAAiB,eAAe,MAAM;AACxD,WAAO,KAAK,aAAa,iBAAiB,YAAY;AAAA,EACvD;AAAA,EACD,YAAY,SAAS,eAAe,MAAM;AACxC,WAAO,KAAK,aAAa,SAAS,YAAY;AAAA,EAC/C;AAAA,EACD,uBAAuB;AACrB,QAAI,KAAK,qBAAqB,MAAM;AAClC,WAAK,mBAAmB;AACxB,WAAK,iBAAiB,KAAK,gBAAgB;AAAA,IAC5C;AAAA,EACF;AAAA,EACD,+BAA+B;AAC7B,QAAI,KAAK,sBAAsB,MAAM;AACnC,WAAK,oBAAoB;AACzB,WAAK,iBAAiB,KAAK,iBAAiB;AAAA,IAC7C;AAAA,EACF;AAAA,EACD,UAAU;AACR,SAAK,SAAQ;AACb,QAAI,KAAK,qBAAqB;AAC5B,WAAK,iBAAiB;AACxB,QAAI,KAAK,sBAAsB;AAC7B,WAAK,kBAAkB;EAC1B;AAAA,EACD,SAAS,UAAU;AACjB,SAAK,UAAU,KAAK,MAAM,KAAK,KAAK,QAAQ,CAAC;AAC7C,SAAK,YAAY,KAAK,IAAI,GAAG,KAAK,OAAO;AAAA,EAC1C;AAAA,EACD,WAAW;AACT,QAAI,KAAK,kBAAkB;AACzB,WAAK,cAAc;AACrB,QAAI,KAAK,0BAA0B;AACjC,WAAK,sBAAsB;AAC7B,aAAS,IAAI,GAAG,IAAI,KAAK,WAAW,QAAQ,KAAK;AAC/C,WAAK,WAAW,GAAG,QAAO;AAAA,IAC3B;AAAA,EACF;AAAA,EACD,SAAS,cAAc;AACrB,SAAK,UAAU,gBAAgB,UAAU;AACzC,iBAAa,cAAc;AAC3B,iBAAa,cAAc,GAAG,GAAG,aAAa,OAAO,aAAa,MAAM;AAAA,EACzE;AAAA,EACD,aAAa,SAAS,cAAc;AAClC,QAAI,QAAQ,YAAY,yBAAyB,QAAQ,YAAY,uBAAuB;AAC1F,WAAK,SAAS,QAAQ,MAAM,WAAW,IAAI,KAAK,QAAQ,MAAM,GAAG,SAAS,QAAQ,MAAM,GAAG,MAAM,KAAK;AAAA,IAC5G,OAAW;AACL,WAAK,SAAS,QAAQ,MAAM,QAAQ,CAAC;AAAA,IACtC;AACD,iBAAa,KAAK,UAAU;AAC5B,UAAM,qBAAqB,gBAAgB,KAAK,iBAAgB;AAChE,SAAK,iBAAiB,SAAS,kBAAkB;AACjD,SAAK,YAAY,kBAAkB;AACnC,SAAK,SAAS,kBAAkB;AAChC,WAAO;AAAA,EACR;AAAA,EACD,mBAAmB;AACjB,UAAM,QAAQ,IAAI,KAAK,IAAI,KAAK,WAAW,KAAK,CAAC;AACjD,UAAM,SAAS,IAAI,KAAK;AACxB,UAAM,SAAS;AAAA,MACb,WAAW;AAAA,MACX,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,aAAa;AAAA,IACnB;AACI,UAAM,qBAAqB,oBAAoB,OAAO,QAAQ,MAAM;AACpE,QAAI,KAAK,0BAA0B,QAAQ,KAAK,sBAAsB,UAAU,OAAO;AACrF,UAAI,KAAK,0BAA0B,MAAM;AACvC,aAAK,SAAQ;AAAA,MACd;AACD,WAAK,wBAAwB,oBAAoB,OAAO,QAAQ,MAAM;AACtE,YAAM,EAAE,QAAS,IAAG;AACpB,OAAC,EAAE,UAAU,KAAK,WAAW,WAAW,KAAK,YAAY,QAAQ,KAAK,QAAS,IAAG,cAAc,OAAO;AACvG,WAAK,gBAAgB,eAAe,SAAS,OAAO,MAAM;AAAA,IAC3D;AACD,WAAO;AAAA,EACR;AAAA,EACD,iBAAiB,UAAU;AACzB,UAAM,UAAU,IAAI,KAAK,KAAK,WAAW,IAAI,QAAQ;AACrD,SAAK,UAAU,QAAQ,SAAS,WAAW;AAAA,EAC5C;AAAA,EACD,eAAe,OAAO,MAAM,KAAK,oBAAoB;AACnD,UAAM,OAAO;AACb,UAAM,UAAU;AAChB,UAAM,aAAa,IAAI,kBAAkB,MAAM,SAAS,MAAM,GAAG;AACjE,UAAM,SAAS,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC;AACjC,UAAM,cAAc,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE;AACxC,UAAM,WAAW,KAAK;AACtB,UAAM,oBAAoB,SAAS;AACnC,UAAM,cAAc,SAAS;AAC7B,aAAS,cAAc,WAAW;AAClC,aAAS,cAAc;AACvB,aAAS,YAAY;AACrB,UAAM,qBAAqB,IAAI,kBAAkB;AAAA,MAC/C,MAAM;AAAA,MACN,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,WAAW;AAAA,IACjB,CAAK;AACD,UAAM,gBAAgB,IAAI,KAAK,IAAI,YAAa,GAAE,kBAAkB;AACpE,QAAI,gBAAgB;AACpB,UAAM,aAAa,MAAM;AACzB,QAAI,YAAY;AACd,UAAI,WAAW,SAAS;AACtB,2BAAmB,MAAM,KAAK,UAAU;AACxC,cAAM,aAAa;AACnB,wBAAgB;AAAA,MACjB;AAAA,IACP,OAAW;AACL,yBAAmB,MAAM,KAAK,WAAW;AACzC,sBAAgB;AAAA,IACjB;AACD,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAM,MAAM,IAAI;AAChB,UAAI,QAAQ,GAAG;AACb,mBAAW,GAAG,IAAI,GAAG,OAAO,IAAI,CAAC;AACjC,mBAAW,OAAO,YAAY,IAAI,GAAG,CAAC;AAAA,MAC9C,WAAiB,QAAQ,GAAG;AACpB,mBAAW,GAAG,IAAI,GAAG,GAAG,OAAO,EAAE;AACjC,mBAAW,OAAO,GAAG,YAAY,IAAI,CAAC;AAAA,MAC9C,OAAa;AACL,mBAAW,GAAG,IAAI,GAAG,OAAO,IAAI,CAAC;AACjC,mBAAW,OAAO,GAAG,GAAG,YAAY,EAAE;AAAA,MACvC;AACD,YAAM,OAAO,KAAK;AAClB,mBAAa,oBAAoB,MAAM,MAAM,IAAI,IAAI,OAAO,GAAG,MAAM,IAAI;AACzE,eAAS,gBAAgB,kBAAkB;AAC3C,UAAI,eAAe;AACjB,iBAAS,OAAO,eAAe,UAAU;AAAA,MAC1C;AACD,eAAS,OAAO,OAAO,UAAU;AAAA,IAClC;AACD,kBAAc,SAAS;AACvB,kBAAc,SAAS;AACvB,aAAS,cAAc;AACvB,aAAS,YAAY;AACrB,UAAM,aAAa;AAAA,EACpB;AAAA,EACD,iBAAiB,SAAS,oBAAoB;AAC5C,UAAM,WAAW,KAAK;AACtB,UAAM,gBAAgB,QAAQ,YAAY,yBAAyB,QAAQ,YAAY;AACvF,QAAI,eAAe;AACjB,UAAI,KAAK,qBAAqB,MAAM;AAClC,aAAK,mBAAmB;MACzB;AACD,WAAK,iBAAiB,SAAS,WAAW,QAAQ,QAAQ,0BAA0B,QAAQ,KAAK;AAAA,IACvG,OAAW;AACL,UAAI,KAAK,sBAAsB,MAAM;AACnC,aAAK,oBAAoB;MAC1B;AAAA,IACF;AACD,UAAM,WAAW,gBAAgB,KAAK,mBAAmB,KAAK;AAC9D,UAAM,OAAO,IAAI,KAAK,KAAK,WAAW,IAAI,QAAQ;AAClD,UAAM,WAAW,SAAS;AAC1B,aAAS,UAAU,QAAQ;AAC3B,UAAM,OAAO,KAAK;AAClB,iBAAa,oBAAoB,GAAG,GAAG,IAAI,MAAM,IAAI,IAAI;AACzD,aAAS,gBAAgB,kBAAkB;AAC3C,aAAS,OAAO,MAAM,WAAW;AAAA,EAClC;AAAA,EACD,YAAY,oBAAoB;AAC9B,UAAM,WAAW,KAAK;AACtB,UAAM,YAAY,SAAS;AAC3B,aAAS,YAAY;AACrB,aAAS,IAAI,GAAG,IAAI,KAAK,WAAW,QAAQ,KAAK;AAC/C,YAAM,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK,KAAK,QAAQ,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,IAAI,EAAE;AACrG,YAAM,WAAW,iBAAiB,IAAI,KAAK,gBAAgB;AAC3D,WAAK,MAAM,oBAAoB,IAAI,GAAG,GAAG,OAAO,QAAQ;AAAA,IACzD;AACD,aAAS,YAAY;AAAA,EACtB;AAAA,EACD,MAAM,oBAAoB,OAAO,QAAQ,OAAO,UAAU;AACxD,UAAM,uBAAuB,KAAK;AAClC,SAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,SAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACG;AAAA,EACD,UAAU,UAAU,WAAW,OAAO,QAAQ,cAAc,WAAW,UAAU;AAC/E,UAAM,WAAW,KAAK;AACtB,UAAM,eAAe,KAAK;AAC1B,QAAI,cAAc,iBAAiB,cAAc,gBAAgB;AAC/D,cAAQ;AAAA,QACN;AAAA,MACR;AAAA,IACK;AACD,UAAM,sBAAsB;AAC5B,UAAM,WAAW,IAAI,KAAK,KAAK,WAAW,SAAS,YAAY;AAC/D,UAAM,eAAe,aAAa;AAClC,UAAM,SAAS,KAAK,UAAU,SAAS;AACvC,UAAM,kBAAkB,SAAS,YAAY,IAAI,KAAK,MAAM,IAAI,UAAU,IAAI,KAAK,MAAM,IAAI,cAAc;AAC3G,UAAM,cAAc,eAAe;AACnC,UAAM,UAAU,SAAS,YAAY,IAAI,IAAI,KAAK,MAAM,sBAAsB,WAAW,IAAI;AAC7F,QAAI,UAAU,aAAa;AACzB,cAAQ,KAAK,iBAAiB,6DAA6D,8CAA8C,aAAa;AAAA,IACvJ;AACD,UAAM,UAAU,CAAA;AAChB,QAAI,MAAM;AACV,aAAS,IAAI,GAAG,IAAI,aAAa,EAAE,GAAG;AACpC,YAAM,KAAK,IAAI;AACf,YAAM,SAAS,KAAK,IAAI,CAAC,KAAK,KAAK,CAAC;AACpC,cAAQ,KAAK,MAAM;AACnB,UAAI,MAAM,GAAG;AACX,eAAO;AAAA,MACf,WAAiB,IAAI,SAAS;AACtB,eAAO,IAAI;AAAA,MACZ;AAAA,IACF;AACD,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,cAAQ,KAAK,QAAQ,KAAK;AAAA,IAC3B;AACD,iBAAa,UAAU,QAAQ,SAAS;AACxC,iBAAa,WAAW,QAAQ;AAChC,iBAAa,WAAW,QAAQ;AAChC,iBAAa,eAAe,QAAQ,cAAc;AAClD,QAAI,UAAU;AACZ,mBAAa,YAAY,QAAQ;AAAA,IAClC;AACD,UAAM,EAAE,QAAS,IAAG;AACpB,iBAAa,UAAU,QAAQ;AAC/B,iBAAa,UAAU,QAAQ,UAAU;AACzC,UAAM,aAAa,KAAK,UAAU;AAClC,UAAM,IAAI,IAAI,cAAc,SAAS,UAAU,UAAU,SAAS,UAAU,UAAU;AACtF,UAAM,IAAI,KAAK,KAAK,YAAY;AAChC,iBAAa,WAAW,GAAG,GAAG,IAAI,YAAY,IAAI,UAAU;AAC5D,aAAS,gBAAgB,SAAS;AAClC,aAAS,OAAO,UAAU,WAAW;AAAA,EACtC;AACH;AACA,SAAS,cAAc,QAAQ;AAC7B,QAAM,YAAY,CAAA;AAClB,QAAM,WAAW,CAAA;AACjB,QAAM,SAAS,CAAA;AACf,MAAI,MAAM;AACV,QAAM,YAAY,SAAS,UAAU,IAAI,gBAAgB;AACzD,WAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AAClC,UAAM,UAAU,KAAK,IAAI,GAAG,GAAG;AAC/B,aAAS,KAAK,OAAO;AACrB,QAAI,QAAQ,IAAI;AAChB,QAAI,IAAI,SAAS,SAAS;AACxB,cAAQ,gBAAgB,IAAI,SAAS,UAAU;AAAA,IACrD,WAAe,MAAM,GAAG;AAClB,cAAQ;AAAA,IACT;AACD,WAAO,KAAK,KAAK;AACjB,UAAM,YAAY,KAAK,UAAU;AACjC,UAAML,OAAM,CAAC;AACb,UAAMC,OAAM,IAAI;AAChB,UAAM,MAAM,CAACD,MAAKA,MAAKC,MAAKD,MAAKC,MAAKA,MAAKD,MAAKA,MAAKC,MAAKA,MAAKD,MAAKC,IAAG;AACvE,UAAM,YAAY;AAClB,UAAM,WAAW;AACjB,UAAM,eAAe;AACrB,UAAM,SAAS;AACf,UAAM,gBAAgB;AACtB,UAAM,WAAW,IAAI,aAAa,eAAe,WAAW,SAAS;AACrE,UAAM,KAAK,IAAI,aAAa,SAAS,WAAW,SAAS;AACzD,UAAM,YAAY,IAAI,aAAa,gBAAgB,WAAW,SAAS;AACvE,aAAS,OAAO,GAAG,OAAO,WAAW,QAAQ;AAC3C,YAAM,IAAI,OAAO,IAAI,IAAI,IAAI;AAC7B,YAAM,IAAI,OAAO,IAAI,IAAI;AACzB,YAAM,cAAc;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA,IAAI,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA,IAAI,IAAI;AAAA,QACR,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,IAAI,IAAI;AAAA,QACR,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA,IAAI;AAAA,QACJ;AAAA,MACR;AACM,eAAS,IAAI,aAAa,eAAe,WAAW,IAAI;AACxD,SAAG,IAAI,KAAK,SAAS,WAAW,IAAI;AACpC,YAAM,OAAO,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAChD,gBAAU,IAAI,MAAM,gBAAgB,WAAW,IAAI;AAAA,IACpD;AACD,UAAM,SAAS,IAAI;AACnB,WAAO,aAAa,YAAY,IAAI,gBAAgB,UAAU,YAAY,CAAC;AAC3E,WAAO,aAAa,MAAM,IAAI,gBAAgB,IAAI,MAAM,CAAC;AACzD,WAAO,aAAa,aAAa,IAAI,gBAAgB,WAAW,aAAa,CAAC;AAC9E,cAAU,KAAK,MAAM;AACrB,QAAI,MAAM,SAAS;AACjB;AAAA,IACD;AAAA,EACF;AACD,SAAO,EAAE,WAAW,UAAU;AAChC;AACA,SAAS,oBAAoB,OAAO,QAAQ,QAAQ;AAClD,QAAM,qBAAqB,IAAI,kBAAkB,OAAO,QAAQ,MAAM;AACtE,qBAAmB,QAAQ,UAAU;AACrC,qBAAmB,QAAQ,OAAO;AAClC,qBAAmB,cAAc;AACjC,SAAO;AACT;AACA,SAAS,aAAa,QAAQ,GAAG,GAAG,OAAO,QAAQ;AACjD,SAAO,SAAS,IAAI,GAAG,GAAG,OAAO,MAAM;AACvC,SAAO,QAAQ,IAAI,GAAG,GAAG,OAAO,MAAM;AACxC;AACA,SAAS,eAAe,QAAQ,OAAO,QAAQ;AAC7C,QAAM,UAAU,IAAI,aAAa,WAAW;AAC5C,QAAM,WAAW,IAAII,UAAQ,GAAG,GAAG,CAAC;AACpC,QAAM,iBAAiB,IAAI,eAAe;AAAA,IACxC,MAAM;AAAA,IACN,SAAS;AAAA,MACP,KAAK;AAAA,MACL,sBAAsB,IAAI;AAAA,MAC1B,uBAAuB,IAAI;AAAA,MAC3B,kBAAkB,GAAG;AAAA,IACtB;AAAA,IACD,UAAU;AAAA,MACR,UAAU,EAAE,OAAO,KAAM;AAAA,MACzB,WAAW,EAAE,OAAO,EAAG;AAAA,MACvB,WAAW,EAAE,OAAO,QAAS;AAAA,MAC7B,eAAe,EAAE,OAAO,MAAO;AAAA,MAC/B,UAAU,EAAE,OAAO,EAAG;AAAA,MACtB,UAAU,EAAE,OAAO,EAAG;AAAA,MACtB,YAAY,EAAE,OAAO,SAAU;AAAA,IAChC;AAAA,IACD,cAAc,uBAAwB;AAAA,IACtC,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA6DhB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,EAChB,CAAG;AACD,SAAO;AACT;AACA,SAAS,uBAAuB;AAC9B,SAAO,IAAI,eAAe;AAAA,IACxB,MAAM;AAAA,IACN,UAAU;AAAA,MACR,UAAU,EAAE,OAAO,KAAM;AAAA,IAC1B;AAAA,IACD,cAAc,uBAAwB;AAAA,IACtC,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAoBhB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,EAChB,CAAG;AACH;AACA,SAAS,sBAAsB;AAC7B,SAAO,IAAI,eAAe;AAAA,IACxB,MAAM;AAAA,IACN,UAAU;AAAA,MACR,UAAU,EAAE,OAAO,KAAM;AAAA,MACzB,cAAc,EAAE,OAAO,GAAI;AAAA,IAC5B;AAAA,IACD,cAAc,uBAAwB;AAAA,IACtC,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAiBhB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,EAChB,CAAG;AACH;AACA,SAAS,yBAAyB;AAChC,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwDT;AACA,SAAS,gBAAgB,UAAU;AACjC,MAAI,aAA6B,oBAAI;AACrC,MAAI,iBAAiB;AACrB,WAAS3C,KAAI,SAAS;AACpB,QAAI,WAAW,QAAQ,WAAW;AAChC,YAAM,UAAU,QAAQ;AACxB,YAAM,gBAAgB,YAAY,oCAAoC,YAAY;AAClF,YAAM,YAAY,YAAY,yBAAyB,YAAY;AACnE,UAAI,iBAAiB,WAAW;AAC9B,YAAI,QAAQ,yBAAyB,QAAQ,qBAAqB,MAAM;AACtE,kBAAQ,mBAAmB;AAC3B,cAAI,eAAe,WAAW,IAAI,OAAO;AACzC,cAAI,mBAAmB;AACrB,6BAAiB,IAAI,eAAe,QAAQ;AAC9C,yBAAe,gBAAgB,eAAe,oBAAoB,SAAS,YAAY,IAAI,eAAe,YAAY,SAAS,YAAY;AAC3I,qBAAW,IAAI,SAAS,YAAY;AACpC,iBAAO,aAAa;AAAA,QAC9B,OAAe;AACL,cAAI,WAAW,IAAI,OAAO,GAAG;AAC3B,mBAAO,WAAW,IAAI,OAAO,EAAE;AAAA,UAC3C,OAAiB;AACL,kBAAM,QAAQ,QAAQ;AACtB,gBAAI,iBAAiB,SAAS,MAAM,SAAS,KAAK,aAAa,SAAS,sBAAsB,KAAK,GAAG;AACpG,kBAAI,mBAAmB;AACrB,iCAAiB,IAAI,eAAe,QAAQ;AAC9C,oBAAM,eAAe,gBAAgB,eAAe,oBAAoB,OAAO,IAAI,eAAe,YAAY,OAAO;AACrH,yBAAW,IAAI,SAAS,YAAY;AACpC,sBAAQ,iBAAiB,WAAW,gBAAgB;AACpD,qBAAO,aAAa;AAAA,YAClC,OAAmB;AACL,qBAAO;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,WAAS,sBAAsB,OAAO;AACpC,QAAI,QAAQ;AACZ,UAAM,SAAS;AACf,aAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,UAAI,MAAM,OAAO;AACf;AAAA,IACH;AACD,WAAO,UAAU;AAAA,EAClB;AACD,WAAS,iBAAiB,OAAO;AAC/B,UAAM,UAAU,MAAM;AACtB,YAAQ,oBAAoB,WAAW,gBAAgB;AACvD,UAAM,YAAY,WAAW,IAAI,OAAO;AACxC,QAAI,cAAc,QAAQ;AACxB,iBAAW,OAAO,OAAO;AACzB,gBAAU,QAAO;AAAA,IAClB;AAAA,EACF;AACD,WAAS,UAAU;AACjB,iBAA6B,oBAAI;AACjC,QAAI,mBAAmB,MAAM;AAC3B,qBAAe,QAAO;AACtB,uBAAiB;AAAA,IAClB;AAAA,EACF;AACD,SAAO;AAAA,IACL,KAAAA;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,gBAAgB,IAAI;AAC3B,QAAM,aAAa,CAAA;AACnB,WAAS,aAAa,MAAM;AAC1B,QAAI,WAAW,UAAU,QAAQ;AAC/B,aAAO,WAAW;AAAA,IACnB;AACD,QAAI;AACJ,YAAQ,MAAI;AAAA,MACV,KAAK;AACH,oBAAY,GAAG,aAAa,qBAAqB,KAAK,GAAG,aAAa,yBAAyB,KAAK,GAAG,aAAa,4BAA4B;AAChJ;AAAA,MACF,KAAK;AACH,oBAAY,GAAG,aAAa,gCAAgC,KAAK,GAAG,aAAa,oCAAoC,KAAK,GAAG,aAAa,uCAAuC;AACjL;AAAA,MACF,KAAK;AACH,oBAAY,GAAG,aAAa,+BAA+B,KAAK,GAAG,aAAa,mCAAmC,KAAK,GAAG,aAAa,sCAAsC;AAC9K;AAAA,MACF,KAAK;AACH,oBAAY,GAAG,aAAa,gCAAgC,KAAK,GAAG,aAAa,uCAAuC;AACxH;AAAA,MACF;AACE,oBAAY,GAAG,aAAa,IAAI;AAAA,IACnC;AACD,eAAW,QAAQ;AACnB,WAAO;AAAA,EACR;AACD,SAAO;AAAA,IACL,KAAK,SAAS,MAAM;AAClB,aAAO,aAAa,IAAI,MAAM;AAAA,IAC/B;AAAA,IACD,MAAM,SAAS,cAAc;AAC3B,UAAI,aAAa,UAAU;AACzB,qBAAa,wBAAwB;AAAA,MAC7C,OAAa;AACL,qBAAa,qBAAqB;AAClC,qBAAa,mBAAmB;AAChC,qBAAa,wBAAwB;AACrC,qBAAa,+BAA+B;AAC5C,qBAAa,0BAA0B;AACvC,qBAAa,wBAAwB;AACrC,qBAAa,yBAAyB;AACtC,qBAAa,wBAAwB;AAAA,MACtC;AACD,mBAAa,0BAA0B;AACvC,mBAAa,6BAA6B;AAC1C,mBAAa,sCAAsC;AAAA,IACpD;AAAA,IACD,KAAK,SAAS,MAAM;AAClB,YAAM,YAAY,aAAa,IAAI;AACnC,UAAI,cAAc,MAAM;AACtB,gBAAQ,KAAK,0BAA0B,OAAO,2BAA2B;AAAA,MAC1E;AACD,aAAO;AAAA,IACR;AAAA,EACL;AACA;AACA,SAAS,gBAAgB,IAAI,YAAY,MAAM,eAAe;AAC5D,QAAM,aAAa,CAAA;AACnB,QAAM,sBAAsC,oBAAI;AAChD,WAAS,kBAAkB,OAAO;AAChC,UAAM,WAAW,MAAM;AACvB,QAAI,SAAS,UAAU,MAAM;AAC3B,iBAAW,OAAO,SAAS,KAAK;AAAA,IACjC;AACD,eAAW,QAAQ,SAAS,YAAY;AACtC,iBAAW,OAAO,SAAS,WAAW,KAAK;AAAA,IAC5C;AACD,aAAS,oBAAoB,WAAW,iBAAiB;AACzD,WAAO,WAAW,SAAS;AAC3B,UAAM,YAAY,oBAAoB,IAAI,QAAQ;AAClD,QAAI,WAAW;AACb,iBAAW,OAAO,SAAS;AAC3B,0BAAoB,OAAO,QAAQ;AAAA,IACpC;AACD,kBAAc,wBAAwB,QAAQ;AAC9C,QAAI,SAAS,8BAA8B,MAAM;AAC/C,aAAO,SAAS;AAAA,IACjB;AACD,SAAK,OAAO;AAAA,EACb;AACD,WAASA,KAAI,QAAQ,UAAU;AAC7B,QAAI,WAAW,SAAS,QAAQ;AAC9B,aAAO;AACT,aAAS,iBAAiB,WAAW,iBAAiB;AACtD,eAAW,SAAS,MAAM;AAC1B,SAAK,OAAO;AACZ,WAAO;AAAA,EACR;AACD,WAAS,OAAO,UAAU;AACxB,UAAM,qBAAqB,SAAS;AACpC,eAAW,QAAQ,oBAAoB;AACrC,iBAAW,OAAO,mBAAmB,OAAO,KAAK;AAAA,IAClD;AACD,UAAM,kBAAkB,SAAS;AACjC,eAAW,QAAQ,iBAAiB;AAClC,YAAM,QAAQ,gBAAgB;AAC9B,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AAC5C,mBAAW,OAAO,MAAM,IAAI,KAAK;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AACD,WAAS,yBAAyB,UAAU;AAC1C,UAAM,UAAU,CAAA;AAChB,UAAM,gBAAgB,SAAS;AAC/B,UAAM,mBAAmB,SAAS,WAAW;AAC7C,QAAI+C,WAAU;AACd,QAAI,kBAAkB,MAAM;AAC1B,YAAM,QAAQ,cAAc;AAC5B,MAAAA,WAAU,cAAc;AACxB,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK,GAAG;AAC/C,cAAM,IAAI,MAAM,IAAI;AACpB,cAAM,IAAI,MAAM,IAAI;AACpB,cAAM,IAAI,MAAM,IAAI;AACpB,gBAAQ,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,MAC9B;AAAA,IACP,OAAW;AACL,YAAM,QAAQ,iBAAiB;AAC/B,MAAAA,WAAU,iBAAiB;AAC3B,eAAS,IAAI,GAAG,IAAI,MAAM,SAAS,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG;AACvD,cAAM,IAAI,IAAI;AACd,cAAM,IAAI,IAAI;AACd,cAAM,IAAI,IAAI;AACd,gBAAQ,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,MAC9B;AAAA,IACF;AACD,UAAM,YAAY,KAAK,iBAAiB,OAAO,IAAI,wBAAwB,uBAAuB,SAAS,CAAC;AAC5G,cAAU,UAAUA;AACpB,UAAM,oBAAoB,oBAAoB,IAAI,QAAQ;AAC1D,QAAI;AACF,iBAAW,OAAO,iBAAiB;AACrC,wBAAoB,IAAI,UAAU,SAAS;AAAA,EAC5C;AACD,WAAS,sBAAsB,UAAU;AACvC,UAAM,mBAAmB,oBAAoB,IAAI,QAAQ;AACzD,QAAI,kBAAkB;AACpB,YAAM,gBAAgB,SAAS;AAC/B,UAAI,kBAAkB,MAAM;AAC1B,YAAI,iBAAiB,UAAU,cAAc,SAAS;AACpD,mCAAyB,QAAQ;AAAA,QAClC;AAAA,MACF;AAAA,IACP,OAAW;AACL,+BAAyB,QAAQ;AAAA,IAClC;AACD,WAAO,oBAAoB,IAAI,QAAQ;AAAA,EACxC;AACD,SAAO;AAAA,IACL,KAAA/C;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,2BAA2B,IAAI,YAAY,MAAM,cAAc;AACtE,QAAM,WAAW,aAAa;AAC9B,MAAI;AACJ,WAAS,QAAQ,OAAO;AACtB,WAAO;AAAA,EACR;AACD,MAAI,MAAM;AACV,WAAS,SAAS,OAAO;AACvB,WAAO,MAAM;AACb,sBAAkB,MAAM;AAAA,EACzB;AACD,WAAS,OAAO,OAAO,OAAO;AAC5B,OAAG,aAAa,MAAM,OAAO,MAAM,QAAQ,eAAe;AAC1D,SAAK,OAAO,OAAO,MAAM,CAAC;AAAA,EAC3B;AACD,WAAS,gBAAgB,OAAO,OAAO,WAAW;AAChD,QAAI,cAAc;AAChB;AACF,QAAI,WAAW;AACf,QAAI,UAAU;AACZ,kBAAY;AACZ,mBAAa;AAAA,IACnB,OAAW;AACL,kBAAY,WAAW,IAAI,wBAAwB;AACnD,mBAAa;AACb,UAAI,cAAc,MAAM;AACtB,gBAAQ,MAAM,uIAAuI;AACrJ;AAAA,MACD;AAAA,IACF;AACD,cAAU,YAAY,MAAM,OAAO,MAAM,QAAQ,iBAAiB,SAAS;AAC3E,SAAK,OAAO,OAAO,MAAM,SAAS;AAAA,EACnC;AACD,OAAK,UAAU;AACf,OAAK,WAAW;AAChB,OAAK,SAAS;AACd,OAAK,kBAAkB;AACzB;AACA,SAAS,UAAU,IAAI;AACrB,QAAM,SAAS;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACd;AACE,QAAM,SAAS;AAAA,IACb,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACE,WAAS,OAAO,OAAO,MAAM,eAAe;AAC1C,WAAO;AACP,YAAQ,MAAI;AAAA,MACV,KAAK;AACH,eAAO,aAAa,iBAAiB,QAAQ;AAC7C;AAAA,MACF,KAAK;AACH,eAAO,SAAS,iBAAiB,QAAQ;AACzC;AAAA,MACF,KAAK;AACH,eAAO,SAAS,iBAAiB,QAAQ;AACzC;AAAA,MACF,KAAK;AACH,eAAO,SAAS,gBAAgB;AAChC;AAAA,MACF,KAAK;AACH,eAAO,UAAU,gBAAgB;AACjC;AAAA,MACF;AACE,gBAAQ,MAAM,uCAAuC,IAAI;AACzD;AAAA,IACH;AAAA,EACF;AACD,WAAS,QAAQ;AACf,WAAO;AACP,WAAO,QAAQ;AACf,WAAO,YAAY;AACnB,WAAO,SAAS;AAChB,WAAO,QAAQ;AAAA,EAChB;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,WAAW;AAAA,IACX;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,cAAc,GAAG,GAAG;AAC3B,SAAO,EAAE,KAAK,EAAE;AAClB;AACA,SAAS,iBAAiB,GAAG,GAAG;AAC9B,SAAO,KAAK,IAAI,EAAE,EAAE,IAAI,KAAK,IAAI,EAAE,EAAE;AACvC;AACA,SAAS,YAAY,OAAO,WAAW;AACrC,MAAI,cAAc;AAClB,QAAM,QAAQ,UAAU,+BAA+B,UAAU,KAAK,QAAQ,UAAU;AACxF,MAAI,iBAAiB;AACnB,kBAAc;AAAA,WACP,iBAAiB;AACxB,kBAAc;AAAA,WACP,iBAAiB;AACxB,kBAAc;AAAA,WACP,iBAAiB;AACxB,kBAAc;AAAA,WACP,iBAAiB;AACxB,kBAAc;AAAA;AAEd,YAAQ,MAAM,oEAAoE,KAAK;AACzF,QAAM,aAAa,WAAW;AAChC;AACA,SAAS,kBAAkB,IAAI,cAAc,UAAU;AACrD,QAAM,iBAAiB,CAAA;AACvB,QAAM,kBAAkB,IAAI,aAAa,CAAC;AAC1C,QAAM,gBAAgC,oBAAI;AAC1C,QAAM,QAAQ,IAAI;AAClB,QAAM,iBAAiB,CAAA;AACvB,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,mBAAe,KAAK,CAAC,GAAG,CAAC;AAAA,EAC1B;AACD,WAAS,OAAO,QAAQ,UAAU,UAAU,SAAS;AACnD,UAAM,mBAAmB,OAAO;AAChC,QAAI,aAAa,aAAa,MAAM;AAClC,YAAM,iBAAiB,SAAS,gBAAgB,YAAY,SAAS,gBAAgB,UAAU,SAAS,gBAAgB;AACxH,YAAM,oBAAoB,mBAAmB,SAAS,eAAe,SAAS;AAC9E,UAAI,QAAQ,cAAc,IAAI,QAAQ;AACtC,UAAI,UAAU,UAAU,MAAM,UAAU,mBAAmB;AACzD,YAAI,iBAAiB,WAAW;AAC9B,kBAAQ,QAAO;AACf,wBAAc,OAAO,QAAQ;AAC7B,mBAAS,oBAAoB,WAAW,cAAc;AAAA,QAChE;AACQ,YAAI,UAAU;AACZ,gBAAM,QAAQ;AAChB,cAAM,mBAAmB,SAAS,gBAAgB,aAAa;AAC/D,cAAM,kBAAkB,SAAS,gBAAgB,WAAW;AAC5D,cAAM,iBAAiB,SAAS,gBAAgB,UAAU;AAC1D,cAAM,eAAe,SAAS,gBAAgB,YAAY,CAAA;AAC1D,cAAM,eAAe,SAAS,gBAAgB,UAAU,CAAA;AACxD,cAAM,cAAc,SAAS,gBAAgB,SAAS,CAAA;AACtD,YAAI,kBAAkB;AACtB,YAAI,qBAAqB;AACvB,4BAAkB;AACpB,YAAI,oBAAoB;AACtB,4BAAkB;AACpB,YAAI,mBAAmB;AACrB,4BAAkB;AACpB,YAAI,QAAQ,SAAS,WAAW,SAAS,QAAQ;AACjD,YAAI,SAAS;AACb,YAAI,QAAQ,aAAa,gBAAgB;AACvC,mBAAS,KAAK,KAAK,QAAQ,aAAa,cAAc;AACtD,kBAAQ,aAAa;AAAA,QACtB;AACD,cAAM,SAAS,IAAI,aAAa,QAAQ,SAAS,IAAI,iBAAiB;AACtE,cAAM,UAAU,IAAI,iBAAiB,QAAQ,OAAO,QAAQ,iBAAiB;AAC7E,gBAAQ,OAAO;AACf,gBAAQ,cAAc;AACtB,cAAM,mBAAmB,kBAAkB;AAC3C,iBAAS,IAAI,GAAG,IAAI,mBAAmB,KAAK;AAC1C,gBAAM,cAAc,aAAa;AACjC,gBAAM,cAAc,aAAa;AACjC,gBAAM,aAAa,YAAY;AAC/B,gBAAM,SAAS,QAAQ,SAAS,IAAI;AACpC,mBAAS,IAAI,GAAG,IAAI,YAAY,OAAO,KAAK;AAC1C,kBAAM,SAAS,IAAI;AACnB,gBAAI,qBAAqB,MAAM;AAC7B,oBAAM,oBAAoB,aAAa,CAAC;AACxC,kBAAI,YAAY,eAAe;AAC7B,4BAAY,OAAO,WAAW;AAChC,qBAAO,SAAS,SAAS,KAAK,MAAM;AACpC,qBAAO,SAAS,SAAS,KAAK,MAAM;AACpC,qBAAO,SAAS,SAAS,KAAK,MAAM;AACpC,qBAAO,SAAS,SAAS,KAAK;AAAA,YAC/B;AACD,gBAAI,oBAAoB,MAAM;AAC5B,oBAAM,oBAAoB,aAAa,CAAC;AACxC,kBAAI,YAAY,eAAe;AAC7B,4BAAY,OAAO,WAAW;AAChC,qBAAO,SAAS,SAAS,KAAK,MAAM;AACpC,qBAAO,SAAS,SAAS,KAAK,MAAM;AACpC,qBAAO,SAAS,SAAS,KAAK,MAAM;AACpC,qBAAO,SAAS,SAAS,KAAK;AAAA,YAC/B;AACD,gBAAI,mBAAmB,MAAM;AAC3B,oBAAM,oBAAoB,YAAY,CAAC;AACvC,kBAAI,WAAW,eAAe;AAC5B,4BAAY,OAAO,UAAU;AAC/B,qBAAO,SAAS,SAAS,KAAK,MAAM;AACpC,qBAAO,SAAS,SAAS,KAAK,MAAM;AACpC,qBAAO,SAAS,SAAS,MAAM,MAAM;AACrC,qBAAO,SAAS,SAAS,MAAM,WAAW,aAAa,IAAI,MAAM,IAAI;AAAA,YACtE;AAAA,UACF;AAAA,QACF;AACD,gBAAQ;AAAA,UACN,OAAO;AAAA,UACP;AAAA,UACA,MAAM,IAAIyC,UAAQ,OAAO,MAAM;AAAA,QACzC;AACQ,sBAAc,IAAI,UAAU,KAAK;AACjC,iBAAS,iBAAiB,WAAW,cAAc;AAAA,MACpD;AACD,UAAI,qBAAqB;AACzB,eAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK;AAChD,8BAAsB,iBAAiB;AAAA,MACxC;AACD,YAAM,qBAAqB,SAAS,uBAAuB,IAAI,IAAI;AACnE,cAAQ,YAAW,EAAG,SAAS,IAAI,4BAA4B,kBAAkB;AACjF,cAAQ,YAAW,EAAG,SAAS,IAAI,yBAAyB,gBAAgB;AAC5E,cAAQ,YAAa,EAAC,SAAS,IAAI,uBAAuB,MAAM,SAAS,QAAQ;AACjF,cAAQ,YAAW,EAAG,SAAS,IAAI,2BAA2B,MAAM,IAAI;AAAA,IAC9E,OAAW;AACL,YAAM,SAAS,qBAAqB,SAAS,IAAI,iBAAiB;AAClE,UAAI,aAAa,eAAe,SAAS;AACzC,UAAI,eAAe,UAAU,WAAW,WAAW,QAAQ;AACzD,qBAAa,CAAA;AACb,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,qBAAW,KAAK,CAAC,GAAG,CAAC;AAAA,QACtB;AACD,uBAAe,SAAS,MAAM;AAAA,MAC/B;AACD,eAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,cAAM,YAAY,WAAW;AAC7B,kBAAU,KAAK;AACf,kBAAU,KAAK,iBAAiB;AAAA,MACjC;AACD,iBAAW,KAAK,gBAAgB;AAChC,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAI,IAAI,UAAU,WAAW,GAAG,IAAI;AAClC,yBAAe,GAAG,KAAK,WAAW,GAAG;AACrC,yBAAe,GAAG,KAAK,WAAW,GAAG;AAAA,QAC/C,OAAe;AACL,yBAAe,GAAG,KAAK,OAAO;AAC9B,yBAAe,GAAG,KAAK;AAAA,QACxB;AAAA,MACF;AACD,qBAAe,KAAK,aAAa;AACjC,YAAM,eAAe,SAAS,gBAAgB;AAC9C,YAAM,eAAe,SAAS,gBAAgB;AAC9C,UAAI,qBAAqB;AACzB,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,cAAM,YAAY,eAAe;AACjC,cAAM,QAAQ,UAAU;AACxB,cAAM,QAAQ,UAAU;AACxB,YAAI,UAAU,OAAO,oBAAoB,OAAO;AAC9C,cAAI,gBAAgB,SAAS,aAAa,gBAAgB,CAAC,MAAM,aAAa,QAAQ;AACpF,qBAAS,aAAa,gBAAgB,GAAG,aAAa,MAAM;AAAA,UAC7D;AACD,cAAI,gBAAgB,SAAS,aAAa,gBAAgB,CAAC,MAAM,aAAa,QAAQ;AACpF,qBAAS,aAAa,gBAAgB,GAAG,aAAa,MAAM;AAAA,UAC7D;AACD,0BAAgB,KAAK;AACrB,gCAAsB;AAAA,QAChC,OAAe;AACL,cAAI,gBAAgB,SAAS,aAAa,gBAAgB,CAAC,MAAM,MAAM;AACrE,qBAAS,gBAAgB,gBAAgB,CAAC;AAAA,UAC3C;AACD,cAAI,gBAAgB,SAAS,aAAa,gBAAgB,CAAC,MAAM,MAAM;AACrE,qBAAS,gBAAgB,gBAAgB,CAAC;AAAA,UAC3C;AACD,0BAAgB,KAAK;AAAA,QACtB;AAAA,MACF;AACD,YAAM,qBAAqB,SAAS,uBAAuB,IAAI,IAAI;AACnE,cAAQ,YAAW,EAAG,SAAS,IAAI,4BAA4B,kBAAkB;AACjF,cAAQ,YAAW,EAAG,SAAS,IAAI,yBAAyB,eAAe;AAAA,IAC5E;AAAA,EACF;AACD,SAAO;AAAA,IACL;AAAA,EACJ;AACA;AACA,SAAS,aAAa,IAAI,YAAY,YAAY,MAAM;AACtD,MAAI,YAA4B,oBAAI;AACpC,WAAS,OAAO,QAAQ;AACtB,UAAM,QAAQ,KAAK,OAAO;AAC1B,UAAM,WAAW,OAAO;AACxB,UAAM,iBAAiB,WAAW,IAAI,QAAQ,QAAQ;AACtD,QAAI,UAAU,IAAI,cAAc,MAAM,OAAO;AAC3C,iBAAW,OAAO,cAAc;AAChC,gBAAU,IAAI,gBAAgB,KAAK;AAAA,IACpC;AACD,QAAI,OAAO,iBAAiB;AAC1B,UAAI,OAAO,iBAAiB,WAAW,sBAAsB,MAAM,OAAO;AACxE,eAAO,iBAAiB,WAAW,sBAAsB;AAAA,MAC1D;AACD,iBAAW,OAAO,OAAO,gBAAgB,KAAK;AAC9C,UAAI,OAAO,kBAAkB,MAAM;AACjC,mBAAW,OAAO,OAAO,eAAe,KAAK;AAAA,MAC9C;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,WAAS,UAAU;AACjB,gBAA4B,oBAAI;EACjC;AACD,WAAS,uBAAuB,OAAO;AACrC,UAAM,gBAAgB,MAAM;AAC5B,kBAAc,oBAAoB,WAAW,sBAAsB;AACnE,eAAW,OAAO,cAAc,cAAc;AAC9C,QAAI,cAAc,kBAAkB;AAClC,iBAAW,OAAO,cAAc,aAAa;AAAA,EAChD;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACJ;AACA;AACA,MAAM,eAA+B,oBAAI;AACzC,MAAM,oBAAoC,oBAAI;AAC9C,MAAM,iBAAiC,oBAAI;AAC3C,MAAM,mBAAmC,oBAAI;AAC7C,MAAM,gBAAgB,CAAA;AACtB,MAAM,gBAAgB,CAAA;AACtB,MAAM,YAAY,IAAI,aAAa,EAAE;AACrC,MAAM,YAAY,IAAI,aAAa,CAAC;AACpC,MAAM,YAAY,IAAI,aAAa,CAAC;AACpC,SAAS,QAAQ,OAAO,SAAS,WAAW;AAC1C,QAAM,YAAY,MAAM;AACxB,MAAI,aAAa,KAAK,YAAY;AAChC,WAAO;AACT,QAAM,IAAI,UAAU;AACpB,MAAI,IAAI,cAAc;AACtB,MAAI,MAAM,QAAQ;AAChB,QAAI,IAAI,aAAa,CAAC;AACtB,kBAAc,KAAK;AAAA,EACpB;AACD,MAAI,YAAY,GAAG;AACjB,cAAU,QAAQ,GAAG,CAAC;AACtB,aAAS,IAAI,GAAG,SAAS,GAAG,MAAM,SAAS,EAAE,GAAG;AAC9C,gBAAU;AACV,YAAM,GAAG,QAAQ,GAAG,MAAM;AAAA,IAC3B;AAAA,EACF;AACD,SAAO;AACT;AACA,SAAS,YAAY,GAAG,GAAG;AACzB,MAAI,EAAE,WAAW,EAAE;AACjB,WAAO;AACT,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,KAAK;AACxC,QAAI,EAAE,OAAO,EAAE;AACb,aAAO;AAAA,EACV;AACD,SAAO;AACT;AACA,SAAS,UAAU,GAAG,GAAG;AACvB,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,KAAK;AACxC,MAAE,KAAK,EAAE;AAAA,EACV;AACH;AACA,SAAS,cAAc,UAAU,GAAG;AAClC,MAAI,IAAI,cAAc;AACtB,MAAI,MAAM,QAAQ;AAChB,QAAI,IAAI,WAAW,CAAC;AACpB,kBAAc,KAAK;AAAA,EACpB;AACD,WAAS,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG;AAC5B,MAAE,KAAK,SAAS,oBAAmB;AAAA,EACpC;AACD,SAAO;AACT;AACA,SAAS,YAAY,IAAI,GAAG;AAC1B,QAAM,QAAQ,KAAK;AACnB,MAAI,MAAM,OAAO;AACf;AACF,KAAG,UAAU,KAAK,MAAM,CAAC;AACzB,QAAM,KAAK;AACb;AACA,SAAS,YAAY,IAAI,GAAG;AAC1B,QAAM,QAAQ,KAAK;AACnB,MAAI,EAAE,MAAM,QAAQ;AAClB,QAAI,MAAM,OAAO,EAAE,KAAK,MAAM,OAAO,EAAE,GAAG;AACxC,SAAG,UAAU,KAAK,MAAM,EAAE,GAAG,EAAE,CAAC;AAChC,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,EAAE;AAAA,IACd;AAAA,EACL,OAAS;AACL,QAAI,YAAY,OAAO,CAAC;AACtB;AACF,OAAG,WAAW,KAAK,MAAM,CAAC;AAC1B,cAAU,OAAO,CAAC;AAAA,EACnB;AACH;AACA,SAAS,YAAY,IAAI,GAAG;AAC1B,QAAM,QAAQ,KAAK;AACnB,MAAI,EAAE,MAAM,QAAQ;AAClB,QAAI,MAAM,OAAO,EAAE,KAAK,MAAM,OAAO,EAAE,KAAK,MAAM,OAAO,EAAE,GAAG;AAC5D,SAAG,UAAU,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,EAAE;AAAA,IACd;AAAA,EACF,WAAU,EAAE,MAAM,QAAQ;AACzB,QAAI,MAAM,OAAO,EAAE,KAAK,MAAM,OAAO,EAAE,KAAK,MAAM,OAAO,EAAE,GAAG;AAC5D,SAAG,UAAU,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,EAAE;AAAA,IACd;AAAA,EACL,OAAS;AACL,QAAI,YAAY,OAAO,CAAC;AACtB;AACF,OAAG,WAAW,KAAK,MAAM,CAAC;AAC1B,cAAU,OAAO,CAAC;AAAA,EACnB;AACH;AACA,SAAS,YAAY,IAAI,GAAG;AAC1B,QAAM,QAAQ,KAAK;AACnB,MAAI,EAAE,MAAM,QAAQ;AAClB,QAAI,MAAM,OAAO,EAAE,KAAK,MAAM,OAAO,EAAE,KAAK,MAAM,OAAO,EAAE,KAAK,MAAM,OAAO,EAAE,GAAG;AAChF,SAAG,UAAU,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC1C,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,EAAE;AACb,YAAM,KAAK,EAAE;AAAA,IACd;AAAA,EACL,OAAS;AACL,QAAI,YAAY,OAAO,CAAC;AACtB;AACF,OAAG,WAAW,KAAK,MAAM,CAAC;AAC1B,cAAU,OAAO,CAAC;AAAA,EACnB;AACH;AACA,SAAS,WAAW,IAAI,GAAG;AACzB,QAAM,QAAQ,KAAK;AACnB,QAAM,WAAW,EAAE;AACnB,MAAI,aAAa,QAAQ;AACvB,QAAI,YAAY,OAAO,CAAC;AACtB;AACF,OAAG,iBAAiB,KAAK,MAAM,OAAO,CAAC;AACvC,cAAU,OAAO,CAAC;AAAA,EACtB,OAAS;AACL,QAAI,YAAY,OAAO,QAAQ;AAC7B;AACF,cAAU,IAAI,QAAQ;AACtB,OAAG,iBAAiB,KAAK,MAAM,OAAO,SAAS;AAC/C,cAAU,OAAO,QAAQ;AAAA,EAC1B;AACH;AACA,SAAS,WAAW,IAAI,GAAG;AACzB,QAAM,QAAQ,KAAK;AACnB,QAAM,WAAW,EAAE;AACnB,MAAI,aAAa,QAAQ;AACvB,QAAI,YAAY,OAAO,CAAC;AACtB;AACF,OAAG,iBAAiB,KAAK,MAAM,OAAO,CAAC;AACvC,cAAU,OAAO,CAAC;AAAA,EACtB,OAAS;AACL,QAAI,YAAY,OAAO,QAAQ;AAC7B;AACF,cAAU,IAAI,QAAQ;AACtB,OAAG,iBAAiB,KAAK,MAAM,OAAO,SAAS;AAC/C,cAAU,OAAO,QAAQ;AAAA,EAC1B;AACH;AACA,SAAS,WAAW,IAAI,GAAG;AACzB,QAAM,QAAQ,KAAK;AACnB,QAAM,WAAW,EAAE;AACnB,MAAI,aAAa,QAAQ;AACvB,QAAI,YAAY,OAAO,CAAC;AACtB;AACF,OAAG,iBAAiB,KAAK,MAAM,OAAO,CAAC;AACvC,cAAU,OAAO,CAAC;AAAA,EACtB,OAAS;AACL,QAAI,YAAY,OAAO,QAAQ;AAC7B;AACF,cAAU,IAAI,QAAQ;AACtB,OAAG,iBAAiB,KAAK,MAAM,OAAO,SAAS;AAC/C,cAAU,OAAO,QAAQ;AAAA,EAC1B;AACH;AACA,SAAS,YAAY,IAAI,GAAG;AAC1B,QAAM,QAAQ,KAAK;AACnB,MAAI,MAAM,OAAO;AACf;AACF,KAAG,UAAU,KAAK,MAAM,CAAC;AACzB,QAAM,KAAK;AACb;AACA,SAAS,YAAY,IAAI,GAAG;AAC1B,QAAM,QAAQ,KAAK;AACnB,MAAI,YAAY,OAAO,CAAC;AACtB;AACF,KAAG,WAAW,KAAK,MAAM,CAAC;AAC1B,YAAU,OAAO,CAAC;AACpB;AACA,SAAS,YAAY,IAAI,GAAG;AAC1B,QAAM,QAAQ,KAAK;AACnB,MAAI,YAAY,OAAO,CAAC;AACtB;AACF,KAAG,WAAW,KAAK,MAAM,CAAC;AAC1B,YAAU,OAAO,CAAC;AACpB;AACA,SAAS,YAAY,IAAI,GAAG;AAC1B,QAAM,QAAQ,KAAK;AACnB,MAAI,YAAY,OAAO,CAAC;AACtB;AACF,KAAG,WAAW,KAAK,MAAM,CAAC;AAC1B,YAAU,OAAO,CAAC;AACpB;AACA,SAAS,aAAa,IAAI,GAAG;AAC3B,QAAM,QAAQ,KAAK;AACnB,MAAI,MAAM,OAAO;AACf;AACF,KAAG,WAAW,KAAK,MAAM,CAAC;AAC1B,QAAM,KAAK;AACb;AACA,SAAS,aAAa,IAAI,GAAG;AAC3B,QAAM,QAAQ,KAAK;AACnB,MAAI,YAAY,OAAO,CAAC;AACtB;AACF,KAAG,YAAY,KAAK,MAAM,CAAC;AAC3B,YAAU,OAAO,CAAC;AACpB;AACA,SAAS,aAAa,IAAI,GAAG;AAC3B,QAAM,QAAQ,KAAK;AACnB,MAAI,YAAY,OAAO,CAAC;AACtB;AACF,KAAG,YAAY,KAAK,MAAM,CAAC;AAC3B,YAAU,OAAO,CAAC;AACpB;AACA,SAAS,aAAa,IAAI,GAAG;AAC3B,QAAM,QAAQ,KAAK;AACnB,MAAI,YAAY,OAAO,CAAC;AACtB;AACF,KAAG,YAAY,KAAK,MAAM,CAAC;AAC3B,YAAU,OAAO,CAAC;AACpB;AACA,SAAS,WAAW,IAAI,GAAG,UAAU;AACnC,QAAM,QAAQ,KAAK;AACnB,QAAM,OAAO,SAAS;AACtB,MAAI,MAAM,OAAO,MAAM;AACrB,OAAG,UAAU,KAAK,MAAM,IAAI;AAC5B,UAAM,KAAK;AAAA,EACZ;AACD,WAAS,aAAa,KAAK,cAAc,IAAI;AAC/C;AACA,SAAS,aAAa,IAAI,GAAG,UAAU;AACrC,QAAM,QAAQ,KAAK;AACnB,QAAM,OAAO,SAAS;AACtB,MAAI,MAAM,OAAO,MAAM;AACrB,OAAG,UAAU,KAAK,MAAM,IAAI;AAC5B,UAAM,KAAK;AAAA,EACZ;AACD,WAAS,aAAa,KAAK,gBAAgB,IAAI;AACjD;AACA,SAAS,WAAW,IAAI,GAAG,UAAU;AACnC,QAAM,QAAQ,KAAK;AACnB,QAAM,OAAO,SAAS;AACtB,MAAI,MAAM,OAAO,MAAM;AACrB,OAAG,UAAU,KAAK,MAAM,IAAI;AAC5B,UAAM,KAAK;AAAA,EACZ;AACD,WAAS,eAAe,KAAK,kBAAkB,IAAI;AACrD;AACA,SAAS,kBAAkB,IAAI,GAAG,UAAU;AAC1C,QAAM,QAAQ,KAAK;AACnB,QAAM,OAAO,SAAS;AACtB,MAAI,MAAM,OAAO,MAAM;AACrB,OAAG,UAAU,KAAK,MAAM,IAAI;AAC5B,UAAM,KAAK;AAAA,EACZ;AACD,WAAS,kBAAkB,KAAK,mBAAmB,IAAI;AACzD;AACA,SAAS,kBAAkB,MAAM;AAC/B,UAAQ,MAAI;AAAA,IACV,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,EACV;AACH;AACA,SAAS,iBAAiB,IAAI,GAAG;AAC/B,KAAG,WAAW,KAAK,MAAM,CAAC;AAC5B;AACA,SAAS,iBAAiB,IAAI,GAAG;AAC/B,QAAMnF,QAAO,QAAQ,GAAG,KAAK,MAAM,CAAC;AACpC,KAAG,WAAW,KAAK,MAAMA,KAAI;AAC/B;AACA,SAAS,iBAAiB,IAAI,GAAG;AAC/B,QAAMA,QAAO,QAAQ,GAAG,KAAK,MAAM,CAAC;AACpC,KAAG,WAAW,KAAK,MAAMA,KAAI;AAC/B;AACA,SAAS,iBAAiB,IAAI,GAAG;AAC/B,QAAMA,QAAO,QAAQ,GAAG,KAAK,MAAM,CAAC;AACpC,KAAG,WAAW,KAAK,MAAMA,KAAI;AAC/B;AACA,SAAS,gBAAgB,IAAI,GAAG;AAC9B,QAAMA,QAAO,QAAQ,GAAG,KAAK,MAAM,CAAC;AACpC,KAAG,iBAAiB,KAAK,MAAM,OAAOA,KAAI;AAC5C;AACA,SAAS,gBAAgB,IAAI,GAAG;AAC9B,QAAMA,QAAO,QAAQ,GAAG,KAAK,MAAM,CAAC;AACpC,KAAG,iBAAiB,KAAK,MAAM,OAAOA,KAAI;AAC5C;AACA,SAAS,gBAAgB,IAAI,GAAG;AAC9B,QAAMA,QAAO,QAAQ,GAAG,KAAK,MAAM,EAAE;AACrC,KAAG,iBAAiB,KAAK,MAAM,OAAOA,KAAI;AAC5C;AACA,SAAS,iBAAiB,IAAI,GAAG;AAC/B,KAAG,WAAW,KAAK,MAAM,CAAC;AAC5B;AACA,SAAS,iBAAiB,IAAI,GAAG;AAC/B,KAAG,WAAW,KAAK,MAAM,CAAC;AAC5B;AACA,SAAS,iBAAiB,IAAI,GAAG;AAC/B,KAAG,WAAW,KAAK,MAAM,CAAC;AAC5B;AACA,SAAS,iBAAiB,IAAI,GAAG;AAC/B,KAAG,WAAW,KAAK,MAAM,CAAC;AAC5B;AACA,SAAS,kBAAkB,IAAI,GAAG;AAChC,KAAG,YAAY,KAAK,MAAM,CAAC;AAC7B;AACA,SAAS,kBAAkB,IAAI,GAAG;AAChC,KAAG,YAAY,KAAK,MAAM,CAAC;AAC7B;AACA,SAAS,kBAAkB,IAAI,GAAG;AAChC,KAAG,YAAY,KAAK,MAAM,CAAC;AAC7B;AACA,SAAS,kBAAkB,IAAI,GAAG;AAChC,KAAG,YAAY,KAAK,MAAM,CAAC;AAC7B;AACA,SAAS,gBAAgB,IAAI,GAAG,UAAU;AACxC,QAAM,IAAI,EAAE;AACZ,QAAM,QAAQ,cAAc,UAAU,CAAC;AACvC,KAAG,WAAW,KAAK,MAAM,KAAK;AAC9B,WAAS,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG;AAC5B,aAAS,aAAa,EAAE,MAAM,cAAc,MAAM,EAAE;AAAA,EACrD;AACH;AACA,SAAS,iBAAiB,IAAI,GAAG,UAAU;AACzC,QAAM,IAAI,EAAE;AACZ,QAAM,QAAQ,cAAc,UAAU,CAAC;AACvC,KAAG,WAAW,KAAK,MAAM,KAAK;AAC9B,WAAS,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG;AAC5B,aAAS,aAAa,EAAE,MAAM,gBAAgB,MAAM,EAAE;AAAA,EACvD;AACH;AACA,SAAS,gBAAgB,IAAI,GAAG,UAAU;AACxC,QAAM,IAAI,EAAE;AACZ,QAAM,QAAQ,cAAc,UAAU,CAAC;AACvC,KAAG,WAAW,KAAK,MAAM,KAAK;AAC9B,WAAS,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG;AAC5B,aAAS,eAAe,EAAE,MAAM,kBAAkB,MAAM,EAAE;AAAA,EAC3D;AACH;AACA,SAAS,sBAAsB,IAAI,GAAG,UAAU;AAC9C,QAAM,IAAI,EAAE;AACZ,QAAM,QAAQ,cAAc,UAAU,CAAC;AACvC,KAAG,WAAW,KAAK,MAAM,KAAK;AAC9B,WAAS,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG;AAC5B,aAAS,kBAAkB,EAAE,MAAM,mBAAmB,MAAM,EAAE;AAAA,EAC/D;AACH;AACA,SAAS,mBAAmB,MAAM;AAChC,UAAQ,MAAI;AAAA,IACV,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,EACV;AACH;AACA,MAAM,cAAc;AAAA,EAClB,YAAY,KAAK,YAAY,MAAM;AACjC,SAAK,KAAK;AACV,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,WAAW,kBAAkB,WAAW,IAAI;AAAA,EAClD;AACH;AACA,MAAM,iBAAiB;AAAA,EACrB,YAAY,KAAK,YAAY,MAAM;AACjC,SAAK,KAAK;AACV,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,OAAO,WAAW;AACvB,SAAK,WAAW,mBAAmB,WAAW,IAAI;AAAA,EACnD;AACH;AACA,MAAM,kBAAkB;AAAA,EACtB,YAAY,KAAK;AACf,SAAK,KAAK;AACV,SAAK,MAAM;AACX,SAAK,MAAM;EACZ;AAAA,EACD,SAAS,IAAI,OAAO,UAAU;AAC5B,UAAM,MAAM,KAAK;AACjB,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,MAAM,GAAG,EAAE,GAAG;AAC5C,YAAM,IAAI,IAAI;AACd,QAAE,SAAS,IAAI,MAAM,EAAE,KAAK,QAAQ;AAAA,IACrC;AAAA,EACF;AACH;AACA,MAAM,aAAa;AACnB,SAAS,WAAW,WAAW,eAAe;AAC5C,YAAU,IAAI,KAAK,aAAa;AAChC,YAAU,IAAI,cAAc,MAAM;AACpC;AACA,SAAS,aAAa,YAAY,MAAM,WAAW;AACjD,QAAM,OAAO,WAAW,MAAM,aAAa,KAAK;AAChD,aAAW,YAAY;AACvB,SAAO,MAAM;AACX,UAAM0F,SAAQ,WAAW,KAAK,IAAI,GAAG,WAAW,WAAW;AAC3D,QAAI,MAAMA,OAAM;AAChB,UAAM,YAAYA,OAAM,OAAO,KAAK,YAAYA,OAAM;AACtD,QAAI;AACF,YAAM,MAAM;AACd,QAAI,cAAc,UAAU,cAAc,OAAO,WAAW,MAAM,YAAY;AAC5E,iBAAW,WAAW,cAAc,SAAS,IAAI,cAAc,KAAK,YAAY,IAAI,IAAI,IAAI,iBAAiB,KAAK,YAAY,IAAI,CAAC;AACnI;AAAA,IACN,OAAW;AACL,YAAM,MAAM,UAAU;AACtB,UAAI,OAAO,IAAI;AACf,UAAI,SAAS,QAAQ;AACnB,eAAO,IAAI,kBAAkB,GAAG;AAChC,mBAAW,WAAW,IAAI;AAAA,MAC3B;AACD,kBAAY;AAAA,IACb;AAAA,EACF;AACH;AACA,MAAM,cAAc;AAAA,EAClB,YAAY,IAAI,SAAS;AACvB,SAAK,MAAM;AACX,SAAK,MAAM;AACX,UAAM,IAAI,GAAG,oBAAoB,SAAS,KAAK;AAC/C,aAAS,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC1B,YAAM,OAAO,GAAG,iBAAiB,SAAS,CAAC,GAAG,OAAO,GAAG,mBAAmB,SAAS,KAAK,IAAI;AAC7F,mBAAa,MAAM,MAAM,IAAI;AAAA,IAC9B;AAAA,EACF;AAAA,EACD,SAAS,IAAI,MAAM,OAAO,UAAU;AAClC,UAAM,IAAI,KAAK,IAAI;AACnB,QAAI,MAAM;AACR,QAAE,SAAS,IAAI,OAAO,QAAQ;AAAA,EACjC;AAAA,EACD,YAAY,IAAI,QAAQ,MAAM;AAC5B,UAAM,IAAI,OAAO;AACjB,QAAI,MAAM;AACR,WAAK,SAAS,IAAI,MAAM,CAAC;AAAA,EAC5B;AAAA,EACD,OAAO,OAAO,IAAI,KAAK,QAAQ,UAAU;AACvC,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,MAAM,GAAG,EAAE,GAAG;AAC5C,YAAM,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE;AAC/B,UAAI,EAAE,gBAAgB,OAAO;AAC3B,UAAE,SAAS,IAAI,EAAE,OAAO,QAAQ;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA,EACD,OAAO,aAAa,KAAK,QAAQ;AAC/B,UAAM,IAAI,CAAA;AACV,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,MAAM,GAAG,EAAE,GAAG;AAC5C,YAAM,IAAI,IAAI;AACd,UAAI,EAAE,MAAM;AACV,UAAE,KAAK,CAAC;AAAA,IACX;AACD,WAAO;AAAA,EACR;AACH;AACA,SAAS,YAAY,IAAI,MAAM,QAAQ;AACrC,QAAM,SAAS,GAAG,aAAa,IAAI;AACnC,KAAG,aAAa,QAAQ,MAAM;AAC9B,KAAG,cAAc,MAAM;AACvB,SAAO;AACT;AACA,IAAI,iBAAiB;AACrB,SAAS,aAAa,QAAQ,WAAW;AACvC,QAAM,QAAQ,OAAO,MAAM,IAAI;AAC/B,QAAM,SAAS,CAAA;AACf,QAAM,OAAO,KAAK,IAAI,YAAY,GAAG,CAAC;AACtC,QAAM,KAAK,KAAK,IAAI,YAAY,GAAG,MAAM,MAAM;AAC/C,WAAS,IAAI,MAAM,IAAI,IAAI,KAAK;AAC9B,UAAM,OAAO,IAAI;AACjB,WAAO,KAAK,GAAG,SAAS,YAAY,MAAM,OAAO,SAAS,MAAM,IAAI;AAAA,EACrE;AACD,SAAO,OAAO,KAAK,IAAI;AACzB;AACA,SAAS,sBAAsB,UAAU;AACvC,UAAQ,UAAQ;AAAA,IACd,KAAK;AACH,aAAO,CAAC,UAAU,WAAW;AAAA,IAC/B,KAAK;AACH,aAAO,CAAC,QAAQ,WAAW;AAAA,IAC7B;AACE,cAAQ,KAAK,6CAA6C,QAAQ;AAClE,aAAO,CAAC,UAAU,WAAW;AAAA,EAChC;AACH;AACA,SAAS,gBAAgB,IAAI,QAAQ,MAAM;AACzC,QAAM,SAAS,GAAG,mBAAmB,QAAQ,KAAK;AAClD,QAAMC,UAAS,GAAG,iBAAiB,MAAM,EAAE,KAAI;AAC/C,MAAI,UAAUA,YAAW;AACvB,WAAO;AACT,QAAM,eAAe,iBAAiB,KAAKA,OAAM;AACjD,MAAI,cAAc;AAChB,UAAM,YAAY,SAAS,aAAa,EAAE;AAC1C,WAAO,KAAK,gBAAgB,SAASA,UAAS,SAAS,aAAa,GAAG,gBAAgB,MAAM,GAAG,SAAS;AAAA,EAC7G,OAAS;AACL,WAAOA;AAAA,EACR;AACH;AACA,SAAS,yBAAyBC,eAAc,UAAU;AACxD,QAAM,aAAa,sBAAsB,QAAQ;AACjD,SAAO,UAAUA,gBAAe,qCAAqC,WAAW,KAAK,WAAW,KAAK;AACvG;AACA,SAAS,uBAAuBA,eAAc,aAAa;AACzD,MAAI;AACJ,UAAQ,aAAW;AAAA,IACjB,KAAK;AACH,wBAAkB;AAClB;AAAA,IACF,KAAK;AACH,wBAAkB;AAClB;AAAA,IACF,KAAK;AACH,wBAAkB;AAClB;AAAA,IACF,KAAK;AACH,wBAAkB;AAClB;AAAA,IACF,KAAK;AACH,wBAAkB;AAClB;AAAA,IACF;AACE,cAAQ,KAAK,gDAAgD,WAAW;AACxE,wBAAkB;AAAA,EACrB;AACD,SAAO,UAAUA,gBAAe,6BAA6B,kBAAkB;AACjF;AACA,SAAS,mBAAmB,YAAY;AACtC,QAAM,SAAS;AAAA,IACb,WAAW,wBAAwB,CAAC,CAAC,WAAW,sBAAsB,WAAW,WAAW,WAAW,yBAAyB,WAAW,sBAAsB,WAAW,eAAe,WAAW,aAAa,aAAa,oDAAoD;AAAA,KACnR,WAAW,sBAAsB,WAAW,2BAA2B,WAAW,6BAA6B,0CAA0C;AAAA,IAC1J,WAAW,wBAAwB,WAAW,+BAA+B,6CAA6C;AAAA,KACzH,WAAW,6BAA6B,WAAW,UAAU,WAAW,iBAAiB,WAAW,oCAAoC,kDAAkD;AAAA,EAC/L;AACE,SAAO,OAAO,OAAO,eAAe,EAAE,KAAK,IAAI;AACjD;AACA,SAAS,gBAAgB,SAAS;AAChC,QAAM,SAAS,CAAA;AACf,aAAW,QAAQ,SAAS;AAC1B,UAAM,QAAQ,QAAQ;AACtB,QAAI,UAAU;AACZ;AACF,WAAO,KAAK,aAAa,OAAO,MAAM,KAAK;AAAA,EAC5C;AACD,SAAO,OAAO,KAAK,IAAI;AACzB;AACA,SAAS,wBAAwB,IAAI,SAAS;AAC5C,QAAM,aAAa,CAAA;AACnB,QAAM,IAAI,GAAG,oBAAoB,SAAS,KAAK;AAC/C,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAM,OAAO,GAAG,gBAAgB,SAAS,CAAC;AAC1C,UAAM,OAAO,KAAK;AAClB,QAAI,eAAe;AACnB,QAAI,KAAK,SAAS;AAChB,qBAAe;AACjB,QAAI,KAAK,SAAS;AAChB,qBAAe;AACjB,QAAI,KAAK,SAAS;AAChB,qBAAe;AACjB,eAAW,QAAQ;AAAA,MACjB,MAAM,KAAK;AAAA,MACX,UAAU,GAAG,kBAAkB,SAAS,IAAI;AAAA,MAC5C;AAAA,IACN;AAAA,EACG;AACD,SAAO;AACT;AACA,SAAS,gBAAgB,QAAQ;AAC/B,SAAO,WAAW;AACpB;AACA,SAAS,iBAAiB,QAAQ,YAAY;AAC5C,SAAO,OAAO,QAAQ,mBAAmB,WAAW,YAAY,EAAE,QAAQ,oBAAoB,WAAW,aAAa,EAAE,QAAQ,yBAAyB,WAAW,iBAAiB,EAAE,QAAQ,qBAAqB,WAAW,cAAc,EAAE,QAAQ,oBAAoB,WAAW,aAAa,EAAE,QAAQ,0BAA0B,WAAW,kBAAkB,EAAE,QAAQ,2BAA2B,WAAW,mBAAmB,EAAE,QAAQ,4BAA4B,WAAW,oBAAoB;AAC9e;AACA,SAAS,yBAAyB,QAAQ,YAAY;AACpD,SAAO,OAAO,QAAQ,wBAAwB,WAAW,iBAAiB,EAAE,QAAQ,0BAA0B,WAAW,oBAAoB,WAAW,mBAAmB;AAC7K;AACA,MAAM,iBAAiB;AACvB,SAAS,gBAAgB,QAAQ;AAC/B,SAAO,OAAO,QAAQ,gBAAgB,eAAe;AACvD;AACA,SAAS,gBAAgBF,QAAO,SAAS;AACvC,QAAM,SAAS,YAAY;AAC3B,MAAI,WAAW,QAAQ;AACrB,UAAM,IAAI,MAAM,+BAA+B,UAAU,GAAG;AAAA,EAC7D;AACD,SAAO,gBAAgB,MAAM;AAC/B;AACA,MAAM,8BAA8B;AACpC,MAAM,oBAAoB;AAC1B,SAAS,YAAY,QAAQ;AAC3B,SAAO,OAAO,QAAQ,mBAAmB,YAAY,EAAE,QAAQ,6BAA6B,sBAAsB;AACpH;AACA,SAAS,uBAAuBA,QAAO,OAAO,KAAK,SAAS;AAC1D,UAAQ,KAAK,qHAAqH;AAClI,SAAO,aAAaA,QAAO,OAAO,KAAK,OAAO;AAChD;AACA,SAAS,aAAaA,QAAO,OAAO,KAAK,SAAS;AAChD,MAAI,SAAS;AACb,WAAS,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,GAAG,GAAG,KAAK;AACpD,cAAU,QAAQ,QAAQ,gBAAgB,OAAO,IAAI,IAAI,EAAE,QAAQ,wBAAwB,CAAC;AAAA,EAC7F;AACD,SAAO;AACT;AACA,SAAS,kBAAkB,YAAY;AACrC,MAAI,kBAAkB,eAAe,WAAW,YAAY,wBAAwB,WAAW,YAAY;AAC3G,MAAI,WAAW,cAAc,SAAS;AACpC,uBAAmB;AAAA,EACvB,WAAa,WAAW,cAAc,WAAW;AAC7C,uBAAmB;AAAA,EACvB,WAAa,WAAW,cAAc,QAAQ;AAC1C,uBAAmB;AAAA,EACpB;AACD,SAAO;AACT;AACA,SAAS,4BAA4B,YAAY;AAC/C,MAAI,sBAAsB;AAC1B,MAAI,WAAW,kBAAkB,cAAc;AAC7C,0BAAsB;AAAA,EAC1B,WAAa,WAAW,kBAAkB,kBAAkB;AACxD,0BAAsB;AAAA,EAC1B,WAAa,WAAW,kBAAkB,cAAc;AACpD,0BAAsB;AAAA,EACvB;AACD,SAAO;AACT;AACA,SAAS,yBAAyB,YAAY;AAC5C,MAAI,mBAAmB;AACvB,MAAI,WAAW,QAAQ;AACrB,YAAQ,WAAW,YAAU;AAAA,MAC3B,KAAK;AAAA,MACL,KAAK;AACH,2BAAmB;AACnB;AAAA,MACF,KAAK;AACH,2BAAmB;AACnB;AAAA,IACH;AAAA,EACF;AACD,SAAO;AACT;AACA,SAAS,yBAAyB,YAAY;AAC5C,MAAI,mBAAmB;AACvB,MAAI,WAAW,QAAQ;AACrB,YAAQ,WAAW,YAAU;AAAA,MAC3B,KAAK;AACH,2BAAmB;AACnB;AAAA,IACH;AAAA,EACF;AACD,SAAO;AACT;AACA,SAAS,6BAA6B,YAAY;AAChD,MAAI,uBAAuB;AAC3B,MAAI,WAAW,QAAQ;AACrB,YAAQ,WAAW,SAAO;AAAA,MACxB,KAAK;AACH,+BAAuB;AACvB;AAAA,MACF,KAAK;AACH,+BAAuB;AACvB;AAAA,MACF,KAAK;AACH,+BAAuB;AACvB;AAAA,IACH;AAAA,EACF;AACD,SAAO;AACT;AACA,SAAS,mBAAmB,YAAY;AACtC,QAAM,cAAc,WAAW;AAC/B,MAAI,gBAAgB;AAClB,WAAO;AACT,QAAM,SAAS,KAAK,KAAK,WAAW,IAAI;AACxC,QAAM,cAAc,IAAI;AACxB,QAAM,aAAa,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,IAAI,EAAE;AAChE,SAAO,EAAE,YAAY,aAAa;AACpC;AACA,SAAS,aAAa,UAAU,UAAU,YAAY,eAAe;AACnE,QAAM,KAAK,SAAS;AACpB,QAAM,UAAU,WAAW;AAC3B,MAAI,eAAe,WAAW;AAC9B,MAAI,iBAAiB,WAAW;AAChC,QAAM,sBAAsB,4BAA4B,UAAU;AAClE,QAAM,mBAAmB,yBAAyB,UAAU;AAC5D,QAAM,mBAAmB,yBAAyB,UAAU;AAC5D,QAAM,uBAAuB,6BAA6B,UAAU;AACpE,QAAM,mBAAmB,mBAAmB,UAAU;AACtD,QAAM,mBAAmB,WAAW,WAAW,KAAK,mBAAmB,UAAU;AACjF,QAAM,gBAAgB,gBAAgB,OAAO;AAC7C,QAAM,UAAU,GAAG;AACnB,MAAI,cAAc;AAClB,MAAI,gBAAgB,WAAW,cAAc,cAAc,WAAW,cAAc,OAAO;AAC3F,MAAI,WAAW,qBAAqB;AAClC,mBAAe;AAAA,MACb;AAAA,IACD,EAAC,OAAO,eAAe,EAAE,KAAK,IAAI;AACnC,QAAI,aAAa,SAAS,GAAG;AAC3B,sBAAgB;AAAA,IACjB;AACD,qBAAiB;AAAA,MACf;AAAA,MACA;AAAA,IACD,EAAC,OAAO,eAAe,EAAE,KAAK,IAAI;AACnC,QAAI,eAAe,SAAS,GAAG;AAC7B,wBAAkB;AAAA,IACnB;AAAA,EACL,OAAS;AACL,mBAAe;AAAA,MACb,kBAAkB,UAAU;AAAA,MAC5B,yBAAyB,WAAW;AAAA,MACpC;AAAA,MACA,WAAW,aAAa,2BAA2B;AAAA,MACnD,WAAW,kBAAkB,iCAAiC;AAAA,MAC9D,WAAW,yBAAyB,4BAA4B;AAAA,MAChE,WAAW,UAAU,WAAW,MAAM,oBAAoB;AAAA,MAC1D,WAAW,UAAU,WAAW,UAAU,qBAAqB;AAAA,MAC/D,WAAW,MAAM,oBAAoB;AAAA,MACrC,WAAW,SAAS,uBAAuB;AAAA,MAC3C,WAAW,SAAS,aAAa,mBAAmB;AAAA,MACpD,WAAW,WAAW,yBAAyB;AAAA,MAC/C,WAAW,QAAQ,sBAAsB;AAAA,MACzC,WAAW,cAAc,4BAA4B;AAAA,MACrD,WAAW,UAAU,wBAAwB;AAAA,MAC7C,WAAW,YAAY,0BAA0B;AAAA,MACjD,WAAW,aAAa,WAAW,uBAAuB,kCAAkC;AAAA,MAC5F,WAAW,aAAa,WAAW,wBAAwB,mCAAmC;AAAA,MAC9F,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,wBAAwB,uCAAuC;AAAA,MAC1E,WAAW,qBAAqB,oCAAoC;AAAA,MACpE,WAAW,iBAAiB,+BAA+B;AAAA,MAC3D,WAAW,0BAA0B,yCAAyC;AAAA,MAC9E,WAAW,mBAAmB,WAAW,yBAAyB,gCAAgC;AAAA,MAClG,WAAW,cAAc,4BAA4B;AAAA,MACrD,WAAW,uBAAuB,qCAAqC;AAAA,MACvE,WAAW,mBAAmB,iCAAiC;AAAA,MAC/D,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,WAAW,yBAAyB;AAAA,MAC/C,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,kBAAkB,gCAAgC;AAAA,MAC7D,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,gBAAgB,8BAA8B;AAAA,MACzD,WAAW,oBAAoB,kCAAkC;AAAA,MACjE,WAAW,iBAAiB,wBAAwB;AAAA,MACpD,WAAW,eAAe,sBAAsB;AAAA,MAChD,WAAW,eAAe,4BAA4B;AAAA,MACtD,WAAW,YAAY,mBAAmB;AAAA,MAC1C,WAAW,gBAAgB,4BAA4B;AAAA,MACvD,WAAW,cAAc,wBAAwB;AAAA,MACjD,WAAW,WAAW,yBAAyB;AAAA,MAC/C,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,gBAAgB,WAAW,gBAAgB,QAAQ,6BAA6B;AAAA,MAC3F,WAAW,eAAe,WAAW,WAAW,4BAA4B;AAAA,MAC5E,WAAW,oBAAoB,KAAK,WAAW,WAAW,iCAAiC;AAAA,MAC3F,WAAW,oBAAoB,KAAK,WAAW,WAAW,yCAAyC,WAAW,qBAAqB;AAAA,MACnI,WAAW,oBAAoB,KAAK,WAAW,WAAW,gCAAgC,WAAW,oBAAoB;AAAA,MACzH,WAAW,cAAc,yBAAyB;AAAA,MAClD,WAAW,YAAY,uBAAuB;AAAA,MAC9C,WAAW,mBAAmB,0BAA0B;AAAA,MACxD,WAAW,mBAAmB,aAAa,sBAAsB;AAAA,MACjE,WAAW,kBAAkB,gCAAgC;AAAA,MAC7D,WAAW,yBAAyB,4BAA4B;AAAA,MAChE,WAAW,0BAA0B,WAAW,6BAA6B,gCAAgC;AAAA,MAC7G;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,EAAC,OAAO,eAAe,EAAE,KAAK,IAAI;AACnC,qBAAiB;AAAA,MACf;AAAA,MACA,kBAAkB,UAAU;AAAA,MAC5B,yBAAyB,WAAW;AAAA,MACpC;AAAA,MACA,WAAW,UAAU,WAAW,MAAM,oBAAoB;AAAA,MAC1D,WAAW,UAAU,WAAW,UAAU,qBAAqB;AAAA,MAC/D,WAAW,MAAM,oBAAoB;AAAA,MACrC,WAAW,SAAS,uBAAuB;AAAA,MAC3C,WAAW,SAAS,uBAAuB;AAAA,MAC3C,WAAW,SAAS,aAAa,mBAAmB;AAAA,MACpD,WAAW,SAAS,aAAa,mBAAmB;AAAA,MACpD,WAAW,SAAS,aAAa,uBAAuB;AAAA,MACxD,mBAAmB,gCAAgC,iBAAiB,aAAa;AAAA,MACjF,mBAAmB,iCAAiC,iBAAiB,cAAc;AAAA,MACnF,mBAAmB,4BAA4B,iBAAiB,SAAS,OAAO;AAAA,MAChF,WAAW,WAAW,yBAAyB;AAAA,MAC/C,WAAW,QAAQ,sBAAsB;AAAA,MACzC,WAAW,cAAc,4BAA4B;AAAA,MACrD,WAAW,UAAU,wBAAwB;AAAA,MAC7C,WAAW,YAAY,0BAA0B;AAAA,MACjD,WAAW,aAAa,WAAW,uBAAuB,kCAAkC;AAAA,MAC5F,WAAW,aAAa,WAAW,wBAAwB,mCAAmC;AAAA,MAC9F,WAAW,YAAY,0BAA0B;AAAA,MACjD,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,wBAAwB,uCAAuC;AAAA,MAC1E,WAAW,qBAAqB,oCAAoC;AAAA,MACpE,WAAW,cAAc,4BAA4B;AAAA,MACrD,WAAW,iBAAiB,+BAA+B;AAAA,MAC3D,WAAW,0BAA0B,yCAAyC;AAAA,MAC9E,WAAW,cAAc,4BAA4B;AAAA,MACrD,WAAW,uBAAuB,qCAAqC;AAAA,MACvE,WAAW,mBAAmB,iCAAiC;AAAA,MAC/D,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,WAAW,yBAAyB;AAAA,MAC/C,WAAW,YAAY,0BAA0B;AAAA,MACjD,WAAW,QAAQ,sBAAsB;AAAA,MACzC,WAAW,gBAAgB,8BAA8B;AAAA,MACzD,WAAW,oBAAoB,kCAAkC;AAAA,MACjE,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,kBAAkB,gCAAgC;AAAA,MAC7D,WAAW,eAAe,6BAA6B;AAAA,MACvD,WAAW,qBAAqB,iCAAiC;AAAA,MACjE,WAAW,iBAAiB,wBAAwB;AAAA,MACpD,WAAW,gBAAgB,WAAW,kBAAkB,sBAAsB;AAAA,MAC9E,WAAW,eAAe,4BAA4B;AAAA,MACtD,WAAW,YAAY,mBAAmB;AAAA,MAC1C,WAAW,gBAAgB,4BAA4B;AAAA,MACvD,WAAW,cAAc,4BAA4B;AAAA,MACrD,WAAW,cAAc,wBAAwB;AAAA,MACjD,WAAW,cAAc,yBAAyB;AAAA,MAClD,WAAW,YAAY,uBAAuB;AAAA,MAC9C,WAAW,mBAAmB,0BAA0B;AAAA,MACxD,WAAW,mBAAmB,aAAa,sBAAsB;AAAA,MACjE,WAAW,qBAAqB,gCAAgC;AAAA,MAChE,WAAW,0BAA0B,sCAAsC;AAAA,MAC3E,WAAW,yBAAyB,4BAA4B;AAAA,MAChE,WAAW,0BAA0B,WAAW,6BAA6B,gCAAgC;AAAA,MAC7G;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,gBAAgB,gBAAgB,yBAAyB;AAAA,MACpE,WAAW,gBAAgB,gBAAgB,YAAY,+BAA+B;AAAA,MACtF,WAAW,gBAAgB,gBAAgB,uBAAuB,eAAe,WAAW,WAAW,IAAI;AAAA,MAC3G,WAAW,YAAY,sBAAsB;AAAA,MAC7C,WAAW,SAAS,mBAAmB;AAAA,MACvC,YAAY;AAAA,MACZ,yBAAyB,uBAAuB,WAAW,cAAc;AAAA,MACzE,WAAW,kBAAkB,2BAA2B,WAAW,eAAe;AAAA,MAClF;AAAA,IACD,EAAC,OAAO,eAAe,EAAE,KAAK,IAAI;AAAA,EACpC;AACD,iBAAe,gBAAgB,YAAY;AAC3C,iBAAe,iBAAiB,cAAc,UAAU;AACxD,iBAAe,yBAAyB,cAAc,UAAU;AAChE,mBAAiB,gBAAgB,cAAc;AAC/C,mBAAiB,iBAAiB,gBAAgB,UAAU;AAC5D,mBAAiB,yBAAyB,gBAAgB,UAAU;AACpE,iBAAe,YAAY,YAAY;AACvC,mBAAiB,YAAY,cAAc;AAC3C,MAAI,WAAW,YAAY,WAAW,wBAAwB,MAAM;AAClE,oBAAgB;AAChB,mBAAe;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,EAAC,KAAK,IAAI,IAAI,OAAO;AACtB,qBAAiB;AAAA,MACf;AAAA,MACA,WAAW,gBAAgB,QAAQ,KAAK;AAAA,MACxC,WAAW,gBAAgB,QAAQ,KAAK;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,EAAC,KAAK,IAAI,IAAI,OAAO;AAAA,EACvB;AACD,QAAM,aAAa,gBAAgB,eAAe;AAClD,QAAM,eAAe,gBAAgB,iBAAiB;AACtD,QAAM,iBAAiB,YAAY,IAAI,OAAO,UAAU;AACxD,QAAM,mBAAmB,YAAY,IAAI,OAAO,YAAY;AAC5D,KAAG,aAAa,SAAS,cAAc;AACvC,KAAG,aAAa,SAAS,gBAAgB;AACzC,MAAI,WAAW,wBAAwB,QAAQ;AAC7C,OAAG,mBAAmB,SAAS,GAAG,WAAW,mBAAmB;AAAA,EACpE,WAAa,WAAW,iBAAiB,MAAM;AAC3C,OAAG,mBAAmB,SAAS,GAAG,UAAU;AAAA,EAC7C;AACD,KAAG,YAAY,OAAO;AACtB,MAAI,SAAS,MAAM,mBAAmB;AACpC,UAAM,aAAa,GAAG,kBAAkB,OAAO,EAAE,KAAI;AACrD,UAAM,YAAY,GAAG,iBAAiB,cAAc,EAAE,KAAI;AAC1D,UAAM,cAAc,GAAG,iBAAiB,gBAAgB,EAAE,KAAI;AAC9D,QAAI,WAAW;AACf,QAAI,kBAAkB;AACtB,QAAI,GAAG,oBAAoB,SAAS,KAAK,MAAM,OAAO;AACpD,iBAAW;AACX,YAAM,eAAe,gBAAgB,IAAI,gBAAgB,QAAQ;AACjE,YAAM,iBAAiB,gBAAgB,IAAI,kBAAkB,UAAU;AACvE,cAAQ;AAAA,QACN,sCAAsC,GAAG,SAAQ,IAAK,wBAAwB,GAAG,oBAAoB,SAAS,KAAK,IAAI,2BAA2B,aAAa,OAAO,eAAe,OAAO;AAAA,MACpM;AAAA,IACA,WAAe,eAAe,IAAI;AAC5B,cAAQ,KAAK,yCAAyC,UAAU;AAAA,IACjE,WAAU,cAAc,MAAM,gBAAgB,IAAI;AACjD,wBAAkB;AAAA,IACnB;AACD,QAAI,iBAAiB;AACnB,WAAK,cAAc;AAAA,QACjB;AAAA,QACA;AAAA,QACA,cAAc;AAAA,UACZ,KAAK;AAAA,UACL,QAAQ;AAAA,QACT;AAAA,QACD,gBAAgB;AAAA,UACd,KAAK;AAAA,UACL,QAAQ;AAAA,QACT;AAAA,MACT;AAAA,IACK;AAAA,EACF;AACD,KAAG,aAAa,cAAc;AAC9B,KAAG,aAAa,gBAAgB;AAChC,MAAI;AACJ,OAAK,cAAc,WAAW;AAC5B,QAAI,mBAAmB,QAAQ;AAC7B,uBAAiB,IAAI,cAAc,IAAI,OAAO;AAAA,IAC/C;AACD,WAAO;AAAA,EACX;AACE,MAAI;AACJ,OAAK,gBAAgB,WAAW;AAC9B,QAAI,qBAAqB,QAAQ;AAC/B,yBAAmB,wBAAwB,IAAI,OAAO;AAAA,IACvD;AACD,WAAO;AAAA,EACX;AACE,OAAK,UAAU,WAAW;AACxB,kBAAc,uBAAuB,IAAI;AACzC,OAAG,cAAc,OAAO;AACxB,SAAK,UAAU;AAAA,EACnB;AACE,OAAK,OAAO,WAAW;AACvB,OAAK,KAAK;AACV,OAAK,WAAW;AAChB,OAAK,YAAY;AACjB,OAAK,UAAU;AACf,OAAK,eAAe;AACpB,OAAK,iBAAiB;AACtB,SAAO;AACT;AACA,IAAI,MAAM;AACV,MAAM,iBAAiB;AAAA,EACrB,cAAc;AACZ,SAAK,cAA8B,oBAAI;AACvC,SAAK,gBAAgC,oBAAI;EAC1C;AAAA,EACD,OAAO,UAAU;AACf,UAAM,eAAe,SAAS;AAC9B,UAAM,iBAAiB,SAAS;AAChC,UAAM,oBAAoB,KAAK,gBAAgB,YAAY;AAC3D,UAAM,sBAAsB,KAAK,gBAAgB,cAAc;AAC/D,UAAM,kBAAkB,KAAK,2BAA2B,QAAQ;AAChE,QAAI,gBAAgB,IAAI,iBAAiB,MAAM,OAAO;AACpD,sBAAgB,IAAI,iBAAiB;AACrC,wBAAkB;AAAA,IACnB;AACD,QAAI,gBAAgB,IAAI,mBAAmB,MAAM,OAAO;AACtD,sBAAgB,IAAI,mBAAmB;AACvC,0BAAoB;AAAA,IACrB;AACD,WAAO;AAAA,EACR;AAAA,EACD,OAAO,UAAU;AACf,UAAM,kBAAkB,KAAK,cAAc,IAAI,QAAQ;AACvD,eAAW,eAAe,iBAAiB;AACzC,kBAAY;AACZ,UAAI,YAAY,cAAc;AAC5B,aAAK,YAAY,OAAO,YAAY,IAAI;AAAA,IAC3C;AACD,SAAK,cAAc,OAAO,QAAQ;AAClC,WAAO;AAAA,EACR;AAAA,EACD,kBAAkB,UAAU;AAC1B,WAAO,KAAK,gBAAgB,SAAS,YAAY,EAAE;AAAA,EACpD;AAAA,EACD,oBAAoB,UAAU;AAC5B,WAAO,KAAK,gBAAgB,SAAS,cAAc,EAAE;AAAA,EACtD;AAAA,EACD,UAAU;AACR,SAAK,YAAY;AACjB,SAAK,cAAc;EACpB;AAAA,EACD,2BAA2B,UAAU;AACnC,UAAM,QAAQ,KAAK;AACnB,QAAI,MAAM,IAAI,QAAQ,MAAM,OAAO;AACjC,YAAM,IAAI,UAA0B,oBAAI,IAAK,CAAA;AAAA,IAC9C;AACD,WAAO,MAAM,IAAI,QAAQ;AAAA,EAC1B;AAAA,EACD,gBAAgB,MAAM;AACpB,UAAM,QAAQ,KAAK;AACnB,QAAI,MAAM,IAAI,IAAI,MAAM,OAAO;AAC7B,YAAM,QAAQ,IAAI,iBAAiB,IAAI;AACvC,YAAM,IAAI,MAAM,KAAK;AAAA,IACtB;AACD,WAAO,MAAM,IAAI,IAAI;AAAA,EACtB;AACH;AACA,MAAM,iBAAiB;AAAA,EACrB,YAAY,MAAM;AAChB,SAAK,KAAK;AACV,SAAK,OAAO;AACZ,SAAK,YAAY;AAAA,EAClB;AACH;AACA,SAAS,cAAc,UAAU,UAAU,YAAY,YAAY,cAAc,eAAe,UAAU;AACxG,QAAM,iBAAiB,IAAI;AAC3B,QAAM,iBAAiB,IAAI;AAC3B,QAAM,WAAW,CAAA;AACjB,QAAM,WAAW,aAAa;AAC9B,QAAM,yBAAyB,aAAa;AAC5C,QAAM,iBAAiB,aAAa;AACpC,MAAI,YAAY,aAAa;AAC7B,QAAM,YAAY;AAAA,IAChB,mBAAmB;AAAA,IACnB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EACpB;AACE,WAAS,cAAc,UAAU,QAAQ,SAAS,OAAO,QAAQ;AAC/D,UAAM,MAAM,MAAM;AAClB,UAAM,WAAW,OAAO;AACxB,UAAM,cAAc,SAAS,yBAAyB,MAAM,cAAc;AAC1E,UAAM,UAAU,SAAS,yBAAyB,aAAa,UAAU,IAAI,SAAS,UAAU,WAAW;AAC3G,UAAM,qBAAqB,CAAC,CAAC,UAAU,OAAO,YAAY,0BAA0B,OAAO,MAAM,SAAS;AAC1G,UAAM,WAAW,UAAU,SAAS;AACpC,QAAI,SAAS,cAAc,MAAM;AAC/B,kBAAY,aAAa,gBAAgB,SAAS,SAAS;AAC3D,UAAI,cAAc,SAAS,WAAW;AACpC,gBAAQ,KAAK,qCAAqC,SAAS,WAAW,wBAAwB,WAAW,UAAU;AAAA,MACpH;AAAA,IACF;AACD,UAAM,iBAAiB,SAAS,gBAAgB,YAAY,SAAS,gBAAgB,UAAU,SAAS,gBAAgB;AACxH,UAAM,oBAAoB,mBAAmB,SAAS,eAAe,SAAS;AAC9E,QAAI,qBAAqB;AACzB,QAAI,SAAS,gBAAgB,aAAa;AACxC,2BAAqB;AACvB,QAAI,SAAS,gBAAgB,WAAW;AACtC,2BAAqB;AACvB,QAAI,SAAS,gBAAgB,UAAU;AACrC,2BAAqB;AACvB,QAAI,cAAc;AAClB,QAAI,sBAAsB;AAC1B,QAAI,UAAU;AACZ,YAAM,SAAS,UAAU;AACzB,qBAAe,OAAO;AACtB,uBAAiB,OAAO;AAAA,IAC9B,OAAW;AACL,qBAAe,SAAS;AACxB,uBAAiB,SAAS;AAC1B,qBAAe,OAAO,QAAQ;AAC9B,6BAAuB,eAAe,kBAAkB,QAAQ;AAChE,+BAAyB,eAAe,oBAAoB,QAAQ;AAAA,IACrE;AACD,UAAM,sBAAsB,SAAS;AACrC,UAAM,eAAe,SAAS,YAAY;AAC1C,UAAM,eAAe,SAAS,YAAY;AAC1C,UAAM,iBAAiB,SAAS,cAAc;AAC9C,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA,YAAY,SAAS;AAAA,MACrB;AAAA,MACA;AAAA,MACA,SAAS,SAAS;AAAA,MAClB;AAAA,MACA;AAAA,MACA,qBAAqB,SAAS,wBAAwB;AAAA,MACtD,aAAa,SAAS;AAAA,MACtB;AAAA,MACA,YAAY,OAAO,oBAAoB;AAAA,MACvC,iBAAiB,OAAO,oBAAoB,QAAQ,OAAO,kBAAkB;AAAA,MAC7E,wBAAwB;AAAA,MACxB,gBAAgB,wBAAwB,OAAO,SAAS,iBAAiB,oBAAoB,qBAAqB,OAAO,oBAAoB,QAAQ,WAAW;AAAA,MAChK,KAAK,CAAC,CAAC,SAAS;AAAA,MAChB,QAAQ,CAAC,CAAC,SAAS;AAAA,MACnB,QAAQ,CAAC,CAAC;AAAA,MACV,YAAY,UAAU,OAAO;AAAA,MAC7B;AAAA,MACA,UAAU,CAAC,CAAC,SAAS;AAAA,MACrB,OAAO,CAAC,CAAC,SAAS;AAAA,MAClB,aAAa,CAAC,CAAC,SAAS;AAAA,MACxB,SAAS,CAAC,CAAC,SAAS;AAAA,MACpB,WAAW,CAAC,CAAC,SAAS;AAAA,MACtB,sBAAsB,SAAS,kBAAkB;AAAA,MACjD,uBAAuB,SAAS,kBAAkB;AAAA,MAClD,oBAAoB,CAAC,CAAC,SAAS,OAAO,SAAS,IAAI,mBAAmB,QAAQ,SAAS,IAAI,aAAa;AAAA,MACxG,WAAW;AAAA,MACX,cAAc,gBAAgB,CAAC,CAAC,SAAS;AAAA,MACzC,uBAAuB,gBAAgB,CAAC,CAAC,SAAS;AAAA,MAClD,oBAAoB,gBAAgB,CAAC,CAAC,SAAS;AAAA,MAC/C,aAAa;AAAA,MACb,gBAAgB,kBAAkB,CAAC,CAAC,SAAS;AAAA,MAC7C,yBAAyB,kBAAkB,CAAC,CAAC,SAAS;AAAA,MACtD,iBAAiB,CAAC,CAAC,SAAS;AAAA,MAC5B,cAAc,CAAC,CAAC,SAAS;AAAA,MACzB,cAAc,CAAC,CAAC,SAAS;AAAA,MACzB,aAAa,CAAC,CAAC,SAAS;AAAA,MACxB,sBAAsB,CAAC,CAAC,SAAS;AAAA,MACjC,kBAAkB,CAAC,CAAC,SAAS;AAAA,MAC7B,QAAQ,SAAS,gBAAgB,SAAS,SAAS,aAAa;AAAA,MAChE,UAAU,CAAC,CAAC,SAAS;AAAA,MACrB,WAAW;AAAA,MACX,aAAa,CAAC,CAAC,SAAS;AAAA,MACxB,OAAO,SAAS,QAAQ;AAAA,MACxB,eAAe,CAAC,CAAC,SAAS;AAAA,MAC1B,mBAAmB,CAAC,CAAC,SAAS;AAAA,MAC9B,cAAc,SAAS,eAAe;AAAA,MACtC,iBAAiB,CAAC,CAAC,SAAS;AAAA,MAC5B,cAAc,CAAC,CAAC,SAAS;AAAA,MACzB,SAAS,SAAS;AAAA,MAClB,gBAAgB,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,SAAS,WAAW;AAAA,MAC9D,cAAc,SAAS;AAAA,MACvB,cAAc,SAAS,iBAAiB,QAAQ,CAAC,CAAC,SAAS,WAAW,SAAS,SAAS,WAAW,MAAM,aAAa;AAAA,MACtH,WAAW,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,yBAAyB,CAAC,CAAC,SAAS,sBAAsB,CAAC,CAAC,SAAS,kBAAkB,CAAC,CAAC,SAAS,2BAA2B,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,wBAAwB,CAAC,CAAC,SAAS,oBAAoB,CAAC,CAAC,SAAS,iBAAiB,CAAC,CAAC,SAAS;AAAA,MAC/iB,eAAe,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,sBAAsB,CAAC,CAAC,SAAS,kBAAkB,CAAC,CAAC,SAAS,2BAA2B,SAAS,eAAe,KAAK,CAAC,CAAC,SAAS,mBAAmB,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,SAAS,wBAAwB,CAAC,CAAC,SAAS,oBAAoB,SAAS,QAAQ,KAAK,CAAC,CAAC,SAAS,iBAAiB,CAAC,CAAC,SAAS,sBAAsB,CAAC,CAAC,SAAS;AAAA,MAC5iB,KAAK,CAAC,CAAC;AAAA,MACP,QAAQ,SAAS,QAAQ;AAAA,MACzB,SAAS,OAAO,IAAI;AAAA,MACpB,aAAa,CAAC,CAAC,SAAS;AAAA,MACxB,iBAAiB,SAAS;AAAA,MAC1B;AAAA,MACA,UAAU,OAAO,kBAAkB;AAAA,MACnC,cAAc,SAAS,gBAAgB,aAAa;AAAA,MACpD,cAAc,SAAS,gBAAgB,WAAW;AAAA,MAClD,aAAa,SAAS,gBAAgB,UAAU;AAAA,MAChD;AAAA,MACA;AAAA,MACA,cAAc,OAAO,YAAY;AAAA,MACjC,gBAAgB,OAAO,MAAM;AAAA,MAC7B,eAAe,OAAO,KAAK;AAAA,MAC3B,mBAAmB,OAAO,SAAS;AAAA,MACnC,eAAe,OAAO,KAAK;AAAA,MAC3B,oBAAoB,OAAO,qBAAqB;AAAA,MAChD,sBAAsB,OAAO,eAAe;AAAA,MAC5C,qBAAqB,OAAO,cAAc;AAAA,MAC1C,mBAAmB,SAAS;AAAA,MAC5B,qBAAqB,SAAS;AAAA,MAC9B,WAAW,SAAS;AAAA,MACpB,kBAAkB,SAAS,UAAU,WAAW,QAAQ,SAAS;AAAA,MACjE,eAAe,SAAS,UAAU;AAAA,MAClC,aAAa,SAAS,aAAa,SAAS,cAAc;AAAA,MAC1D,yBAAyB,SAAS;AAAA,MAClC,oBAAoB,SAAS;AAAA,MAC7B,aAAa,SAAS,SAAS;AAAA,MAC/B,WAAW,SAAS,SAAS;AAAA,MAC7B,iBAAiB,CAAC,CAAC,SAAS;AAAA,MAC5B,cAAc,SAAS,gBAAgB;AAAA,MACvC,qBAAqB,SAAS;AAAA,MAC9B,sBAAsB,SAAS,cAAc,SAAS,WAAW;AAAA,MACjE,oBAAoB,SAAS,cAAc,SAAS,WAAW;AAAA,MAC/D,sBAAsB,SAAS,cAAc,SAAS,WAAW;AAAA,MACjE,2BAA2B,SAAS,cAAc,SAAS,WAAW;AAAA,MACtE,4BAA4B,YAAY,WAAW,IAAI,gBAAgB;AAAA,MACvE,8BAA8B,YAAY,WAAW,IAAI,oBAAoB;AAAA,MAC7E,mCAAmC,YAAY,WAAW,IAAI,wBAAwB;AAAA,MACtF,uBAAuB,SAAS,sBAAuB;AAAA,IAC7D;AACI,WAAO;AAAA,EACR;AACD,WAAS,mBAAmB,YAAY;AACtC,UAAM,QAAQ,CAAA;AACd,QAAI,WAAW,UAAU;AACvB,YAAM,KAAK,WAAW,QAAQ;AAAA,IACpC,OAAW;AACL,YAAM,KAAK,WAAW,oBAAoB;AAC1C,YAAM,KAAK,WAAW,sBAAsB;AAAA,IAC7C;AACD,QAAI,WAAW,YAAY,QAAQ;AACjC,iBAAW,QAAQ,WAAW,SAAS;AACrC,cAAM,KAAK,IAAI;AACf,cAAM,KAAK,WAAW,QAAQ,KAAK;AAAA,MACpC;AAAA,IACF;AACD,QAAI,WAAW,wBAAwB,OAAO;AAC5C,mCAA6B,OAAO,UAAU;AAC9C,iCAA2B,OAAO,UAAU;AAC5C,YAAM,KAAK,SAAS,cAAc;AAAA,IACnC;AACD,UAAM,KAAK,WAAW,qBAAqB;AAC3C,WAAO,MAAM;EACd;AACD,WAAS,6BAA6B,OAAO,YAAY;AACvD,UAAM,KAAK,WAAW,SAAS;AAC/B,UAAM,KAAK,WAAW,cAAc;AACpC,UAAM,KAAK,WAAW,UAAU;AAChC,UAAM,KAAK,WAAW,kBAAkB;AACxC,UAAM,KAAK,WAAW,OAAO;AAC7B,UAAM,KAAK,WAAW,SAAS;AAC/B,UAAM,KAAK,WAAW,OAAO;AAC7B,UAAM,KAAK,WAAW,eAAe;AACrC,UAAM,KAAK,WAAW,iBAAiB;AACvC,UAAM,KAAK,WAAW,mBAAmB;AACzC,UAAM,KAAK,WAAW,YAAY;AAClC,UAAM,KAAK,WAAW,cAAc;AACpC,UAAM,KAAK,WAAW,aAAa;AACnC,UAAM,KAAK,WAAW,aAAa;AACnC,UAAM,KAAK,WAAW,iBAAiB;AACvC,UAAM,KAAK,WAAW,kBAAkB;AACxC,UAAM,KAAK,WAAW,oBAAoB;AAC1C,UAAM,KAAK,WAAW,mBAAmB;AACzC,UAAM,KAAK,WAAW,aAAa;AACnC,UAAM,KAAK,WAAW,WAAW;AACjC,UAAM,KAAK,WAAW,iBAAiB;AACvC,UAAM,KAAK,WAAW,mBAAmB;AACzC,UAAM,KAAK,WAAW,YAAY;AAAA,EACnC;AACD,WAAS,2BAA2B,OAAO,YAAY;AACrD,mBAAe,WAAU;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,UAAM,KAAK,eAAe,IAAI;AAC9B,mBAAe,WAAU;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,CAAC;AACzB,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,QAAI,WAAW;AACb,qBAAe,OAAO,EAAE;AAC1B,UAAM,KAAK,eAAe,IAAI;AAAA,EAC/B;AACD,WAAS,YAAY,UAAU;AAC7B,UAAM,WAAW,UAAU,SAAS;AACpC,QAAI;AACJ,QAAI,UAAU;AACZ,YAAM,SAAS,UAAU;AACzB,iBAAW,cAAc,MAAM,OAAO,QAAQ;AAAA,IACpD,OAAW;AACL,iBAAW,SAAS;AAAA,IACrB;AACD,WAAO;AAAA,EACR;AACD,WAAS,eAAe,YAAY,UAAU;AAC5C,QAAI;AACJ,aAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,KAAK;AACjD,YAAM,qBAAqB,SAAS;AACpC,UAAI,mBAAmB,aAAa,UAAU;AAC5C,kBAAU;AACV,UAAE,QAAQ;AACV;AAAA,MACD;AAAA,IACF;AACD,QAAI,YAAY,QAAQ;AACtB,gBAAU,IAAI,aAAa,UAAU,UAAU,YAAY,aAAa;AACxE,eAAS,KAAK,OAAO;AAAA,IACtB;AACD,WAAO;AAAA,EACR;AACD,WAAS,eAAe,SAAS;AAC/B,QAAI,EAAE,QAAQ,cAAc,GAAG;AAC7B,YAAM,IAAI,SAAS,QAAQ,OAAO;AAClC,eAAS,KAAK,SAAS,SAAS,SAAS;AACzC,eAAS,IAAG;AACZ,cAAQ,QAAO;AAAA,IAChB;AAAA,EACF;AACD,WAAS,mBAAmB,UAAU;AACpC,mBAAe,OAAO,QAAQ;AAAA,EAC/B;AACD,WAAS,UAAU;AACjB,mBAAe,QAAO;AAAA,EACvB;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,kBAAkB;AACzB,MAAI,aAA6B,oBAAI;AACrC,WAAShD,KAAI,QAAQ;AACnB,QAAI,MAAM,WAAW,IAAI,MAAM;AAC/B,QAAI,QAAQ,QAAQ;AAClB,YAAM,CAAA;AACN,iBAAW,IAAI,QAAQ,GAAG;AAAA,IAC3B;AACD,WAAO;AAAA,EACR;AACD,WAAS,OAAO,QAAQ;AACtB,eAAW,OAAO,MAAM;AAAA,EACzB;AACD,WAAS,OAAO,QAAQ,KAAK,OAAO;AAClC,eAAW,IAAI,MAAM,EAAE,OAAO;AAAA,EAC/B;AACD,WAAS,UAAU;AACjB,iBAA6B,oBAAI;EAClC;AACD,SAAO;AAAA,IACL,KAAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,kBAAkB,GAAG,GAAG;AAC/B,MAAI,EAAE,eAAe,EAAE,YAAY;AACjC,WAAO,EAAE,aAAa,EAAE;AAAA,EACzB,WAAU,EAAE,gBAAgB,EAAE,aAAa;AAC1C,WAAO,EAAE,cAAc,EAAE;AAAA,EAC7B,WAAa,EAAE,SAAS,OAAO,EAAE,SAAS,IAAI;AAC1C,WAAO,EAAE,SAAS,KAAK,EAAE,SAAS;AAAA,EACnC,WAAU,EAAE,MAAM,EAAE,GAAG;AACtB,WAAO,EAAE,IAAI,EAAE;AAAA,EACnB,OAAS;AACL,WAAO,EAAE,KAAK,EAAE;AAAA,EACjB;AACH;AACA,SAAS,yBAAyB,GAAG,GAAG;AACtC,MAAI,EAAE,eAAe,EAAE,YAAY;AACjC,WAAO,EAAE,aAAa,EAAE;AAAA,EACzB,WAAU,EAAE,gBAAgB,EAAE,aAAa;AAC1C,WAAO,EAAE,cAAc,EAAE;AAAA,EAC1B,WAAU,EAAE,MAAM,EAAE,GAAG;AACtB,WAAO,EAAE,IAAI,EAAE;AAAA,EACnB,OAAS;AACL,WAAO,EAAE,KAAK,EAAE;AAAA,EACjB;AACH;AACA,SAAS,kBAAkB;AACzB,QAAM,cAAc,CAAA;AACpB,MAAI,mBAAmB;AACvB,QAAM,SAAS,CAAA;AACf,QAAM,eAAe,CAAA;AACrB,QAAM,cAAc,CAAA;AACpB,WAAS,OAAO;AACd,uBAAmB;AACnB,WAAO,SAAS;AAChB,iBAAa,SAAS;AACtB,gBAAY,SAAS;AAAA,EACtB;AACD,WAAS,kBAAkB,QAAQ,UAAU,UAAU,YAAY,GAAG,OAAO;AAC3E,QAAI,aAAa,YAAY;AAC7B,QAAI,eAAe,QAAQ;AACzB,mBAAa;AAAA,QACX,IAAI,OAAO;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAa,OAAO;AAAA,QACpB;AAAA,QACA;AAAA,MACR;AACM,kBAAY,oBAAoB;AAAA,IACtC,OAAW;AACL,iBAAW,KAAK,OAAO;AACvB,iBAAW,SAAS;AACpB,iBAAW,WAAW;AACtB,iBAAW,WAAW;AACtB,iBAAW,aAAa;AACxB,iBAAW,cAAc,OAAO;AAChC,iBAAW,IAAI;AACf,iBAAW,QAAQ;AAAA,IACpB;AACD;AACA,WAAO;AAAA,EACR;AACD,WAASmD,MAAK,QAAQ,UAAU,UAAU,YAAY,GAAG,OAAO;AAC9D,UAAM,aAAa,kBAAkB,QAAQ,UAAU,UAAU,YAAY,GAAG,KAAK;AACrF,QAAI,SAAS,eAAe,GAAG;AAC7B,mBAAa,KAAK,UAAU;AAAA,IAClC,WAAe,SAAS,gBAAgB,MAAM;AACxC,kBAAY,KAAK,UAAU;AAAA,IACjC,OAAW;AACL,aAAO,KAAK,UAAU;AAAA,IACvB;AAAA,EACF;AACD,WAAS,QAAQ,QAAQ,UAAU,UAAU,YAAY,GAAG,OAAO;AACjE,UAAM,aAAa,kBAAkB,QAAQ,UAAU,UAAU,YAAY,GAAG,KAAK;AACrF,QAAI,SAAS,eAAe,GAAG;AAC7B,mBAAa,QAAQ,UAAU;AAAA,IACrC,WAAe,SAAS,gBAAgB,MAAM;AACxC,kBAAY,QAAQ,UAAU;AAAA,IACpC,OAAW;AACL,aAAO,QAAQ,UAAU;AAAA,IAC1B;AAAA,EACF;AACD,WAASC,MAAK,kBAAkB,uBAAuB;AACrD,QAAI,OAAO,SAAS;AAClB,aAAO,KAAK,oBAAoB,iBAAiB;AACnD,QAAI,aAAa,SAAS;AACxB,mBAAa,KAAK,yBAAyB,wBAAwB;AACrE,QAAI,YAAY,SAAS;AACvB,kBAAY,KAAK,yBAAyB,wBAAwB;AAAA,EACrE;AACD,WAAS,SAAS;AAChB,aAAS,IAAI,kBAAkB,KAAK,YAAY,QAAQ,IAAI,IAAI,KAAK;AACnE,YAAM,aAAa,YAAY;AAC/B,UAAI,WAAW,OAAO;AACpB;AACF,iBAAW,KAAK;AAChB,iBAAW,SAAS;AACpB,iBAAW,WAAW;AACtB,iBAAW,WAAW;AACtB,iBAAW,QAAQ;AAAA,IACpB;AAAA,EACF;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAAD;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAAC;AAAA,EACJ;AACA;AACA,SAAS,mBAAmB;AAC1B,MAAI,QAAwB,oBAAI;AAChC,WAASpD,KAAI,OAAO,iBAAiB;AACnC,QAAI;AACJ,QAAI,MAAM,IAAI,KAAK,MAAM,OAAO;AAC9B,aAAO,IAAI;AACX,YAAM,IAAI,OAAO,CAAC,IAAI,CAAC;AAAA,IAC7B,OAAW;AACL,UAAI,mBAAmB,MAAM,IAAI,KAAK,EAAE,QAAQ;AAC9C,eAAO,IAAI;AACX,cAAM,IAAI,KAAK,EAAE,KAAK,IAAI;AAAA,MAClC,OAAa;AACL,eAAO,MAAM,IAAI,KAAK,EAAE;AAAA,MACzB;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,WAAS,UAAU;AACjB,YAAwB,oBAAI;EAC7B;AACD,SAAO;AAAA,IACL,KAAAA;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,gBAAgB;AACvB,QAAM,SAAS,CAAA;AACf,SAAO;AAAA,IACL,KAAK,SAAS,OAAO;AACnB,UAAI,OAAO,MAAM,QAAQ,QAAQ;AAC/B,eAAO,OAAO,MAAM;AAAA,MACrB;AACD,UAAI;AACJ,cAAQ,MAAM,MAAI;AAAA,QAChB,KAAK;AACH,qBAAW;AAAA,YACT,WAAW,IAAI2C,UAAS;AAAA,YACxB,OAAO,IAAI,MAAO;AAAA,UAC9B;AACU;AAAA,QACF,KAAK;AACH,qBAAW;AAAA,YACT,UAAU,IAAIA,UAAS;AAAA,YACvB,WAAW,IAAIA,UAAS;AAAA,YACxB,OAAO,IAAI,MAAO;AAAA,YAClB,UAAU;AAAA,YACV,SAAS;AAAA,YACT,aAAa;AAAA,YACb,OAAO;AAAA,UACnB;AACU;AAAA,QACF,KAAK;AACH,qBAAW;AAAA,YACT,UAAU,IAAIA,UAAS;AAAA,YACvB,OAAO,IAAI,MAAO;AAAA,YAClB,UAAU;AAAA,YACV,OAAO;AAAA,UACnB;AACU;AAAA,QACF,KAAK;AACH,qBAAW;AAAA,YACT,WAAW,IAAIA,UAAS;AAAA,YACxB,UAAU,IAAI,MAAO;AAAA,YACrB,aAAa,IAAI,MAAO;AAAA,UACpC;AACU;AAAA,QACF,KAAK;AACH,qBAAW;AAAA,YACT,OAAO,IAAI,MAAO;AAAA,YAClB,UAAU,IAAIA,UAAS;AAAA,YACvB,WAAW,IAAIA,UAAS;AAAA,YACxB,YAAY,IAAIA,UAAS;AAAA,UACrC;AACU;AAAA,MACH;AACD,aAAO,MAAM,MAAM;AACnB,aAAO;AAAA,IACR;AAAA,EACL;AACA;AACA,SAAS,sBAAsB;AAC7B,QAAM,SAAS,CAAA;AACf,SAAO;AAAA,IACL,KAAK,SAAS,OAAO;AACnB,UAAI,OAAO,MAAM,QAAQ,QAAQ;AAC/B,eAAO,OAAO,MAAM;AAAA,MACrB;AACD,UAAI;AACJ,cAAQ,MAAM,MAAI;AAAA,QAChB,KAAK;AACH,qBAAW;AAAA,YACT,YAAY;AAAA,YACZ,kBAAkB;AAAA,YAClB,cAAc;AAAA,YACd,eAAe,IAAIF,UAAS;AAAA,UACxC;AACU;AAAA,QACF,KAAK;AACH,qBAAW;AAAA,YACT,YAAY;AAAA,YACZ,kBAAkB;AAAA,YAClB,cAAc;AAAA,YACd,eAAe,IAAIA,UAAS;AAAA,UACxC;AACU;AAAA,QACF,KAAK;AACH,qBAAW;AAAA,YACT,YAAY;AAAA,YACZ,kBAAkB;AAAA,YAClB,cAAc;AAAA,YACd,eAAe,IAAIA,UAAS;AAAA,YAC5B,kBAAkB;AAAA,YAClB,iBAAiB;AAAA,UAC7B;AACU;AAAA,MACH;AACD,aAAO,MAAM,MAAM;AACnB,aAAO;AAAA,IACR;AAAA,EACL;AACA;AACA,IAAI,cAAc;AAClB,SAAS,yBAAyB,QAAQ,QAAQ;AAChD,UAAQ,OAAO,aAAa,IAAI,MAAM,OAAO,aAAa,IAAI;AAChE;AACA,SAAS,YAAY,YAAY,cAAc;AAC7C,QAAM,QAAQ,IAAI;AAClB,QAAM,cAAc;AACpB,QAAM,QAAQ;AAAA,IACZ,SAAS;AAAA,IACT,MAAM;AAAA,MACJ,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,uBAAuB;AAAA,MACvB,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,IACjB;AAAA,IACD,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,OAAO,CAAE;AAAA,IACT,aAAa,CAAE;AAAA,IACf,mBAAmB,CAAE;AAAA,IACrB,sBAAsB,CAAE;AAAA,IACxB,yBAAyB,CAAE;AAAA,IAC3B,MAAM,CAAE;AAAA,IACR,YAAY,CAAE;AAAA,IACd,eAAe,CAAE;AAAA,IACjB,kBAAkB,CAAE;AAAA,IACpB,UAAU,CAAE;AAAA,IACZ,cAAc;AAAA,IACd,cAAc;AAAA,IACd,OAAO,CAAE;AAAA,IACT,aAAa,CAAE;AAAA,IACf,gBAAgB,CAAE;AAAA,IAClB,mBAAmB,CAAE;AAAA,IACrB,MAAM,CAAE;AAAA,EACZ;AACE,WAAS,IAAI,GAAG,IAAI,GAAG;AACrB,UAAM,MAAM,KAAK,IAAIE,UAAS,CAAA;AAChC,QAAM,UAAU,IAAIA;AACpB,QAAM,UAAU,IAAI;AACpB,QAAM,WAAW,IAAI;AACrB,WAAS,MAAM,QAAQ,yBAAyB;AAC9C,QAAI,IAAI,GAAG,IAAI,GAAG,IAAI;AACtB,aAAS,IAAI,GAAG,IAAI,GAAG;AACrB,YAAM,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC;AAC5B,QAAI,oBAAoB;AACxB,QAAI,cAAc;AAClB,QAAI,aAAa;AACjB,QAAI,iBAAiB;AACrB,QAAI,aAAa;AACjB,QAAI,wBAAwB;AAC5B,QAAI,kBAAkB;AACtB,QAAI,iBAAiB;AACrB,WAAO,KAAK,wBAAwB;AACpC,UAAM,cAAc,4BAA4B,OAAO,KAAK,KAAK;AACjE,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,YAAM,QAAQ,OAAO;AACrB,YAAM,QAAQ,MAAM;AACpB,YAAM,YAAY,MAAM;AACxB,YAAM,WAAW,MAAM;AACvB,YAAM,YAAY,MAAM,UAAU,MAAM,OAAO,MAAM,MAAM,OAAO,IAAI,UAAU;AAChF,UAAI,MAAM,gBAAgB;AACxB,aAAK,MAAM,IAAI,YAAY;AAC3B,aAAK,MAAM,IAAI,YAAY;AAC3B,aAAK,MAAM,IAAI,YAAY;AAAA,MACnC,WAAiB,MAAM,cAAc;AAC7B,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gBAAM,MAAM,GAAG,gBAAgB,MAAM,GAAG,aAAa,IAAI,SAAS;AAAA,QACnE;AAAA,MACT,WAAiB,MAAM,oBAAoB;AACnC,cAAM,WAAW,MAAM,IAAI,KAAK;AAChC,iBAAS,MAAM,KAAK,MAAM,KAAK,EAAE,eAAe,MAAM,YAAY,WAAW;AAC7E,YAAI,MAAM,YAAY;AACpB,gBAAM,SAAS,MAAM;AACrB,gBAAM,iBAAiB,YAAY,IAAI,KAAK;AAC5C,yBAAe,aAAa,OAAO;AACnC,yBAAe,mBAAmB,OAAO;AACzC,yBAAe,eAAe,OAAO;AACrC,yBAAe,gBAAgB,OAAO;AACtC,gBAAM,kBAAkB,qBAAqB;AAC7C,gBAAM,qBAAqB,qBAAqB;AAChD,gBAAM,wBAAwB,qBAAqB,MAAM,OAAO;AAChE;AAAA,QACD;AACD,cAAM,YAAY,qBAAqB;AACvC;AAAA,MACR,WAAiB,MAAM,aAAa;AAC5B,cAAM,WAAW,MAAM,IAAI,KAAK;AAChC,iBAAS,SAAS,sBAAsB,MAAM,WAAW;AACzD,iBAAS,MAAM,KAAK,KAAK,EAAE,eAAe,YAAY,WAAW;AACjE,iBAAS,WAAW;AACpB,iBAAS,UAAU,KAAK,IAAI,MAAM,KAAK;AACvC,iBAAS,cAAc,KAAK,IAAI,MAAM,SAAS,IAAI,MAAM,SAAS;AAClE,iBAAS,QAAQ,MAAM;AACvB,YAAI,MAAM,YAAY;AACpB,gBAAM,SAAS,MAAM;AACrB,gBAAM,iBAAiB,YAAY,IAAI,KAAK;AAC5C,yBAAe,aAAa,OAAO;AACnC,yBAAe,mBAAmB,OAAO;AACzC,yBAAe,eAAe,OAAO;AACrC,yBAAe,gBAAgB,OAAO;AACtC,gBAAM,WAAW,cAAc;AAC/B,gBAAM,cAAc,cAAc;AAClC,gBAAM,iBAAiB,cAAc,MAAM,OAAO;AAClD;AAAA,QACD;AACD,cAAM,KAAK,cAAc;AACzB;AAAA,MACR,WAAiB,MAAM,iBAAiB;AAChC,cAAM,WAAW,MAAM,IAAI,KAAK;AAChC,iBAAS,MAAM,KAAK,KAAK,EAAE,eAAe,SAAS;AACnD,iBAAS,UAAU,IAAI,MAAM,QAAQ,KAAK,GAAG,CAAC;AAC9C,iBAAS,WAAW,IAAI,GAAG,MAAM,SAAS,KAAK,CAAC;AAChD,cAAM,SAAS,kBAAkB;AACjC;AAAA,MACR,WAAiB,MAAM,cAAc;AAC7B,cAAM,WAAW,MAAM,IAAI,KAAK;AAChC,iBAAS,MAAM,KAAK,MAAM,KAAK,EAAE,eAAe,MAAM,YAAY,WAAW;AAC7E,iBAAS,WAAW,MAAM;AAC1B,iBAAS,QAAQ,MAAM;AACvB,YAAI,MAAM,YAAY;AACpB,gBAAM,SAAS,MAAM;AACrB,gBAAM,iBAAiB,YAAY,IAAI,KAAK;AAC5C,yBAAe,aAAa,OAAO;AACnC,yBAAe,mBAAmB,OAAO;AACzC,yBAAe,eAAe,OAAO;AACrC,yBAAe,gBAAgB,OAAO;AACtC,yBAAe,mBAAmB,OAAO,OAAO;AAChD,yBAAe,kBAAkB,OAAO,OAAO;AAC/C,gBAAM,YAAY,eAAe;AACjC,gBAAM,eAAe,eAAe;AACpC,gBAAM,kBAAkB,eAAe,MAAM,OAAO;AACpD;AAAA,QACD;AACD,cAAM,MAAM,eAAe;AAC3B;AAAA,MACR,WAAiB,MAAM,mBAAmB;AAClC,cAAM,WAAW,MAAM,IAAI,KAAK;AAChC,iBAAS,SAAS,KAAK,MAAM,KAAK,EAAE,eAAe,YAAY,WAAW;AAC1E,iBAAS,YAAY,KAAK,MAAM,WAAW,EAAE,eAAe,YAAY,WAAW;AACnF,cAAM,KAAK,cAAc;AACzB;AAAA,MACD;AAAA,IACF;AACD,QAAI,iBAAiB,GAAG;AACtB,UAAI,aAAa,UAAU;AACzB,cAAM,eAAe,YAAY;AACjC,cAAM,eAAe,YAAY;AAAA,MACzC,OAAa;AACL,YAAI,WAAW,IAAI,0BAA0B,MAAM,MAAM;AACvD,gBAAM,eAAe,YAAY;AACjC,gBAAM,eAAe,YAAY;AAAA,QAClC,WAAU,WAAW,IAAI,+BAA+B,MAAM,MAAM;AACnE,gBAAM,eAAe,YAAY;AACjC,gBAAM,eAAe,YAAY;AAAA,QAC3C,OAAe;AACL,kBAAQ,MAAM,6EAA6E;AAAA,QAC5F;AAAA,MACF;AAAA,IACF;AACD,UAAM,QAAQ,KAAK;AACnB,UAAM,QAAQ,KAAK;AACnB,UAAM,QAAQ,KAAK;AACnB,UAAM,OAAO,MAAM;AACnB,QAAI,KAAK,sBAAsB,qBAAqB,KAAK,gBAAgB,eAAe,KAAK,eAAe,cAAc,KAAK,mBAAmB,kBAAkB,KAAK,eAAe,cAAc,KAAK,0BAA0B,yBAAyB,KAAK,oBAAoB,mBAAmB,KAAK,mBAAmB,gBAAgB;AAChV,YAAM,YAAY,SAAS;AAC3B,YAAM,KAAK,SAAS;AACpB,YAAM,SAAS,SAAS;AACxB,YAAM,MAAM,SAAS;AACrB,YAAM,KAAK,SAAS;AACpB,YAAM,kBAAkB,SAAS;AACjC,YAAM,qBAAqB,SAAS;AACpC,YAAM,YAAY,SAAS;AAC3B,YAAM,eAAe,SAAS;AAC9B,YAAM,WAAW,SAAS;AAC1B,YAAM,cAAc,SAAS;AAC7B,YAAM,wBAAwB,SAAS;AACvC,YAAM,kBAAkB,SAAS;AACjC,YAAM,iBAAiB,SAAS;AAChC,WAAK,oBAAoB;AACzB,WAAK,cAAc;AACnB,WAAK,aAAa;AAClB,WAAK,iBAAiB;AACtB,WAAK,aAAa;AAClB,WAAK,wBAAwB;AAC7B,WAAK,kBAAkB;AACvB,WAAK,iBAAiB;AACtB,YAAM,UAAU;AAAA,IACjB;AAAA,EACF;AACD,WAAS,UAAU,QAAQC,SAAQ;AACjC,QAAI,oBAAoB;AACxB,QAAI,cAAc;AAClB,QAAI,aAAa;AACjB,QAAI,iBAAiB;AACrB,QAAI,aAAa;AACjB,UAAM,aAAaA,QAAO;AAC1B,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,YAAM,QAAQ,OAAO;AACrB,UAAI,MAAM,oBAAoB;AAC5B,cAAM,WAAW,MAAM,YAAY;AACnC,iBAAS,UAAU,sBAAsB,MAAM,WAAW;AAC1D,gBAAQ,sBAAsB,MAAM,OAAO,WAAW;AACtD,iBAAS,UAAU,IAAI,OAAO;AAC9B,iBAAS,UAAU,mBAAmB,UAAU;AAChD;AAAA,MACR,WAAiB,MAAM,aAAa;AAC5B,cAAM,WAAW,MAAM,KAAK;AAC5B,iBAAS,SAAS,sBAAsB,MAAM,WAAW;AACzD,iBAAS,SAAS,aAAa,UAAU;AACzC,iBAAS,UAAU,sBAAsB,MAAM,WAAW;AAC1D,gBAAQ,sBAAsB,MAAM,OAAO,WAAW;AACtD,iBAAS,UAAU,IAAI,OAAO;AAC9B,iBAAS,UAAU,mBAAmB,UAAU;AAChD;AAAA,MACR,WAAiB,MAAM,iBAAiB;AAChC,cAAM,WAAW,MAAM,SAAS;AAChC,iBAAS,SAAS,sBAAsB,MAAM,WAAW;AACzD,iBAAS,SAAS,aAAa,UAAU;AACzC,iBAAS,SAAQ;AACjB,gBAAQ,KAAK,MAAM,WAAW;AAC9B,gBAAQ,YAAY,UAAU;AAC9B,iBAAS,gBAAgB,OAAO;AAChC,iBAAS,UAAU,IAAI,MAAM,QAAQ,KAAK,GAAG,CAAC;AAC9C,iBAAS,WAAW,IAAI,GAAG,MAAM,SAAS,KAAK,CAAC;AAChD,iBAAS,UAAU,aAAa,QAAQ;AACxC,iBAAS,WAAW,aAAa,QAAQ;AACzC;AAAA,MACR,WAAiB,MAAM,cAAc;AAC7B,cAAM,WAAW,MAAM,MAAM;AAC7B,iBAAS,SAAS,sBAAsB,MAAM,WAAW;AACzD,iBAAS,SAAS,aAAa,UAAU;AACzC;AAAA,MACR,WAAiB,MAAM,mBAAmB;AAClC,cAAM,WAAW,MAAM,KAAK;AAC5B,iBAAS,UAAU,sBAAsB,MAAM,WAAW;AAC1D,iBAAS,UAAU,mBAAmB,UAAU;AAChD;AAAA,MACD;AAAA,IACF;AAAA,EACF;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,iBAAiB,YAAY,cAAc;AAClD,QAAM,SAAS,IAAI,YAAY,YAAY,YAAY;AACvD,QAAM,cAAc,CAAA;AACpB,QAAM,eAAe,CAAA;AACrB,WAAS,OAAO;AACd,gBAAY,SAAS;AACrB,iBAAa,SAAS;AAAA,EACvB;AACD,WAAS,UAAU,OAAO;AACxB,gBAAY,KAAK,KAAK;AAAA,EACvB;AACD,WAAS,WAAW,aAAa;AAC/B,iBAAa,KAAK,WAAW;AAAA,EAC9B;AACD,WAAS,YAAY,yBAAyB;AAC5C,WAAO,MAAM,aAAa,uBAAuB;AAAA,EAClD;AACD,WAAS,gBAAgBA,SAAQ;AAC/B,WAAO,UAAU,aAAaA,OAAM;AAAA,EACrC;AACD,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,kBAAkB,YAAY,cAAc;AACnD,MAAI,eAA+B,oBAAI;AACvC,WAAS5C,KAAI,OAAO,kBAAkB,GAAG;AACvC,QAAI;AACJ,QAAI,aAAa,IAAI,KAAK,MAAM,OAAO;AACrC,oBAAc,IAAI,iBAAiB,YAAY,YAAY;AAC3D,mBAAa,IAAI,OAAO,CAAC,WAAW,CAAC;AAAA,IAC3C,OAAW;AACL,UAAI,mBAAmB,aAAa,IAAI,KAAK,EAAE,QAAQ;AACrD,sBAAc,IAAI,iBAAiB,YAAY,YAAY;AAC3D,qBAAa,IAAI,KAAK,EAAE,KAAK,WAAW;AAAA,MAChD,OAAa;AACL,sBAAc,aAAa,IAAI,KAAK,EAAE;AAAA,MACvC;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,WAAS,UAAU;AACjB,mBAA+B,oBAAI;EACpC;AACD,SAAO;AAAA,IACL,KAAAA;AAAA,IACA;AAAA,EACJ;AACA;AACA,MAAM,0BAA0B,WAAW;AAAA,EACzC,YAAY,YAAY;AACtB;AACA,SAAK,sBAAsB;AAC3B,SAAK,OAAO;AACZ,SAAK,eAAe;AACpB,SAAK,MAAM;AACX,SAAK,WAAW;AAChB,SAAK,kBAAkB;AACvB,SAAK,oBAAoB;AACzB,SAAK,mBAAmB;AACxB,SAAK,YAAY;AACjB,SAAK,qBAAqB;AAC1B,SAAK,UAAU,UAAU;AAAA,EAC1B;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,eAAe,OAAO;AAC3B,SAAK,MAAM,OAAO;AAClB,SAAK,WAAW,OAAO;AACvB,SAAK,kBAAkB,OAAO;AAC9B,SAAK,oBAAoB,OAAO;AAChC,SAAK,mBAAmB,OAAO;AAC/B,SAAK,YAAY,OAAO;AACxB,SAAK,qBAAqB,OAAO;AACjC,WAAO;AAAA,EACR;AACH;AACA,MAAM,6BAA6B,WAAW;AAAA,EAC5C,YAAY,YAAY;AACtB;AACA,SAAK,yBAAyB;AAC9B,SAAK,OAAO;AACZ,SAAK,oBAAoB,IAAI2C;AAC7B,SAAK,eAAe;AACpB,SAAK,cAAc;AACnB,SAAK,MAAM;AACX,SAAK,WAAW;AAChB,SAAK,kBAAkB;AACvB,SAAK,oBAAoB;AACzB,SAAK,mBAAmB;AACxB,SAAK,UAAU,UAAU;AAAA,EAC1B;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,kBAAkB,KAAK,OAAO,iBAAiB;AACpD,SAAK,eAAe,OAAO;AAC3B,SAAK,cAAc,OAAO;AAC1B,SAAK,MAAM,OAAO;AAClB,SAAK,WAAW,OAAO;AACvB,SAAK,kBAAkB,OAAO;AAC9B,SAAK,oBAAoB,OAAO;AAChC,SAAK,mBAAmB,OAAO;AAC/B,WAAO;AAAA,EACR;AACH;AACA,MAAM,SAAS;AACf,MAAM,WAAW;AACjB,SAAS,eAAe,WAAW,UAAU,eAAe;AAC1D,MAAI,WAAW,IAAI;AACnB,QAAM,iBAAiB,IAAIF,UAAS,GAAE,gBAAgB,IAAIA,UAAS,GAAE,YAAY,IAAI,QAAS,GAAE,iBAAiB,IAAI,kBAAkB,EAAE,cAAc,iBAAgB,CAAE,GAAG,oBAAoB,IAAI,wBAAwB,iBAAiB,CAAE,GAAE,kBAAkB,cAAc;AACjR,QAAM,aAAa,EAAE,GAAG,UAAU,GAAG,WAAW,GAAG;AACnD,QAAM,yBAAyB,IAAI,eAAe;AAAA,IAChD,SAAS;AAAA,MACP,aAAa;AAAA,IACd;AAAA,IACD,UAAU;AAAA,MACR,aAAa,EAAE,OAAO,KAAM;AAAA,MAC5B,YAAY,EAAE,OAAO,IAAIA,YAAW;AAAA,MACpC,QAAQ,EAAE,OAAO,EAAG;AAAA,IACrB;AAAA,IACD,cAAc;AAAA,IACd,gBAAgB;AAAA,EACpB,CAAG;AACD,QAAM,2BAA2B,uBAAuB;AACxD,2BAAyB,QAAQ,kBAAkB;AACnD,QAAM,gBAAgB,IAAI;AAC1B,gBAAc;AAAA,IACZ;AAAA,IACA,IAAI;AAAA,MACF,IAAI,aAAa,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC;AAAA,MACtD;AAAA,IACD;AAAA,EACL;AACE,QAAM,iBAAiB,IAAI,KAAK,eAAe,sBAAsB;AACrE,QAAM,QAAQ;AACd,OAAK,UAAU;AACf,OAAK,aAAa;AAClB,OAAK,cAAc;AACnB,OAAK,OAAO;AACZ,OAAK,SAAS,SAAS,QAAQ,OAAOG,SAAQ;AAC5C,QAAI,MAAM,YAAY;AACpB;AACF,QAAI,MAAM,eAAe,SAAS,MAAM,gBAAgB;AACtD;AACF,QAAI,OAAO,WAAW;AACpB;AACF,UAAM,sBAAsB,UAAU;AACtC,UAAM,iBAAiB,UAAU;AACjC,UAAM,oBAAoB,UAAU;AACpC,UAAM,SAAS,UAAU;AACzB,WAAO,YAAY,UAAU;AAC7B,WAAO,QAAQ,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC;AACxC,WAAO,QAAQ,MAAM,QAAQ,IAAI;AACjC,WAAO,eAAe,KAAK;AAC3B,aAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK;AAC/C,YAAM,QAAQ,OAAO;AACrB,YAAM,SAAS,MAAM;AACrB,UAAI,WAAW,QAAQ;AACrB,gBAAQ,KAAK,yBAAyB,OAAO,gBAAgB;AAC7D;AAAA,MACD;AACD,UAAI,OAAO,eAAe,SAAS,OAAO,gBAAgB;AACxD;AACF,qBAAe,KAAK,OAAO,OAAO;AAClC,YAAM,qBAAqB,OAAO;AAClC,qBAAe,SAAS,kBAAkB;AAC1C,oBAAc,KAAK,OAAO,OAAO;AACjC,UAAI,eAAe,IAAI,mBAAmB,eAAe,IAAI,iBAAiB;AAC5E,YAAI,eAAe,IAAI,iBAAiB;AACtC,wBAAc,IAAI,KAAK,MAAM,kBAAkB,mBAAmB,CAAC;AACnE,yBAAe,IAAI,cAAc,IAAI,mBAAmB;AACxD,iBAAO,QAAQ,IAAI,cAAc;AAAA,QAClC;AACD,YAAI,eAAe,IAAI,iBAAiB;AACtC,wBAAc,IAAI,KAAK,MAAM,kBAAkB,mBAAmB,CAAC;AACnE,yBAAe,IAAI,cAAc,IAAI,mBAAmB;AACxD,iBAAO,QAAQ,IAAI,cAAc;AAAA,QAClC;AAAA,MACF;AACD,UAAI,OAAO,QAAQ,MAAM;AACvB,cAAM,OAAO,KAAK,SAAS,eAAe,EAAE,WAAW,eAAe,WAAW,cAAe,IAAG;AACnG,eAAO,MAAM,IAAI,kBAAkB,eAAe,GAAG,eAAe,GAAG,IAAI;AAC3E,eAAO,IAAI,QAAQ,OAAO,MAAM,OAAO;AACvC,eAAO,OAAO;MACf;AACD,gBAAU,gBAAgB,OAAO,GAAG;AACpC,gBAAU,MAAK;AACf,YAAM,gBAAgB,OAAO;AAC7B,eAAS,KAAK,GAAG,KAAK,eAAe,MAAM;AACzC,cAAM,WAAW,OAAO,YAAY,EAAE;AACtC,kBAAU;AAAA,UACR,cAAc,IAAI,SAAS;AAAA,UAC3B,cAAc,IAAI,SAAS;AAAA,UAC3B,cAAc,IAAI,SAAS;AAAA,UAC3B,cAAc,IAAI,SAAS;AAAA,QACrC;AACQ,eAAO,SAAS,SAAS;AACzB,eAAO,eAAe,OAAO,EAAE;AAC/B,mBAAW,OAAO;AAClB,qBAAa,OAAOA,SAAQ,OAAO,QAAQ,OAAO,KAAK,IAAI;AAAA,MAC5D;AACD,UAAI,OAAO,uBAAuB,QAAQ,KAAK,SAAS,cAAc;AACpE,gBAAQ,QAAQA,OAAM;AAAA,MACvB;AACD,aAAO,cAAc;AAAA,IACtB;AACD,UAAM,cAAc;AACpB,cAAU,gBAAgB,qBAAqB,gBAAgB,iBAAiB;AAAA,EACpF;AACE,WAAS,QAAQ,QAAQA,SAAQ;AAC/B,UAAM,WAAW,SAAS,OAAO,cAAc;AAC/C,QAAI,uBAAuB,QAAQ,gBAAgB,OAAO,aAAa;AACrE,6BAAuB,QAAQ,cAAc,OAAO;AACpD,+BAAyB,QAAQ,cAAc,OAAO;AACtD,6BAAuB,cAAc;AACrC,+BAAyB,cAAc;AAAA,IACxC;AACD,QAAI,OAAO,YAAY,MAAM;AAC3B,aAAO,UAAU,IAAI,kBAAkB,eAAe,GAAG,eAAe,CAAC;AAAA,IAC1E;AACD,2BAAuB,SAAS,YAAY,QAAQ,OAAO,IAAI;AAC/D,2BAAuB,SAAS,WAAW,QAAQ,OAAO;AAC1D,2BAAuB,SAAS,OAAO,QAAQ,OAAO;AACtD,cAAU,gBAAgB,OAAO,OAAO;AACxC,cAAU,MAAK;AACf,cAAU,mBAAmBA,SAAQ,MAAM,UAAU,wBAAwB,gBAAgB,IAAI;AACjG,6BAAyB,SAAS,YAAY,QAAQ,OAAO,QAAQ;AACrE,6BAAyB,SAAS,WAAW,QAAQ,OAAO;AAC5D,6BAAyB,SAAS,OAAO,QAAQ,OAAO;AACxD,cAAU,gBAAgB,OAAO,GAAG;AACpC,cAAU,MAAK;AACf,cAAU,mBAAmBA,SAAQ,MAAM,UAAU,0BAA0B,gBAAgB,IAAI;AAAA,EACpG;AACD,WAAS,iBAAiB,QAAQ,UAAU,OAAO,kBAAkB,iBAAiB,MAAM;AAC1F,QAAI,SAAS;AACb,UAAM,iBAAiB,MAAM,iBAAiB,OAAO,OAAO,yBAAyB,OAAO;AAC5F,QAAI,mBAAmB,QAAQ;AAC7B,eAAS;AAAA,IACf,OAAW;AACL,eAAS,MAAM,iBAAiB,OAAO,oBAAoB;AAAA,IAC5D;AACD,QAAI,UAAU,wBAAwB,SAAS,gBAAgB,QAAQ,MAAM,QAAQ,SAAS,cAAc,KAAK,SAAS,eAAe,WAAW,KAAK,SAAS,mBAAmB,SAAS,sBAAsB,KAAK,SAAS,YAAY,SAAS,YAAY,GAAG;AACpQ,YAAM,OAAO,OAAO,MAAM,OAAO,SAAS;AAC1C,UAAI,sBAAsB,eAAe;AACzC,UAAI,wBAAwB,QAAQ;AAClC,8BAAsB,CAAA;AACtB,uBAAe,QAAQ;AAAA,MACxB;AACD,UAAI,iBAAiB,oBAAoB;AACzC,UAAI,mBAAmB,QAAQ;AAC7B,yBAAiB,OAAO;AACxB,4BAAoB,QAAQ;AAAA,MAC7B;AACD,eAAS;AAAA,IACV;AACD,WAAO,UAAU,SAAS;AAC1B,WAAO,YAAY,SAAS;AAC5B,QAAI,SAAS,cAAc;AACzB,aAAO,OAAO,SAAS,eAAe,OAAO,SAAS,aAAa,SAAS;AAAA,IAClF,OAAW;AACL,aAAO,OAAO,SAAS,eAAe,OAAO,SAAS,aAAa,WAAW,SAAS;AAAA,IACxF;AACD,WAAO,WAAW,SAAS;AAC3B,WAAO,YAAY,SAAS;AAC5B,WAAO,cAAc,SAAS;AAC9B,WAAO,iBAAiB,SAAS;AACjC,WAAO,mBAAmB,SAAS;AACnC,WAAO,kBAAkB,SAAS;AAClC,WAAO,oBAAoB,SAAS;AACpC,WAAO,mBAAmB,SAAS;AACnC,WAAO,qBAAqB,SAAS;AACrC,WAAO,YAAY,SAAS;AAC5B,QAAI,MAAM,iBAAiB,QAAQ,OAAO,2BAA2B,MAAM;AACzE,aAAO,kBAAkB,sBAAsB,MAAM,WAAW;AAChE,aAAO,eAAe;AACtB,aAAO,cAAc;AAAA,IACtB;AACD,WAAO;AAAA,EACR;AACD,WAAS,aAAa,QAAQA,SAAQ,cAAc,OAAO,MAAM;AAC/D,QAAI,OAAO,YAAY;AACrB;AACF,UAAMS,WAAU,OAAO,OAAO,KAAKT,QAAO,MAAM;AAChD,QAAIS,aAAY,OAAO,UAAU,OAAO,UAAU,OAAO,WAAW;AAClE,WAAK,OAAO,cAAc,OAAO,iBAAiB,SAAS,kBAAkB,CAAC,OAAO,iBAAiB,SAAS,iBAAiB,MAAM,IAAI;AACxI,eAAO,gBAAgB,iBAAiB,aAAa,oBAAoB,OAAO,WAAW;AAC3F,cAAM,WAAW,SAAS,OAAO,MAAM;AACvC,cAAM,WAAW,OAAO;AACxB,YAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,gBAAM,SAAS,SAAS;AACxB,mBAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,IAAI,IAAI,KAAK;AAC/C,kBAAM,QAAQ,OAAO;AACrB,kBAAM,gBAAgB,SAAS,MAAM;AACrC,gBAAI,iBAAiB,cAAc,SAAS;AAC1C,oBAAM,gBAAgB,iBAAiB,QAAQ,eAAe,OAAO,aAAa,MAAM,aAAa,KAAK,IAAI;AAC9G,wBAAU,mBAAmB,cAAc,MAAM,UAAU,eAAe,QAAQ,KAAK;AAAA,YACxF;AAAA,UACF;AAAA,QACX,WAAmB,SAAS,SAAS;AAC3B,gBAAM,gBAAgB,iBAAiB,QAAQ,UAAU,OAAO,aAAa,MAAM,aAAa,KAAK,IAAI;AACzG,oBAAU,mBAAmB,cAAc,MAAM,UAAU,eAAe,QAAQ,IAAI;AAAA,QACvF;AAAA,MACF;AAAA,IACF;AACD,UAAM,WAAW,OAAO;AACxB,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC/C,mBAAa,SAAS,IAAIT,SAAQ,cAAc,OAAO,IAAI;AAAA,IAC5D;AAAA,EACF;AACH;AACA,SAAS,WAAW,IAAI,YAAY,cAAc;AAChD,QAAM,WAAW,aAAa;AAC9B,WAAS,cAAc;AACrB,QAAI,SAAS;AACb,UAAM,QAAQ,IAAI;AAClB,QAAI,mBAAmB;AACvB,UAAM,oBAAoB,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC;AAChD,WAAO;AAAA,MACL,SAAS,SAAS,WAAW;AAC3B,YAAI,qBAAqB,aAAa,CAAC,QAAQ;AAC7C,aAAG,UAAU,WAAW,WAAW,WAAW,SAAS;AACvD,6BAAmB;AAAA,QACpB;AAAA,MACF;AAAA,MACD,WAAW,SAAS,MAAM;AACxB,iBAAS;AAAA,MACV;AAAA,MACD,UAAU,SAAS,GAAG,GAAG,GAAG,GAAG,oBAAoB;AACjD,YAAI,uBAAuB,MAAM;AAC/B,eAAK;AACL,eAAK;AACL,eAAK;AAAA,QACN;AACD,cAAM,IAAI,GAAG,GAAG,GAAG,CAAC;AACpB,YAAI,kBAAkB,OAAO,KAAK,MAAM,OAAO;AAC7C,aAAG,WAAW,GAAG,GAAG,GAAG,CAAC;AACxB,4BAAkB,KAAK,KAAK;AAAA,QAC7B;AAAA,MACF;AAAA,MACD,OAAO,WAAW;AAChB,iBAAS;AACT,2BAAmB;AACnB,0BAAkB,IAAI,IAAI,GAAG,GAAG,CAAC;AAAA,MAClC;AAAA,IACP;AAAA,EACG;AACD,WAAS,cAAc;AACrB,QAAI,SAAS;AACb,QAAI,mBAAmB;AACvB,QAAI,mBAAmB;AACvB,QAAI,oBAAoB;AACxB,WAAO;AAAA,MACL,SAAS,SAAS,WAAW;AAC3B,YAAI,WAAW;AACb,iBAAO,IAAI;AAAA,QACrB,OAAe;AACL,kBAAQ,IAAI;AAAA,QACb;AAAA,MACF;AAAA,MACD,SAAS,SAAS,WAAW;AAC3B,YAAI,qBAAqB,aAAa,CAAC,QAAQ;AAC7C,aAAG,UAAU,SAAS;AACtB,6BAAmB;AAAA,QACpB;AAAA,MACF;AAAA,MACD,SAAS,SAAS,WAAW;AAC3B,YAAI,qBAAqB,WAAW;AAClC,cAAI,WAAW;AACb,oBAAQ,WAAS;AAAA,cACf,KAAK;AACH,mBAAG,UAAU,GAAG;AAChB;AAAA,cACF,KAAK;AACH,mBAAG,UAAU,GAAG;AAChB;AAAA,cACF,KAAK;AACH,mBAAG,UAAU,GAAG;AAChB;AAAA,cACF,KAAK;AACH,mBAAG,UAAU,GAAG;AAChB;AAAA,cACF,KAAK;AACH,mBAAG,UAAU,GAAG;AAChB;AAAA,cACF,KAAK;AACH,mBAAG,UAAU,GAAG;AAChB;AAAA,cACF,KAAK;AACH,mBAAG,UAAU,GAAG;AAChB;AAAA,cACF,KAAK;AACH,mBAAG,UAAU,GAAG;AAChB;AAAA,cACF;AACE,mBAAG,UAAU,GAAG;AAAA,YACnB;AAAA,UACb,OAAiB;AACL,eAAG,UAAU,GAAG;AAAA,UACjB;AACD,6BAAmB;AAAA,QACpB;AAAA,MACF;AAAA,MACD,WAAW,SAAS,MAAM;AACxB,iBAAS;AAAA,MACV;AAAA,MACD,UAAU,SAAS,OAAO;AACxB,YAAI,sBAAsB,OAAO;AAC/B,aAAG,WAAW,KAAK;AACnB,8BAAoB;AAAA,QACrB;AAAA,MACF;AAAA,MACD,OAAO,WAAW;AAChB,iBAAS;AACT,2BAAmB;AACnB,2BAAmB;AACnB,4BAAoB;AAAA,MACrB;AAAA,IACP;AAAA,EACG;AACD,WAAS,gBAAgB;AACvB,QAAI,SAAS;AACb,QAAI,qBAAqB;AACzB,QAAI,qBAAqB;AACzB,QAAI,oBAAoB;AACxB,QAAI,yBAAyB;AAC7B,QAAI,qBAAqB;AACzB,QAAI,sBAAsB;AAC1B,QAAI,sBAAsB;AAC1B,QAAI,sBAAsB;AAC1B,WAAO;AAAA,MACL,SAAS,SAAS,aAAa;AAC7B,YAAI,CAAC,QAAQ;AACX,cAAI,aAAa;AACf,mBAAO,IAAI;AAAA,UACvB,OAAiB;AACL,oBAAQ,IAAI;AAAA,UACb;AAAA,QACF;AAAA,MACF;AAAA,MACD,SAAS,SAAS,aAAa;AAC7B,YAAI,uBAAuB,eAAe,CAAC,QAAQ;AACjD,aAAG,YAAY,WAAW;AAC1B,+BAAqB;AAAA,QACtB;AAAA,MACF;AAAA,MACD,SAAS,SAAS,aAAa,YAAY,aAAa;AACtD,YAAI,uBAAuB,eAAe,sBAAsB,cAAc,2BAA2B,aAAa;AACpH,aAAG,YAAY,aAAa,YAAY,WAAW;AACnD,+BAAqB;AACrB,8BAAoB;AACpB,mCAAyB;AAAA,QAC1B;AAAA,MACF;AAAA,MACD,OAAO,SAAS,aAAa,cAAc,cAAc;AACvD,YAAI,uBAAuB,eAAe,wBAAwB,gBAAgB,wBAAwB,cAAc;AACtH,aAAG,UAAU,aAAa,cAAc,YAAY;AACpD,+BAAqB;AACrB,gCAAsB;AACtB,gCAAsB;AAAA,QACvB;AAAA,MACF;AAAA,MACD,WAAW,SAAS,MAAM;AACxB,iBAAS;AAAA,MACV;AAAA,MACD,UAAU,SAAS,SAAS;AAC1B,YAAI,wBAAwB,SAAS;AACnC,aAAG,aAAa,OAAO;AACvB,gCAAsB;AAAA,QACvB;AAAA,MACF;AAAA,MACD,OAAO,WAAW;AAChB,iBAAS;AACT,6BAAqB;AACrB,6BAAqB;AACrB,4BAAoB;AACpB,iCAAyB;AACzB,6BAAqB;AACrB,8BAAsB;AACtB,8BAAsB;AACtB,8BAAsB;AAAA,MACvB;AAAA,IACP;AAAA,EACG;AACD,QAAM,cAAc,IAAI;AACxB,QAAM,cAAc,IAAI;AACxB,QAAM,gBAAgB,IAAI;AAC1B,QAAM,cAA8B,oBAAI;AACxC,QAAM,eAA+B,oBAAI;AACzC,MAAI,sBAAsB,CAAA;AAC1B,MAAI,2BAA2B,CAAA;AAC/B,MAAI,qBAAqC,oBAAI;AAC7C,MAAI,qBAAqB,CAAA;AACzB,MAAI,iBAAiB;AACrB,MAAI,yBAAyB;AAC7B,MAAI,kBAAkB;AACtB,MAAI,uBAAuB;AAC3B,MAAI,kBAAkB;AACtB,MAAI,kBAAkB;AACtB,MAAI,4BAA4B;AAChC,MAAI,uBAAuB;AAC3B,MAAI,uBAAuB;AAC3B,MAAI,2BAA2B;AAC/B,MAAI,mBAAmB;AACvB,MAAI,kBAAkB;AACtB,MAAI,mBAAmB;AACvB,MAAI,6BAA6B;AACjC,MAAI,4BAA4B;AAChC,QAAM,cAAc,GAAG,aAAa,KAAK;AACzC,MAAI,qBAAqB;AACzB,MAAIG,WAAU;AACd,QAAM,YAAY,GAAG,aAAa,IAAI;AACtC,MAAI,UAAU,QAAQ,OAAO,MAAM,IAAI;AACrC,IAAAA,WAAU,WAAW,cAAc,KAAK,SAAS,EAAE,EAAE;AACrD,yBAAqBA,YAAW;AAAA,EACjC,WAAU,UAAU,QAAQ,WAAW,MAAM,IAAI;AAChD,IAAAA,WAAU,WAAW,kBAAkB,KAAK,SAAS,EAAE,EAAE;AACzD,yBAAqBA,YAAW;AAAA,EACjC;AACD,MAAI,qBAAqB;AACzB,MAAI,uBAAuB,CAAA;AAC3B,QAAM,eAAe,GAAG,aAAa,IAAI;AACzC,QAAM,gBAAgB,GAAG,aAAa,IAAI;AAC1C,QAAM,iBAAiB,IAAI,QAAS,EAAC,UAAU,YAAY;AAC3D,QAAM,kBAAkB,IAAI,QAAS,EAAC,UAAU,aAAa;AAC7D,WAAS,cAAc,MAAM,QAAQ,OAAO;AAC1C,UAAMzF,QAAO,IAAI,WAAW,CAAC;AAC7B,UAAM,UAAU,GAAG;AACnB,OAAG,YAAY,MAAM,OAAO;AAC5B,OAAG,cAAc,MAAM,OAAO,IAAI;AAClC,OAAG,cAAc,MAAM,OAAO,IAAI;AAClC,aAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,SAAG,WAAW,SAAS,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,MAAMA,KAAI;AAAA,IAC7D;AACD,WAAO;AAAA,EACR;AACD,QAAM,gBAAgB,CAAA;AACtB,gBAAc,QAAQ,cAAc,MAAM,MAAM,CAAC;AACjD,gBAAc,SAAS,cAAc,OAAO,OAAO,CAAC;AACpD,cAAY,SAAS,GAAG,GAAG,GAAG,CAAC;AAC/B,cAAY,SAAS,CAAC;AACtB,gBAAc,SAAS,CAAC;AACxB,SAAO,IAAI;AACX,cAAY,QAAQ,cAAc;AAClC,eAAa,KAAK;AAClB,cAAY,YAAY;AACxB,SAAO,IAAI;AACX,cAAY,UAAU;AACtB,WAAS,OAAO,KAAK;AACnB,QAAI,oBAAoB,SAAS,MAAM;AACrC,SAAG,OAAO,GAAG;AACb,0BAAoB,OAAO;AAAA,IAC5B;AAAA,EACF;AACD,WAAS,QAAQ,KAAK;AACpB,QAAI,oBAAoB,SAAS,OAAO;AACtC,SAAG,QAAQ,GAAG;AACd,0BAAoB,OAAO;AAAA,IAC5B;AAAA,EACF;AACD,WAAS,gBAAgB,QAAQ,aAAa;AAC5C,QAAI,yBAAyB,YAAY,aAAa;AACpD,SAAG,gBAAgB,QAAQ,WAAW;AACtC,+BAAyB,UAAU;AACnC,UAAI,UAAU;AACZ,YAAI,WAAW,OAAO;AACpB,mCAAyB,SAAS;AAAA,QACnC;AACD,YAAI,WAAW,OAAO;AACpB,mCAAyB,SAAS;AAAA,QACnC;AAAA,MACF;AACD,aAAO;AAAA,IACR;AACD,WAAO;AAAA,EACR;AACD,WAAS,YAAY,cAAc,aAAa;AAC9C,QAAI,eAAe;AACnB,QAAI,cAAc;AAClB,QAAI,cAAc;AAChB,qBAAe,mBAAmB,IAAI,WAAW;AACjD,UAAI,iBAAiB,QAAQ;AAC3B,uBAAe,CAAA;AACf,2BAAmB,IAAI,aAAa,YAAY;AAAA,MACjD;AACD,UAAI,aAAa,8BAA8B;AAC7C,cAAM,WAAW,aAAa;AAC9B,YAAI,aAAa,WAAW,SAAS,UAAU,aAAa,OAAO,OAAO;AACxE,mBAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,KAAK;AACjD,yBAAa,KAAK,QAAQ;AAAA,UAC3B;AACD,uBAAa,SAAS,SAAS;AAC/B,wBAAc;AAAA,QACf;AAAA,MACT,OAAa;AACL,YAAI,aAAa,OAAO,OAAO;AAC7B,uBAAa,KAAK;AAClB,wBAAc;AAAA,QACf;AAAA,MACF;AAAA,IACP,OAAW;AACL,UAAI,aAAa,OAAO,MAAM;AAC5B,qBAAa,KAAK;AAClB,sBAAc;AAAA,MACf;AAAA,IACF;AACD,QAAI,aAAa;AACf,UAAI,aAAa,UAAU;AACzB,WAAG,YAAY,YAAY;AAAA,MACnC,OAAa;AACL,mBAAW,IAAI,oBAAoB,EAAE,iBAAiB,YAAY;AAAA,MACnE;AAAA,IACF;AAAA,EACF;AACD,WAAS,WAAW,SAAS;AAC3B,QAAI,mBAAmB,SAAS;AAC9B,SAAG,WAAW,OAAO;AACrB,uBAAiB;AACjB,aAAO;AAAA,IACR;AACD,WAAO;AAAA,EACR;AACD,QAAM,eAAe;AAAA,IACnB,CAAC,cAAc;AAAA,IACf,CAAC,mBAAmB;AAAA,IACpB,CAAC,0BAA0B;AAAA,EAC/B;AACE,MAAI,UAAU;AACZ,iBAAa,eAAe;AAC5B,iBAAa,eAAe;AAAA,EAChC,OAAS;AACL,UAAM,YAAY,WAAW,IAAI,kBAAkB;AACnD,QAAI,cAAc,MAAM;AACtB,mBAAa,eAAe,UAAU;AACtC,mBAAa,eAAe,UAAU;AAAA,IACvC;AAAA,EACF;AACD,QAAM,aAAa;AAAA,IACjB,CAAC,aAAa;AAAA,IACd,CAAC,YAAY;AAAA,IACb,CAAC,iBAAiB;AAAA,IAClB,CAAC,iBAAiB;AAAA,IAClB,CAAC,yBAAyB;AAAA,IAC1B,CAAC,iBAAiB;AAAA,IAClB,CAAC,iBAAiB;AAAA,IAClB,CAAC,yBAAyB;AAAA,IAC1B,CAAC,yBAAyB;AAAA,IAC1B,CAAC,yBAAyB;AAAA,IAC1B,CAAC,yBAAyB;AAAA,EAC9B;AACE,WAAS,YAAY,UAAU,eAAe,UAAU,UAAU,oBAAoB,eAAe,eAAe,oBAAoB;AACtI,QAAI,aAAa,YAAY;AAC3B,UAAI,2BAA2B,MAAM;AACnC,gBAAQ,IAAI;AACZ,iCAAyB;AAAA,MAC1B;AACD;AAAA,IACD;AACD,QAAI,2BAA2B,OAAO;AACpC,aAAO,IAAI;AACX,+BAAyB;AAAA,IAC1B;AACD,QAAI,aAAa,gBAAgB;AAC/B,UAAI,aAAa,mBAAmB,uBAAuB,0BAA0B;AACnF,YAAI,yBAAyB,eAAe,8BAA8B,aAAa;AACrF,aAAG,cAAc,KAAK;AACtB,iCAAuB;AACvB,sCAA4B;AAAA,QAC7B;AACD,YAAI,oBAAoB;AACtB,kBAAQ,UAAQ;AAAA,YACd,KAAK;AACH,iBAAG,kBAAkB,GAAG,KAAK,GAAG,GAAG;AACnC;AAAA,YACF,KAAK;AACH,iBAAG,UAAU,GAAG,CAAC;AACjB;AAAA,YACF,KAAK;AACH,iBAAG,kBAAkB,GAAG,KAAK,GAAG,CAAC;AACjC;AAAA,YACF,KAAK;AACH,iBAAG,kBAAkB,GAAG,KAAK,GAAG,GAAG;AACnC;AAAA,YACF;AACE,sBAAQ,MAAM,wCAAwC,QAAQ;AAC9D;AAAA,UACH;AAAA,QACX,OAAe;AACL,kBAAQ,UAAQ;AAAA,YACd,KAAK;AACH,iBAAG,kBAAkB,KAAK,KAAK,GAAG,GAAG;AACrC;AAAA,YACF,KAAK;AACH,iBAAG,UAAU,KAAK,CAAC;AACnB;AAAA,YACF,KAAK;AACH,iBAAG,kBAAkB,GAAG,KAAK,GAAG,CAAC;AACjC;AAAA,YACF,KAAK;AACH,iBAAG,UAAU,GAAG,GAAG;AACnB;AAAA,YACF;AACE,sBAAQ,MAAM,wCAAwC,QAAQ;AAC9D;AAAA,UACH;AAAA,QACF;AACD,0BAAkB;AAClB,0BAAkB;AAClB,+BAAuB;AACvB,+BAAuB;AACvB,0BAAkB;AAClB,mCAA2B;AAAA,MAC5B;AACD;AAAA,IACD;AACD,yBAAqB,sBAAsB;AAC3C,oBAAgB,iBAAiB;AACjC,oBAAgB,iBAAiB;AACjC,QAAI,kBAAkB,wBAAwB,uBAAuB,2BAA2B;AAC9F,SAAG,sBAAsB,aAAa,gBAAgB,aAAa,mBAAmB;AACtF,6BAAuB;AACvB,kCAA4B;AAAA,IAC7B;AACD,QAAI,aAAa,mBAAmB,aAAa,mBAAmB,kBAAkB,wBAAwB,kBAAkB,sBAAsB;AACpJ,SAAG,kBAAkB,WAAW,WAAW,WAAW,WAAW,WAAW,gBAAgB,WAAW,cAAc;AACrH,wBAAkB;AAClB,wBAAkB;AAClB,6BAAuB;AACvB,6BAAuB;AAAA,IACxB;AACD,sBAAkB;AAClB,+BAA2B;AAAA,EAC5B;AACD,WAAS,YAAY,UAAU,aAAa;AAC1C,aAAS,SAAS,aAAa,QAAQ,IAAI,IAAI,OAAO,IAAI;AAC1D,QAAI,YAAY,SAAS,SAAS;AAClC,QAAI;AACF,kBAAY,CAAC;AACf,iBAAa,SAAS;AACtB,aAAS,aAAa,kBAAkB,SAAS,gBAAgB,QAAQ,YAAY,UAAU,IAAI,YAAY,SAAS,UAAU,SAAS,eAAe,SAAS,UAAU,SAAS,UAAU,SAAS,oBAAoB,SAAS,eAAe,SAAS,eAAe,SAAS,kBAAkB;AACxS,gBAAY,QAAQ,SAAS,SAAS;AACtC,gBAAY,QAAQ,SAAS,SAAS;AACtC,gBAAY,QAAQ,SAAS,UAAU;AACvC,gBAAY,QAAQ,SAAS,UAAU;AACvC,UAAM,eAAe,SAAS;AAC9B,kBAAc,QAAQ,YAAY;AAClC,QAAI,cAAc;AAChB,oBAAc,QAAQ,SAAS,gBAAgB;AAC/C,oBAAc,QAAQ,SAAS,aAAa,SAAS,YAAY,SAAS,eAAe;AACzF,oBAAc,MAAM,SAAS,aAAa,SAAS,cAAc,SAAS,YAAY;AAAA,IACvF;AACD,qBAAiB,SAAS,eAAe,SAAS,qBAAqB,SAAS,kBAAkB;AAClG,aAAS,oBAAoB,OAAO,OAAO,KAAK,IAAI,QAAQ,KAAK;AAAA,EAClE;AACD,WAAS,aAAa,WAAW;AAC/B,QAAI,qBAAqB,WAAW;AAClC,UAAI,WAAW;AACb,WAAG,UAAU,IAAI;AAAA,MACzB,OAAa;AACL,WAAG,UAAU,IAAI;AAAA,MAClB;AACD,yBAAmB;AAAA,IACpB;AAAA,EACF;AACD,WAAS,YAAY,UAAU;AAC7B,QAAI,aAAa,cAAc;AAC7B,aAAO,IAAI;AACX,UAAI,aAAa,iBAAiB;AAChC,YAAI,aAAa,cAAc;AAC7B,aAAG,SAAS,IAAI;AAAA,QAC1B,WAAmB,aAAa,eAAe;AACrC,aAAG,SAAS,IAAI;AAAA,QAC1B,OAAe;AACL,aAAG,SAAS,IAAI;AAAA,QACjB;AAAA,MACF;AAAA,IACP,OAAW;AACL,cAAQ,IAAI;AAAA,IACb;AACD,sBAAkB;AAAA,EACnB;AACD,WAAS,aAAa,OAAO;AAC3B,QAAI,UAAU,kBAAkB;AAC9B,UAAI;AACF,WAAG,UAAU,KAAK;AACpB,yBAAmB;AAAA,IACpB;AAAA,EACF;AACD,WAAS,iBAAiB,eAAe,QAAQ,OAAO;AACtD,QAAI,eAAe;AACjB,aAAO,KAAK;AACZ,UAAI,+BAA+B,UAAU,8BAA8B,OAAO;AAChF,WAAG,cAAc,QAAQ,KAAK;AAC9B,qCAA6B;AAC7B,oCAA4B;AAAA,MAC7B;AAAA,IACP,OAAW;AACL,cAAQ,KAAK;AAAA,IACd;AAAA,EACF;AACD,WAAS,eAAe,aAAa;AACnC,QAAI,aAAa;AACf,aAAO,IAAI;AAAA,IACjB,OAAW;AACL,cAAQ,IAAI;AAAA,IACb;AAAA,EACF;AACD,WAAS,cAAc,WAAW;AAChC,QAAI,cAAc;AAChB,kBAAY,QAAQ,cAAc;AACpC,QAAI,uBAAuB,WAAW;AACpC,SAAG,cAAc,SAAS;AAC1B,2BAAqB;AAAA,IACtB;AAAA,EACF;AACD,WAAS,YAAY,WAAW,cAAc;AAC5C,QAAI,uBAAuB,MAAM;AAC/B;IACD;AACD,QAAI,eAAe,qBAAqB;AACxC,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe,EAAE,MAAM,QAAQ,SAAS;AACxC,2BAAqB,sBAAsB;AAAA,IAC5C;AACD,QAAI,aAAa,SAAS,aAAa,aAAa,YAAY,cAAc;AAC5E,SAAG,YAAY,WAAW,gBAAgB,cAAc,UAAU;AAClE,mBAAa,OAAO;AACpB,mBAAa,UAAU;AAAA,IACxB;AAAA,EACF;AACD,WAAS,gBAAgB;AACvB,UAAM,eAAe,qBAAqB;AAC1C,QAAI,iBAAiB,UAAU,aAAa,SAAS,QAAQ;AAC3D,SAAG,YAAY,aAAa,MAAM,IAAI;AACtC,mBAAa,OAAO;AACpB,mBAAa,UAAU;AAAA,IACxB;AAAA,EACF;AACD,WAAS,uBAAuB;AAC9B,QAAI;AACF,SAAG,qBAAqB,MAAM,IAAI,SAAS;AAAA,IAC5C,SAAQ,OAAP;AACA,cAAQ,MAAM,qBAAqB,KAAK;AAAA,IACzC;AAAA,EACF;AACD,WAAS,gBAAgB;AACvB,QAAI;AACF,SAAG,cAAc,MAAM,IAAI,SAAS;AAAA,IACrC,SAAQ,OAAP;AACA,cAAQ,MAAM,qBAAqB,KAAK;AAAA,IACzC;AAAA,EACF;AACD,WAAS,gBAAgB;AACvB,QAAI;AACF,SAAG,cAAc,MAAM,IAAI,SAAS;AAAA,IACrC,SAAQ,OAAP;AACA,cAAQ,MAAM,qBAAqB,KAAK;AAAA,IACzC;AAAA,EACF;AACD,WAAS,0BAA0B;AACjC,QAAI;AACF,SAAG,wBAAwB,MAAM,IAAI,SAAS;AAAA,IAC/C,SAAQ,OAAP;AACA,cAAQ,MAAM,qBAAqB,KAAK;AAAA,IACzC;AAAA,EACF;AACD,WAAS,eAAe;AACtB,QAAI;AACF,SAAG,aAAa,MAAM,IAAI,SAAS;AAAA,IACpC,SAAQ,OAAP;AACA,cAAQ,MAAM,qBAAqB,KAAK;AAAA,IACzC;AAAA,EACF;AACD,WAAS,eAAe;AACtB,QAAI;AACF,SAAG,aAAa,MAAM,IAAI,SAAS;AAAA,IACpC,SAAQ,OAAP;AACA,cAAQ,MAAM,qBAAqB,KAAK;AAAA,IACzC;AAAA,EACF;AACD,WAAS,aAAa;AACpB,QAAI;AACF,SAAG,WAAW,MAAM,IAAI,SAAS;AAAA,IAClC,SAAQ,OAAP;AACA,cAAQ,MAAM,qBAAqB,KAAK;AAAA,IACzC;AAAA,EACF;AACD,WAAS,aAAa;AACpB,QAAI;AACF,SAAG,WAAW,MAAM,IAAI,SAAS;AAAA,IAClC,SAAQ,OAAP;AACA,cAAQ,MAAM,qBAAqB,KAAK;AAAA,IACzC;AAAA,EACF;AACD,WAAS,QAAQ,UAAU;AACzB,QAAI,eAAe,OAAO,QAAQ,MAAM,OAAO;AAC7C,SAAG,QAAQ,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AACzD,qBAAe,KAAK,QAAQ;AAAA,IAC7B;AAAA,EACF;AACD,WAAS,SAAS,WAAW;AAC3B,QAAI,gBAAgB,OAAO,SAAS,MAAM,OAAO;AAC/C,SAAG,SAAS,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAC9D,sBAAgB,KAAK,SAAS;AAAA,IAC/B;AAAA,EACF;AACD,WAAS,iBAAiB,eAAe,SAAS;AAChD,QAAI,UAAU,aAAa,IAAI,OAAO;AACtC,QAAI,YAAY,QAAQ;AACtB,gBAA0B,oBAAI;AAC9B,mBAAa,IAAI,SAAS,OAAO;AAAA,IAClC;AACD,QAAI,aAAa,QAAQ,IAAI,aAAa;AAC1C,QAAI,eAAe,QAAQ;AACzB,mBAAa,GAAG,qBAAqB,SAAS,cAAc,IAAI;AAChE,cAAQ,IAAI,eAAe,UAAU;AAAA,IACtC;AAAA,EACF;AACD,WAAS,oBAAoB,eAAe,SAAS;AACnD,UAAM,UAAU,aAAa,IAAI,OAAO;AACxC,UAAM,aAAa,QAAQ,IAAI,aAAa;AAC5C,QAAI,YAAY,IAAI,aAAa,MAAM,YAAY;AACjD,SAAG,oBAAoB,SAAS,YAAY,cAAc,mBAAmB;AAC7E,kBAAY,IAAI,eAAe,UAAU;AAAA,IAC1C;AAAA,EACF;AACD,WAAS,QAAQ;AACf,OAAG,QAAQ,IAAI;AACf,OAAG,QAAQ,IAAI;AACf,OAAG,QAAQ,IAAI;AACf,OAAG,QAAQ,KAAK;AAChB,OAAG,QAAQ,IAAI;AACf,OAAG,QAAQ,IAAI;AACf,OAAG,QAAQ,KAAK;AAChB,OAAG,cAAc,KAAK;AACtB,OAAG,UAAU,GAAG,CAAC;AACjB,OAAG,kBAAkB,GAAG,GAAG,GAAG,CAAC;AAC/B,OAAG,UAAU,MAAM,MAAM,MAAM,IAAI;AACnC,OAAG,WAAW,GAAG,GAAG,GAAG,CAAC;AACxB,OAAG,UAAU,IAAI;AACjB,OAAG,UAAU,GAAG;AAChB,OAAG,WAAW,CAAC;AACf,OAAG,YAAY,UAAU;AACzB,OAAG,YAAY,KAAK,GAAG,UAAU;AACjC,OAAG,UAAU,MAAM,MAAM,IAAI;AAC7B,OAAG,aAAa,CAAC;AACjB,OAAG,SAAS,IAAI;AAChB,OAAG,UAAU,IAAI;AACjB,OAAG,cAAc,GAAG,CAAC;AACrB,OAAG,cAAc,KAAK;AACtB,OAAG,gBAAgB,OAAO,IAAI;AAC9B,QAAI,aAAa,MAAM;AACrB,SAAG,gBAAgB,OAAO,IAAI;AAC9B,SAAG,gBAAgB,OAAO,IAAI;AAAA,IAC/B;AACD,OAAG,WAAW,IAAI;AAClB,OAAG,UAAU,CAAC;AACd,OAAG,QAAQ,GAAG,GAAG,GAAG,OAAO,OAAO,GAAG,OAAO,MAAM;AAClD,OAAG,SAAS,GAAG,GAAG,GAAG,OAAO,OAAO,GAAG,OAAO,MAAM;AACnD,0BAAsB,CAAA;AACtB,yBAAqB;AACrB,2BAAuB,CAAA;AACvB,+BAA2B,CAAA;AAC3B,yBAAqC,oBAAI;AACzC,yBAAqB,CAAA;AACrB,qBAAiB;AACjB,6BAAyB;AACzB,sBAAkB;AAClB,2BAAuB;AACvB,sBAAkB;AAClB,sBAAkB;AAClB,gCAA4B;AAC5B,2BAAuB;AACvB,2BAAuB;AACvB,+BAA2B;AAC3B,uBAAmB;AACnB,sBAAkB;AAClB,uBAAmB;AACnB,iCAA6B;AAC7B,gCAA4B;AAC5B,mBAAe,IAAI,GAAG,GAAG,GAAG,OAAO,OAAO,GAAG,OAAO,MAAM;AAC1D,oBAAgB,IAAI,GAAG,GAAG,GAAG,OAAO,OAAO,GAAG,OAAO,MAAM;AAC3D,gBAAY,MAAK;AACjB,gBAAY,MAAK;AACjB,kBAAc,MAAK;AAAA,EACpB;AACD,SAAO;AAAA,IACL,SAAS;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,IACV;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,cAAc,KAAK,YAAY,OAAO,YAAY,cAAc,QAAQ,MAAM;AACrF,QAAM,WAAW,aAAa;AAC9B,QAAM,cAAc,aAAa;AACjC,QAAM,iBAAiB,aAAa;AACpC,QAAM,iBAAiB,aAAa;AACpC,QAAM,aAAa,aAAa;AAChC,QAAM,qBAAqB,WAAW,IAAI,sCAAsC,IAAI,WAAW,IAAI,sCAAsC,IAAI;AAC7I,QAAM,gCAAgC,iBAAiB,KAAK,UAAU,SAAS;AAC/E,QAAM,iBAAiC,oBAAI;AAC3C,MAAI;AACJ,QAAM,WAA2B,oBAAI;AACrC,MAAI,qBAAqB;AACzB,MAAI;AACF,yBAAqB,OAAO,oBAAoB,eAAe,IAAI,gBAAgB,GAAG,CAAC,EAAE,WAAW,IAAI,MAAM;AAAA,EAC/G,SAAQ,MAAP;AAAA,EACD;AACD,WAAS,aAAa,OAAO,QAAQ;AACnC,WAAO,qBAAqB,IAAI,gBAAgB,OAAO,MAAM,IAAI,gBAAgB,QAAQ;AAAA,EAC1F;AACD,WAAS,YAAY,OAAO,iBAAiB,gBAAgB,SAAS;AACpE,QAAI,QAAQ;AACZ,QAAI,MAAM,QAAQ,WAAW,MAAM,SAAS,SAAS;AACnD,cAAQ,UAAU,KAAK,IAAI,MAAM,OAAO,MAAM,MAAM;AAAA,IACrD;AACD,QAAI,QAAQ,KAAK,oBAAoB,MAAM;AACzC,UAAI,OAAO,qBAAqB,eAAe,iBAAiB,oBAAoB,OAAO,sBAAsB,eAAe,iBAAiB,qBAAqB,OAAO,gBAAgB,eAAe,iBAAiB,aAAa;AACxO,cAAM,SAAS,kBAAkB,kBAAkB,KAAK;AACxD,cAAM,QAAQ,OAAO,QAAQ,MAAM,KAAK;AACxC,cAAM,SAAS,OAAO,QAAQ,MAAM,MAAM;AAC1C,YAAI,aAAa;AACf,qBAAW,aAAa,OAAO,MAAM;AACvC,cAAM,SAAS,iBAAiB,aAAa,OAAO,MAAM,IAAI;AAC9D,eAAO,QAAQ;AACf,eAAO,SAAS;AAChB,cAAM,UAAU,OAAO,WAAW,IAAI;AACtC,gBAAQ,UAAU,OAAO,GAAG,GAAG,OAAO,MAAM;AAC5C,gBAAQ,KAAK,yDAAyD,MAAM,QAAQ,MAAM,MAAM,SAAS,WAAW,QAAQ,MAAM,SAAS,IAAI;AAC/I,eAAO;AAAA,MACf,OAAa;AACL,YAAI,UAAU,OAAO;AACnB,kBAAQ,KAAK,2DAA2D,MAAM,QAAQ,MAAM,MAAM,SAAS,IAAI;AAAA,QAChH;AACD,eAAO;AAAA,MACR;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,WAAS,eAAe,OAAO;AAC7B,WAAO,aAAa,MAAM,KAAK,KAAK,aAAa,MAAM,MAAM;AAAA,EAC9D;AACD,WAAS,uBAAuB,SAAS;AACvC,QAAI;AACF,aAAO;AACT,WAAO,QAAQ,UAAU,uBAAuB,QAAQ,UAAU,uBAAuB,QAAQ,cAAc,iBAAiB,QAAQ,cAAc;AAAA,EACvJ;AACD,WAAS,4BAA4B,SAAS,cAAc;AAC1D,WAAO,QAAQ,mBAAmB,gBAAgB,QAAQ,cAAc,iBAAiB,QAAQ,cAAc;AAAA,EAChH;AACD,WAAS,eAAe,QAAQ;AAC9B,QAAI,eAAe,MAAM;AAAA,EAC1B;AACD,WAAS,kBAAkB,oBAAoB,UAAU,QAAQ,UAAU,iBAAiB,OAAO;AACjG,QAAI,aAAa;AACf,aAAO;AACT,QAAI,uBAAuB,MAAM;AAC/B,UAAI,IAAI,wBAAwB;AAC9B,eAAO,IAAI;AACb,cAAQ,KAAK,6EAA6E,qBAAqB,GAAG;AAAA,IACnH;AACD,QAAI,iBAAiB;AACrB,QAAI,aAAa,MAAM;AACrB,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB;AAAA,IACpB;AACD,QAAI,aAAa,OAAO;AACtB,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB;AAAA,IACpB;AACD,QAAI,aAAa,MAAM;AACrB,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB,aAAa,gBAAgB,mBAAmB,QAAQ,QAAQ;AACnF,UAAI,WAAW;AACb,yBAAiB;AACnB,UAAI,WAAW;AACb,yBAAiB;AAAA,IACpB;AACD,QAAI,mBAAmB,SAAS,mBAAmB,SAAS,mBAAmB,SAAS,mBAAmB,SAAS,mBAAmB,SAAS,mBAAmB,OAAO;AACxK,iBAAW,IAAI,wBAAwB;AAAA,IACxC;AACD,WAAO;AAAA,EACR;AACD,WAAS,aAAa,SAAS,OAAO,cAAc;AAClD,QAAI,4BAA4B,SAAS,YAAY,MAAM,QAAQ,QAAQ,wBAAwB,QAAQ,cAAc,iBAAiB,QAAQ,cAAc,cAAc;AAC5K,aAAO,KAAK,KAAK,KAAK,IAAI,MAAM,OAAO,MAAM,MAAM,CAAC,IAAI;AAAA,IAC9D,WAAe,QAAQ,YAAY,UAAU,QAAQ,QAAQ,SAAS,GAAG;AACnE,aAAO,QAAQ,QAAQ;AAAA,IAC7B,WAAe,QAAQ,uBAAuB,MAAM,QAAQ,QAAQ,KAAK,GAAG;AACtE,aAAO,MAAM,QAAQ;AAAA,IAC3B,OAAW;AACL,aAAO;AAAA,IACR;AAAA,EACF;AACD,WAAS,eAAe,GAAG;AACzB,QAAI,MAAM,iBAAiB,MAAM,8BAA8B,MAAM,2BAA2B;AAC9F,aAAO;AAAA,IACR;AACD,WAAO;AAAA,EACR;AACD,WAAS,iBAAiB,OAAO;AAC/B,UAAM,UAAU,MAAM;AACtB,YAAQ,oBAAoB,WAAW,gBAAgB;AACvD,sBAAkB,OAAO;AACzB,QAAI,QAAQ,gBAAgB;AAC1B,qBAAe,OAAO,OAAO;AAAA,IAC9B;AAAA,EACF;AACD,WAAS,sBAAsB,OAAO;AACpC,UAAM,eAAe,MAAM;AAC3B,iBAAa,oBAAoB,WAAW,qBAAqB;AACjE,2BAAuB,YAAY;AAAA,EACpC;AACD,WAAS,kBAAkB,SAAS;AAClC,UAAM,oBAAoB,WAAW,IAAI,OAAO;AAChD,QAAI,kBAAkB,gBAAgB;AACpC;AACF,UAAM,SAAS,QAAQ;AACvB,UAAM,gBAAgB,SAAS,IAAI,MAAM;AACzC,QAAI,eAAe;AACjB,YAAM,eAAe,cAAc,kBAAkB;AACrD,mBAAa;AACb,UAAI,aAAa,cAAc,GAAG;AAChC,sBAAc,OAAO;AAAA,MACtB;AACD,UAAI,OAAO,KAAK,aAAa,EAAE,WAAW,GAAG;AAC3C,iBAAS,OAAO,MAAM;AAAA,MACvB;AAAA,IACF;AACD,eAAW,OAAO,OAAO;AAAA,EAC1B;AACD,WAAS,cAAc,SAAS;AAC9B,UAAM,oBAAoB,WAAW,IAAI,OAAO;AAChD,QAAI,cAAc,kBAAkB,cAAc;AAClD,UAAM,SAAS,QAAQ;AACvB,UAAM,gBAAgB,SAAS,IAAI,MAAM;AACzC,WAAO,cAAc,kBAAkB;AACvC,SAAK,OAAO;AAAA,EACb;AACD,WAAS,uBAAuB,cAAc;AAC5C,UAAM,UAAU,aAAa;AAC7B,UAAM,yBAAyB,WAAW,IAAI,YAAY;AAC1D,UAAM,oBAAoB,WAAW,IAAI,OAAO;AAChD,QAAI,kBAAkB,mBAAmB,QAAQ;AAC/C,UAAI,cAAc,kBAAkB,cAAc;AAClD,WAAK,OAAO;AAAA,IACb;AACD,QAAI,aAAa,cAAc;AAC7B,mBAAa,aAAa;IAC3B;AACD,QAAI,aAAa,yBAAyB;AACxC,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAI,kBAAkB,uBAAuB,mBAAmB,EAAE;AAClE,YAAI,uBAAuB;AACzB,cAAI,mBAAmB,uBAAuB,mBAAmB,EAAE;AAAA,MACtE;AAAA,IACP,OAAW;AACL,UAAI,kBAAkB,uBAAuB,kBAAkB;AAC/D,UAAI,uBAAuB;AACzB,YAAI,mBAAmB,uBAAuB,kBAAkB;AAClE,UAAI,uBAAuB;AACzB,YAAI,kBAAkB,uBAAuB,8BAA8B;AAC7E,UAAI,uBAAuB,0BAA0B;AACnD,iBAAS,IAAI,GAAG,IAAI,uBAAuB,yBAAyB,QAAQ,KAAK;AAC/E,cAAI,uBAAuB,yBAAyB;AAClD,gBAAI,mBAAmB,uBAAuB,yBAAyB,EAAE;AAAA,QAC5E;AAAA,MACF;AACD,UAAI,uBAAuB;AACzB,YAAI,mBAAmB,uBAAuB,wBAAwB;AAAA,IACzE;AACD,QAAI,aAAa,8BAA8B;AAC7C,eAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK;AAChD,cAAM,uBAAuB,WAAW,IAAI,QAAQ,EAAE;AACtD,YAAI,qBAAqB,gBAAgB;AACvC,cAAI,cAAc,qBAAqB,cAAc;AACrD,eAAK,OAAO;AAAA,QACb;AACD,mBAAW,OAAO,QAAQ,EAAE;AAAA,MAC7B;AAAA,IACF;AACD,eAAW,OAAO,OAAO;AACzB,eAAW,OAAO,YAAY;AAAA,EAC/B;AACD,MAAI,eAAe;AACnB,WAAS,oBAAoB;AAC3B,mBAAe;AAAA,EAChB;AACD,WAAS,sBAAsB;AAC7B,UAAM,cAAc;AACpB,QAAI,eAAe,aAAa;AAC9B,cAAQ,KAAK,wCAAwC,cAAc,iDAAiD,WAAW;AAAA,IAChI;AACD,oBAAgB;AAChB,WAAO;AAAA,EACR;AACD,WAAS,mBAAmB,SAAS;AACnC,UAAM,QAAQ,CAAA;AACd,UAAM,KAAK,QAAQ,KAAK;AACxB,UAAM,KAAK,QAAQ,KAAK;AACxB,UAAM,KAAK,QAAQ,SAAS;AAC5B,UAAM,KAAK,QAAQ,SAAS;AAC5B,UAAM,KAAK,QAAQ,UAAU;AAC7B,UAAM,KAAK,QAAQ,cAAc;AACjC,UAAM,KAAK,QAAQ,MAAM;AACzB,UAAM,KAAK,QAAQ,IAAI;AACvB,UAAM,KAAK,QAAQ,eAAe;AAClC,UAAM,KAAK,QAAQ,gBAAgB;AACnC,UAAM,KAAK,QAAQ,KAAK;AACxB,UAAM,KAAK,QAAQ,eAAe;AAClC,UAAM,KAAK,QAAQ,QAAQ;AAC3B,WAAO,MAAM;EACd;AACD,WAAS,aAAa,SAAS,MAAM;AACnC,UAAM,oBAAoB,WAAW,IAAI,OAAO;AAChD,QAAI,QAAQ;AACV,yBAAmB,OAAO;AAC5B,QAAI,QAAQ,0BAA0B,SAAS,QAAQ,UAAU,KAAK,kBAAkB,cAAc,QAAQ,SAAS;AACrH,YAAM,QAAQ,QAAQ;AACtB,UAAI,UAAU,MAAM;AAClB,gBAAQ,KAAK,yEAAyE;AAAA,MAC9F,WAAiB,MAAM,aAAa,OAAO;AACnC,gBAAQ,KAAK,wEAAwE;AAAA,MAC7F,OAAa;AACL,sBAAc,mBAAmB,SAAS,IAAI;AAC9C;AAAA,MACD;AAAA,IACF;AACD,UAAM,cAAc,QAAQ,IAAI;AAChC,UAAM,YAAY,MAAM,kBAAkB,cAAc;AAAA,EACzD;AACD,WAAS,kBAAkB,SAAS,MAAM;AACxC,UAAM,oBAAoB,WAAW,IAAI,OAAO;AAChD,QAAI,QAAQ,UAAU,KAAK,kBAAkB,cAAc,QAAQ,SAAS;AAC1E,oBAAc,mBAAmB,SAAS,IAAI;AAC9C;AAAA,IACD;AACD,UAAM,cAAc,QAAQ,IAAI;AAChC,UAAM,YAAY,OAAO,kBAAkB,cAAc;AAAA,EAC1D;AACD,WAAS,aAAa,SAAS,MAAM;AACnC,UAAM,oBAAoB,WAAW,IAAI,OAAO;AAChD,QAAI,QAAQ,UAAU,KAAK,kBAAkB,cAAc,QAAQ,SAAS;AAC1E,oBAAc,mBAAmB,SAAS,IAAI;AAC9C;AAAA,IACD;AACD,UAAM,cAAc,QAAQ,IAAI;AAChC,UAAM,YAAY,OAAO,kBAAkB,cAAc;AAAA,EAC1D;AACD,WAAS,eAAe,SAAS,MAAM;AACrC,UAAM,oBAAoB,WAAW,IAAI,OAAO;AAChD,QAAI,QAAQ,UAAU,KAAK,kBAAkB,cAAc,QAAQ,SAAS;AAC1E,wBAAkB,mBAAmB,SAAS,IAAI;AAClD;AAAA,IACD;AACD,UAAM,cAAc,QAAQ,IAAI;AAChC,UAAM,YAAY,OAAO,kBAAkB,cAAc;AAAA,EAC1D;AACD,QAAM,eAAe;AAAA,IACnB,CAAC,iBAAiB;AAAA,IAClB,CAAC,sBAAsB;AAAA,IACvB,CAAC,yBAAyB;AAAA,EAC9B;AACE,QAAM,aAAa;AAAA,IACjB,CAAC,gBAAgB;AAAA,IACjB,CAAC,6BAA6B;AAAA,IAC9B,CAAC,4BAA4B;AAAA,IAC7B,CAAC,eAAe;AAAA,IAChB,CAAC,4BAA4B;AAAA,IAC7B,CAAC,2BAA2B;AAAA,EAChC;AACE,WAAS,qBAAqB,aAAa,SAAS,cAAc;AAChE,QAAI,cAAc;AAChB,UAAI,cAAc,aAAa,OAAO,aAAa,QAAQ,MAAM;AACjE,UAAI,cAAc,aAAa,OAAO,aAAa,QAAQ,MAAM;AACjE,UAAI,gBAAgB,SAAS,gBAAgB,OAAO;AAClD,YAAI,cAAc,aAAa,OAAO,aAAa,QAAQ,MAAM;AAAA,MAClE;AACD,UAAI,cAAc,aAAa,OAAO,WAAW,QAAQ,UAAU;AACnE,UAAI,cAAc,aAAa,OAAO,WAAW,QAAQ,UAAU;AAAA,IACzE,OAAW;AACL,UAAI,cAAc,aAAa,OAAO,KAAK;AAC3C,UAAI,cAAc,aAAa,OAAO,KAAK;AAC3C,UAAI,gBAAgB,SAAS,gBAAgB,OAAO;AAClD,YAAI,cAAc,aAAa,OAAO,KAAK;AAAA,MAC5C;AACD,UAAI,QAAQ,UAAU,uBAAuB,QAAQ,UAAU,qBAAqB;AAClF,gBAAQ,KAAK,+HAA+H;AAAA,MAC7I;AACD,UAAI,cAAc,aAAa,OAAO,eAAe,QAAQ,SAAS,CAAC;AACvE,UAAI,cAAc,aAAa,OAAO,eAAe,QAAQ,SAAS,CAAC;AACvE,UAAI,QAAQ,cAAc,iBAAiB,QAAQ,cAAc,cAAc;AAC7E,gBAAQ,KAAK,iIAAiI;AAAA,MAC/I;AAAA,IACF;AACD,QAAI,WAAW,IAAI,gCAAgC,MAAM,MAAM;AAC7D,YAAM,YAAY,WAAW,IAAI,gCAAgC;AACjE,UAAI,QAAQ,SAAS,aAAa,WAAW,IAAI,0BAA0B,MAAM;AAC/E;AACF,UAAI,aAAa,UAAU,QAAQ,SAAS,iBAAiB,WAAW,IAAI,+BAA+B,MAAM;AAC/G;AACF,UAAI,QAAQ,aAAa,KAAK,WAAW,IAAI,OAAO,EAAE,qBAAqB;AACzE,YAAI,cAAc,aAAa,UAAU,4BAA4B,KAAK,IAAI,QAAQ,YAAY,aAAa,iBAAgB,CAAE,CAAC;AAClI,mBAAW,IAAI,OAAO,EAAE,sBAAsB,QAAQ;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AACD,WAAS,YAAY,mBAAmB,SAAS;AAC/C,QAAI,cAAc;AAClB,QAAI,kBAAkB,gBAAgB,QAAQ;AAC5C,wBAAkB,cAAc;AAChC,cAAQ,iBAAiB,WAAW,gBAAgB;AAAA,IACrD;AACD,UAAM,SAAS,QAAQ;AACvB,QAAI,gBAAgB,SAAS,IAAI,MAAM;AACvC,QAAI,kBAAkB,QAAQ;AAC5B,sBAAgB,CAAA;AAChB,eAAS,IAAI,QAAQ,aAAa;AAAA,IACnC;AACD,UAAM,kBAAkB,mBAAmB,OAAO;AAClD,QAAI,oBAAoB,kBAAkB,YAAY;AACpD,UAAI,cAAc,qBAAqB,QAAQ;AAC7C,sBAAc,mBAAmB;AAAA,UAC/B,SAAS,IAAI,cAAe;AAAA,UAC5B,WAAW;AAAA,QACrB;AACQ,aAAK,OAAO;AACZ,sBAAc;AAAA,MACf;AACD,oBAAc,iBAAiB;AAC/B,YAAM,eAAe,cAAc,kBAAkB;AACrD,UAAI,iBAAiB,QAAQ;AAC3B,sBAAc,kBAAkB,YAAY;AAC5C,YAAI,aAAa,cAAc,GAAG;AAChC,wBAAc,OAAO;AAAA,QACtB;AAAA,MACF;AACD,wBAAkB,aAAa;AAC/B,wBAAkB,iBAAiB,cAAc,iBAAiB;AAAA,IACnE;AACD,WAAO;AAAA,EACR;AACD,WAAS,cAAc,mBAAmB,SAAS,MAAM;AACvD,QAAI,cAAc;AAClB,QAAI,QAAQ;AACV,oBAAc;AAChB,QAAI,QAAQ;AACV,oBAAc;AAChB,UAAM,cAAc,YAAY,mBAAmB,OAAO;AAC1D,UAAM,SAAS,QAAQ;AACvB,UAAM,cAAc,QAAQ,IAAI;AAChC,UAAM,YAAY,aAAa,kBAAkB,cAAc;AAC/D,QAAI,OAAO,YAAY,OAAO,oBAAoB,gBAAgB,MAAM;AACtE,UAAI,YAAY,OAAO,QAAQ,KAAK;AACpC,UAAI,YAAY,OAAO,QAAQ,gBAAgB;AAC/C,UAAI,YAAY,MAAM,QAAQ,eAAe;AAC7C,UAAI,YAAY,OAAO,CAAC;AACxB,YAAM,kBAAkB,uBAAuB,OAAO,KAAK,eAAe,QAAQ,KAAK,MAAM;AAC7F,UAAI,QAAQ,YAAY,QAAQ,OAAO,iBAAiB,OAAO,cAAc;AAC7E,cAAQ,iBAAiB,SAAS,KAAK;AACvC,YAAM,eAAe,eAAe,KAAK,KAAK,UAAU,WAAW,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ;AAClH,UAAI,SAAS,OAAO,QAAQ,QAAQ,IAAI,GAAG,mBAAmB,kBAAkB,QAAQ,gBAAgB,UAAU,QAAQ,QAAQ,UAAU,QAAQ,cAAc;AAClK,2BAAqB,aAAa,SAAS,YAAY;AACvD,UAAI;AACJ,YAAM,UAAU,QAAQ;AACxB,YAAM,gBAAgB,YAAY,QAAQ,mBAAmB;AAC7D,YAAM,iBAAiB,OAAO,qBAAqB,UAAU,gBAAgB;AAC7E,YAAM,SAAS,aAAa,SAAS,OAAO,YAAY;AACxD,UAAI,QAAQ,gBAAgB;AAC1B,2BAAmB;AACnB,YAAI,UAAU;AACZ,cAAI,QAAQ,SAAS,WAAW;AAC9B,+BAAmB;AAAA,UAC/B,WAAqB,QAAQ,SAAS,iBAAiB;AAC3C,+BAAmB;AAAA,UAC/B,WAAqB,QAAQ,SAAS,oBAAoB;AAC9C,+BAAmB;AAAA,UAC/B,OAAiB;AACL,+BAAmB;AAAA,UACpB;AAAA,QACX,OAAe;AACL,cAAI,QAAQ,SAAS,WAAW;AAC9B,oBAAQ,MAAM,8DAA8D;AAAA,UAC7E;AAAA,QACF;AACD,YAAI,QAAQ,WAAW,eAAe,qBAAqB,MAAM;AAC/D,cAAI,QAAQ,SAAS,qBAAqB,QAAQ,SAAS,iBAAiB;AAC1E,oBAAQ,KAAK,6FAA6F;AAC1G,oBAAQ,OAAO;AACf,qBAAS,OAAO,QAAQ,QAAQ,IAAI;AAAA,UACrC;AAAA,QACF;AACD,YAAI,QAAQ,WAAW,sBAAsB,qBAAqB,MAAM;AACtE,6BAAmB;AACnB,cAAI,QAAQ,SAAS,oBAAoB;AACvC,oBAAQ,KAAK,kFAAkF;AAC/F,oBAAQ,OAAO;AACf,qBAAS,OAAO,QAAQ,QAAQ,IAAI;AAAA,UACrC;AAAA,QACF;AACD,YAAI,gBAAgB;AAClB,cAAI,eAAe;AACjB,kBAAM,aAAa,MAAM,GAAG,kBAAkB,MAAM,OAAO,MAAM,MAAM;AAAA,UACnF,OAAiB;AACL,kBAAM,WAAW,MAAM,GAAG,kBAAkB,MAAM,OAAO,MAAM,QAAQ,GAAG,UAAU,QAAQ,IAAI;AAAA,UACjG;AAAA,QACF;AAAA,MACT,WAAiB,QAAQ,eAAe;AAChC,YAAI,QAAQ,SAAS,KAAK,cAAc;AACtC,cAAI,iBAAiB,gBAAgB;AACnC,kBAAM,aAAa,MAAM,QAAQ,kBAAkB,QAAQ,GAAG,OAAO,QAAQ,GAAG,MAAM;AAAA,UACvF;AACD,mBAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK;AAChD,qBAAS,QAAQ;AACjB,gBAAI,eAAe;AACjB,oBAAM,cAAc,MAAM,GAAG,GAAG,GAAG,OAAO,OAAO,OAAO,QAAQ,UAAU,QAAQ,OAAO,IAAI;AAAA,YAC3G,OAAmB;AACL,oBAAM,WAAW,MAAM,GAAG,kBAAkB,OAAO,OAAO,OAAO,QAAQ,GAAG,UAAU,QAAQ,OAAO,IAAI;AAAA,YAC1G;AAAA,UACF;AACD,kBAAQ,kBAAkB;AAAA,QACpC,OAAe;AACL,cAAI,eAAe;AACjB,gBAAI,gBAAgB;AAClB,oBAAM,aAAa,MAAM,QAAQ,kBAAkB,MAAM,OAAO,MAAM,MAAM;AAAA,YAC7E;AACD,kBAAM,cAAc,MAAM,GAAG,GAAG,GAAG,MAAM,OAAO,MAAM,QAAQ,UAAU,QAAQ,MAAM,IAAI;AAAA,UACtG,OAAiB;AACL,kBAAM,WAAW,MAAM,GAAG,kBAAkB,MAAM,OAAO,MAAM,QAAQ,GAAG,UAAU,QAAQ,MAAM,IAAI;AAAA,UACvG;AAAA,QACF;AAAA,MACT,WAAiB,QAAQ,qBAAqB;AACtC,YAAI,iBAAiB,gBAAgB;AACnC,gBAAM,aAAa,MAAM,QAAQ,kBAAkB,QAAQ,GAAG,OAAO,QAAQ,GAAG,MAAM;AAAA,QACvF;AACD,iBAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK;AAChD,mBAAS,QAAQ;AACjB,cAAI,QAAQ,WAAW,YAAY;AACjC,gBAAI,aAAa,MAAM;AACrB,kBAAI,eAAe;AACjB,sBAAM,wBAAwB,MAAM,GAAG,GAAG,GAAG,OAAO,OAAO,OAAO,QAAQ,UAAU,OAAO,IAAI;AAAA,cAC/G,OAAqB;AACL,sBAAM,qBAAqB,MAAM,GAAG,kBAAkB,OAAO,OAAO,OAAO,QAAQ,GAAG,OAAO,IAAI;AAAA,cAClG;AAAA,YACf,OAAmB;AACL,sBAAQ,KAAK,gGAAgG;AAAA,YAC9G;AAAA,UACb,OAAiB;AACL,gBAAI,eAAe;AACjB,oBAAM,cAAc,MAAM,GAAG,GAAG,GAAG,OAAO,OAAO,OAAO,QAAQ,UAAU,QAAQ,OAAO,IAAI;AAAA,YAC3G,OAAmB;AACL,oBAAM,WAAW,MAAM,GAAG,kBAAkB,OAAO,OAAO,OAAO,QAAQ,GAAG,UAAU,QAAQ,OAAO,IAAI;AAAA,YAC1G;AAAA,UACF;AAAA,QACF;AAAA,MACT,WAAiB,QAAQ,oBAAoB;AACrC,YAAI,eAAe;AACjB,cAAI,gBAAgB;AAClB,kBAAM,aAAa,OAAO,QAAQ,kBAAkB,MAAM,OAAO,MAAM,QAAQ,MAAM,KAAK;AAAA,UAC3F;AACD,gBAAM,cAAc,OAAO,GAAG,GAAG,GAAG,GAAG,MAAM,OAAO,MAAM,QAAQ,MAAM,OAAO,UAAU,QAAQ,MAAM,IAAI;AAAA,QACrH,OAAe;AACL,gBAAM,WAAW,OAAO,GAAG,kBAAkB,MAAM,OAAO,MAAM,QAAQ,MAAM,OAAO,GAAG,UAAU,QAAQ,MAAM,IAAI;AAAA,QACrH;AAAA,MACT,WAAiB,QAAQ,iBAAiB;AAClC,YAAI,eAAe;AACjB,cAAI,gBAAgB;AAClB,kBAAM,aAAa,OAAO,QAAQ,kBAAkB,MAAM,OAAO,MAAM,QAAQ,MAAM,KAAK;AAAA,UAC3F;AACD,gBAAM,cAAc,OAAO,GAAG,GAAG,GAAG,GAAG,MAAM,OAAO,MAAM,QAAQ,MAAM,OAAO,UAAU,QAAQ,MAAM,IAAI;AAAA,QACrH,OAAe;AACL,gBAAM,WAAW,OAAO,GAAG,kBAAkB,MAAM,OAAO,MAAM,QAAQ,MAAM,OAAO,GAAG,UAAU,QAAQ,MAAM,IAAI;AAAA,QACrH;AAAA,MACT,WAAiB,QAAQ,sBAAsB;AACvC,YAAI,gBAAgB;AAClB,cAAI,eAAe;AACjB,kBAAM,aAAa,MAAM,QAAQ,kBAAkB,MAAM,OAAO,MAAM,MAAM;AAAA,UACxF,OAAiB;AACL,gBAAI,QAAQ,MAAM,OAAO,SAAS,MAAM;AACxC,qBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,oBAAM,WAAW,MAAM,GAAG,kBAAkB,OAAO,QAAQ,GAAG,UAAU,QAAQ,IAAI;AACpF,wBAAU;AACV,yBAAW;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,MACT,OAAa;AACL,YAAI,QAAQ,SAAS,KAAK,cAAc;AACtC,cAAI,iBAAiB,gBAAgB;AACnC,kBAAM,aAAa,MAAM,QAAQ,kBAAkB,QAAQ,GAAG,OAAO,QAAQ,GAAG,MAAM;AAAA,UACvF;AACD,mBAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,KAAK;AAChD,qBAAS,QAAQ;AACjB,gBAAI,eAAe;AACjB,oBAAM,cAAc,MAAM,GAAG,GAAG,GAAG,UAAU,QAAQ,MAAM;AAAA,YACzE,OAAmB;AACL,oBAAM,WAAW,MAAM,GAAG,kBAAkB,UAAU,QAAQ,MAAM;AAAA,YACrE;AAAA,UACF;AACD,kBAAQ,kBAAkB;AAAA,QACpC,OAAe;AACL,cAAI,eAAe;AACjB,gBAAI,gBAAgB;AAClB,oBAAM,aAAa,MAAM,QAAQ,kBAAkB,MAAM,OAAO,MAAM,MAAM;AAAA,YAC7E;AACD,kBAAM,cAAc,MAAM,GAAG,GAAG,GAAG,UAAU,QAAQ,KAAK;AAAA,UACtE,OAAiB;AACL,kBAAM,WAAW,MAAM,GAAG,kBAAkB,UAAU,QAAQ,KAAK;AAAA,UACpE;AAAA,QACF;AAAA,MACF;AACD,UAAI,4BAA4B,SAAS,YAAY,GAAG;AACtD,uBAAe,WAAW;AAAA,MAC3B;AACD,aAAO,mBAAmB,OAAO;AACjC,UAAI,QAAQ;AACV,gBAAQ,SAAS,OAAO;AAAA,IAC3B;AACD,sBAAkB,YAAY,QAAQ;AAAA,EACvC;AACD,WAAS,kBAAkB,mBAAmB,SAAS,MAAM;AAC3D,QAAI,QAAQ,MAAM,WAAW;AAC3B;AACF,UAAM,cAAc,YAAY,mBAAmB,OAAO;AAC1D,UAAM,SAAS,QAAQ;AACvB,UAAM,cAAc,QAAQ,IAAI;AAChC,UAAM,YAAY,OAAO,kBAAkB,cAAc;AACzD,QAAI,OAAO,YAAY,OAAO,oBAAoB,gBAAgB,MAAM;AACtE,UAAI,YAAY,OAAO,QAAQ,KAAK;AACpC,UAAI,YAAY,OAAO,QAAQ,gBAAgB;AAC/C,UAAI,YAAY,MAAM,QAAQ,eAAe;AAC7C,UAAI,YAAY,OAAO,CAAC;AACxB,YAAM,eAAe,QAAQ,uBAAuB,QAAQ,MAAM,GAAG;AACrE,YAAM,gBAAgB,QAAQ,MAAM,MAAM,QAAQ,MAAM,GAAG;AAC3D,YAAM,YAAY,CAAA;AAClB,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAI,CAAC,gBAAgB,CAAC,eAAe;AACnC,oBAAU,KAAK,YAAY,QAAQ,MAAM,IAAI,OAAO,MAAM,cAAc;AAAA,QAClF,OAAe;AACL,oBAAU,KAAK,gBAAgB,QAAQ,MAAM,GAAG,QAAQ,QAAQ,MAAM;AAAA,QACvE;AACD,kBAAU,KAAK,iBAAiB,SAAS,UAAU,EAAE;AAAA,MACtD;AACD,YAAM,QAAQ,UAAU,IAAI,eAAe,eAAe,KAAK,KAAK,UAAU,WAAW,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,GAAG,SAAS,OAAO,QAAQ,QAAQ,IAAI,GAAG,mBAAmB,kBAAkB,QAAQ,gBAAgB,UAAU,QAAQ,QAAQ,QAAQ;AACjR,YAAM,gBAAgB,YAAY,QAAQ,mBAAmB;AAC7D,YAAM,iBAAiB,OAAO,qBAAqB,UAAU,gBAAgB;AAC7E,UAAI,SAAS,aAAa,SAAS,OAAO,YAAY;AACtD,2BAAqB,OAAO,SAAS,YAAY;AACjD,UAAI;AACJ,UAAI,cAAc;AAChB,YAAI,iBAAiB,gBAAgB;AACnC,gBAAM,aAAa,OAAO,QAAQ,kBAAkB,MAAM,OAAO,MAAM,MAAM;AAAA,QAC9E;AACD,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,oBAAU,UAAU,GAAG;AACvB,mBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,kBAAM,SAAS,QAAQ;AACvB,gBAAI,QAAQ,WAAW,YAAY;AACjC,kBAAI,aAAa,MAAM;AACrB,oBAAI,eAAe;AACjB,wBAAM,wBAAwB,QAAQ,GAAG,GAAG,GAAG,GAAG,OAAO,OAAO,OAAO,QAAQ,UAAU,OAAO,IAAI;AAAA,gBACtH,OAAuB;AACL,wBAAM,qBAAqB,QAAQ,GAAG,GAAG,kBAAkB,OAAO,OAAO,OAAO,QAAQ,GAAG,OAAO,IAAI;AAAA,gBACvG;AAAA,cACjB,OAAqB;AACL,wBAAQ,KAAK,iGAAiG;AAAA,cAC/G;AAAA,YACf,OAAmB;AACL,kBAAI,eAAe;AACjB,sBAAM,cAAc,QAAQ,GAAG,GAAG,GAAG,GAAG,OAAO,OAAO,OAAO,QAAQ,UAAU,QAAQ,OAAO,IAAI;AAAA,cAClH,OAAqB;AACL,sBAAM,WAAW,QAAQ,GAAG,GAAG,kBAAkB,OAAO,OAAO,OAAO,QAAQ,GAAG,UAAU,QAAQ,OAAO,IAAI;AAAA,cAC/G;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACT,OAAa;AACL,kBAAU,QAAQ;AAClB,YAAI,iBAAiB,gBAAgB;AACnC,cAAI,QAAQ,SAAS;AACnB;AACF,gBAAM,aAAa,OAAO,QAAQ,kBAAkB,UAAU,GAAG,OAAO,UAAU,GAAG,MAAM;AAAA,QAC5F;AACD,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,cAAI,eAAe;AACjB,gBAAI,eAAe;AACjB,oBAAM,cAAc,QAAQ,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,OAAO,UAAU,GAAG,QAAQ,UAAU,QAAQ,UAAU,GAAG,IAAI;AAAA,YAClI,OAAmB;AACL,oBAAM,WAAW,QAAQ,GAAG,GAAG,kBAAkB,UAAU,GAAG,OAAO,UAAU,GAAG,QAAQ,GAAG,UAAU,QAAQ,UAAU,GAAG,IAAI;AAAA,YACjI;AACD,qBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,oBAAM,SAAS,QAAQ;AACvB,oBAAM,cAAc,OAAO,MAAM,GAAG;AACpC,kBAAI,eAAe;AACjB,sBAAM,cAAc,QAAQ,GAAG,IAAI,GAAG,GAAG,GAAG,YAAY,OAAO,YAAY,QAAQ,UAAU,QAAQ,YAAY,IAAI;AAAA,cACrI,OAAqB;AACL,sBAAM,WAAW,QAAQ,GAAG,IAAI,GAAG,kBAAkB,YAAY,OAAO,YAAY,QAAQ,GAAG,UAAU,QAAQ,YAAY,IAAI;AAAA,cAClI;AAAA,YACF;AAAA,UACb,OAAiB;AACL,gBAAI,eAAe;AACjB,oBAAM,cAAc,QAAQ,GAAG,GAAG,GAAG,GAAG,UAAU,QAAQ,UAAU,EAAE;AAAA,YACpF,OAAmB;AACL,oBAAM,WAAW,QAAQ,GAAG,GAAG,kBAAkB,UAAU,QAAQ,UAAU,EAAE;AAAA,YAChF;AACD,qBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,oBAAM,SAAS,QAAQ;AACvB,kBAAI,eAAe;AACjB,sBAAM,cAAc,QAAQ,GAAG,IAAI,GAAG,GAAG,GAAG,UAAU,QAAQ,OAAO,MAAM,EAAE;AAAA,cAC7F,OAAqB;AACL,sBAAM,WAAW,QAAQ,GAAG,IAAI,GAAG,kBAAkB,UAAU,QAAQ,OAAO,MAAM,EAAE;AAAA,cACvF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACD,UAAI,4BAA4B,SAAS,YAAY,GAAG;AACtD,uBAAe,KAAK;AAAA,MACrB;AACD,aAAO,mBAAmB,OAAO;AACjC,UAAI,QAAQ;AACV,gBAAQ,SAAS,OAAO;AAAA,IAC3B;AACD,sBAAkB,YAAY,QAAQ;AAAA,EACvC;AACD,WAAS,wBAAwB,aAAa,cAAc,SAAS,YAAY,eAAe;AAC9F,UAAM,WAAW,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ;AAChE,UAAM,SAAS,OAAO,QAAQ,QAAQ,IAAI;AAC1C,UAAM,mBAAmB,kBAAkB,QAAQ,gBAAgB,UAAU,QAAQ,QAAQ,QAAQ;AACrG,UAAM,yBAAyB,WAAW,IAAI,YAAY;AAC1D,QAAI,CAAC,uBAAuB,uBAAuB;AACjD,UAAI,kBAAkB,SAAS,kBAAkB,OAAO;AACtD,cAAM,WAAW,eAAe,GAAG,kBAAkB,aAAa,OAAO,aAAa,QAAQ,aAAa,OAAO,GAAG,UAAU,QAAQ,IAAI;AAAA,MACnJ,OAAa;AACL,cAAM,WAAW,eAAe,GAAG,kBAAkB,aAAa,OAAO,aAAa,QAAQ,GAAG,UAAU,QAAQ,IAAI;AAAA,MACxH;AAAA,IACF;AACD,UAAM,gBAAgB,OAAO,WAAW;AACxC,QAAI,mBAAmB,YAAY,GAAG;AACpC,yBAAmB,mCAAmC,OAAO,YAAY,eAAe,WAAW,IAAI,OAAO,EAAE,gBAAgB,GAAG,uBAAuB,YAAY,CAAC;AAAA,IAC7K,OAAW;AACL,UAAI,qBAAqB,OAAO,YAAY,eAAe,WAAW,IAAI,OAAO,EAAE,gBAAgB,CAAC;AAAA,IACrG;AACD,UAAM,gBAAgB,OAAO,IAAI;AAAA,EAClC;AACD,WAAS,yBAAyB,cAAc,cAAc,eAAe;AAC3E,QAAI,iBAAiB,OAAO,YAAY;AACxC,QAAI,aAAa,eAAe,CAAC,aAAa,eAAe;AAC3D,UAAI,mBAAmB;AACvB,UAAI,iBAAiB,mBAAmB,YAAY,GAAG;AACrD,cAAM,eAAe,aAAa;AAClC,YAAI,gBAAgB,aAAa,gBAAgB;AAC/C,cAAI,aAAa,SAAS,WAAW;AACnC,+BAAmB;AAAA,UAC/B,WAAqB,aAAa,SAAS,iBAAiB;AAChD,+BAAmB;AAAA,UACpB;AAAA,QACF;AACD,cAAM,UAAU,uBAAuB,YAAY;AACnD,YAAI,mBAAmB,YAAY,GAAG;AACpC,6BAAmB,kCAAkC,OAAO,SAAS,kBAAkB,aAAa,OAAO,aAAa,MAAM;AAAA,QACxI,OAAe;AACL,cAAI,+BAA+B,OAAO,SAAS,kBAAkB,aAAa,OAAO,aAAa,MAAM;AAAA,QAC7G;AAAA,MACT,OAAa;AACL,YAAI,oBAAoB,OAAO,kBAAkB,aAAa,OAAO,aAAa,MAAM;AAAA,MACzF;AACD,UAAI,wBAAwB,OAAO,OAAO,OAAO,YAAY;AAAA,IAC9D,WAAU,aAAa,eAAe,aAAa,eAAe;AACjE,YAAM,UAAU,uBAAuB,YAAY;AACnD,UAAI,iBAAiB,mBAAmB,YAAY,MAAM,OAAO;AAC/D,YAAI,+BAA+B,OAAO,SAAS,OAAO,aAAa,OAAO,aAAa,MAAM;AAAA,MACzG,WAAiB,mBAAmB,YAAY,GAAG;AAC3C,2BAAmB,kCAAkC,OAAO,SAAS,OAAO,aAAa,OAAO,aAAa,MAAM;AAAA,MAC3H,OAAa;AACL,YAAI,oBAAoB,OAAO,OAAO,aAAa,OAAO,aAAa,MAAM;AAAA,MAC9E;AACD,UAAI,wBAAwB,OAAO,OAAO,OAAO,YAAY;AAAA,IACnE,OAAW;AACL,YAAM,WAAW,aAAa,iCAAiC,OAAO,aAAa,UAAU,CAAC,aAAa,OAAO;AAClH,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,cAAM,UAAU,SAAS;AACzB,cAAM,WAAW,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ;AAChE,cAAM,SAAS,OAAO,QAAQ,QAAQ,IAAI;AAC1C,cAAM,mBAAmB,kBAAkB,QAAQ,gBAAgB,UAAU,QAAQ,QAAQ,QAAQ;AACrG,cAAM,UAAU,uBAAuB,YAAY;AACnD,YAAI,iBAAiB,mBAAmB,YAAY,MAAM,OAAO;AAC/D,cAAI,+BAA+B,OAAO,SAAS,kBAAkB,aAAa,OAAO,aAAa,MAAM;AAAA,QACtH,WAAmB,mBAAmB,YAAY,GAAG;AAC3C,6BAAmB,kCAAkC,OAAO,SAAS,kBAAkB,aAAa,OAAO,aAAa,MAAM;AAAA,QACxI,OAAe;AACL,cAAI,oBAAoB,OAAO,kBAAkB,aAAa,OAAO,aAAa,MAAM;AAAA,QACzF;AAAA,MACF;AAAA,IACF;AACD,QAAI,iBAAiB,OAAO,IAAI;AAAA,EACjC;AACD,WAAS,kBAAkB,aAAa,cAAc;AACpD,UAAM,SAAS,gBAAgB,aAAa;AAC5C,QAAI;AACF,YAAM,IAAI,MAAM,yDAAyD;AAC3E,UAAM,gBAAgB,OAAO,WAAW;AACxC,QAAI,EAAE,aAAa,gBAAgB,aAAa,aAAa,iBAAiB;AAC5E,YAAM,IAAI,MAAM,qEAAqE;AAAA,IACtF;AACD,QAAI,CAAC,WAAW,IAAI,aAAa,YAAY,EAAE,kBAAkB,aAAa,aAAa,MAAM,UAAU,aAAa,SAAS,aAAa,aAAa,MAAM,WAAW,aAAa,QAAQ;AAC/L,mBAAa,aAAa,MAAM,QAAQ,aAAa;AACrD,mBAAa,aAAa,MAAM,SAAS,aAAa;AACtD,mBAAa,aAAa,cAAc;AAAA,IACzC;AACD,iBAAa,aAAa,cAAc,CAAC;AACzC,UAAM,oBAAoB,WAAW,IAAI,aAAa,YAAY,EAAE;AACpE,UAAM,UAAU,uBAAuB,YAAY;AACnD,QAAI,aAAa,aAAa,WAAW,aAAa;AACpD,UAAI,mBAAmB,YAAY,GAAG;AACpC,2BAAmB,mCAAmC,OAAO,OAAO,MAAM,mBAAmB,GAAG,OAAO;AAAA,MAC/G,OAAa;AACL,YAAI,qBAAqB,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAAA,MAClE;AAAA,IACF,WAAU,aAAa,aAAa,WAAW,oBAAoB;AAClE,UAAI,mBAAmB,YAAY,GAAG;AACpC,2BAAmB,mCAAmC,OAAO,OAAO,MAAM,mBAAmB,GAAG,OAAO;AAAA,MAC/G,OAAa;AACL,YAAI,qBAAqB,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAAA,MAClE;AAAA,IACP,OAAW;AACL,YAAM,IAAI,MAAM,6BAA6B;AAAA,IAC9C;AAAA,EACF;AACD,WAAS,uBAAuB,cAAc;AAC5C,UAAM,yBAAyB,WAAW,IAAI,YAAY;AAC1D,UAAM,SAAS,aAAa,4BAA4B;AACxD,QAAI,aAAa,gBAAgB,CAAC,uBAAuB,2BAA2B;AAClF,UAAI;AACF,cAAM,IAAI,MAAM,0DAA0D;AAC5E,wBAAkB,uBAAuB,oBAAoB,YAAY;AAAA,IAC/E,OAAW;AACL,UAAI,QAAQ;AACV,+BAAuB,qBAAqB;AAC5C,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gBAAM,gBAAgB,OAAO,uBAAuB,mBAAmB,EAAE;AACzE,iCAAuB,mBAAmB,KAAK,IAAI,mBAAkB;AACrE,mCAAyB,uBAAuB,mBAAmB,IAAI,cAAc,KAAK;AAAA,QAC3F;AAAA,MACT,OAAa;AACL,cAAM,gBAAgB,OAAO,uBAAuB,kBAAkB;AACtE,+BAAuB,qBAAqB,IAAI;AAChD,iCAAyB,uBAAuB,oBAAoB,cAAc,KAAK;AAAA,MACxF;AAAA,IACF;AACD,UAAM,gBAAgB,OAAO,IAAI;AAAA,EAClC;AACD,WAAS,eAAe,cAAc,cAAc,cAAc;AAChE,UAAM,yBAAyB,WAAW,IAAI,YAAY;AAC1D,QAAI,iBAAiB,QAAQ;AAC3B,8BAAwB,uBAAuB,oBAAoB,cAAc,aAAa,SAAS,OAAO,IAAI;AAAA,IACnH;AACD,QAAI,iBAAiB,QAAQ;AAC3B,6BAAuB,YAAY;AAAA,IACpC;AAAA,EACF;AACD,WAAS,kBAAkB,cAAc;AACvC,UAAM,UAAU,aAAa;AAC7B,UAAM,yBAAyB,WAAW,IAAI,YAAY;AAC1D,UAAM,oBAAoB,WAAW,IAAI,OAAO;AAChD,iBAAa,iBAAiB,WAAW,qBAAqB;AAC9D,QAAI,aAAa,iCAAiC,MAAM;AACtD,UAAI,kBAAkB,mBAAmB,QAAQ;AAC/C,0BAAkB,iBAAiB,IAAI;MACxC;AACD,wBAAkB,YAAY,QAAQ;AACtC,WAAK,OAAO;AAAA,IACb;AACD,UAAM,SAAS,aAAa,4BAA4B;AACxD,UAAM,0BAA0B,aAAa,iCAAiC;AAC9E,UAAM,eAAe,eAAe,YAAY,KAAK;AACrD,QAAI,QAAQ;AACV,6BAAuB,qBAAqB;AAC5C,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,+BAAuB,mBAAmB,KAAK,IAAI,kBAAiB;AAAA,MACrE;AAAA,IACP,OAAW;AACL,6BAAuB,qBAAqB,IAAI;AAChD,UAAI,yBAAyB;AAC3B,YAAI,aAAa,aAAa;AAC5B,gBAAM,WAAW,aAAa;AAC9B,mBAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,KAAK;AACjD,kBAAM,uBAAuB,WAAW,IAAI,SAAS,EAAE;AACvD,gBAAI,qBAAqB,mBAAmB,QAAQ;AAClD,mCAAqB,iBAAiB,IAAI;AAC1C,mBAAK,OAAO;AAAA,YACb;AAAA,UACF;AAAA,QACX,OAAe;AACL,kBAAQ,KAAK,+GAA+G;AAAA,QAC7H;AAAA,MACF;AACD,UAAI,YAAY,aAAa,UAAU,KAAK,mBAAmB,YAAY,MAAM,OAAO;AACtF,cAAM,WAAW,0BAA0B,UAAU,CAAC,OAAO;AAC7D,+BAAuB,iCAAiC,IAAI;AAC5D,+BAAuB,2BAA2B;AAClD,cAAM,gBAAgB,OAAO,uBAAuB,8BAA8B;AAClF,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,gBAAM,WAAW,SAAS;AAC1B,iCAAuB,yBAAyB,KAAK,IAAI,mBAAkB;AAC3E,cAAI,iBAAiB,OAAO,uBAAuB,yBAAyB,EAAE;AAC9E,gBAAM,WAAW,OAAO,QAAQ,SAAS,QAAQ,SAAS,QAAQ;AAClE,gBAAM,SAAS,OAAO,QAAQ,SAAS,IAAI;AAC3C,gBAAM,mBAAmB,kBAAkB,SAAS,gBAAgB,UAAU,QAAQ,SAAS,QAAQ;AACvG,gBAAM,UAAU,uBAAuB,YAAY;AACnD,cAAI,+BAA+B,OAAO,SAAS,kBAAkB,aAAa,OAAO,aAAa,MAAM;AAC5G,cAAI,wBAAwB,OAAO,QAAQ,GAAG,OAAO,uBAAuB,yBAAyB,EAAE;AAAA,QACxG;AACD,YAAI,iBAAiB,OAAO,IAAI;AAChC,YAAI,aAAa,aAAa;AAC5B,iCAAuB,2BAA2B,IAAI;AACtD,mCAAyB,uBAAuB,0BAA0B,cAAc,IAAI;AAAA,QAC7F;AACD,cAAM,gBAAgB,OAAO,IAAI;AAAA,MAClC;AAAA,IACF;AACD,QAAI,QAAQ;AACV,YAAM,YAAY,OAAO,kBAAkB,cAAc;AACzD,2BAAqB,OAAO,SAAS,YAAY;AACjD,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gCAAwB,uBAAuB,mBAAmB,IAAI,cAAc,SAAS,OAAO,QAAQ,CAAC;AAAA,MAC9G;AACD,UAAI,4BAA4B,SAAS,YAAY,GAAG;AACtD,uBAAe,KAAK;AAAA,MACrB;AACD,YAAM,cAAa;AAAA,IACpB,WAAU,yBAAyB;AAClC,YAAM,WAAW,aAAa;AAC9B,eAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,KAAK;AACjD,cAAM,aAAa,SAAS;AAC5B,cAAM,uBAAuB,WAAW,IAAI,UAAU;AACtD,cAAM,YAAY,MAAM,qBAAqB,cAAc;AAC3D,6BAAqB,MAAM,YAAY,YAAY;AACnD,gCAAwB,uBAAuB,oBAAoB,cAAc,YAAY,QAAQ,GAAG,IAAI;AAC5G,YAAI,4BAA4B,YAAY,YAAY,GAAG;AACzD,yBAAe,IAAI;AAAA,QACpB;AAAA,MACF;AACD,YAAM,cAAa;AAAA,IACzB,OAAW;AACL,UAAI,gBAAgB;AACpB,UAAI,aAAa,yBAAyB,aAAa,0BAA0B;AAC/E,YAAI,UAAU;AACZ,0BAAgB,aAAa,wBAAwB,QAAQ;AAAA,QACvE,OAAe;AACL,kBAAQ,MAAM,iGAAiG;AAAA,QAChH;AAAA,MACF;AACD,YAAM,YAAY,eAAe,kBAAkB,cAAc;AACjE,2BAAqB,eAAe,SAAS,YAAY;AACzD,8BAAwB,uBAAuB,oBAAoB,cAAc,SAAS,OAAO,aAAa;AAC9G,UAAI,4BAA4B,SAAS,YAAY,GAAG;AACtD,uBAAe,aAAa;AAAA,MAC7B;AACD,YAAM,cAAa;AAAA,IACpB;AACD,QAAI,aAAa,aAAa;AAC5B,6BAAuB,YAAY;AAAA,IACpC;AAAA,EACF;AACD,WAAS,yBAAyB,cAAc;AAC9C,UAAM,eAAe,eAAe,YAAY,KAAK;AACrD,UAAM,WAAW,aAAa,iCAAiC,OAAO,aAAa,UAAU,CAAC,aAAa,OAAO;AAClH,aAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,KAAK;AACjD,YAAM,UAAU,SAAS;AACzB,UAAI,4BAA4B,SAAS,YAAY,GAAG;AACtD,cAAM,SAAS,aAAa,0BAA0B,QAAQ;AAC9D,cAAM,eAAe,WAAW,IAAI,OAAO,EAAE;AAC7C,cAAM,YAAY,QAAQ,YAAY;AACtC,uBAAe,MAAM;AACrB,cAAM,cAAa;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AACD,WAAS,8BAA8B,cAAc;AACnD,QAAI,YAAY,aAAa,UAAU,KAAK,mBAAmB,YAAY,MAAM,OAAO;AACtF,YAAM,WAAW,aAAa,+BAA+B,aAAa,UAAU,CAAC,aAAa,OAAO;AACzG,YAAM,QAAQ,aAAa;AAC3B,YAAM,SAAS,aAAa;AAC5B,UAAI,OAAO;AACX,YAAM,oBAAoB,CAAA;AAC1B,YAAM,aAAa,aAAa,gBAAgB,QAAQ;AACxD,YAAM,yBAAyB,WAAW,IAAI,YAAY;AAC1D,YAAM,0BAA0B,aAAa,iCAAiC;AAC9E,UAAI,yBAAyB;AAC3B,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,gBAAM,gBAAgB,OAAO,uBAAuB,8BAA8B;AAClF,cAAI,wBAAwB,OAAO,QAAQ,GAAG,OAAO,IAAI;AACzD,gBAAM,gBAAgB,OAAO,uBAAuB,kBAAkB;AACtE,cAAI,qBAAqB,OAAO,QAAQ,GAAG,MAAM,MAAM,CAAC;AAAA,QACzD;AAAA,MACF;AACD,YAAM,gBAAgB,OAAO,uBAAuB,8BAA8B;AAClF,YAAM,gBAAgB,OAAO,uBAAuB,kBAAkB;AACtE,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,0BAAkB,KAAK,QAAQ,CAAC;AAChC,YAAI,aAAa,aAAa;AAC5B,4BAAkB,KAAK,UAAU;AAAA,QAClC;AACD,cAAM,oBAAoB,uBAAuB,wBAAwB,SAAS,uBAAuB,sBAAsB;AAC/H,YAAI,sBAAsB,OAAO;AAC/B,cAAI,aAAa;AACf,oBAAQ;AACV,cAAI,aAAa;AACf,oBAAQ;AAAA,QACX;AACD,YAAI,yBAAyB;AAC3B,cAAI,wBAAwB,OAAO,OAAO,OAAO,uBAAuB,yBAAyB,EAAE;AAAA,QACpG;AACD,YAAI,sBAAsB,MAAM;AAC9B,cAAI,sBAAsB,OAAO,CAAC,UAAU,CAAC;AAC7C,cAAI,sBAAsB,OAAO,CAAC,UAAU,CAAC;AAAA,QAC9C;AACD,YAAI,yBAAyB;AAC3B,gBAAM,eAAe,WAAW,IAAI,SAAS,EAAE,EAAE;AACjD,cAAI,qBAAqB,OAAO,OAAO,MAAM,cAAc,CAAC;AAAA,QAC7D;AACD,YAAI,gBAAgB,GAAG,GAAG,OAAO,QAAQ,GAAG,GAAG,OAAO,QAAQ,MAAM,IAAI;AACxE,YAAI,+BAA+B;AACjC,cAAI,sBAAsB,OAAO,iBAAiB;AAAA,QACnD;AAAA,MACF;AACD,YAAM,gBAAgB,OAAO,IAAI;AACjC,YAAM,gBAAgB,OAAO,IAAI;AACjC,UAAI,yBAAyB;AAC3B,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,gBAAM,gBAAgB,OAAO,uBAAuB,8BAA8B;AAClF,cAAI,wBAAwB,OAAO,QAAQ,GAAG,OAAO,uBAAuB,yBAAyB,EAAE;AACvG,gBAAM,eAAe,WAAW,IAAI,SAAS,EAAE,EAAE;AACjD,gBAAM,gBAAgB,OAAO,uBAAuB,kBAAkB;AACtE,cAAI,qBAAqB,OAAO,QAAQ,GAAG,MAAM,cAAc,CAAC;AAAA,QACjE;AAAA,MACF;AACD,YAAM,gBAAgB,OAAO,uBAAuB,8BAA8B;AAAA,IACnF;AAAA,EACF;AACD,WAAS,uBAAuB,cAAc;AAC5C,WAAO,KAAK,IAAI,YAAY,aAAa,OAAO;AAAA,EACjD;AACD,WAAS,mBAAmB,cAAc;AACxC,UAAM,yBAAyB,WAAW,IAAI,YAAY;AAC1D,WAAO,YAAY,aAAa,UAAU,KAAK,WAAW,IAAI,sCAAsC,MAAM,QAAQ,uBAAuB,yBAAyB;AAAA,EACnK;AACD,WAAS,mBAAmB,SAAS;AACnC,UAAM,QAAQ,KAAK,OAAO;AAC1B,QAAI,eAAe,IAAI,OAAO,MAAM,OAAO;AACzC,qBAAe,IAAI,SAAS,KAAK;AACjC,cAAQ,OAAM;AAAA,IACf;AAAA,EACF;AACD,WAAS,iBAAiB,SAAS,OAAO;AACxC,UAAM,WAAW,QAAQ;AACzB,UAAM,SAAS,QAAQ;AACvB,UAAM,OAAO,QAAQ;AACrB,QAAI,QAAQ,wBAAwB,QAAQ,QAAQ,mBAAmB,QAAQ,QAAQ,WAAW;AAChG,aAAO;AACT,QAAI,aAAa,gBAAgB;AAC/B,UAAI,aAAa,cAAc;AAC7B,YAAI,aAAa,OAAO;AACtB,cAAI,WAAW,IAAI,UAAU,MAAM,QAAQ,WAAW,YAAY;AAChE,oBAAQ,SAAS;AACjB,oBAAQ,YAAY;AACpB,oBAAQ,kBAAkB;AAAA,UACtC,OAAiB;AACL,oBAAQ,WAAW,aAAa,KAAK;AAAA,UACtC;AAAA,QACX,OAAe;AACL,cAAI,WAAW,cAAc,SAAS,kBAAkB;AACtD,oBAAQ,KAAK,yFAAyF;AAAA,UACvG;AAAA,QACF;AAAA,MACT,OAAa;AACL,gBAAQ,MAAM,sDAAsD,QAAQ;AAAA,MAC7E;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,OAAK,sBAAsB;AAC3B,OAAK,oBAAoB;AACzB,OAAK,eAAe;AACpB,OAAK,oBAAoB;AACzB,OAAK,eAAe;AACpB,OAAK,iBAAiB;AACtB,OAAK,iBAAiB;AACtB,OAAK,oBAAoB;AACzB,OAAK,2BAA2B;AAChC,OAAK,gCAAgC;AACrC,OAAK,yBAAyB;AAC9B,OAAK,0BAA0B;AAC/B,OAAK,qBAAqB;AAC5B;AACA,SAAS,WAAW,IAAI,YAAY,cAAc;AAChD,QAAM,WAAW,aAAa;AAC9B,WAAS,QAAQ,GAAG,WAAW,MAAM;AACnC,QAAI;AACJ,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM,eAAe;AACvB,UAAI;AACF,eAAO;AACT,kBAAY,WAAW,IAAI,wBAAwB;AACnD,UAAI,cAAc,MAAM;AACtB,eAAO,UAAU;AAAA,MACzB,OAAa;AACL,eAAO;AAAA,MACR;AAAA,IACF;AACD,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM,WAAW;AACnB,cAAQ,KAAK,oIAAoI;AACjJ,aAAO;AAAA,IACR;AACD,QAAI,MAAM,cAAc;AACtB,kBAAY,WAAW,IAAI,UAAU;AACrC,UAAI,cAAc,MAAM;AACtB,eAAO,UAAU;AAAA,MACzB,OAAa;AACL,eAAO;AAAA,MACR;AAAA,IACF;AACD,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM;AACR,aAAO;AACT,QAAI,MAAM,wBAAwB,MAAM,yBAAyB,MAAM,yBAAyB,MAAM,uBAAuB;AAC3H,UAAI,aAAa,cAAc;AAC7B,oBAAY,WAAW,IAAI,oCAAoC;AAC/D,YAAI,cAAc,MAAM;AACtB,cAAI,MAAM;AACR,mBAAO,UAAU;AACnB,cAAI,MAAM;AACR,mBAAO,UAAU;AACnB,cAAI,MAAM;AACR,mBAAO,UAAU;AACnB,cAAI,MAAM;AACR,mBAAO,UAAU;AAAA,QAC7B,OAAe;AACL,iBAAO;AAAA,QACR;AAAA,MACT,OAAa;AACL,oBAAY,WAAW,IAAI,+BAA+B;AAC1D,YAAI,cAAc,MAAM;AACtB,cAAI,MAAM;AACR,mBAAO,UAAU;AACnB,cAAI,MAAM;AACR,mBAAO,UAAU;AACnB,cAAI,MAAM;AACR,mBAAO,UAAU;AACnB,cAAI,MAAM;AACR,mBAAO,UAAU;AAAA,QAC7B,OAAe;AACL,iBAAO;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACD,QAAI,MAAM,2BAA2B,MAAM,2BAA2B,MAAM,4BAA4B,MAAM,0BAA0B;AACtI,kBAAY,WAAW,IAAI,gCAAgC;AAC3D,UAAI,cAAc,MAAM;AACtB,YAAI,MAAM;AACR,iBAAO,UAAU;AACnB,YAAI,MAAM;AACR,iBAAO,UAAU;AACnB,YAAI,MAAM;AACR,iBAAO,UAAU;AACnB,YAAI,MAAM;AACR,iBAAO,UAAU;AAAA,MAC3B,OAAa;AACL,eAAO;AAAA,MACR;AAAA,IACF;AACD,QAAI,MAAM,iBAAiB;AACzB,kBAAY,WAAW,IAAI,+BAA+B;AAC1D,UAAI,cAAc,MAAM;AACtB,eAAO,UAAU;AAAA,MACzB,OAAa;AACL,eAAO;AAAA,MACR;AAAA,IACF;AACD,QAAI,MAAM,mBAAmB,MAAM,sBAAsB;AACvD,kBAAY,WAAW,IAAI,8BAA8B;AACzD,UAAI,cAAc,MAAM;AACtB,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,wBAAwB,UAAU;AACjF,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,mCAAmC,UAAU;AAAA,MACpG,OAAa;AACL,eAAO;AAAA,MACR;AAAA,IACF;AACD,QAAI,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,wBAAwB,MAAM,yBAAyB,MAAM,yBAAyB,MAAM,yBAAyB,MAAM,0BAA0B,MAAM,0BAA0B,MAAM,wBAAwB;AAC7a,kBAAY,WAAW,IAAI,+BAA+B;AAC1D,UAAI,cAAc,MAAM;AACtB,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,uCAAuC,UAAU;AAChG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,uCAAuC,UAAU;AAChG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,uCAAuC,UAAU;AAChG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,uCAAuC,UAAU;AAChG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,uCAAuC,UAAU;AAChG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,uCAAuC,UAAU;AAChG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,uCAAuC,UAAU;AAChG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,uCAAuC,UAAU;AAChG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,wCAAwC,UAAU;AACjG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,wCAAwC,UAAU;AACjG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,wCAAwC,UAAU;AACjG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,yCAAyC,UAAU;AAClG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,yCAAyC,UAAU;AAClG,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,yCAAyC,UAAU;AAAA,MAC1G,OAAa;AACL,eAAO;AAAA,MACR;AAAA,IACF;AACD,QAAI,MAAM,kBAAkB;AAC1B,kBAAY,WAAW,IAAI,8BAA8B;AACzD,UAAI,cAAc,MAAM;AACtB,YAAI,MAAM;AACR,iBAAO,aAAa,eAAe,UAAU,uCAAuC,UAAU;AAAA,MACxG,OAAa;AACL,eAAO;AAAA,MACR;AAAA,IACF;AACD,QAAI,MAAM,oBAAoB;AAC5B,UAAI;AACF,eAAO;AACT,kBAAY,WAAW,IAAI,qBAAqB;AAChD,UAAI,cAAc,MAAM;AACtB,eAAO,UAAU;AAAA,MACzB,OAAa;AACL,eAAO;AAAA,MACR;AAAA,IACF;AACD,WAAO,GAAG,OAAO,SAAS,GAAG,KAAK;AAAA,EACnC;AACD,SAAO,EAAE,QAAO;AAClB;AACA,MAAM,oBAAoB,kBAAkB;AAAA,EAC1C,YAAY,QAAQ,IAAI;AACtB;AACA,SAAK,gBAAgB;AACrB,SAAK,UAAU;AAAA,EAChB;AACH;AACA,MAAM,gBAAgB,WAAW;AAAA,EAC/B,cAAc;AACZ;AACA,SAAK,UAAU;AACf,SAAK,OAAO;AAAA,EACb;AACH;AACA,MAAM,aAAa,EAAE,MAAM;AAC3B,MAAM,gBAAgB;AAAA,EACpB,cAAc;AACZ,SAAK,aAAa;AAClB,SAAK,QAAQ;AACb,SAAK,QAAQ;AAAA,EACd;AAAA,EACD,eAAe;AACb,QAAI,KAAK,UAAU,MAAM;AACvB,WAAK,QAAQ,IAAI;AACjB,WAAK,MAAM,mBAAmB;AAC9B,WAAK,MAAM,UAAU;AACrB,WAAK,MAAM,SAAS;AACpB,WAAK,MAAM,aAAa,EAAE,UAAU,MAAK;AAAA,IAC1C;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,oBAAoB;AAClB,QAAI,KAAK,eAAe,MAAM;AAC5B,WAAK,aAAa,IAAI;AACtB,WAAK,WAAW,mBAAmB;AACnC,WAAK,WAAW,UAAU;AAC1B,WAAK,WAAW,oBAAoB;AACpC,WAAK,WAAW,iBAAiB,IAAIqF,UAAO;AAC5C,WAAK,WAAW,qBAAqB;AACrC,WAAK,WAAW,kBAAkB,IAAIA,UAAO;AAAA,IAC9C;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,eAAe;AACb,QAAI,KAAK,UAAU,MAAM;AACvB,WAAK,QAAQ,IAAI;AACjB,WAAK,MAAM,mBAAmB;AAC9B,WAAK,MAAM,UAAU;AACrB,WAAK,MAAM,oBAAoB;AAC/B,WAAK,MAAM,iBAAiB,IAAIA,UAAO;AACvC,WAAK,MAAM,qBAAqB;AAChC,WAAK,MAAM,kBAAkB,IAAIA,UAAO;AAAA,IACzC;AACD,WAAO,KAAK;AAAA,EACb;AAAA,EACD,cAAc,OAAO;AACnB,QAAI,KAAK,eAAe,MAAM;AAC5B,WAAK,WAAW,cAAc,KAAK;AAAA,IACpC;AACD,QAAI,KAAK,UAAU,MAAM;AACvB,WAAK,MAAM,cAAc,KAAK;AAAA,IAC/B;AACD,QAAI,KAAK,UAAU,MAAM;AACvB,WAAK,MAAM,cAAc,KAAK;AAAA,IAC/B;AACD,WAAO;AAAA,EACR;AAAA,EACD,WAAW,aAAa;AACtB,SAAK,cAAc,EAAE,MAAM,gBAAgB,MAAM,YAAW,CAAE;AAC9D,QAAI,KAAK,eAAe,MAAM;AAC5B,WAAK,WAAW,UAAU;AAAA,IAC3B;AACD,QAAI,KAAK,UAAU,MAAM;AACvB,WAAK,MAAM,UAAU;AAAA,IACtB;AACD,QAAI,KAAK,UAAU,MAAM;AACvB,WAAK,MAAM,UAAU;AAAA,IACtB;AACD,WAAO;AAAA,EACR;AAAA,EACD,OAAO,aAAa,OAAO,gBAAgB;AACzC,QAAI,YAAY;AAChB,QAAI,WAAW;AACf,QAAI,WAAW;AACf,UAAM,YAAY,KAAK;AACvB,UAAM,OAAO,KAAK;AAClB,UAAM,OAAO,KAAK;AAClB,QAAI,eAAe,MAAM,QAAQ,oBAAoB,mBAAmB;AACtE,UAAI,QAAQ,YAAY,MAAM;AAC5B,mBAAW;AACX,mBAAW,cAAc,YAAY,KAAK,OAAM,GAAI;AAClD,gBAAM,YAAY,MAAM,aAAa,YAAY,cAAc;AAC/D,cAAI,KAAK,OAAO,WAAW,eAAe,QAAQ;AAChD,kBAAM,SAAS,IAAI;AACnB,mBAAO,mBAAmB;AAC1B,mBAAO,UAAU;AACjB,iBAAK,OAAO,WAAW,aAAa;AACpC,iBAAK,IAAI,MAAM;AAAA,UAChB;AACD,gBAAM,QAAQ,KAAK,OAAO,WAAW;AACrC,cAAI,cAAc,MAAM;AACtB,kBAAM,OAAO,UAAU,UAAU,UAAU,MAAM;AACjD,kBAAM,OAAO,UAAU,MAAM,UAAU,MAAM,UAAU,MAAM,KAAK;AAClE,kBAAM,cAAc,UAAU;AAAA,UAC/B;AACD,gBAAM,UAAU,cAAc;AAAA,QAC/B;AACD,cAAM,WAAW,KAAK,OAAO;AAC7B,cAAM,WAAW,KAAK,OAAO;AAC7B,cAAM,WAAW,SAAS,SAAS,WAAW,SAAS,QAAQ;AAC/D,cAAM,kBAAkB;AACxB,cAAM,YAAY;AAClB,YAAI,KAAK,WAAW,YAAY,WAAW,kBAAkB,WAAW;AACtE,eAAK,WAAW,WAAW;AAC3B,eAAK,cAAc;AAAA,YACjB,MAAM;AAAA,YACN,YAAY,YAAY;AAAA,YACxB,QAAQ;AAAA,UACpB,CAAW;AAAA,QACX,WAAmB,CAAC,KAAK,WAAW,YAAY,YAAY,kBAAkB,WAAW;AAC/E,eAAK,WAAW,WAAW;AAC3B,eAAK,cAAc;AAAA,YACjB,MAAM;AAAA,YACN,YAAY,YAAY;AAAA,YACxB,QAAQ;AAAA,UACpB,CAAW;AAAA,QACF;AAAA,MACT,OAAa;AACL,YAAI,SAAS,QAAQ,YAAY,WAAW;AAC1C,qBAAW,MAAM,QAAQ,YAAY,WAAW,cAAc;AAC9D,cAAI,aAAa,MAAM;AACrB,iBAAK,OAAO,UAAU,SAAS,UAAU,MAAM;AAC/C,iBAAK,OAAO,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,KAAK;AAC9D,gBAAI,SAAS,gBAAgB;AAC3B,mBAAK,oBAAoB;AACzB,mBAAK,eAAe,KAAK,SAAS,cAAc;AAAA,YAC9D,OAAmB;AACL,mBAAK,oBAAoB;AAAA,YAC1B;AACD,gBAAI,SAAS,iBAAiB;AAC5B,mBAAK,qBAAqB;AAC1B,mBAAK,gBAAgB,KAAK,SAAS,eAAe;AAAA,YAChE,OAAmB;AACL,mBAAK,qBAAqB;AAAA,YAC3B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACD,UAAI,cAAc,MAAM;AACtB,oBAAY,MAAM,QAAQ,YAAY,gBAAgB,cAAc;AACpE,YAAI,cAAc,QAAQ,aAAa,MAAM;AAC3C,sBAAY;AAAA,QACb;AACD,YAAI,cAAc,MAAM;AACtB,oBAAU,OAAO,UAAU,UAAU,UAAU,MAAM;AACrD,oBAAU,OAAO,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,KAAK;AAClF,cAAI,UAAU,gBAAgB;AAC5B,sBAAU,oBAAoB;AAC9B,sBAAU,eAAe,KAAK,UAAU,cAAc;AAAA,UAClE,OAAiB;AACL,sBAAU,oBAAoB;AAAA,UAC/B;AACD,cAAI,UAAU,iBAAiB;AAC7B,sBAAU,qBAAqB;AAC/B,sBAAU,gBAAgB,KAAK,UAAU,eAAe;AAAA,UACpE,OAAiB;AACL,sBAAU,qBAAqB;AAAA,UAChC;AACD,eAAK,cAAc,UAAU;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AACD,QAAI,cAAc,MAAM;AACtB,gBAAU,UAAU,cAAc;AAAA,IACnC;AACD,QAAI,SAAS,MAAM;AACjB,WAAK,UAAU,aAAa;AAAA,IAC7B;AACD,QAAI,SAAS,MAAM;AACjB,WAAK,UAAU,aAAa;AAAA,IAC7B;AACD,WAAO;AAAA,EACR;AACH;AACA,MAAM,qBAAqB,QAAQ;AAAA,EACjC,YAAY,OAAO,QAAQ,MAAM,SAAS,OAAO,OAAO,WAAW,WAAW,YAAY,QAAQ;AAChG,aAAS,WAAW,SAAS,SAAS;AACtC,QAAI,WAAW,eAAe,WAAW,oBAAoB;AAC3D,YAAM,IAAI,MAAM,kFAAkF;AAAA,IACnG;AACD,QAAI,SAAS,UAAU,WAAW;AAChC,aAAO;AACT,QAAI,SAAS,UAAU,WAAW;AAChC,aAAO;AACT,UAAM,MAAM,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM,UAAU;AACjF,SAAK,iBAAiB;AACtB,SAAK,QAAQ,EAAE,OAAO,OAAM;AAC5B,SAAK,YAAY,cAAc,SAAS,YAAY;AACpD,SAAK,YAAY,cAAc,SAAS,YAAY;AACpD,SAAK,QAAQ;AACb,SAAK,kBAAkB;AAAA,EACxB;AACH;AACA,MAAM,qBAAqB,gBAAgB;AAAA,EACzC,YAAY,UAAU,IAAI;AACxB;AACA,UAAM,QAAQ;AACd,QAAI,UAAU;AACd,QAAI,yBAAyB;AAC7B,QAAI,iBAAiB;AACrB,QAAI,qBAAqB;AACzB,QAAI,uBAAuB;AAC3B,QAAI,OAAO;AACX,QAAI,YAAY;AAChB,QAAI,cAAc;AAClB,QAAI,cAAc;AAClB,QAAI,UAAU;AACd,UAAM,aAAa,GAAG;AACtB,QAAI,sBAAsB;AAC1B,QAAI,kBAAkB;AACtB,UAAM,cAAc,CAAA;AACpB,UAAM,yBAAyB,CAAA;AAC/B,UAAM,UAAU,IAAI;AACpB,YAAQ,OAAO,OAAO,CAAC;AACvB,YAAQ,WAAW,IAAI;AACvB,UAAM,UAAU,IAAI;AACpB,YAAQ,OAAO,OAAO,CAAC;AACvB,YAAQ,WAAW,IAAI;AACvB,UAAM,UAAU,CAAC,SAAS,OAAO;AACjC,UAAM,WAAW,IAAI;AACrB,aAAS,OAAO,OAAO,CAAC;AACxB,aAAS,OAAO,OAAO,CAAC;AACxB,QAAI,oBAAoB;AACxB,QAAI,mBAAmB;AACvB,SAAK,mBAAmB;AACxB,SAAK,UAAU;AACf,SAAK,eAAe;AACpB,SAAK,gBAAgB,SAAS,OAAO;AACnC,UAAI,aAAa,YAAY;AAC7B,UAAI,eAAe,QAAQ;AACzB,qBAAa,IAAI;AACjB,oBAAY,SAAS;AAAA,MACtB;AACD,aAAO,WAAW;IACxB;AACI,SAAK,oBAAoB,SAAS,OAAO;AACvC,UAAI,aAAa,YAAY;AAC7B,UAAI,eAAe,QAAQ;AACzB,qBAAa,IAAI;AACjB,oBAAY,SAAS;AAAA,MACtB;AACD,aAAO,WAAW;IACxB;AACI,SAAK,UAAU,SAAS,OAAO;AAC7B,UAAI,aAAa,YAAY;AAC7B,UAAI,eAAe,QAAQ;AACzB,qBAAa,IAAI;AACjB,oBAAY,SAAS;AAAA,MACtB;AACD,aAAO,WAAW;IACxB;AACI,aAAS,eAAe,OAAO;AAC7B,YAAM,kBAAkB,uBAAuB,QAAQ,MAAM,WAAW;AACxE,UAAI,oBAAoB,IAAI;AAC1B;AAAA,MACD;AACD,YAAM,aAAa,YAAY;AAC/B,UAAI,eAAe,QAAQ;AACzB,mBAAW,cAAc,EAAE,MAAM,MAAM,MAAM,MAAM,MAAM,YAAW,CAAE;AAAA,MACvE;AAAA,IACF;AACD,aAAS,eAAe;AACtB,cAAQ,oBAAoB,UAAU,cAAc;AACpD,cAAQ,oBAAoB,eAAe,cAAc;AACzD,cAAQ,oBAAoB,aAAa,cAAc;AACvD,cAAQ,oBAAoB,WAAW,cAAc;AACrD,cAAQ,oBAAoB,gBAAgB,cAAc;AAC1D,cAAQ,oBAAoB,cAAc,cAAc;AACxD,cAAQ,oBAAoB,OAAO,YAAY;AAC/C,cAAQ,oBAAoB,sBAAsB,oBAAoB;AACtE,eAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,cAAM,cAAc,uBAAuB;AAC3C,YAAI,gBAAgB;AAClB;AACF,+BAAuB,KAAK;AAC5B,oBAAY,GAAG,WAAW,WAAW;AAAA,MACtC;AACD,0BAAoB;AACpB,yBAAmB;AACnB,eAAS,gBAAgB,mBAAmB;AAC5C,oBAAc;AACd,oBAAc;AACd,kBAAY;AACZ,gBAAU;AACV,wBAAkB;AAClB,gBAAU,KAAI;AACd,YAAM,eAAe;AACrB,YAAM,cAAc,EAAE,MAAM,aAAc,CAAA;AAAA,IAC3C;AACD,SAAK,4BAA4B,SAAS,OAAO;AAC/C,+BAAyB;AACzB,UAAI,MAAM,iBAAiB,MAAM;AAC/B,gBAAQ,KAAK,uEAAuE;AAAA,MACrF;AAAA,IACP;AACI,SAAK,wBAAwB,SAAS,OAAO;AAC3C,2BAAqB;AACrB,UAAI,MAAM,iBAAiB,MAAM;AAC/B,gBAAQ,KAAK,0EAA0E;AAAA,MACxF;AAAA,IACP;AACI,SAAK,oBAAoB,WAAW;AAClC,aAAO,wBAAwB;AAAA,IACrC;AACI,SAAK,oBAAoB,SAAS,OAAO;AACvC,6BAAuB;AAAA,IAC7B;AACI,SAAK,eAAe,WAAW;AAC7B,aAAO,gBAAgB,OAAO,cAAc;AAAA,IAClD;AACI,SAAK,aAAa,WAAW;AAC3B,aAAO;AAAA,IACb;AACI,SAAK,WAAW,WAAW;AACzB,aAAO;AAAA,IACb;AACI,SAAK,aAAa,WAAW;AAC3B,aAAO;AAAA,IACb;AACI,SAAK,aAAa,eAAe,OAAO;AACtC,gBAAU;AACV,UAAI,YAAY,MAAM;AACpB,8BAAsB,SAAS;AAC/B,gBAAQ,iBAAiB,UAAU,cAAc;AACjD,gBAAQ,iBAAiB,eAAe,cAAc;AACtD,gBAAQ,iBAAiB,aAAa,cAAc;AACpD,gBAAQ,iBAAiB,WAAW,cAAc;AAClD,gBAAQ,iBAAiB,gBAAgB,cAAc;AACvD,gBAAQ,iBAAiB,cAAc,cAAc;AACrD,gBAAQ,iBAAiB,OAAO,YAAY;AAC5C,gBAAQ,iBAAiB,sBAAsB,oBAAoB;AACnE,YAAI,WAAW,iBAAiB,MAAM;AACpC,gBAAM,GAAG;QACV;AACD,YAAI,QAAQ,YAAY,WAAW,UAAU,SAAS,aAAa,aAAa,OAAO;AACrF,gBAAM,YAAY;AAAA,YAChB,WAAW,QAAQ,YAAY,WAAW,SAAS,WAAW,YAAY;AAAA,YAC1E,OAAO,WAAW;AAAA,YAClB,OAAO,WAAW;AAAA,YAClB,SAAS,WAAW;AAAA,YACpB;AAAA,UACZ;AACU,wBAAc,IAAI,aAAa,SAAS,IAAI,SAAS;AACrD,kBAAQ,kBAAkB,EAAE,WAAW,YAAa,CAAA;AACpD,4BAAkB,IAAI;AAAA,YACpB,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ;AAAA,cACE,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,UAAU,SAAS;AAAA,YACpB;AAAA,UACb;AAAA,QACA,OAAe;AACL,cAAI,cAAc;AAClB,cAAI,YAAY;AAChB,cAAI,gBAAgB;AACpB,cAAI,WAAW,OAAO;AACpB,4BAAgB,WAAW,UAAU,QAAQ;AAC7C,0BAAc,WAAW,UAAU,qBAAqB;AACxD,wBAAY,WAAW,UAAU,qBAAqB;AAAA,UACvD;AACD,gBAAM,sBAAsB;AAAA,YAC1B,aAAa;AAAA,YACb,aAAa;AAAA,YACb,aAAa;AAAA,UACzB;AACU,sBAAY,IAAI,eAAe,SAAS,EAAE;AAC1C,wBAAc,UAAU,sBAAsB,mBAAmB;AACjE,kBAAQ,kBAAkB,EAAE,QAAQ,CAAC,WAAW,EAAG,CAAA;AACnD,4BAAkB,IAAI;AAAA,YACpB,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ;AAAA,cACE,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,cAAc,IAAI,aAAa,YAAY,cAAc,YAAY,eAAe,WAAW,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,WAAW;AAAA,cAC1J,eAAe,WAAW;AAAA,cAC1B,UAAU,SAAS;AAAA,cACnB,SAAS,WAAW,YAAY,IAAI;AAAA,YACrC;AAAA,UACb;AACU,gBAAM,yBAAyB,SAAS,WAAW,IAAI,eAAe;AACtE,iCAAuB,sBAAsB,YAAY;AAAA,QAC1D;AACD,wBAAgB,mBAAmB;AACnC,aAAK,aAAa,CAAC;AACnB,+BAAuB;AACvB,yBAAiB,MAAM,QAAQ,sBAAsB,kBAAkB;AACvE,kBAAU,WAAW,OAAO;AAC5B,kBAAU,MAAK;AACf,cAAM,eAAe;AACrB,cAAM,cAAc,EAAE,MAAM,eAAgB,CAAA;AAAA,MAC7C;AAAA,IACP;AACI,aAAS,qBAAqB,OAAO;AACnC,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,QAAQ,KAAK;AAC7C,cAAM,cAAc,MAAM,QAAQ;AAClC,cAAM,QAAQ,uBAAuB,QAAQ,WAAW;AACxD,YAAI,SAAS,GAAG;AACd,iCAAuB,SAAS;AAChC,sBAAY,OAAO,cAAc,EAAE,MAAM,gBAAgB,MAAM,YAAW,CAAE;AAAA,QAC7E;AAAA,MACF;AACD,eAAS,IAAI,GAAG,IAAI,MAAM,MAAM,QAAQ,KAAK;AAC3C,cAAM,cAAc,MAAM,MAAM;AAChC,YAAI,kBAAkB,uBAAuB,QAAQ,WAAW;AAChE,YAAI,oBAAoB,IAAI;AAC1B,mBAAS,KAAK,GAAG,KAAK,YAAY,QAAQ,MAAM;AAC9C,gBAAI,MAAM,uBAAuB,QAAQ;AACvC,qCAAuB,KAAK,WAAW;AACvC,gCAAkB;AAClB;AAAA,YACD,WAAU,uBAAuB,QAAQ,MAAM;AAC9C,qCAAuB,MAAM;AAC7B,gCAAkB;AAClB;AAAA,YACD;AAAA,UACF;AACD,cAAI,oBAAoB;AACtB;AAAA,QACH;AACD,cAAM,aAAa,YAAY;AAC/B,YAAI,YAAY;AACd,qBAAW,cAAc,EAAE,MAAM,aAAa,MAAM,YAAW,CAAE;AAAA,QAClE;AAAA,MACF;AAAA,IACF;AACD,UAAM,aAAa,IAAIA;AACvB,UAAM,aAAa,IAAIA;AACvB,aAAS,uBAAuBC,SAAQ,UAAU,UAAU;AAC1D,iBAAW,sBAAsB,SAAS,WAAW;AACrD,iBAAW,sBAAsB,SAAS,WAAW;AACrD,YAAM,MAAM,WAAW,WAAW,UAAU;AAC5C,YAAM,QAAQ,SAAS,iBAAiB;AACxC,YAAM,QAAQ,SAAS,iBAAiB;AACxC,YAAM,OAAO,MAAM,OAAO,MAAM,MAAM;AACtC,YAAM,MAAM,MAAM,OAAO,MAAM,MAAM;AACrC,YAAM,UAAU,MAAM,KAAK,KAAK,MAAM;AACtC,YAAM,aAAa,MAAM,KAAK,KAAK,MAAM;AACzC,YAAM,WAAW,MAAM,KAAK,KAAK,MAAM;AACvC,YAAM,YAAY,MAAM,KAAK,KAAK,MAAM;AACxC,YAAM,OAAO,OAAO;AACpB,YAAM,QAAQ,OAAO;AACrB,YAAM,UAAU,OAAO,CAAC,UAAU;AAClC,YAAM,UAAU,UAAU,CAAC;AAC3B,eAAS,YAAY,UAAUA,QAAO,UAAUA,QAAO,YAAYA,QAAO,KAAK;AAC/E,MAAAA,QAAO,WAAW,OAAO;AACzB,MAAAA,QAAO,WAAW,OAAO;AACzB,MAAAA,QAAO,YAAY,QAAQA,QAAO,UAAUA,QAAO,YAAYA,QAAO,KAAK;AAC3E,MAAAA,QAAO,mBAAmB,KAAKA,QAAO,WAAW,EAAE;AACnD,YAAM,QAAQ,OAAO;AACrB,YAAM,OAAO,MAAM;AACnB,YAAM,QAAQ,OAAO;AACrB,YAAM,SAAS,SAAS,MAAM;AAC9B,YAAM,OAAO,SAAS,MAAM,OAAO;AACnC,YAAM,UAAU,YAAY,MAAM,OAAO;AACzC,MAAAA,QAAO,iBAAiB,gBAAgB,OAAO,QAAQ,MAAM,SAAS,OAAO,IAAI;AAAA,IAClF;AACD,aAAS,aAAaA,SAAQ,QAAQ;AACpC,UAAI,WAAW,MAAM;AACnB,QAAAA,QAAO,YAAY,KAAKA,QAAO,MAAM;AAAA,MAC7C,OAAa;AACL,QAAAA,QAAO,YAAY,iBAAiB,OAAO,aAAaA,QAAO,MAAM;AAAA,MACtE;AACD,MAAAA,QAAO,mBAAmB,KAAKA,QAAO,WAAW,EAAE;IACpD;AACD,SAAK,eAAe,SAASA,SAAQ;AACnC,UAAI,YAAY;AACd;AACF,eAAS,OAAO,QAAQ,OAAO,QAAQ,OAAOA,QAAO;AACrD,eAAS,MAAM,QAAQ,MAAM,QAAQ,MAAMA,QAAO;AAClD,UAAI,sBAAsB,SAAS,QAAQ,qBAAqB,SAAS,KAAK;AAC5E,gBAAQ,kBAAkB;AAAA,UACxB,WAAW,SAAS;AAAA,UACpB,UAAU,SAAS;AAAA,QAC7B,CAAS;AACD,4BAAoB,SAAS;AAC7B,2BAAmB,SAAS;AAAA,MAC7B;AACD,YAAM,SAASA,QAAO;AACtB,YAAM,WAAW,SAAS;AAC1B,mBAAa,UAAU,MAAM;AAC7B,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,qBAAa,SAAS,IAAI,MAAM;AAAA,MACjC;AACD,eAAS,YAAY,UAAU,SAAS,UAAU,SAAS,YAAY,SAAS,KAAK;AACrF,MAAAA,QAAO,SAAS,KAAK,SAAS,QAAQ;AACtC,MAAAA,QAAO,WAAW,KAAK,SAAS,UAAU;AAC1C,MAAAA,QAAO,MAAM,KAAK,SAAS,KAAK;AAChC,MAAAA,QAAO,OAAO,KAAK,SAAS,MAAM;AAClC,MAAAA,QAAO,YAAY,KAAK,SAAS,WAAW;AAC5C,YAAM,WAAWA,QAAO;AACxB,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC/C,iBAAS,GAAG,kBAAkB,IAAI;AAAA,MACnC;AACD,UAAI,SAAS,WAAW,GAAG;AACzB,+BAAuB,UAAU,SAAS,OAAO;AAAA,MACzD,OAAa;AACL,iBAAS,iBAAiB,KAAK,QAAQ,gBAAgB;AAAA,MACxD;AAAA,IACP;AACI,SAAK,YAAY,WAAW;AAC1B,aAAO;AAAA,IACb;AACI,SAAK,eAAe,WAAW;AAC7B,UAAI,gBAAgB,MAAM;AACxB,eAAO,YAAY;AAAA,MACpB;AACD,UAAI,gBAAgB,MAAM;AACxB,eAAO,YAAY;AAAA,MACpB;AACD,aAAO;AAAA,IACb;AACI,SAAK,eAAe,SAAS,WAAW;AACtC,UAAI,gBAAgB,MAAM;AACxB,oBAAY,iBAAiB;AAAA,MAC9B;AACD,UAAI,gBAAgB,QAAQ,YAAY,mBAAmB,QAAQ;AACjE,oBAAY,iBAAiB;AAAA,MAC9B;AAAA,IACP;AACI,QAAI,2BAA2B;AAC/B,aAAS,iBAAiB,MAAM,OAAO;AACrC,aAAO,MAAM,cAAc,wBAAwB,cAAc;AACjE,gBAAU;AACV,UAAI,SAAS,MAAM;AACjB,cAAM,QAAQ,KAAK;AACnB,YAAI,gBAAgB,MAAM;AACxB,mBAAS,2BAA2B,iBAAiB,YAAY,WAAW;AAC5E,mBAAS,gBAAgB,eAAe;AAAA,QACzC;AACD,YAAI,sBAAsB;AAC1B,YAAI,MAAM,WAAW,SAAS,QAAQ,QAAQ;AAC5C,mBAAS,QAAQ,SAAS;AAC1B,gCAAsB;AAAA,QACvB;AACD,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,gBAAM,OAAO,MAAM;AACnB,cAAI,WAAW;AACf,cAAI,gBAAgB,MAAM;AACxB,uBAAW,YAAY,YAAY,IAAI;AAAA,UACnD,OAAiB;AACL,kBAAM,aAAa,UAAU,gBAAgB,aAAa,IAAI;AAC9D,uBAAW,WAAW;AACtB,gBAAI,MAAM,GAAG;AACX,uBAAS;AAAA,gBACP;AAAA,gBACA,WAAW;AAAA,gBACX,YAAY,oBAAoB,SAAS,WAAW;AAAA,cACpE;AACc,uBAAS,gBAAgB,eAAe;AAAA,YACzC;AAAA,UACF;AACD,cAAIA,UAAS,QAAQ;AACrB,cAAIA,YAAW,QAAQ;AACrB,YAAAA,UAAS,IAAI;AACb,YAAAA,QAAO,OAAO,OAAO,CAAC;AACtB,YAAAA,QAAO,WAAW,IAAI;AACtB,oBAAQ,KAAKA;AAAA,UACd;AACD,UAAAA,QAAO,OAAO,UAAU,KAAK,UAAU,MAAM;AAC7C,UAAAA,QAAO,iBAAiB,UAAU,KAAK,gBAAgB;AACvD,UAAAA,QAAO,SAAS,IAAI,SAAS,GAAG,SAAS,GAAG,SAAS,OAAO,SAAS,MAAM;AAC3E,cAAI,MAAM,GAAG;AACX,qBAAS,OAAO,KAAKA,QAAO,MAAM;AAAA,UACnC;AACD,cAAI,wBAAwB,MAAM;AAChC,qBAAS,QAAQ,KAAKA,OAAM;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AACD,eAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,cAAM,cAAc,uBAAuB;AAC3C,cAAM,aAAa,YAAY;AAC/B,YAAI,gBAAgB,QAAQ,eAAe,QAAQ;AACjD,qBAAW,OAAO,aAAa,OAAO,wBAAwB,cAAc;AAAA,QAC7E;AAAA,MACF;AACD,UAAI;AACF,iCAAyB,MAAM,KAAK;AACtC,gBAAU;AAAA,IACX;AACD,UAAM,YAAY,IAAI;AACtB,cAAU,iBAAiB,gBAAgB;AAC3C,SAAK,mBAAmB,SAAS,UAAU;AACzC,iCAA2B;AAAA,IACjC;AACI,SAAK,UAAU,WAAW;AAAA,IAC9B;AAAA,EACG;AACH;AACA,SAAS,eAAe,UAAU,YAAY;AAC5C,WAAS,mBAAmB,UAAU,KAAK;AACzC,aAAS,SAAS,MAAM,KAAK,IAAI,KAAK;AACtC,QAAI,IAAI,OAAO;AACb,eAAS,QAAQ,QAAQ,IAAI;AAC7B,eAAS,OAAO,QAAQ,IAAI;AAAA,IAClC,WAAe,IAAI,WAAW;AACxB,eAAS,WAAW,QAAQ,IAAI;AAAA,IACjC;AAAA,EACF;AACD,WAAS,wBAAwB,UAAU,UAAU,YAAY,QAAQ,0BAA0B;AACjG,QAAI,SAAS,qBAAqB;AAChC,4BAAsB,UAAU,QAAQ;AAAA,IAC9C,WAAe,SAAS,uBAAuB;AACzC,4BAAsB,UAAU,QAAQ;AAAA,IAC9C,WAAe,SAAS,oBAAoB;AACtC,4BAAsB,UAAU,QAAQ;AACxC,0BAAoB,UAAU,QAAQ;AAAA,IAC5C,WAAe,SAAS,qBAAqB;AACvC,4BAAsB,UAAU,QAAQ;AACxC,2BAAqB,UAAU,QAAQ;AAAA,IAC7C,WAAe,SAAS,wBAAwB;AAC1C,4BAAsB,UAAU,QAAQ;AACxC,8BAAwB,UAAU,QAAQ;AAC1C,UAAI,SAAS,wBAAwB;AACnC,gCAAwB,UAAU,UAAU,wBAAwB;AAAA,MACrE;AAAA,IACP,WAAe,SAAS,sBAAsB;AACxC,4BAAsB,UAAU,QAAQ;AACxC,4BAAsB,UAAU,QAAQ;AAAA,IAC9C,WAAe,SAAS,qBAAqB;AACvC,4BAAsB,UAAU,QAAQ;AAAA,IAC9C,WAAe,SAAS,wBAAwB;AAC1C,4BAAsB,UAAU,QAAQ;AACxC,8BAAwB,UAAU,QAAQ;AAAA,IAChD,WAAe,SAAS,sBAAsB;AACxC,4BAAsB,UAAU,QAAQ;AAAA,IAC9C,WAAe,SAAS,qBAAqB;AACvC,0BAAoB,UAAU,QAAQ;AACtC,UAAI,SAAS,sBAAsB;AACjC,4BAAoB,UAAU,QAAQ;AAAA,MACvC;AAAA,IACP,WAAe,SAAS,kBAAkB;AACpC,4BAAsB,UAAU,UAAU,YAAY,MAAM;AAAA,IAClE,WAAe,SAAS,kBAAkB;AACpC,6BAAuB,UAAU,QAAQ;AAAA,IAC/C,WAAe,SAAS,kBAAkB;AACpC,eAAS,MAAM,MAAM,KAAK,SAAS,KAAK;AACxC,eAAS,QAAQ,QAAQ,SAAS;AAAA,IACxC,WAAe,SAAS,kBAAkB;AACpC,eAAS,qBAAqB;AAAA,IAC/B;AAAA,EACF;AACD,WAAS,sBAAsB,UAAU,UAAU;AACjD,aAAS,QAAQ,QAAQ,SAAS;AAClC,QAAI,SAAS,OAAO;AAClB,eAAS,QAAQ,MAAM,KAAK,SAAS,KAAK;AAAA,IAC3C;AACD,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,MAAM,KAAK,SAAS,QAAQ,EAAE,eAAe,SAAS,iBAAiB;AAAA,IAC1F;AACD,QAAI,SAAS,KAAK;AAChB,eAAS,IAAI,QAAQ,SAAS;AAAA,IAC/B;AACD,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,QAAQ,SAAS;AAAA,IACpC;AACD,QAAI,SAAS,SAAS;AACpB,eAAS,QAAQ,QAAQ,SAAS;AAClC,eAAS,UAAU,QAAQ,SAAS;AACpC,UAAI,SAAS,SAAS;AACpB,iBAAS,UAAU,SAAS;AAAA,IAC/B;AACD,QAAI,SAAS,iBAAiB;AAC5B,eAAS,gBAAgB,QAAQ,SAAS;AAC1C,eAAS,kBAAkB,QAAQ,SAAS;AAC5C,eAAS,iBAAiB,QAAQ,SAAS;AAAA,IAC5C;AACD,QAAI,SAAS,aAAa;AACxB,eAAS,YAAY,QAAQ,SAAS;AAAA,IACvC;AACD,QAAI,SAAS,WAAW;AACtB,eAAS,UAAU,QAAQ,SAAS;AACpC,eAAS,YAAY,MAAM,KAAK,SAAS,WAAW;AACpD,UAAI,SAAS,SAAS;AACpB,iBAAS,YAAY,MAAM;IAC9B;AACD,QAAI,SAAS,aAAa;AACxB,eAAS,YAAY,QAAQ,SAAS;AAAA,IACvC;AACD,QAAI,SAAS,YAAY,GAAG;AAC1B,eAAS,UAAU,QAAQ,SAAS;AAAA,IACrC;AACD,UAAM,SAAS,WAAW,IAAI,QAAQ,EAAE;AACxC,QAAI,QAAQ;AACV,eAAS,OAAO,QAAQ;AACxB,eAAS,WAAW,QAAQ,OAAO,iBAAiB,OAAO,0BAA0B,QAAQ,KAAK;AAClG,eAAS,aAAa,QAAQ,SAAS;AACvC,eAAS,IAAI,QAAQ,SAAS;AAC9B,eAAS,gBAAgB,QAAQ,SAAS;AAAA,IAC3C;AACD,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,QAAQ,SAAS;AACnC,YAAM,cAAc,SAAS,4BAA4B,OAAO,KAAK,KAAK;AAC1E,eAAS,kBAAkB,QAAQ,SAAS,oBAAoB;AAAA,IACjE;AACD,QAAI,SAAS,OAAO;AAClB,eAAS,MAAM,QAAQ,SAAS;AAChC,eAAS,eAAe,QAAQ,SAAS;AAAA,IAC1C;AACD,QAAI;AACJ,QAAI,SAAS,KAAK;AAChB,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,aAAa;AAC/B,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,iBAAiB;AACnC,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,WAAW;AAC7B,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,SAAS;AAC3B,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,cAAc;AAChC,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,cAAc;AAChC,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,UAAU;AAC5B,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,aAAa;AAC/B,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,cAAc;AAChC,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,oBAAoB;AACtC,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,uBAAuB;AACzC,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,gBAAgB;AAClC,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,yBAAyB;AAC3C,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,sBAAsB;AACxC,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,kBAAkB;AACpC,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,iBAAiB;AACnC,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,cAAc;AAChC,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,eAAe;AACjC,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,mBAAmB;AACrC,mBAAa,SAAS;AAAA,IACvB;AACD,QAAI,eAAe,QAAQ;AACzB,UAAI,WAAW,qBAAqB;AAClC,qBAAa,WAAW;AAAA,MACzB;AACD,UAAI,WAAW,qBAAqB,MAAM;AACxC,mBAAW,aAAY;AAAA,MACxB;AACD,eAAS,YAAY,MAAM,KAAK,WAAW,MAAM;AAAA,IAClD;AACD,QAAI;AACJ,QAAI,SAAS,OAAO;AAClB,oBAAc,SAAS;AAAA,IAC7B,WAAe,SAAS,UAAU;AAC5B,oBAAc,SAAS;AAAA,IACxB;AACD,QAAI,gBAAgB,QAAQ;AAC1B,UAAI,YAAY,qBAAqB;AACnC,sBAAc,YAAY;AAAA,MAC3B;AACD,UAAI,YAAY,qBAAqB,MAAM;AACzC,oBAAY,aAAY;AAAA,MACzB;AACD,eAAS,aAAa,MAAM,KAAK,YAAY,MAAM;AAAA,IACpD;AAAA,EACF;AACD,WAAS,oBAAoB,UAAU,UAAU;AAC/C,aAAS,QAAQ,MAAM,KAAK,SAAS,KAAK;AAC1C,aAAS,QAAQ,QAAQ,SAAS;AAAA,EACnC;AACD,WAAS,oBAAoB,UAAU,UAAU;AAC/C,aAAS,SAAS,QAAQ,SAAS;AACnC,aAAS,UAAU,QAAQ,SAAS,WAAW,SAAS;AACxD,aAAS,MAAM,QAAQ,SAAS;AAAA,EACjC;AACD,WAAS,sBAAsB,UAAU,UAAU,YAAY,QAAQ;AACrE,aAAS,QAAQ,MAAM,KAAK,SAAS,KAAK;AAC1C,aAAS,QAAQ,QAAQ,SAAS;AAClC,aAAS,KAAK,QAAQ,SAAS,OAAO;AACtC,aAAS,MAAM,QAAQ,SAAS;AAChC,QAAI,SAAS,KAAK;AAChB,eAAS,IAAI,QAAQ,SAAS;AAAA,IAC/B;AACD,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,QAAQ,SAAS;AAAA,IACpC;AACD,QAAI,SAAS,YAAY,GAAG;AAC1B,eAAS,UAAU,QAAQ,SAAS;AAAA,IACrC;AACD,QAAI;AACJ,QAAI,SAAS,KAAK;AAChB,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,UAAU;AAC5B,mBAAa,SAAS;AAAA,IACvB;AACD,QAAI,eAAe,QAAQ;AACzB,UAAI,WAAW,qBAAqB,MAAM;AACxC,mBAAW,aAAY;AAAA,MACxB;AACD,eAAS,YAAY,MAAM,KAAK,WAAW,MAAM;AAAA,IAClD;AAAA,EACF;AACD,WAAS,uBAAuB,UAAU,UAAU;AAClD,aAAS,QAAQ,MAAM,KAAK,SAAS,KAAK;AAC1C,aAAS,QAAQ,QAAQ,SAAS;AAClC,aAAS,SAAS,QAAQ,SAAS;AACnC,QAAI,SAAS,KAAK;AAChB,eAAS,IAAI,QAAQ,SAAS;AAAA,IAC/B;AACD,QAAI,SAAS,UAAU;AACrB,eAAS,SAAS,QAAQ,SAAS;AAAA,IACpC;AACD,QAAI,SAAS,YAAY,GAAG;AAC1B,eAAS,UAAU,QAAQ,SAAS;AAAA,IACrC;AACD,QAAI;AACJ,QAAI,SAAS,KAAK;AAChB,mBAAa,SAAS;AAAA,IAC5B,WAAe,SAAS,UAAU;AAC5B,mBAAa,SAAS;AAAA,IACvB;AACD,QAAI,eAAe,QAAQ;AACzB,UAAI,WAAW,qBAAqB,MAAM;AACxC,mBAAW,aAAY;AAAA,MACxB;AACD,eAAS,YAAY,MAAM,KAAK,WAAW,MAAM;AAAA,IAClD;AAAA,EACF;AACD,WAAS,qBAAqB,UAAU,UAAU;AAChD,aAAS,SAAS,MAAM,KAAK,SAAS,QAAQ;AAC9C,aAAS,UAAU,QAAQ,KAAK,IAAI,SAAS,WAAW,IAAI;AAAA,EAC7D;AACD,WAAS,oBAAoB,UAAU,UAAU;AAC/C,QAAI,SAAS,aAAa;AACxB,eAAS,YAAY,QAAQ,SAAS;AAAA,IACvC;AAAA,EACF;AACD,WAAS,wBAAwB,UAAU,UAAU;AACnD,aAAS,UAAU,QAAQ,SAAS;AACpC,aAAS,UAAU,QAAQ,SAAS;AACpC,QAAI,SAAS,cAAc;AACzB,eAAS,aAAa,QAAQ,SAAS;AAAA,IACxC;AACD,QAAI,SAAS,cAAc;AACzB,eAAS,aAAa,QAAQ,SAAS;AAAA,IACxC;AACD,UAAM,SAAS,WAAW,IAAI,QAAQ,EAAE;AACxC,QAAI,QAAQ;AACV,eAAS,gBAAgB,QAAQ,SAAS;AAAA,IAC3C;AAAA,EACF;AACD,WAAS,wBAAwB,UAAU,UAAU,0BAA0B;AAC7E,aAAS,IAAI,QAAQ,SAAS;AAC9B,QAAI,SAAS,QAAQ,GAAG;AACtB,eAAS,WAAW,MAAM,KAAK,SAAS,UAAU,EAAE,eAAe,SAAS,KAAK;AACjF,eAAS,eAAe,QAAQ,SAAS;AACzC,UAAI,SAAS,eAAe;AAC1B,iBAAS,cAAc,QAAQ,SAAS;AAAA,MACzC;AACD,UAAI,SAAS,mBAAmB;AAC9B,iBAAS,kBAAkB,QAAQ,SAAS;AAAA,MAC7C;AAAA,IACF;AACD,QAAI,SAAS,YAAY,GAAG;AAC1B,eAAS,UAAU,QAAQ,SAAS;AACpC,eAAS,mBAAmB,QAAQ,SAAS;AAC7C,UAAI,SAAS,cAAc;AACzB,iBAAS,aAAa,QAAQ,SAAS;AAAA,MACxC;AACD,UAAI,SAAS,uBAAuB;AAClC,iBAAS,sBAAsB,QAAQ,SAAS;AAAA,MACjD;AACD,UAAI,SAAS,oBAAoB;AAC/B,iBAAS,qBAAqB,MAAM,KAAK,SAAS,oBAAoB;AACtE,iBAAS,mBAAmB,QAAQ,SAAS;AAC7C,YAAI,SAAS,SAAS,UAAU;AAC9B,mBAAS,qBAAqB,MAAM;QACrC;AAAA,MACF;AAAA,IACF;AACD,QAAI,SAAS,cAAc,GAAG;AAC5B,eAAS,YAAY,QAAQ,SAAS;AACtC,eAAS,eAAe,QAAQ,SAAS;AACzC,eAAS,4BAA4B,QAAQ,SAAS,0BAA0B;AAChF,eAAS,4BAA4B,QAAQ,SAAS,0BAA0B;AAChF,UAAI,SAAS,gBAAgB;AAC3B,iBAAS,eAAe,QAAQ,SAAS;AAAA,MAC1C;AACD,UAAI,SAAS,yBAAyB;AACpC,iBAAS,wBAAwB,QAAQ,SAAS;AAAA,MACnD;AAAA,IACF;AACD,QAAI,SAAS,eAAe,GAAG;AAC7B,eAAS,aAAa,QAAQ,SAAS;AACvC,eAAS,uBAAuB,QAAQ,yBAAyB;AACjE,eAAS,wBAAwB,MAAM,IAAI,yBAAyB,OAAO,yBAAyB,MAAM;AAC1G,UAAI,SAAS,iBAAiB;AAC5B,iBAAS,gBAAgB,QAAQ,SAAS;AAAA,MAC3C;AACD,eAAS,UAAU,QAAQ,SAAS;AACpC,UAAI,SAAS,cAAc;AACzB,iBAAS,aAAa,QAAQ,SAAS;AAAA,MACxC;AACD,eAAS,oBAAoB,QAAQ,SAAS;AAC9C,eAAS,iBAAiB,MAAM,KAAK,SAAS,gBAAgB;AAAA,IAC/D;AACD,aAAS,kBAAkB,QAAQ,SAAS;AAC5C,aAAS,cAAc,MAAM,KAAK,SAAS,aAAa;AACxD,QAAI,SAAS,sBAAsB;AACjC,eAAS,qBAAqB,QAAQ,SAAS;AAAA,IAChD;AACD,QAAI,SAAS,kBAAkB;AAC7B,eAAS,iBAAiB,QAAQ,SAAS;AAAA,IAC5C;AAAA,EACF;AACD,WAAS,sBAAsB,UAAU,UAAU;AACjD,QAAI,SAAS,QAAQ;AACnB,eAAS,OAAO,QAAQ,SAAS;AAAA,IAClC;AAAA,EACF;AACD,WAAS,wBAAwB,UAAU,UAAU;AACnD,aAAS,kBAAkB,MAAM,KAAK,SAAS,iBAAiB;AAChE,aAAS,aAAa,QAAQ,SAAS;AACvC,aAAS,YAAY,QAAQ,SAAS;AAAA,EACvC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,oBAAoB,IAAI,MAAM,cAAc,OAAO;AAC1D,MAAI,UAAU,CAAA;AACd,MAAI,aAAa,CAAA;AACjB,MAAI,yBAAyB,CAAA;AAC7B,QAAM,mBAAmB,aAAa,WAAW,GAAG,aAAa,KAAK,IAAI;AAC1E,WAAShB,MAAK,eAAe,SAAS;AACpC,UAAM,eAAe,QAAQ;AAC7B,UAAM,oBAAoB,eAAe,YAAY;AAAA,EACtD;AACD,WAAS,OAAO,eAAe,SAAS;AACtC,QAAI,SAAS,QAAQ,cAAc;AACnC,QAAI,WAAW,QAAQ;AACrB,2BAAqB,aAAa;AAClC,eAAS,aAAa,aAAa;AACnC,cAAQ,cAAc,MAAM;AAC5B,oBAAc,iBAAiB,WAAW,uBAAuB;AAAA,IAClE;AACD,UAAM,eAAe,QAAQ;AAC7B,UAAM,iBAAiB,eAAe,YAAY;AAClD,UAAM,QAAQ,KAAK,OAAO;AAC1B,QAAI,WAAW,cAAc,QAAQ,OAAO;AAC1C,uBAAiB,aAAa;AAC9B,iBAAW,cAAc,MAAM;AAAA,IAChC;AAAA,EACF;AACD,WAAS,aAAa,eAAe;AACnC,UAAM,oBAAoB;AAC1B,kBAAc,sBAAsB;AACpC,UAAM,SAAS,GAAG;AAClB,UAAM,OAAO,cAAc;AAC3B,UAAM,QAAQ,cAAc;AAC5B,OAAG,WAAW,OAAO,MAAM;AAC3B,OAAG,WAAW,OAAO,MAAM,KAAK;AAChC,OAAG,WAAW,OAAO,IAAI;AACzB,OAAG,eAAe,OAAO,mBAAmB,MAAM;AAClD,WAAO;AAAA,EACR;AACD,WAAS,4BAA4B;AACnC,aAAS,IAAI,GAAG,IAAI,kBAAkB,KAAK;AACzC,UAAI,uBAAuB,QAAQ,CAAC,MAAM,IAAI;AAC5C,+BAAuB,KAAK,CAAC;AAC7B,eAAO;AAAA,MACR;AAAA,IACF;AACD,YAAQ,MAAM,uFAAuF;AACrG,WAAO;AAAA,EACR;AACD,WAAS,iBAAiB,eAAe;AACvC,UAAM,SAAS,QAAQ,cAAc;AACrC,UAAM,WAAW,cAAc;AAC/B,UAAM,QAAQ,cAAc;AAC5B,OAAG,WAAW,OAAO,MAAM;AAC3B,aAAS,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,IAAI,KAAK;AACjD,YAAM,UAAU,SAAS;AACzB,UAAI,kBAAkB,SAAS,GAAG,KAAK,MAAM,MAAM;AACjD,cAAM,QAAQ,QAAQ;AACtB,cAAM,SAAS,QAAQ;AACvB,YAAI,OAAO,UAAU,UAAU;AAC7B,kBAAQ,OAAO,KAAK;AACpB,aAAG,cAAc,OAAO,QAAQ,QAAQ,MAAM;AAAA,QACxD,OAAe;AACL,cAAI,QAAQ,MAAM,WAAW;AAC3B,oBAAQ,OAAO,KAAK,QAAQ,MAAM,SAAS;AAC3C,oBAAQ,OAAO,KAAK,QAAQ,MAAM,SAAS;AAC3C,oBAAQ,OAAO,KAAK,QAAQ,MAAM,SAAS;AAC3C,oBAAQ,OAAO,KAAK,QAAQ,MAAM,SAAS;AAC3C,oBAAQ,OAAO,KAAK,QAAQ,MAAM,SAAS;AAC3C,oBAAQ,OAAO,KAAK,QAAQ,MAAM,SAAS;AAC3C,oBAAQ,OAAO,KAAK,QAAQ,MAAM,SAAS;AAC3C,oBAAQ,OAAO,KAAK,QAAQ,MAAM,SAAS;AAC3C,oBAAQ,OAAO,KAAK,QAAQ,MAAM,SAAS;AAC3C,oBAAQ,OAAO,KAAK,QAAQ,MAAM,SAAS;AAC3C,oBAAQ,OAAO,MAAM,QAAQ,MAAM,SAAS;AAC5C,oBAAQ,OAAO,MAAM,QAAQ,MAAM,SAAS;AAAA,UACxD,OAAiB;AACL,kBAAM,QAAQ,QAAQ,MAAM;AAAA,UAC7B;AACD,aAAG,cAAc,OAAO,QAAQ,QAAQ,MAAM;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AACD,OAAG,WAAW,OAAO,IAAI;AAAA,EAC1B;AACD,WAAS,kBAAkB,SAAS,OAAO,OAAO;AAChD,UAAM,QAAQ,QAAQ;AACtB,QAAI,MAAM,WAAW,QAAQ;AAC3B,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,SAAS;AAAA,MACvB,OAAa;AACL,cAAM,SAAS,MAAM,MAAK;AAAA,MAC3B;AACD,aAAO;AAAA,IACb,OAAW;AACL,UAAI,OAAO,UAAU,UAAU;AAC7B,YAAI,MAAM,WAAW,OAAO;AAC1B,gBAAM,SAAS;AACf,iBAAO;AAAA,QACR;AAAA,MACT,OAAa;AACL,cAAM,eAAe,MAAM;AAC3B,YAAI,aAAa,OAAO,KAAK,MAAM,OAAO;AACxC,uBAAa,KAAK,KAAK;AACvB,iBAAO;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,WAAS,qBAAqB,eAAe;AAC3C,UAAM,WAAW,cAAc;AAC/B,QAAI,SAAS;AACb,UAAM,YAAY;AAClB,QAAI,cAAc;AAClB,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC/C,YAAM,UAAU,SAAS;AACzB,YAAM,QAAQ,eAAe,OAAO;AACpC,cAAQ,SAAS,IAAI,aAAa,MAAM,UAAU,aAAa,iBAAiB;AAChF,cAAQ,WAAW;AACnB,UAAI,IAAI,GAAG;AACT,sBAAc,SAAS;AACvB,cAAM,uBAAuB,YAAY;AACzC,YAAI,gBAAgB,KAAK,uBAAuB,MAAM,WAAW,GAAG;AAClE,oBAAU,YAAY;AACtB,kBAAQ,WAAW;AAAA,QACpB;AAAA,MACF;AACD,gBAAU,MAAM;AAAA,IACjB;AACD,kBAAc,SAAS;AACvB,QAAI,cAAc;AAChB,gBAAU,YAAY;AACxB,kBAAc,SAAS;AACvB,kBAAc,UAAU;AACxB,WAAO;AAAA,EACR;AACD,WAAS,eAAe,SAAS;AAC/B,UAAM,QAAQ,QAAQ;AACtB,UAAM,QAAQ;AAAA,MACZ,UAAU;AAAA,MACV,SAAS;AAAA,IACf;AACI,QAAI,OAAO,UAAU,UAAU;AAC7B,YAAM,WAAW;AACjB,YAAM,UAAU;AAAA,IACtB,WAAe,MAAM,WAAW;AAC1B,YAAM,WAAW;AACjB,YAAM,UAAU;AAAA,IACjB,WAAU,MAAM,aAAa,MAAM,SAAS;AAC3C,YAAM,WAAW;AACjB,YAAM,UAAU;AAAA,IACtB,WAAe,MAAM,WAAW;AAC1B,YAAM,WAAW;AACjB,YAAM,UAAU;AAAA,IACtB,WAAe,MAAM,WAAW;AAC1B,YAAM,WAAW;AACjB,YAAM,UAAU;AAAA,IACtB,WAAe,MAAM,WAAW;AAC1B,YAAM,WAAW;AACjB,YAAM,UAAU;AAAA,IACtB,WAAe,MAAM,WAAW;AAC1B,cAAQ,KAAK,6EAA6E;AAAA,IAChG,OAAW;AACL,cAAQ,KAAK,wDAAwD,KAAK;AAAA,IAC3E;AACD,WAAO;AAAA,EACR;AACD,WAAS,wBAAwB,OAAO;AACtC,UAAM,gBAAgB,MAAM;AAC5B,kBAAc,oBAAoB,WAAW,uBAAuB;AACpE,UAAM,QAAQ,uBAAuB,QAAQ,cAAc,mBAAmB;AAC9E,2BAAuB,OAAO,OAAO,CAAC;AACtC,OAAG,aAAa,QAAQ,cAAc,GAAG;AACzC,WAAO,QAAQ,cAAc;AAC7B,WAAO,WAAW,cAAc;AAAA,EACjC;AACD,WAAS,UAAU;AACjB,eAAW,OAAO,SAAS;AACzB,SAAG,aAAa,QAAQ,IAAI;AAAA,IAC7B;AACD,6BAAyB,CAAA;AACzB,cAAU,CAAA;AACV,iBAAa,CAAA;AAAA,EACd;AACD,SAAO;AAAA,IACL,MAAAA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AACA,SAAS,sBAAsB;AAC7B,QAAM,SAAS,gBAAgB,QAAQ;AACvC,SAAO,MAAM,UAAU;AACvB,SAAO;AACT;AACA,SAAS0B,gBAAc,aAAa,IAAI;AACtC,OAAK,kBAAkB;AACvB,QAAM,WAAW,WAAW,WAAW,SAAS,WAAW,SAAS,oBAAqB,GAAE,YAAY,WAAW,YAAY,SAAS,WAAW,UAAU,MAAM,SAAS,WAAW,UAAU,SAAS,WAAW,QAAQ,MAAM,WAAW,WAAW,YAAY,SAAS,WAAW,UAAU,MAAM,aAAa,WAAW,cAAc,SAAS,WAAW,YAAY,OAAO,sBAAsB,WAAW,uBAAuB,SAAS,WAAW,qBAAqB,MAAM,yBAAyB,WAAW,0BAA0B,SAAS,WAAW,wBAAwB,OAAO,mBAAmB,WAAW,oBAAoB,SAAS,WAAW,kBAAkB,WAAW,gCAAgC,WAAW,iCAAiC,SAAS,WAAW,+BAA+B;AAC/yB,MAAI;AACJ,MAAI,cAAc,MAAM;AACtB,aAAS,UAAU,qBAAsB,EAAC;AAAA,EAC9C,OAAS;AACL,aAAS,WAAW,UAAU,SAAS,WAAW,QAAQ;AAAA,EAC3D;AACD,MAAI,oBAAoB;AACxB,MAAI,qBAAqB;AACzB,QAAM,kBAAkB,CAAA;AACxB,QAAM,mBAAmB,CAAA;AACzB,OAAK,aAAa;AAClB,OAAK,QAAQ;AAAA,IACX,mBAAmB;AAAA,EACvB;AACE,OAAK,YAAY;AACjB,OAAK,iBAAiB;AACtB,OAAK,iBAAiB;AACtB,OAAK,mBAAmB;AACxB,OAAK,cAAc;AACnB,OAAK,iBAAiB;AACtB,OAAK,uBAAuB;AAC5B,OAAK,iBAAiB;AACtB,OAAK,0BAA0B;AAC/B,OAAK,cAAc;AACnB,OAAK,sBAAsB;AAC3B,SAAO,iBAAiB,MAAM;AAAA,IAC5B,aAAa;AAAA,MACX,KAAK,WAAW;AACd,gBAAQ,KAAK,qDAAqD;AAClE,eAAO;AAAA,MACR;AAAA,MACD,KAAK,WAAW;AACd,gBAAQ,KAAK,qDAAqD;AAAA,MACnE;AAAA,IACF;AAAA,EACL,CAAG;AACD,QAAM,QAAQ;AACd,MAAI,iBAAiB;AACrB,MAAI,yBAAyB;AAC7B,MAAI,4BAA4B;AAChC,MAAI,uBAAuB;AAC3B,MAAI,qBAAqB;AACzB,MAAI,iBAAiB;AACrB,QAAM,mBAAmB,IAAI;AAC7B,QAAM,kBAAkB,IAAI;AAC5B,MAAI,sBAAsB;AAC1B,MAAI,SAAS,SAAS;AACtB,MAAI,UAAU,SAAS;AACvB,MAAI,cAAc;AAClB,MAAI,cAAc;AAClB,MAAI,mBAAmB;AACvB,QAAM,YAAY,IAAI,QAAQ,GAAG,GAAG,QAAQ,OAAO;AACnD,QAAM,WAAW,IAAI,QAAQ,GAAG,GAAG,QAAQ,OAAO;AAClD,MAAI,eAAe;AACnB,QAAM,WAAW,IAAI;AACrB,MAAI,mBAAmB;AACvB,MAAI,wBAAwB;AAC5B,MAAI,4BAA4B;AAChC,QAAM,qBAAqB,IAAI;AAC/B,QAAM,YAAY,IAAIb;AACtB,QAAM,WAAW,IAAIE;AACrB,QAAM,cAAc,EAAE,YAAY,MAAM,KAAK,MAAM,aAAa,MAAM,kBAAkB,MAAM,SAAS,KAAI;AAC3G,WAAS,sBAAsB;AAC7B,WAAO,yBAAyB,OAAO,cAAc;AAAA,EACtD;AACD,MAAI,MAAM;AACV,WAAS,WAAW,cAAc,mBAAmB;AACnD,aAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC5C,YAAM,cAAc,aAAa;AACjC,YAAM,UAAU,SAAS,WAAW,aAAa,iBAAiB;AAClE,UAAI,YAAY;AACd,eAAO;AAAA,IACV;AACD,WAAO;AAAA,EACR;AACD,MAAI;AACF,UAAM,oBAAoB;AAAA,MACxB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,uBAAuB;AAAA,MACvB,iBAAiB;AAAA,MACjB,8BAA8B;AAAA,IACpC;AACI,QAAI,kBAAkB;AACpB,eAAS,aAAa,eAAe,aAAa,UAAU;AAC9D,aAAS,iBAAiB,oBAAoB,eAAe,KAAK;AAClE,aAAS,iBAAiB,wBAAwB,kBAAkB,KAAK;AACzE,aAAS,iBAAiB,6BAA6B,wBAAwB,KAAK;AACpF,QAAI,QAAQ,MAAM;AAChB,YAAM,eAAe,CAAC,UAAU,SAAS,oBAAoB;AAC7D,UAAI,MAAM,qBAAqB,MAAM;AACnC,qBAAa,MAAK;AAAA,MACnB;AACD,YAAM,WAAW,cAAc,iBAAiB;AAChD,UAAI,QAAQ,MAAM;AAChB,YAAI,WAAW,YAAY,GAAG;AAC5B,gBAAM,IAAI,MAAM,6DAA6D;AAAA,QACvF,OAAe;AACL,gBAAM,IAAI,MAAM,+BAA+B;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AACD,QAAI,IAAI,6BAA6B,QAAQ;AAC3C,UAAI,2BAA2B,WAAW;AACxC,eAAO,EAAE,YAAY,GAAG,YAAY,GAAG,aAAa;MAC5D;AAAA,IACK;AAAA,EACF,SAAQ,OAAP;AACA,YAAQ,MAAM,0BAA0B,MAAM,OAAO;AACrD,UAAM;AAAA,EACP;AACD,MAAI,YAAY,cAAc,OAAO;AACrC,MAAI,YAAY,UAAU,UAAU,YAAY,YAAY,YAAY;AACxE,MAAI,cAAc,WAAW,aAAa,cAAc,UAAU;AAClE,MAAI,YAAY,cAAc,gBAAgB;AAC9C,MAAI,QAAQ,eAAe;AAC3B,WAAS,gBAAgB;AACvB,iBAAa,IAAI,gBAAgB,GAAG;AACpC,mBAAe,IAAI,kBAAkB,KAAK,YAAY,UAAU;AAChE,eAAW,KAAK,YAAY;AAC5B,aAAS,IAAI,WAAW,KAAK,YAAY,YAAY;AACrD,YAAQ,IAAI,WAAW,KAAK,YAAY,YAAY;AACpD,WAAO,IAAI;AACX,iBAAa,IAAI;AACjB,eAAW,IAAI,cAAc,KAAK,YAAY,OAAO,YAAY,cAAc,QAAQ,IAAI;AAC3F,eAAW,IAAI,cAAc,KAAK;AAClC,iBAAa,IAAI,gBAAgB,KAAK;AACtC,iBAAa,IAAI,gBAAgB,KAAK,YAAY;AAClD,oBAAgB,IAAI,mBAAmB,KAAK,YAAY,YAAY,YAAY;AAChF,iBAAa,IAAI,gBAAgB,KAAK,YAAY,MAAM,aAAa;AACrE,cAAU,IAAI,aAAa,KAAK,YAAY,YAAY,IAAI;AAC5D,mBAAe,IAAI,kBAAkB,KAAK,cAAc,QAAQ;AAChE,eAAW,IAAI,cAAc,UAAU;AACvC,mBAAe,IAAI,cAAc,OAAO,UAAU,YAAY,YAAY,cAAc,eAAe,QAAQ;AAC/G,gBAAY,IAAI,eAAe,OAAO,UAAU;AAChD,kBAAc,IAAI;AAClB,mBAAe,IAAI,kBAAkB,YAAY,YAAY;AAC7D,iBAAa,IAAI,gBAAgB,OAAO,UAAU,OAAO,SAAS,QAAQ,mBAAmB;AAC7F,gBAAY,IAAI,eAAe,OAAO,SAAS,YAAY;AAC3D,qBAAiB,IAAI,oBAAoB,KAAK,MAAM,cAAc,KAAK;AACvE,qBAAiB,IAAI,oBAAoB,KAAK,YAAY,MAAM,YAAY;AAC5E,4BAAwB,IAAI,2BAA2B,KAAK,YAAY,MAAM,YAAY;AAC1F,SAAK,WAAW,aAAa;AAC7B,UAAM,eAAe;AACrB,UAAM,aAAa;AACnB,UAAM,aAAa;AACnB,UAAM,cAAc;AACpB,UAAM,YAAY;AAClB,UAAM,QAAQ;AACd,UAAM,OAAO;AAAA,EACd;AACD;AACA,QAAM,KAAK,IAAI,aAAa,OAAO,GAAG;AACtC,OAAK,KAAK;AACV,OAAK,aAAa,WAAW;AAC3B,WAAO;AAAA,EACX;AACE,OAAK,uBAAuB,WAAW;AACrC,WAAO,IAAI;EACf;AACE,OAAK,mBAAmB,WAAW;AACjC,UAAM,YAAY,WAAW,IAAI,oBAAoB;AACrD,QAAI;AACF,gBAAU,YAAW;AAAA,EAC3B;AACE,OAAK,sBAAsB,WAAW;AACpC,UAAM,YAAY,WAAW,IAAI,oBAAoB;AACrD,QAAI;AACF,gBAAU,eAAc;AAAA,EAC9B;AACE,OAAK,gBAAgB,WAAW;AAC9B,WAAO;AAAA,EACX;AACE,OAAK,gBAAgB,SAAS,OAAO;AACnC,QAAI,UAAU;AACZ;AACF,kBAAc;AACd,SAAK,QAAQ,QAAQ,SAAS,KAAK;AAAA,EACvC;AACE,OAAK,UAAU,SAAS,QAAQ;AAC9B,WAAO,OAAO,IAAI,QAAQ,OAAO;AAAA,EACrC;AACE,OAAK,UAAU,SAAS,OAAO,QAAQ,aAAa;AAClD,QAAI,GAAG,cAAc;AACnB,cAAQ,KAAK,uEAAuE;AACpF;AAAA,IACD;AACD,aAAS;AACT,cAAU;AACV,aAAS,QAAQ,KAAK,MAAM,QAAQ,WAAW;AAC/C,aAAS,SAAS,KAAK,MAAM,SAAS,WAAW;AACjD,QAAI,gBAAgB,OAAO;AACzB,eAAS,MAAM,QAAQ,QAAQ;AAC/B,eAAS,MAAM,SAAS,SAAS;AAAA,IAClC;AACD,SAAK,YAAY,GAAG,GAAG,OAAO,MAAM;AAAA,EACxC;AACE,OAAK,uBAAuB,SAAS,QAAQ;AAC3C,WAAO,OAAO,IAAI,SAAS,aAAa,UAAU,WAAW,EAAE;EACnE;AACE,OAAK,uBAAuB,SAAS,OAAO,QAAQ,YAAY;AAC9D,aAAS;AACT,cAAU;AACV,kBAAc;AACd,aAAS,QAAQ,KAAK,MAAM,QAAQ,UAAU;AAC9C,aAAS,SAAS,KAAK,MAAM,SAAS,UAAU;AAChD,SAAK,YAAY,GAAG,GAAG,OAAO,MAAM;AAAA,EACxC;AACE,OAAK,qBAAqB,SAAS,QAAQ;AACzC,WAAO,OAAO,KAAK,gBAAgB;AAAA,EACvC;AACE,OAAK,cAAc,SAAS,QAAQ;AAClC,WAAO,OAAO,KAAK,SAAS;AAAA,EAChC;AACE,OAAK,cAAc,SAAS,GAAG,GAAG,OAAO,QAAQ;AAC/C,QAAI,EAAE,WAAW;AACf,gBAAU,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAAA,IACtC,OAAW;AACL,gBAAU,IAAI,GAAG,GAAG,OAAO,MAAM;AAAA,IAClC;AACD,UAAM,SAAS,iBAAiB,KAAK,SAAS,EAAE,eAAe,WAAW,EAAE,MAAK,CAAE;AAAA,EACvF;AACE,OAAK,aAAa,SAAS,QAAQ;AACjC,WAAO,OAAO,KAAK,QAAQ;AAAA,EAC/B;AACE,OAAK,aAAa,SAAS,GAAG,GAAG,OAAO,QAAQ;AAC9C,QAAI,EAAE,WAAW;AACf,eAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAAA,IACrC,OAAW;AACL,eAAS,IAAI,GAAG,GAAG,OAAO,MAAM;AAAA,IACjC;AACD,UAAM,QAAQ,gBAAgB,KAAK,QAAQ,EAAE,eAAe,WAAW,EAAE,MAAK,CAAE;AAAA,EACpF;AACE,OAAK,iBAAiB,WAAW;AAC/B,WAAO;AAAA,EACX;AACE,OAAK,iBAAiB,SAAS,SAAS;AACtC,UAAM,eAAe,eAAe,OAAO;AAAA,EAC/C;AACE,OAAK,gBAAgB,SAAS,QAAQ;AACpC,kBAAc;AAAA,EAClB;AACE,OAAK,qBAAqB,SAAS,QAAQ;AACzC,uBAAmB;AAAA,EACvB;AACE,OAAK,gBAAgB,SAAS,QAAQ;AACpC,WAAO,OAAO,KAAK,WAAW,cAAe,CAAA;AAAA,EACjD;AACE,OAAK,gBAAgB,WAAW;AAC9B,eAAW,cAAc,MAAM,YAAY,SAAS;AAAA,EACxD;AACE,OAAK,gBAAgB,WAAW;AAC9B,WAAO,WAAW;EACtB;AACE,OAAK,gBAAgB,WAAW;AAC9B,eAAW,cAAc,MAAM,YAAY,SAAS;AAAA,EACxD;AACE,OAAK,QAAQ,SAAS,QAAQ,MAAM,QAAQ,MAAM,UAAU,MAAM;AAChE,QAAI,OAAO;AACX,QAAI;AACF,cAAQ;AACV,QAAI;AACF,cAAQ;AACV,QAAI;AACF,cAAQ;AACV,QAAI,MAAM,IAAI;AAAA,EAClB;AACE,OAAK,aAAa,WAAW;AAC3B,SAAK,MAAM,MAAM,OAAO,KAAK;AAAA,EACjC;AACE,OAAK,aAAa,WAAW;AAC3B,SAAK,MAAM,OAAO,MAAM,KAAK;AAAA,EACjC;AACE,OAAK,eAAe,WAAW;AAC7B,SAAK,MAAM,OAAO,OAAO,IAAI;AAAA,EACjC;AACE,OAAK,UAAU,WAAW;AACxB,aAAS,oBAAoB,oBAAoB,eAAe,KAAK;AACrE,aAAS,oBAAoB,wBAAwB,kBAAkB,KAAK;AAC5E,aAAS,oBAAoB,6BAA6B,wBAAwB,KAAK;AACvF,gBAAY,QAAO;AACnB,iBAAa,QAAO;AACpB,eAAW,QAAO;AAClB,aAAS,QAAO;AAChB,eAAW,QAAO;AAClB,YAAQ,QAAO;AACf,kBAAc,QAAO;AACrB,mBAAe,QAAO;AACtB,iBAAa,QAAO;AACpB,OAAG,QAAO;AACV,OAAG,oBAAoB,gBAAgB,gBAAgB;AACvD,OAAG,oBAAoB,cAAc,cAAc;AACnD,QAAI,2BAA2B;AAC7B,gCAA0B,QAAO;AACjC,kCAA4B;AAAA,IAC7B;AACD,cAAU,KAAI;AAAA,EAClB;AACE,WAAS,cAAc,OAAO;AAC5B,UAAM,eAAc;AACpB,YAAQ,IAAI,oCAAoC;AAChD,qBAAiB;AAAA,EAClB;AACD,WAAS,mBAAmB;AAC1B,YAAQ,IAAI,wCAAwC;AACpD,qBAAiB;AACjB,UAAM,gBAAgB,KAAK;AAC3B,UAAM,mBAAmB,UAAU;AACnC,UAAM,sBAAsB,UAAU;AACtC,UAAM,uBAAuB,UAAU;AACvC,UAAM,gBAAgB,UAAU;AAChC;AACA,SAAK,YAAY;AACjB,cAAU,UAAU;AACpB,cAAU,aAAa;AACvB,cAAU,cAAc;AACxB,cAAU,OAAO;AAAA,EAClB;AACD,WAAS,uBAAuB,OAAO;AACrC,YAAQ,MAAM,uEAAuE,MAAM,aAAa;AAAA,EACzG;AACD,WAAS,kBAAkB,OAAO;AAChC,UAAM,WAAW,MAAM;AACvB,aAAS,oBAAoB,WAAW,iBAAiB;AACzD,uBAAmB,QAAQ;AAAA,EAC5B;AACD,WAAS,mBAAmB,UAAU;AACpC,qCAAiC,QAAQ;AACzC,eAAW,OAAO,QAAQ;AAAA,EAC3B;AACD,WAAS,iCAAiC,UAAU;AAClD,UAAM,WAAW,WAAW,IAAI,QAAQ,EAAE;AAC1C,QAAI,aAAa,QAAQ;AACvB,eAAS,QAAQ,SAAS,SAAS;AACjC,qBAAa,eAAe,OAAO;AAAA,MAC3C,CAAO;AACD,UAAI,SAAS,kBAAkB;AAC7B,qBAAa,mBAAmB,QAAQ;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AACD,OAAK,qBAAqB,SAASC,SAAQ,OAAO,UAAU,UAAU,QAAQ,OAAO;AACnF,QAAI,UAAU;AACZ,cAAQ;AACV,UAAM,cAAc,OAAO,UAAU,OAAO,YAAY,YAAa,IAAG;AACxE,UAAM,UAAU,WAAWA,SAAQ,OAAO,UAAU,UAAU,MAAM;AACpE,UAAM,YAAY,UAAU,WAAW;AACvC,QAAI,QAAQ,SAAS;AACrB,UAAM,WAAW,SAAS,WAAW;AACrC,QAAI,UAAU,MAAM;AAClB,UAAI,aAAa,UAAU,SAAS,UAAU;AAC5C;AAAA,IACR,WAAe,MAAM,UAAU,GAAG;AAC5B;AAAA,IACD;AACD,QAAI,cAAc;AAClB,QAAI,SAAS,cAAc,MAAM;AAC/B,cAAQ,WAAW,sBAAsB,QAAQ;AACjD,oBAAc;AAAA,IACf;AACD,kBAAc,MAAM,QAAQ,UAAU,SAAS,UAAU,KAAK;AAC9D,QAAI;AACJ,QAAI,WAAW;AACf,QAAI,UAAU,MAAM;AAClB,kBAAY,WAAW,IAAI,KAAK;AAChC,iBAAW;AACX,eAAS,SAAS,SAAS;AAAA,IAC5B;AACD,UAAM,YAAY,UAAU,OAAO,MAAM,QAAQ,SAAS;AAC1D,UAAM,aAAa,SAAS,UAAU,QAAQ;AAC9C,UAAM,aAAa,SAAS,UAAU,QAAQ;AAC9C,UAAM,aAAa,UAAU,OAAO,MAAM,QAAQ,cAAc;AAChE,UAAM,aAAa,UAAU,OAAO,MAAM,QAAQ,cAAc;AAChE,UAAM,YAAY,KAAK,IAAI,YAAY,UAAU;AACjD,UAAM,UAAU,KAAK,IAAI,WAAW,aAAa,YAAY,aAAa,UAAU,IAAI;AACxF,UAAM,YAAY,KAAK,IAAI,GAAG,UAAU,YAAY,CAAC;AACrD,QAAI,cAAc;AAChB;AACF,QAAI,OAAO,QAAQ;AACjB,UAAI,SAAS,cAAc,MAAM;AAC/B,cAAM,aAAa,SAAS,qBAAqB,oBAAqB,CAAA;AACtE,iBAAS,QAAQ,CAAC;AAAA,MAC1B,OAAa;AACL,iBAAS,QAAQ,CAAC;AAAA,MACnB;AAAA,IACP,WAAe,OAAO,QAAQ;AACxB,UAAI,YAAY,SAAS;AACzB,UAAI,cAAc;AAChB,oBAAY;AACd,YAAM,aAAa,YAAY,oBAAqB,CAAA;AACpD,UAAI,OAAO,gBAAgB;AACzB,iBAAS,QAAQ,CAAC;AAAA,MAC1B,WAAiB,OAAO,YAAY;AAC5B,iBAAS,QAAQ,CAAC;AAAA,MAC1B,OAAa;AACL,iBAAS,QAAQ,CAAC;AAAA,MACnB;AAAA,IACP,WAAe,OAAO,UAAU;AAC1B,eAAS,QAAQ,CAAC;AAAA,IACxB,WAAe,OAAO,UAAU;AAC1B,eAAS,QAAQ,CAAC;AAAA,IACnB;AACD,QAAI,OAAO,iBAAiB;AAC1B,eAAS,gBAAgB,WAAW,WAAW,OAAO,KAAK;AAAA,IACjE,WAAe,SAAS,2BAA2B;AAC7C,YAAM,gBAAgB,KAAK,IAAI,SAAS,eAAe,SAAS,iBAAiB;AACjF,eAAS,gBAAgB,WAAW,WAAW,aAAa;AAAA,IAClE,OAAW;AACL,eAAS,OAAO,WAAW,SAAS;AAAA,IACrC;AAAA,EACL;AACE,OAAK,UAAU,SAAS,OAAOA,SAAQ;AACrC,yBAAqB,aAAa,IAAI,KAAK;AAC3C,uBAAmB,KAAI;AACvB,qBAAiB,KAAK,kBAAkB;AACxC,UAAM,gBAAgB,SAAS,QAAQ;AACrC,UAAI,OAAO,WAAW,OAAO,OAAO,KAAKA,QAAO,MAAM,GAAG;AACvD,2BAAmB,UAAU,MAAM;AACnC,YAAI,OAAO,YAAY;AACrB,6BAAmB,WAAW,MAAM;AAAA,QACrC;AAAA,MACF;AAAA,IACP,CAAK;AACD,uBAAmB,YAAY,MAAM,uBAAuB;AAC5D,UAAM,SAAS,SAAS,QAAQ;AAC9B,YAAM,WAAW,OAAO;AACxB,UAAI,UAAU;AACZ,YAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,mBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,kBAAM,YAAY,SAAS;AAC3B,uBAAW,WAAW,OAAO,MAAM;AAAA,UACpC;AAAA,QACX,OAAe;AACL,qBAAW,UAAU,OAAO,MAAM;AAAA,QACnC;AAAA,MACF;AAAA,IACP,CAAK;AACD,qBAAiB,IAAG;AACpB,yBAAqB;AAAA,EACzB;AACE,MAAI,2BAA2B;AAC/B,WAAS,iBAAiB,MAAM;AAC9B,QAAI;AACF,+BAAyB,IAAI;AAAA,EAChC;AACD,WAAS,mBAAmB;AAC1B,cAAU,KAAI;AAAA,EACf;AACD,WAAS,iBAAiB;AACxB,cAAU,MAAK;AAAA,EAChB;AACD,QAAM,YAAY,IAAI;AACtB,YAAU,iBAAiB,gBAAgB;AAC3C,MAAI,OAAO,SAAS;AAClB,cAAU,WAAW,IAAI;AAC3B,OAAK,mBAAmB,SAAS,UAAU;AACzC,+BAA2B;AAC3B,OAAG,iBAAiB,QAAQ;AAC5B,iBAAa,OAAO,UAAU,KAAI,IAAK,UAAU;EACrD;AACE,KAAG,iBAAiB,gBAAgB,gBAAgB;AACpD,KAAG,iBAAiB,cAAc,cAAc;AAChD,OAAK,SAAS,SAAS,OAAOA,SAAQ;AACpC,QAAIA,YAAW,UAAUA,QAAO,aAAa,MAAM;AACjD,cAAQ,MAAM,wEAAwE;AACtF;AAAA,IACD;AACD,QAAI,mBAAmB;AACrB;AACF,QAAI,MAAM,eAAe;AACvB,YAAM,kBAAiB;AACzB,QAAIA,QAAO,WAAW;AACpB,MAAAA,QAAO,kBAAiB;AAC1B,QAAI,GAAG,YAAY,QAAQ,GAAG,iBAAiB,MAAM;AACnD,UAAI,GAAG,qBAAqB;AAC1B,WAAG,aAAaA,OAAM;AACxB,MAAAA,UAAS,GAAG;IACb;AACD,QAAI,MAAM,YAAY;AACpB,YAAM,eAAe,OAAO,OAAOA,SAAQ,oBAAoB;AACjE,yBAAqB,aAAa,IAAI,OAAO,iBAAiB,MAAM;AACpE,uBAAmB,KAAI;AACvB,qBAAiB,KAAK,kBAAkB;AACxC,uBAAmB,iBAAiBA,QAAO,kBAAkBA,QAAO,kBAAkB;AACtF,aAAS,wBAAwB,kBAAkB;AACnD,4BAAwB,KAAK;AAC7B,uBAAmB,SAAS,KAAK,KAAK,gBAAgB,uBAAuBA,OAAM;AACnF,wBAAoB,YAAY,IAAI,OAAO,gBAAgB,MAAM;AACjE,sBAAkB,KAAI;AACtB,oBAAgB,KAAK,iBAAiB;AACtC,kBAAc,OAAOA,SAAQ,GAAG,MAAM,WAAW;AACjD,sBAAkB,OAAM;AACxB,QAAI,MAAM,gBAAgB,MAAM;AAC9B,wBAAkB,KAAK,aAAa,gBAAgB;AAAA,IACrD;AACD,QAAI,qBAAqB;AACvB,eAAS,aAAY;AACvB,UAAM,eAAe,mBAAmB,MAAM;AAC9C,cAAU,OAAO,cAAc,OAAOA,OAAM;AAC5C,QAAI,qBAAqB;AACvB,eAAS,WAAU;AACrB,QAAI,KAAK,KAAK,cAAc;AAC1B,WAAK,KAAK;AACZ,eAAW,OAAO,mBAAmB,KAAK;AAC1C,uBAAmB,YAAY,MAAM,uBAAuB;AAC5D,QAAIA,QAAO,eAAe;AACxB,YAAM,UAAUA,QAAO;AACvB,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAI,GAAG,KAAK;AAC9C,cAAMW,WAAU,QAAQ;AACxB,oBAAY,mBAAmB,OAAOA,UAASA,SAAQ,QAAQ;AAAA,MAChE;AAAA,IACP,OAAW;AACL,kBAAY,mBAAmB,OAAOX,OAAM;AAAA,IAC7C;AACD,QAAI,yBAAyB,MAAM;AACjC,eAAS,8BAA8B,oBAAoB;AAC3D,eAAS,yBAAyB,oBAAoB;AAAA,IACvD;AACD,QAAI,MAAM,YAAY;AACpB,YAAM,cAAc,OAAO,OAAOA,OAAM;AAC1C,kBAAc,kBAAiB;AAC/B,yBAAqB;AACrB,qBAAiB;AACjB,qBAAiB,IAAG;AACpB,QAAI,iBAAiB,SAAS,GAAG;AAC/B,2BAAqB,iBAAiB,iBAAiB,SAAS;AAAA,IACtE,OAAW;AACL,2BAAqB;AAAA,IACtB;AACD,oBAAgB,IAAG;AACnB,QAAI,gBAAgB,SAAS,GAAG;AAC9B,0BAAoB,gBAAgB,gBAAgB,SAAS;AAAA,IACnE,OAAW;AACL,0BAAoB;AAAA,IACrB;AAAA,EACL;AACE,WAAS,cAAc,QAAQA,SAAQ,YAAY,aAAa;AAC9D,QAAI,OAAO,YAAY;AACrB;AACF,UAAMS,WAAU,OAAO,OAAO,KAAKT,QAAO,MAAM;AAChD,QAAIS,UAAS;AACX,UAAI,OAAO,SAAS;AAClB,qBAAa,OAAO;AAAA,MAC5B,WAAiB,OAAO,OAAO;AACvB,YAAI,OAAO,eAAe;AACxB,iBAAO,OAAOT,OAAM;AAAA,MAC9B,WAAiB,OAAO,SAAS;AACzB,2BAAmB,UAAU,MAAM;AACnC,YAAI,OAAO,YAAY;AACrB,6BAAmB,WAAW,MAAM;AAAA,QACrC;AAAA,MACT,WAAiB,OAAO,UAAU;AAC1B,YAAI,CAAC,OAAO,iBAAiB,SAAS,iBAAiB,MAAM,GAAG;AAC9D,cAAI,aAAa;AACf,qBAAS,sBAAsB,OAAO,WAAW,EAAE,aAAa,kBAAkB;AAAA,UACnF;AACD,gBAAM,WAAW,QAAQ,OAAO,MAAM;AACtC,gBAAM,WAAW,OAAO;AACxB,cAAI,SAAS,SAAS;AACpB,8BAAkB,KAAK,QAAQ,UAAU,UAAU,YAAY,SAAS,GAAG,IAAI;AAAA,UAChF;AAAA,QACF;AAAA,MACT,WAAiB,OAAO,UAAU,OAAO,UAAU,OAAO,UAAU;AAC5D,YAAI,OAAO,eAAe;AACxB,cAAI,OAAO,SAAS,UAAU,KAAK,OAAO,OAAO;AAC/C,mBAAO,SAAS;AAChB,mBAAO,SAAS,QAAQ,KAAK,OAAO;AAAA,UACrC;AAAA,QACF;AACD,YAAI,CAAC,OAAO,iBAAiB,SAAS,iBAAiB,MAAM,GAAG;AAC9D,cAAI,aAAa;AACf,qBAAS,sBAAsB,OAAO,WAAW,EAAE,aAAa,kBAAkB;AAAA,UACnF;AACD,gBAAM,WAAW,QAAQ,OAAO,MAAM;AACtC,gBAAM,WAAW,OAAO;AACxB,cAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,kBAAM,SAAS,SAAS;AACxB,qBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,oBAAM,QAAQ,OAAO;AACrB,oBAAM,gBAAgB,SAAS,MAAM;AACrC,kBAAI,iBAAiB,cAAc,SAAS;AAC1C,kCAAkB,KAAK,QAAQ,UAAU,eAAe,YAAY,SAAS,GAAG,KAAK;AAAA,cACtF;AAAA,YACF;AAAA,UACb,WAAqB,SAAS,SAAS;AAC3B,8BAAkB,KAAK,QAAQ,UAAU,UAAU,YAAY,SAAS,GAAG,IAAI;AAAA,UAChF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACD,UAAM,WAAW,OAAO;AACxB,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC/C,oBAAc,SAAS,IAAIA,SAAQ,YAAY,WAAW;AAAA,IAC3D;AAAA,EACF;AACD,WAAS,YAAY,oBAAoB,OAAOA,SAAQ,UAAU;AAChE,UAAM,gBAAgB,mBAAmB;AACzC,UAAM,sBAAsB,mBAAmB;AAC/C,UAAM,qBAAqB,mBAAmB;AAC9C,uBAAmB,gBAAgBA,OAAM;AACzC,QAAI,oBAAoB,SAAS;AAC/B,6BAAuB,eAAe,OAAOA,OAAM;AACrD,QAAI;AACF,YAAM,SAAS,iBAAiB,KAAK,QAAQ,CAAC;AAChD,QAAI,cAAc,SAAS;AACzB,oBAAc,eAAe,OAAOA,OAAM;AAC5C,QAAI,oBAAoB,SAAS;AAC/B,oBAAc,qBAAqB,OAAOA,OAAM;AAClD,QAAI,mBAAmB,SAAS;AAC9B,oBAAc,oBAAoB,OAAOA,OAAM;AACjD,UAAM,QAAQ,MAAM,QAAQ,IAAI;AAChC,UAAM,QAAQ,MAAM,QAAQ,IAAI;AAChC,UAAM,QAAQ,MAAM,QAAQ,IAAI;AAChC,UAAM,iBAAiB,KAAK;AAAA,EAC7B;AACD,WAAS,uBAAuB,eAAe,OAAOA,SAAQ;AAC5D,UAAM,WAAW,aAAa;AAC9B,QAAI,8BAA8B,MAAM;AACtC,kCAA4B,IAAI,kBAAkB,GAAG,GAAG;AAAA,QACtD,iBAAiB;AAAA,QACjB,MAAM,WAAW,IAAI,6BAA6B,IAAI,gBAAgB;AAAA,QACtE,WAAW;AAAA,QACX,SAAS,YAAY,eAAe,OAAO,IAAI;AAAA,MACvD,CAAO;AAAA,IACF;AACD,UAAM,qBAAqB,SAAS;AACpC,QAAI,UAAU;AACZ,gCAA0B,QAAQ,UAAU,GAAG,UAAU,CAAC;AAAA,IAChE,OAAW;AACL,gCAA0B,QAAQ,gBAAgB,UAAU,CAAC,GAAG,gBAAgB,UAAU,CAAC,CAAC;AAAA,IAC7F;AACD,UAAM,sBAAsB,MAAM;AAClC,UAAM,gBAAgB,yBAAyB;AAC/C,UAAM,MAAK;AACX,UAAM,qBAAqB,MAAM;AACjC,UAAM,cAAc;AACpB,kBAAc,eAAe,OAAOA,OAAM;AAC1C,UAAM,cAAc;AACpB,aAAS,8BAA8B,yBAAyB;AAChE,aAAS,yBAAyB,yBAAyB;AAC3D,UAAM,gBAAgB,mBAAmB;AAAA,EAC1C;AACD,WAAS,cAAc,YAAY,OAAOA,SAAQ;AAChD,UAAM,mBAAmB,MAAM,YAAY,OAAO,MAAM,mBAAmB;AAC3E,aAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,IAAI,GAAG,KAAK;AACjD,YAAM,aAAa,WAAW;AAC9B,YAAM,SAAS,WAAW;AAC1B,YAAM,WAAW,WAAW;AAC5B,YAAM,WAAW,qBAAqB,OAAO,WAAW,WAAW;AACnE,YAAM,QAAQ,WAAW;AACzB,UAAI,OAAO,OAAO,KAAKA,QAAO,MAAM,GAAG;AACrC,qBAAa,QAAQ,OAAOA,SAAQ,UAAU,UAAU,KAAK;AAAA,MAC9D;AAAA,IACF;AAAA,EACF;AACD,WAAS,aAAa,QAAQ,OAAOA,SAAQ,UAAU,UAAU,OAAO;AACtE,WAAO,eAAe,OAAO,OAAOA,SAAQ,UAAU,UAAU,KAAK;AACrE,WAAO,gBAAgB,iBAAiBA,QAAO,oBAAoB,OAAO,WAAW;AACrF,WAAO,aAAa,gBAAgB,OAAO,eAAe;AAC1D,aAAS,eAAe,OAAO,OAAOA,SAAQ,UAAU,QAAQ,KAAK;AACrE,QAAI,SAAS,gBAAgB,QAAQ,SAAS,SAAS,YAAY;AACjE,eAAS,OAAO;AAChB,eAAS,cAAc;AACvB,YAAM,mBAAmBA,SAAQ,OAAO,UAAU,UAAU,QAAQ,KAAK;AACzE,eAAS,OAAO;AAChB,eAAS,cAAc;AACvB,YAAM,mBAAmBA,SAAQ,OAAO,UAAU,UAAU,QAAQ,KAAK;AACzE,eAAS,OAAO;AAAA,IACtB,OAAW;AACL,YAAM,mBAAmBA,SAAQ,OAAO,UAAU,UAAU,QAAQ,KAAK;AAAA,IAC1E;AACD,WAAO,cAAc,OAAO,OAAOA,SAAQ,UAAU,UAAU,KAAK;AAAA,EACrE;AACD,WAAS,WAAW,UAAU,OAAO,QAAQ;AAC3C,QAAI,MAAM,YAAY;AACpB,cAAQ;AACV,UAAM,qBAAqB,WAAW,IAAI,QAAQ;AAClD,UAAM,SAAS,mBAAmB,MAAM;AACxC,UAAM,eAAe,mBAAmB,MAAM;AAC9C,UAAM,qBAAqB,OAAO,MAAM;AACxC,UAAM,cAAc,aAAa,cAAc,UAAU,OAAO,OAAO,cAAc,OAAO,MAAM;AAClG,UAAM,kBAAkB,aAAa,mBAAmB,WAAW;AACnE,QAAI,WAAW,mBAAmB;AAClC,uBAAmB,cAAc,SAAS,yBAAyB,MAAM,cAAc;AACvF,uBAAmB,MAAM,MAAM;AAC/B,uBAAmB,UAAU,SAAS,yBAAyB,aAAa,UAAU,IAAI,SAAS,UAAU,mBAAmB,WAAW;AAC3I,QAAI,aAAa,QAAQ;AACvB,eAAS,iBAAiB,WAAW,iBAAiB;AACtD,iBAA2B,oBAAI;AAC/B,yBAAmB,WAAW;AAAA,IAC/B;AACD,QAAI,UAAU,SAAS,IAAI,eAAe;AAC1C,QAAI,YAAY,QAAQ;AACtB,UAAI,mBAAmB,mBAAmB,WAAW,mBAAmB,uBAAuB,oBAAoB;AACjH,uCAA+B,UAAU,WAAW;AACpD,eAAO;AAAA,MACR;AAAA,IACP,OAAW;AACL,kBAAY,WAAW,aAAa,YAAY,QAAQ;AACxD,eAAS,QAAQ,QAAQ,aAAa,KAAK;AAC3C,eAAS,gBAAgB,aAAa,KAAK;AAC3C,gBAAU,aAAa,eAAe,aAAa,eAAe;AAClE,eAAS,IAAI,iBAAiB,OAAO;AACrC,yBAAmB,WAAW,YAAY;AAAA,IAC3C;AACD,UAAM,WAAW,mBAAmB;AACpC,QAAI,CAAC,SAAS,oBAAoB,CAAC,SAAS,uBAAuB,SAAS,aAAa,MAAM;AAC7F,eAAS,iBAAiB,SAAS;AAAA,IACpC;AACD,mCAA+B,UAAU,WAAW;AACpD,uBAAmB,cAAc,oBAAoB,QAAQ;AAC7D,uBAAmB,qBAAqB;AACxC,QAAI,mBAAmB,aAAa;AAClC,eAAS,kBAAkB,QAAQ,OAAO,MAAM;AAChD,eAAS,WAAW,QAAQ,OAAO,MAAM;AACzC,eAAS,kBAAkB,QAAQ,OAAO,MAAM;AAChD,eAAS,wBAAwB,QAAQ,OAAO,MAAM;AACtD,eAAS,WAAW,QAAQ,OAAO,MAAM;AACzC,eAAS,iBAAiB,QAAQ,OAAO,MAAM;AAC/C,eAAS,eAAe,QAAQ,OAAO,MAAM;AAC7C,eAAS,MAAM,QAAQ,OAAO,MAAM;AACpC,eAAS,MAAM,QAAQ,OAAO,MAAM;AACpC,eAAS,YAAY,QAAQ,OAAO,MAAM;AAC1C,eAAS,kBAAkB,QAAQ,OAAO,MAAM;AAChD,eAAS,iBAAiB,QAAQ,OAAO,MAAM;AAC/C,eAAS,qBAAqB,QAAQ,OAAO,MAAM;AACnD,eAAS,wBAAwB,QAAQ,OAAO,MAAM;AACtD,eAAS,cAAc,QAAQ,OAAO,MAAM;AAC5C,eAAS,iBAAiB,QAAQ,OAAO,MAAM;AAC/C,eAAS,eAAe,QAAQ,OAAO,MAAM;AAC7C,eAAS,kBAAkB,QAAQ,OAAO,MAAM;AAAA,IACjD;AACD,UAAM,eAAe,QAAQ;AAC7B,UAAM,eAAe,cAAc,aAAa,aAAa,KAAK,QAAQ;AAC1E,uBAAmB,iBAAiB;AACpC,uBAAmB,eAAe;AAClC,WAAO;AAAA,EACR;AACD,WAAS,+BAA+B,UAAU,aAAa;AAC7D,UAAM,qBAAqB,WAAW,IAAI,QAAQ;AAClD,uBAAmB,iBAAiB,YAAY;AAChD,uBAAmB,aAAa,YAAY;AAC5C,uBAAmB,WAAW,YAAY;AAC1C,uBAAmB,eAAe,YAAY;AAC9C,uBAAmB,eAAe,YAAY;AAC9C,uBAAmB,cAAc,YAAY;AAC7C,uBAAmB,oBAAoB,YAAY;AACnD,uBAAmB,oBAAoB,YAAY;AACnD,uBAAmB,kBAAkB,YAAY;AACjD,uBAAmB,eAAe,YAAY;AAC9C,uBAAmB,iBAAiB,YAAY;AAChD,uBAAmB,cAAc,YAAY;AAAA,EAC9C;AACD,WAAS,WAAWA,SAAQ,OAAO,UAAU,UAAU,QAAQ;AAC7D,QAAI,MAAM,YAAY;AACpB,cAAQ;AACV,aAAS,kBAAiB;AAC1B,UAAM,MAAM,MAAM;AAClB,UAAM,cAAc,SAAS,yBAAyB,MAAM,cAAc;AAC1E,UAAM,WAAW,yBAAyB,OAAO,MAAM,iBAAiB,qBAAqB,qBAAqB,OAAO,qBAAqB,QAAQ,WAAW;AACjK,UAAM,UAAU,SAAS,yBAAyB,aAAa,UAAU,IAAI,SAAS,UAAU,WAAW;AAC3G,UAAM,eAAe,SAAS,iBAAiB,QAAQ,CAAC,CAAC,SAAS,WAAW,SAAS,SAAS,WAAW,MAAM,aAAa;AAC7H,UAAM,iBAAiB,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,SAAS,WAAW;AACrE,UAAM,eAAe,CAAC,CAAC,SAAS,gBAAgB;AAChD,UAAM,eAAe,CAAC,CAAC,SAAS,gBAAgB;AAChD,UAAM,cAAc,CAAC,CAAC,SAAS,gBAAgB;AAC/C,UAAM,cAAc,SAAS,aAAa,MAAM,cAAc;AAC9D,UAAM,iBAAiB,SAAS,gBAAgB,YAAY,SAAS,gBAAgB,UAAU,SAAS,gBAAgB;AACxH,UAAM,oBAAoB,mBAAmB,SAAS,eAAe,SAAS;AAC9E,UAAM,qBAAqB,WAAW,IAAI,QAAQ;AAClD,UAAM,SAAS,mBAAmB,MAAM;AACxC,QAAI,qBAAqB,MAAM;AAC7B,UAAI,0BAA0B,QAAQA,YAAW,gBAAgB;AAC/D,cAAM,WAAWA,YAAW,kBAAkB,SAAS,OAAO;AAC9D,iBAAS,SAAS,UAAUA,SAAQ,QAAQ;AAAA,MAC7C;AAAA,IACF;AACD,QAAI,qBAAqB;AACzB,QAAI,SAAS,YAAY,mBAAmB,WAAW;AACrD,UAAI,mBAAmB,eAAe,mBAAmB,uBAAuB,OAAO,MAAM,SAAS;AACpG,6BAAqB;AAAA,MAC7B,WAAiB,mBAAmB,mBAAmB,UAAU;AACzD,6BAAqB;AAAA,MACtB,WAAU,OAAO,mBAAmB,mBAAmB,eAAe,OAAO;AAC5E,6BAAqB;AAAA,MAC7B,WAAiB,CAAC,OAAO,mBAAmB,mBAAmB,eAAe,MAAM;AAC5E,6BAAqB;AAAA,MACtB,WAAU,OAAO,iBAAiB,mBAAmB,aAAa,OAAO;AACxE,6BAAqB;AAAA,MAC7B,WAAiB,CAAC,OAAO,iBAAiB,mBAAmB,aAAa,MAAM;AACxE,6BAAqB;AAAA,MAC7B,WAAiB,mBAAmB,WAAW,QAAQ;AAC/C,6BAAqB;AAAA,MAC7B,WAAiB,SAAS,QAAQ,QAAQ,mBAAmB,QAAQ,KAAK;AAClE,6BAAqB;AAAA,MACtB,WAAU,mBAAmB,sBAAsB,WAAW,mBAAmB,sBAAsB,SAAS,aAAa,mBAAmB,oBAAoB,SAAS,kBAAkB;AAC9L,6BAAqB;AAAA,MAC7B,WAAiB,mBAAmB,iBAAiB,cAAc;AAC3D,6BAAqB;AAAA,MAC7B,WAAiB,mBAAmB,mBAAmB,gBAAgB;AAC/D,6BAAqB;AAAA,MAC7B,WAAiB,mBAAmB,iBAAiB,cAAc;AAC3D,6BAAqB;AAAA,MAC7B,WAAiB,mBAAmB,iBAAiB,cAAc;AAC3D,6BAAqB;AAAA,MAC7B,WAAiB,mBAAmB,gBAAgB,aAAa;AACzD,6BAAqB;AAAA,MAC7B,WAAiB,mBAAmB,gBAAgB,aAAa;AACzD,6BAAqB;AAAA,MAC7B,WAAiB,aAAa,aAAa,QAAQ,mBAAmB,sBAAsB,mBAAmB;AACvG,6BAAqB;AAAA,MACtB;AAAA,IACP,OAAW;AACL,2BAAqB;AACrB,yBAAmB,YAAY,SAAS;AAAA,IACzC;AACD,QAAI,UAAU,mBAAmB;AACjC,QAAI,uBAAuB,MAAM;AAC/B,gBAAU,WAAW,UAAU,OAAO,MAAM;AAAA,IAC7C;AACD,QAAI,iBAAiB;AACrB,QAAI,kBAAkB;AACtB,QAAI,gBAAgB;AACpB,UAAM,aAAa,QAAQ,YAAa,GAAE,aAAa,mBAAmB;AAC1E,QAAI,MAAM,WAAW,QAAQ,OAAO,GAAG;AACrC,uBAAiB;AACjB,wBAAkB;AAClB,sBAAgB;AAAA,IACjB;AACD,QAAI,SAAS,OAAO,oBAAoB;AACtC,2BAAqB,SAAS;AAC9B,wBAAkB;AAAA,IACnB;AACD,QAAI,kBAAkB,mBAAmBA,SAAQ;AAC/C,iBAAW,SAAS,KAAK,oBAAoBA,QAAO,gBAAgB;AACpE,UAAI,aAAa,wBAAwB;AACvC,mBAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA,KAAK,KAAK,IAAIA,QAAO,MAAM,CAAC,IAAI,KAAK;AAAA,QAC/C;AAAA,MACO;AACD,UAAI,mBAAmBA,SAAQ;AAC7B,yBAAiBA;AACjB,0BAAkB;AAClB,wBAAgB;AAAA,MACjB;AACD,UAAI,SAAS,oBAAoB,SAAS,uBAAuB,SAAS,sBAAsB,SAAS,0BAA0B,SAAS,QAAQ;AAClJ,cAAM,UAAU,WAAW,IAAI;AAC/B,YAAI,YAAY,QAAQ;AACtB,kBAAQ;AAAA,YACN;AAAA,YACA,SAAS,sBAAsBA,QAAO,WAAW;AAAA,UAC7D;AAAA,QACS;AAAA,MACF;AACD,UAAI,SAAS,uBAAuB,SAAS,sBAAsB,SAAS,yBAAyB,SAAS,uBAAuB,SAAS,0BAA0B,SAAS,kBAAkB;AACjM,mBAAW,SAAS,KAAK,kBAAkBA,QAAO,yBAAyB,IAAI;AAAA,MAChF;AACD,UAAI,SAAS,uBAAuB,SAAS,sBAAsB,SAAS,yBAAyB,SAAS,uBAAuB,SAAS,0BAA0B,SAAS,oBAAoB,SAAS,oBAAoB,OAAO,eAAe;AACtP,mBAAW,SAAS,KAAK,cAAcA,QAAO,kBAAkB;AAAA,MACjE;AAAA,IACF;AACD,QAAI,OAAO,eAAe;AACxB,iBAAW,YAAY,KAAK,QAAQ,YAAY;AAChD,iBAAW,YAAY,KAAK,QAAQ,mBAAmB;AACvD,YAAM,WAAW,OAAO;AACxB,UAAI,UAAU;AACZ,YAAI,aAAa,qBAAqB;AACpC,cAAI,SAAS,gBAAgB;AAC3B,qBAAS,mBAAkB;AAC7B,qBAAW,SAAS,KAAK,eAAe,SAAS,aAAa,QAAQ;AACtE,qBAAW,SAAS,KAAK,mBAAmB,SAAS,eAAe;AAAA,QAC9E,OAAe;AACL,kBAAQ,KAAK,yIAAyI;AAAA,QACvJ;AAAA,MACF;AAAA,IACF;AACD,UAAM,kBAAkB,SAAS;AACjC,QAAI,gBAAgB,aAAa,UAAU,gBAAgB,WAAW,UAAU,gBAAgB,UAAU,UAAU,aAAa,aAAa,MAAM;AAClJ,mBAAa,OAAO,QAAQ,UAAU,UAAU,OAAO;AAAA,IACxD;AACD,QAAI,mBAAmB,mBAAmB,kBAAkB,OAAO,eAAe;AAChF,yBAAmB,gBAAgB,OAAO;AAC1C,iBAAW,SAAS,KAAK,iBAAiB,OAAO,aAAa;AAAA,IAC/D;AACD,QAAI,iBAAiB;AACnB,iBAAW,SAAS,KAAK,uBAAuB,MAAM,mBAAmB;AACzE,UAAI,mBAAmB,aAAa;AAClC,sCAA8B,YAAY,aAAa;AAAA,MACxD;AACD,UAAI,OAAO,SAAS,QAAQ,MAAM;AAChC,kBAAU,mBAAmB,YAAY,GAAG;AAAA,MAC7C;AACD,gBAAU,wBAAwB,YAAY,UAAU,aAAa,SAAS,yBAAyB;AACvG,oBAAc,OAAO,KAAK,mBAAmB,cAAc,YAAY,QAAQ;AAAA,IAChF;AACD,QAAI,SAAS,oBAAoB,SAAS,uBAAuB,MAAM;AACrE,oBAAc,OAAO,KAAK,mBAAmB,cAAc,YAAY,QAAQ;AAC/E,eAAS,qBAAqB;AAAA,IAC/B;AACD,QAAI,SAAS,kBAAkB;AAC7B,iBAAW,SAAS,KAAK,UAAU,OAAO,MAAM;AAAA,IACjD;AACD,eAAW,SAAS,KAAK,mBAAmB,OAAO,eAAe;AAClE,eAAW,SAAS,KAAK,gBAAgB,OAAO,YAAY;AAC5D,eAAW,SAAS,KAAK,eAAe,OAAO,WAAW;AAC1D,QAAI,SAAS,oBAAoB,SAAS,qBAAqB;AAC7D,YAAM,SAAS,SAAS;AACxB,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,YAAI,aAAa,UAAU;AACzB,gBAAM,QAAQ,OAAO;AACrB,yBAAe,OAAO,OAAO,OAAO;AACpC,yBAAe,KAAK,OAAO,OAAO;AAAA,QAC5C,OAAe;AACL,kBAAQ,KAAK,4EAA4E;AAAA,QAC1F;AAAA,MACF;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,WAAS,8BAA8B,UAAU,OAAO;AACtD,aAAS,kBAAkB,cAAc;AACzC,aAAS,WAAW,cAAc;AAClC,aAAS,kBAAkB,cAAc;AACzC,aAAS,wBAAwB,cAAc;AAC/C,aAAS,YAAY,cAAc;AACnC,aAAS,kBAAkB,cAAc;AACzC,aAAS,WAAW,cAAc;AAClC,aAAS,iBAAiB,cAAc;AACxC,aAAS,eAAe,cAAc;AACtC,aAAS,iBAAiB,cAAc;AAAA,EACzC;AACD,WAAS,oBAAoB,UAAU;AACrC,WAAO,SAAS,yBAAyB,SAAS,sBAAsB,SAAS,uBAAuB,SAAS,0BAA0B,SAAS,oBAAoB,SAAS,oBAAoB,SAAS,WAAW;AAAA,EAC1N;AACD,OAAK,oBAAoB,WAAW;AAClC,WAAO;AAAA,EACX;AACE,OAAK,uBAAuB,WAAW;AACrC,WAAO;AAAA,EACX;AACE,OAAK,kBAAkB,WAAW;AAChC,WAAO;AAAA,EACX;AACE,OAAK,0BAA0B,SAAS,cAAc,cAAc,cAAc;AAChF,eAAW,IAAI,aAAa,OAAO,EAAE,iBAAiB;AACtD,eAAW,IAAI,aAAa,YAAY,EAAE,iBAAiB;AAC3D,UAAM,yBAAyB,WAAW,IAAI,YAAY;AAC1D,2BAAuB,wBAAwB;AAC/C,QAAI,uBAAuB,uBAAuB;AAChD,6BAAuB,4BAA4B,iBAAiB;AACpE,UAAI,CAAC,uBAAuB,2BAA2B;AACrD,YAAI,WAAW,IAAI,sCAAsC,MAAM,MAAM;AACnE,kBAAQ,KAAK,wGAAwG;AACrH,iCAAuB,uBAAuB;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAAA,EACL;AACE,OAAK,6BAA6B,SAAS,cAAc,oBAAoB;AAC3E,UAAM,yBAAyB,WAAW,IAAI,YAAY;AAC1D,2BAAuB,qBAAqB;AAC5C,2BAAuB,0BAA0B,uBAAuB;AAAA,EAC5E;AACE,OAAK,kBAAkB,SAAS,cAAc,iBAAiB,GAAG,oBAAoB,GAAG;AACvF,2BAAuB;AACvB,6BAAyB;AACzB,gCAA4B;AAC5B,QAAI,wBAAwB;AAC5B,QAAI,cAAc;AAChB,YAAM,yBAAyB,WAAW,IAAI,YAAY;AAC1D,UAAI,uBAAuB,4BAA4B,QAAQ;AAC7D,cAAM,gBAAgB,OAAO,IAAI;AACjC,gCAAwB;AAAA,MACzB,WAAU,uBAAuB,uBAAuB,QAAQ;AAC/D,iBAAS,kBAAkB,YAAY;AAAA,MAC/C,WAAiB,uBAAuB,uBAAuB;AACvD,iBAAS,eAAe,cAAc,WAAW,IAAI,aAAa,OAAO,EAAE,gBAAgB,WAAW,IAAI,aAAa,YAAY,EAAE,cAAc;AAAA,MACpJ;AAAA,IACF;AACD,QAAI,cAAc;AAClB,QAAI,SAAS;AACb,QAAI,mBAAmB;AACvB,QAAI,cAAc;AAChB,YAAM,UAAU,aAAa;AAC7B,UAAI,QAAQ,mBAAmB,QAAQ,oBAAoB;AACzD,2BAAmB;AAAA,MACpB;AACD,YAAM,qBAAqB,WAAW,IAAI,YAAY,EAAE;AACxD,UAAI,aAAa,yBAAyB;AACxC,sBAAc,mBAAmB;AACjC,iBAAS;AAAA,MACV,WAAU,aAAa,YAAY,aAAa,UAAU,KAAK,SAAS,mBAAmB,YAAY,MAAM,OAAO;AACnH,sBAAc,WAAW,IAAI,YAAY,EAAE;AAAA,MACnD,OAAa;AACL,sBAAc;AAAA,MACf;AACD,uBAAiB,KAAK,aAAa,QAAQ;AAC3C,sBAAgB,KAAK,aAAa,OAAO;AACzC,4BAAsB,aAAa;AAAA,IACzC,OAAW;AACL,uBAAiB,KAAK,SAAS,EAAE,eAAe,WAAW,EAAE;AAC7D,sBAAgB,KAAK,QAAQ,EAAE,eAAe,WAAW,EAAE;AAC3D,4BAAsB;AAAA,IACvB;AACD,UAAM,mBAAmB,MAAM,gBAAgB,OAAO,WAAW;AACjE,QAAI,oBAAoB,aAAa,eAAe,uBAAuB;AACzE,YAAM,YAAY,cAAc,WAAW;AAAA,IAC5C;AACD,UAAM,SAAS,gBAAgB;AAC/B,UAAM,QAAQ,eAAe;AAC7B,UAAM,eAAe,mBAAmB;AACxC,QAAI,QAAQ;AACV,YAAM,oBAAoB,WAAW,IAAI,aAAa,OAAO;AAC7D,UAAI,qBAAqB,OAAO,OAAO,QAAQ,gBAAgB,kBAAkB,gBAAgB,iBAAiB;AAAA,IACnH,WAAU,kBAAkB;AAC3B,YAAM,oBAAoB,WAAW,IAAI,aAAa,OAAO;AAC7D,YAAM,QAAQ,kBAAkB;AAChC,UAAI,wBAAwB,OAAO,OAAO,kBAAkB,gBAAgB,qBAAqB,GAAG,KAAK;AAAA,IAC1G;AACD,yBAAqB;AAAA,EACzB;AACE,OAAK,yBAAyB,SAAS,cAAc,GAAG,GAAG,OAAO,QAAQ,QAAQ,qBAAqB;AACrG,QAAI,EAAE,gBAAgB,aAAa,sBAAsB;AACvD,cAAQ,MAAM,0FAA0F;AACxG;AAAA,IACD;AACD,QAAI,cAAc,WAAW,IAAI,YAAY,EAAE;AAC/C,QAAI,aAAa,2BAA2B,wBAAwB,QAAQ;AAC1E,oBAAc,YAAY;AAAA,IAC3B;AACD,QAAI,aAAa;AACf,YAAM,gBAAgB,OAAO,WAAW;AACxC,UAAI;AACF,cAAM,UAAU,aAAa;AAC7B,cAAM,gBAAgB,QAAQ;AAC9B,cAAM,cAAc,QAAQ;AAC5B,YAAI,kBAAkB,cAAc,OAAO,QAAQ,aAAa,MAAM,IAAI,aAAa,KAAK,GAAG;AAC7F,kBAAQ,MAAM,2GAA2G;AACzH;AAAA,QACD;AACD,cAAM,0BAA0B,gBAAgB,kBAAkB,WAAW,IAAI,6BAA6B,KAAK,aAAa,YAAY,WAAW,IAAI,wBAAwB;AACnL,YAAI,gBAAgB,oBAAoB,OAAO,QAAQ,WAAW,MAAM,IAAI,aAAa,KAAK,KAAK,EAAE,gBAAgB,cAAc,aAAa,YAAY,WAAW,IAAI,mBAAmB,KAAK,WAAW,IAAI,0BAA0B,OAAO,CAAC,yBAAyB;AAC3Q,kBAAQ,MAAM,qHAAqH;AACnI;AAAA,QACD;AACD,YAAI,KAAK,KAAK,KAAK,aAAa,QAAQ,UAAU,KAAK,KAAK,KAAK,aAAa,SAAS,SAAS;AAC9F,cAAI,WAAW,GAAG,GAAG,OAAO,QAAQ,OAAO,QAAQ,aAAa,GAAG,OAAO,QAAQ,WAAW,GAAG,MAAM;AAAA,QACvG;AAAA,MACT,UAAgB;AACR,cAAM,eAAe,yBAAyB,OAAO,WAAW,IAAI,oBAAoB,EAAE,qBAAqB;AAC/G,cAAM,gBAAgB,OAAO,YAAY;AAAA,MAC1C;AAAA,IACF;AAAA,EACL;AACE,OAAK,2BAA2B,SAAS,UAAU,SAAS,QAAQ,GAAG;AACrE,UAAM,aAAa,KAAK,IAAI,GAAG,CAAC,KAAK;AACrC,UAAM,QAAQ,KAAK,MAAM,QAAQ,MAAM,QAAQ,UAAU;AACzD,UAAM,SAAS,KAAK,MAAM,QAAQ,MAAM,SAAS,UAAU;AAC3D,aAAS,aAAa,SAAS,CAAC;AAChC,QAAI,kBAAkB,MAAM,OAAO,GAAG,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,MAAM;AAC9E,UAAM,cAAa;AAAA,EACvB;AACE,OAAK,uBAAuB,SAAS,UAAU,YAAY,YAAY,QAAQ,GAAG;AAChF,UAAM,QAAQ,WAAW,MAAM;AAC/B,UAAM,SAAS,WAAW,MAAM;AAChC,UAAM,WAAW,OAAO,QAAQ,WAAW,MAAM;AACjD,UAAM,SAAS,OAAO,QAAQ,WAAW,IAAI;AAC7C,aAAS,aAAa,YAAY,CAAC;AACnC,QAAI,YAAY,OAAO,WAAW,KAAK;AACvC,QAAI,YAAY,OAAO,WAAW,gBAAgB;AAClD,QAAI,YAAY,MAAM,WAAW,eAAe;AAChD,QAAI,WAAW,eAAe;AAC5B,UAAI,cAAc,MAAM,OAAO,SAAS,GAAG,SAAS,GAAG,OAAO,QAAQ,UAAU,QAAQ,WAAW,MAAM,IAAI;AAAA,IACnH,OAAW;AACL,UAAI,WAAW,qBAAqB;AAClC,YAAI,wBAAwB,MAAM,OAAO,SAAS,GAAG,SAAS,GAAG,WAAW,QAAQ,GAAG,OAAO,WAAW,QAAQ,GAAG,QAAQ,UAAU,WAAW,QAAQ,GAAG,IAAI;AAAA,MACxK,OAAa;AACL,YAAI,cAAc,MAAM,OAAO,SAAS,GAAG,SAAS,GAAG,UAAU,QAAQ,WAAW,KAAK;AAAA,MAC1F;AAAA,IACF;AACD,QAAI,UAAU,KAAK,WAAW;AAC5B,UAAI,eAAe,IAAI;AACzB,UAAM,cAAa;AAAA,EACvB;AACE,OAAK,yBAAyB,SAAS,WAAW,UAAU,YAAY,YAAY,QAAQ,GAAG;AAC7F,QAAI,MAAM,kBAAkB;AAC1B,cAAQ,KAAK,2EAA2E;AACxF;AAAA,IACD;AACD,UAAM,QAAQ,UAAU,IAAI,IAAI,UAAU,IAAI,IAAI;AAClD,UAAM,SAAS,UAAU,IAAI,IAAI,UAAU,IAAI,IAAI;AACnD,UAAM,QAAQ,UAAU,IAAI,IAAI,UAAU,IAAI,IAAI;AAClD,UAAM,WAAW,OAAO,QAAQ,WAAW,MAAM;AACjD,UAAM,SAAS,OAAO,QAAQ,WAAW,IAAI;AAC7C,QAAI;AACJ,QAAI,WAAW,iBAAiB;AAC9B,eAAS,aAAa,YAAY,CAAC;AACnC,iBAAW;AAAA,IACjB,WAAe,WAAW,oBAAoB;AACxC,eAAS,kBAAkB,YAAY,CAAC;AACxC,iBAAW;AAAA,IACjB,OAAW;AACL,cAAQ,KAAK,6GAA6G;AAC1H;AAAA,IACD;AACD,QAAI,YAAY,OAAO,WAAW,KAAK;AACvC,QAAI,YAAY,OAAO,WAAW,gBAAgB;AAClD,QAAI,YAAY,MAAM,WAAW,eAAe;AAChD,UAAM,eAAe,IAAI,aAAa,IAAI;AAC1C,UAAM,oBAAoB,IAAI,aAAa,KAAK;AAChD,UAAM,mBAAmB,IAAI,aAAa,IAAI;AAC9C,UAAM,iBAAiB,IAAI,aAAa,IAAI;AAC5C,UAAM,mBAAmB,IAAI,aAAa,KAAK;AAC/C,UAAM,QAAQ,WAAW,sBAAsB,WAAW,QAAQ,KAAK,WAAW;AAClF,QAAI,YAAY,MAAM,MAAM,KAAK;AACjC,QAAI,YAAY,OAAO,MAAM,MAAM;AACnC,QAAI,YAAY,MAAM,UAAU,IAAI,CAAC;AACrC,QAAI,YAAY,MAAM,UAAU,IAAI,CAAC;AACrC,QAAI,YAAY,OAAO,UAAU,IAAI,CAAC;AACtC,QAAI,WAAW,iBAAiB,WAAW,iBAAiB;AAC1D,UAAI,cAAc,UAAU,OAAO,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,QAAQ,OAAO,UAAU,QAAQ,MAAM,IAAI;AAAA,IAC/H,OAAW;AACL,UAAI,WAAW,qBAAqB;AAClC,gBAAQ,KAAK,yFAAyF;AACtG,YAAI,wBAAwB,UAAU,OAAO,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,QAAQ,OAAO,UAAU,MAAM,IAAI;AAAA,MACnI,OAAa;AACL,YAAI,cAAc,UAAU,OAAO,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,QAAQ,OAAO,UAAU,QAAQ,KAAK;AAAA,MACrH;AAAA,IACF;AACD,QAAI,YAAY,MAAM,YAAY;AAClC,QAAI,YAAY,OAAO,iBAAiB;AACxC,QAAI,YAAY,MAAM,gBAAgB;AACtC,QAAI,YAAY,MAAM,cAAc;AACpC,QAAI,YAAY,OAAO,gBAAgB;AACvC,QAAI,UAAU,KAAK,WAAW;AAC5B,UAAI,eAAe,QAAQ;AAC7B,UAAM,cAAa;AAAA,EACvB;AACE,OAAK,cAAc,SAAS,SAAS;AACnC,QAAI,QAAQ,eAAe;AACzB,eAAS,eAAe,SAAS,CAAC;AAAA,IACxC,WAAe,QAAQ,iBAAiB;AAClC,eAAS,aAAa,SAAS,CAAC;AAAA,IACtC,WAAe,QAAQ,oBAAoB;AACrC,eAAS,kBAAkB,SAAS,CAAC;AAAA,IAC3C,OAAW;AACL,eAAS,aAAa,SAAS,CAAC;AAAA,IACjC;AACD,UAAM,cAAa;AAAA,EACvB;AACE,OAAK,aAAa,WAAW;AAC3B,6BAAyB;AACzB,gCAA4B;AAC5B,2BAAuB;AACvB,UAAM,MAAK;AACX,kBAAc,MAAK;AAAA,EACvB;AACE,MAAI,OAAO,uBAAuB,aAAa;AAC7C,uBAAmB,cAAc,IAAI,YAAY,WAAW,EAAE,QAAQ,KAAM,CAAA,CAAC;AAAA,EAC9E;AACH;AACA,MAAM,uBAAuBU,gBAAc;AAC3C;AACA,eAAe,UAAU,mBAAmB;AAC5C,MAAM,QAAQ;AAAA,EACZ,YAAY,OAAO,UAAU,OAAO;AAClC,SAAK,YAAY;AACjB,SAAK,OAAO;AACZ,SAAK,QAAQ,IAAI,MAAM,KAAK;AAC5B,SAAK,UAAU;AAAA,EAChB;AAAA,EACD,QAAQ;AACN,WAAO,IAAI,QAAQ,KAAK,OAAO,KAAK,OAAO;AAAA,EAC5C;AAAA,EACD,SAAS;AACP,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,KAAK,MAAM,OAAQ;AAAA,MAC1B,SAAS,KAAK;AAAA,IACpB;AAAA,EACG;AACH;AACA,MAAM,IAAI;AAAA,EACR,YAAY,OAAO,OAAO,GAAG,MAAM,KAAK;AACtC,SAAK,QAAQ;AACb,SAAK,OAAO;AACZ,SAAK,QAAQ,IAAI,MAAM,KAAK;AAC5B,SAAK,OAAO;AACZ,SAAK,MAAM;AAAA,EACZ;AAAA,EACD,QAAQ;AACN,WAAO,IAAI,IAAI,KAAK,OAAO,KAAK,MAAM,KAAK,GAAG;AAAA,EAC/C;AAAA,EACD,SAAS;AACP,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,KAAK,MAAM,OAAQ;AAAA,MAC1B,MAAM,KAAK;AAAA,MACX,KAAK,KAAK;AAAA,IAChB;AAAA,EACG;AACH;AACA,MAAM,gBAAgB,WAAW;AAAA,EAC/B,cAAc;AACZ;AACA,SAAK,UAAU;AACf,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,cAAc;AACnB,SAAK,MAAM;AACX,SAAK,mBAAmB;AACxB,SAAK,aAAa;AAClB,QAAI,OAAO,uBAAuB,aAAa;AAC7C,yBAAmB,cAAc,IAAI,YAAY,WAAW,EAAE,QAAQ,KAAM,CAAA,CAAC;AAAA,IAC9E;AAAA,EACF;AAAA,EACD,KAAK,QAAQ,WAAW;AACtB,UAAM,KAAK,QAAQ,SAAS;AAC5B,QAAI,OAAO,eAAe;AACxB,WAAK,aAAa,OAAO,WAAW,MAAK;AAC3C,QAAI,OAAO,gBAAgB;AACzB,WAAK,cAAc,OAAO,YAAY,MAAK;AAC7C,QAAI,OAAO,QAAQ;AACjB,WAAK,MAAM,OAAO,IAAI,MAAK;AAC7B,QAAI,OAAO,qBAAqB;AAC9B,WAAK,mBAAmB,OAAO,iBAAiB,MAAK;AACvD,SAAK,aAAa,OAAO;AACzB,SAAK,mBAAmB,OAAO;AAC/B,WAAO;AAAA,EACR;AAAA,EACD,OAAO,MAAM;AACX,UAAMhG,QAAO,MAAM,OAAO,IAAI;AAC9B,QAAI,KAAK,QAAQ;AACf,MAAAA,MAAK,OAAO,MAAM,KAAK,IAAI,OAAM;AACnC,WAAOA;AAAA,EACR;AACH;AACA,MAAM,kBAAkB;AAAA,EACtB,YAAY,OAAO,QAAQ;AACzB,SAAK,sBAAsB;AAC3B,SAAK,QAAQ;AACb,SAAK,SAAS;AACd,SAAK,QAAQ,UAAU,SAAS,MAAM,SAAS,SAAS;AACxD,SAAK,QAAQ;AACb,SAAK,cAAc,EAAE,QAAQ,GAAG,OAAO;AACvC,SAAK,UAAU;AACf,SAAK,OAAO;EACb;AAAA,EACD,mBAAmB;AAAA,EAClB;AAAA,EACD,IAAI,YAAY,OAAO;AACrB,QAAI,UAAU;AACZ,WAAK;AAAA,EACR;AAAA,EACD,SAAS,OAAO;AACd,SAAK,QAAQ;AACb,WAAO;AAAA,EACR;AAAA,EACD,KAAK,QAAQ;AACX,SAAK,QAAQ,IAAI,OAAO,MAAM,YAAY,OAAO,KAAK;AACtD,SAAK,QAAQ,OAAO;AACpB,SAAK,SAAS,OAAO;AACrB,SAAK,QAAQ,OAAO;AACpB,WAAO;AAAA,EACR;AAAA,EACD,OAAO,QAAQ,WAAW,QAAQ;AAChC,cAAU,KAAK;AACf,cAAU,UAAU;AACpB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK;AAC3C,WAAK,MAAM,SAAS,KAAK,UAAU,MAAM,SAAS;AAAA,IACnD;AACD,WAAO;AAAA,EACR;AAAA,EACD,IAAI,OAAO,SAAS,GAAG;AACrB,SAAK,MAAM,IAAI,OAAO,MAAM;AAC5B,WAAO;AAAA,EACR;AAAA,EACD,MAAMA,OAAM;AACV,QAAIA,MAAK,iBAAiB,QAAQ;AAChC,MAAAA,MAAK,eAAe;IACrB;AACD,QAAI,KAAK,MAAM,OAAO,UAAU,QAAQ;AACtC,WAAK,MAAM,OAAO,QAAQ,aAAY;AAAA,IACvC;AACD,QAAIA,MAAK,aAAa,KAAK,MAAM,OAAO,WAAW,QAAQ;AACzD,MAAAA,MAAK,aAAa,KAAK,MAAM,OAAO,SAAS,KAAK,MAAM,MAAM,CAAC,EAAE;AAAA,IAClE;AACD,UAAM,QAAQ,IAAI,KAAK,MAAM,YAAYA,MAAK,aAAa,KAAK,MAAM,OAAO,MAAM;AACnF,UAAM,KAAK,IAAI,KAAK,YAAY,OAAO,KAAK,MAAM;AAClD,OAAG,SAAS,KAAK,KAAK;AACtB,WAAO;AAAA,EACR;AAAA,EACD,SAAS,UAAU;AACjB,SAAK,mBAAmB;AACxB,WAAO;AAAA,EACR;AAAA,EACD,OAAOA,OAAM;AACX,QAAIA,MAAK,iBAAiB,QAAQ;AAChC,MAAAA,MAAK,eAAe;IACrB;AACD,QAAI,KAAK,MAAM,OAAO,UAAU,QAAQ;AACtC,WAAK,MAAM,OAAO,QAAQ,aAAY;AAAA,IACvC;AACD,QAAIA,MAAK,aAAa,KAAK,MAAM,OAAO,WAAW,QAAQ;AACzD,MAAAA,MAAK,aAAa,KAAK,MAAM,OAAO,SAAS,MAAM,KAAK,IAAI,YAAY,KAAK,MAAM,MAAM,CAAC;AAAA,IAC3F;AACD,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK,MAAM,OAAO;AAAA,MAC1B,MAAM,KAAK,MAAM,YAAY;AAAA,MAC7B,QAAQ,KAAK;AAAA,IACnB;AAAA,EACG;AACH;AACA,MAAM,YAA4B,oBAAIqF;AACtC,MAAM,2BAA2B;AAAA,EAC/B,YAAY,mBAAmB,UAAU,QAAQ,aAAa,OAAO;AACnE,SAAK,+BAA+B;AACpC,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,SAAS;AACd,SAAK,aAAa,eAAe;AAAA,EAClC;AAAA,EACD,IAAI,QAAQ;AACV,WAAO,KAAK,KAAK;AAAA,EAClB;AAAA,EACD,IAAI,QAAQ;AACV,WAAO,KAAK,KAAK;AAAA,EAClB;AAAA,EACD,IAAI,YAAY,OAAO;AACrB,SAAK,KAAK,cAAc;AAAA,EACzB;AAAA,EACD,aAAanG,IAAG;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK,OAAO,IAAI,GAAG,KAAK;AAC/C,gBAAU,oBAAoB,MAAM,CAAC;AACrC,gBAAU,aAAaA,EAAC;AACxB,WAAK,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAAA,IACrD;AACD,WAAO;AAAA,EACR;AAAA,EACD,kBAAkBA,IAAG;AACnB,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,IAAI,GAAG,KAAK;AAC1C,gBAAU,oBAAoB,MAAM,CAAC;AACrC,gBAAU,kBAAkBA,EAAC;AAC7B,WAAK,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAAA,IACrD;AACD,WAAO;AAAA,EACR;AAAA,EACD,mBAAmBA,IAAG;AACpB,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,IAAI,GAAG,KAAK;AAC1C,gBAAU,oBAAoB,MAAM,CAAC;AACrC,gBAAU,mBAAmBA,EAAC;AAC9B,WAAK,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAAA,IACrD;AACD,WAAO;AAAA,EACR;AAAA,EACD,KAAK,OAAO,GAAG;AACb,SAAK,KAAK,MAAM,QAAQ,KAAK,KAAK,SAAS,KAAK,UAAU;AAC1D,WAAO;AAAA,EACR;AAAA,EACD,KAAK,OAAO,GAAG;AACb,SAAK,KAAK,MAAM,QAAQ,KAAK,KAAK,SAAS,KAAK,SAAS,KAAK;AAC9D,WAAO;AAAA,EACR;AAAA,EACD,KAAK,OAAO,GAAG;AACb,SAAK,KAAK,MAAM,QAAQ,KAAK,KAAK,SAAS,KAAK,SAAS,KAAK;AAC9D,WAAO;AAAA,EACR;AAAA,EACD,KAAK,OAAO,GAAG;AACb,SAAK,KAAK,MAAM,QAAQ,KAAK,KAAK,SAAS,KAAK,SAAS,KAAK;AAC9D,WAAO;AAAA,EACR;AAAA,EACD,KAAK,OAAO;AACV,WAAO,KAAK,KAAK,MAAM,QAAQ,KAAK,KAAK,SAAS,KAAK;AAAA,EACxD;AAAA,EACD,KAAK,OAAO;AACV,WAAO,KAAK,KAAK,MAAM,QAAQ,KAAK,KAAK,SAAS,KAAK,SAAS;AAAA,EACjE;AAAA,EACD,KAAK,OAAO;AACV,WAAO,KAAK,KAAK,MAAM,QAAQ,KAAK,KAAK,SAAS,KAAK,SAAS;AAAA,EACjE;AAAA,EACD,KAAK,OAAO;AACV,WAAO,KAAK,KAAK,MAAM,QAAQ,KAAK,KAAK,SAAS,KAAK,SAAS;AAAA,EACjE;AAAA,EACD,MAAM,OAAO,GAAG,GAAG;AACjB,YAAQ,QAAQ,KAAK,KAAK,SAAS,KAAK;AACxC,SAAK,KAAK,MAAM,QAAQ,KAAK;AAC7B,SAAK,KAAK,MAAM,QAAQ,KAAK;AAC7B,WAAO;AAAA,EACR;AAAA,EACD,OAAO,OAAO,GAAG,GAAG,GAAG;AACrB,YAAQ,QAAQ,KAAK,KAAK,SAAS,KAAK;AACxC,SAAK,KAAK,MAAM,QAAQ,KAAK;AAC7B,SAAK,KAAK,MAAM,QAAQ,KAAK;AAC7B,SAAK,KAAK,MAAM,QAAQ,KAAK;AAC7B,WAAO;AAAA,EACR;AAAA,EACD,QAAQ,OAAO,GAAG,GAAG,GAAG,GAAG;AACzB,YAAQ,QAAQ,KAAK,KAAK,SAAS,KAAK;AACxC,SAAK,KAAK,MAAM,QAAQ,KAAK;AAC7B,SAAK,KAAK,MAAM,QAAQ,KAAK;AAC7B,SAAK,KAAK,MAAM,QAAQ,KAAK;AAC7B,SAAK,KAAK,MAAM,QAAQ,KAAK;AAC7B,WAAO;AAAA,EACR;AAAA,EACD,MAAMc,OAAM;AACV,QAAIA,UAAS,QAAQ;AACnB,cAAQ,IAAI,kHAAkH;AAC9H,YAAM,QAAQ,CAAA;AACd,eAAS,IAAI,GAAG,IAAI,KAAK,OAAO,KAAK;AACnC,cAAM,QAAQ,IAAI,KAAK,KAAK,SAAS,KAAK;AAC1C,iBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,KAAK;AACtC,gBAAM,KAAK,KAAK,KAAK,MAAM,QAAQ,EAAE;AAAA,QACtC;AAAA,MACF;AACD,aAAO,IAAI,gBAAgB,IAAI,KAAK,MAAM,YAAY,KAAK,GAAG,KAAK,UAAU,KAAK,UAAU;AAAA,IAClG,OAAW;AACL,UAAIA,MAAK,uBAAuB,QAAQ;AACtC,QAAAA,MAAK,qBAAqB;MAC3B;AACD,UAAIA,MAAK,mBAAmB,KAAK,KAAK,UAAU,QAAQ;AACtD,QAAAA,MAAK,mBAAmB,KAAK,KAAK,QAAQ,KAAK,KAAK,MAAMA,KAAI;AAAA,MAC/D;AACD,aAAO,IAAI,2BAA2BA,MAAK,mBAAmB,KAAK,KAAK,OAAO,KAAK,UAAU,KAAK,QAAQ,KAAK,UAAU;AAAA,IAC3H;AAAA,EACF;AAAA,EACD,OAAOA,OAAM;AACX,QAAIA,UAAS,QAAQ;AACnB,cAAQ,IAAI,uHAAuH;AACnI,YAAM,QAAQ,CAAA;AACd,eAAS,IAAI,GAAG,IAAI,KAAK,OAAO,KAAK;AACnC,cAAM,QAAQ,IAAI,KAAK,KAAK,SAAS,KAAK;AAC1C,iBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,KAAK;AACtC,gBAAM,KAAK,KAAK,KAAK,MAAM,QAAQ,EAAE;AAAA,QACtC;AAAA,MACF;AACD,aAAO;AAAA,QACL,UAAU,KAAK;AAAA,QACf,MAAM,KAAK,MAAM,YAAY;AAAA,QAC7B;AAAA,QACA,YAAY,KAAK;AAAA,MACzB;AAAA,IACA,OAAW;AACL,UAAIA,MAAK,uBAAuB,QAAQ;AACtC,QAAAA,MAAK,qBAAqB;MAC3B;AACD,UAAIA,MAAK,mBAAmB,KAAK,KAAK,UAAU,QAAQ;AACtD,QAAAA,MAAK,mBAAmB,KAAK,KAAK,QAAQ,KAAK,KAAK,OAAOA,KAAI;AAAA,MAChE;AACD,aAAO;AAAA,QACL,8BAA8B;AAAA,QAC9B,UAAU,KAAK;AAAA,QACf,MAAM,KAAK,KAAK;AAAA,QAChB,QAAQ,KAAK;AAAA,QACb,YAAY,KAAK;AAAA,MACzB;AAAA,IACK;AAAA,EACF;AACH;AACA,MAAM,uBAAuB,WAAW;AAAA,EACtC,YAAY,YAAY;AACtB;AACA,SAAK,mBAAmB;AACxB,SAAK,OAAO;AACZ,SAAK,QAAQ,IAAI,MAAM,QAAQ;AAC/B,SAAK,MAAM;AACX,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,kBAAkB;AACvB,SAAK,cAAc;AACnB,SAAK,MAAM;AACX,SAAK,UAAU,UAAU;AAAA,EAC1B;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,MAAM,KAAK,OAAO,KAAK;AAC5B,SAAK,MAAM,OAAO;AAClB,SAAK,WAAW,OAAO;AACvB,SAAK,WAAW,OAAO;AACvB,SAAK,kBAAkB,OAAO;AAC9B,SAAK,MAAM,OAAO;AAClB,WAAO;AAAA,EACR;AACH;AACA,IAAI;AACJ,MAAM,kBAAkC,oBAAIqF;AAC5C,MAAM,cAA8B,oBAAIA;AACxC,MAAM,cAA8B,oBAAIA;AACxC,MAAM,mBAAmC,oBAAIF;AAC7C,MAAM,mBAAmC,oBAAIA;AAC7C,MAAM,mBAAmC,oBAAI;AAC7C,MAAM,MAAsB,oBAAIE;AAChC,MAAM,MAAsB,oBAAIA;AAChC,MAAM,MAAsB,oBAAIA;AAChC,MAAM,OAAuB,oBAAIF;AACjC,MAAM,OAAuB,oBAAIA;AACjC,MAAM,OAAuB,oBAAIA;AACjC,MAAM,eAAe,WAAW;AAAA,EAC9B,YAAY,UAAU;AACpB;AACA,SAAK,WAAW;AAChB,SAAK,OAAO;AACZ,QAAI,gBAAgB,QAAQ;AAC1B,oBAAc,IAAI;AAClB,YAAM,eAAe,IAAI,aAAa;AAAA,QACpC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR,CAAO;AACD,YAAM,oBAAoB,IAAI,kBAAkB,cAAc,CAAC;AAC/D,kBAAY,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACvC,kBAAY,aAAa,YAAY,IAAI,2BAA2B,mBAAmB,GAAG,GAAG,KAAK,CAAC;AACnG,kBAAY,aAAa,MAAM,IAAI,2BAA2B,mBAAmB,GAAG,GAAG,KAAK,CAAC;AAAA,IAC9F;AACD,SAAK,WAAW;AAChB,SAAK,WAAW,aAAa,SAAS,WAAW,IAAI;AACrD,SAAK,SAAS,IAAIA,UAAQ,KAAK,GAAG;AAAA,EACnC;AAAA,EACD,QAAQ,WAAW,aAAa;AAC9B,QAAI,UAAU,WAAW,MAAM;AAC7B,cAAQ,MAAM,uFAAuF;AAAA,IACtG;AACD,gBAAY,mBAAmB,KAAK,WAAW;AAC/C,qBAAiB,KAAK,UAAU,OAAO,WAAW;AAClD,SAAK,gBAAgB,iBAAiB,UAAU,OAAO,oBAAoB,KAAK,WAAW;AAC3F,gBAAY,sBAAsB,KAAK,eAAe;AACtD,QAAI,UAAU,OAAO,uBAAuB,KAAK,SAAS,oBAAoB,OAAO;AACnF,kBAAY,eAAe,CAAC,YAAY,CAAC;AAAA,IAC1C;AACD,UAAM,WAAW,KAAK,SAAS;AAC/B,QAAI,KAAK;AACT,QAAI,aAAa,GAAG;AAClB,YAAM,KAAK,IAAI,QAAQ;AACvB,YAAM,KAAK,IAAI,QAAQ;AAAA,IACxB;AACD,UAAM,SAAS,KAAK;AACpB,oBAAgB,IAAI,IAAI,MAAM,MAAM,CAAC,GAAG,aAAa,QAAQ,aAAa,KAAK,GAAG;AAClF,oBAAgB,IAAI,IAAI,KAAK,MAAM,CAAC,GAAG,aAAa,QAAQ,aAAa,KAAK,GAAG;AACjF,oBAAgB,IAAI,IAAI,KAAK,KAAK,CAAC,GAAG,aAAa,QAAQ,aAAa,KAAK,GAAG;AAChF,SAAK,IAAI,GAAG,CAAC;AACb,SAAK,IAAI,GAAG,CAAC;AACb,SAAK,IAAI,GAAG,CAAC;AACb,QAAI,YAAY,UAAU,IAAI,kBAAkB,KAAK,KAAK,KAAK,OAAO,eAAe;AACrF,QAAI,cAAc,MAAM;AACtB,sBAAgB,IAAI,IAAI,MAAM,KAAK,CAAC,GAAG,aAAa,QAAQ,aAAa,KAAK,GAAG;AACjF,WAAK,IAAI,GAAG,CAAC;AACb,kBAAY,UAAU,IAAI,kBAAkB,KAAK,KAAK,KAAK,OAAO,eAAe;AACjF,UAAI,cAAc,MAAM;AACtB;AAAA,MACD;AAAA,IACF;AACD,UAAM,WAAW,UAAU,IAAI,OAAO,WAAW,eAAe;AAChE,QAAI,WAAW,UAAU,QAAQ,WAAW,UAAU;AACpD;AACF,gBAAY,KAAK;AAAA,MACf;AAAA,MACA,OAAO,gBAAgB,MAAO;AAAA,MAC9B,IAAI,SAAS,MAAM,iBAAiB,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAIA,UAAO,CAAE;AAAA,MAClF,MAAM;AAAA,MACN,QAAQ;AAAA,IACd,CAAK;AAAA,EACF;AAAA,EACD,KAAK,QAAQ,WAAW;AACtB,UAAM,KAAK,QAAQ,SAAS;AAC5B,QAAI,OAAO,WAAW;AACpB,WAAK,OAAO,KAAK,OAAO,MAAM;AAChC,SAAK,WAAW,OAAO;AACvB,WAAO;AAAA,EACR;AACH;AACA,SAAS,gBAAgB,gBAAgB,YAAY,QAAQ,OAAO,KAAK,KAAK;AAC5E,mBAAiB,WAAW,gBAAgB,MAAM,EAAE,UAAU,GAAG,EAAE,SAAS,KAAK;AACjF,MAAI,QAAQ,QAAQ;AAClB,qBAAiB,IAAI,MAAM,iBAAiB,IAAI,MAAM,iBAAiB;AACvE,qBAAiB,IAAI,MAAM,iBAAiB,IAAI,MAAM,iBAAiB;AAAA,EAC3E,OAAS;AACL,qBAAiB,KAAK,gBAAgB;AAAA,EACvC;AACD,iBAAe,KAAK,UAAU;AAC9B,iBAAe,KAAK,iBAAiB;AACrC,iBAAe,KAAK,iBAAiB;AACrC,iBAAe,aAAa,gBAAgB;AAC9C;AACA,MAAM,QAAwB,oBAAIE;AAClC,MAAM,QAAwB,oBAAIA;AAClC,MAAM,YAAY,WAAW;AAAA,EAC3B,cAAc;AACZ;AACA,SAAK,gBAAgB;AACrB,SAAK,OAAO;AACZ,WAAO,iBAAiB,MAAM;AAAA,MAC5B,QAAQ;AAAA,QACN,YAAY;AAAA,QACZ,OAAO,CAAE;AAAA,MACV;AAAA,MACD,OAAO;AAAA,QACL,OAAO;AAAA,MACR;AAAA,IACP,CAAK;AACD,SAAK,aAAa;AAAA,EACnB;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,QAAQ,KAAK;AACxB,UAAM,SAAS,OAAO;AACtB,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,YAAM,QAAQ,OAAO;AACrB,WAAK,SAAS,MAAM,OAAO,SAAS,MAAM,QAAQ;AAAA,IACnD;AACD,SAAK,aAAa,OAAO;AACzB,WAAO;AAAA,EACR;AAAA,EACD,SAAS,QAAQ,WAAW,GAAG;AAC7B,eAAW,KAAK,IAAI,QAAQ;AAC5B,UAAM,SAAS,KAAK;AACpB,QAAI;AACJ,SAAK,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AAClC,UAAI,WAAW,OAAO,GAAG,UAAU;AACjC;AAAA,MACD;AAAA,IACF;AACD,WAAO,OAAO,GAAG,GAAG,EAAE,UAAU,OAAM,CAAE;AACxC,SAAK,IAAI,MAAM;AACf,WAAO;AAAA,EACR;AAAA,EACD,kBAAkB;AAChB,WAAO,KAAK;AAAA,EACb;AAAA,EACD,qBAAqB,UAAU;AAC7B,UAAM,SAAS,KAAK;AACpB,QAAI,OAAO,SAAS,GAAG;AACrB,UAAI,GAAG;AACP,WAAK,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AACzC,YAAI,WAAW,OAAO,GAAG,UAAU;AACjC;AAAA,QACD;AAAA,MACF;AACD,aAAO,OAAO,IAAI,GAAG;AAAA,IACtB;AACD,WAAO;AAAA,EACR;AAAA,EACD,QAAQ,WAAW,aAAa;AAC9B,UAAM,SAAS,KAAK;AACpB,QAAI,OAAO,SAAS,GAAG;AACrB,YAAM,sBAAsB,KAAK,WAAW;AAC5C,YAAM,WAAW,UAAU,IAAI,OAAO,WAAW,KAAK;AACtD,WAAK,qBAAqB,QAAQ,EAAE,QAAQ,WAAW,WAAW;AAAA,IACnE;AAAA,EACF;AAAA,EACD,OAAOC,SAAQ;AACb,UAAM,SAAS,KAAK;AACpB,QAAI,OAAO,SAAS,GAAG;AACrB,YAAM,sBAAsBA,QAAO,WAAW;AAC9C,YAAM,sBAAsB,KAAK,WAAW;AAC5C,YAAM,WAAW,MAAM,WAAW,KAAK,IAAIA,QAAO;AAClD,aAAO,GAAG,OAAO,UAAU;AAC3B,UAAI,GAAG;AACP,WAAK,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AACzC,YAAI,YAAY,OAAO,GAAG,UAAU;AAClC,iBAAO,IAAI,GAAG,OAAO,UAAU;AAC/B,iBAAO,GAAG,OAAO,UAAU;AAAA,QACrC,OAAe;AACL;AAAA,QACD;AAAA,MACF;AACD,WAAK,gBAAgB,IAAI;AACzB,aAAO,IAAI,GAAG,KAAK;AACjB,eAAO,GAAG,OAAO,UAAU;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAAA,EACD,OAAO,MAAM;AACX,UAAMtF,QAAO,MAAM,OAAO,IAAI;AAC9B,QAAI,KAAK,eAAe;AACtB,MAAAA,MAAK,OAAO,aAAa;AAC3B,IAAAA,MAAK,OAAO,SAAS;AACrB,UAAM,SAAS,KAAK;AACpB,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,YAAM,QAAQ,OAAO;AACrB,MAAAA,MAAK,OAAO,OAAO,KAAK;AAAA,QACtB,QAAQ,MAAM,OAAO;AAAA,QACrB,UAAU,MAAM;AAAA,MACxB,CAAO;AAAA,IACF;AACD,WAAOA;AAAA,EACR;AACH;AACA,MAAM,gBAAgC,oBAAIqF;AAC1C,MAAM,aAA6B,oBAAI;AACvC,MAAM,cAA8B,oBAAI;AACxC,MAAM,YAA4B,oBAAIA;AACtC,MAAM,UAA0B,oBAAI;AACpC,MAAM,oBAAoB,KAAK;AAAA,EAC7B,YAAY,UAAU,UAAU;AAC9B,UAAM,UAAU,QAAQ;AACxB,SAAK,gBAAgB;AACrB,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,aAAa,IAAI;AACtB,SAAK,oBAAoB,IAAI;EAC9B;AAAA,EACD,KAAK,QAAQ,WAAW;AACtB,UAAM,KAAK,QAAQ,SAAS;AAC5B,SAAK,WAAW,OAAO;AACvB,SAAK,WAAW,KAAK,OAAO,UAAU;AACtC,SAAK,kBAAkB,KAAK,OAAO,iBAAiB;AACpD,SAAK,WAAW,OAAO;AACvB,WAAO;AAAA,EACR;AAAA,EACD,KAAK,UAAU,YAAY;AACzB,SAAK,WAAW;AAChB,QAAI,eAAe,QAAQ;AACzB,WAAK,kBAAkB,IAAI;AAC3B,WAAK,SAAS;AACd,mBAAa,KAAK;AAAA,IACnB;AACD,SAAK,WAAW,KAAK,UAAU;AAC/B,SAAK,kBAAkB,KAAK,UAAU,EAAE,OAAM;AAAA,EAC/C;AAAA,EACD,OAAO;AACL,SAAK,SAAS;EACf;AAAA,EACD,uBAAuB;AACrB,UAAM,SAAS,IAAI;AACnB,UAAM,aAAa,KAAK,SAAS,WAAW;AAC5C,aAAS,IAAI,GAAG,IAAI,WAAW,OAAO,IAAI,GAAG,KAAK;AAChD,aAAO,oBAAoB,YAAY,CAAC;AACxC,YAAM,QAAQ,IAAI,OAAO,gBAAe;AACxC,UAAI,UAAU,UAAU;AACtB,eAAO,eAAe,KAAK;AAAA,MACnC,OAAa;AACL,eAAO,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,MACtB;AACD,iBAAW,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAAA,IAC7D;AAAA,EACF;AAAA,EACD,kBAAkB,OAAO;AACvB,UAAM,kBAAkB,KAAK;AAC7B,QAAI,KAAK,aAAa,YAAY;AAChC,WAAK,kBAAkB,KAAK,KAAK,WAAW,EAAE;IACpD,WAAe,KAAK,aAAa,YAAY;AACvC,WAAK,kBAAkB,KAAK,KAAK,UAAU,EAAE;IACnD,OAAW;AACL,cAAQ,KAAK,+CAA+C,KAAK,QAAQ;AAAA,IAC1E;AAAA,EACF;AAAA,EACD,cAAc,OAAO,QAAQ;AAC3B,UAAM,WAAW,KAAK;AACtB,UAAM,WAAW,KAAK;AACtB,eAAW,oBAAoB,SAAS,WAAW,WAAW,KAAK;AACnE,gBAAY,oBAAoB,SAAS,WAAW,YAAY,KAAK;AACrE,kBAAc,KAAK,MAAM,EAAE,aAAa,KAAK,UAAU;AACvD,WAAO,IAAI,GAAG,GAAG,CAAC;AAClB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAM,SAAS,YAAY,aAAa,CAAC;AACzC,UAAI,WAAW,GAAG;AAChB,cAAM,YAAY,WAAW,aAAa,CAAC;AAC3C,gBAAQ,iBAAiB,SAAS,MAAM,WAAW,aAAa,SAAS,aAAa,UAAU;AAChG,eAAO,gBAAgB,UAAU,KAAK,aAAa,EAAE,aAAa,OAAO,GAAG,MAAM;AAAA,MACnF;AAAA,IACF;AACD,WAAO,OAAO,aAAa,KAAK,iBAAiB;AAAA,EAClD;AACH;AACA,MAAM,aAAa,WAAW;AAAA,EAC5B,cAAc;AACZ;AACA,SAAK,SAAS;AACd,SAAK,OAAO;AAAA,EACb;AACH;AACA,MAAM,oBAAoB,QAAQ;AAAA,EAChC,YAAYrF,QAAO,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,MAAM,SAAS,OAAO,OAAO,YAAY,eAAe,YAAY,eAAe,YAAY,UAAU;AAC/J,UAAM,MAAM,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM,YAAY,QAAQ;AAC3F,SAAK,gBAAgB;AACrB,SAAK,QAAQ,EAAE,MAAAA,OAAM,OAAO,OAAM;AAClC,SAAK,kBAAkB;AACvB,SAAK,QAAQ;AACb,SAAK,kBAAkB;AAAA,EACxB;AACH;AACA,MAAM,gBAAgC,oBAAI;AAC1C,MAAM,kBAAkC,oBAAI;AAC5C,MAAM,SAAS;AAAA,EACb,YAAY,QAAQ,IAAI,eAAe,CAAA,GAAI;AACzC,SAAK,OAAO;AACZ,SAAK,QAAQ,MAAM,MAAM,CAAC;AAC1B,SAAK,eAAe;AACpB,SAAK,eAAe;AACpB,SAAK,cAAc;AACnB,SAAK,kBAAkB;AACvB,SAAK,QAAQ;AACb,SAAK,KAAI;AAAA,EACV;AAAA,EACD,OAAO;AACL,UAAM,QAAQ,KAAK;AACnB,UAAM,eAAe,KAAK;AAC1B,SAAK,eAAe,IAAI,aAAa,MAAM,SAAS,EAAE;AACtD,QAAI,aAAa,WAAW,GAAG;AAC7B,WAAK,kBAAiB;AAAA,IAC5B,OAAW;AACL,UAAI,MAAM,WAAW,aAAa,QAAQ;AACxC,gBAAQ,KAAK,iFAAiF;AAC9F,aAAK,eAAe;AACpB,iBAAS,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AACnD,eAAK,aAAa,KAAK,IAAI,QAAS,CAAA;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACD,oBAAoB;AAClB,SAAK,aAAa,SAAS;AAC3B,aAAS,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AACnD,YAAM,UAAU,IAAI;AACpB,UAAI,KAAK,MAAM,IAAI;AACjB,gBAAQ,KAAK,KAAK,MAAM,GAAG,WAAW,EAAE;MACzC;AACD,WAAK,aAAa,KAAK,OAAO;AAAA,IAC/B;AAAA,EACF;AAAA,EACD,OAAO;AACL,aAAS,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AACnD,YAAM,OAAO,KAAK,MAAM;AACxB,UAAI,MAAM;AACR,aAAK,YAAY,KAAK,KAAK,aAAa,EAAE,EAAE;MAC7C;AAAA,IACF;AACD,aAAS,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AACnD,YAAM,OAAO,KAAK,MAAM;AACxB,UAAI,MAAM;AACR,YAAI,KAAK,UAAU,KAAK,OAAO,QAAQ;AACrC,eAAK,OAAO,KAAK,KAAK,OAAO,WAAW,EAAE;AAC1C,eAAK,OAAO,SAAS,KAAK,WAAW;AAAA,QAC/C,OAAe;AACL,eAAK,OAAO,KAAK,KAAK,WAAW;AAAA,QAClC;AACD,aAAK,OAAO,UAAU,KAAK,UAAU,KAAK,YAAY,KAAK,KAAK;AAAA,MACjE;AAAA,IACF;AAAA,EACF;AAAA,EACD,SAAS;AACP,UAAM,QAAQ,KAAK;AACnB,UAAM,eAAe,KAAK;AAC1B,UAAM,eAAe,KAAK;AAC1B,UAAM,cAAc,KAAK;AACzB,aAAS,IAAI,GAAG,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AAC9C,YAAM,SAAS,MAAM,KAAK,MAAM,GAAG,cAAc;AACjD,oBAAc,iBAAiB,QAAQ,aAAa,EAAE;AACtD,oBAAc,QAAQ,cAAc,IAAI,EAAE;AAAA,IAC3C;AACD,QAAI,gBAAgB,MAAM;AACxB,kBAAY,cAAc;AAAA,IAC3B;AAAA,EACF;AAAA,EACD,QAAQ;AACN,WAAO,IAAI,SAAS,KAAK,OAAO,KAAK,YAAY;AAAA,EAClD;AAAA,EACD,qBAAqB;AACnB,QAAI,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AAC1C,WAAO,eAAe,IAAI;AAC1B,WAAO,KAAK,IAAI,MAAM,CAAC;AACvB,UAAM,eAAe,IAAI,aAAa,OAAO,OAAO,CAAC;AACrD,iBAAa,IAAI,KAAK,YAAY;AAClC,UAAM,cAAc,IAAI,YAAY,cAAc,MAAM,MAAM,YAAY,SAAS;AACnF,gBAAY,cAAc;AAC1B,SAAK,eAAe;AACpB,SAAK,cAAc;AACnB,SAAK,kBAAkB;AACvB,WAAO;AAAA,EACR;AAAA,EACD,cAAc,MAAM;AAClB,aAAS,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AACnD,YAAM,OAAO,KAAK,MAAM;AACxB,UAAI,KAAK,SAAS,MAAM;AACtB,eAAO;AAAA,MACR;AAAA,IACF;AACD,WAAO;AAAA,EACR;AAAA,EACD,UAAU;AACR,QAAI,KAAK,gBAAgB,MAAM;AAC7B,WAAK,YAAY;AACjB,WAAK,cAAc;AAAA,IACpB;AAAA,EACF;AAAA,EACD,SAAS,MAAM,OAAO;AACpB,SAAK,OAAO,KAAK;AACjB,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,IAAI,GAAG,KAAK;AACjD,YAAM,OAAO,KAAK,MAAM;AACxB,UAAI,OAAO,MAAM;AACjB,UAAI,SAAS,QAAQ;AACnB,gBAAQ,KAAK,4CAA4C,IAAI;AAC7D,eAAO,IAAI;MACZ;AACD,WAAK,MAAM,KAAK,IAAI;AACpB,WAAK,aAAa,KAAK,IAAI,QAAS,EAAC,UAAU,KAAK,aAAa,EAAE,CAAC;AAAA,IACrE;AACD,SAAK,KAAI;AACT,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMA,QAAO;AAAA,MACX,UAAU;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,QACN,WAAW;AAAA,MACZ;AAAA,MACD,OAAO,CAAE;AAAA,MACT,cAAc,CAAE;AAAA,IACtB;AACI,IAAAA,MAAK,OAAO,KAAK;AACjB,UAAM,QAAQ,KAAK;AACnB,UAAM,eAAe,KAAK;AAC1B,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AAC5C,YAAM,OAAO,MAAM;AACnB,MAAAA,MAAK,MAAM,KAAK,KAAK,IAAI;AACzB,YAAM,cAAc,aAAa;AACjC,MAAAA,MAAK,aAAa,KAAK,YAAY,QAAS,CAAA;AAAA,IAC7C;AACD,WAAOA;AAAA,EACR;AACH;AACA,MAAM,iCAAiC,gBAAgB;AAAA,EACrD,YAAY,OAAO,UAAU,YAAY,mBAAmB,GAAG;AAC7D,QAAI,OAAO,eAAe,UAAU;AAClC,yBAAmB;AACnB,mBAAa;AACb,cAAQ,MAAM,+FAA+F;AAAA,IAC9G;AACD,UAAM,OAAO,UAAU,UAAU;AACjC,SAAK,6BAA6B;AAClC,SAAK,mBAAmB;AAAA,EACzB;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,mBAAmB,OAAO;AAC/B,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMA,QAAO,MAAM;AACnB,IAAAA,MAAK,mBAAmB,KAAK;AAC7B,IAAAA,MAAK,6BAA6B;AAClC,WAAOA;AAAA,EACR;AACH;AACA,MAAM,uBAAuC,oBAAI;AACjD,MAAM,uBAAuC,oBAAI;AACjD,MAAM,sBAAsB,CAAA;AAC5B,MAAM,QAAwB,oBAAI;AAClC,MAAM,wBAAwB,KAAK;AAAA,EACjC,YAAY,UAAU,UAAU,OAAO;AACrC,UAAM,UAAU,QAAQ;AACxB,SAAK,kBAAkB;AACvB,SAAK,iBAAiB,IAAI,yBAAyB,IAAI,aAAa,QAAQ,EAAE,GAAG,EAAE;AACnF,SAAK,gBAAgB;AACrB,SAAK,QAAQ;AACb,SAAK,gBAAgB;AAAA,EACtB;AAAA,EACD,KAAK,QAAQ,WAAW;AACtB,UAAM,KAAK,QAAQ,SAAS;AAC5B,SAAK,eAAe,KAAK,OAAO,cAAc;AAC9C,QAAI,OAAO,kBAAkB;AAC3B,WAAK,gBAAgB,OAAO,cAAc,MAAK;AACjD,SAAK,QAAQ,OAAO;AACpB,WAAO;AAAA,EACR;AAAA,EACD,WAAW,OAAO,OAAO;AACvB,UAAM,UAAU,KAAK,cAAc,OAAO,QAAQ,CAAC;AAAA,EACpD;AAAA,EACD,YAAY,OAAO,QAAQ;AACzB,WAAO,UAAU,KAAK,eAAe,OAAO,QAAQ,EAAE;AAAA,EACvD;AAAA,EACD,QAAQ,WAAW,aAAa;AAC9B,UAAM,cAAc,KAAK;AACzB,UAAM,eAAe,KAAK;AAC1B,UAAM,WAAW,KAAK;AACtB,UAAM,WAAW,KAAK;AACtB,QAAI,MAAM,aAAa;AACrB;AACF,aAAS,aAAa,GAAG,aAAa,cAAc,cAAc;AAChE,WAAK,YAAY,YAAY,oBAAoB;AACjD,2BAAqB,iBAAiB,aAAa,oBAAoB;AACvE,YAAM,cAAc;AACpB,YAAM,QAAQ,WAAW,mBAAmB;AAC5C,eAAS,IAAI,GAAG,IAAI,oBAAoB,QAAQ,IAAI,GAAG,KAAK;AAC1D,cAAM,YAAY,oBAAoB;AACtC,kBAAU,aAAa;AACvB,kBAAU,SAAS;AACnB,oBAAY,KAAK,SAAS;AAAA,MAC3B;AACD,0BAAoB,SAAS;AAAA,IAC9B;AAAA,EACF;AAAA,EACD,WAAW,OAAO,OAAO;AACvB,QAAI,KAAK,kBAAkB,MAAM;AAC/B,WAAK,gBAAgB,IAAI,yBAAyB,IAAI,aAAa,KAAK,eAAe,QAAQ,CAAC,GAAG,CAAC;AAAA,IACrG;AACD,UAAM,QAAQ,KAAK,cAAc,OAAO,QAAQ,CAAC;AAAA,EAClD;AAAA,EACD,YAAY,OAAO,QAAQ;AACzB,WAAO,QAAQ,KAAK,eAAe,OAAO,QAAQ,EAAE;AAAA,EACrD;AAAA,EACD,qBAAqB;AAAA,EACpB;AAAA,EACD,UAAU;AACR,SAAK,cAAc,EAAE,MAAM,UAAW,CAAA;AAAA,EACvC;AACH;AACA,MAAM,0BAA0B,WAAW;AAAA,EACzC,YAAY,YAAY;AACtB;AACA,SAAK,sBAAsB;AAC3B,SAAK,OAAO;AACZ,SAAK,QAAQ,IAAI,MAAM,QAAQ;AAC/B,SAAK,YAAY;AACjB,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,MAAM;AACX,SAAK,UAAU,UAAU;AAAA,EAC1B;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,MAAM,KAAK,OAAO,KAAK;AAC5B,SAAK,YAAY,OAAO;AACxB,SAAK,UAAU,OAAO;AACtB,SAAK,WAAW,OAAO;AACvB,SAAK,MAAM,OAAO;AAClB,WAAO;AAAA,EACR;AACH;AACA,MAAM,WAA2B,oBAAIqF;AACrC,MAAM,SAAyB,oBAAIA;AACnC,MAAM,mBAAmC,oBAAI;AAC7C,MAAM,SAAyB,oBAAI;AACnC,MAAM,YAA4B,oBAAI;AACtC,MAAM,aAAa,WAAW;AAAA,EAC5B,YAAY,WAAW,IAAI,eAAgB,GAAE,WAAW,IAAI,qBAAqB;AAC/E;AACA,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,mBAAkB;AAAA,EACxB;AAAA,EACD,KAAK,QAAQ,WAAW;AACtB,UAAM,KAAK,QAAQ,SAAS;AAC5B,SAAK,WAAW,OAAO;AACvB,SAAK,WAAW,OAAO;AACvB,WAAO;AAAA,EACR;AAAA,EACD,uBAAuB;AACrB,UAAM,WAAW,KAAK;AACtB,QAAI,SAAS,UAAU,MAAM;AAC3B,YAAM,oBAAoB,SAAS,WAAW;AAC9C,YAAM,gBAAgB,CAAC,CAAC;AACxB,eAAS,IAAI,GAAG,IAAI,kBAAkB,OAAO,IAAI,GAAG,KAAK;AACvD,iBAAS,oBAAoB,mBAAmB,IAAI,CAAC;AACrD,eAAO,oBAAoB,mBAAmB,CAAC;AAC/C,sBAAc,KAAK,cAAc,IAAI;AACrC,sBAAc,MAAM,SAAS,WAAW,MAAM;AAAA,MAC/C;AACD,eAAS,aAAa,gBAAgB,IAAI,uBAAuB,eAAe,CAAC,CAAC;AAAA,IACxF,OAAW;AACL,cAAQ,KAAK,+FAA+F;AAAA,IAC7G;AACD,WAAO;AAAA,EACR;AAAA,EACD,QAAQ,WAAW,aAAa;AAC9B,UAAM,WAAW,KAAK;AACtB,UAAM,cAAc,KAAK;AACzB,UAAM,YAAY,UAAU,OAAO,KAAK;AACxC,UAAM,YAAY,SAAS;AAC3B,QAAI,SAAS,mBAAmB;AAC9B,eAAS,sBAAqB;AAChC,cAAU,KAAK,SAAS,cAAc;AACtC,cAAU,aAAa,WAAW;AAClC,cAAU,UAAU;AACpB,QAAI,UAAU,IAAI,iBAAiB,SAAS,MAAM;AAChD;AACF,qBAAiB,KAAK,WAAW,EAAE,OAAM;AACzC,WAAO,KAAK,UAAU,GAAG,EAAE,aAAa,gBAAgB;AACxD,UAAM,iBAAiB,cAAc,KAAK,MAAM,IAAI,KAAK,MAAM,IAAI,KAAK,MAAM,KAAK;AACnF,UAAM,mBAAmB,iBAAiB;AAC1C,UAAM,SAAS,IAAIA;AACnB,UAAM,OAAO,IAAIA;AACjB,UAAM,eAAe,IAAIA;AACzB,UAAM,WAAW,IAAIA;AACrB,UAAM,OAAO,KAAK,iBAAiB,IAAI;AACvC,UAAM,QAAQ,SAAS;AACvB,UAAM,aAAa,SAAS;AAC5B,UAAM,oBAAoB,WAAW;AACrC,QAAI,UAAU,MAAM;AAClB,YAAM,QAAQ,KAAK,IAAI,GAAG,UAAU,KAAK;AACzC,YAAM,MAAM,KAAK,IAAI,MAAM,OAAO,UAAU,QAAQ,UAAU,KAAK;AACnE,eAAS,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,GAAG,KAAK,MAAM;AACjD,cAAM,IAAI,MAAM,KAAK,CAAC;AACtB,cAAM,IAAI,MAAM,KAAK,IAAI,CAAC;AAC1B,eAAO,oBAAoB,mBAAmB,CAAC;AAC/C,aAAK,oBAAoB,mBAAmB,CAAC;AAC7C,cAAM,SAAS,OAAO,oBAAoB,QAAQ,MAAM,UAAU,YAAY;AAC9E,YAAI,SAAS;AACX;AACF,iBAAS,aAAa,KAAK,WAAW;AACtC,cAAM,WAAW,UAAU,IAAI,OAAO,WAAW,QAAQ;AACzD,YAAI,WAAW,UAAU,QAAQ,WAAW,UAAU;AACpD;AACF,oBAAY,KAAK;AAAA,UACf;AAAA,UACA,OAAO,aAAa,MAAK,EAAG,aAAa,KAAK,WAAW;AAAA,UACzD,OAAO;AAAA,UACP,MAAM;AAAA,UACN,WAAW;AAAA,UACX,QAAQ;AAAA,QAClB,CAAS;AAAA,MACF;AAAA,IACP,OAAW;AACL,YAAM,QAAQ,KAAK,IAAI,GAAG,UAAU,KAAK;AACzC,YAAM,MAAM,KAAK,IAAI,kBAAkB,OAAO,UAAU,QAAQ,UAAU,KAAK;AAC/E,eAAS,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,GAAG,KAAK,MAAM;AACjD,eAAO,oBAAoB,mBAAmB,CAAC;AAC/C,aAAK,oBAAoB,mBAAmB,IAAI,CAAC;AACjD,cAAM,SAAS,OAAO,oBAAoB,QAAQ,MAAM,UAAU,YAAY;AAC9E,YAAI,SAAS;AACX;AACF,iBAAS,aAAa,KAAK,WAAW;AACtC,cAAM,WAAW,UAAU,IAAI,OAAO,WAAW,QAAQ;AACzD,YAAI,WAAW,UAAU,QAAQ,WAAW,UAAU;AACpD;AACF,oBAAY,KAAK;AAAA,UACf;AAAA,UACA,OAAO,aAAa,MAAK,EAAG,aAAa,KAAK,WAAW;AAAA,UACzD,OAAO;AAAA,UACP,MAAM;AAAA,UACN,WAAW;AAAA,UACX,QAAQ;AAAA,QAClB,CAAS;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACD,qBAAqB;AACnB,UAAM,WAAW,KAAK;AACtB,UAAM,kBAAkB,SAAS;AACjC,UAAMjF,QAAO,OAAO,KAAK,eAAe;AACxC,QAAIA,MAAK,SAAS,GAAG;AACnB,YAAM,iBAAiB,gBAAgBA,MAAK;AAC5C,UAAI,mBAAmB,QAAQ;AAC7B,aAAK,wBAAwB;AAC7B,aAAK,wBAAwB;AAC7B,iBAASlB,KAAI,GAAG,KAAK,eAAe,QAAQA,KAAI,IAAIA,MAAK;AACvD,gBAAM,OAAO,eAAeA,IAAG,QAAQ,OAAOA,EAAC;AAC/C,eAAK,sBAAsB,KAAK,CAAC;AACjC,eAAK,sBAAsB,QAAQA;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACH;AACA,MAAM,SAAyB,oBAAImG;AACnC,MAAM,OAAuB,oBAAIA;AACjC,MAAM,qBAAqB,KAAK;AAAA,EAC9B,YAAY,UAAU,UAAU;AAC9B,UAAM,UAAU,QAAQ;AACxB,SAAK,iBAAiB;AACtB,SAAK,OAAO;AAAA,EACb;AAAA,EACD,uBAAuB;AACrB,UAAM,WAAW,KAAK;AACtB,QAAI,SAAS,UAAU,MAAM;AAC3B,YAAM,oBAAoB,SAAS,WAAW;AAC9C,YAAM,gBAAgB,CAAA;AACtB,eAAS,IAAI,GAAG,IAAI,kBAAkB,OAAO,IAAI,GAAG,KAAK,GAAG;AAC1D,eAAO,oBAAoB,mBAAmB,CAAC;AAC/C,aAAK,oBAAoB,mBAAmB,IAAI,CAAC;AACjD,sBAAc,KAAK,MAAM,IAAI,IAAI,cAAc,IAAI;AACnD,sBAAc,IAAI,KAAK,cAAc,KAAK,OAAO,WAAW,IAAI;AAAA,MACjE;AACD,eAAS,aAAa,gBAAgB,IAAI,uBAAuB,eAAe,CAAC,CAAC;AAAA,IACxF,OAAW;AACL,cAAQ,KAAK,uGAAuG;AAAA,IACrH;AACD,WAAO;AAAA,EACR;AACH;AACA,MAAM,iBAAiB,KAAK;AAAA,EAC1B,YAAY,UAAU,UAAU;AAC9B,UAAM,UAAU,QAAQ;AACxB,SAAK,aAAa;AAClB,SAAK,OAAO;AAAA,EACb;AACH;AACA,MAAM,uBAAuB,WAAW;AAAA,EACtC,YAAY,YAAY;AACtB;AACA,SAAK,mBAAmB;AACxB,SAAK,OAAO;AACZ,SAAK,QAAQ,IAAI,MAAM,QAAQ;AAC/B,SAAK,MAAM;AACX,SAAK,WAAW;AAChB,SAAK,OAAO;AACZ,SAAK,kBAAkB;AACvB,SAAK,MAAM;AACX,SAAK,UAAU,UAAU;AAAA,EAC1B;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,MAAM,KAAK,OAAO,KAAK;AAC5B,SAAK,MAAM,OAAO;AAClB,SAAK,WAAW,OAAO;AACvB,SAAK,OAAO,OAAO;AACnB,SAAK,kBAAkB,OAAO;AAC9B,SAAK,MAAM,OAAO;AAClB,WAAO;AAAA,EACR;AACH;AACA,MAAM,iBAAiC,oBAAI;AAC3C,MAAM,OAAuB,oBAAI;AACjC,MAAM,UAA0B,oBAAI;AACpC,MAAM,cAA8B,oBAAIA;AACxC,MAAM,eAAe,WAAW;AAAA,EAC9B,YAAY,WAAW,IAAI,eAAgB,GAAE,WAAW,IAAI,kBAAkB;AAC5E;AACA,SAAK,WAAW;AAChB,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,mBAAkB;AAAA,EACxB;AAAA,EACD,KAAK,QAAQ,WAAW;AACtB,UAAM,KAAK,QAAQ,SAAS;AAC5B,SAAK,WAAW,OAAO;AACvB,SAAK,WAAW,OAAO;AACvB,WAAO;AAAA,EACR;AAAA,EACD,QAAQ,WAAW,aAAa;AAC9B,UAAM,WAAW,KAAK;AACtB,UAAM,cAAc,KAAK;AACzB,UAAM,YAAY,UAAU,OAAO,OAAO;AAC1C,UAAM,YAAY,SAAS;AAC3B,QAAI,SAAS,mBAAmB;AAC9B,eAAS,sBAAqB;AAChC,YAAQ,KAAK,SAAS,cAAc;AACpC,YAAQ,aAAa,WAAW;AAChC,YAAQ,UAAU;AAClB,QAAI,UAAU,IAAI,iBAAiB,OAAO,MAAM;AAC9C;AACF,mBAAe,KAAK,WAAW,EAAE,OAAM;AACvC,SAAK,KAAK,UAAU,GAAG,EAAE,aAAa,cAAc;AACpD,UAAM,iBAAiB,cAAc,KAAK,MAAM,IAAI,KAAK,MAAM,IAAI,KAAK,MAAM,KAAK;AACnF,UAAM,mBAAmB,iBAAiB;AAC1C,UAAM,QAAQ,SAAS;AACvB,UAAM,aAAa,SAAS;AAC5B,UAAM,oBAAoB,WAAW;AACrC,QAAI,UAAU,MAAM;AAClB,YAAM,QAAQ,KAAK,IAAI,GAAG,UAAU,KAAK;AACzC,YAAM,MAAM,KAAK,IAAI,MAAM,OAAO,UAAU,QAAQ,UAAU,KAAK;AACnE,eAAS,IAAI,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK;AACzC,cAAM,IAAI,MAAM,KAAK,CAAC;AACtB,oBAAY,oBAAoB,mBAAmB,CAAC;AACpD,kBAAU,aAAa,GAAG,kBAAkB,aAAa,WAAW,aAAa,IAAI;AAAA,MACtF;AAAA,IACP,OAAW;AACL,YAAM,QAAQ,KAAK,IAAI,GAAG,UAAU,KAAK;AACzC,YAAM,MAAM,KAAK,IAAI,kBAAkB,OAAO,UAAU,QAAQ,UAAU,KAAK;AAC/E,eAAS,IAAI,OAAO,IAAI,KAAK,IAAI,GAAG,KAAK;AACvC,oBAAY,oBAAoB,mBAAmB,CAAC;AACpD,kBAAU,aAAa,GAAG,kBAAkB,aAAa,WAAW,aAAa,IAAI;AAAA,MACtF;AAAA,IACF;AAAA,EACF;AAAA,EACD,qBAAqB;AACnB,UAAM,WAAW,KAAK;AACtB,UAAM,kBAAkB,SAAS;AACjC,UAAMjF,QAAO,OAAO,KAAK,eAAe;AACxC,QAAIA,MAAK,SAAS,GAAG;AACnB,YAAM,iBAAiB,gBAAgBA,MAAK;AAC5C,UAAI,mBAAmB,QAAQ;AAC7B,aAAK,wBAAwB;AAC7B,aAAK,wBAAwB;AAC7B,iBAASlB,KAAI,GAAG,KAAK,eAAe,QAAQA,KAAI,IAAIA,MAAK;AACvD,gBAAM,OAAO,eAAeA,IAAG,QAAQ,OAAOA,EAAC;AAC/C,eAAK,sBAAsB,KAAK,CAAC;AACjC,eAAK,sBAAsB,QAAQA;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACH;AACA,SAAS,UAAU,OAAO,OAAO,kBAAkB,aAAa,WAAW,aAAa,QAAQ;AAC9F,QAAM,qBAAqB,KAAK,kBAAkB,KAAK;AACvD,MAAI,qBAAqB,kBAAkB;AACzC,UAAM,iBAAiB,IAAImG;AAC3B,SAAK,oBAAoB,OAAO,cAAc;AAC9C,mBAAe,aAAa,WAAW;AACvC,UAAM,WAAW,UAAU,IAAI,OAAO,WAAW,cAAc;AAC/D,QAAI,WAAW,UAAU,QAAQ,WAAW,UAAU;AACpD;AACF,gBAAY,KAAK;AAAA,MACf;AAAA,MACA,eAAe,KAAK,KAAK,kBAAkB;AAAA,MAC3C,OAAO;AAAA,MACP;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACN,CAAK;AAAA,EACF;AACH;AACA,MAAM,qBAAqB,QAAQ;AAAA,EACjC,YAAY,OAAO,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM,YAAY;AACxF,UAAM,OAAO,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM,UAAU;AAClF,SAAK,iBAAiB;AACtB,SAAK,YAAY,cAAc,SAAS,YAAY;AACpD,SAAK,YAAY,cAAc,SAAS,YAAY;AACpD,SAAK,kBAAkB;AACvB,UAAM,QAAQ;AACd,aAAS,cAAc;AACrB,YAAM,cAAc;AACpB,YAAM,0BAA0B,WAAW;AAAA,IAC5C;AACD,QAAI,+BAA+B,OAAO;AACxC,YAAM,0BAA0B,WAAW;AAAA,IAC5C;AAAA,EACF;AAAA,EACD,QAAQ;AACN,WAAO,IAAI,KAAK,YAAY,KAAK,KAAK,EAAE,KAAK,IAAI;AAAA,EAClD;AAAA,EACD,SAAS;AACP,UAAM,QAAQ,KAAK;AACnB,UAAM,wBAAwB,+BAA+B;AAC7D,QAAI,0BAA0B,SAAS,MAAM,cAAc,MAAM,mBAAmB;AAClF,WAAK,cAAc;AAAA,IACpB;AAAA,EACF;AACH;AACA,MAAM,2BAA2B,QAAQ;AAAA,EACvC,YAAY,OAAO,QAAQ,QAAQ;AACjC,UAAM,EAAE,OAAO,OAAM,CAAE;AACvB,SAAK,uBAAuB;AAC5B,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,SAAK,kBAAkB;AACvB,SAAK,cAAc;AAAA,EACpB;AACH;AACA,MAAM,0BAA0B,QAAQ;AAAA,EACtC,YAAY,SAAS,OAAO,QAAQ,QAAQ,MAAM,SAAS,OAAO,OAAO,WAAW,WAAW,YAAY,UAAU;AACnH,UAAM,MAAM,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM,YAAY,QAAQ;AAC3F,SAAK,sBAAsB;AAC3B,SAAK,QAAQ,EAAE,OAAO,OAAM;AAC5B,SAAK,UAAU;AACf,SAAK,QAAQ;AACb,SAAK,kBAAkB;AAAA,EACxB;AACH;AACA,MAAM,sBAAsB,QAAQ;AAAA,EAClC,YAAY,QAAQ,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM,YAAY;AACzF,UAAM,QAAQ,SAAS,OAAO,OAAO,WAAW,WAAW,QAAQ,MAAM,UAAU;AACnF,SAAK,kBAAkB;AACvB,SAAK,cAAc;AAAA,EACpB;AACH;AACA,MAAM,MAAM;AAAA,EACV,cAAc;AACZ,SAAK,OAAO;AACZ,SAAK,qBAAqB;AAAA,EAC3B;AAAA,EACD,WAAW;AACT,YAAQ,KAAK,2CAA2C;AACxD,WAAO;AAAA,EACR;AAAA,EACD,WAAW,GAAG,gBAAgB;AAC5B,UAAM,IAAI,KAAK,eAAe,CAAC;AAC/B,WAAO,KAAK,SAAS,GAAG,cAAc;AAAA,EACvC;AAAA,EACD,UAAU,YAAY,GAAG;AACvB,UAAM,SAAS,CAAA;AACf,aAAS,IAAI,GAAG,KAAK,WAAW,KAAK;AACnC,aAAO,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC;AAAA,IACzC;AACD,WAAO;AAAA,EACR;AAAA,EACD,gBAAgB,YAAY,GAAG;AAC7B,UAAM,SAAS,CAAA;AACf,aAAS,IAAI,GAAG,KAAK,WAAW,KAAK;AACnC,aAAO,KAAK,KAAK,WAAW,IAAI,SAAS,CAAC;AAAA,IAC3C;AACD,WAAO;AAAA,EACR;AAAA,EACD,YAAY;AACV,UAAM,UAAU,KAAK;AACrB,WAAO,QAAQ,QAAQ,SAAS;AAAA,EACjC;AAAA,EACD,WAAW,YAAY,KAAK,oBAAoB;AAC9C,QAAI,KAAK,mBAAmB,KAAK,gBAAgB,WAAW,YAAY,KAAK,CAAC,KAAK,aAAa;AAC9F,aAAO,KAAK;AAAA,IACb;AACD,SAAK,cAAc;AACnB,UAAM,QAAQ,CAAA;AACd,QAAI,SAAS,OAAO,KAAK,SAAS,CAAC;AACnC,QAAI,MAAM;AACV,UAAM,KAAK,CAAC;AACZ,aAAS,IAAI,GAAG,KAAK,WAAW,KAAK;AACnC,gBAAU,KAAK,SAAS,IAAI,SAAS;AACrC,aAAO,QAAQ,WAAW,IAAI;AAC9B,YAAM,KAAK,GAAG;AACd,aAAO;AAAA,IACR;AACD,SAAK,kBAAkB;AACvB,WAAO;AAAA,EACR;AAAA,EACD,mBAAmB;AACjB,SAAK,cAAc;AACnB,SAAK,WAAU;AAAA,EAChB;AAAA,EACD,eAAe,GAAG,UAAU;AAC1B,UAAM,aAAa,KAAK;AACxB,QAAI,IAAI;AACR,UAAM,KAAK,WAAW;AACtB,QAAI;AACJ,QAAI,UAAU;AACZ,wBAAkB;AAAA,IACxB,OAAW;AACL,wBAAkB,IAAI,WAAW,KAAK;AAAA,IACvC;AACD,QAAI,MAAM,GAAG,OAAO,KAAK,GAAG;AAC5B,WAAO,OAAO,MAAM;AAClB,UAAI,KAAK,MAAM,OAAO,OAAO,OAAO,CAAC;AACrC,mBAAa,WAAW,KAAK;AAC7B,UAAI,aAAa,GAAG;AAClB,cAAM,IAAI;AAAA,MAClB,WAAiB,aAAa,GAAG;AACzB,eAAO,IAAI;AAAA,MACnB,OAAa;AACL,eAAO;AACP;AAAA,MACD;AAAA,IACF;AACD,QAAI;AACJ,QAAI,WAAW,OAAO,iBAAiB;AACrC,aAAO,KAAK,KAAK;AAAA,IAClB;AACD,UAAM,eAAe,WAAW;AAChC,UAAM,cAAc,WAAW,IAAI;AACnC,UAAM,gBAAgB,cAAc;AACpC,UAAM,mBAAmB,kBAAkB,gBAAgB;AAC3D,UAAM,KAAK,IAAI,oBAAoB,KAAK;AACxC,WAAO;AAAA,EACR;AAAA,EACD,WAAW,GAAG,gBAAgB;AAC5B,UAAM,QAAQ;AACd,QAAI,KAAK,IAAI;AACb,QAAI,KAAK,IAAI;AACb,QAAI,KAAK;AACP,WAAK;AACP,QAAI,KAAK;AACP,WAAK;AACP,UAAM,MAAM,KAAK,SAAS,EAAE;AAC5B,UAAM,MAAM,KAAK,SAAS,EAAE;AAC5B,UAAM,UAAU,mBAAmB,IAAI,YAAY,IAAIF,UAAS,IAAG,IAAIE,UAAO;AAC9E,YAAQ,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE;AAC3B,WAAO;AAAA,EACR;AAAA,EACD,aAAa,GAAG,gBAAgB;AAC9B,UAAM,IAAI,KAAK,eAAe,CAAC;AAC/B,WAAO,KAAK,WAAW,GAAG,cAAc;AAAA,EACzC;AAAA,EACD,oBAAoB,UAAU,QAAQ;AACpC,UAAM,SAAS,IAAIA;AACnB,UAAM,WAAW,CAAA;AACjB,UAAM,UAAU,CAAA;AAChB,UAAM,YAAY,CAAA;AAClB,UAAM,MAAM,IAAIA;AAChB,UAAM,MAAM,IAAI;AAChB,aAAS,IAAI,GAAG,KAAK,UAAU,KAAK;AAClC,YAAM,IAAI,IAAI;AACd,eAAS,KAAK,KAAK,aAAa,GAAG,IAAIA,UAAO,CAAE;AAAA,IACjD;AACD,YAAQ,KAAK,IAAIA;AACjB,cAAU,KAAK,IAAIA;AACnB,QAAIL,OAAM,OAAO;AACjB,UAAM,KAAK,KAAK,IAAI,SAAS,GAAG,CAAC;AACjC,UAAM,KAAK,KAAK,IAAI,SAAS,GAAG,CAAC;AACjC,UAAM,KAAK,KAAK,IAAI,SAAS,GAAG,CAAC;AACjC,QAAI,MAAMA,MAAK;AACb,MAAAA,OAAM;AACN,aAAO,IAAI,GAAG,GAAG,CAAC;AAAA,IACnB;AACD,QAAI,MAAMA,MAAK;AACb,MAAAA,OAAM;AACN,aAAO,IAAI,GAAG,GAAG,CAAC;AAAA,IACnB;AACD,QAAI,MAAMA,MAAK;AACb,aAAO,IAAI,GAAG,GAAG,CAAC;AAAA,IACnB;AACD,QAAI,aAAa,SAAS,IAAI,MAAM,EAAE;AACtC,YAAQ,GAAG,aAAa,SAAS,IAAI,GAAG;AACxC,cAAU,GAAG,aAAa,SAAS,IAAI,QAAQ,EAAE;AACjD,aAAS,IAAI,GAAG,KAAK,UAAU,KAAK;AAClC,cAAQ,KAAK,QAAQ,IAAI,GAAG;AAC5B,gBAAU,KAAK,UAAU,IAAI,GAAG;AAChC,UAAI,aAAa,SAAS,IAAI,IAAI,SAAS,EAAE;AAC7C,UAAI,IAAI,WAAW,OAAO,SAAS;AACjC,YAAI,UAAS;AACb,cAAM,QAAQ,KAAK,KAAKD,UAAQ,SAAS,IAAI,GAAG,IAAI,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;AACxE,gBAAQ,GAAG,aAAa,IAAI,iBAAiB,KAAK,KAAK,CAAC;AAAA,MACzD;AACD,gBAAU,GAAG,aAAa,SAAS,IAAI,QAAQ,EAAE;AAAA,IAClD;AACD,QAAI,WAAW,MAAM;AACnB,UAAI,QAAQ,KAAK,KAAKA,UAAQ,QAAQ,GAAG,IAAI,QAAQ,SAAS,GAAG,IAAI,CAAC,CAAC;AACvE,eAAS;AACT,UAAI,SAAS,GAAG,IAAI,IAAI,aAAa,QAAQ,IAAI,QAAQ,SAAS,CAAC,IAAI,GAAG;AACxE,gBAAQ,CAAC;AAAA,MACV;AACD,eAAS,IAAI,GAAG,KAAK,UAAU,KAAK;AAClC,gBAAQ,GAAG,aAAa,IAAI,iBAAiB,SAAS,IAAI,QAAQ,CAAC,CAAC;AACpE,kBAAU,GAAG,aAAa,SAAS,IAAI,QAAQ,EAAE;AAAA,MAClD;AAAA,IACF;AACD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACG;AAAA,EACD,QAAQ;AACN,WAAO,IAAI,KAAK,YAAa,EAAC,KAAK,IAAI;AAAA,EACxC;AAAA,EACD,KAAK,QAAQ;AACX,SAAK,qBAAqB,OAAO;AACjC,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAM/E,QAAO;AAAA,MACX,UAAU;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,QACN,WAAW;AAAA,MACZ;AAAA,IACP;AACI,IAAAA,MAAK,qBAAqB,KAAK;AAC/B,IAAAA,MAAK,OAAO,KAAK;AACjB,WAAOA;AAAA,EACR;AAAA,EACD,SAAS,MAAM;AACb,SAAK,qBAAqB,KAAK;AAC/B,WAAO;AAAA,EACR;AACH;AACA,MAAM,qBAAqB,MAAM;AAAA,EAC/B,YAAY,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,GAAG,YAAY,KAAK,KAAK,GAAG,aAAa,OAAO,YAAY,GAAG;AACjI;AACA,SAAK,iBAAiB;AACtB,SAAK,OAAO;AACZ,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,cAAc;AACnB,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,SAAK,YAAY;AAAA,EAClB;AAAA,EACD,SAAS,GAAG,gBAAgB;AAC1B,UAAM,QAAQ,kBAAkB,IAAImF;AACpC,UAAM,QAAQ,KAAK,KAAK;AACxB,QAAI,aAAa,KAAK,YAAY,KAAK;AACvC,UAAM,aAAa,KAAK,IAAI,UAAU,IAAI,OAAO;AACjD,WAAO,aAAa;AAClB,oBAAc;AAChB,WAAO,aAAa;AAClB,oBAAc;AAChB,QAAI,aAAa,OAAO,SAAS;AAC/B,UAAI,YAAY;AACd,qBAAa;AAAA,MACrB,OAAa;AACL,qBAAa;AAAA,MACd;AAAA,IACF;AACD,QAAI,KAAK,eAAe,QAAQ,CAAC,YAAY;AAC3C,UAAI,eAAe,OAAO;AACxB,qBAAa,CAAC;AAAA,MACtB,OAAa;AACL,qBAAa,aAAa;AAAA,MAC3B;AAAA,IACF;AACD,UAAM,QAAQ,KAAK,cAAc,IAAI;AACrC,QAAI,IAAI,KAAK,KAAK,KAAK,UAAU,KAAK,IAAI,KAAK;AAC/C,QAAI,IAAI,KAAK,KAAK,KAAK,UAAU,KAAK,IAAI,KAAK;AAC/C,QAAI,KAAK,cAAc,GAAG;AACxB,YAAM,MAAM,KAAK,IAAI,KAAK,SAAS;AACnC,YAAM,MAAM,KAAK,IAAI,KAAK,SAAS;AACnC,YAAM,KAAK,IAAI,KAAK;AACpB,YAAM,KAAK,IAAI,KAAK;AACpB,UAAI,KAAK,MAAM,KAAK,MAAM,KAAK;AAC/B,UAAI,KAAK,MAAM,KAAK,MAAM,KAAK;AAAA,IAChC;AACD,WAAO,MAAM,IAAI,GAAG,CAAC;AAAA,EACtB;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,KAAK,OAAO;AACjB,SAAK,KAAK,OAAO;AACjB,SAAK,UAAU,OAAO;AACtB,SAAK,UAAU,OAAO;AACtB,SAAK,cAAc,OAAO;AAC1B,SAAK,YAAY,OAAO;AACxB,SAAK,aAAa,OAAO;AACzB,SAAK,YAAY,OAAO;AACxB,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMnF,QAAO,MAAM;AACnB,IAAAA,MAAK,KAAK,KAAK;AACf,IAAAA,MAAK,KAAK,KAAK;AACf,IAAAA,MAAK,UAAU,KAAK;AACpB,IAAAA,MAAK,UAAU,KAAK;AACpB,IAAAA,MAAK,cAAc,KAAK;AACxB,IAAAA,MAAK,YAAY,KAAK;AACtB,IAAAA,MAAK,aAAa,KAAK;AACvB,IAAAA,MAAK,YAAY,KAAK;AACtB,WAAOA;AAAA,EACR;AAAA,EACD,SAAS,MAAM;AACb,UAAM,SAAS,IAAI;AACnB,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,UAAU,KAAK;AACpB,SAAK,UAAU,KAAK;AACpB,SAAK,cAAc,KAAK;AACxB,SAAK,YAAY,KAAK;AACtB,SAAK,aAAa,KAAK;AACvB,SAAK,YAAY,KAAK;AACtB,WAAO;AAAA,EACR;AACH;AACA,MAAM,iBAAiB,aAAa;AAAA,EAClC,YAAY,IAAI,IAAI,SAAS,aAAa,WAAW,YAAY;AAC/D,UAAM,IAAI,IAAI,SAAS,SAAS,aAAa,WAAW,UAAU;AAClE,SAAK,aAAa;AAClB,SAAK,OAAO;AAAA,EACb;AACH;AACA,SAAS,YAAY;AACnB,MAAI,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AACjC,WAAS,KAAK,IAAI,IAAI,IAAI,IAAI;AAC5B,SAAK;AACL,SAAK;AACL,SAAK,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK;AACjC,SAAK,IAAI,KAAK,IAAI,KAAK,KAAK;AAAA,EAC7B;AACD,SAAO;AAAA,IACL,gBAAgB,SAAS,IAAI,IAAI,IAAI,IAAI,SAAS;AAChD,WAAK,IAAI,IAAI,WAAW,KAAK,KAAK,WAAW,KAAK,GAAG;AAAA,IACtD;AAAA,IACD,0BAA0B,SAAS,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK;AAChE,UAAI,MAAM,KAAK,MAAM,OAAO,KAAK,OAAO,MAAM,QAAQ,KAAK,MAAM;AACjE,UAAI,MAAM,KAAK,MAAM,OAAO,KAAK,OAAO,MAAM,QAAQ,KAAK,MAAM;AACjE,YAAM;AACN,YAAM;AACN,WAAK,IAAI,IAAI,IAAI,EAAE;AAAA,IACpB;AAAA,IACD,MAAM,SAAS,GAAG;AAChB,YAAM,KAAK,IAAI;AACf,YAAM,KAAK,KAAK;AAChB,aAAO,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK;AAAA,IACrC;AAAA,EACL;AACA;AACA,MAAM,MAAsB,oBAAIqF;AAChC,MAAM,KAAqB,oBAAI;AAC/B,MAAM,KAAqB,oBAAI;AAC/B,MAAM,KAAqB,oBAAI;AAC/B,MAAM,yBAAyB,MAAM;AAAA,EACnC,YAAY,SAAS,CAAA,GAAI,SAAS,OAAO,YAAY,eAAe,UAAU,KAAK;AACjF;AACA,SAAK,qBAAqB;AAC1B,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,SAAK,UAAU;AAAA,EAChB;AAAA,EACD,SAAS,GAAG,iBAAiB,IAAIA,UAAO,GAAI;AAC1C,UAAM,QAAQ;AACd,UAAM,SAAS,KAAK;AACpB,UAAM,IAAI,OAAO;AACjB,UAAM,KAAK,KAAK,KAAK,SAAS,IAAI,MAAM;AACxC,QAAI,WAAW,KAAK,MAAM,CAAC;AAC3B,QAAI,SAAS,IAAI;AACjB,QAAI,KAAK,QAAQ;AACf,kBAAY,WAAW,IAAI,KAAK,KAAK,MAAM,KAAK,IAAI,QAAQ,IAAI,CAAC,IAAI,KAAK;AAAA,IAC3E,WAAU,WAAW,KAAK,aAAa,IAAI,GAAG;AAC7C,iBAAW,IAAI;AACf,eAAS;AAAA,IACV;AACD,QAAI,IAAI;AACR,QAAI,KAAK,UAAU,WAAW,GAAG;AAC/B,WAAK,QAAQ,WAAW,KAAK;AAAA,IACnC,OAAW;AACL,UAAI,WAAW,OAAO,IAAI,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE;AAClD,WAAK;AAAA,IACN;AACD,UAAM,KAAK,OAAO,WAAW;AAC7B,UAAM,KAAK,QAAQ,WAAW,KAAK;AACnC,QAAI,KAAK,UAAU,WAAW,IAAI,GAAG;AACnC,WAAK,QAAQ,WAAW,KAAK;AAAA,IACnC,OAAW;AACL,UAAI,WAAW,OAAO,IAAI,IAAI,OAAO,IAAI,EAAE,EAAE,IAAI,OAAO,IAAI,EAAE;AAC9D,WAAK;AAAA,IACN;AACD,QAAI,KAAK,cAAc,iBAAiB,KAAK,cAAc,WAAW;AACpE,YAAM,MAAM,KAAK,cAAc,YAAY,MAAM;AACjD,UAAI,MAAM,KAAK,IAAI,GAAG,kBAAkB,EAAE,GAAG,GAAG;AAChD,UAAI,MAAM,KAAK,IAAI,GAAG,kBAAkB,EAAE,GAAG,GAAG;AAChD,UAAI,MAAM,KAAK,IAAI,GAAG,kBAAkB,EAAE,GAAG,GAAG;AAChD,UAAI,MAAM;AACR,cAAM;AACR,UAAI,MAAM;AACR,cAAM;AACR,UAAI,MAAM;AACR,cAAM;AACR,SAAG,yBAAyB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,GAAG;AACjE,SAAG,yBAAyB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,GAAG;AACjE,SAAG,yBAAyB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,GAAG;AAAA,IACvE,WAAe,KAAK,cAAc,cAAc;AAC1C,SAAG,eAAe,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,OAAO;AACtD,SAAG,eAAe,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,OAAO;AACtD,SAAG,eAAe,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,OAAO;AAAA,IACvD;AACD,UAAM;AAAA,MACJ,GAAG,KAAK,MAAM;AAAA,MACd,GAAG,KAAK,MAAM;AAAA,MACd,GAAG,KAAK,MAAM;AAAA,IACpB;AACI,WAAO;AAAA,EACR;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,SAAS;AACd,aAAS,IAAI,GAAG,IAAI,OAAO,OAAO,QAAQ,IAAI,GAAG,KAAK;AACpD,YAAM,QAAQ,OAAO,OAAO;AAC5B,WAAK,OAAO,KAAK,MAAM,MAAO,CAAA;AAAA,IAC/B;AACD,SAAK,SAAS,OAAO;AACrB,SAAK,YAAY,OAAO;AACxB,SAAK,UAAU,OAAO;AACtB,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMrF,QAAO,MAAM;AACnB,IAAAA,MAAK,SAAS;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,IAAI,GAAG,KAAK;AAClD,YAAM,QAAQ,KAAK,OAAO;AAC1B,MAAAA,MAAK,OAAO,KAAK,MAAM,QAAS,CAAA;AAAA,IACjC;AACD,IAAAA,MAAK,SAAS,KAAK;AACnB,IAAAA,MAAK,YAAY,KAAK;AACtB,IAAAA,MAAK,UAAU,KAAK;AACpB,WAAOA;AAAA,EACR;AAAA,EACD,SAAS,MAAM;AACb,UAAM,SAAS,IAAI;AACnB,SAAK,SAAS;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,IAAI,GAAG,KAAK;AAClD,YAAM,QAAQ,KAAK,OAAO;AAC1B,WAAK,OAAO,KAAK,IAAIqF,UAAO,EAAG,UAAU,KAAK,CAAC;AAAA,IAChD;AACD,SAAK,SAAS,KAAK;AACnB,SAAK,YAAY,KAAK;AACtB,SAAK,UAAU,KAAK;AACpB,WAAO;AAAA,EACR;AACH;AACA,SAAS,WAAW,GAAG,IAAI,IAAI,IAAI,IAAI;AACrC,QAAM,MAAM,KAAK,MAAM;AACvB,QAAM,MAAM,KAAK,MAAM;AACvB,QAAM,KAAK,IAAI;AACf,QAAM,KAAK,IAAI;AACf,UAAQ,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,KAAK,KAAK,IAAI;AAC7F;AACA,SAAS,kBAAkB,GAAG,GAAG;AAC/B,QAAM,IAAI,IAAI;AACd,SAAO,IAAI,IAAI;AACjB;AACA,SAAS,kBAAkB,GAAG,GAAG;AAC/B,SAAO,KAAK,IAAI,KAAK,IAAI;AAC3B;AACA,SAAS,kBAAkB,GAAG,GAAG;AAC/B,SAAO,IAAI,IAAI;AACjB;AACA,SAAS,gBAAgB,GAAG,IAAI,IAAI,IAAI;AACtC,SAAO,kBAAkB,GAAG,EAAE,IAAI,kBAAkB,GAAG,EAAE,IAAI,kBAAkB,GAAG,EAAE;AACtF;AACA,SAAS,cAAc,GAAG,GAAG;AAC3B,QAAM,IAAI,IAAI;AACd,SAAO,IAAI,IAAI,IAAI;AACrB;AACA,SAAS,cAAc,GAAG,GAAG;AAC3B,QAAM,IAAI,IAAI;AACd,SAAO,IAAI,IAAI,IAAI,IAAI;AACzB;AACA,SAAS,cAAc,GAAG,GAAG;AAC3B,SAAO,KAAK,IAAI,KAAK,IAAI,IAAI;AAC/B;AACA,SAAS,cAAc,GAAG,GAAG;AAC3B,SAAO,IAAI,IAAI,IAAI;AACrB;AACA,SAAS,YAAY,GAAG,IAAI,IAAI,IAAI,IAAI;AACtC,SAAO,cAAc,GAAG,EAAE,IAAI,cAAc,GAAG,EAAE,IAAI,cAAc,GAAG,EAAE,IAAI,cAAc,GAAG,EAAE;AACjG;AACA,MAAM,yBAAyB,MAAM;AAAA,EACnC,YAAY,KAAK,IAAIF,UAAS,GAAE,KAAK,IAAIA,aAAW,KAAK,IAAIA,UAAO,GAAI,KAAK,IAAIA,UAAO,GAAI;AAC1F;AACA,SAAK,qBAAqB;AAC1B,SAAK,OAAO;AACZ,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,KAAK;AAAA,EACX;AAAA,EACD,SAAS,GAAG,iBAAiB,IAAIA,UAAO,GAAI;AAC1C,UAAM,QAAQ;AACd,UAAM,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK;AAC1D,UAAM;AAAA,MACJ,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,MACrC,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,IAC3C;AACI,WAAO;AAAA,EACR;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMnF,QAAO,MAAM;AACnB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,WAAOA;AAAA,EACR;AAAA,EACD,SAAS,MAAM;AACb,UAAM,SAAS,IAAI;AACnB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,WAAO;AAAA,EACR;AACH;AACA,MAAM,0BAA0B,MAAM;AAAA,EACpC,YAAY,KAAK,IAAIqF,UAAS,GAAE,KAAK,IAAIA,aAAW,KAAK,IAAIA,UAAO,GAAI,KAAK,IAAIA,UAAO,GAAI;AAC1F;AACA,SAAK,sBAAsB;AAC3B,SAAK,OAAO;AACZ,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,KAAK;AAAA,EACX;AAAA,EACD,SAAS,GAAG,iBAAiB,IAAIA,UAAO,GAAI;AAC1C,UAAM,QAAQ;AACd,UAAM,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK;AAC1D,UAAM;AAAA,MACJ,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,MACrC,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,MACrC,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,IAC3C;AACI,WAAO;AAAA,EACR;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMrF,QAAO,MAAM;AACnB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,WAAOA;AAAA,EACR;AAAA,EACD,SAAS,MAAM;AACb,UAAM,SAAS,IAAI;AACnB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,WAAO;AAAA,EACR;AACH;AACA,MAAM,kBAAkB,MAAM;AAAA,EAC5B,YAAY,KAAK,IAAImF,UAAS,GAAE,KAAK,IAAIA,aAAW;AAClD;AACA,SAAK,cAAc;AACnB,SAAK,OAAO;AACZ,SAAK,KAAK;AACV,SAAK,KAAK;AAAA,EACX;AAAA,EACD,SAAS,GAAG,iBAAiB,IAAIA,UAAO,GAAI;AAC1C,UAAM,QAAQ;AACd,QAAI,MAAM,GAAG;AACX,YAAM,KAAK,KAAK,EAAE;AAAA,IACxB,OAAW;AACL,YAAM,KAAK,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE;AAC/B,YAAM,eAAe,CAAC,EAAE,IAAI,KAAK,EAAE;AAAA,IACpC;AACD,WAAO;AAAA,EACR;AAAA,EACD,WAAW,GAAG,gBAAgB;AAC5B,WAAO,KAAK,SAAS,GAAG,cAAc;AAAA,EACvC;AAAA,EACD,WAAW,GAAG,gBAAgB;AAC5B,UAAM,UAAU,kBAAkB,IAAIA;AACtC,YAAQ,KAAK,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE;AACnC,WAAO;AAAA,EACR;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMnF,QAAO,MAAM;AACnB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,WAAOA;AAAA,EACR;AAAA,EACD,SAAS,MAAM;AACb,UAAM,SAAS,IAAI;AACnB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,WAAO;AAAA,EACR;AACH;AACA,MAAM,mBAAmB,MAAM;AAAA,EAC7B,YAAY,KAAK,IAAIqF,UAAS,GAAE,KAAK,IAAIA,aAAW;AAClD;AACA,SAAK,eAAe;AACpB,SAAK,OAAO;AACZ,SAAK,KAAK;AACV,SAAK,KAAK;AAAA,EACX;AAAA,EACD,SAAS,GAAG,iBAAiB,IAAIA,UAAO,GAAI;AAC1C,UAAM,QAAQ;AACd,QAAI,MAAM,GAAG;AACX,YAAM,KAAK,KAAK,EAAE;AAAA,IACxB,OAAW;AACL,YAAM,KAAK,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE;AAC/B,YAAM,eAAe,CAAC,EAAE,IAAI,KAAK,EAAE;AAAA,IACpC;AACD,WAAO;AAAA,EACR;AAAA,EACD,WAAW,GAAG,gBAAgB;AAC5B,WAAO,KAAK,SAAS,GAAG,cAAc;AAAA,EACvC;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMrF,QAAO,MAAM;AACnB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,WAAOA;AAAA,EACR;AAAA,EACD,SAAS,MAAM;AACb,UAAM,SAAS,IAAI;AACnB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,WAAO;AAAA,EACR;AACH;AACA,MAAM,6BAA6B,MAAM;AAAA,EACvC,YAAY,KAAK,IAAImF,aAAW,KAAK,IAAIA,aAAW,KAAK,IAAIA,aAAW;AACtE;AACA,SAAK,yBAAyB;AAC9B,SAAK,OAAO;AACZ,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,KAAK;AAAA,EACX;AAAA,EACD,SAAS,GAAG,iBAAiB,IAAIA,UAAO,GAAI;AAC1C,UAAM,QAAQ;AACd,UAAM,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK;AAC5C,UAAM;AAAA,MACJ,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,MACnC,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,IACzC;AACI,WAAO;AAAA,EACR;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMnF,QAAO,MAAM;AACnB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,WAAOA;AAAA,EACR;AAAA,EACD,SAAS,MAAM;AACb,UAAM,SAAS,IAAI;AACnB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,WAAO;AAAA,EACR;AACH;AACA,MAAM,8BAA8B,MAAM;AAAA,EACxC,YAAY,KAAK,IAAIqF,aAAW,KAAK,IAAIA,aAAW,KAAK,IAAIA,aAAW;AACtE;AACA,SAAK,0BAA0B;AAC/B,SAAK,OAAO;AACZ,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,KAAK;AAAA,EACX;AAAA,EACD,SAAS,GAAG,iBAAiB,IAAIA,UAAO,GAAI;AAC1C,UAAM,QAAQ;AACd,UAAM,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK;AAC5C,UAAM;AAAA,MACJ,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,MACnC,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,MACnC,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,IACzC;AACI,WAAO;AAAA,EACR;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,SAAK,GAAG,KAAK,OAAO,EAAE;AACtB,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMrF,QAAO,MAAM;AACnB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,IAAAA,MAAK,KAAK,KAAK,GAAG,QAAO;AACzB,WAAOA;AAAA,EACR;AAAA,EACD,SAAS,MAAM;AACb,UAAM,SAAS,IAAI;AACnB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,SAAK,GAAG,UAAU,KAAK,EAAE;AACzB,WAAO;AAAA,EACR;AACH;AACA,MAAM,oBAAoB,MAAM;AAAA,EAC9B,YAAY,SAAS,IAAI;AACvB;AACA,SAAK,gBAAgB;AACrB,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EACf;AAAA,EACD,SAAS,GAAG,iBAAiB,IAAImF,UAAO,GAAI;AAC1C,UAAM,QAAQ;AACd,UAAM,SAAS,KAAK;AACpB,UAAM,KAAK,OAAO,SAAS,KAAK;AAChC,UAAM,WAAW,KAAK,MAAM,CAAC;AAC7B,UAAM,SAAS,IAAI;AACnB,UAAM,KAAK,OAAO,aAAa,IAAI,WAAW,WAAW;AACzD,UAAM,KAAK,OAAO;AAClB,UAAM,KAAK,OAAO,WAAW,OAAO,SAAS,IAAI,OAAO,SAAS,IAAI,WAAW;AAChF,UAAM,KAAK,OAAO,WAAW,OAAO,SAAS,IAAI,OAAO,SAAS,IAAI,WAAW;AAChF,UAAM;AAAA,MACJ,WAAW,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,MACzC,WAAW,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,IAC/C;AACI,WAAO;AAAA,EACR;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,SAAS;AACd,aAAS,IAAI,GAAG,IAAI,OAAO,OAAO,QAAQ,IAAI,GAAG,KAAK;AACpD,YAAM,QAAQ,OAAO,OAAO;AAC5B,WAAK,OAAO,KAAK,MAAM,MAAO,CAAA;AAAA,IAC/B;AACD,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMnF,QAAO,MAAM;AACnB,IAAAA,MAAK,SAAS;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,IAAI,GAAG,KAAK;AAClD,YAAM,QAAQ,KAAK,OAAO;AAC1B,MAAAA,MAAK,OAAO,KAAK,MAAM,QAAS,CAAA;AAAA,IACjC;AACD,WAAOA;AAAA,EACR;AAAA,EACD,SAAS,MAAM;AACb,UAAM,SAAS,IAAI;AACnB,SAAK,SAAS;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,IAAI,GAAG,KAAK;AAClD,YAAM,QAAQ,KAAK,OAAO;AAC1B,WAAK,OAAO,KAAK,IAAImF,UAAO,EAAG,UAAU,KAAK,CAAC;AAAA,IAChD;AACD,WAAO;AAAA,EACR;AACH;AACA,IAAI,SAAyB,uBAAO,OAAO;AAAA,EACzC,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,MAAM,kBAAkB,MAAM;AAAA,EAC5B,cAAc;AACZ;AACA,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,YAAY;AAAA,EAClB;AAAA,EACD,IAAI,OAAO;AACT,SAAK,OAAO,KAAK,KAAK;AAAA,EACvB;AAAA,EACD,YAAY;AACV,UAAM,aAAa,KAAK,OAAO,GAAG,SAAS,CAAC;AAC5C,UAAM,WAAW,KAAK,OAAO,KAAK,OAAO,SAAS,GAAG,SAAS,CAAC;AAC/D,QAAI,CAAC,WAAW,OAAO,QAAQ,GAAG;AAChC,WAAK,OAAO,KAAK,IAAI,UAAU,UAAU,UAAU,CAAC;AAAA,IACrD;AAAA,EACF;AAAA,EACD,SAAS,GAAG,gBAAgB;AAC1B,UAAM,IAAI,IAAI,KAAK,UAAS;AAC5B,UAAM,eAAe,KAAK;AAC1B,QAAI,IAAI;AACR,WAAO,IAAI,aAAa,QAAQ;AAC9B,UAAI,aAAa,MAAM,GAAG;AACxB,cAAM,OAAO,aAAa,KAAK;AAC/B,cAAM,QAAQ,KAAK,OAAO;AAC1B,cAAM,gBAAgB,MAAM;AAC5B,cAAM,IAAI,kBAAkB,IAAI,IAAI,IAAI,OAAO;AAC/C,eAAO,MAAM,WAAW,GAAG,cAAc;AAAA,MAC1C;AACD;AAAA,IACD;AACD,WAAO;AAAA,EACR;AAAA,EACD,YAAY;AACV,UAAM,OAAO,KAAK;AAClB,WAAO,KAAK,KAAK,SAAS;AAAA,EAC3B;AAAA,EACD,mBAAmB;AACjB,SAAK,cAAc;AACnB,SAAK,eAAe;AACpB,SAAK,gBAAe;AAAA,EACrB;AAAA,EACD,kBAAkB;AAChB,QAAI,KAAK,gBAAgB,KAAK,aAAa,WAAW,KAAK,OAAO,QAAQ;AACxE,aAAO,KAAK;AAAA,IACb;AACD,UAAM,UAAU,CAAA;AAChB,QAAI,OAAO;AACX,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,IAAI,GAAG,KAAK;AAClD,cAAQ,KAAK,OAAO,GAAG,UAAS;AAChC,cAAQ,KAAK,IAAI;AAAA,IAClB;AACD,SAAK,eAAe;AACpB,WAAO;AAAA,EACR;AAAA,EACD,gBAAgB,YAAY,IAAI;AAC9B,UAAM,SAAS,CAAA;AACf,aAAS,IAAI,GAAG,KAAK,WAAW,KAAK;AACnC,aAAO,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC;AAAA,IACzC;AACD,QAAI,KAAK,WAAW;AAClB,aAAO,KAAK,OAAO,EAAE;AAAA,IACtB;AACD,WAAO;AAAA,EACR;AAAA,EACD,UAAU,YAAY,IAAI;AACxB,UAAM,SAAS,CAAA;AACf,QAAI;AACJ,aAAS,IAAI,GAAG,SAAS,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK;AAC5D,YAAM,QAAQ,OAAO;AACrB,YAAM,aAAa,MAAM,iBAAiB,YAAY,IAAI,MAAM,eAAe,MAAM,eAAe,IAAI,MAAM,gBAAgB,YAAY,MAAM,OAAO,SAAS;AAChK,YAAM,MAAM,MAAM,UAAU,UAAU;AACtC,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,cAAM,QAAQ,IAAI;AAClB,YAAI,QAAQ,KAAK,OAAO,KAAK;AAC3B;AACF,eAAO,KAAK,KAAK;AACjB,eAAO;AAAA,MACR;AAAA,IACF;AACD,QAAI,KAAK,aAAa,OAAO,SAAS,KAAK,CAAC,OAAO,OAAO,SAAS,GAAG,OAAO,OAAO,EAAE,GAAG;AACvF,aAAO,KAAK,OAAO,EAAE;AAAA,IACtB;AACD,WAAO;AAAA,EACR;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,SAAS;AACd,aAAS,IAAI,GAAG,IAAI,OAAO,OAAO,QAAQ,IAAI,GAAG,KAAK;AACpD,YAAM,QAAQ,OAAO,OAAO;AAC5B,WAAK,OAAO,KAAK,MAAM,MAAO,CAAA;AAAA,IAC/B;AACD,SAAK,YAAY,OAAO;AACxB,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMnF,QAAO,MAAM;AACnB,IAAAA,MAAK,YAAY,KAAK;AACtB,IAAAA,MAAK,SAAS;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,IAAI,GAAG,KAAK;AAClD,YAAM,QAAQ,KAAK,OAAO;AAC1B,MAAAA,MAAK,OAAO,KAAK,MAAM,OAAQ,CAAA;AAAA,IAChC;AACD,WAAOA;AAAA,EACR;AAAA,EACD,SAAS,MAAM;AACb,UAAM,SAAS,IAAI;AACnB,SAAK,YAAY,KAAK;AACtB,SAAK,SAAS;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,IAAI,GAAG,KAAK;AAClD,YAAM,QAAQ,KAAK,OAAO;AAC1B,WAAK,OAAO,KAAK,IAAI,OAAO,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,IAC1D;AACD,WAAO;AAAA,EACR;AACH;AACA,MAAM,aAAa,UAAU;AAAA,EAC3B,YAAY,QAAQ;AAClB;AACA,SAAK,OAAO;AACZ,SAAK,eAAe,IAAImF;AACxB,QAAI,QAAQ;AACV,WAAK,cAAc,MAAM;AAAA,IAC1B;AAAA,EACF;AAAA,EACD,cAAc,QAAQ;AACpB,SAAK,OAAO,OAAO,GAAG,GAAG,OAAO,GAAG,CAAC;AACpC,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,WAAK,OAAO,OAAO,GAAG,GAAG,OAAO,GAAG,CAAC;AAAA,IACrC;AACD,WAAO;AAAA,EACR;AAAA,EACD,OAAO,GAAG,GAAG;AACX,SAAK,aAAa,IAAI,GAAG,CAAC;AAC1B,WAAO;AAAA,EACR;AAAA,EACD,OAAO,GAAG,GAAG;AACX,UAAM,QAAQ,IAAI,UAAU,KAAK,aAAa,MAAO,GAAE,IAAIA,UAAQ,GAAG,CAAC,CAAC;AACxE,SAAK,OAAO,KAAK,KAAK;AACtB,SAAK,aAAa,IAAI,GAAG,CAAC;AAC1B,WAAO;AAAA,EACR;AAAA,EACD,iBAAiB,MAAM,MAAM,IAAI,IAAI;AACnC,UAAM,QAAQ,IAAI;AAAA,MAChB,KAAK,aAAa,MAAO;AAAA,MACzB,IAAIA,UAAQ,MAAM,IAAI;AAAA,MACtB,IAAIA,UAAQ,IAAI,EAAE;AAAA,IACxB;AACI,SAAK,OAAO,KAAK,KAAK;AACtB,SAAK,aAAa,IAAI,IAAI,EAAE;AAC5B,WAAO;AAAA,EACR;AAAA,EACD,cAAc,OAAO,OAAO,OAAO,OAAO,IAAI,IAAI;AAChD,UAAM,QAAQ,IAAI;AAAA,MAChB,KAAK,aAAa,MAAO;AAAA,MACzB,IAAIA,UAAQ,OAAO,KAAK;AAAA,MACxB,IAAIA,UAAQ,OAAO,KAAK;AAAA,MACxB,IAAIA,UAAQ,IAAI,EAAE;AAAA,IACxB;AACI,SAAK,OAAO,KAAK,KAAK;AACtB,SAAK,aAAa,IAAI,IAAI,EAAE;AAC5B,WAAO;AAAA,EACR;AAAA,EACD,WAAW,KAAK;AACd,UAAM,OAAO,CAAC,KAAK,aAAa,MAAK,CAAE,EAAE,OAAO,GAAG;AACnD,UAAM,QAAQ,IAAI,YAAY,IAAI;AAClC,SAAK,OAAO,KAAK,KAAK;AACtB,SAAK,aAAa,KAAK,IAAI,IAAI,SAAS,EAAE;AAC1C,WAAO;AAAA,EACR;AAAA,EACD,IAAI,IAAI,IAAI,SAAS,aAAa,WAAW,YAAY;AACvD,UAAM,KAAK,KAAK,aAAa;AAC7B,UAAM,KAAK,KAAK,aAAa;AAC7B,SAAK;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,WAAO;AAAA,EACR;AAAA,EACD,OAAO,IAAI,IAAI,SAAS,aAAa,WAAW,YAAY;AAC1D,SAAK,WAAW,IAAI,IAAI,SAAS,SAAS,aAAa,WAAW,UAAU;AAC5E,WAAO;AAAA,EACR;AAAA,EACD,QAAQ,IAAI,IAAI,SAAS,SAAS,aAAa,WAAW,YAAY,WAAW;AAC/E,UAAM,KAAK,KAAK,aAAa;AAC7B,UAAM,KAAK,KAAK,aAAa;AAC7B,SAAK,WAAW,KAAK,IAAI,KAAK,IAAI,SAAS,SAAS,aAAa,WAAW,YAAY,SAAS;AACjG,WAAO;AAAA,EACR;AAAA,EACD,WAAW,IAAI,IAAI,SAAS,SAAS,aAAa,WAAW,YAAY,WAAW;AAClF,UAAM,QAAQ,IAAI,aAAa,IAAI,IAAI,SAAS,SAAS,aAAa,WAAW,YAAY,SAAS;AACtG,QAAI,KAAK,OAAO,SAAS,GAAG;AAC1B,YAAM,aAAa,MAAM,SAAS,CAAC;AACnC,UAAI,CAAC,WAAW,OAAO,KAAK,YAAY,GAAG;AACzC,aAAK,OAAO,WAAW,GAAG,WAAW,CAAC;AAAA,MACvC;AAAA,IACF;AACD,SAAK,OAAO,KAAK,KAAK;AACtB,UAAM,YAAY,MAAM,SAAS,CAAC;AAClC,SAAK,aAAa,KAAK,SAAS;AAChC,WAAO;AAAA,EACR;AAAA,EACD,KAAK,QAAQ;AACX,UAAM,KAAK,MAAM;AACjB,SAAK,aAAa,KAAK,OAAO,YAAY;AAC1C,WAAO;AAAA,EACR;AAAA,EACD,SAAS;AACP,UAAMnF,QAAO,MAAM;AACnB,IAAAA,MAAK,eAAe,KAAK,aAAa,QAAO;AAC7C,WAAOA;AAAA,EACR;AAAA,EACD,SAAS,MAAM;AACb,UAAM,SAAS,IAAI;AACnB,SAAK,aAAa,UAAU,KAAK,YAAY;AAC7C,WAAO;AAAA,EACR;AACH;AACA,MAAM,sBAAsB,eAAe;AAAA,EACzC,YAAY,SAAS,CAAC,IAAImF,UAAQ,GAAG,IAAI,GAAG,IAAIA,UAAQ,KAAK,CAAC,GAAG,IAAIA,UAAQ,GAAG,GAAG,CAAC,GAAG,WAAW,IAAI,WAAW,GAAG,YAAY,KAAK,KAAK,GAAG;AAC3I;AACA,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,eAAW,KAAK,MAAM,QAAQ;AAC9B,gBAAYJ,UAAQ,WAAW,GAAG,KAAK,KAAK,CAAC;AAC7C,UAAM,UAAU,CAAA;AAChB,UAAM,WAAW,CAAA;AACjB,UAAM,MAAM,CAAA;AACZ,UAAM,cAAc,CAAA;AACpB,UAAM,UAAU,CAAA;AAChB,UAAM,kBAAkB,IAAI;AAC5B,UAAM,UAAU,IAAIM;AACpB,UAAM,KAAK,IAAIF;AACf,UAAM,SAAS,IAAIE;AACnB,UAAM,YAAY,IAAIA;AACtB,UAAM,aAAa,IAAIA;AACvB,QAAI,KAAK;AACT,QAAI,KAAK;AACT,aAAS,IAAI,GAAG,KAAK,OAAO,SAAS,GAAG,KAAK;AAC3C,cAAQ,GAAC;AAAA,QACP,KAAK;AACH,eAAK,OAAO,IAAI,GAAG,IAAI,OAAO,GAAG;AACjC,eAAK,OAAO,IAAI,GAAG,IAAI,OAAO,GAAG;AACjC,iBAAO,IAAI,KAAK;AAChB,iBAAO,IAAI,CAAC;AACZ,iBAAO,IAAI,KAAK;AAChB,qBAAW,KAAK,MAAM;AACtB,iBAAO,UAAS;AAChB,sBAAY,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAC7C;AAAA,QACF,KAAK,OAAO,SAAS;AACnB,sBAAY,KAAK,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AACzD;AAAA,QACF;AACE,eAAK,OAAO,IAAI,GAAG,IAAI,OAAO,GAAG;AACjC,eAAK,OAAO,IAAI,GAAG,IAAI,OAAO,GAAG;AACjC,iBAAO,IAAI,KAAK;AAChB,iBAAO,IAAI,CAAC;AACZ,iBAAO,IAAI,KAAK;AAChB,oBAAU,KAAK,MAAM;AACrB,iBAAO,KAAK,WAAW;AACvB,iBAAO,KAAK,WAAW;AACvB,iBAAO,KAAK,WAAW;AACvB,iBAAO,UAAS;AAChB,sBAAY,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAC7C,qBAAW,KAAK,SAAS;AAAA,MAC5B;AAAA,IACF;AACD,aAAS,IAAI,GAAG,KAAK,UAAU,KAAK;AAClC,YAAM,MAAM,WAAW,IAAI,kBAAkB;AAC7C,YAAM,MAAM,KAAK,IAAI,GAAG;AACxB,YAAM,MAAM,KAAK,IAAI,GAAG;AACxB,eAAS,IAAI,GAAG,KAAK,OAAO,SAAS,GAAG,KAAK;AAC3C,gBAAQ,IAAI,OAAO,GAAG,IAAI;AAC1B,gBAAQ,IAAI,OAAO,GAAG;AACtB,gBAAQ,IAAI,OAAO,GAAG,IAAI;AAC1B,iBAAS,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC7C,WAAG,IAAI,IAAI;AACX,WAAG,IAAI,KAAK,OAAO,SAAS;AAC5B,YAAI,KAAK,GAAG,GAAG,GAAG,CAAC;AACnB,cAAM,IAAI,YAAY,IAAI,IAAI,KAAK;AACnC,cAAM,IAAI,YAAY,IAAI,IAAI;AAC9B,cAAM,IAAI,YAAY,IAAI,IAAI,KAAK;AACnC,gBAAQ,KAAK,GAAG,GAAG,CAAC;AAAA,MACrB;AAAA,IACF;AACD,aAAS,IAAI,GAAG,IAAI,UAAU,KAAK;AACjC,eAAS,IAAI,GAAG,IAAI,OAAO,SAAS,GAAG,KAAK;AAC1C,cAAM,OAAO,IAAI,IAAI,OAAO;AAC5B,cAAM,IAAI;AACV,cAAM,IAAI,OAAO,OAAO;AACxB,cAAM,IAAI,OAAO,OAAO,SAAS;AACjC,cAAM,IAAI,OAAO;AACjB,gBAAQ,KAAK,GAAG,GAAG,CAAC;AACpB,gBAAQ,KAAK,GAAG,GAAG,CAAC;AAAA,MACrB;AAAA,IACF;AACD,SAAK,SAAS,OAAO;AACrB,SAAK,aAAa,YAAY,IAAI,uBAAuB,UAAU,CAAC,CAAC;AACrE,SAAK,aAAa,MAAM,IAAI,uBAAuB,KAAK,CAAC,CAAC;AAC1D,SAAK,aAAa,UAAU,IAAI,uBAAuB,SAAS,CAAC,CAAC;AAAA,EACnE;AAAA,EACD,OAAO,SAASrF,OAAM;AACpB,WAAO,IAAI,cAAcA,MAAK,QAAQA,MAAK,UAAUA,MAAK,UAAUA,MAAK,SAAS;AAAA,EACnF;AACH;AACA,MAAM,wBAAwB,cAAc;AAAA,EAC1C,YAAY,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,iBAAiB,GAAG;AACvE,UAAM,OAAO,IAAI;AACjB,SAAK,OAAO,GAAG,CAAC,SAAS,GAAG,QAAQ,KAAK,KAAK,KAAK,CAAC;AACpD,SAAK,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,KAAK,GAAG;AACnD,UAAM,KAAK,UAAU,WAAW,GAAG,cAAc;AACjD,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,MAChB;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACN;AAAA,EACG;AAAA,EACD,OAAO,SAASA,OAAM;AACpB,WAAO,IAAI,gBAAgBA,MAAK,QAAQA,MAAK,QAAQA,MAAK,aAAaA,MAAK,cAAc;AAAA,EAC3F;AACH;AACA,MAAM,uBAAuB,eAAe;AAAA,EAC1C,YAAY,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,KAAK,KAAK,GAAG;AAC/E;AACA,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,eAAW,KAAK,IAAI,GAAG,QAAQ;AAC/B,UAAM,UAAU,CAAA;AAChB,UAAM,WAAW,CAAA;AACjB,UAAM,UAAU,CAAA;AAChB,UAAM,MAAM,CAAA;AACZ,UAAM,UAAU,IAAIqF;AACpB,UAAM,KAAK,IAAIF;AACf,aAAS,KAAK,GAAG,GAAG,CAAC;AACrB,YAAQ,KAAK,GAAG,GAAG,CAAC;AACpB,QAAI,KAAK,KAAK,GAAG;AACjB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK,UAAU,KAAK,KAAK,GAAG;AACjD,YAAM,UAAU,aAAa,IAAI,WAAW;AAC5C,cAAQ,IAAI,SAAS,KAAK,IAAI,OAAO;AACrC,cAAQ,IAAI,SAAS,KAAK,IAAI,OAAO;AACrC,eAAS,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC7C,cAAQ,KAAK,GAAG,GAAG,CAAC;AACpB,SAAG,KAAK,SAAS,KAAK,SAAS,KAAK;AACpC,SAAG,KAAK,SAAS,IAAI,KAAK,SAAS,KAAK;AACxC,UAAI,KAAK,GAAG,GAAG,GAAG,CAAC;AAAA,IACpB;AACD,aAAS,IAAI,GAAG,KAAK,UAAU,KAAK;AAClC,cAAQ,KAAK,GAAG,IAAI,GAAG,CAAC;AAAA,IACzB;AACD,SAAK,SAAS,OAAO;AACrB,SAAK,aAAa,YAAY,IAAI,uBAAuB,UAAU,CAAC,CAAC;AACrE,SAAK,aAAa,UAAU,IAAI,uBAAuB,SAAS,CAAC,CAAC;AAClE,SAAK,aAAa,MAAM,IAAI,uBAAuB,KAAK,CAAC,CAAC;AAAA,EAC3D;AAAA,EACD,OAAO,SAASnF,OAAM;AACpB,WAAO,IAAI,eAAeA,MAAK,QAAQA,MAAK,UAAUA,MAAK,YAAYA,MAAK,WAAW;AAAA,EACxF;AACH;AACA,MAAM,yBAAyB,eAAe;AAAA,EAC5C,YAAY,YAAY,GAAG,eAAe,GAAG,SAAS,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,YAAY,OAAO,aAAa,GAAG,cAAc,KAAK,KAAK,GAAG;AAC7J;AACA,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,UAAM,QAAQ;AACd,qBAAiB,KAAK,MAAM,cAAc;AAC1C,qBAAiB,KAAK,MAAM,cAAc;AAC1C,UAAM,UAAU,CAAA;AAChB,UAAM,WAAW,CAAA;AACjB,UAAM,UAAU,CAAA;AAChB,UAAM,MAAM,CAAA;AACZ,QAAI,QAAQ;AACZ,UAAM,aAAa,CAAA;AACnB,UAAM,aAAa,SAAS;AAC5B,QAAI,aAAa;AACjB;AACA,QAAI,cAAc,OAAO;AACvB,UAAI,YAAY;AACd,oBAAY,IAAI;AAClB,UAAI,eAAe;AACjB,oBAAY,KAAK;AAAA,IACpB;AACD,SAAK,SAAS,OAAO;AACrB,SAAK,aAAa,YAAY,IAAI,uBAAuB,UAAU,CAAC,CAAC;AACrE,SAAK,aAAa,UAAU,IAAI,uBAAuB,SAAS,CAAC,CAAC;AAClE,SAAK,aAAa,MAAM,IAAI,uBAAuB,KAAK,CAAC,CAAC;AAC1D,aAAS,gBAAgB;AACvB,YAAM,SAAS,IAAIqF;AACnB,YAAM,UAAU,IAAIA;AACpB,UAAI,aAAa;AACjB,YAAM,SAAS,eAAe,aAAa;AAC3C,eAAS,IAAI,GAAG,KAAK,gBAAgB,KAAK;AACxC,cAAM,WAAW,CAAA;AACjB,cAAM,IAAI,IAAI;AACd,cAAM,SAAS,KAAK,eAAe,aAAa;AAChD,iBAAS,IAAI,GAAG,KAAK,gBAAgB,KAAK;AACxC,gBAAM,IAAI,IAAI;AACd,gBAAM,QAAQ,IAAI,cAAc;AAChC,gBAAM,WAAW,KAAK,IAAI,KAAK;AAC/B,gBAAM,WAAW,KAAK,IAAI,KAAK;AAC/B,kBAAQ,IAAI,SAAS;AACrB,kBAAQ,IAAI,CAAC,IAAI,SAAS;AAC1B,kBAAQ,IAAI,SAAS;AACrB,mBAAS,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC7C,iBAAO,IAAI,UAAU,OAAO,QAAQ,EAAE;AACtC,kBAAQ,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AACzC,cAAI,KAAK,GAAG,IAAI,CAAC;AACjB,mBAAS,KAAK,OAAO;AAAA,QACtB;AACD,mBAAW,KAAK,QAAQ;AAAA,MACzB;AACD,eAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACvC,iBAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACvC,gBAAM,IAAI,WAAW,GAAG;AACxB,gBAAM,IAAI,WAAW,IAAI,GAAG;AAC5B,gBAAM,IAAI,WAAW,IAAI,GAAG,IAAI;AAChC,gBAAM,IAAI,WAAW,GAAG,IAAI;AAC5B,kBAAQ,KAAK,GAAG,GAAG,CAAC;AACpB,kBAAQ,KAAK,GAAG,GAAG,CAAC;AACpB,wBAAc;AAAA,QACf;AAAA,MACF;AACD,YAAM,SAAS,YAAY,YAAY,CAAC;AACxC,oBAAc;AAAA,IACf;AACD,aAAS,YAAY,KAAK;AACxB,YAAM,mBAAmB;AACzB,YAAM,KAAK,IAAIF;AACf,YAAM,UAAU,IAAIE;AACpB,UAAI,aAAa;AACjB,YAAM,SAAS,QAAQ,OAAO,YAAY;AAC1C,YAAM,QAAQ,QAAQ,OAAO,IAAI;AACjC,eAAS,IAAI,GAAG,KAAK,gBAAgB,KAAK;AACxC,iBAAS,KAAK,GAAG,aAAa,OAAO,CAAC;AACtC,gBAAQ,KAAK,GAAG,OAAO,CAAC;AACxB,YAAI,KAAK,KAAK,GAAG;AACjB;AAAA,MACD;AACD,YAAM,iBAAiB;AACvB,eAAS,IAAI,GAAG,KAAK,gBAAgB,KAAK;AACxC,cAAM,IAAI,IAAI;AACd,cAAM,QAAQ,IAAI,cAAc;AAChC,cAAM,WAAW,KAAK,IAAI,KAAK;AAC/B,cAAM,WAAW,KAAK,IAAI,KAAK;AAC/B,gBAAQ,IAAI,SAAS;AACrB,gBAAQ,IAAI,aAAa;AACzB,gBAAQ,IAAI,SAAS;AACrB,iBAAS,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC7C,gBAAQ,KAAK,GAAG,OAAO,CAAC;AACxB,WAAG,IAAI,WAAW,MAAM;AACxB,WAAG,IAAI,WAAW,MAAM,QAAQ;AAChC,YAAI,KAAK,GAAG,GAAG,GAAG,CAAC;AACnB;AAAA,MACD;AACD,eAAS,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACvC,cAAM,IAAI,mBAAmB;AAC7B,cAAM,IAAI,iBAAiB;AAC3B,YAAI,QAAQ,MAAM;AAChB,kBAAQ,KAAK,GAAG,IAAI,GAAG,CAAC;AAAA,QAClC,OAAe;AACL,kBAAQ,KAAK,IAAI,GAAG,GAAG,CAAC;AAAA,QACzB;AACD,sBAAc;AAAA,MACf;AACD,YAAM,SAAS,YAAY,YAAY,QAAQ,OAAO,IAAI,CAAC;AAC3D,oBAAc;AAAA,IACf;AAAA,EACF;AAAA,EACD,OAAO,SAASrF,OAAM;AACpB,WAAO,IAAI,iBAAiBA,MAAK,WAAWA,MAAK,cAAcA,MAAK,QAAQA,MAAK,gBAAgBA,MAAK,gBAAgBA,MAAK,WAAWA,MAAK,YAAYA,MAAK,WAAW;AAAA,EACxK;AACH;AACA,MAAM,qBAAqB,iBAAiB;AAAA,EAC1C,YAAY,SAAS,GAAG,SAAS,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,YAAY,OAAO,aAAa,GAAG,cAAc,KAAK,KAAK,GAAG;AACxI,UAAM,GAAG,QAAQ,QAAQ,gBAAgB,gBAAgB,WAAW,YAAY,WAAW;AAC3F,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACG;AAAA,EACD,OAAO,SAASA,OAAM;AACpB,WAAO,IAAI,aAAaA,MAAK,QAAQA,MAAK,QAAQA,MAAK,gBAAgBA,MAAK,gBAAgBA,MAAK,WAAWA,MAAK,YAAYA,MAAK,WAAW;AAAA,EAC9I;AACH;AACA,MAAM,2BAA2B,eAAe;AAAA,EAC9C,YAAY,WAAW,CAAA,GAAI,UAAU,CAAE,GAAE,SAAS,GAAG,SAAS,GAAG;AAC/D;AACA,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,UAAM,eAAe,CAAA;AACrB,UAAM,WAAW,CAAA;AACjB,cAAU,MAAM;AAChB,gBAAY,MAAM;AAClB;AACA,SAAK,aAAa,YAAY,IAAI,uBAAuB,cAAc,CAAC,CAAC;AACzE,SAAK,aAAa,UAAU,IAAI,uBAAuB,aAAa,MAAK,GAAI,CAAC,CAAC;AAC/E,SAAK,aAAa,MAAM,IAAI,uBAAuB,UAAU,CAAC,CAAC;AAC/D,QAAI,WAAW,GAAG;AAChB,WAAK,qBAAoB;AAAA,IAC/B,OAAW;AACL,WAAK,iBAAgB;AAAA,IACtB;AACD,aAAS,UAAU,SAAS;AAC1B,YAAM,IAAI,IAAIqF;AACd,YAAM,IAAI,IAAIA;AACd,YAAM,IAAI,IAAIA;AACd,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1C,yBAAiB,QAAQ,IAAI,IAAI,CAAC;AAClC,yBAAiB,QAAQ,IAAI,IAAI,CAAC;AAClC,yBAAiB,QAAQ,IAAI,IAAI,CAAC;AAClC,sBAAc,GAAG,GAAG,GAAG,OAAO;AAAA,MAC/B;AAAA,IACF;AACD,aAAS,cAAc,GAAG,GAAG,GAAG,SAAS;AACvC,YAAM,OAAO,UAAU;AACvB,YAAM,IAAI,CAAA;AACV,eAAS,IAAI,GAAG,KAAK,MAAM,KAAK;AAC9B,UAAE,KAAK;AACP,cAAM,KAAK,EAAE,MAAO,EAAC,KAAK,GAAG,IAAI,IAAI;AACrC,cAAM,KAAK,EAAE,MAAO,EAAC,KAAK,GAAG,IAAI,IAAI;AACrC,cAAM,OAAO,OAAO;AACpB,iBAAS,IAAI,GAAG,KAAK,MAAM,KAAK;AAC9B,cAAI,MAAM,KAAK,MAAM,MAAM;AACzB,cAAE,GAAG,KAAK;AAAA,UACtB,OAAiB;AACL,cAAE,GAAG,KAAK,GAAG,MAAO,EAAC,KAAK,IAAI,IAAI,IAAI;AAAA,UACvC;AAAA,QACF;AAAA,MACF;AACD,eAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,iBAAS,IAAI,GAAG,IAAI,KAAK,OAAO,KAAK,GAAG,KAAK;AAC3C,gBAAM,IAAI,KAAK,MAAM,IAAI,CAAC;AAC1B,cAAI,IAAI,MAAM,GAAG;AACf,uBAAW,EAAE,GAAG,IAAI,EAAE;AACtB,uBAAW,EAAE,IAAI,GAAG,EAAE;AACtB,uBAAW,EAAE,GAAG,EAAE;AAAA,UAC9B,OAAiB;AACL,uBAAW,EAAE,GAAG,IAAI,EAAE;AACtB,uBAAW,EAAE,IAAI,GAAG,IAAI,EAAE;AAC1B,uBAAW,EAAE,IAAI,GAAG,EAAE;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACD,aAAS,YAAY,SAAS;AAC5B,YAAM,UAAU,IAAIA;AACpB,eAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK,GAAG;AAC/C,gBAAQ,IAAI,aAAa,IAAI;AAC7B,gBAAQ,IAAI,aAAa,IAAI;AAC7B,gBAAQ,IAAI,aAAa,IAAI;AAC7B,gBAAQ,UAAS,EAAG,eAAe,OAAO;AAC1C,qBAAa,IAAI,KAAK,QAAQ;AAC9B,qBAAa,IAAI,KAAK,QAAQ;AAC9B,qBAAa,IAAI,KAAK,QAAQ;AAAA,MAC/B;AAAA,IACF;AACD,aAAS,cAAc;AACrB,YAAM,UAAU,IAAIA;AACpB,eAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK,GAAG;AAC/C,gBAAQ,IAAI,aAAa,IAAI;AAC7B,gBAAQ,IAAI,aAAa,IAAI;AAC7B,gBAAQ,IAAI,aAAa,IAAI;AAC7B,cAAM,IAAI,QAAQ,OAAO,IAAI,IAAI,KAAK,KAAK;AAC3C,cAAM,IAAI,YAAY,OAAO,IAAI,KAAK,KAAK;AAC3C,iBAAS,KAAK,GAAG,IAAI,CAAC;AAAA,MACvB;AACD;AACA;IACD;AACD,aAAS,cAAc;AACrB,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;AAC3C,cAAM,KAAK,SAAS,IAAI;AACxB,cAAM,KAAK,SAAS,IAAI;AACxB,cAAM,KAAK,SAAS,IAAI;AACxB,cAAMJ,OAAM,KAAK,IAAI,IAAI,IAAI,EAAE;AAC/B,cAAMD,OAAM,KAAK,IAAI,IAAI,IAAI,EAAE;AAC/B,YAAIC,OAAM,OAAOD,OAAM,KAAK;AAC1B,cAAI,KAAK;AACP,qBAAS,IAAI,MAAM;AACrB,cAAI,KAAK;AACP,qBAAS,IAAI,MAAM;AACrB,cAAI,KAAK;AACP,qBAAS,IAAI,MAAM;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AACD,aAAS,WAAW,SAAS;AAC3B,mBAAa,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAAA,IAClD;AACD,aAAS,iBAAiB,OAAO,SAAS;AACxC,YAAM,SAAS,QAAQ;AACvB,cAAQ,IAAI,SAAS,SAAS;AAC9B,cAAQ,IAAI,SAAS,SAAS;AAC9B,cAAQ,IAAI,SAAS,SAAS;AAAA,IAC/B;AACD,aAAS,aAAa;AACpB,YAAM,IAAI,IAAIK;AACd,YAAM,IAAI,IAAIA;AACd,YAAM,IAAI,IAAIA;AACd,YAAM,WAAW,IAAIA;AACrB,YAAM,MAAM,IAAIF;AAChB,YAAM,MAAM,IAAIA;AAChB,YAAM,MAAM,IAAIA;AAChB,eAAS,IAAI,GAAG,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK,GAAG,KAAK,GAAG;AAC9D,UAAE,IAAI,aAAa,IAAI,IAAI,aAAa,IAAI,IAAI,aAAa,IAAI,EAAE;AACnE,UAAE,IAAI,aAAa,IAAI,IAAI,aAAa,IAAI,IAAI,aAAa,IAAI,EAAE;AACnE,UAAE,IAAI,aAAa,IAAI,IAAI,aAAa,IAAI,IAAI,aAAa,IAAI,EAAE;AACnE,YAAI,IAAI,SAAS,IAAI,IAAI,SAAS,IAAI,EAAE;AACxC,YAAI,IAAI,SAAS,IAAI,IAAI,SAAS,IAAI,EAAE;AACxC,YAAI,IAAI,SAAS,IAAI,IAAI,SAAS,IAAI,EAAE;AACxC,iBAAS,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC;AAC7C,cAAM,MAAM,QAAQ,QAAQ;AAC5B,kBAAU,KAAK,IAAI,GAAG,GAAG,GAAG;AAC5B,kBAAU,KAAK,IAAI,GAAG,GAAG,GAAG;AAC5B,kBAAU,KAAK,IAAI,GAAG,GAAG,GAAG;AAAA,MAC7B;AAAA,IACF;AACD,aAAS,UAAU,IAAI,QAAQ,QAAQ,UAAU;AAC/C,UAAI,WAAW,KAAK,GAAG,MAAM,GAAG;AAC9B,iBAAS,UAAU,GAAG,IAAI;AAAA,MAC3B;AACD,UAAI,OAAO,MAAM,KAAK,OAAO,MAAM,GAAG;AACpC,iBAAS,UAAU,WAAW,IAAI,KAAK,KAAK;AAAA,MAC7C;AAAA,IACF;AACD,aAAS,QAAQ,QAAQ;AACvB,aAAO,KAAK,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC;AAAA,IACtC;AACD,aAAS,YAAY,QAAQ;AAC3B,aAAO,KAAK,MAAM,CAAC,OAAO,GAAG,KAAK,KAAK,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC;AAAA,IAClF;AAAA,EACF;AAAA,EACD,OAAO,SAASnF,OAAM;AACpB,WAAO,IAAI,mBAAmBA,MAAK,UAAUA,MAAK,SAASA,MAAK,QAAQA,MAAK,OAAO;AAAA,EACrF;AACH;AACA,MAAM,6BAA6B,mBAAmB;AAAA,EACpD,YAAY,SAAS,GAAG,SAAS,GAAG;AAClC,UAAM,KAAK,IAAI,KAAK,KAAK,CAAC,KAAK;AAC/B,UAAM,IAAI,IAAI;AACd,UAAM,WAAW;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD,CAAC;AAAA,MACD;AAAA,MACA,CAAC;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD,CAAC;AAAA,MACD;AAAA,MACA,CAAC;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD;AAAA,MACA,CAAC;AAAA,MACD;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD,CAAC;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AACI,UAAM,UAAU,SAAS,QAAQ,MAAM;AACvC,SAAK,OAAO;A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EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,uBAAuB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,2BAA2B;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,0BAA0B;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,0BAA0B;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,oBAAoB;AAAA,EACpB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,qBAAqB;AAAA,E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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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"}