{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/webstudio/src/engine/constants.js","webpack:///./node_modules/webstudio/src/libs/gl-matrix.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/react/jsx-runtime.js","webpack:///./node_modules/webstudio/src/constants.js","webpack:///./node_modules/webstudio/src/engine/output.js","webpack:///./node_modules/webstudio/src/app_state.js","webpack:///./front/src/data/constants.ts","webpack:///./node_modules/webstudio/src/render_graph/passes/resolve_pass.js","webpack:///./node_modules/webstudio/src/client/window_manager.js","webpack:///./node_modules/webstudio/src/engine/events.js","webpack:///./node_modules/webstudio/src/cad_wrapper.js","webpack:///./node_modules/webstudio/src/photogroup_wrapper.js","webpack:///./node_modules/webstudio/src/section_measure_wrapper.js","webpack:///./node_modules/webstudio/src/engine/boundings.js","webpack:///./node_modules/webstudio/src/frame_wrapper.js","webpack:///./node_modules/webstudio/src/texture_correction.js","webpack:///./node_modules/webstudio/src/engine/loaders/zstd/zstd_encoder.js","webpack:///./node_modules/webstudio/src/engine/loaders/pln/pln_encoder.js","webpack:///./node_modules/webstudio/src/save_manager.js","webpack:///./node_modules/webstudio/src/distance_measure_wrapper.js","webpack:///./node_modules/webstudio/src/distance_map_wrapper.js","webpack:///./node_modules/webstudio/src/detached_wrapper.js","webpack:///./node_modules/webstudio/src/workspace.js","webpack:///./node_modules/webstudio/src/config.ts","webpack:///./node_modules/webstudio/src/reformer/property.js","webpack:///./node_modules/webstudio/src/engine/uniform.js","webpack:///./node_modules/webstudio/src/engine/factories/object.js","webpack:///./node_modules/artec-ui/lib/Tooltip/style.module.styl","webpack:///./node_modules/artec-ui/lib/Tooltip/index.js","webpack:///./node_modules/artec-ui/lib/Button/style.module.styl","webpack:///./node_modules/artec-ui/lib/Button/index.js","webpack:///./node_modules/artec-ui/lib/Form/index.js","webpack:///./node_modules/artec-ui/lib/UserPic/style.module.styl","webpack:///./node_modules/artec-ui/lib/UserPic/index.js","webpack:///./node_modules/artec-ui/lib/Checkbox/style.module.styl","webpack:///./node_modules/artec-ui/lib/Checkbox/index.js","webpack:///./node_modules/artec-ui/lib/Dropdown/style.module.styl","webpack:///./node_modules/artec-ui/lib/ContextMenu/index.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","webpack:///./node_modules/@emotion/react/node_modules/stylis/dist/stylis.mjs","webpack:///./node_modules/@emotion/react/node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack:///./node_modules/@emotion/react/_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/hash/dist/emotion-hash.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","webpack:///./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","webpack:///./node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js","webpack:///./node_modules/@emotion/react/dist/emotion-react.browser.esm.js","webpack:///./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack:///./node_modules/artec-ui/node_modules/react-select/dist/index-b19cc27c.browser.esm.js","webpack:///./node_modules/artec-ui/node_modules/react-select/dist/Select-0b2b7701.browser.esm.js","webpack:///./node_modules/artec-ui/node_modules/react-select/dist/stateManager-ffc9d993.browser.esm.js","webpack:///./node_modules/artec-ui/node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","webpack:///./node_modules/artec-ui/node_modules/stylis/dist/stylis.mjs","webpack:///./node_modules/artec-ui/node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js","webpack:///./node_modules/artec-ui/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack:///./node_modules/artec-ui/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./node_modules/artec-ui/node_modules/react-select/dist/react-select.browser.esm.js","webpack:///./node_modules/artec-ui/lib/Select/style.module.styl","webpack:///./node_modules/artec-ui/lib/Select/index.js","webpack:///./node_modules/react-number-format/dist/react-number-format.es.js","webpack:///./node_modules/artec-ui/lib/Input/style.module.styl","webpack:///./node_modules/artec-ui/lib/Input/index.js","webpack:///./node_modules/artec-ui/lib/Range/style.module.styl","webpack:///./node_modules/artec-ui/lib/Range/index.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/helpers/alpha.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/helpers/checkboard.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/common/Checkboard.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/common/Alpha.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/common/EditableInput.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/helpers/hue.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/common/Hue.js","webpack:///./node_modules/lodash-es/_assignMergeValue.js","webpack:///./node_modules/lodash-es/_createBaseFor.js","webpack:///./node_modules/lodash-es/_baseFor.js","webpack:///./node_modules/lodash-es/isArrayLikeObject.js","webpack:///./node_modules/lodash-es/isPlainObject.js","webpack:///./node_modules/lodash-es/_safeGet.js","webpack:///./node_modules/lodash-es/toPlainObject.js","webpack:///./node_modules/lodash-es/_baseMergeDeep.js","webpack:///./node_modules/lodash-es/_baseMerge.js","webpack:///./node_modules/lodash-es/identity.js","webpack:///./node_modules/lodash-es/_apply.js","webpack:///./node_modules/lodash-es/_overRest.js","webpack:///./node_modules/lodash-es/constant.js","webpack:///./node_modules/lodash-es/_baseSetToString.js","webpack:///./node_modules/lodash-es/_shortOut.js","webpack:///./node_modules/lodash-es/_setToString.js","webpack:///./node_modules/lodash-es/_baseRest.js","webpack:///./node_modules/lodash-es/_isIterateeCall.js","webpack:///./node_modules/lodash-es/_createAssigner.js","webpack:///./node_modules/lodash-es/merge.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/common/Raised.js","webpack:///./node_modules/lodash-es/now.js","webpack:///./node_modules/lodash-es/_trimmedEndIndex.js","webpack:///./node_modules/lodash-es/_baseTrim.js","webpack:///./node_modules/lodash-es/toNumber.js","webpack:///./node_modules/lodash-es/debounce.js","webpack:///./node_modules/lodash-es/throttle.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/helpers/saturation.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/common/Saturation.js","webpack:///./node_modules/lodash-es/_baseForOwn.js","webpack:///./node_modules/lodash-es/_createBaseEach.js","webpack:///./node_modules/lodash-es/_baseEach.js","webpack:///./node_modules/lodash-es/_castFunction.js","webpack:///./node_modules/lodash-es/forEach.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/helpers/color.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/common/ColorWrap.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/helpers/interaction.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/common/Swatch.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/alpha/AlphaPointer.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/alpha/Alpha.js","webpack:///./node_modules/lodash-es/_setCacheAdd.js","webpack:///./node_modules/lodash-es/_setCacheHas.js","webpack:///./node_modules/lodash-es/_SetCache.js","webpack:///./node_modules/lodash-es/_arraySome.js","webpack:///./node_modules/lodash-es/_cacheHas.js","webpack:///./node_modules/lodash-es/_equalArrays.js","webpack:///./node_modules/lodash-es/_mapToArray.js","webpack:///./node_modules/lodash-es/_setToArray.js","webpack:///./node_modules/lodash-es/_equalByTag.js","webpack:///./node_modules/lodash-es/_equalObjects.js","webpack:///./node_modules/lodash-es/_baseIsEqualDeep.js","webpack:///./node_modules/lodash-es/_baseIsEqual.js","webpack:///./node_modules/lodash-es/_baseIsMatch.js","webpack:///./node_modules/lodash-es/_isStrictComparable.js","webpack:///./node_modules/lodash-es/_getMatchData.js","webpack:///./node_modules/lodash-es/_matchesStrictComparable.js","webpack:///./node_modules/lodash-es/_baseMatches.js","webpack:///./node_modules/lodash-es/_isKey.js","webpack:///./node_modules/lodash-es/_castPath.js","webpack:///./node_modules/lodash-es/_baseGet.js","webpack:///./node_modules/lodash-es/get.js","webpack:///./node_modules/lodash-es/_baseHasIn.js","webpack:///./node_modules/lodash-es/_hasPath.js","webpack:///./node_modules/lodash-es/hasIn.js","webpack:///./node_modules/lodash-es/_baseMatchesProperty.js","webpack:///./node_modules/lodash-es/_baseProperty.js","webpack:///./node_modules/lodash-es/_basePropertyDeep.js","webpack:///./node_modules/lodash-es/property.js","webpack:///./node_modules/lodash-es/_baseIteratee.js","webpack:///./node_modules/lodash-es/_baseMap.js","webpack:///./node_modules/lodash-es/map.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/block/BlockSwatches.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/block/Block.js","webpack:///./node_modules/material-colors/dist/colors.es2015.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/circle/CircleSwatch.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/circle/Circle.js","webpack:///./node_modules/lodash-es/isUndefined.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/chrome/ChromeFields.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/chrome/ChromePointer.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/chrome/ChromePointerCircle.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/chrome/Chrome.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/compact/CompactColor.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/compact/CompactFields.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/compact/Compact.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/github/GithubSwatch.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/github/Github.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/hue/HuePointer.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/hue/Hue.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/material/Material.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/photoshop/PhotoshopFields.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/photoshop/PhotoshopPointerCircle.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/photoshop/PhotoshopPointer.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/photoshop/PhotoshopButton.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/photoshop/PhotoshopPreviews.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/photoshop/Photoshop.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/sketch/SketchFields.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/sketch/SketchPresetColors.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/sketch/Sketch.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/slider/SliderSwatch.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/slider/SliderSwatches.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/slider/SliderPointer.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/slider/Slider.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/swatches/SwatchesColor.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/swatches/SwatchesGroup.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/swatches/Swatches.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/twitter/Twitter.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/google/GooglePointerCircle.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/google/GooglePointer.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/google/GoogleFields.js","webpack:///./node_modules/artec-ui/node_modules/react-color/es/components/google/Google.js","webpack:///./node_modules/artec-ui/lib/ColorPicker/style.module.styl","webpack:///./node_modules/artec-ui/lib/ColorPicker/index.js","webpack:///./node_modules/artec-ui/lib/Dropdown/index.js","webpack:///./node_modules/artec-ui/lib/Radiobutton/style.module.styl","webpack:///./node_modules/artec-ui/lib/Radiobutton/index.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack:///./node_modules/substyle/es6/utils.js","webpack:///./node_modules/substyle/es6/filterKeys.js","webpack:///./node_modules/substyle/es6/pickStyles.js","webpack:///./node_modules/substyle/es6/defaultPropsDecorator.js","webpack:///./node_modules/substyle/es6/PropsDecoratorProvider.js","webpack:///./node_modules/substyle/es6/coerceSelection.js","webpack:///./node_modules/substyle/es6/memoize.js","webpack:///./node_modules/substyle/es6/createSubstyle.js","webpack:///./node_modules/substyle/es6/useStyles.js","webpack:///./node_modules/substyle/es6/index.js","webpack:///./node_modules/substyle/es6/inline.js","webpack:///./node_modules/react-mentions/dist/react-mentions.esm.js","webpack:///./node_modules/artec-ui/lib/Mentions/style.module.styl","webpack:///./node_modules/artec-ui/lib/Mentions/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack:///./node_modules/rc-util/es/Children/toArray.js","webpack:///./node_modules/rc-util/es/Dom/findDOMNode.js","webpack:///./node_modules/rc-util/es/hooks/useMemo.js","webpack:///./node_modules/rc-util/es/ref.js","webpack:///./node_modules/rc-motion/es/util/motion.js","webpack:///./node_modules/rc-motion/es/interface.js","webpack:///./node_modules/rc-util/es/raf.js","webpack:///./node_modules/rc-motion/es/hooks/useNextFrame.js","webpack:///./node_modules/rc-motion/es/hooks/useIsomorphicLayoutEffect.js","webpack:///./node_modules/rc-motion/es/hooks/useStepQueue.js","webpack:///./node_modules/rc-motion/es/hooks/useDomMotionEvents.js","webpack:///./node_modules/rc-motion/es/hooks/useStatus.js","webpack:///./node_modules/rc-motion/es/DomWrapper.js","webpack:///./node_modules/rc-motion/es/CSSMotion.js","webpack:///./node_modules/rc-motion/es/util/diff.js","webpack:///./node_modules/rc-motion/es/CSSMotionList.js","webpack:///./node_modules/rc-motion/es/index.js","webpack:///./node_modules/rc-collapse/es/PanelContent.js","webpack:///./node_modules/rc-collapse/es/Panel.js","webpack:///./node_modules/rc-collapse/es/Collapse.js","webpack:///./node_modules/rc-collapse/es/index.js","webpack:///./node_modules/artec-ui/lib/Accordion/style.module.styl","webpack:///./node_modules/artec-ui/lib/Accordion/motion.js","webpack:///./node_modules/artec-ui/lib/Accordion/index.js","webpack:///./node_modules/artec-ui/lib/MultilevelDrop/style.module.styl","webpack:///./node_modules/artec-ui/lib/MultilevelDrop/item.module.styl","webpack:///./node_modules/artec-ui/lib/MultilevelDrop/Item.js","webpack:///./node_modules/artec-ui/lib/MultilevelDrop/submenu.module.styl","webpack:///./node_modules/artec-ui/lib/MultilevelDrop/Submenu.js","webpack:///./node_modules/artec-ui/lib/MultilevelDrop/divider.module.styl","webpack:///./node_modules/artec-ui/lib/MultilevelDrop/Divider.js","webpack:///./node_modules/artec-ui/lib/MultilevelDrop/index.js","webpack:///./node_modules/artec-ui/lib/OverTooltip/style.module.styl","webpack:///./node_modules/artec-ui/lib/OverTooltip/index.js","webpack:///./node_modules/webstudio/src/libs/corto/corto.js","webpack:///./node_modules/webstudio/src/engine/loaders/corto/corto_loader.js","webpack:///./node_modules/webstudio/src/engine/loaders/pln/pln_loader.js","webpack:///./node_modules/webstudio/src/client/image.js","webpack:///./node_modules/webstudio/src/client/AbortController.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/external_loader.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/obj/obj_common.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/utils.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/obj/obj_loader.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/stl/stl_common.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/stl/stl_loader.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/ply/ply_common.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/ply/ply_loader.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/vrml_loader.js","webpack:///./node_modules/webstudio/src/engine/fake_blob.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/gltf_loader.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/usd/usd_loader.js","webpack:///./node_modules/webstudio/src/loader.js","webpack:///./node_modules/webstudio/src/engine/factories/primitive.js","webpack:///./node_modules/webstudio/src/client/utils.js","webpack:///./node_modules/webstudio/src/engine/context/gl.js","webpack:///./node_modules/webstudio/src/engine/gl.js","webpack:///./node_modules/webstudio/src/client/project_content.ts","webpack:///./node_modules/webstudio/src/reformer/project_tree.js","webpack:///./node_modules/webstudio/src/engine/ipc.js","webpack:///./node_modules/webstudio/node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/webstudio/node_modules/uuid/dist/esm-browser/regex.js","webpack:///./node_modules/webstudio/node_modules/uuid/dist/esm-browser/validate.js","webpack:///./node_modules/webstudio/node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/webstudio/node_modules/uuid/dist/esm-browser/v1.js","webpack:///./node_modules/webstudio/src/utils.js","webpack:///./node_modules/webstudio/src/engine/octree/octree_combiner.js","webpack:///./node_modules/webstudio/src/engine/data_builders/half_edges.js","webpack:///./node_modules/webstudio/src/engine/data_builders/octree_builder.js","webpack:///./node_modules/webstudio/src/engine/data_builders/border_builder.js","webpack:///./node_modules/webstudio/src/engine/geometry.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/webstudio/src/engine/utility/minmax.js","webpack:///./node_modules/webstudio/src/engine/framebuffer.js","webpack:///./node_modules/webstudio/src/render_graph/resource_manager.js","webpack:///./node_modules/webstudio/src/shaders/surfels_normalization/surfels_normalization.js","webpack:///./node_modules/webstudio/src/render_graph/passes/main_pass.js","webpack:///./node_modules/webstudio/src/render_graph/passes/interface_pass.js","webpack:///./node_modules/webstudio/src/shaders/update_depth/update_depth.js","webpack:///./node_modules/webstudio/src/render_graph/passes/grid_pass.js","webpack:///./node_modules/webstudio/src/render_graph/passes/mirror_pass.js","webpack:///./node_modules/webstudio/src/render_graph/passes/read_color_pass.js","webpack:///./node_modules/webstudio/src/shaders/wireframe/wireframe.js","webpack:///./node_modules/webstudio/src/render_graph/passes/wireframe_pass.js","webpack:///./node_modules/webstudio/src/render_graph/passes/transform_pass.js","webpack:///./node_modules/webstudio/src/render_graph/passes/viewcube_pass.js","webpack:///./node_modules/webstudio/src/shaders/selection/selection_interface.js","webpack:///./node_modules/webstudio/src/shaders/selection/selection_mask.js","webpack:///./node_modules/webstudio/src/shaders/selection/blending.js","webpack:///./node_modules/webstudio/src/render_graph/passes/selection_pass.js","webpack:///./node_modules/webstudio/src/shaders/fxaa/fxaa.js","webpack:///./node_modules/webstudio/src/render_graph/passes/antialiasing_pass.js","webpack:///./node_modules/webstudio/src/render_graph/passes/lasso_pass.js","webpack:///./node_modules/webstudio/src/shaders/vignette/vignette.js","webpack:///./node_modules/webstudio/src/shaders/color_balance/color_balance.js","webpack:///./node_modules/webstudio/src/shaders/grain/grain.js","webpack:///./node_modules/webstudio/src/shaders/sharpness/sharpness.js","webpack:///./node_modules/webstudio/src/render_graph/passes/post_effect_pass.js","webpack:///./node_modules/webstudio/src/render_graph/passes/copy_pass.js","webpack:///./node_modules/webstudio/src/render_graph/passes/background_pass.js","webpack:///./node_modules/webstudio/src/render_graph/passes/measure_lines_pass.js","webpack:///./node_modules/webstudio/src/render_graph/passes/compare_draw_pass.js","webpack:///./node_modules/webstudio/src/render_graph/passes/compare_mix_pass.js","webpack:///./node_modules/webstudio/src/render_graph/passes/photos_pass.js","webpack:///./node_modules/webstudio/src/render_graph/render_graph.js","webpack:///./node_modules/reactcss/lib/index.js","webpack:///./node_modules/artec-ui/node_modules/prop-types/index.js","webpack:///./node_modules/webstudio/src/client/project_content_types.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/react-mentions/node_modules/prop-types/index.js","webpack:///./node_modules/webstudio/src/engine/worker_manager.js","webpack:///./node_modules/webstudio/src/engine/extensions.js","webpack:///./node_modules/webstudio/src/engine/utility/arrays.js","webpack:///./node_modules/webstudio/src/engine/memory_profiler.js","webpack:///./front/src/helpers/formData.js","webpack:///./front/src/helpers/methods.js","webpack:///./node_modules/rxjs/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/webstudio/src/engine/gl_types.js","webpack:///./node_modules/webstudio/src/engine/intersect_evaluator.js","webpack:///./node_modules/artec-ui/node_modules/classnames/index.js","webpack:///./node_modules/webstudio/src/engine/shader_preprocessor.js","webpack:///./node_modules/webstudio/src/engine/hash.js","webpack:///./node_modules/webstudio/src/engine/shader.js","webpack:///./front/src/helpers/nullable.ts","webpack:///./node_modules/webstudio/src/render_graph/pass.js","webpack:///./node_modules/webstudio/src/engine/math.js","webpack:///./node_modules/webstudio/src/history/object_state.js","webpack:///./node_modules/webstudio/src/history/chunk_state.js","webpack:///./node_modules/webstudio/src/history/plane_state.js","webpack:///./node_modules/webstudio/src/history/manager.js","webpack:///./node_modules/webstudio/src/engine/data_builders/chunks_builder.js","webpack:///./node_modules/webstudio/src/obj_state.js","webpack:///./node_modules/webstudio/src/input.js","webpack:///./node_modules/webstudio/src/engine/camera.js","webpack:///./node_modules/webstudio/src/engine/factories/pixel_buffer.js","webpack:///./node_modules/webstudio/src/manipulators/libs/selector.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/webstudio/src/reformer/common/reformer.js","webpack:///./node_modules/webstudio/src/reformer/v5/reformer.js","webpack:///./node_modules/webstudio/src/reformer/v6/reformer.js","webpack:///./node_modules/webstudio/src/reformer/reformer.js","webpack:///./node_modules/webstudio/src/shaders/default/default_shader.js","webpack:///./node_modules/webstudio/src/shaders/copy/copy.js","webpack:///./node_modules/webstudio/src/engine/utility/attributes.js","webpack:///./node_modules/webstudio/src/client/materials/material_factory.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/rxjs/_esm5/internal/util/canReportError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/toSubscriber.js","webpack:///./node_modules/rxjs/_esm5/internal/util/pipe.js","webpack:///./node_modules/rxjs/_esm5/internal/Observable.js","webpack:///./node_modules/rxjs/_esm5/internal/Subscriber.js","webpack:///./node_modules/chevrotain/lib/src/api.js","webpack:///./node_modules/react-router/esm/react-router.js","webpack:///./node_modules/webstudio/src/engine/compat.js","webpack:///./node_modules/webstudio/src/shaders/line/line.js","webpack:///./node_modules/webstudio/src/client/controls/utils.js","webpack:///./node_modules/webstudio/src/engine/packers/abstract_packer.js","webpack:///./node_modules/webstudio/src/engine/packers/slicer.js","webpack:///./node_modules/webstudio/src/engine/packers/unzip/unzip_async.js","webpack:///./node_modules/webstudio/src/engine/packers/zipper.js","webpack:///./node_modules/webstudio/src/engine/packers/containers_cache.js","webpack:///./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js","webpack:///./node_modules/rxjs/_esm5/internal/Subscription.js","webpack:///./node_modules/@chevrotain/gast/lib/src/api.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack:///./node_modules/webstudio/src/client/input.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/lodash-es/isArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/webstudio/src/engine/renderer.js","webpack:///./front/src/helpers/pointerEvents/helpers.ts","webpack:///./node_modules/lodash-es/isObject.js","webpack:///./node_modules/webstudio/src/client/screenshot.js","webpack:///./node_modules/webstudio/src/common_facade.js","webpack:///./node_modules/lodash/forEach.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/webstudio/src/client/buffer_reader.js","webpack:///./node_modules/lodash-es/_root.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/map.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./node_modules/webstudio/src/engine/loaders/downloader.js","webpack:///./node_modules/rxjs/_esm5/internal/config.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/has.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/chevrotain/lib/src/parse/parser/parser.js","webpack:///./node_modules/threads/dist-esm/symbols.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js","webpack:///./node_modules/rxjs/_esm5/internal/OuterSubscriber.js","webpack:///./node_modules/webstudio/src/engine/worker_pool.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/webstudio/src/client/viewcube.js","webpack:///./node_modules/react-dom/index.js","webpack:///./front/src/helpers/rx.js","webpack:///./front/src/helpers/pointerEvents/constants.ts","webpack:///./node_modules/webstudio/src/player/split_compare.js","webpack:///./node_modules/webstudio/src/player/facade.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash-es/isObjectLike.js","webpack:///./node_modules/webstudio/src/shaders/screen/screen.js","webpack:///./node_modules/react-router-dom/esm/react-router-dom.js","webpack:///./node_modules/webstudio/src/common_api.js","webpack:///./node_modules/lodash/isEmpty.js","webpack:///./node_modules/lodash/_baseIteratee.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/lodash-es/_coreJsData.js","webpack:///./node_modules/lodash-es/_isMasked.js","webpack:///./node_modules/lodash-es/_baseIsNative.js","webpack:///./node_modules/lodash-es/_getValue.js","webpack:///./node_modules/lodash-es/_getNative.js","webpack:///./node_modules/rxjs/_esm5/internal/symbol/observable.js","webpack:///./node_modules/webstudio/src/wrapper.js","webpack:///./node_modules/webstudio/src/client/animation.js","webpack:///./node_modules/webstudio/src/engine/chunk.js","webpack:///./node_modules/webstudio/src/shaders/pbr/pbr.js","webpack:///./node_modules/webstudio/src/client/materials/material.js","webpack:///./front/src/data/types/share.ts","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash-es/_getRawTag.js","webpack:///./node_modules/lodash-es/_objectToString.js","webpack:///./node_modules/lodash-es/_baseGetTag.js","webpack:///./node_modules/lodash-es/_Symbol.js","webpack:///./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack:///./node_modules/lodash/values.js","webpack:///./node_modules/rxjs/_esm5/internal/symbol/iterator.js","webpack:///./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack:///./node_modules/value-equal/esm/value-equal.js","webpack:///./node_modules/history/esm/history.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/flatten.js","webpack:///./node_modules/rxjs/_esm5/internal/util/hostReportError.js","webpack:///./node_modules/lodash-es/isArrayLike.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/webstudio/src/object_wrapper.js","webpack:///./node_modules/webstudio/src/client/cache.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/throwError.js","webpack:///./node_modules/webstudio/src/client/database.js","webpack:///./node_modules/lodash/clone.js","webpack:///./node_modules/lodash/includes.js","webpack:///./node_modules/webstudio/src/engine/loaders/utils.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/async.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack:///./node_modules/webstudio/src/shaders/outline/outline.js","webpack:///./node_modules/webstudio/src/monitoring.js","webpack:///./node_modules/threads/dist-esm/serializers.js","webpack:///./node_modules/threads/dist-esm/common.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_baseEach.js","webpack:///./node_modules/webstudio/src/loading_progress.js","webpack:///./node_modules/webstudio/src/client/controls/target_control.js","webpack:///./node_modules/webstudio/src/client/controls/trackball.js","webpack:///./node_modules/lodash-es/eq.js","webpack:///./node_modules/webstudio/src/engine/drawable.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/lodash/reduce.js","webpack:///./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js","webpack:///./node_modules/threads/dist-esm/master/get-bundle-url.browser.js","webpack:///./node_modules/threads/dist-esm/master/implementation.browser.js","webpack:///./node_modules/threads/dist-esm/master/index.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/keysIn.js","webpack:///./front/src/helpers/fetch.js","webpack:///./node_modules/rxjs/_esm5/internal/InnerSubscriber.js","webpack:///./node_modules/lodash-es/_toSource.js","webpack:///./node_modules/lodash/_toKey.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isArray.js","webpack:///./node_modules/lodash-es/isSymbol.js","webpack:///./node_modules/lodash-es/_toKey.js","webpack:///./node_modules/lodash-es/_stackClear.js","webpack:///./node_modules/lodash-es/_stackDelete.js","webpack:///./node_modules/lodash-es/_stackGet.js","webpack:///./node_modules/lodash-es/_stackHas.js","webpack:///./node_modules/lodash-es/_stackSet.js","webpack:///./node_modules/lodash-es/_Stack.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/chevrotain/lib/src/scan/tokens_public.js","webpack:///./node_modules/lodash/isUndefined.js","webpack:///./node_modules/chevrotain/lib/src/scan/tokens.js","webpack:///./node_modules/webstudio/src/engine/object.js","webpack:///./node_modules/fflate/esm/browser.js","webpack:///./node_modules/webstudio/src/groupable_wrapper.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isFunction.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./node_modules/webstudio/src/shaders/blur/blur.js","webpack:///./node_modules/rxjs/_esm5/internal/Observer.js","webpack:///./node_modules/threads/dist-esm/types/messages.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash-es/_listCacheClear.js","webpack:///./node_modules/lodash-es/_assocIndexOf.js","webpack:///./node_modules/lodash-es/_listCacheDelete.js","webpack:///./node_modules/lodash-es/_listCacheGet.js","webpack:///./node_modules/lodash-es/_listCacheHas.js","webpack:///./node_modules/lodash-es/_listCacheSet.js","webpack:///./node_modules/lodash-es/_ListCache.js","webpack:///./node_modules/webstudio/src/client/controls/orbit.js","webpack:///./node_modules/webstudio/src/client/controls/control_factory.js","webpack:///./node_modules/lodash-es/_Map.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isScheduler.js","webpack:///./node_modules/lodash-es/isBuffer.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/isString.js","webpack:///./node_modules/lodash-es/_nativeKeys.js","webpack:///./node_modules/lodash-es/_baseKeys.js","webpack:///./node_modules/lodash-es/keys.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/util.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/@chevrotain/utils/lib/src/api.js","webpack:///./node_modules/lodash/toInteger.js","webpack:///./node_modules/lodash/first.js","webpack:///./node_modules/chevrotain/lib/src/parse/errors_public.js","webpack:///./node_modules/chevrotain/lib/src/parse/grammar/lookahead.js","webpack:///./node_modules/chevrotain/lib/src/parse/exceptions_public.js","webpack:///./node_modules/webstudio/src/render_graph/passes/highlight_pass.js","webpack:///./node_modules/webstudio/src/engine/loaders/zstd/zstd_loader.js","webpack:///./node_modules/rc-collapse/node_modules/classnames/index.js","webpack:///./node_modules/lodash-es/_nativeCreate.js","webpack:///./node_modules/lodash-es/_hashClear.js","webpack:///./node_modules/lodash-es/_hashDelete.js","webpack:///./node_modules/lodash-es/_hashGet.js","webpack:///./node_modules/lodash-es/_hashHas.js","webpack:///./node_modules/lodash-es/_hashSet.js","webpack:///./node_modules/lodash-es/_Hash.js","webpack:///./node_modules/lodash-es/_mapCacheClear.js","webpack:///./node_modules/lodash-es/_isKeyable.js","webpack:///./node_modules/lodash-es/_getMapData.js","webpack:///./node_modules/lodash-es/_mapCacheDelete.js","webpack:///./node_modules/lodash-es/_mapCacheGet.js","webpack:///./node_modules/lodash-es/_mapCacheHas.js","webpack:///./node_modules/lodash-es/_mapCacheSet.js","webpack:///./node_modules/lodash-es/_MapCache.js","webpack:///./node_modules/observable-fns/dist.esm/_symbols.js","webpack:///./node_modules/observable-fns/dist.esm/observable.js","webpack:///./node_modules/lodash-es/_baseIsArguments.js","webpack:///./node_modules/lodash-es/isArguments.js","webpack:///./node_modules/threads/dist-esm/types/master.js","webpack:///./node_modules/dxt-js/src/dxt.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_castPath.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isObject.js","webpack:///./node_modules/webstudio/src/engine/data_builders/normals_builder.js","webpack:///./node_modules/webstudio/src/client/decorator.js","webpack:///./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/map.js","webpack:///./node_modules/lodash-es/isFunction.js","webpack:///./node_modules/lodash-es/isLength.js","webpack:///./node_modules/lodash-es/_isIndex.js","webpack:///./node_modules/lodash-es/_baseAssignValue.js","webpack:///./node_modules/lodash-es/_isPrototype.js","webpack:///./node_modules/lodash-es/_nativeKeysIn.js","webpack:///./node_modules/lodash-es/_baseKeysIn.js","webpack:///./node_modules/lodash-es/keysIn.js","webpack:///./node_modules/lodash-es/_baseIsTypedArray.js","webpack:///./node_modules/lodash-es/isTypedArray.js","webpack:///./node_modules/rc-util/es/hooks/useState.js","webpack:///./node_modules/rxjs/_esm5/internal/util/noop.js","webpack:///./node_modules/lodash-es/_defineProperty.js","webpack:///./node_modules/lodash-es/_Uint8Array.js","webpack:///./node_modules/tinycolor2/cjs/tinycolor.js","webpack:///./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_isKey.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/lodash/assign.js","webpack:///./node_modules/lodash/every.js","webpack:///./node_modules/chevrotain/lib/src/scan/lexer_public.js","webpack:///./node_modules/lodash/compact.js","webpack:///./node_modules/chevrotain/lib/src/parse/grammar/checks.js","webpack:///./node_modules/chevrotain/lib/src/parse/grammar/interpreter.js","webpack:///./node_modules/webstudio/src/engine/loaders/zstd/zstd_empty.js","webpack:///./node_modules/webstudio/src/engine/loaders/loader_base.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isArrayLike.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isPromise.js","webpack:///./node_modules/webstudio/src/client/controls/camera_control.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeTo.js","webpack:///./front/src/helpers/SelectedStorageItemsSet/index.ts","webpack:///./node_modules/stacktrace-js/stacktrace.js","webpack:///./node_modules/threads/dist-esm/transferable.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeMap.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_baseGet.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/webstudio/src/shaders/circle/circle.js","webpack:///./node_modules/webstudio/src/client/widgets/rotation_indicator.js","webpack:///./node_modules/webstudio/src/client/controls/photo_control.js","webpack:///./node_modules/webstudio/src/engine/batcher.js","webpack:///./node_modules/webstudio/src/engine/scene.js","webpack:///./node_modules/shallowequal/index.js","webpack:///./node_modules/rc-util/es/Dom/canUseDom.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isNumeric.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/lodash-es/_DataView.js","webpack:///./node_modules/lodash-es/_Promise.js","webpack:///./node_modules/lodash-es/_Set.js","webpack:///./node_modules/lodash-es/_WeakMap.js","webpack:///./node_modules/lodash-es/_getTag.js","webpack:///./node_modules/lodash-es/_nodeUtil.js","webpack:///./node_modules/react-i18next/dist/es/context.js","webpack:///./node_modules/react-i18next/dist/es/utils.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/lodash-es/_getPrototype.js","webpack:///./node_modules/lodash-es/_copyObject.js","webpack:///./node_modules/lodash-es/_arrayMap.js","webpack:///./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js","webpack:///./node_modules/rxjs/_esm5/internal/SubjectSubscription.js","webpack:///./node_modules/rxjs/_esm5/internal/Subject.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/stackframe/stackframe.js","webpack:///./node_modules/rxjs/internal/config.js","webpack:///./node_modules/chevrotain/lib/src/parse/grammar/rest.js","webpack:///./node_modules/lodash/drop.js","webpack:///./node_modules/lodash/_baseSlice.js","webpack:///./node_modules/@chevrotain/gast/lib/src/model.js","webpack:///./node_modules/lodash/some.js","webpack:///./node_modules/lodash/_baseIndexOf.js","webpack:///./node_modules/lodash/_baseFlatten.js","webpack:///./node_modules/lodash/uniq.js","webpack:///./node_modules/lodash/noop.js","webpack:///./node_modules/regexp-to-ast/lib/regexp-to-ast.js","webpack:///./node_modules/lodash/reject.js","webpack:///./node_modules/lodash/difference.js","webpack:///./node_modules/lodash/find.js","webpack:///./node_modules/lodash/filter.js","webpack:///./node_modules/chevrotain/lib/src/scan/reg_exp_parser.js","webpack:///./node_modules/lodash/last.js","webpack:///./node_modules/lodash/dropRight.js","webpack:///./node_modules/chevrotain/lib/src/parse/grammar/keys.js","webpack:///./node_modules/threads/dist-esm/master/spawn.js","webpack:///./node_modules/threads/dist-esm/master/thread.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isIterable.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduled.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/from.js","webpack:///./node_modules/rxjs/_esm5/internal/Scheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/Action.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js","webpack:///./node_modules/observable-fns/dist.esm/subject.js","webpack:///./node_modules/observable-fns/dist.esm/unsubscribe.js","webpack:///./node_modules/observable-fns/dist.esm/multicast.js","webpack:///./node_modules/threads/dist-esm/observable-promise.js","webpack:///./node_modules/threads/dist-esm/master/invocation-proxy.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/timer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/finalize.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_isStrictComparable.js","webpack:///./node_modules/lodash/_matchesStrictComparable.js","webpack:///./node_modules/lodash/_baseForOwn.js","webpack:///./node_modules/lodash/_arrayEach.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_getSymbolsIn.js","webpack:///./node_modules/define-properties/index.js","webpack:///./node_modules/get-intrinsic/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/react-router/node_modules/prop-types/index.js","webpack:///./node_modules/lodash-es/_freeGlobal.js","webpack:///./node_modules/lodash-es/_overArg.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///./node_modules/lodash-es/_baseTimes.js","webpack:///./node_modules/lodash-es/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_hasPath.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/lodash/_getAllKeysIn.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isDate.js","webpack:///./node_modules/lodash-es/_getAllKeys.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./front/src/components/shared/ProgressCircular/style.module.styl","webpack:///./front/src/components/shared/ProgressCircular/index.jsx","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/lodash/_castFunction.js","webpack:///./node_modules/lodash/_baseClone.js","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/lodash-es/_baseUnary.js","webpack:///./node_modules/lodash-es/_copyArray.js","webpack:///./node_modules/lodash-es/_cloneArrayBuffer.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/lodash-es/_arrayFilter.js","webpack:///./node_modules/lodash-es/_getSymbols.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-generator.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64-vlq.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/array-set.js","webpack:///./node_modules/rxjs/internal/Subscriber.js","webpack:///./node_modules/rxjs/internal/util/isFunction.js","webpack:///./node_modules/rxjs/internal/Observer.js","webpack:///./node_modules/rxjs/internal/util/hostReportError.js","webpack:///./node_modules/rxjs/internal/symbol/rxSubscriber.js","webpack:///./node_modules/chevrotain/lib/src/version.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/lodash/isRegExp.js","webpack:///./node_modules/lodash/pickBy.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/lodash/_baseFindIndex.js","webpack:///./node_modules/chevrotain/lib/src/parse/grammar/first.js","webpack:///./node_modules/lodash/_arrayIncludes.js","webpack:///./node_modules/lodash/_arrayIncludesWith.js","webpack:///./node_modules/chevrotain/lib/src/parse/constants.js","webpack:///./node_modules/chevrotain/lib/src/scan/lexer.js","webpack:///./node_modules/lodash/_baseFilter.js","webpack:///./node_modules/lodash/isArrayLikeObject.js","webpack:///./node_modules/lodash/defaults.js","webpack:///./node_modules/chevrotain/lib/src/scan/lexer_errors_public.js","webpack:///./node_modules/lodash/groupBy.js","webpack:///./node_modules/lodash/flatMap.js","webpack:///./node_modules/chevrotain/lib/src/parse/parser/traits/recoverable.js","webpack:///./node_modules/chevrotain/lib/src/parse/grammar/llk_lookahead.js","webpack:///./node_modules/lodash/_hasUnicode.js","webpack:///./node_modules/react-range/lib/types.js","webpack:///./node_modules/lodash/forOwn.js","webpack:///./node_modules/function-bind/index.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/components/common/Checkboard.js","webpack:///./node_modules/artec-ui/node_modules/react-input-autosize/lib/AutosizeInput.js","webpack:///./node_modules/webstudio/src/shaders/surfels_normalization/surfels_normalization.glslv","webpack:///./node_modules/webstudio/src/shaders/surfels_normalization/surfels_normalization.glslf","webpack:///./node_modules/threads/dist-esm/promise.js","webpack:///./node_modules/webstudio/src/shaders/copy/copy.glslv","webpack:///./node_modules/webstudio/src/shaders/copy/copy.glslf","webpack:///./node_modules/webstudio/src/shaders/update_depth/update_depth.glslv","webpack:///./node_modules/webstudio/src/shaders/update_depth/update_depth.glslf","webpack:///./node_modules/webstudio/src/shaders/circle/circle.glslv","webpack:///./node_modules/webstudio/src/shaders/circle/circle.glslf","webpack:///./node_modules/webstudio/src/shaders/blur/blur.glslv","webpack:///./node_modules/webstudio/src/shaders/blur/blur.glslf","webpack:///./node_modules/webstudio/src/shaders/wireframe/wireframe.glslv","webpack:///./node_modules/webstudio/src/shaders/wireframe/wireframe.glslf","webpack:///./node_modules/webstudio/src/shaders/screen/screen.glslv","webpack:///./node_modules/webstudio/src/shaders/screen/screen.glslf","webpack:///./node_modules/webstudio/src/shaders/outline/outline.glslv","webpack:///./node_modules/webstudio/src/shaders/outline/outline.glslf","webpack:///./node_modules/webstudio/src/shaders/selection/selection_interface.glslv","webpack:///./node_modules/webstudio/src/shaders/selection/selection_interface.glslf","webpack:///./node_modules/webstudio/src/shaders/selection/selection_mask.glslv","webpack:///./node_modules/webstudio/src/shaders/selection/selection_mask.glslf","webpack:///./node_modules/webstudio/src/shaders/selection/blending.glslv","webpack:///./node_modules/webstudio/src/shaders/selection/blending.glslf","webpack:///./node_modules/webstudio/src/shaders/fxaa/fxaa.glslv","webpack:///./node_modules/webstudio/src/shaders/fxaa/fxaa.glslf","webpack:///./node_modules/webstudio/src/shaders/vignette/vignette.glslv","webpack:///./node_modules/webstudio/src/shaders/vignette/vignette.glslf","webpack:///./node_modules/webstudio/src/shaders/color_balance/color_balance.glslv","webpack:///./node_modules/webstudio/src/shaders/color_balance/color_balance.glslf","webpack:///./node_modules/webstudio/src/shaders/grain/grain.glslv","webpack:///./node_modules/webstudio/src/shaders/grain/grain.glslf","webpack:///./node_modules/webstudio/src/shaders/sharpness/sharpness.glslv","webpack:///./node_modules/webstudio/src/shaders/sharpness/sharpness.glslf","webpack:///./node_modules/webstudio/src/shaders/default/default.glslv","webpack:///./node_modules/webstudio/src/shaders/default/default.glslf","webpack:///./node_modules/webstudio/src/shaders/pbr/pbr.glslv","webpack:///./node_modules/webstudio/src/shaders/pbr/pbr.glslf","webpack:///./node_modules/rxjs/fetch/index.js","webpack:///./node_modules/webstudio/src/shaders/line/line.glslv","webpack:///./node_modules/webstudio/src/shaders/line/line.glslf","webpack:///./node_modules/webstudio/assets/textures/rotation_indicator.png","webpack:///./node_modules/webstudio/assets/textures/viewcube.png","webpack:///./node_modules/webstudio/assets/textures/edge_billboard.png","webpack:///./node_modules/webstudio/assets/textures/face_billboard.png","webpack:///./node_modules/webstudio/assets/textures/vertex_billboard.png","webpack:///./node_modules/webstudio/assets/textures/rotation_arrow.png","webpack:///./node_modules/webstudio/assets/meshes/viewcube.obj","webpack:///./node_modules/react-router/node_modules/mini-create-react-context/dist/esm/index.js","webpack:///./node_modules/react-router/node_modules/path-to-regexp/index.js","webpack:///./node_modules/react-range/lib/index.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/components/common/index.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./node_modules/lodash-es/_cloneBuffer.js","webpack:///./node_modules/lodash-es/_cloneTypedArray.js","webpack:///./node_modules/lodash-es/_assignValue.js","webpack:///./node_modules/lodash-es/_arrayEach.js","webpack:///./node_modules/lodash-es/_baseGetAllKeys.js","webpack:///./node_modules/lodash-es/_arrayPush.js","webpack:///./node_modules/lodash-es/stubArray.js","webpack:///./node_modules/lodash-es/memoize.js","webpack:///./node_modules/lodash-es/_memoizeCapped.js","webpack:///./node_modules/lodash-es/_stringToPath.js","webpack:///./node_modules/lodash-es/_baseToString.js","webpack:///./node_modules/lodash-es/toString.js","webpack:///./node_modules/lodash-es/_baseCreate.js","webpack:///./node_modules/lodash-es/_initCloneObject.js","webpack:///./node_modules/react-i18next/dist/es/useTranslation.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseMatches.js","webpack:///./node_modules/lodash/_baseIsMatch.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_getMatchData.js","webpack:///./node_modules/lodash/_baseMatchesProperty.js","webpack:///./node_modules/lodash/get.js","webpack:///./node_modules/lodash/_stringToPath.js","webpack:///./node_modules/lodash/_memoizeCapped.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/lodash/_baseToString.js","webpack:///./node_modules/lodash/hasIn.js","webpack:///./node_modules/lodash/_baseHasIn.js","webpack:///./node_modules/lodash/property.js","webpack:///./node_modules/lodash/_baseProperty.js","webpack:///./node_modules/lodash/_basePropertyDeep.js","webpack:///./node_modules/lodash/_baseMap.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_createBaseEach.js","webpack:///./node_modules/lodash/_baseAssign.js","webpack:///./node_modules/lodash/_baseAssignIn.js","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/lodash/_copySymbols.js","webpack:///./node_modules/lodash/_copySymbolsIn.js","webpack:///./node_modules/lodash/_initCloneArray.js","webpack:///./node_modules/lodash/_initCloneByTag.js","webpack:///./node_modules/lodash/_cloneDataView.js","webpack:///./node_modules/lodash/_cloneRegExp.js","webpack:///./node_modules/lodash/_cloneSymbol.js","webpack:///./node_modules/lodash/_baseCreate.js","webpack:///./node_modules/lodash/isMap.js","webpack:///./node_modules/lodash/_baseIsMap.js","webpack:///./node_modules/lodash/isSet.js","webpack:///./node_modules/lodash/_baseIsSet.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/clsx/dist/clsx.m.js","webpack:///./node_modules/lodash/_arrayReduce.js","webpack:///./node_modules/lodash/upperFirst.js","webpack:///./node_modules/lodash/_stringToArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack:///./node_modules/react-range/lib/utils.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/object-keys/isArguments.js","webpack:///./node_modules/call-bind/index.js","webpack:///./node_modules/object.values/implementation.js","webpack:///./node_modules/object.values/polyfill.js","webpack:///./node_modules/document.contains/implementation.js","webpack:///./node_modules/document.contains/polyfill.js","webpack:///./node_modules/lodash/_assignMergeValue.js","webpack:///./node_modules/lodash/_safeGet.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./front/src/components/EmbedPlayer/helpers.ts","webpack:///./node_modules/lodash-es/stubFalse.js","webpack:///./node_modules/@icons/material/UnfoldMoreHorizontalIcon.js","webpack:///./node_modules/@icons/material/CheckIcon.js","webpack:///./node_modules/artec-ui/node_modules/react-outside-click-handler/index.js","webpack:///./node_modules/rc-motion/node_modules/classnames/index.js","webpack:///./front/src/components/shared/FadeOutWrapper/style.module.styl","webpack:///./front/src/components/shared/FadeOutWrapper/index.tsx","webpack:///./node_modules/rxjs/_esm5/internal/operators/catchError.js","webpack:///./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/error-stack-parser/error-stack-parser.js","webpack:///./node_modules/stack-generator/stack-generator.js","webpack:///./node_modules/stacktrace-gps/stacktrace-gps.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/source-map.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/mapping-list.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-consumer.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/binary-search.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/quick-sort.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-node.js","webpack:///./node_modules/webstudio/src/engine/loaders/corto/corto_worker.js","webpack:///./node_modules/webstudio/src/engine/loaders/zstd/zstd_worker.js","webpack:///./node_modules/webstudio/src/engine/geometry_worker.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/ply/ply_worker.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/obj/obj_worker.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/stl/stl_worker.js","webpack:///./node_modules/webstudio/src/engine/loaders/external/usd/usd_worker.js","webpack:///./node_modules/debug/src/common.js","webpack:///./node_modules/debug/node_modules/ms/index.js","webpack:///./node_modules/dxt-js/src/squish.js","webpack:///./node_modules/rxjs/internal/observable/dom/fetch.js","webpack:///./node_modules/rxjs/internal/Observable.js","webpack:///./node_modules/rxjs/internal/util/canReportError.js","webpack:///./node_modules/rxjs/internal/Subscription.js","webpack:///./node_modules/rxjs/internal/util/isArray.js","webpack:///./node_modules/rxjs/internal/util/isObject.js","webpack:///./node_modules/rxjs/internal/util/UnsubscriptionError.js","webpack:///./node_modules/rxjs/internal/util/toSubscriber.js","webpack:///./node_modules/rxjs/internal/symbol/observable.js","webpack:///./node_modules/rxjs/internal/util/pipe.js","webpack:///./node_modules/rxjs/internal/util/noop.js","webpack:///./node_modules/lodash/_baseValues.js","webpack:///./node_modules/lodash/_baseHas.js","webpack:///./node_modules/@chevrotain/utils/lib/src/print.js","webpack:///./node_modules/@chevrotain/utils/lib/src/timer.js","webpack:///./node_modules/@chevrotain/utils/lib/src/to-fast-properties.js","webpack:///./node_modules/chevrotain/lib/src/parse/grammar/follow.js","webpack:///./node_modules/lodash/toFinite.js","webpack:///./node_modules/lodash/_baseIsRegExp.js","webpack:///./node_modules/lodash/_basePickBy.js","webpack:///./node_modules/lodash/_baseSet.js","webpack:///./node_modules/@chevrotain/gast/lib/src/visitor.js","webpack:///./node_modules/@chevrotain/gast/lib/src/helpers.js","webpack:///./node_modules/lodash/_baseSome.js","webpack:///./node_modules/lodash/_arrayEvery.js","webpack:///./node_modules/lodash/_baseEvery.js","webpack:///./node_modules/lodash/_baseIsNaN.js","webpack:///./node_modules/lodash/_strictIndexOf.js","webpack:///./node_modules/lodash/_isFlattenable.js","webpack:///./node_modules/lodash/_baseUniq.js","webpack:///./node_modules/lodash/_createSet.js","webpack:///./node_modules/lodash/head.js","webpack:///./node_modules/lodash/negate.js","webpack:///./node_modules/lodash/_baseDifference.js","webpack:///./node_modules/lodash/indexOf.js","webpack:///./node_modules/lodash/_createFind.js","webpack:///./node_modules/lodash/findIndex.js","webpack:///./node_modules/lodash/_baseReduce.js","webpack:///./node_modules/chevrotain/lib/src/scan/reg_exp.js","webpack:///./node_modules/chevrotain/lib/src/parse/grammar/gast/gast_resolver_public.js","webpack:///./node_modules/chevrotain/lib/src/parse/grammar/resolver.js","webpack:///./node_modules/lodash/_createAggregator.js","webpack:///./node_modules/lodash/_arrayAggregator.js","webpack:///./node_modules/lodash/_baseAggregator.js","webpack:///./node_modules/chevrotain/lib/src/parse/parser/traits/looksahead.js","webpack:///./node_modules/chevrotain/lib/src/parse/parser/traits/tree_builder.js","webpack:///./node_modules/chevrotain/lib/src/parse/cst/cst.js","webpack:///./node_modules/chevrotain/lib/src/parse/cst/cst_visitor.js","webpack:///./node_modules/chevrotain/lib/src/lang/lang_extensions.js","webpack:///./node_modules/chevrotain/lib/src/parse/parser/traits/lexer_adapter.js","webpack:///./node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_api.js","webpack:///./node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js","webpack:///./node_modules/chevrotain/lib/src/parse/parser/traits/error_handler.js","webpack:///./node_modules/chevrotain/lib/src/parse/parser/traits/context_assist.js","webpack:///./node_modules/chevrotain/lib/src/parse/parser/traits/gast_recorder.js","webpack:///./node_modules/chevrotain/lib/src/parse/parser/traits/perf_tracer.js","webpack:///./node_modules/chevrotain/lib/src/parse/parser/utils/apply_mixins.js","webpack:///./node_modules/@chevrotain/cst-dts-gen/lib/src/api.js","webpack:///./node_modules/@chevrotain/cst-dts-gen/lib/src/model.js","webpack:///./node_modules/@chevrotain/cst-dts-gen/lib/src/generate.js","webpack:///./node_modules/lodash/_createCaseFirst.js","webpack:///./node_modules/lodash/_castSlice.js","webpack:///./node_modules/lodash/_asciiToArray.js","webpack:///./node_modules/lodash/_unicodeToArray.js","webpack:///./node_modules/chevrotain/lib/src/diagrams/render_public.js","webpack:///./node_modules/webstudio/assets/envMaps/irradiance_posx.png","webpack:///./node_modules/webstudio/assets/envMaps/irradiance_negx.png","webpack:///./node_modules/webstudio/assets/envMaps/irradiance_posy.png","webpack:///./node_modules/webstudio/assets/envMaps/irradiance_negy.png","webpack:///./node_modules/webstudio/assets/envMaps/irradiance_posz.png","webpack:///./node_modules/webstudio/assets/envMaps/irradiance_negz.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posx_0.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posx_1.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posx_2.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posx_3.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posx_4.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posx_5.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posx_6.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posx_7.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posx_8.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posx_9.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negx_0.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negx_1.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negx_2.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negx_3.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negx_4.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negx_5.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negx_6.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negx_7.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negx_8.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negx_9.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posy_0.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posy_1.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posy_2.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posy_3.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posy_4.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posy_5.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posy_6.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posy_7.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posy_8.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posy_9.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negy_0.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negy_1.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negy_2.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negy_3.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negy_4.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negy_5.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negy_6.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negy_7.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negy_8.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negy_9.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posz_0.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posz_1.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posz_2.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posz_3.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posz_4.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posz_5.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posz_6.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posz_7.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posz_8.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_posz_9.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negz_0.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negz_1.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negz_2.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negz_3.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negz_4.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negz_5.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negz_6.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negz_7.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negz_8.png","webpack:///./node_modules/webstudio/assets/envMaps/radiance_negz_9.png","webpack:///./node_modules/webstudio/assets/envMaps/brdf.png","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/retryWhen.js","webpack:///./node_modules/rxjs/_esm5/internal/util/TimeoutError.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/timeoutWith.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/timeout.js","webpack:///./node_modules/airbnb-prop-types/index.js","webpack:///./node_modules/consolidated-events/lib/index.esm.js","webpack:///./node_modules/object.values/index.js","webpack:///./node_modules/document.contains/index.js","webpack:///./front/src/helpers/hooks/useOutsideClick.ts","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./node_modules/react-router/node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/react-router/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/artec-ui/node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/artec-ui/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js","webpack:///./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack:///./node_modules/react-range/lib/Range.js","webpack:///./node_modules/reactcss/lib/flattenNames.js","webpack:///./node_modules/reactcss/lib/mergeClasses.js","webpack:///./node_modules/lodash/cloneDeep.js","webpack:///./node_modules/reactcss/lib/autoprefix.js","webpack:///./node_modules/reactcss/lib/components/hover.js","webpack:///./node_modules/reactcss/lib/components/active.js","webpack:///./node_modules/reactcss/lib/loop.js","webpack:///./node_modules/artec-ui/node_modules/react-outside-click-handler/build/OutsideClickHandler.js","webpack:///./node_modules/airbnb-prop-types/build/mocks/index.js","webpack:///./node_modules/object-keys/index.js","webpack:///./node_modules/object-keys/implementation.js","webpack:///./node_modules/has-property-descriptors/index.js","webpack:///./node_modules/has-symbols/index.js","webpack:///./node_modules/has-symbols/shams.js","webpack:///./node_modules/function-bind/implementation.js","webpack:///./node_modules/has/src/index.js","webpack:///./node_modules/es-abstract/2022/RequireObjectCoercible.js","webpack:///./node_modules/es-abstract/5/CheckObjectCoercible.js","webpack:///./node_modules/call-bind/callBound.js","webpack:///./node_modules/object.values/shim.js","webpack:///./node_modules/document.contains/shim.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/components/common/Alpha.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/helpers/alpha.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/helpers/checkboard.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/components/common/EditableInput.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/components/common/Hue.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/helpers/hue.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/components/common/Raised.js","webpack:///./node_modules/lodash/merge.js","webpack:///./node_modules/lodash/_baseMerge.js","webpack:///./node_modules/lodash/_baseMergeDeep.js","webpack:///./node_modules/lodash/toPlainObject.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/components/common/Saturation.js","webpack:///./node_modules/lodash/throttle.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/helpers/saturation.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/components/common/ColorWrap.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/helpers/color.js","webpack:///./node_modules/lodash/each.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/components/common/Swatch.js","webpack:///./node_modules/artec-ui/node_modules/react-color/lib/helpers/interaction.js","webpack:///./node_modules/react-mentions/node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/react-mentions/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./front/src/components/EmbedPlayer/CompareSplit/style.module.styl","webpack:///./front/src/components/EmbedPlayer/CompareSplit/index.tsx","webpack:///./front/src/components/EmbedPlayer/CompareHeaders/style.module.styl","webpack:///./front/src/components/EmbedPlayer/CompareHeaders/index.tsx","webpack:///./front/src/helpers/hooks/useCookie.ts","webpack:///./node_modules/screenfull/index.js","webpack:///./front/src/helpers/hooks/useFullScreen.ts","webpack:///./front/src/helpers/pointerEvents/embedPlayer/index.ts","webpack:///./front/src/components/EmbedPlayer/Player/PlayButton/style.module.styl","webpack:///./front/src/components/EmbedPlayer/Player/PlayButton/index.tsx","webpack:///./front/src/components/EmbedPlayer/Player/PlayerControls/FullscreenIcon/style.module.styl","webpack:///./front/src/components/EmbedPlayer/Player/PlayerControls/FullscreenIcon/index.tsx","webpack:///./front/src/components/EmbedPlayer/Player/PlayerControls/SettingsIcon/style.module.styl","webpack:///./front/src/components/EmbedPlayer/Player/PlayerControls/SettingsIcon/index.tsx","webpack:///./front/src/components/EmbedPlayer/Player/PlayerControls/HelpIcon/style.module.styl","webpack:///./front/src/components/EmbedPlayer/Player/PlayerControls/HelpIcon/index.tsx","webpack:///./node_modules/react-tabs/esm/helpers/elementTypes.js","webpack:///./node_modules/react-tabs/esm/helpers/childrenDeepMap.js","webpack:///./node_modules/react-tabs/esm/helpers/propTypes.js","webpack:///./node_modules/react-tabs/esm/helpers/uuid.js","webpack:///./node_modules/react-tabs/esm/helpers/count.js","webpack:///./node_modules/react-tabs/esm/components/UncontrolledTabs.js","webpack:///./node_modules/react-tabs/esm/components/Tabs.js","webpack:///./node_modules/react-tabs/esm/components/TabList.js","webpack:///./node_modules/react-tabs/esm/components/Tab.js","webpack:///./node_modules/react-tabs/esm/components/TabPanel.js","webpack:///./front/src/components/shared/Tabs/style.module.styl","webpack:///./front/src/components/shared/Tabs/index.tsx","webpack:///./front/src/components/EmbedPlayer/Player/api/base.ts","webpack:///./front/src/components/EmbedPlayer/Player/helpers.ts","webpack:///./front/src/components/EmbedPlayer/Player/PlayerControls/NavigationHelpPanel/navigationImages.tsx","webpack:///./front/src/components/EmbedPlayer/Player/PlayerControls/NavigationHelpPanel/style.module.styl","webpack:///./front/src/components/EmbedPlayer/Player/PlayerControls/NavigationHelpPanel/index.tsx","webpack:///./front/src/components/EmbedPlayer/Player/PlayerControls/style.module.styl","webpack:///./front/src/components/EmbedPlayer/Player/PlayerControls/index.tsx","webpack:///./front/src/components/EmbedPlayer/Player/PlayerInteractionHelp/style.module.styl","webpack:///./front/src/components/EmbedPlayer/Player/PlayerInteractionHelp/index.tsx","webpack:///./front/src/components/EmbedPlayer/Player/PlayerLoader/style.module.styl","webpack:///./front/src/components/EmbedPlayer/Player/PlayerLoader/index.tsx","webpack:///./front/src/components/EmbedPlayer/Player/PlayerLogo/style.module.styl","webpack:///./front/src/components/EmbedPlayer/Player/PlayerLogo/index.tsx","webpack:///./front/src/components/EmbedPlayer/Player/PlaceholderPreviewIcon/index.tsx","webpack:///./front/src/components/EmbedPlayer/Player/PlayerPreview/style.module.styl","webpack:///./front/src/components/EmbedPlayer/Player/PlayerPreview/index.tsx","webpack:///./front/src/components/EmbedPlayer/Player/PlayerUnpublished/style.module.styl","webpack:///./front/src/components/EmbedPlayer/Player/PlayerUnpublished/index.tsx","webpack:///./front/src/components/EmbedPlayer/Player/api/index.ts","webpack:///./front/src/components/EmbedPlayer/Player/style.module.styl","webpack:///./front/src/components/EmbedPlayer/Player/index.tsx","webpack:///./front/src/app/embed_player.js"],"names":["installedModules","__webpack_require__","moduleId","module","modules","exports","name","getter","value","mode","ns","key","object","property","drawMode","attributeId","primitiveType","triangleSide","stencilFunc","stencilAction","stencilValue","pixelBufferType","attachmentId","geometry","vboType","bufferType","objectType","blendFactor","blendEquation","textureMagFilter","textureMinFilter","textureWrapper","RBIntFormat","CompressedTextureFormat","direction","cameraType","easingType","uniformType","uniformSource","drawQueryState","memoryType","cullingFrontFace","cubeMapTarget","networkStatus","MAX_UINT8_ELEMS","MAX_UINT16_ELEMS","MAX_UINT32_ELEMS","EPSILON","root","factory","glMatrix","type","degree","a","b","mat2","out","m00","m01","m10","m11","a1","a0","a2","a3","det","b0","b1","b2","b3","rad","s","c","v","v0","v1","L","D","U","scale","mat2d","d","tx","ty","aa","ab","ac","ad","atx","aty","a4","a5","b4","b5","mat3","m02","m12","m20","m21","m22","a01","a02","a12","a00","a10","a11","a20","a21","a22","b01","b11","b21","b00","b02","b10","b12","b20","b22","x","y","q","z","w","x2","y2","z2","xx","yx","yy","zx","zy","zz","wx","wy","wz","a03","a13","a23","a30","a31","a32","a33","b03","b04","b05","b06","b07","b08","b09","a6","a7","a8","b6","b7","b8","mat4","m03","m13","m23","m30","m31","m32","m33","tmp01","tmp23","out0","out1","out2","out3","row0","row1","row2","row3","tmp1","minor0","minor1","minor2","minor3","vec","t0","axis","len","t","a_1","a_2","a_0","xy","xz","yz","mat","trace","S","sx","sy","sz","o","ox","oy","oz","left","right","bottom","top","near","far","rl","tb","nf","fovy","aspect","f","fov","upTan","downTan","leftTan","rightTan","xScale","yScale","lr","bt","eye","center","up","x0","x1","y0","y1","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","a9","a14","a15","b9","b13","b14","b15","vec3","vec4","quat","tmpvec3","xUnitVec3","yUnitVec3","dot","matr","view","out_axis","ax","ay","az","aw","bx","by","bz","bw","omega","cosom","sinom","scale0","scale1","temp1","temp2","invDot","m","fTrace","fRoot","i","j","k","factorTimes2","factor1","factor2","factor3","factor4","inverseFactor","inverseFactorTimesTwo","r","zScale","qx","qy","qz","qw","ix","iy","iz","iw","p","stride","offset","count","fn","arg","l","tempA","tempB","cosine","vec2","extendConstants","constants","constant","shadingType","colorType","lineType","lineColorType","stepType","msgType","propertyType","cadType","basePlane","selectionType","postEffects","fittingMode","cadPrimitive","photoState","photoOrientation","scanMode","propertyInitStatus","isDev","_logType","logType","message","color","silent","CT_ORTHO","CT_PERSPECTIVE","CC_TRACKBALL","CC_ORBIT","CC_PHOTO","ST_NONE","ST_SPHERE","ST_CIRCLE","ST_RECTANGLE","ST_CUT_OFF_PLANE","ST_LASSO","SM_SELECT","SM_UNSELECT","SHT_SMOOTH","SHT_FLAT","TT_NONE","TT_VIEW","TT_ALIGN","TT_ERASER","TT_SMOOTHER","TT_TRANSFORM","TT_LOD","TT_POSITIONER","TT_DEFEATURE","TT_TEXTURE_HEALER","TT_MEASUREMENTS","TT_CADFITTER","TT_CADPICKER","RM_SOLID","RM_WIREFRAME","RM_POINTS","CM_TEXTURE","CM_SCAN_COLOR","CM_FRAME_COLOR","CM_MAX_ERROR","CM_XRAY","SM_NONE","SM_CONCURRENT","SM_BLEND","GS_OCTREE","GS_HALF_EDGE","GS_MINMAX","GS_DRAW_DEPTH","GS_NORMALS","BM_NONE","BM_DIFFUSE","BM_TRANSPARENT","BM_FRONTFACE","stateValues","specificHandlers","setIsApplyingHistoryStep","setIsSaving","setIsLoading","setHasLoadingErrors","setStateUpdateRequired","setHoverOn","setHoverWindowOn","addUnloadingObjectsNumber","noRedrawStates","defaultState","clean","setAndEmit","stateName","stateValue","currentValue","getStateValue","setStateValue","states","mask","isApplying","updateEditingAllowed","isSaving","isLoading","hasLoadingErrors","required","editingAllowed","hoverOn","hoverOff","number","ECadFormat","BASE_API_URL","GET","POST","DELETE","UPDATE","SET","CREATE","MOVE","TRIGGER","DOWNLOAD","SEARCH","ADD","START","CLEAR","PAUSE","SHOW","MARK","CLICK","RECOVER","ROLLBACK","UNDO","REDO","ADJUST","EXPORT","PATCH","GROUP","GROUPS","IMPORT","COLLAPSED","READ","CHECK","TRACK","EDIT","DUPLICATE","LOADED","PROGRESS","COMPLETE","ERROR","FAILED","PROCESS","ALIGN","ORDER","DRAG","COLOR","STATUS","OBJECTS","HISTORY","REQUEST","TIMEOUTED","HIDDENFEATURE","JOB","TEXTURE","STRUCT","UUID","HOVER","NEW","ANNOTATION","ANNOTATIONS","ATTACHMENTS","TUTORIAL","EVENT","CONTENT","LICENSE","LOCATION_CHANGE","DATA_FOR","WS_","APP","USER","AVAILABLE","INSTALLPROMPT","INSTALLED","CLOSE","OPEN","BAR","TOGGLE","STEP","TAB","EMPTY","CONTINUE","RENAME","PROJECTS","PROJECT","PRESETS","PRESET","NOTIFICATIONS","NOTIFICATION","BASE","CHUNK","ACTION","ALGORITHMS","FEED","LINK","BLOCK","META","DATA","ATTACHMENT","PACK","COUNTS","RECONSTRUCTION","PRICE","TRIAL","BUYPLAN","EXTRA","DEMO","ROUTE","MEASUREMENT","DISTANCE","SHARE","UPLOAD","SAVE","FOLDER","ACCOUNT","LOGOUT","EDITOR","UI","MODE","FLIP","PANELS","SCENE","VIEW","AS","MAKE_PROJECT_OWN","RESET_SUPPORT_PROJECT","UPDATE_EMBEDDED_SHARING_IN_PROJECT","DELETE_EMBEDDED_SHARING_IN_PROJECT","UPDATE_EMBEDDED_SHARING_ROLE","SET_ACTIVE_PHOTO_SET","FLUSH_PHOTO_TEXTURING_STATE","SET_PHOTO_VIEW_EVENT_RECT","DELETE_PHOTOS","TOGGLE_PHOTOS_SORT_BY_NAME","TOGGLE_PHOTOS_SORT_BY_REG_ERROR","SET_OPEN_PHOTO_SET_LIST","SET_PHOTO_LOADING_PROGRESS","RESET_PHOTO_LOADING_PROGRESS","UPDATE_WS_PROJECT_CONTENT","SET_WS_PROJECT_CONTENT","CLEAR_WS_STATE","SET_WS_UPDATE","APPLY_INITIAL_WS_SCENE_SETTINGS","ADD_WS_OBJECTS_STUBS","DELETE_WS_OBJECTS_STUBS","HIDE_WS_OBJECTS","RESTORE_WS_OBJECTS_VISIBILITY","SAVE_HIDDEN_WS_OBJECTS_IDS","DELETE_SAVED_HIDDEN_WS_OBJECTS_IDS","HIDE_VISIBLE_MEASURES","RESTORE_MEASURES_VISIBILITY","SAVE_HIDDEN_MEASURES","DELETE_SAVED_HIDDEN_MEASURES","SET_WORKSPACE_WIDTH","TOGGLE_WORKSPACE_VISIBILITY","SET_INITIAL_VIEWPORT","SET_VIEWPORT","SET_PHOTO_FIT_AREA","DOWNLOAD_PHOTO_SETS","DOWNLOAD_PHOTOS","CHANGE_NAVIGATION_MODE","CHANGE_SHORTCUT_ENABLEMENT","SET_ACCOUNT","SET_HISTORY_JUMP_TARGET","HISTORY_JUMP_PERFORMED","SAVE_PROJECT_INFO_PREVIEW","SAVE_PROJECT_INFO","LOAD_DATA_ROUTES","OBJECT_TYPE","LOADERS","MODAL","SHAKE_MODAL","COLOR_PICKER_PALLETTE","ALIGN_GREY","EMAIL_REGEXP","CHUNK_SIZE","API_STATUS","VIEW_CUBE","PROJECT_STATUS","DEVICE_MIN_WIDTH","DESTINATION_TYPES","DEBOUNCE_UPDATE_TIME","LEFT_PANEL_WIDTH","MAX_RESPONSE_TIME","JOB_TYPES","CONVERTER","JOB_STATUSES","ASTUDIO_SCANNER_TYPES","SNAPSHOT_TYPE","SNAPSHOT_FORMAT","ANNOTATION_STATUS","IMAGE_TYPES","ANNOTATION_RELOAD_TIME","TUTORIAL_SETTINGS","UI_ELEMENTS","TMP_MIGRATE","LICENSE_TYPE","ELicenceCodes","RESOURCE_TYPES","TRIAL_COOKIE","DAYS_TILL_EXPIRED","DAYS_TILL_DELETED","DAYS_TILL_DELETED_ATTENTION","FREE_LIMIT","MeasureKind","THR_COLOR","WORKSPACE_PLUS_COLUMNS_GAP","WORKSPACE_PLUS_PADDINGS","WORKSPACE_PLUS_MIN_WIDTH","DISCRETE_COLORS","GRADIENT_COLORS","EMPTY_PROJECT_SIZE","MAX_DESCRIPTION_SIZE","graphsData","graphData","screenCamera","scene","screenPlane","primitive","MAIN","ALIGNEE","ALIGNER","_windows","_GPUTimeMeasurements","_windowID","_resolvePass","_prevWidth","_prevHeight","viewport","camType","workspaceCamera","controlType","control","windowX","windowY","index","workspaceScene","interfaceScene","surfelsDepthScene","surfelsAdditiveScene","postBlendingScene","xRayEnabled","surfelsBlendingEnabled","postBlendingEnabled","_vec3Tmp","screenX","screenY","delta","events","camera","movementX","movementY","dx","dy","point","res","worldMinmax","photosScene","surfelsScene","minmax","cadsAdditionalScene","postBlendingWorkspaceScene","postBlendingInterfaceScene","config","objects","active","clientX","clientY","dest","forcedRaycast","forcedRead","compat","textureX","textureY","pixelDepth","pickID","workspace","drawableToObject","drawable","selector","g","texture","_updateResolvePass","window","windowID","output","id","dt","gpuTimeDebugEnabled","windowsToUpdate","renderer","elapsedNanos","averagedNanos","getAveragedGPUTime","width","height","wAspect","hAspect","func","newMeasurement","_browserEventsEnabled","event","elem","e","eventName","listener","evListeners","param","params","visible","opacity","matrix","withPropertyUpdate","properties","level","edgeFrame","edgeChunk","points","primitives","chunk","PhotoWrapper","selfPropertyGetter","loadingFiles","loadingPromises","photoData","photoObject","photoDescriptor","file","payload","photoPath","reformer","promise","loader","image","dataFiles","photosData","photo","progressCallback","photoIDs","photos","photoFiles","photoID","photoFile","descriptor","fullPath","loadingCallback","progress","error","buffer","SelectableWrapper","propertyGetter","ContourWrapper","SectionWrapper","selected","sectionData","sectionWrapper","contoursData","contourData","contourWrapper","vec3Tmp","recalculateBoundings","positionsArray","toWorld","boxes","status","minmaxWorld","chunkCounter","positions","minmaxLocal","recalculateBounding","vertex","parentID","prop","objectID","database","textureLevel","path","inSliceId","levels","geometries","chunkID","geometryProperty","promises","chunks","loaderType","inSliceID","needsVertexID","errorCode","parentObject","loaded","slot","compression","textureFormat","transfer","data","keepSaveInfo","objectData","item","getProgressHandler","partials","partialNumber","partialProgress","sum","partialSum","material","texturingPromises","textureList","texturePath","loadingPromise","loadPayload","texturingPromise","ST_LEO","ST_SPIDER","ST_EVA","ST_MICRO","ST_RAY","CT_LUMINERA","CT_POINTGRAY","MaxPower","calcTextureCorrectionMatrix","scanProperty","colorCorrectionMatrix","corrCoeff","calcTexturingCorrectionCoefficient","scannerType","textureGain","textureCameraType","calibrationGain","getCalibrationGainForLeo","getCalibrationGainForArtecTextureCameraType","textureBrightnessLevel","getBrightenssLevelForScannerType","textureIllumination","distanceCorrectionCoeff","scannertype","Ig","cameraTypeId","g0","calibrationBrightnessLevel","estimatedBrightnessLevel","gPow","g0Pow","power","compressionLevel","prepareGeometryData","encoder","savingAttributes","attributeBuffer","result","encoderType","objectJSON","KnotWrapper","dataGetter","isPerpendicular","parentUUID","geometryProperties","knotWrapper","knotProperty","chunkProperties","chunkProperty","chunkNumber","visibility","frame","textureRequested","hasTextures","textureUsed","colorMode","reflectivity","_useChunkLevels","_saveChunksState","projectPath","json","objectsData","model","materialType","objectWrapper","frameWrapper","texturingProgress","progressVal","shouldRun","scanList","fusionList","fusionProperty","cadList","photoGroupList","sectionMeasuresList","distanceMeasuresList","distanceMapList","groupsList","cadData","groupProperty","photoGroupProperty","sectionMeasureProperty","distanceMeasureProperty","distanceMapProperty","combinePromises","oldData","updated","updateModelTransform","chunkData","chunksToDelete","geometryUpdated","textureUpdated","chunkObject","oldZeroDataLevelHash","oldChunkData","zeroDataLevelHash","shouldLoadTexture","texturesData","oldTexturesData","newTextureLevels","oldTextureLevels","newTextureHash","oldTextureHash","oldFramesNode","framesNode","frameData","frameObject","oldFrameData","frameProperty","framesToUnload","oldProperty","geometryNode","oldGeometryNode","oldGeometryHash","newGeometryHash","geometryUpToDate","fusionTextureUpToDate","oldTextureExists","newTextureExists","oldFramesProperty","framesProperty","updatedObjects","oldPhotoGroupsList","oldDistanceMeasureList","oldSectionMeasureList","oldDistanceMapList","oldCadList","oldScanList","oldFusionList","photoGroupsList","distanceMeasureList","sectionMeasureList","updateObjectList","objectPropertyList","oldObjectPropertyList","objectsList","preUpdateFn","updateFn","createFn","removeFn","objectProperty","oldObjectProperty","newObject","objectsToUnload","objectsPreUpdateFn","objectsUpdateFn","scanCreateFn","scanObjectsList","fusionObjectsList","cadObjectsList","distanceMeasureObjectsList","sectionMeasuresObjectsList","distanceMapsObjectsList","_updatePhotoGroup","pg","_updateMeasure","needInitObjects","someDataLoaded","needReinitObject","releaseSlicedCache","numLoadings","shader","scanWrapper","isPrimitive","mainModel","mainMaterial","edgesModel","CADWrapper","photoGroupWrapper","sectionMeasureWrapper","distanceMeasureWrapper","distanceMapWrapper","fusionWrapper","surfelsWrapper","syncPromise","resolve","updatePromise","state","trigger","pred","uuid","minDistance","maxDistance","dstUuid","searchDistance","group","photoGroup","measure","allFramesMode","forceNonTexturedFrames","forceKeyFrames","enabled","chunkInfo","frameInfo","levelInfo","frameID","chunkFullID","chunkPaths","levelsProperty","levelProperty","levelID","addPayload","updatePayload","currChunk","currBbox","childrenNeighbours","parentNeighbours","currX","currY","currZ","bbox","doBboxesIntersect","diffX","diffY","diffZ","needs","surfelsDescription","files","trianglesFile","surfelsFile","tmpSurfelsFile","tmpFrames","surfelsObjectFrameGeometrySlices","slices","noDecimationFrame","geometryPropery","filepath","framesSet","changed","slicesToLoad","slicesLoaded","allFramesSets","texturedFramesSet","nonTexturedFramesSet","isTexturedFramesSet","isTexturedFrame","processedSets","priority","decimateFramesSet","framesSets","step","decimationAllowed","firstFrame","sliceAlreadyLoaded","sliceShown","sliceShouldBeLoaded","queue","assetGroup","asset","fusionHasLods","monitoring","rate","groupID","groups","geometriesInfo","geometryInfo","scan","reportGeometrySelection","objectIDs","operations","projectFiles","groupIdMap","entry","groupsNames","n","groupIDs","parents","children","childChunk","childParents","dstObject","srcObject","srcFrames","dstFrames","srcFrame","dstFrame","srcFrameModel","dstFrameModel","srcChunks","dstChunks","srcChunk","dstChunk","srcGeometry","dstGeometry","cloneGeometry","info","chunkOctreeUpdated","objectsInGroup","groupColor","h","shadesCount","frameColorEnabled","newObjectColor","descriptors","desc","l1ID","child","frameProperties","newName","obj","frames","deletedChunkID","deletePayload","frameFullID","processFrameDeletion","saveId","slicedMode","generateSaveEventsForChunks","serializedJson","maxError","outlinePass","highlightPreset","srcLayout","layout","bufferName","srcItem","dstItem","filename","eps","upToDate","newProperty","oldSection","newSection","oldContour","newContour","selectionOverride","fullID","textures","trackings","frameFiles","tracking","trackingLevel","savePayload","sliceDiffsMap","payloadGroup","chunkBuffer","slicePaths","currentSliceDiff","chunkMeta","sliceDiffs","sliceDiff","reported","HSL_THRESHOLD","createProperty","createLevelProperty","createAssetProperty","createObjectProperty","createFrameProperty","createGroupProperty","createMeasureProperty","createPhotoGroupProperty","reformValue","fieldName","generateValueMethod","reportName","valueExists","reportOnce","valueIsIllegal","generateGroupColor","shades","hslShades","checkShadesCompatibility","theDarkestShade","theLightestShade","groupShade","rgbColor","getHexPaletteUnique","colorList","deepCopy","cleanup","getCadType","Property","source","missingAttribute","hmin","hmax","smin","smax","shade","Uniform","Tooltip","className","containerClassName","text","show","orientation","timeout","hideTimeout","showTimeout","isShow","setShow","timer","setTimer","hideTimer","setHideTimer","showTimer","setShowTimer","triggerRef","tooltipContainerRef","tooltipRef","lastTop","anchorScrollTop","scrollListener","_showTimeout","positionClass","coords","triggerRect","tooltipRect","windowWidth","pageY","pageX","onClick","onClickCapture","theme","icon","disabled","iconHeight","iconWidth","hint","hintDirection","hintOrientation","hintClass","algorithmItem","target","dataTs","useSpace","tabIndex","showTooltip","_onClick","_onClickCapture","props","UserPic","avatar","backColor","hoverable","label","checked","toggle","onChange","partial","ContextMenu","opened","onToggle","onlyLeft","isContainer","topGap","gap","menuRef","ref","handleClickOutside","styleOpened","clientHeight","clientWidth","menuElementRect","menuHeight","menuWidth","spaceAtTheBottom","spaceAtTheRight","spaceAtTheTop","spaceAtTheLeft","needScroll","upward","toLeft","sheetForTag","tag","createStyleElement","options","StyleSheet","_this","before","_proto","nodes","rule","sheet","u","$","C","O","A","M","B","E","F","G","H","I","J","K","N","P","Q","R","T","V","W","ee","X","Z","Y","ae","_","re","ne","ce","te","ue","se","ie","fe","oe","le","ve","pe","he","weakMemoize","cache","ret","begin","previous","character","parsed","fixedElements","element","parent","isImplicitRule","rules","parentRules","removeLabel","ignoreFlag","isIgnoringComment","createUnsafeSelectorsAlarm","unsafePseudoClasses","isNested","commentContainer","node","unsafePseudoClass","isImportRule","isPrependedWithRegularRules","nullifyElement","incorrectImportAlarm","prefix","length","callback","defaultStylisPlugins","ssrStyles","dataEmotionAttribute","stylisPlugins","inserted","container","nodesToHydrate","attrib","_insert","omnipresentPlugins","currentSheet","finalizingPlugins","serializer","stylis","styles","serialized","shouldCache","hoistNonReactStatics","targetComponent","sourceComponent","isBrowser","getRegisteredStyles","registered","registeredStyles","classNames","rawClassName","registerStyles","isStringTag","insertStyles","current","maybeStyles","murmur2","str","unitlessKeys","ILLEGAL_ESCAPE_SEQUENCE_ERROR","UNDEFINED_AS_OBJECT_KEY_ERROR","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","match","p1","p2","cursor","noComponentSelectorMessage","handleInterpolation","mergedProps","interpolation","next","createStringFromObject","previousCursor","cached","string","_key","_i","interpolated","labelPattern","sourceMapPattern","args","stringMode","strings","sourceMap","identifierName","syncFallback","create","useInsertionEffect","useInsertionEffectAlwaysWithSyncFallback","useInsertionEffectWithLayoutFallback","EmotionCacheContext","CacheProvider","__unsafe_useEmotionCache","ThemeContext","outerTheme","mergedTheme","createCacheWithTheme","withTheme","Component","componentName","render","WithTheme","getLastPart","functionName","parts","getFunctionNameFromStackTraceLine","line","internalReactFunctionNames","sanitizeIdentifier","identifier","getLabelFromStackTrace","stackTrace","lines","typePropName","labelPropName","createEmotionProps","newProps","_ref","Emotion","cssProp","WrappedComponent","pkg","argsLength","createElementArgArray","warnedAboutCssPropForGlobal","Global","sheetRef","rehydrating","sheetRefCurrent","_len","keyframes","insertable","classnames","cls","toAdd","merge","css","serializedArr","ClassNames","hasRendered","cx","_len2","_key2","content","ele","_taggedTemplateLiteral","raw","_defineProperty","ownKeys","enumerableOnly","keys","symbols","sym","_objectSpread2","_getPrototypeOf","_isNativeReflectConstruct","_assertThisInitialized","self","_possibleConstructorReturn","call","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","noop","applyPrefixToName","arr","cleanValue","handleInputChange","inputValue","actionMeta","onInputChange","newValue","isDocumentElement","el","getScrollTop","scrollTo","getScrollParent","style","excludeStaticParent","overflowRx","docEl","easeOutCubic","animatedScrollTo","to","duration","start","change","increment","currentTime","animateScroll","val","scrollIntoView","menuEl","focusedEl","menuRect","focusedRect","overScroll","getBoundingClientObj","rect","isTouchCapable","isMobileDevice","getMenuPlacement","maxHeight","minHeight","placement","shouldScroll","isFixedPosition","spacing","scrollParent","_scrollParent$getBoun","scrollHeight","_menuEl$getBoundingCl","menuBottom","menuTop","_menuEl$offsetParent$","containerTop","viewHeight","scrollTop","marginBottom","marginTop","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","scrollDuration","constrainedHeight","_constrainedHeight","spaceAbove","_constrainedHeight2","alignToControl","placementToCSSProp","coercePlacement","menuCSS","_ref2","_ref3","_ref2$theme","borderRadius","colors","PortalPlacementContext","MenuPlacer","_Component","_super","_this$props","minMenuHeight","maxMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","getPortalPlacement","getStyles","innerRef","innerProps","menuListCSS","_ref4","baseUnit","isMulti","noticeCSS","_ref5","_ref5$theme","noOptionsMessageCSS","loadingMessageCSS","menuPortalCSS","_ref6","position","_Component2","MenuPortal","_super2","_this2","_ref7","initialPlacement","_this$props2","appendTo","controlElement","isFixed","scrollDistance","menuWrapper","containerCSS","isDisabled","isRtl","valueContainerCSS","hasValue","indicatorsContainerCSS","_templateObject","_EMOTION_STRINGIFIED_CSS_ERROR__","Svg","size","CrossIcon","DownChevron","baseCSS","isFocused","_ref3$theme","dropdownIndicatorCSS","clearIndicatorCSS","indicatorSeparatorCSS","_ref4$theme","loadingDotAnimations","loadingIndicatorCSS","LoadingDot","delay","_ref$theme","menuIsOpen","groupCSS","Heading","headingProps","selectProps","groupHeadingCSS","cleanProps","inputCSS","inputStyle","isHidden","multiValueCSS","multiValueLabelCSS","cropWithEllipsis","multiValueRemoveCSS","MultiValueGeneric","components","removeProps","Container","Label","Remove","emotionCx","optionCSS","isSelected","placeholderCSS","css$1","defaultComponents","diacritics","anyDiacritic","diacriticToBase","diacritic","stripDiacritics","trimString","defaultStringify","option","createFilter","rawInput","_ignoreCase$ignoreAcc","ignoreCase","ignoreAccents","stringify","trim","matchFrom","input","candidate","A11yText","DummyInput","cancelScroll","useScrollCapture","isEnabled","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","isBottom","isTop","touchStart","scrollTarget","handleEventDelta","_scrollTarget$current","isDeltaPositive","availableScroll","shouldCancelScroll","onWheel","onTouchStart","onTouchMove","deltaY","startListening","stopListening","STYLE_KEYS","LOCK_STYLES","preventTouchMove","allowTouchMove","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","canUseDOM","activeScrollLocks","listenerOptions","useScrollLock","_ref$accountForScroll","accountForScrollbars","originalStyles","addScrollLock","touchScrollTarget","targetStyle","currentPadding","adjustedPadding","removeScrollLock","_EMOTION_STRINGIFIED_CSS_ERROR__$1","blurSelectInput","ScrollManager","lockEnabled","_ref$captureEnabled","captureEnabled","setScrollCaptureTarget","setScrollLockTarget","targetRef","instructionsAriaMessage","context","isSearchable","tabSelectsValue","valueEventAriaMessage","valueFocusAriaMessage","focusedValue","getOptionLabel","selectValue","optionFocusAriaMessage","focusedOption","resultsAriaMessage","screenReaderMessage","formatGroupLabel","getOptionValue","isOptionDisabled","defaultStyles","mergeStyles","rsCss","controlHeight","menuGutter","defaultTheme","defaultProps","toCategorizedOption","_isOptionDisabled","_isOptionSelected","getOptionLabel$1","getOptionValue$1","buildCategorizedOptions","groupOrOption","groupOrOptionIndex","categorizedOptions","optionIndex","categorizedOption","isFocusable","buildFocusableOptionsFromCategorizedOptions","optionsAccumulator","buildFocusableOptions","_props$inputValue","shouldHideSelectedOptions","_filterOption","getNextFocusedValue","nextSelectValue","lastSelectValue","lastFocusedIndex","nextFocusedIndex","getNextFocusedOption","lastFocusedOption","hideSelectedOptions","instanceId","Select","_props","action","closeMenuOnSelect","_this$props3","blurInputOnSelect","removedValue","newValueArray","lastSelectedValue","base","custom","openMenuOnClick","_this$props4","touches","touch","deltaX","moveThreshold","_this$props5","_this$props6","backspaceRemovesValue","escapeClearsValue","isClearable","onKeyDown","openMenuOnFocus","_this$state","prevProps","_this$props7","_this$props8","focusOption","_this$state2","focusableOptions","_this$props9","openAtIndex","selectedIndex","_this$props10","_this$state3","focusedIndex","lastIndex","nextFocus","_this$props11","pageSize","_this$state4","clearValue","getValue","setValue","selectOption","_this$props12","_this$state5","ariaLiveContext","_this$props13","screenReaderStatus","focusedValueMsg","focusedOptionMsg","resultsMsg","_this$props14","inputId","form","_this$getComponents","Input","inputIsHidden","ariaAttributes","_this$commonProps","_this3","_this$getComponents2","MultiValue","MultiValueContainer","MultiValueLabel","MultiValueRemove","SingleValue","Placeholder","commonProps","_this$props15","controlShouldRenderValue","placeholder","_this$state6","selectValues","opt","isOptionFocused","singleValue","_this$getComponents3","ClearIndicator","_this$props16","_this$getComponents4","LoadingIndicator","_this$props17","_this$getComponents5","DropdownIndicator","IndicatorSeparator","_this$getComponents6","_this4","_this$getComponents7","Group","GroupHeading","Menu","MenuList","LoadingMessage","NoOptionsMessage","Option","_this$props18","captureMenuScroll","loadingMessage","menuPortalTarget","menuShouldBlockScroll","noOptionsMessage","onMenuScrollToTop","onMenuScrollToBottom","onHover","onSelect","optionId","menuUI","groupIndex","groupId","headingId","_message","menuPlacementProps","menuElement","_ref6$placerProps","scrollTargetRef","instance","_this5","_this$props19","delimiter","_value","_this$getComponents8","Control","IndicatorsContainer","SelectContainer","ValueContainer","_this$props20","clearFocusValueOnUpdate","inputIsHiddenAfterUpdate","newMenuOptionsState","newInputIsHiddenState","manageState","SelectComponent","_class","_temp","StateManager","safeIsNaN","isEqual","first","second","areInputsEqual","newInputs","lastInputs","memoizeOne","resultFn","lastThis","lastArgs","lastResult","calledOnce","memoized","newArgs","NonceProvider","nonce","emotionCache","preventScrollElem","defaultValue","customOption","valueContainer","multiValue","onMenuOpen","selectContainer","isPortal","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_extends","_inherits","subClass","superClass","_setPrototypeOf","createCommonjsModule","ReactPropTypesSecret","ReactPropTypesSecret_1","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","propName","location","propFullName","secret","err","getShim","ReactPropTypes","propTypes","returnTrue","charIsNumber","_char","isNil","escapeRegExp","getThousandsGroupRegex","thousandsGroupStyle","applyThousandSeparator","thousandSeparator","thousandsGroupRegex","splitDecimal","numStr","allowNegative","hasNagation","addNegation","beforeDecimal","afterDecimal","fixLeadingZero","isNegative","limitToScale","fixedDecimalScale","filler","roundToPrecision","shoudHaveDecimalSeparator","_splitDecimal","roundedDecimalParts","intPart","roundedStr","idx","decimalPart","negation","decimalSeparator","omit","keyMaps","filteredObj","setCaretPosition","caretPos","range","findChangedIndex","prevValue","prevLength","newLength","clamp","num","min","max","getCurrentCaretPosition","addInputMode","format","propTypes$1","_React$Component","NumberFormat","formattedValue","focusedElm","_state$numAsString","lastNumStr","lastValueWithNewFormat","numAsString","floatValue","lastFloatValue","decimalScale","_this$getSeparators","numRegex","hasNegation","firstDecimalIndex","ignoreDecimalSeparator","_this$getSeparators2","allowedDecimalSeparators","_this$props$mask","_this$getSeparators3","maskAsStr","suffix","firstHashPosition","lastHashPosition","nextPos","caretLeftBound","caretRightBound","goToLeft","inputNumber","formattedNumber","currentInputChar","currentFormatChar","suffixLastIndex","formatArray","ln","part","removeFormatting","hashCount","formattedNumberAry","_this$getSeparators4","hasDecimalSeparator","allowEmptyFormatting","isNumericString","isNonNumericFalsy","negationRegex","doubleNegationRegex","removeNegation","_this$getSeparators5","end","lastValue","_this$getSeparators6","_this$selectionBefore","selectionStart","selectionEnd","_findChangedIndex","separator","leftBound","rightBound","numericString","_splitDecimal2","isBeforeDecimalPoint","_params$setCaretPosit","onValueChange","currentCaretPosition","isAllowed","valueObj","onBlur","allowLeadingZeros","_el$value","expectedCaretPosition","negativeRegex","isPatternFormat","newCaretPosition","_el$value2","caretPosition","_el$value3","displayType","customInput","renderText","getInputRef","mounted","otherProps","inputMode","inputProps","CustomInput","onClear","withThousandSeparator","withVisibleButton","clearable","passwordVisible","setPasswordVisible","showClearIndicator","customType","round2digits","Range","onKeyUp","labels","withInput","round","maxlength","inputType","borderColor","inputRef","hiddenSpanRef","setInputValue","inputWidth","setInputWidth","iconCss","values","isDragged","parsedValue","calculateChange","hsl","initialA","containerWidth","containerHeight","_a","checkboardCache","c1","c2","serverCanvas","canvas","ctx","get","checkboard","Checkboard","white","grey","renderers","boxShadow","defineProperties","Alpha","_ret","rgb","DEFAULT_ARROW_OFFSET","UP_KEY_CODE","DOWN_KEY_CODE","VALID_KEY_CODES","isValidKeyCode","keyCode","getNumberValue","idCounter","EditableInput","updatedValue","prevState","onChangeValue","percent","_h","_percent","Hue","_props$direction","assignMergeValue","eq","createBaseFor","fromRight","iteratee","keysFunc","iterable","baseFor","isArrayLikeObject","isObjectLike","isArrayLike","objectTag","funcProto","objectProto","funcToString","objectCtorString","isPlainObject","proto","Ctor","safeGet","toPlainObject","keysIn","baseMergeDeep","srcIndex","mergeFunc","customizer","stack","objValue","srcValue","stacked","isCommon","isArr","isArray","isBuff","isBuffer","isTyped","isTypedArray","isArguments","isObject","isFunction","baseMerge","identity","apply","thisArg","nativeMax","overRest","transform","array","otherArgs","baseSetToString","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","lastCalled","stamp","remaining","setToString","baseRest","isIterateeCall","createAssigner","assigner","sources","guard","Raised","zDepth","radius","background","_ref$styles","passedStyles","now","reWhitespace","trimmedEndIndex","reTrimStart","baseTrim","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","isSymbol","other","isBinary","FUNC_ERROR_TEXT","nativeMin","debounce","wait","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","throttle","_container$getBoundin","saturation","bright","Saturation","renderWindow","black","pointer","circle","baseForOwn","createBaseEach","eachFunc","collection","baseEach","castFunction","forEach","simpleCheckForValidColor","keysToCheck","passed","letter","percentPatt","toState","oldHue","hsv","hex","transparent","isValidHex","lh","getContrastingColor","col","yiq","red","isvalidColorString","stringWithoutDegree","ColorWrap","Picker","ColorPicker","isValidColor","optionalEvents","nextProps","handleFocus","Span","Focus","ENTER","Swatch","_ref$onClick","_ref$title","title","focus","_ref$focusStyle","focusStyle","handleClick","handleKeyDown","handleHover","AlphaPointer","AlphaPicker","_ref$className","HASH_UNDEFINED","setCacheAdd","setCacheHas","SetCache","arraySome","predicate","cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","bitmask","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","map","setToArray","set","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","symbolProto","symbolValueOf","equalByTag","convert","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","argsTag","arrayTag","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","baseIsMatch","matchData","noCustomizer","isStrictComparable","getMatchData","matchesStrictComparable","baseMatches","reIsDeepProp","reIsPlainProp","isKey","castPath","baseGet","baseHasIn","hasPath","hasFunc","isLength","hasIn","baseMatchesProperty","baseProperty","basePropertyDeep","baseIteratee","baseMap","BlockSwatches","onSwatchHover","Block","triangle","handleChange","hexCode","pink","purple","deepPurple","indigo","blue","lightBlue","cyan","teal","green","lightGreen","lime","yellow","amber","orange","deepOrange","brown","blueGrey","darkText","lightText","darkIcons","lightIcons","CircleSwatch","hover","circleSize","circleSpacing","Circle","isUndefined","ChromeFields","fields","ChromePointer","ChromePointerCircle","Chrome","disableAlpha","defaultView","CompactColor","CompactFields","Compact","GithubSwatch","hoverSwatch","Github","SliderPointer","HuePicker","HuePointer","Material","PhotoshopPicker","PhotoshopPointerCircle","PhotoshopPointer","PhotoshopButton","PhotoshopPreviews","currentColor","Photoshop","_props$styles","_props$className","PhotoshopFields","SketchFields","SketchPresetColors","colorObjOrString","Sketch","presetColors","SliderSwatch","last","SliderSwatches","epsilon","Slider","SwatchesColor","SwatchesGroup","Swatches","Twitter","hexcode","GooglePointerCircle","GooglePointer","GoogleFields","_values","_values2","hsvValue","rgbValue","hslValue","Google","header","TRANSPARENT_COLOR","defaultColors","Pointer","onClose","usedColors","availableColors","pickerRef","toggleRef","toggleRect","pickerRect","clr","availableColor","Dropdown","classNameToggle","closeOnSelect","dataTsButton","setUpward","capitalizedPoses","upwardPositionClass","_onToggle","useOutsideHandler","toggler","foreditor","_arrayWithoutHoles","arr2","_iterableToArray","iter","_nonIterableSpread","_toConsumableArray","_typeof2","_typeof","_arrayWithHoles","_iterableToArrayLimit","_arr","_n","_d","_e","_s","_nonIterableRest","_slicedToArray","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","mergeDeep","compact","isModifier","isElement","camelize","objectPropertiesWhitelist","styleKeys","isDirect","keysToPick","camelizedKeysToPick","hoistModifierStylesRecursive","modifierKeysToPick","modifierKeys","subresult","_objectSpread","defaultObjectPropsWhitelist","PropsDecoratorContext","select","objSelect","acc","substyle","defaultStyle","cacheKey","mapEntry","selectHash","firstKey","elementKeys","firstClassName","derivedClassNames","createSubstyle","propsDecorator","baseClassName","selectedKeys","collectElementStyles","fromStyle","collectSelectedStyles","styleProps","classNameSplit","mappedClassNames","singleClassName","propsForSpread","modifiers","inline","escapeRegex","PLACEHOLDERS","markup","parameterName","indexDisplay","indexId","regExps","serializedRegexParser","regex","_serializedRegexParse","_serializedRegexParse2","regexString","regexFlags","countPlaceholders","emptyFn","iterateMentionsMarkup","markupIteratee","textIteratee","accOffset","captureGroupOffsets","currentPlainTextIndex","mentionChildIndex","_config$mentionChildI","displayTransform","idPos","displayPos","display","substr","getPlainText","plainTextIndex","plainText","mapPlainTextIndex","indexInPlainText","inMarkupCorrection","substrPlainTextIndex","mentionPlainTextIndex","childIndex","lastMentionEndIndex","spliceString","insert","applyChangeToValue","plainTextValue","selectionStartBefore","selectionEndBefore","selectionEndAfter","oldPlainTextValue","lengthDelta","spliceStart","spliceEnd","mappedSpliceStart","mappedSpliceEnd","controlSpliceStart","controlSpliceEnd","willRemoveMention","controlPlainTextValue","findStartOfMentionInPlainText","foundMention","getMentions","mentions","getSuggestionHtmlId","countSuggestions","suggestions","results","getEndOfLastMention","lastMention","markupToRegex","escapedMarkup","charAfterDisplay","charAfterId","_ref$props","numberOfGroups","numberOfPlaceholders","makeMentionsMarkup","lettersDiacritics","removeAccents","formattedStr","letterDiacritics","normalizeString","getSubstringIndex","isNumber","rest","createDefaultStyle","getModifiers","enhance","ComponentToWrap","DefaultStyleEnhancer","displayName","_generateComponentKey","usedKeys","Highlighter","_this$caretElement","offsetLeft","offsetTop","newPosition","containerRef","caretPositionInMarkup","resultComponents","componentKeys","substringComponentKey","splitIndex","mentionIteratee","styled","Highlighter$1","Suggestion","query","renderSuggestion","suggestion","focused","highlightedDisplay","styled$1","Suggestion$1","spinnerStyles","SuggestionsOverlay","_getPrototypeOf2","ev","queryInfo","_this$ulElement$child","_this$ulElement$getBo","topContainer","a11ySuggestionsListLabel","isOpened","onMouseDown","accResults","getID","styled$2","SuggestionsOverlay$1","makeTriggerRegex","allowSpaceInQuery","escapedTriggerChar","getDataProvider","KEY","isComposing","MentionsInput","readOnly","singleLine","_this$state$suggestio","suggestionsNode","_this$props$valueLink","currentDocument","newPlainTextValue","setSelectionAfterMentionChange","startOfMention","eventMock","suggestionsCount","focusIndex","_Object$values$reduce","clickedSuggestion","suggestionsPortalHost","allowSuggestionsAboveCursor","highlighter","caretOffsetParentRect","caretHeight","getComputedStyleLengthProp","viewportRelative","viewportHeight","viewportWidth","_left","_top","positionInValue","substringStartIndex","substring","querySequenceStart","querySequenceEnd","mentionChild","provideData","syncResult","queryId","mentionsChild","_mentionsChild$props","appendSpaceOnAdd","onAdd","displayValue","markupStartIndex","markupEndIndex","pastedMentions","pastedData","forElement","propertyName","isMobileSafari","styled$3","MentionsInput$1","getBackColor","summ","cur","user","email","short_name","full_name","inputEl","_elem","getPrototypeOf","possibleConstructorReturn","toArray","findDOMNode","useMemo","condition","shouldUpdate","cacheRef","fillRef","composeRef","refs","refList","useComposeRef","prev","supportRef","nodeOrComponent","_type$prototype","_nodeOrComponent$prot","makePrefixMap","styleProp","prefixes","getVendorPrefixes","domSupport","win","vendorPrefixes","_document$createEleme","prefixedEventNames","getVendorPrefixedEventName","prefixMap","stylePropList","internalAnimationEndName","internalTransitionEndName","supportTransition","animationEndName","transitionEndName","getTransitionName","transitionName","transitionType","STATUS_NONE","STATUS_APPEAR","STATUS_ENTER","STATUS_LEAVE","STEP_NONE","STEP_PREPARE","STEP_START","STEP_ACTIVE","STEP_ACTIVATED","raf","caf","handle","rafUUID","rafIds","wrapperRaf","times","callRef","leftTimes","realId","nextFrameRef","cancelNextFrame","nextFrame","nextFrameId","useIsomorphicLayoutEffect","canUseDom","STEP_QUEUE","SkipStep","DoStep","_useState","useState","_useState2","setStep","_useNextFrame","useNextFrame","_useNextFrame2","startQueue","nextStep","doNext","cacheElementRef","callbackRef","onInternalMotionEnd","removeMotionEvents","patchMotionEvents","useStatus","supportMotion","getElement","_ref$motionEnter","motionEnter","_ref$motionAppear","motionAppear","_ref$motionLeave","motionLeave","motionDeadline","motionLeaveImmediately","onAppearPrepare","onEnterPrepare","onLeavePrepare","onAppearStart","onEnterStart","onLeaveStart","onAppearActive","onEnterActive","onLeaveActive","onAppearEnd","onEnterEnd","onLeaveEnd","onVisibleChanged","asyncVisible","setAsyncVisible","_useState3","_useState4","setStatus","_useState5","_useState6","setStyle","mountedRef","deadlineRef","getDomElement","activeRef","currentActive","canEnd","_useDomMotionEvents","useDomMotionEvents","_useDomMotionEvents2","eventHandlers","_useStepQueue","useStepQueue","newStep","onPrepare","_eventHandlers$step","_useStepQueue2","startStep","isMounted","nextStatus","firstMountChangeRef","mergedStyle","DomWrapper","genCSSMotion","transitionSupport","isSupportTransition","CSSMotion","_props$visible","_props$removeOnLeave","removeOnLeave","forceRender","motionName","leavedClassName","eventProps","nodeRef","wrapperNodeRef","_useStatus","_useStatus2","statusStep","statusStyle","mergedVisible","renderedRef","setNodeRef","motionChildren","_classNames","statusSuffix","_motionChildren","originNodeRef","STATUS_ADD","STATUS_KEEP","STATUS_REMOVE","STATUS_REMOVED","wrapKeyToObject","keyObj","parseKeys","diffKeys","prevKeys","currentKeys","list","currentIndex","currentLen","prevKeyObjects","currentKeyObjects","hit","currentKeyObj","duplicatedKeys","matchKey","_excluded","_excluded2","MOTION_PROP_NAMES","genCSSMotionList","CSSMotionList","removeKey","keyEntities","nextKeyEntities","entity","component","_onVisibleChanged","onAllRemoved","restProps","motionProps","changedVisible","restKeysCount","parsedKeyObjects","mixedKeyEntities","prevEntity","PanelContent","_classnames","prefixCls","isActive","role","_React$useState","_React$useState2","rendered","setRendered","CollapsePanel","onItemClick","panelKey","_classNames2","headerClass","showArrow","destroyInactivePanel","accordion","openMotion","expandIcon","extra","collapsible","headerCls","itemCls","motionClassName","motionStyle","getActiveKeysArray","activeKey","currentActiveKey","activeKeyType","Collapse","rootDestroyInactivePanel","_child$props","childCollapsible","mergeCollapsible","defaultActiveKey","nextState","collapseClassName","newState","getCollapsedHeight","getRealHeight","getCurrentHeight","skipOpacityTransition","Accrdion","motion","itemRef","setOpened","shouldLeft","setShouldLeft","hasSubmenu","_onEnter","_shouldLeft","_onLeave","Submenu","menuClassName","tooltipClassName","tooltipContainerClassName","isOverflown","setIsOverflown","BitStream","bits","Stream","byteOffset","byteLength","pad","bitstream","tunstall","Tunstall","diff","middle","stream","nsymbols","compressed_size","compressed_data","n_symbols","pos","n_words","max_repeat","repeat","p0","prob","row","off","best","max_prob","word","input_size","output_size","input_pos","output_pos","symbol","Attribute","strategy","nvert","nface","ColorAttr","rgboff","e0","e1","e2","NormalAttr","attrs","coord","norm","boundary","ba0","ba1","ba2","ca0","ca1","ca2","n0","n1","n2","unit","av0","av1","av2","ap0","ap1","IndexAttr","max_front","np","CortoDecoder","magic","version","codec","attr","clers","front","front_count","addFront","_v0","_v1","_v2","_prev","_next","faceorder","order_front","order_back","delayed","splitbits","new_edge","prediction","last_index","vindex","split","current_edge","edge","v2","opposite","verbose","blob","reject","decoder","messages","startTime","decodeEnd","bufferSource","tid","posBuffer","positionItem","normBuffer","normalItem","uvBuffer","uvItem","colorBuffer","colorItem","indicesBuffer","indicesType","indicesItem","controller","releaseAfterUse","imageUrl","channels","valueSize","expectedDataSize","realDataSize","LoaderDataType","ObjectData","GeometryRawData","useWorkers","loadingProgress","dataType","_loaderTypeToDownloaderType","downloader","objectsRawData","_createGeometry","_getTypedArray","constructor","typedArray","objectRawData","rawGeometry","normals","uvs","indices","_generateDefaultIndices","_getBbox","maxValue","indicesArrayConstructor","indicesTypedArray","indType","posTypedArray","normTypedArray","uvTypedArray","_parseTaskId","_parserStates","ParserState","_object_pattern","_material_library_pattern","_material_use_pattern","_map_use_pattern","_face_vertex_data_separator_pattern","newTaskId","dataChunk","verticesSizes","taskId","parserState","textChunk","lastLine","isLastLineFull","tailDrop","regexpResult","lineFirstChar","verticesBuffer","pushToBuffer","vertexData","faceVertices","jl","vertexParts","v3","v1p","_parseAndFixIndex","INDICES_ID","v2p","v3p","v1t","UVS_INDICES_ID","v2t","v3t","v1n","NORMALS_INDICES_ID","v2n","v3n","bufferContainer","bufferId","POSITIONS_ID","NORMALS_ID","UVS_ID","bufferContainter","bufferSizeLimit","_bufferConstructorById","oldBuffer","sizeRequest","newSize","stringVal","bufferLength","ReallocatingArrayBuffer","State","sizes","objectName","StreamProxy","done","withUnion","unionSize","firstChunk","secondChunk","totalSize","chunksCount","union","unionPtr","reader","scope","streamProxy","loadPromise","initPromise","initParser","parsePromise","parseChunk","finishParser","postProcess","initParserWorker","initParserMain","parseTaskId","parseChunkWorker","parseChunkMain","zeroVerticesSizes","workerData","mergeState","finishParserWorker","finishParserMain","dst","src","mergeBuffer","srcBuffer","indicesBuffers","positionsIndices","uVsIndices","normalsIndices","basePath","mtlLibrary","getTexturePathsFromMtl","texturesArray","response","fetch","texturePaths","_decoder","_facesCount","_facesRead","_overReadLength","_unparsedTail","facesCount","patternFace","patternFloat","patternVertex","patternNormal","normalX","normalY","normalZ","unreadPosition","vertexCountPerFace","normalCountPerFace","vertexX","vertexY","vertexZ","dataSize","vertexstart","Buffer","parseHeader","nextChunk","totalLength","mergedChunk","_isBinary","parseBinary","FixedSizeBuffer","currentChunk","dataView","buildDataView","advanceChunks","parseASCII","ReallocatingBuffer","geometryData","materialData","matchDataViewAt","il","solid","_truncatedLine","_header","_currentElement","_currentElementCount","_parseASCIIElement","_handleElement","little_endian","loc","elemAndSize","_binaryReadElement","newCount","_parseASCIINumber","dataview","at","read","_binaryRead","elementName","findAttrName","names","attrX","attrY","attrZ","attrNX","attrNY","attrNZ","attrS","attrT","vertex_indices","currentDataChunk","currentTextChunk","currentElement","make_ply_element_property","propertValues","propertyNameMapping","truncatedLine","foundEndHeader","lineValues","droppedDataChunk","TypedArrayBuffer","verticesDesc","verticesTypeDesc","normalsDesc","normalsTypeDesc","uvsDesc","uvsTypeDesc","normalsBuffer","uvsBuffer","indicesDesc","indicesTypeDesc","nodeMap","generateVRMLTree","tokenData","createTokens","lexer","parser","visitor","createVisitor","lexingResult","cstOutput","RouteIdentifier","Identifier","nodeTypes","Version","NodeName","DEF","USE","TO","StringLiteral","HexLiteral","NumberLiteral","TrueLiteral","FalseLiteral","NullLiteral","LSquare","RSquare","LCurly","RCurly","Comment","tokens","tokenVocabulary","token","BaseVRMLVisitor","VRMLToASTVisitor","route","field","processField","use","stringLiteral","numberLiteral","hexLiteral","parseTree","tree","buildNodeMap","getNode","parseObject","Mesh","fieldValues","resolveUSE","buildNode","nodeName","build","buildGroupingNode","buildShapeNode","buildAppearanceNode","buildImageTextureNode","buildIndexedFaceSetNode","buildGeometricNode","parseFieldChildren","textureNode","url","Texture","normal","texCoord","ccw","colorIndex","coordIndex","normalIndex","texCoordIndex","colorPerVertex","normalPerVertex","colorNode","coordNode","normalNode","texCoordNode","Geometry","triangulatedCoordIndex","triangulateFaceIndex","colorAttribute","normalAttribute","uvAttribute","triangulatedColorIndex","computeAttributeFromIndexedData","toNonIndexedAttribute","flattenFaceColors","flattenData","triangulatedFaceColors","triangulateFaceData","computeAttributeFromFaceData","triangulatedNormalIndex","flattenFaceNormals","triangulatedFaceNormals","triangulatedTexCoordIndex","positionAttribute","Object3d","i1","i2","i3","triangulatedData","itemSize","faceData","array2","index2","inputText","_id","_storage","uri","TrianglesDrawMode","TriangleStripDrawMode","TriangleFanDrawMode","BINARY_EXTENSION_HEADER_MAGIC","BINARY_EXTENSION_HEADER_LENGTH","BINARY_EXTENSION_CHUNK_TYPES","EXTENSIONS","WEBGL_TYPE_SIZES","WEBGL_COMPONENT_TYPES","ATTRIBUTES","WEBGL_CONSTANTS","extensions","treeData","parseTreeData","GLTFRegistry","ext","dependencies","nodeDefs","nodeIndex","nodeLength","nodeDef","updateMappings","original","clone","mappings","pending","dependency","defs","def","bufferIndex","bufferDef","bufferViewIndex","bufferViewDef","accessorIndex","accessorDef","TypedArray","pendingBufferViews","bufferViews","bufferView","itemBytes","byteStride","itemSizeIndices","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","textureIndex","sourceIndex","textureDef","sourceDef","sourceURI","materialParams","mapName","mapDef","materialIndex","materialDef","materialExtensions","metallicRoughness","createPrimitiveKey","geometryPromise","addPrimitiveAttributes","meshIndex","meshDef","materials","meshes","mesh","toTrianglesDrawMode","objectPending","meshPromise","childPending","childrenDef","sceneIndex","sceneDef","nodeIds","primitiveDef","dracoExtension","geometryKey","createAttributesKey","attributes","attributesKey","assignAttributeAccessor","attributeName","accessor","gltfAttributeName","geometryAttributeName","numberOfTriangles","newIndices","newGeometry","headerView","chunkContentsLength","chunkView","chunkIndex","chunkLength","chunkType","contentArray","typedData","isZip","textureFiles","masterFile","_parseAssets","_initParser","_parseData","_postProcess","_fixTexturesPaths","texturesMap","zip","imageType","srcPrefix","dstPrefix","configs","srcFullPath","dataTyped","cortoLoader","zstdLoader","plnLoader","abortControllers","MAX_LOADING_THREADS","ABORT_ERROR","ABORT_EVERYTHING","ABORT_BY_TYPE","ABORT_BY_PATH","_activeAssetGroups","_isStoped","_isWarmedUp","_assetGroupQueue","activeAssetGroup","pushPromise","loadedData","assetsProcessed","AbortController","ind","objLoader","stlLoader","plyLoader","vrmlLoader","gltfLoader","glbLoader","usdLoader","determineLoader","abortController","code","createPlane","createTextPlane","createSphere","createAABox","createScreenTriangle","createCircle","createLine","createGrid","createLines","createArrow","xSegments","ySegments","stepX","stepY","seg1X","seg1Y","width_half","height_half","numVertices","posNormByteLength","uvByteLength","positionsItem","indicesData","posNormOffset","uvOffset","i4","generateIndBuf","getCharDescriptor","char","fontDescriptor","charCode","charDescriptor","cd","textureWidth","xStart","yStart","charsCount","charAdvance","currentX","planeBounds","atlasBounds","widthSegments","heightSegments","phiLength","thetaStart","thetaLength","thetaEnd","grid","numIndices","verticesRow","halfX","halfY","halfZ","posByteLength","indByteLength","posNextBuffer","positionsNextItem","positionsNext","vertIdBuffer","vertexIdItem","vertexIds","positionsData","indNext","posOffset","indOffset","addLineToBuffer","numPoints","deltaAngle","cosa","sina","nextPosBuffer","xLines","yLines","xStep","yStep","halfWidth","halfHeight","attribute","numLines","attrByteLength","attrBuffer","attrItem","posTypedBuffer","nextPosTypedBuffer","vertIdTypedBuffer","uvTypedBuffer","attrTypedBuffer","uvLength","uv","uvStartValue","vertOffset","uvValue","vertexIdOffset","screenUtils","globalViewport","localViewport","localX","localY","viewportX","viewportY","leftBottomX","leftBottomY","pixelRatio","physicalPoint","virtualPoint","physicalX","physicalY","_vec2Tmp","_vec3Tmp1","_vec3Tmp2","_vec3Tmp3","_vec3Tmp4","virtualScreenSize","objectBoundingCircleDiameter","objectPosition","physicalScreenSize","zeroViewportPosition","localCameraXDirection","worldCameraXDirection","spherePoint","screenSpherePointRaw","screenSpherePoint","screenSphereCenterRaw","screenSphereCenter","screenSize","vec3Tmp1","vec3Tmp2","pos1","pos2","segmentScreenLength","screenPosRaw1","screenPosRaw2","screenPos1","screenPos2","periodsCount","mouseUtils","getPngImageFromPixels","pixels","clampedPixels","iData","dataURL","gl","_gl","framebuffer","storage","buf","getBufferSubDataAsync","clientWaitAsync","sync","interval_ms","test","srcByteOffset","dstBuffer","dstOffset","BaseItem","GroupableItem","parentableProperties","parentObjectProp","photoDesc","_photoStateToExternal","BaseMeasureItem","affiliation","measuredObject","measuredObjectUUID","distance","sectionProperty","sectionDesc","contourProperty","contourDesc","measuredObjects","projectTree","groupProperties","modelProperties","scanProperties","pointCloudProperties","cadProperties","photoGroupProperties","distanceMeasureProperties","sectionGroupProperties","distanceMapProperties","ordering","_getConstructorByCadType","orderingItem","internalType","_projectContent","syncProjectContent","_properties","_ordering","_updated","numPolygons","photoGroupID","measureID","sectionIDx","contourIDx","targetProperty","messageType","resultStatus","workerTypes","getWorkerType","getRandomValues","rnds8","rng","validate","byteToHex","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","tl","tmh","colorUtils","componentToHex","exp","letters","bytesPerRow","temp","topOffset","bottomOffset","channel","scanner","greenThresh","yellowThresh","orangeThresh","originalColor","correctionMatrix","originalColorHSL","originalColorVector","colorCorrectedVector","colorCorrectedRgb","iteration","initialHue","halton","paletteFull","pathUtils","path1","path2","idGenerator","idBase","newID","fusions","scans","cads","pointClouds","decodeText","arrayToString","uint32ToUint8Array","uint32","tmp","arrayDataToNumber","arrayBuffer","typedBuffer","isDataZipped","getTimeStamp","dateObj","hours","minutes","seconds","channelByte","getPositionByMinmax","rayNW","rayNE","raySW","raySE","normalTop","normalBottom","normalLeft","normalRight","vec4Tmp","vec4Tmp2","rotation","calculateRayPersp","planeMiddleVert","planeMiddleHor","planeLeft","calcBoundingPlane","planeRight","planeTop","planeBottom","point1","point2","positiveDistVerticesCounter","calcOrthoCameraFrustum","vec4Tmp3","vec4Tmp4","rightNormal","leftNormal","topNormal","bottomNormal","tanFOV","locX","locY","ray","calcOrthoCameraProjection","dist","readDDs","bufferIn","imageOut","fourCC","blockSize","dataOffset","dataLength","unCompressDxt","libInternalFormat","MAX_DEPTH","MAX_FACE_NUM","_stack","bboxBuffer","sizeBuffer","indStack","currIndex","oneThird","cell","cellInd","cellDepth","nextLevelDepth","selfInd","bb","from","intersector","distances","toInv","tlim","vertsMask","leaves","inside","squaredRadius","intersection","numSelected","leaf","addAll","fromX","fromY","fromZ","dirX","dirY","dirZ","t1","t3","t5","t2","t4","t6","tmin","tmax","inlim","maskPixels","depthPixels","bounding","mvp","linearDepth","plane","minx","miny","minz","maxx","maxy","maxz","startInd","finalInd","buildHalfEdge","UintArray","V2e","E2e","HalfEdgesMap","currentVertLocalInd","vIndCurr","vIndNext","nextVHalfEdges","vIndCollCurr","vIndCollNext","MAX_ITEMS_NUM","buildOctree","isPointCloud","bboxArray","sizeArray","linkArray","buildStartTime","addChildren","leafInd","createLeaf","parentInd","parentBBOfset","pminx","pminy","pminz","pmaxx","pmaxy","pmaxz","cenX","cenY","cenZ","mx","px","my","py","mz","pz","childrenIndicesList","indices0","indices1","indices2","indices3","indices4","indices5","indices6","indices7","offset1","offset2","offset3","cellIndices","expandAABBLoose","buildBordersMask","borderMask","edgesSet","maxIndex","ind0","ind1","ind2","hash1","hash2","hash3","hash","_INTERSECTION","DEPENDENT_BUFFER_NAMES","attrName","itemBuffer","maskBuffer","maskItem","verticesNum","activeSelectionMaskBuffer","activeSelectionMaskItem","bstride","rowData","activeMask","useWorker","withNormals","withBorder","taskType","verticesNormalsItem","borderMaskItem","verticesNormals","verticesBorder","localOrigin","localDirection","has","selectionMask","e2eType","edges2EdgesItem","v2eType","verts2EdgesItem","vertexBorderMaskItem","meta","verticesCount","vertexIDBuffer","vertexIDItem","ids","vertRemoveMask","ptr","distanceItem","indicesArray","globalPositionsItem","vertCount","indCount","geometryBuffer","divisor","byteSize","isDetached","hasOwn","classes","argType","inner","zeroed","reseted","expanded","expanding","nearPlane","minPerspectiveNear","xmin","ymin","zmin","xmax","ymax","zmax","setLine","diffx","diffy","diffz","FrameBuffer","colorAttachments","depthAttachment","stencilAttachment","attachment","mrtUsed","mrt","targets","attachmentsCount","colorAttachment","checkRenderBufferUseStencil","sceneOwner","attachmentsStorage","surfelsNormalizationScene","postBlendingCopyScene","objectIDScene","generalPurposeScene","surfelsNormalizationShader","normalizationScreenPlane","copyShader","copyScreenPlane","clearScene1","clearScene2","clearFrameBuffer1","clearFrameBuffer2","workspaceFrameBuffer","objectIDFrameBuffer","generalPurposeFrameBuffer","surfelsDepthFrameBuffer","postBlendingFrameBuffer","resolveFrameBuffer","surfelsAdditiveFrameBuffer","cadsAdditionalFrameBuffer","additiveTexture","blendingTexture","blendTexturesType","commonTextures","clearSet1","clearSet2","depthBuffer","mainColorTexture","surfelsColorTexture","usedTexture","objectIDTexture","generalPurposeTexture","areAnyColorAttachments","usedBuffer","dummyColorTexture","dummyCommonTextures","clearScene1Attachments","clearScene2Attachments","mainSceneColorAttachments","depthSceneColorAttachments","additiveSceneColorAttachments","postBlendingSceneColorAttachments","cadsAdditionalSceneColorAttachments","cadsAdditionalSceneDepth","sectionAnalysisPickScene","sectionAnalysisPickFB","interfaceFB","postBlendingFB","postBlendingCopyFB","colorTexture","sectionAnalysisPickTexture","depth","_mat4Tmp","fromMatrix","toMatrix","ivnProjMat","screenQuadCamera","updateDepthScene","gridScene","screenChunk","updateDepthShader","updateDepthPlane","updateDepthFrameBuffer","gridFrameBuffer","tmpColorTexture","_reduceFactor","blurEnabled","copyScene","blurHorScene","blurVerScene","copyPlane","blurHorShader","blurHorPlane","blurVerShader","blurVerPlane","drawScene","drawShader","drawModel","drawFB","drawPlane","tmpTexture1","tmpTexture2","copyFB","blurHorFB","blurVerFB","frameBuffer","wireframeColor","mainScene","leftSplitCompareScene","rightSplitCompareScene","screenQuad","mainScreenPlane","leftCompareScreenPlane","rightCompareScreenPlane","mainFB","leftCompareFB","rightCompareFB","workspaceColor","leftSplitCompareColor","rightSplitCompareColor","primitiveIDColor","leftSplitIDColor","rightSplitIDColor","mainAttachments","leftCompareAttachments","rightCompareAttachments","cameraMain","cameraScreen","mainFramebuffer","mSamplingBuffer","copyTexture","depthFormat","mSamplingTexture","mSamplingDepthBuffer","SCALE","cameraCopy","cameraBillboard","billboardScene","_rightOffset","_topOffset","_screenWidth","_screenHeight","currScreenHeight","currScreenWidth","mainCamera","copyFramebuffer","_vec4Tmp","preprocessorRules","outlineColor","rectangle","selectionSetting","diffuseColor","useSmartBlending","maskScene","interfaceShader","maskShader","interfacePlane","maskPlane","sc","blendScene","blendShader","blendScreenPlane","scenes","drawFrameBuffer","blendFrameBuffer","copyFrameBuffer","texelSize","drawScreenPlane","transparentBackfaceEnabled","drawFramebuffer","inputColor","maskColor","inputMask","blendSnece","lassoChunk","mainDepthBuffer","depthStencilBuffer","darkness","hardness","low","mid","high","strength","sharpness","pass","passID","colorBalanceScene","sharpnessScene","grainScene","vignetteScene","colorBalanceShader","sharpnessShader","grainShader","vignetteShader","colorBalanceScreenPlane","sharpnessScreenPlane","grainScreenPlane","vignetteScreenPlane","effect","inputTexture","needsResolve","sceneID","backGroundScene","bc","pixelRation","OUTLINE_COLOR","OPAQUE_OUTLINE_TRANSPARENCY","TRANSPARENT_OUTLINE_TRANSPARENCY","opaqueLinesScene","transparentLinesScene","opaqueMaskScene","transparentMaskScene","outlineScene","blendingScene","textScene","opaqueLinesMaskShader","opaqueMaskScreenPlane","transparentLinesMaskShader","transparentMaskScreenPlane","outlineShader","opaqueHighlightScreenPlane","transparentHighlightScreenPlane","blendingShader","blendingScreenPlane","opaqueMaskFB","transparentMaskFB","blendingFB","opaqueOutlineScreenPlane","opaqueMaskTexture","transparentOutlineScreenPlane","transparentMaskTexture","drawTexture","depthStencil","leftInterfaceScene","rightInterfaceScene","leftModelScene","rightModelScene","leftModelFramebuffer","rightModelFramebuffer","leftInterfaceFramebuffer","rightInterfaceFramebuffer","usedLeftModelTexture","usedRightModelTexture","leftModelTexture","rightModelTexture","leftModelDepthStencil","rightModelDepthStencil","leftColorAttachments","rightColorAttachments","leftTexture","rightTexture","leftObject","rightObject","leftSceneDrawMode","rightSceneDrawMode","leftTextureUsage","rightTextureUsage","skipChunkTests","_setObjectRenderSettings","_updateShaderCache","_isObjectDirty","shadersCache","textureUsage","_settingsHash","shaderData","uniName","uniLocation","uniformLocations","uni","chunkAttributes","cachedData","leftModelShader","leftModelScreenPlane","rightModelShader","rightModelScreenPlane","vp","BORDER_COLOR","BORDER_DEFAULT_TRANSPARENCY","BORDER_SELECTED_TRANSPARENCY","BORDER_DEFAULT_LINE_WIDTH","BORDER_ACTIVE_LINE_WIDTH","defaultMaskScene","hoveredMaskScene","activeMaskScene","defaultMaskShader","defaultMaskScreenPlane","hoveredMaskShader","hoveredMaskScreenPlane","activeMaskShader","activeMaskScreenPlane","defaultWidth","defaultOutlineShader","defaultOutlineScreenPlane","hoveredOutlineShader","hoveredOutlineScreenPlane","activeWidth","activeOutlineShader","activeOutlineScreenPlane","defaultMaskFB","hoveredMaskFB","activeMaskFB","outlineFB","defaultMaskTexture","hoveredMaskTexture","activeMaskTexture","NULL_LINK","BACKGROUND","COMPARE_DRAW","GRID","WIREFRAME","OUTLINE","INTERFACE","PHOTOS","MEASURE_LINES","MIRROR","COPY","COMPARE_MIX","LASSO","ANTIALIASING","SELECTION","READ_COLOR","TRANSFORM","POSTEFFECT","VIEWCUBE","isMain","gridCamera","workspaceCopyCamera","previewCamera","backgroundPass","mainPass","compareDrawPass","gridPass","wireframePass","interfacePass","photosPass","measureLinesPass","mirrorPass","copyPass","compareMixPass","selectionPass","lassoPass","AAPass","readColorPass","transformPass","postEffectPass","viewcubePass","fullUpdate","firstPass","stage","_flattenNames","_flattenNames2","_interopRequireDefault","_mergeClasses","_mergeClasses2","_autoprefix","_autoprefix2","_hover2","_hover3","_active","_active2","_loop2","_loop3","ReactCSS","activations","activeNames","merged","ObjectItemType","MeasureItemType","CadType","PhotoState","_workersTaskBoard","_uniqueID","workerType","availableWorker","worker","task","workerWrapper","originType","work","_cache","_webgl1Dictionary","_webgl2Dictionary","_maxSamples","_multisamplingSupported","webgl1Get","getVertexArrayObject","getMultipleRenderTargets","getInstancedArrays","getTextureFilterAnisotropic","getMinMaxBlending","originalName","webgl2Get","vao","primCount","div","samplesReturned","samplesCount","fbo","framebufferStatus","arrayPool","elements","nbBytes","bitArray","Statistic","report","getReadableMemoryStr","REPORT_INTERVAL","_lastReportTime","_currentRenderGraphId","_renderGraphsId","_scenes","_textureIsAttachment","_objectToStatistics","_reportMemUsage","_reportBandwidth","_globalStat","_detailedStat","renderGraph","passId","renderGraphId","renderGraphStat","passStat","sceneEntry","newStatistic","objectStatisticsSet","statistic","previousAllocation","allocationString","constructAllocationString","usageInfo","constructUsageTable","allocation","releaseString","usageString","memoryUsage","lastReportedMemory","bandwidth","isAllocation","graphId","renderGraphInfo","passInfo","memInBytes","shallowCompare","obj1","obj2","removeEmpty","getElementBy","ms","onComplete","isEmpty","buildFormData","formData","parentKey","jsonToFormData","getShortName","buf2hex","getTimeLeftString","miliseconds","reason","shortHours","hoursString","getExponent","DIMENSIONS","getFileSizeString","bytes","noDimension","exponent","dimension","multipleSelect","changeStateFunc","all","isSwitchMode","add","__","noSwitch","_selected","_add","formatPropertyValue","toFixedNumber","findInGroup","items","groupType","forEachInGroupPlain","allPlain","findInGroupPlain","makeGroupsOfObjects","excludePredicate","parentPropName","parentColorPropName","notAlignedGroupId","makeGroups","groupPropName","groupPropValue","notAlignedGroupName","alignGroups","ungroupedItems","_mappedList","normalizeRGB","rgbStringToRgbObject","rgbString","hexToRgb","denormalizeRGB","getRandomColor","rgbToHsl","hslToRgb","hue2rgb","generateShades","shadesIterator","iterations","generateColorInSequence","getCookie","matches","setCookie","_options","updatedCookie","optionKey","optionValue","objToSelectOptions","jsonFormat","rgbToHex","groupsToOptions","isInSubFolder","folders","folderId","forldersIds","getShortScanLabel","_label","getKeyFromValue","getPairs","pairs","jsonToQuery","key0","keysRest","hexToBinaryString","formatSelected","selectedItems","itemsInGroup","subItems","uuidv4","rndSession","stringWithSpacesToNumber","getObjectsMeta","getDownloadAttachmentLink","projectId","annotationId","getClosest","needle","haystack","aDiff","bDiff","intersectArrays","filterTextInputs","uploadingStatus","_status","licenseNames","getLicenseNane","arrayIntersection","arr1","item1","item2","extendStatics","__extends","__assign","__rest","__decorate","decorators","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","__awaiter","_arguments","generator","adopt","fulfilled","rejected","__generator","body","verb","op","__createBinding","k2","__exportStar","__values","__read","ar","__spread","__spreadArrays","__await","__asyncGenerator","resume","settle","fulfill","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__importStar","mod","__importDefault","__classPrivateFieldGet","receiver","privateMap","__classPrivateFieldSet","factor","side","wrapper","filter","samples","MISS","INTERSECTION","INSIDE","depthScale","intersectEvaluator","edge1","edge2","intersected","x3","y3","z3","invDet","tVec","qVec","currDistance","absDist","sphereCenter","cy","cz","dz","pixel","selectedVerticesCounter","NDCtoScreen","inScreen","readValue","emptyPixels","overlapped","pureZCPU","colorOffset","depthOffset","getDepth","linearZGPU","linearZCPU","orthoDepthToEye","perspDepthToEye","extents","bb1","bb2","origin","toOrigin","lowx","lowy","lowz","outx","outy","outz","inx","iny","inz","planeNormal","planePoint","dotNT","dotPV","mat3Tmp","plane1","plane2","plane3","matrixx","matrixy","matrixz","scaleFactor","unpackDepth","WebGL1VertRules","WebGL1FragRules","WebGL2VertRules","WebGL2FragRules","applyRules","shaderText","replacement","customRules","hashBufferIn","hashBufferOut","hashCodeNumber","initValue","hashCodeString","generateHashCode","WEBGL2_SYSTEM_GENERATED_VALUE","WEBGL1_SYSTEM_GENERATED_VALUE","gl_types","uniform","sfactor","dfactor","funcRgb","funcAlpha","scissor","units","frontFace","vertText","fragText","customPreprocessRules","processedVertexText","processedFragmentText","directivesText","extractDirectivesText","program","vertShader","compileShader","fragShader","uniNumber","uniformName","uniformLocation","systemGeneratedValue","attrNumber","combineDirectives","shaderDirectives","serviceDirectives","isWebGL2","standardDerivatives","directive","toShaderValue","isNonNullable","isNullable","Pass","sceneNumber","isPowerOfTwo","normalizePlane","projectPointOnPlane","getBboxSize","getBboxCenter","getPointVectorNearestPoint","pointA","pointB","pointO","AB","OA","toRadian","angle","toDegree","lerpValues","decomposeMat4","quaternion","invSX","invSY","invSZ","createMirrorMatrix","outMatrix","centroid","planeODR","directionThroughSVD","angle2D","transformVecMat4","vector","orthogonalization","getShiftedMatrix","vcolumn","svdcmp","svnumber","minVal","condSign","its","jj","anorm","rv1","flag","nm","pythag","absa","absb","cacheID","hasSelected","chunkBbox","loadCachedData","buffersNames","oldCacheInfo","oldInfo","buffType","hasId","buffName","cacheInfo","ERASE_BUFFER_NAMES","DEFEATURE_BUFFER_NAMES","SELECT_BUFFER_NAMES","SMOOTH_BUFFER_NAMES","HEAL_TEXTURE_BUFFER_NAMES","historyLocked","steps","modifiedFrames","modifiedObjects","WAITING","PREVIOUS_STEP","NEXT_STEP","stepToApply","currentUndo","maxUndos","currentStepID","stepID","objectsState","frameState","applyTexture","addNewChunks","deleteOldChunks","updatePromises","updateAllExistedChunks","updateDataStructures","objState","getState","chunksIn","chunksUp","chunksOut","frameStateInd","frameTextureInfo","chunkUp","buffersToSave","chunkState","chunkIn","chunkOut","numSteps","isSelectionPlaneStep","isCustomStep","modifyInfo","checkedUpChunks","chunkUpID","prevStepFrameState","prevStepChunkStateIdx","prevStepChunkState","reportHistoryStack","getHistoryStack","currStep","newStepData","newMaxUndos","currentPos","moveStepState","toStep","fromStep","activeSelectionSteps","getBuffersNamesByStepType","stepData","modifiedFrame","savedTextureInfo","textureInfo","textureColor","textureBuffer","chunkAlreadyInFrame","framesState","needsDataStructsUpdate","dataStructPromises","targetData","dataInd","stepFrom","stepTo","existedFrameState","objectState","historyStack","dupliList","vertInd","chunkDuplis","dupliChunk","dupliVertInd","chunkToDuplis","searchInChunk","hashMap","verticesBorderMaskItem","verticesBorderMask","hashVertex","hashEntry","newDuplicates","anotherChunk","anotherChunkPositions","anotherChunkDuplis","newHashEntry","_needOctreeUpdate","_needNormalUpdate","_needHalfEdgesUpdate","_objectsUpdatePromises","OS_OCTREE","OS_HALF_EDGE","OS_BOUNDING","OS_NORMAL","setNeedsUpdate","update","hasNormals","needsAverage","updateNormals","updateBoundings","updateOctree","updateHalfEdges","isUpToDate","finishUpdate","shouldBuild","getNeedsUpdate","needsDuplis","updates","getContainer","zoomTimeout","zoomIsActive","screenPoint","mainWindow","billboardCamera","ndcCoord","recalculatedScreenCoord","button","buttons","_vec4Tmp1","_mat4Tmp1","Camera","projMat","verticalDiff","invertedViewProject","xLocal","yLocal","point3D","needsMatUpdate","_textureCounter","ColorRGBATexture","ColorFloatRenderingTexture","Renderbuffer","DepthStencilTexture","ColorRG32FTexture","ColorRGBACompressedTexture","CubeMap","fixTextureSize","magFilter","minFilter","textWrapper","imageTarget","anisotropy","aniso","maxSamples","fixBufferSize","maxTextureSize","newWidth","newHeight","maxRbSize","_VEC3_TMP","_VEC3_TMP2","_VEC3_TMP3","_MAT4_TMP","minX","minY","maxX","maxY","mat4Tmp","selectionBuffer","oneSideSelection","totalSelected","mvpMatrix","clearOldSelection","toLocalMat4","localPoint","selectedChunks","matrices","vec3Tmp3","vec3Tmp4","vec3Tmp5","vec3Tmp6","vec3Tmp7","currenGeometry","toWorldMat4","worldVertex","vertexDistance","localTo","localDistance","numberToObjectSpace","geom","isSelection","activeSelectionMask","selectionValue","hasSelection","destPoint","hitted","tmpHitPoint","outHitPoint","intersectedObject","toLocal","linearMeasureList","geodesicMeasureList","sectionList","serializeObjectList","jsonSection","serializationFn","serializeObject","serializeBaseObject","serializeCommonMeasure","serializeSection","groupJSON","serializeGroup","groupData","shadesInGroup","sectionGroupJSON","sectionOffset","zcut","sections","section","contours","contour","measureJSON","initGeometries","initTextures","hasTargetScan","hasRawGeometry","targetRawScan","combineFusionProperty","combineScanProperty","numTexturedFrames","surfelsProperty","numSurfels","frameNumPolygons","frameNumVertices","numFrames","needSurfels","sourcePath","framesPath","framesJson","combineCadProperty","combinePhotoGroupProperty","combineMeasureStructure","measureData","propertiesObject","zCutData","distanceMapData","textureCounter","isRegistered","undistMapData","undistMapProperty","isSurfels","framesData","parsePhotoOrientation","pointsData","knotData","sectionsData","orientationString","_currentJson","_projectDirectory","pointCloudList","orderingList","linearMeasuresList","geodesicMeasuresList","distanceMapsMeasuresList","rawScansList","existedColors","objColorsInGroups","scanData","fixRawScansTargeting","storeShade","pointCloudData","fusionData","linearMeasureData","geodesicMeasureData","sectionMeasureData","createSectionProperty","createDistanceMapProperty","photoGroupData","getHexPaletteRandom","rawScan","DefaultShader","fragModifiedText","useMRT","fragOutRegex","fragDefRegex","outputText","outputCounter","outputIndex","outputReplacer","numLights","specularColor","xrayEdgeFalloff","xrayIntensity","colorMixFactor","pointSize","objectSize","backfaceColor","chunkColor","mixColor","lightColors","lightPositions","viewProjectionMatrix","viewInverseMatrix","cameraPosition","modelMatrix","textureProjMatrix","textureColorMatrix","selectionColor","adjustmentSettings","textureGamma","undefinedColor","thrColor","minSearchDistance","maxSearchDistance","minGradientDistance","maxGradientDistance","minThrDistance","maxThrDistance","distanceSearchRange","distanceGradientRange","distanceThrRange","surfelsNoiseSize","distanceColors","filteringMode","directiveString","projectionMatrix","shading","oldShading","CopyShader","getAttributeNameByID","getTypedArrayByID","getTypeByID","getAttributeIDByName","checkDegenerateTriangle","DEFAULT_ATTRIBUTES","DEFAULT_NO_INDICES_ATTRIBUTES","_astudioMaterialStorage","_matCapStorage","_pbrMaterialStorage","ASTUDIO","MATCAP","SURFELS","CAD","CAD_EDGES","PBR","NONE","_releaseMaterial","_setMaterial","astudioMaterial","materialEntry","resources","EDGE_COLOR","canReportError","observer","closed_1","destination","isStopped","Subscriber","toSubscriber","nextOrObserver","complete","rxSubscriber","pipe","fns","pipeFromArray","Observable","subscribe","operator","observable","observerOrNext","sink","promiseCtor","getPromiseCtor","subscription","subscriber","destinationOrNext","SafeSubscriber","_parentOrParents","_parentSubscriber","useDeprecatedSynchronousErrorHandling","wrappedComplete","version_1","parser_1","lexer_public_1","tokens_public_1","lookahead_1","llk_lookahead_1","errors_public_1","exceptions_public_1","lexer_errors_public_1","gast_1","gast_2","cst_dts_gen_1","clearCache","render_public_1","Parser","createNamedContext","historyContext","createNamedContext$1","Router","pathname","MemoryRouter","Lifecycle","Prompt","_ref$when","when","method","cacheLimit","cacheCount","compilePath","generatePath","Redirect","computedMatch","_ref$push","push","history","staticContext","prevLocation","cache$1","cacheLimit$1","cacheCount$1","compilePath$1","pathCache","regexp","matchPath","_options$exact","exact","_options$strict","strict","_options$sensitive","sensitive","paths","matched","_compilePath","isExact","memo","isEmptyChildren","evalChildrenDev","Route","context$1","addLeadingSlash","addBasename","basename","stripBasename","createURL","staticHandler","methodName","StaticRouter","_this$props$basename","_this$props$context","_this$props2$basename","_this$props2$context","_this$props2$location","Switch","withRouter","wrappedComponentRef","remainingProps","useContext","useHistory","useLocation","useParams","useRouteMatch","mrt_ext","getMaxColorBuffers","checkFloatingTexturesRendering","checkTextureCompression","reportGpuInfo","maxColorBuffers","debugInfo","vendor","checkIntelIntegrated","_VEC2_TMP","LineShader","_lineColorTypeString","lineWidth","lineLength","texPeriod","texOffset","viewMatrix","fadeDistance","viewTarget","distanceRange","viewPoint","tolerance","horAngle","vertAngle","outTrans","sceneMinmax","perspTrans","recalculateOrthoTrans","correctedDirection","dotVZ","upVec","camPos","trans","AbstractPacker","DEFAULT_HEADER","SUPPORTED_TYPES","COMPRESSION_FORMAT_SIZE","STRUCTURE_VERSION_SIZE","BUFFERS_COUNT_SIZE","BUFFER_ID_SIZE","BUFFER_FULL_SIZE_SIZE","BUFFER_COMPRESSED_SIZE_SIZE","buffers","resultSlice","buffersCountOffset","buffersCount","headerSize","tableEntrySize","buffersCountData","idData","bufferSizeData","tableEntryOffset","tableEntry","slice","structureVersion","buffersCounter","buffersData","buffersSizes","bufferSize","bufferData","unzipData","directory","entries","entryName","sortedEntries","matchA","matchB","zipParams","centralDirectory","zipped","slicePacker","zipPacker","currentPacker","containerPromise","getPackerBySignature","packerNum","packer","packedContainer","UnsubscriptionErrorImpl","errors","UnsubscriptionError","Subscription","unsubscribe","_unsubscribe","_subscriptions","parent_1","flattenUnsubscriptionErrors","sub","teardown","subscriptions","subscriptionIndex","empty","errs","model_1","visitor_1","helpers_1","process","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","draining","currentQueue","queueIndex","cleanUpNextTick","drainQueue","Item","dir","_canvas","_pointTmp","_coords","_clientCoords","initEvents","clientToPhysical","cleanupEvents","resizeHandler","cursorLockHandler","cursorUnlockHandler","_instanceExt","_runningTimeQuery","_awaitingTimeQuery","attachGeometry","detachGeometry","attachInstancedGeometry","detachInstancedGeometry","initGeometrySetters","prepareDrawing","clearMask","cc","opaqueQueue","shaderID","sharedShader","setupShader","drawMesh","blendQueue","blendingForbidden","resolveFramebuffer","drawResolve","setupUniforms","isInFrustum","importedChunksUpdated","importedModel","importedChunk","testPassed","instancedAttributes","modelOwner","attributesMapsForModel","attributesObject","instanceCount","readFrameBuffer","blit_mask","uniSetters","VAOExtension","attributesMap","chunkAttributesMap","instanceDivisor","importedAttributesMap","instancedAttributesMap","isLeftButtonPressed","isRightButtonPressed","isMiddleButtonPressed","isMouseZooming","isCtrlPressed","DEBUG","graph","AAScene","oldWidth","oldHeight","setRenderingSize","_initReject","_initialized","_animationFrameRequestID","_lastTime","commonFacadeAPI","rightOffset","phyViewport","oldPhyViewport","viewcube","maxFbSize","mainRenderGraph","commonFacadeFunctions","initCommonEvents","derivedFrameFunction","derivedResizeFunction","terminateInitialization","renderMode","wireframeEnabled","renderingMode","arrayEach","OBJECT_ID","GENERAL_PURPOSE","SECTION_ANALYSIS","BufferObject","BufferReaderType","GPUBufferReader","bufferID","pixelBase","pixelBaseOpt","_pickInRadius","rgbToInt","rgbToFloat","windowViewport","bufferWidth","bestDistance","bestCoord","ii","freeSelf","arrayMap","signal","contentLength","fetchReader","receivedLength","chunksAll","mergedChunks","_enable_super_gross_mode_that_will_cause_bad_things","freeGlobal","arrayLikeKeys","baseKeys","baseHas","isEmpty_1","map_1","forEach_1","values_1","has_1","clone_1","utils_1","follow_1","gast_resolver_public_1","recoverable_1","looksahead_1","tree_builder_1","lexer_adapter_1","recognizer_api_1","recognizer_engine_1","error_handler_1","context_assist_1","gast_recorder_1","perf_tracer_1","apply_mixins_1","checks_1","ParserDefinitionErrorType","EMPTY_ALT","that","parserInstance","defErrorsMsgs","currRuleName","wrappedRule","originalGrammarAction","recordedRuleGast","resolverErrors","validationErrors","lookaheadValidationErrors","allFollows","_b","defError","CstParser","configClone","EmbeddedActionsParser","$errors","$events","$terminate","$transferable","$worker","subscribeToResult","outerSubscriber","outerValue","outerIndex","OuterSubscriber","innerValue","innerIndex","innerSub","_workersCounter","MAX_WORKER_COUNTER","createWorker","spawnPromise","workers","_x","_r","arrayWithHoles","unsupportedIterableToArray","nonIterableRest","_inheritsLoose","PICK_MOVE_DISTANCE","BILLBOARD_OPACITY","ROTATION_OBJECT_BASE_OPACITY","ROTATION_OBJECT_SELECTED_OPACITY","VIEWCUBE_OBJECT_ID","ROTATION_OBJECT_CW_ID","ROTATION_OBJECT_CCW_ID","LABEL_X_OBJECT_ID","LABEL_Y_OBJECT_ID","LABEL_Z_OBJECT_ID","SELECT_EDGE_Z_ID","SELECT_VERTEX_OBJECT_ID","LABEL_AXIS_OFFSET","VERTEX_TYPE","EDGE_TYPE_X","EDGE_TYPE_Y","EDGE_TYPE_Z","FACE_TYPE","ANGLE_SPEED","Navigation","angles","navigationTable","currentSelectId","selectedRotationArrowId","animation","pressPositionX","pressPositionY","lockState","_enabled","createNavigationTable","colorTexturePromise","createTexture","billboardEdgeTexturePromise","billboardFaceTexturePromise","billboardVertexTexturePromise","rotationTexturePromise","viewCubePass","viewCubeScene","viewCubeshader","axesShader","billboardShader","rotationShader","navigationPos","repeatCount","billboard","viewcubePart","rotationTexture","cwRotationModel","rotationCWGeometry","ccwRotationModel","rotationCCWGeometry","onMouseMove","onMouseUp","_X_DIR","_Z_DIR","_QUAT_TMP1","_QUAT_TMP2","_QUAT_TMP3","_VEC2_TMP2","viewCubeCamera","camDir","quatZ","xDirXY","camDirProjectedXY","quatX","zDirYZ","camDirProjectedYZ","quatY","camDirProjectedXZ","labelX","labelY","labelZ","navigation","billboardSceneLength","previousRotationArrowId","intersectRotationArrows","cwOpacity","ccwOpacity","billboardId","clientCoords","_quatTmp","cameraControl","startQuat","finalQuat","dq","startDist","startTarget","oldHor","oldVer","newHor","newVer","newView","quatHor","newRight","objUp","startHeight","finalHeight","horDelta","invQuat","deltaQuat","unitQuat","vertDelta","currTarget","hor","ver","angleTime","isInsideBbox","cwBbox","ccwBbox","checkDCE","DEFAULT_CONSTANT_RETRY","genericRetryStrategy","maxRetryAttempts","scalingDuration","excludedStatusCodes","logger","attempts","_chunk","retryAttempt","uploadRetryStrategy","continueUpload","constantRetryStrategy","statusCodes","CAM_ROT_VELOCITY","CAM_MOUSE_ZOOM_MULT","CAM_MOUSE_PAN_MULT","compareModeEnabled","leftRenderMode","rightRenderMode","leftDrawMode","rightDrawMode","isLeftWireframeEnabled","isRightWireframeEnabled","rg","defaultFlightAnimation","_isCompareMode","_leftObjectID","_rightObjectID","_leftRenderMode","_rightRenderMode","_leftColorMode","_rightColorMode","WP_DERIVED","transparentCanvas","commonPromise","updateWSProject","loadExternalModel","anotherMode","updateRenderSettings","ROTATION_HOR","optimalDistance","utils","cameraView","startCameraPos","rotationCenter","distanceToTarget","resultedDistance","distanceDelta","camUp","animationCurrentPosition","animationCurrentRotation","animationCurrentCamDir","animationCurrentCamRight","animationCurrentLocalRotation","animationCurrentLocalPos","animationCurrentRotatedLocalPos","animationCurrentRotatedShiftedLocalPos","animateRotationAndPosition","animationCurrentDistance","xPos","WP","anotherObject","checkObjectValidity","removeUnselectedObjects","setCameraPosition","prepareObject","Progress","progressSum","timings","updateMaterial","texturedMode","hasPbr","ScreenShader","BrowserRouter","HashRouter","resolveToLocation","currentLocation","normalizeToLocation","forwardRefShim","forwardRef","isModifiedEvent","LinkAnchor","forwardedRef","navigate","ex","Link","_ref2$component","replace","href","forwardRefShim$1","forwardRef$1","joinClassnames","NavLink","_ref$ariaCurrent","ariaCurrent","_ref$activeClassName","activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","toLocation","escapedPath","l1IDx","l2IDx","changedObjects","updatedChunks","getTag","isPrototype","hasOwnProperty","toPropertyKey","coreJsData","maskSrcKey","uid","isMasked","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","getNative","Wrapper","colorObj","Animation","elapsed","finish","linearTween","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","tmpArray","ChunkInDrawable","Chunk","getIndicesType","memoryUsageReportOwner","attName","positionsAttribute","instanceExt","vertexInd","reportOwner","availableGeometryAttrs","buffersToUnload","geomAttrName","shaderAttrName","shaderName","geomName","layoutItem","positionsElemSize","writeAttribute","normalizationRequired","createAttribute","bufferToUnload","needsSelection","selectionMaskExists","needsInitSelectionMask","needsRemoveSelectionMask","dupliVertices","vertexMask","averagedNormalX","averagedNormalY","averagedNormalZ","vertexIndex","dupli","dupliIndex","dupliNormals","sqrtLen","normalize","createVBO","attData","vbo","_pbrResources","matCapTexture","_initPbrResources","cleanupMaterialsResources","_loadPbrTextures","irradianceDescriptors","irradiancePromises","anyIrradianceImageDesc","irradianceTexture","MIPS_COUNT","prefilterDescriptors","prefilterPromises","anyPrefilterImageDesc","prefilterTexture","brdfLUTPath","brdfLUTImage","brdfLUTTexture","EShareProjectRole","ESharingKind","ESharingListItemKind","ESharedProjectRole","EInviteStatus","Symbol","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","baseGetTag","nativeObjectToString","isOwn","unmasked","isProduction","invariant","provided","baseValues","getSymbolIterator","iterator","$$iterator","isAbsolute","spliceOne","resolvePathname","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","hasTrailingSlash","valueEqual","aValue","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","parsePath","search","hashIndex","searchIndex","createPath","createLocation","locationsAreEqual","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","listeners","appendListener","notifyListeners","getConfirmation","supportsHistory","ua","supportsPopStateOnHashChange","supportsGoWithoutReloadUsingHash","isExtraneousPopstateEvent","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","needsHashChangeListener","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","transitionManager","setState","handlePopState","handlePop","handleHashChange","forceNextPop","ok","revertPop","fromLocation","toIndex","allKeys","fromIndex","go","initialLocation","createHref","prevIndex","nextKeys","goBack","goForward","listenerCount","checkDOMListeners","isBlocked","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","stripHash","getHashPath","pushHashPath","replaceHashPath","createHashHistory","canGoWithoutReload","_props$hashType","hashType","_HashPathCoders$hashT","encodePath","decodePath","ignorePath","locationsAreEqual$$1","encodedPath","allPaths","baseTag","hashChanged","nextPaths","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","baseFlatten","flatten","hostReportError","arrayWithoutHoles","iterableToArray","nonIterableSpread","_minmaxTmp","_minmaxTmp2","ObjectWrapper","locked","scanColorTextureBuffer","currentTexture","isGeometryLoading","frameToDelete","localMinmax","frameMinmax","drawables","colorRequested","colorTmp","worldMinmaxs","frameTextureUsed","global","fileReader","throwError","scheduler","dispatch","_db","_initPromise","indexedDB","_getDataBase","openRequest","batch","chunksCounter","_putPackage","_getPackage","_clearDataBase","db","request","keyList","deleteRequest","transaction","baseClone","CLONE_SYMBOLS_FLAG","baseIndexOf","isString","toInteger","includes","readChunk","uint8Data","compressionFormatSize","structureVersionSize","attrsCountOffset","attrsCounter","metadataUint32Size","metadata","compByteSize","compAttribute","uint8Attribute","fixIndicesBuffer","writeChunk","compressedBuffers","encoderNameByteSize","versionByteSize","attrsNumByteSize","attributeMetaByteSize","attributeMetaSize","numAttributes","metadataByteSize","buffersByteSize","uint8Buffer","compressedBuffer","packedData","metaOffset","numAttrsBuff","byteSizeCompressed","fillAttributeMetaData","descrition","maxVal","realType","castedData","async","OutlineShader","STATE_LOW","STATE_MID","STATE_HIGH","_loadingSpeedState","_FPSSTate","LOADING_TIME_UPPER_THR","LOADING_TIME_LOWER_THR","FPS_UPPER_THR","FPS_LOWER_THR","_loadsCount","_highSpeedReportEnabled","currentFramesCount","fpsMeasurements","AVERAGE_PERIOD","fpsMeasurement","avg","_updateLoadingSpeedState","_generateReport","isHighSpeedTracked","loadStart","lastReportedState","extendSerializer","extend","implementation","fallbackDeserializer","fallbackSerializer","DefaultErrorSerializer","isSerializedError","thing","registeredSerializer","registerSerializer","deserialize","serialize","_getObjectStatus","_getPhotoGroupStatus","_reportStatus","chunksLoaded","photosCount","photosLoaded","ZOOM_TO_CURSOR","TargetControl","objX","objY","cameraX","cameraY","vert","sceneBBox","savedEnableState","coordZ","onStart","onUpdate","onFinish","startProjMat","finalMatrix","startGridMat","finalGridMatrix","workspaceDelta","gridDelta","tmpMat4","gridCurrent","startPosition","finalPosition","invView","targetPlane","targetPlainPoint","finalTarget","rayToCursor","dw","dh","sign","TrackballControl","calcTrackballVec","newTrack","si","phi","rotationView","rotationWorld","toTarget","dX","dY","objMY","objTrans","resultTrans","_VEC4_TMP","_VEC4_TMP2","Drawable","modelsArray","oldTexture","originLocal","directionLocal","sqrDist","hitPoint","instanceObject","instanceExtension","unlinkedAttributes","remappedAttName","attributesMapObject","planes","minZ","maxZ","minmaxIn","minmaxOut","newResult","scaleSign","accumulator","assignValue","baseAssignValue","copyObject","isNew","arrayReduce","baseReduce","reduce","initAccum","$$rxSubscriber","bundleURL","getBundleURLCached","getBundleURL","getBaseURL","defaultPoolSize","isAbsoluteURL","createSourceBlobURL","selectWorkerImplementation","WebWorker","BlobWorker","getWorkerImplementation","isWorkerRuntime","isWindowContext","DataView","Map","Promise","Set","WeakMap","toSource","promiseTag","weakMapTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","asyncTag","funcTag","genTag","proxyTag","baseKeysIn","_fetch","InnerSubscriber","INFINITY","toKey","stackClear","stackDelete","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","Stack","baseUnary","isString_1","isUndefined_1","tokens_1","tokenLabel","tokType","hasTokenLabel","tokenName","PARENT","CATEGORIES","LABEL","PUSH_MODE","POP_MODE","LONGER_ALT","LINE_BREAKS","START_CHARS_HINT","createToken","createTokenInternal","tokenType","createTokenInstance","startOffset","endOffset","startLine","endLine","startColumn","endColumn","tokenMatcher","compact_1","isArray_1","flatten_1","difference_1","includes_1","tokenStructuredMatcher","tokInstance","tokConstructor","instanceType","tokenStructuredMatcherNoCategories","augmentTokenTypes","tokenTypes","tokenTypesAndParents","expandCategories","assignTokenDefaultProps","assignCategoriesMapProp","assignCategoriesTokensProp","categories","searching","currTokType","newCategories","hasShortKeyProperty","hasCategoriesProperty","hasExtendingTokensTypesProperty","hasExtendingTokensTypesMapProperty","singleAssignCategoriesToksMap","nextNode","pathNode","nextCategory","newPath","isTokenType","Object3D","destVec","destQuat","allChildren","ch2","wk","msg","cb","ed","u8","u16","u32","fleb","fdeb","clim","freb","eb","fl","revfl","fd","revfd","rev","hMap","mb","co","rvb","sv","r_1","flt","fdt","flm","flrm","fdm","fdrm","bits16","shft","slc","FlateErrorCode","ec","nt","inflt","dat","st","sl","noBuf","noSt","cbuf","bl","nbuf","final","lm","dm","lbt","dbt","tbts","hLit","hcLen","ldt","clt","clb","clbmsk","clm","lt","lms","dms","lpos","dsym","wbits","wbits16","hTree","et","i0","maxSym","tr","mbt","lft","cst","i2_1","i2_2","i2_3","lc","cl","cli","cln","clen","cf","wfblk","wblk","syms","lf","df","li","bs","dlt","mlb","ddt","mdb","_c","lclt","nlc","lcdt","ndc","lcfreq","lct","mlcb","nlcc","flen","ftlen","dtlen","ll","dl","llm","lcts","it","clct","deo","dflt","lvl","plvl","pre","post","lst","msk_1","head","bs1_1","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","ch_1","dif","maxn","maxd","ml","nl","mmd","md","ti","pti","lin","din","crct","crc","cr","adler","dopt","mrg","wcln","fnStr","td","ks","st_1","spInd","ch","cbfs","wrkr","init","td_1","bInflt","inflateSync","pbf","gu8","bDflt","deflateSync","gze","gzh","gzhl","wbytes","guze","gzs","gzl","zle","zlh","zule","zlv","cbify","opts","astrm","strm","astrmify","flg","zs","lv","AsyncCmpStrm","Deflate","AsyncDeflate","deflate","Inflate","bts","AsyncInflate","inflate","Gzip","AsyncGzip","gzip","gzipSync","Gunzip","AsyncGunzip","gunzip","gunzipSync","Zlib","AsyncZlib","zlib","zlibSync","Unzlib","AsyncUnzlib","unzlib","unzlibSync","Decompress","_this_1","AsyncDecompress","decompress","decompressSync","fltn","tds","dutf8","DecodeUTF8","EncodeUTF8","strToU8","latin1","ar_1","ai","strFromU8","dbf","slzh","zh","fnl","es","z64e","su","exfl","wzh","exl","exf","wzf","ZipPassThrough","ZipDeflate","AsyncZipDeflate","Zip","fl_1","com","hl_1","chks_1","pAll_1","chks_2","chk","tr_1","ind_1","uf_1","nxt","cl_1","dd","tot","slft","term","tAll","cbd","mt","cbf","cdl","badd","_loop_1","cbl","zipSync","UnzipPassThrough","UnzipInflate","AsyncUnzipInflate","Unzip","is","oc","_loop_2","sig","this_1","bf","cmp_1","chks_3","sc_1","su_1","fn_1","d_1","file_1","ctr","chks_4","state_1","unzip","ze","fltr","_loop_3","c_1","no","infl","unzipSync","c_2","GroupableWrapper","formatArgs","save","load","useColors","localstorage","warned","lastC","namespaces","formatters","BlurShader","MasterMessageType","WorkerMessageType","stubFalse","freeExports","freeModule","moduleExports","nativeIsBuffer","listCacheClear","assocIndexOf","arrayProto","splice","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","_quatTmp2","worldX","horRotation","vertRotation","deltaRotation","newRotation","calcDistantToTargetPlane","startRotation","finalRotation","_vec3Tmp5","initialOrigin","zoomedOrigin","targetScreen","rayToNewTarget","argIndex","baseIsArguments","propertyIsEnumerable","reactIs","REACT_STATICS","KNOWN_STATICS","FORWARD_REF_STATICS","MEMO_STATICS","TYPE_STATICS","getStatics","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","objectPrototype","blacklist","inheritedComponent","targetStatics","sourceStatics","isScheduler","nativeCreate","isKeyable","getMapData","nativeKeys","getArg","aArgs","aName","aDefaultValue","urlRegexp","dataUrlRegexp","urlParse","aUrl","urlGenerate","aParsedUrl","aPath","join","aRoot","aPathUrl","aRootUrl","joined","relative","supportsNullProto","toSetString","aStr","isProtoString","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","compareByGeneratedPositionsDeflated","onlyCompareGenerated","strcmp","aStr1","aStr2","compareByGeneratedPositionsInflated","freeProcess","nodeUtil","types","MAX_SAFE_INTEGER","reIsUint","isIndex","print_1","timer_1","to_fast_properties_1","toFinite","remainder","first_1","reduce_1","expected","actual","ruleName","hasLabel","expectedMsg","firstRedundant","expectedPathsPerAlt","customUserDescription","errPrefix","actualText","errSuffix","allLookAheadPaths","currAltPaths","nextValidTokenSequences","currPath","currTokenType","nextValidSequenceItems","itemMsg","calculatedDescription","expectedIterationPaths","topLevelRule","undefinedRule","duplicateProds","getExtraProductionArgument","prod","topLevelName","duplicateProd","dslName","extraArgument","hasExplicitIndex","errMsg","pathMsg","currTok","occurrence","currtok","currMessage","pathNames","currRule","leftRecursivePath","every_1","interpreter_1","rest_1","PROD_TYPE","getProdType","getLookaheadPaths","prodType","maxLookahead","getLookaheadPathsForOr","getLookaheadPathsForOptionalProd","buildLookaheadFuncForOr","ruleGrammar","hasPredicates","dynamicTokensEnabled","laFuncBuilder","lookAheadPaths","areTokenCategoriesNotUsed","buildLookaheadFuncForOptionalProd","lookaheadBuilder","buildAlternativesLookAheadFunc","alts","numOfAlts","areAllOneTokenLookahead","currAlt","orAlts","predicates","currNumOfPaths","currPredicate","nextPath","currPathLength","nextToken","singleTokenAlts","choiceToAlt_1","currExtendingType","buildSingleAlternativeLookaheadFunction","alt","numOfPaths","singleTokensTypes","expectedTokenType","expectedTokenUniqueKey_1","choiceToAlt_2","RestDefinitionFinderWalker","topProd","targetOccurrence","targetProdType","expectedProdType","currRest","prevRest","optionProd","atLeastOneProd","atLeastOneSepProd","manyProd","manySepProd","InsideDefinitionFinderVisitor","expectedProdName","initializeArrayOfArrays","pathToHashKeys","longerKeys","currShorterKey","categoriesKeySuffix","isUniquePrefixHash","altKnownPathsKeys","searchPathKeys","currAltIdx","otherAltKnownPathsKeys","searchIdx","searchKey","lookAheadSequenceFromAlternatives","altsDefs","partialAlts","finalResult","altsHashes","dict","currKey","newData","pathLength","currDataset","altIdx","currAltPathsAndSuffixes","currPathIdx","currPathPrefix","suffixDef","prefixKeys","isUnique","currAltResult","containsPath","newPartialPathsAndSuffixes","orProd","insideDefVisitor","insideDef","afterDefWalker","afterDef","insideFlat","afterFlat","alternative","searchPath","compareOtherPath","otherPath","searchTok","otherTok","matchingTokens","isStrictPrefixOfPath","otherTokType","singleAltPaths","singlePath","MISMATCHED_TOKEN_EXCEPTION","NO_VIABLE_ALT_EXCEPTION","EARLY_EXIT_EXCEPTION","NOT_ALL_INPUT_PARSED_EXCEPTION","RECOGNITION_EXCEPTION_NAMES","isRecognitionException","RecognitionException","_newTarget","MismatchedTokenException","previousToken","NoViableAltException","NotAllInputParsedException","EarlyExitException","BLUR_SCENE_SIZE","OBJECT_HIGHLIGHT","CAD_HIGHLIGHT","HighlightPass","highlightScene","maskScreenPlane","widthGlow","highlightScreenPlane","maskFramebuffer","outlineFramebuffer","blurHorFramebuffer","blurVertFramebuffer","combineFramebuffer","mainDepthStencil","halfSizeCamera","blurVertScene","combineScene","blurHorScreenPlane","blurVertShader","blurVertScreenPlane","combineShader","combineScreenPlane","blurHorColor","blurVertColor","ZStdLoader","coder","initZSTDWorkers","nativeCodeString","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","hasSymbols","hasSymbol","getSymbol","registerObservableSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","ctor","isObservable","enqueue","cleanupSubscription","closeSubscription","flushSubscription","notifySubscription","onNotify","subscriptionObserver","SubscriptionObserver","onError","mappers","intermediate","mapper","tapObserver","propagatedValue","seed","hasSeed","startNext","outer","normalizedValue","completeIfDone","observableMethod","iteratorMethod","WorkerEventType","libSquish","GetStorageRequirements","CompressImage","DecompressImage","pointerFromData","sourceData","getDataFromPointer","inputData","flags","targetSize","stringToPath","toString","baseIsTypedArray","nodeIsTypedArray","arrayLikeToArray","buildNormals","triangleNormal","calcTriangleNormal","offset0","normalizeNormals","rebuildVerticesNormalsMask","markVerticesToRecalculate","m0","m1","m2","normalizeNormalsByMask","invertVerticesNormals","argumentsString","exclusion","project","MapOperator","MapSubscriber","nativeKeysIn","isProto","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","useSafeState","destroyRef","safeSetState","updater","ignoreDestroy","Uint8Array","trimLeft","trimRight","tinycolor","inputToRGB","RsRGB","GsRGB","BsRGB","boundAlpha","rgbToHsv","allow3Char","allow4Char","rgbaToHex","bound01","hexNames","secondColor","hex8String","rgbaToArgbHex","secondHex8String","gradientType","formatSet","formattedString","hasAlpha","needsAlphaFormat","lighten","brighten","darken","desaturate","saturate","greyscale","spin","analogous","complement","monochromatic","splitcomplement","polyad","newColor","convertToPercentage","stringInputToObject","isValidCSSUnit","rgbToRgb","hsvToRgb","pad2","convertDecimalToHex","color1","color2","amount","clamp01","hue","modification","rgb1","rgb2","rgba","wcag2","readability","wcag2Parms","validateWCAG2Parms","baseColor","bestColor","bestScore","includeFallbackColors","flip","flipped","isOnePointZero","processPercent","isPercentage","parseIntFromHex","convertHexToDecimal","matchers","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","named","parms","normalizeArray","allowAboveRoot","resolvedPath","resolvedAbsolute","trailingSlash","samePartsLength","outputParts","hasRoot","matchedSlash","startDot","startPart","preDotState","xs","arrayFilter","stubArray","nativeGetSymbols","getSymbols","cloneArrayBuffer","assign","arrayEvery","baseEvery","every","lexer_1","noop_1","last_1","reject_1","keys_1","identity_1","assign_1","reg_exp_parser_1","LexerDefinitionErrorType","DEFAULT_LEXER_CONFIG","Lexer","lexerDefinition","phaseDesc","phaseImpl","indent","traceMethod","traceInitVal","actualDefinition","hasOnlySingleMode","currModeValue","currModeName","allModeNames","currModDef","currModName","currAnalyzeResult_1","allErrMessages","allErrMessagesString","warningDescriptor","unOptimizedModes","cannotBeOptimized","canBeOptimized","modeName","initialMode","matchAltImage","longerAlt","matchedImage","altPayload","imageLength","newToken","errLength","droppedChar","orgText","orgLength","matchedTokensIndex","guessedNumberOfTokens","matchedTokens","column","trackLines","lineTerminatorPattern","currModePatternsLength","patternIdxToConfig","currCharCodeToPatternIdxToConfig","modeStack","emptyArray","getPossiblePatterns","getPossiblePatternsSlow","getPossiblePatternsOptimized","optimizedCharIdx","possiblePatterns","pop_mode","popToken","msg_1","newMode","modeCanBeOptimized","push_mode","currConfig","recoveryEnabled","nextCharCode","chosenPatternIdxToConfig","chosenPatternsLength","currPattern","singleCharCode","longerAltLength","longerAltConfig","longerAltPattern","numOfLTsInMatch","foundTerminator","lastLTEndOffset","errorStartOffset","errorLine","errorColumn","foundResyncPoint","currConfig_1","pushMode","regExp","newLastIndex","lastLTIdx","lastCharIsLT","fixForEndingInLT","oldColumn","tokenTypeIdx","tokenVector","tokenToAdd","found","regExpArray","resIndex","drop_1","filter_1","groupBy_1","pickBy_1","flatMap_1","gast_3","dropRight_1","validateLookahead","lookaheadValidationErrorMessages","errorMessage","validateGrammar","topLevels","errMsgProvider","grammarName","duplicateErrors","currTopLevel","validateDuplicateProductions","termsNamespaceConflictErrors","checkTerminalAndNoneTerminalsNameSpace","tooManyAltsErrors","curRule","validateTooManyAlts","duplicateRulesError","validateRuleDoesNotAlreadyExist","collectorVisitor","OccurrenceValidationCollector","allRuleProductions","productionGroups","identifyProductionForDuplicates","duplicates","currGroup","currDuplicates","firstProd","subrule","manySep","atLeastOne","atLeastOneSep","many","or","terminal","allRules","occurrences","validateRuleIsOverridden","definedRulesNames","validateNoLeftRecursion","topRule","nextNonTerminals","getFirstNoneTerminal","foundLeftRecursion","validNextSteps","errorsFromNextSteps","currRefRule","definition","currSubDef","isFirstOptional","hasMore","OrCollector","validateEmptyOrAlternative","orCollector","ors","currOr","exceptLast","currAlternative","possibleFirstInAlt","validateAmbiguousAlternationAlternatives","globalMaxLookahead","currOccurrence","actualMaxLookahead","alternatives","altsAmbiguityErrors","checkAlternativesAmbiguities","altsPrefixAmbiguityErrors","checkPrefixAlternativesAmbiguities","RepetitionCollector","validateSomeNonEmptyLookaheadPath","topLevelRules","currTopRule","currProd","pathsInsideProduction","alternation","foundAmbiguousPaths","identicalAmbiguities","altsCurrPathAppearsIn","currOtherAlt","currOtherAltIdx","currErrors","currAmbDescriptor","ambgIndices","pathsAndIndices","currPathsAndIdx","currPathAndIdx","alternativeGast","targetIdx","targetPath","prefixAmbiguitiesPathsAndIndices","searchPathAndIdx","currPathPrefixErrors","currAmbPathAndIdx","tokenNames","currToken","first_2","AbstractNextPossibleTokensWalker","refProd","fullRest","NextAfterTokenWalker","restProd","AbstractNextTerminalAfterProductionWalker","NextTerminalAfterManyWalker","firstAfterMany","NextTerminalAfterManySepWalker","firstAfterManySep","NextTerminalAfterAtLeastOneWalker","firstAfterAtLeastOne","NextTerminalAfterAtLeastOneSepWalker","atleastOneSepProd","firstAfterfirstAfterAtLeastOneSep","possiblePathsFrom","targetDef","maxLength","remainingPathWith","nextDef","getAlternativesForProd","newDef","nextPossibleTokensAfter","initialDef","tokMatcher","maxLookAhead","EXIT_NON_TERMINAL","EXIT_NON_TERMINAL_ARR","EXIT_ALTERNATIVE","foundCompletePath","tokenVectorLength","minimalAlternativesIndex","possiblePaths","currDef","currIdx","currRuleStack","currOccurrenceStack","nextIdx","actualToken","newRuleStack","newOccurrenceStack","nextPathWithout","nextPathWith","secondIteration","separatorGast","nthRepetition","currAltPath","expandTopLevelRule","newCurrOccurrenceStack","getCoder","LoaderBase","isPromise","CameraControl","subscribeToPromise","subscribeToIterable","subscribeToObservable","obs","subscribeTo","subscribeToArray","SelectedStorageItemsSet","newStorageItem","ErrorStackParser","StackGenerator","StackTraceGPS","stackframe","_generateError","_merge","_isShapedLikeParsableError","_filtered","stackframes","gps","sf","resolveOriginal","stackFrames","errback","instrumented","errorMsg","requestOptions","req","headers","reportPayload","isTransferable","isTransferDescriptor","Transfer","transferables","mergeMap","resultSelector","concurrent","MergeMapOperator","MergeMapSubscriber","ish","innerSubscriber","arrayPush","_unsupportedIterableToArray","minLen","overArg","getPrototype","CircleShader","SCREEN_SIZE","texturePromise","loadTexture","getTexture","RotationIndicator","cleanupRotationIndicator","PAN_SPEED_MULTIPLIER","SCREEN_MARGIN","PANEL_HEIGHT","PhotoControl","animationTime","instantRectangle","orientationRotation","_getOrientationRotation","currentPosition","currentRotation","startFov","finalFov","currentFov","startShift","finalShift","currentShift","updateCameraState","_emitRectangle","_cameraRectByModel","maxFov","_fovByCamera","_getFovRange","_screenRectByFov","startProjectionShift","finalProjectionShift","currentProjectionShift","fovDelta","_cameraPosByFov","newFov","zoomedScreenRect","_updateCameraShift","modelTransform","cameraRect","worldPos","camSpacePos","screenRect","ndcWidth","cameraSpaceHalfWidth","scenePixelWidth","scenePixelHeight","sceneAspect","currentOffset","viewInvMat","camSpaceShift","worldSpaceShift","photoWidth","photoHeight","photoAspect","fittingArea","fittingAreaShift","maxPhotoWidth","maxPhotoHeight","maxPhotoAspect","ndcHeight","cameraSpaceHalfHeight","defaultShift","screenProjectedRect","projMatrix","camSpacePositions","screenProjectedPos","panelNdcShift","fittingAreaCenter","fittingAreaNdcShift","shiftedRect","shiftRange","newShiftX","newShiftY","ndcRect","leftTop","rightBottom","internalRectangle","externalRectangle","defaultCorrection","Batcher","compareShaderIDs","objectA","objectB","compareOriginsNearestFirst","chunkA","chunkB","compareBoundingsNearestFirst","lshader","rshader","bboxA","bboxB","resolvedFramebuffer","promiseResolve","lightID","lights","camNear","lightTrans","oldLightDirections","oldLightColors","objA","objB","compare","compareContext","keysA","keysB","bHasOwnProperty","valueA","valueB","isNumeric","_arrayLikeToArray","defaultOptions","i18nInstance","I18nContext","setDefaults","getDefaults","ReportNamespaces","setI18n","getI18n","initReactI18next","composeInitialProps","ForComponent","i18nInitialProps","getInitialProps","componentsInitialProps","i18n","initialI18nStore","warn","_console","alreadyWarned","warnOnce","loadNamespaces","initialized","hasLoadedNamespace","lng","fallbackLng","lastLng","loadNotPending","loadState","getDisplayName","baseToString","ObjectUnsubscribedErrorImpl","ObjectUnsubscribedError","SubjectSubscription","subject","observers","subscriberIndex","SubjectSubscriber","Subject","copy","AnonymousSubject","propIsEnumerable","toObject","shouldUseNative","test1","test2","order2","test3","_isNumber","_capitalize","_getter","booleanProps","numericProps","stringProps","arrayProps","objectProps","StackFrame","fileName","lineNumber","columnNumber","argsStartIndex","argsEndIndex","locationString","RestWalker","subProd","flatProd","fullOrRest","fullAtLeastOneRest","fullAtLeastOneSepRest","restForRepetitionWithSeparator","fullManyRest","fullManySepRest","prodWrapper","repSepProd","repSepRest","fullRepSepRest","baseSlice","drop","isRegExp_1","AbstractProduction","_definition","NonTerminal","Rule","Alternative","RepetitionMandatory","RepetitionMandatoryWithSeparator","Repetition","RepetitionWithSeparator","Alternation","Terminal","serializeGrammar","topRules","serializeProduction","convertDefinition","serializedNonTerminal","serializedTerminal","baseSome","some","baseFindIndex","baseIsNaN","strictIndexOf","isFlattenable","isStrict","baseUniq","uniq","RegExpParser","addFlag","terms","ASSERT_EXISTS","disjunction","ASSERT_NEVER_REACH_HERE","isBacktracking","atLeast","atMost","atom","digitsCharCodes","whitespaceCodes","wordCharCodes","escapeCode","letterCode","escapedChar","nextChar","isFromSingleChar","isToSingleChar","insertToSet","capturing","groupAst","decimalPatternNoZero","decimalPattern","howMuch","howMany","hexString","hexChar","hexDigitPattern","subItem","flagObj","flagKey","BaseRegExpVisitor","subChild","baseFilter","negate","baseDifference","difference","createFind","findIndex","find","regexp_to_ast_1","regExpAstCache","regExpParser","getRegExpAst","regExpStr","regExpAst","clearRegExpParserCache","dropRight","getKeyForAutomaticLookahead","ruleIdx","dslMethodIdx","BITS_START_FOR_ALT_IDX","debugMessages","debugSpawn","debugThreadUtils","isInitMessage","isUncaughtErrorMessage","initMessageTimeout","withTimeout","timeoutInMs","timeoutHandle","receiveInitMessage","messageHandler","createEventObservable","workerTermination","messageEvent","workerEvent","rejectionHandler","errorEvent","terminationEvent","createTerminator","termination","resolver","setPrivateThreadProps","workerEvents","terminate","workerErrors","spawn","exposed","proxy","fail","Thread","thread","scheduleArray","scheduleObservable","schedulePromise","scheduleIterable","isInteropObservable","isIterable","scheduled","Scheduler","SchedulerAction","AsyncScheduler","actions","Action","AsyncAction","errored","errorValue","multicast","coldObservable","sourceSubscription","subscriberCount","doNothing","returnInput","runDeferred","isThenable","originalObserver","onRejected","onFulfilled","onFulfilledRaw","onRejectedRaw","onRejectedCalled","rejectionCallback","anotherError","fulfillmentCallback","onCompleted","handler","nextJobUID","dedupe","isJobErrorMessage","isJobResultMessage","isJobStartMessage","createObservableForJob","jobUID","asyncType","cancelMessage","prepareArguments","rawArgs","createProxyFunction","runMessage","createProxyModule","methodNames","dueTime","periodOrScheduler","period","due","finalize","FinallyOperator","FinallySubscriber","baseGetAllKeys","getAllKeys","symbolsFunc","baseTimes","inherited","isArg","isType","skipIndexes","getSymbolsIn","toStr","concat","origDefineProperty","hasPropertyDescriptors","supportsDescriptors","undefined","$SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","getProto","needsEval","INTRINSICS","doEval","gen","LEGACY_ALIASES","bind","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","quote","subString","getBaseIntrinsic","allowMissing","intrinsicName","alias","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","_toPrimitive","prim","_toPropertyKey","copyArray","getAllKeysIn","isDate","ProgressCircular","stroke","strokeColor","noDot","normalizedRadius","circumference","strokeDashoffset","baseAssign","baseAssignIn","cloneBuffer","copySymbols","copySymbolsIn","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","cloneableTags","isDeep","isFlat","isFull","isFunc","subValue","allocUnsafe","cloneTypedArray","baseCreate","originalModule","base64VLQ","util","ArraySet","MappingList","SourceMapGenerator","aSourceMapConsumer","sourceRoot","mapping","newMapping","sourceFile","generated","aSourceFile","aSourceContent","aSourceMapPath","newSources","newNames","aGenerated","aOriginal","aSource","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","nameIdx","sourceIdx","aSources","aSourceRoot","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","toVLQSigned","fromVLQSigned","shifted","encoded","digit","vlq","aIndex","aOutParam","strLen","shift","continuation","aArray","aAllowDuplicates","sStr","isDuplicate","aIdx","isFunction_1","Observer_1","Subscription_1","rxSubscriber_1","config_1","hostReportError_1","baseIsRegExp","nodeIsRegExp","isRegExp","basePickBy","pickBy","uniq_1","firstForTerminal","firstForSequence","firstForBranching","firstSet","seq","nextSubProdIdx","hasInnerProdsRemaining","currSubProd","isLastInnerProdOptional","allAlternativesFirsts","innerProd","arrayIncludes","arrayIncludesWith","comparator","indexOf_1","find_1","defaults_1","reg_exp_1","PATTERN","disableSticky","enableSticky","analyzeTokenTypes","tracer","initCharCodeToOptimizedIndexMap","onlyRelevantTypes","currType","hasCustom","allTransformedPatterns","regExpSource","addStickyFlag","addStartOfInput","escapedRegExpString","wrappedRegExp","patternIdxToType","patternIdxToGroup","patternIdxToLongerAltIdxArr","patternIdxToPushMode","patternIdxToPopMode","clazz","groupName","longerAltType","longerAltIdxArr","patternIdxToCanLineTerminator","lineTerminatorCharCodes","getCharCodes","checkLineBreaksIssues","patternIdxToIsCustom","patternIdxToShort","emptyGroups","isCustomPattern","isShortPattern","charCodeToPatternIdxToConfig","optimizedIdx","charCodeToOptimizedIndex","addToMapOfArrays","lastOptimizedIdx_1","charOrInt","currOptimizedIdx","optimizedCodes","validatePatterns","validModesNames","missingResult","findMissingPatterns","invalidResult","findInvalidPatterns","validTokenTypes","validateRegExpPattern","findInvalidGroupType","findModesThatDoNotExist","findUnreachablePatterns","withRegExpPatterns","findEndOfInputAnchor","findStartOfInputAnchor","findUnsupportedFlags","findDuplicatePatterns","findEmptyMatchRegExps","tokenTypesWithMissingPattern","valid","tokenTypesWithInvalidPattern","end_of_input","EndAnchorFinder","invalidRegex","regexpAst","endAnchorVisitor","matchesEmptyString","start_of_input","StartAnchorFinder","startAnchorVisitor","invalidFlags","identicalPatterns","outerType","innerType","duplicatePatterns","currIdenticalSet","setOfIdentical","tokenTypeNames","dupPatternSrc","invalidTypes","validModes","invalidModes","canBeTested","noMetaChar","testIdx","testTokenType","metaChars","performRuntimeChecks","lineTerminatorCharacters","currLongerAlt","performWarningRuntimeChecks","warnings","hasAnyLineBreak","allTokenTypes","concreteTokenTypes","terminatorCharCodes","currIssue","buildLineBreakIssueMessage","cloneEmptyGroups","clonedResult","groupKeys","currGroupValue","details","charsOrCodes","charCodes","numOrString","charCodeToOptimizedIdxMap","defaults","propsIndex","propsLength","fullText","createAggregator","groupBy","flatMap","constants_1","InRuleRecoveryException","Recoverable","attemptInRepetitionRecovery","tokToInsert","grammarRule","grammarRuleArgs","lookAheadFunc","expectedTokType","reSyncTokType","savedLexerState","resyncedTokens","passedResyncPoint","nextTokenWithoutResync","generateErrorMessage","expectTokAfterLastMatch","nextTokIdx","notStuck","tokIdxInRule","grammarPath","follows","nextTok","expectedToken","mismatchedTok","isMisMatchedTokInFollows","possibleFollowsTokType","isNextTokenWhatIsExpected","followKey","currentRuleReSyncSet","allPossibleReSyncTokTypes","foundMatch","resyncTokType","canMatch","currRuleShortName","currRuleIdx","prevRuleShortName","explicitRuleStack","explicitOccurrenceStack","followStack","followName","resyncTokens","prodFunc","lookaheadFunc","prodOccurrence","nextToksWalker","pathRuleStack","pathOccurrenceStack","currShortName","firstAfterRepInfo","walker","isEndOfRule","__spreadArray","pack","LLkLookaheadStrategy","leftRecursionErrors","emptyAltErrors","ambiguousAltsErrors","emptyRepetitionErrors","allErrors","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","Direction","forOwn","_react","_react2","_reactcss","_reactcss2","_checkboard","_interopRequireWildcard","newObj","_propTypes","_propTypes2","sizerStyle","INPUT_PROPS_BLACKLIST","cleanInputProps","copyStyles","isIE","generateId","AutosizeInput","inputStyles","newInputWidth","extraWidth","injectStyles","sizerValue","previousValue","wrapperStyle","createPromiseWithResolver","alreadyResolved","resolvedTo","fetch_1","MAX_SIGNED_31_BIT_INT","commonjsGlobal","getUniqueId","objectIs","createEventEmitter","handlers","changedBits","onlyChild","createReactContext","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","Provider","oldValue","Consumer","observedBits","_proto2","isarray","pathToRegexp","parse","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","capture","modifier","asterisk","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeAsterisk","encode","segment","attachKeys","regexpToRegexp","arrayToRegexp","stringToRegexp","endsWithDelimiter","Range_1","types_1","_Alpha","_Checkboard","_EditableInput","_Hue","_Raised","_Saturation","_ColorWrap","_Swatch","memoize","MAX_MEMOIZE_SIZE","memoizeCapped","symbolToString","objectCreate","useTranslation","i18nFromProps","i18nFromContext","defaultNSFromContext","notReadyT","retNotReady","i18nOptions","useSuspense","ready","getT","setT","bindI18n","bindI18nStore","boundReset","cloneDataView","cloneRegExp","cloneSymbol","reFlags","baseIsMap","nodeIsMap","baseIsSet","nodeIsSet","clsx","createCaseFirst","upperFirst","asciiToArray","unicodeToArray","stringToArray","toPrimitive","react_1","decimals","isTouchEvent","isStepDivisible","normalizeValue","allowOverlap","BIG_NUM","closestLowerNum","rounded","decimalPlaces","relativeValue","isVertical","checkBoundaries","checkInitialOverlap","getMargin","getPaddingAndBorder","translateThumbs","offsets","rtl","inverter","translate","getClosestThumbIndex","thumbs","thumbIndex","minThumbDistance","getThumbDistance","thumbDistance","frameId","wrapperFn","replaceAt","getTrackBackground","voidFn","assertUnreachable","getThumbWidth","thumbEl","valueToLabel","elWidth","elClone","getOverlaps","overlaps","buildOverlaps","thumbXWidth","thumbX","siblingIndex","siblingX","siblingWidth","rangeRef","labelStyle","setLabelStyle","labelValue","setLabelValue","newStyle","offsets_1","labelValue_1","offsetsX","labelValues_1","thumb","lastWidth","isArgs","GetIntrinsic","$apply","$call","$reflectApply","$defineProperty","$max","originalFunction","applyBind","RequireObjectCoercible","callBound","$isEnumerable","$push","vals","iterableToArrayLimit","LUM_SHIFT","getLuminance","normalizedRGB","getContrastRation","fg","bg","lumForeground","lumBackground","DEFAULT_SIZE","_ref$fill","fill","_ref$width","_ref$height","_ref$style","FadeOutWrapper","hidden","transitionDuration","catchError","CatchOperator","caught","CatchSubscriber","err2","escape","ba","ca","da","ea","fa","ha","ia","ja","ka","la","ma","na","oa","pa","qa","ra","sa","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","$a","fb","gb","hb","ib","jb","kb","lb","nb","ob","pb","qb","rb","sb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","dc","fc","gc","hc","ic","jc","kc","mc","nc","pc","qc","rc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","bd","gd","hd","jd","kd","ld","nd","od","pd","qd","rd","sd","ud","vd","wd","xd","yd","Ad","zd","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","Zd","$d","be","de","ge","je","ke","me","qe","we","xe","ye","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","ef","ff","gf","hf","jf","kf","mf","of","pf","qf","rf","tf","uf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","If","Jf","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","cg","dg","eg","gg","hg","ig","jg","kg","lg","mg","ng","og","qg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","Hg","Jg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","eh","fh","gh","hh","ih","jh","kh","mh","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","bi","ci","di","ei","fi","gi","hi","ji","ki","mi","ni","oi","pi","qi","ri","ui","vi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","fj","gj","hj","ij","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","Xj","Yj","Zj","va","ak","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","lk","mk","nk","pk","qk","rk","sk","tk","uk","vk","xk","yk","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","urlLike","filtered","sanitizedLine","locationParts","functionNameRegex","lineRE","functionCall","argsRaw","maxStackSize","curr","SourceMap","_xdr","_atob","b64str","_parseJson","_findFunctionName","syntaxes","maxLines","commentPos","_ensureSupportedEnvironment","_ensureStackFrameIsLegit","_findSourceMappingURL","sourceMappingUrlRegExp","lastSourceMappingUrl","matchSourceMappingUrl","_extractLocationInfoFromSourceMapSource","sourceMapConsumer","sourceCache","mappedSource","isDataUrl","supportedEncodingRegexp","sourceMapStart","encodedSource","xhrPromise","sourceMappingURL","defaultSourceRoot","sourceMapConsumerPromise","sourceMapSource","mappedStackFrame","resolveMappedStackFrame","guessedFunctionName","intToCharMap","bigA","bigZ","littleA","littleZ","zero","nine","plus","slash","littleOffset","numberOffset","generatedPositionAfter","lineA","lineB","columnA","columnB","aCallback","aThisArg","aMapping","binarySearch","quickSort","SourceMapConsumer","aSourceMap","IndexedSourceMapConsumer","BasicSourceMapConsumer","aContext","aOrder","order","originalLine","originalColumn","sourcesContent","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","Mapping","generatedLine","cachedSegments","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","nextMapping","nullOnMissing","fileUriAbsPath","lastOffset","offsetLine","offsetColumn","sectionIndex","generatedPosition","sectionMappings","adjustedMapping","recursiveSearch","aLow","aHigh","aHaystack","aCompare","swap","ary","randomIntInRange","doQuickSort","pivotIndex","pivot","REGEX_NEWLINE","NEWLINE_CODE","isSourceNode","SourceNode","aLine","aColumn","aChunks","aGeneratedCode","aRelativePath","remainingLines","shiftNextLine","lineContents","newLine","lastGeneratedLine","lastGeneratedColumn","lastMapping","addMappingWithCode","nextLine","aChunk","aFn","aSep","newChildren","aPattern","aReplacement","lastChild","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","setup","env","createDebug","coerce","disable","enable","destroy","selectColor","namespace","prevTime","enableOverride","namespacesCache","enabledCache","debug","formatter","newDebug","toNamespace","fmtLong","fmtShort","msAbs","plural","isPlural","binary","toThrow","xhr","onload","onerror","stackTop","vararg","sigCache","success","quantum","unsigned","ident","returnType","argTypes","cArgs","converter","jsfunc","noSafe","slab","allocator","zeroinit","singleType","stop","typeSize","previousType","hasUtf","MAX_CHUNK","outPtr","u8Array","endPtr","u0","u1","u2","u3","u4","u5","outU8Array","outIdx","maxBytesToWrite","startIdx","endIdx","__cxa_demangle_func","js","multiple","oldHEAP8","PAGE_MULTIPLE","LIMIT","OLD_TOTAL_MEMORY","callbacks","stringy","dontAddNull","u8array","numBytesWritten","chr","lastChar","imul","al","adjusted","thrown","throwntype","typeArray","varargs","which","offset_high","offset_low","whence","iov","iovcnt","fflush","printChar","ga","newBuffer","runCaller","callMain","argc","argv","toLog","doRun","implicit","what","Observable_1","fromFetch","outerSignalHandler","abortable","unsubscribed","canReportError_1","toSubscriber_1","observable_1","pipe_1","Subscriber_1","isObject_1","UnsubscriptionError_1","PRINT_ERROR","PRINT_WARNING","total","ResyncFollowsWalker","buildBetweenProdsFollowPrefix","t_in_topProd_follows","computeAllProdsFollows","topProductions","reSyncFollows","currRefsFollow","occurenceInParent","buildInProdFollowPrefix","terminalName","MAX_INTEGER","baseSet","nested","GAstVisitor","nodeAny","some_1","isSequenceProd","isOptionalProd","alreadyVisited","isDirectlyOptional","isBranchingProd","getProductionDslName","spreadableSymbol","createSet","computed","seenIndex","valuesLength","valuesIndex","indexOf","findIndexFunc","complementErrorMessage","getOptimizedStartCodesIndices","ensureOptimizations","ast","firstChars","firstCharOptimizedIndices","msgSuffix","addOptimizedIdxToResult","rangeCode","minUnOptVal","maxUnOptVal","minOptIdx","maxOptIdx","currOptIdx","isOptionalQuantifier","isWholeOptional","handleIgnoreCase","upperChar","lowerChar","findCode","setNode","targetCharCodes","codeOrRange","range_1","targetCode","quantifier","CharCodeFinder","canMatchCharCode","charCodeFinder","resolver_1","resolveGrammar","actualOptions","topRulesTable","refResolver","GastRefResolverVisitor","nameToTopRule","arrayAggregator","baseAggregator","setter","initializer","LooksAhead","collectMethods","repetition","repetitionMandatory","repetitionMandatoryWithSeparator","repetitionWithSeparator","prodIdx","laFunc","prodKey","prodMaxLookahead","dslMethodName","DslMethodsCollectorVisitor","dslMethods","cst_1","cst_visitor_1","TreeBuilder","cstNode","fullRuleName","ruleCstNode","prevToken","consumedToken","rootCst","ruleCstResult","preCstNode","newBaseCstVisitorConstructor","newConstructor","ruleStack","occurrenceStack","setNodeLocationOnlyOffset","currNodeLocation","newLocationInfo","setNodeLocationFull","addTerminalToCst","tokenTypeName","addNoneTerminalToCst","ruleResult","lang_extensions_1","defaultVisit","childrenNames","childrenNamesLength","currChildName","currChildArray","currChildArrayLength","currChild","createBaseSemanticVisitorConstructor","ruleNames","derivedConstructor","semanticProto","semanticDefinitionErrors","validateVisitor","errorMessages","currDefError","createBaseVisitorConstructorWithDefaults","baseConstructor","withDefaultsProto","CstVisitorDefinitionError","visitorInstance","missingErrors","validateMissingCstMethods","missingRuleNames","NAME","defineNameProp","nameValue","LexerAdapter","newInput","soughtIdx","RecognizerApi","impl","ruleToCall","actionORMethodDef","altsOrOpts","ruleImplementation","ruleErrors","orgState","RecognizerEngine","allTokenTypes_1","uniqueTokens","noTokenCategoriesUsed","tokenConstructor","resyncEnabled","recoveryValueFunc","shortName","invokeRuleWithTry","wrappedGrammarRule","resyncEnabledConfig","isFirstInvokedRule","reSyncEnabled","recogError","partialCstResult","predicate_1","orgLookaheadFunction_1","laKey","predicate_2","orgLookaheadFunction_2","firstIterationLookaheadFunc","separatorLookAheadFunc","lookaheadFunction","predicate_3","orgLookaheadFunction_3","firstIterationLaFunc","nextTerminalAfterWalker","beforeIteration","afterIteration","altIdxToTake","chosenAlternative","firstRedundantTok","eFromConsumption","eFromInRuleRecovery","savedErrors","savedRuleStack","fullName","idxInCallingRule","ErrorHandler","newErrors","userDefinedErrMsg","lookAheadPathsPerAlternative","insideProdPaths","actualTokens","errMsgTypes","ContentAssist","startRuleName","precedingInput","startRuleGast","topRuleName","gastProductions","topProduction","nextPossibleTokenTypes","RECORDING_NULL_OBJECT","HANDLE_SEPARATOR","MAX_METHOD_IDX","RFT","RECORDING_PHASE_TOKEN","RECORDING_PHASE_CSTNODE","GastRecorder","arg1","arg2","newTopLevelRule","originalError","mutabilityError","recordProd","recordOrProd","assertMethodIdxIsValid","getIdxSuffix","prevProd","newNoneTerminal","prodConstructor","mainProdArg","handleSep","grammarAction","newProd","hasOptions","newOrProd","currAltFlat","PerformanceTracer","userTraceInitPerf","traceIsNumber","applyMixins","derivedCtor","baseCtors","baseCtor","baseProto","basePropDescriptor","generate_1","generateCstDts","productions","effectiveOptions","buildModel","CstNodeDefinitionGenerator","rawElements","grouped","allNullable","getType","override","production","upperFirst_1","genDts","contentParts","genCstNodeTypes","genVisitor","nodeCstInterface","genNodeInterface","nodeChildrenInterface","genNodeChildrenType","nodeInterfaceName","getNodeInterfaceName","childrenTypeName","getNodeChildrenTypeName","typeName","genChildProperty","buildTypeString","genVisitorFunction","typeNames","getTypeString","typeString","castSlice","strSymbols","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","createSyntaxDiagramsCode","grammar","resourceBase","cssHtml","scripts","diagramsDiv","serializedGrammar","initLogic","retryWhen","notifier","RetryWhenOperator","RetryWhenSubscriber","retries","retriesSubscription","TimeoutErrorImpl","TimeoutError","timeoutWith","withObservable","absoluteTimeout","waitFor","TimeoutWithOperator","TimeoutWithSubscriber","CAN_USE_DOM","testPassiveEventListeners","supportsPassiveOption","canUsePassiveEventListeners","normalizeEventOptions","eventOptions","eventOptionsKey","normalizedEventOptions","passive","once","ensureCanMutateNextEventHandlers","TargetEventHandlers","getEventHandlers","handleEvent","isSubscribed","EVENT_HANDLERS_KEY","addEventListener","define","callBind","getPolyfill","polyfill","boundContains","useOutsideClick","handlerRef","objectWithoutPropertiesLoose","React","INCREASE_KEYS","DECREASE_KEYS","trackElement","trackRect","trackPadding","thumbOffsets","thumbRect","thumbMargins","thumbRef","draggedThumbIndex","isTouch","isChanged","draggedTrackPos","trackLength","deltaValue","thumbValue","newValues","onFinalChange","elStyles","trackWidth","trackHeight","paddingLeft","paddingTop","markHeight","markWidth","markRect","renderTrack","renderThumb","renderMark","thumbZIndexes","markOffsets","_isString2","_isString3","_forOwn2","_forOwn3","_isPlainObject2","_isPlainObject3","_map2","_map3","flattenNames","things","_cloneDeep2","_cloneDeep3","mergeClasses","toMerge","cloneDeep","transforms","otherElementStyles","otherStyle","autoprefix","prefixed","Hover","Active","loopable","setProp","_airbnbPropTypes","_consolidatedEvents","_object","_object2","_document","_document2","DISPLAY","OutsideClickHandler","componentDidMount","useCapture","componentDidUpdate","prevDisabled","_props2","componentWillUnmount","isDescendantOfRoot","onOutsideClick","setChildNodeRef","addMouseDownEventListener","removeEventListeners","_props3","noopThunk","origKeys","keysShim","originalKeys","keysWorksWithArguments","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","theKeys","skipProto","skipConstructor","origSymbol","hasSymbolSham","symObj","symVal","ERROR_MESSAGE","funcType","bound","binder","boundLength","boundArgs","Empty","optMessage","$indexOf","_alpha","alpha","_Checkboard2","_hue","_merge2","_throttle","_throttle2","_saturation","_debounce","_debounce2","_color","_each","_each2","_tinycolor","_tinycolor2","_interaction","CompareSplit","onPress","onMove","onRelease","onMount","isTransparent","splitRef","touchActiveRef","pointerEvents","handlePointerRelease","touchEvents","CompareHeaders","secondHeaderWithLoader","firstObjectHeader","secondObjectHeader","useCookie","cookieValue","setCookieValue","updateCookie","methodMap","nativeAPI","unprefixedMethods","returnValue","methodList","eventNameMap","screenfull","onFullScreenEntered","returnPromise","onFullScreenExit","isInFullScreen","setIsInFullScreen","nodeToFullscreenRef","onFullScreenChange","toggleFullScreen","isMobile","prevX","prevY","prevX1","prevY1","prevDistance","lastGestureScale","gestureOn","onContextMenu","mouseDownHandler","mouseMoveHandler","mouseUpHandler","mouseWheelHandler","touchDownHandler","centerX","centerY","touchMoveHandler","movementX1","movementY1","touchUpHandler","onGestureChange","addPointerEventsForEmbedPlayer","wrappedHandler","onPlay","isPlayerTransparent","isOpen","makeTypeChecker","tabsRole","isTab","isTabList","isTabPanel","isTabChild","deepMap","deepForEach","childrenPropType","tabsCount","panelsCount","tabListFound","listTabs","listChild","onSelectPropType","selectedIndexPropType","tabCount","panelCount","isNode","isTabNode","isTabDisabled","canUseActiveElement","determineCanUseActiveElement","environment","UncontrolledTabs","disableUpDownKeys","preventDefault","useSelectedIndex","disabledTabClassName","forceRenderTabPanel","selectedTabClassName","selectedTabPanelClassName","listIndex","wasTabFocused","tab","nodeAncestor","domRef","MODE_CONTROLLED","MODE_UNCONTROLLED","Tabs","maxTabIndex","defaultIndex","defaultFocus","TabList","DEFAULT_CLASS","Tab","_cx","disabledClassName","panelId","selectedClassName","tabRef","TabPanel","tabId","BASE_EMBED_PLAYER_API_URL","makeRequest","requestParams","createEmbedPlayerAssetsFullPath","assetsPath","projectBase","mouseRotate","mouseZoom","mouseMove","touchRotate","toucnZoom","touchMove","ACTIONS","tabName","SETTINGS_NO_CLOSE_ATTR","COMMON_OPTION_HEIGHT","DIVIDER_HEIGHT","MENU_TOP_MARGIN","MENU_TOP_PADDING","calcContextMenuBottomPosition","textureSwitchAvailable","downloadOptionVisible","openInCloudLinkAvailable","isDownloadAllowed","initialTextureState","downloadLink","openLink","isFullScreenAvailable","toggleTexture","isSettingsMenuOpen","setIsSettingsMenuOpen","isNavigationHelpOpen","setIsNavigationHelpOpen","textureChecked","setTextureChecked","settingsContextMenuWrapperRef","navigationHelpRef","settingsControlShown","handleOpenOptionClick","prevIsNavigationHelpOpen","NavigationHelpPanel","prevIsSettingsMenuOpen","prevTexture","MOUSE_TEXT","FINGER_TEXT","INTERVAL_DELAY","FAST_INTERVAL_DELAY","isLodUnavailable","initLoadingProgress","modelLoadingProgress","onProgressPeakReach","timeoutIdRef","artificialProgress","setArtificialProgress","mainProgressValue","stopArtificialProgress","prevArtificialProgress","ScalingSide","previewUrl","modelName","backgroundColor","placeholderIconColor","wrapperRef","scaling","setScaling","getEmbeddedModelData","embedded_sharing","UIStep","getTokenFromLocation","setObjectsSettings","objectsSettings","firstObjectSettings","secondObjectSettings","playerData","setPlayerData","uiState","setUiState","setInitLoadingProgress","setModelLoadingProgress","showPreviewBackground","setShowPreviewBackground","showMainLoader","setShowMainLoader","splitPosition","setSplitPosition","isSplitDragging","setIsSplitDragging","hideInteractionHelp","updateHideInteractionHelp","canvasRef","interactionPerformedRef","splitElementWidthRef","afterFullScreenToggleRef","modelIsLoading","showGeometryLoader","showPlayButton","showInteractionHelp","showControls","onUserInteraction","addWPEvents","loadingProgressState","initProgresses","geometryProgresses","loadingProgressObject","initProgress","geometryProgress","setSplitElementWidth","setCompareSplitPosition","splitHalfWidth","resetCompareSplitPosition","initScene","sjsonPath","objects_settings","scene_settings","shared_objects","isBackgroundTransparent","firstSharedObject","secondSharedObject","getAnotherObjectId","initPlayer","handleLoadingFinish","themeMainColor","settings","showHeaders"],"mappings":"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AAG,CACD,KAAM,IACN,QAAS,mGACX,EAAG,CACD,KAAM,IACN,QAAS,uFACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,iMACX,EAAG,CACD,KAAM,IACN,QAAS,6CACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,yDACX,EAAG,CACD,KAAM,IACN,QAAS,2BACX,EAAG,CACD,KAAM,IACN,QAAS,qFACX,EAAG,CACD,KAAM,IACN,QAAS,iFACX,EAAG,CACD,KAAM,IACN,QAAS,mMACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,KACN,QAAS,kBACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,KACN,QAAS,cACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,mDACX,EAAG,CACD,KAAM,IACN,QAAS,yEACX,EAAG,CACD,KAAM,IACN,QAAS,iFACX,EAAG,CACD,KAAM,KACN,QAAS,cACX,EAAG,CACD,KAAM,IACN,QAAS,+KACX,EAAG,CACD,KAAM,IACN,QAAS,iCACX,EAAG,CACD,KAAM,IACN,QAAS,uFACX,EAAG,CACD,KAAM,IACN,QAAS,uFACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,6GACX,EAAG,CACD,KAAM,IACN,QAAS,iCACX,EAAG,CACD,KAAM,IACN,QAAS,iFACX,EAAG,CACD,KAAM,IACN,QAAS,+GACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,6CACX,EAAG,CACD,KAAM,IACN,QAAS,iGACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,mPACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,yDACX,EAAG,C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M,IACN,QAAS,4kBACX,EAAG,CACD,KAAM,KACN,QAAS,oBACX,EAAG,CACD,KAAM,KACN,QAAS,oBACX,EAAG,CACD,KAAM,KACN,QAAS,sBACX,EAAG,CACD,KAAM,KACN,QAAS,oBACX,EAAG,CACD,KAAM,IACN,QAAS,qJACX,EAAG,CACD,KAAM,IACN,QAAS,2FACX,EAAG,CACD,KAAM,IACN,QAAS,kPACX,EAAG,CACD,KAAM,IACN,QAAS,kPACX,EAAG,CACD,KAAM,IACN,QAAS,kNACX,EAAG,CACD,KAAM,KACN,QAAS,oBACX,EAAG,CACD,KAAM,KACN,QAAS,sBACX,EAAG,CACD,KAAM,IACN,QAAS,+cACX,EAAG,CACD,KAAM,IACN,QAAS,qHACX,EAAG,CACD,KAAM,KACN,QAAS,sBACX,EAAG,CACD,KAAM,IACN,QAAS,kJACX,EAAG,CACD,KAAM,IACN,QAAS,4EACX,EAAG,CACD,KAAM,IACN,QAAS,kNACX,EAAG,CACD,KAAM,IACN,QAAS,wMACX,EAAG,CACD,KAAM,IACN,QAAS,geACX,EAAG,CACD,KAAM,KACN,QAAS,sBACX,EAAG,CACD,KAAM,KACN,QAAS,8CACX,EAAG,CACD,KAAM,KACN,QAAS,sBACX,EAAG,CACD,KAAM,KACN,QAAS,sBACX,EAAG,CACD,KAAM,KACN,QAAS,qCACX,EAAG,CACD,KAAM,KACN,QAAS,sBACX,EAAG,CACD,KAAM,IACN,QAAS,iIACX,EAAG,CACD,KAAM,IACN,QAAS,sLACX,EAAG,CACD,KAAM,IACN,QAAS,oNACX,EAAG,CACD,KAAM,KACN,QAAS,iCACX,EAAG,CACD,KAAM,IACN,QAAS,0aACX,EAAG,CACD,KAAM,IACN,QAAS,2FACX,EAAG,CACD,KAAM,IACN,QAAS,mNACX,EAAG,CACD,KAAM,IACN,QAAS,uNACX,EAAG,CACD,KAAM,KACN,QAAS,oBACX,EAAG,CACD,KAAM,IACN,QAAS,kRACX,EAAG,CACD,KAAM,KACN,QAAS,oBACX,EAAG,CACD,KAAM,IACN,QAAS,wFACX,EAAG,CACD,KAAM,IACN,QAAS,6MACX,EAA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AA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,C,gBCAjBA,EAAO,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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E,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAA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CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,6B,kBCA3CA,EAAO,QAAU,IAA0B,kB,gBCA3C,SAAS+/E,EA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","file":"js/embed_player-23a0df4e338a7cb6ff79.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/assets/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1590);\n","export const drawMode = {\n TRIANGLES : 0,\n LINES : 1,\n TRIANGLE_STRIP : 2,\n TRIANGLE_FAN : 3,\n POINTS : 4,\n};\nexport const attributeId = {\n POSITION : 1,\n INDICES_32 : 2,\n INDICES_16 : 6,\n INDICES_8 : 7,\n NORMAL : 3,\n UV : 4,\n COLOR : 5,\n SIZE : 8,\n POSITION2D : 9,\n FIT_MASK : 10,\n DISTANCE : 11,\n EDGES_INDICES_32: 12,\n EDGES_INDICES_16: 13,\n EDGES_INDICES_8 : 14,\n OLD_INDICES: 16,\n};\nexport const primitiveType = {\n PLANE : 0,\n SPHERE : 1,\n AABOX : 2,\n SCREEN_QUAD : 3,\n CIRCLE : 4,\n LINE : 5,\n GRID : 6,\n LINE_ARRAY : 7,\n TEXT_PLANE : 8,\n ARROW : 9,\n};\nexport const triangleSide = {\n FRONT : 0,\n BACK : 1,\n FRONT_AND_BACK : 2\n};\nexport const stencilFunc = {\n NEVER : 0,\n LESS : 1,\n EQUAL : 2,\n LEQUAL : 3,\n GREATER : 4,\n NOTEQUAL : 5,\n GEQUAL : 6,\n ALWAYS : 7\n};\nexport const stencilAction = {\n KEEP : 0,\n ZERO : 1,\n REPLACE : 2,\n INCR : 3,\n INCR_WRAP : 4,\n DECR : 5,\n DECR_WRAP : 6,\n INVERT : 7\n};\nexport const stencilValue = {\n HIGHLIGHTED_OBJECT: 1,\n TRANSPARENT_LINES: 2,\n OPAQUE_LINES: 3,\n DEFAULT_BORDER: 4,\n HOVERED_BORDER: 5,\n ACTIVE_BORDER: 6,\n CLEAR: 127,\n};\nexport const pixelBufferType = {\n T_RGBA : 0,\n T_DEPTH : 1,\n RB_DEPTH : 2,\n RB_RGBA : 3,\n RB_STENCIL : 4,\n T_RGBA16F : 5,\n T_RG32F : 6,\n T_COMPRESSED: 7,\n CM_RGBA : 8,\n};\nexport const attachmentId = {\n BASE_COLOR_TEXTURE: 0,\n OUTPUT_COLOR_TEXTURE: 1,\n TRIANGLE_ID_TEXTURE: 2,\n WORKSPACE_DEPTH_STENCIL: 3,\n INTERFACE_DEPTH: 4,\n OBJECT_ID_TEXTURE: 5,\n COMPARE_LEFT_TEXTURE: 6,\n COMPARE_RIGHT_TEXTURE: 7,\n COMPARE_LEFT_TRIANGLE_ID_TEXTURE: 8,\n COMPARE_RIGHT_TRIANGLE_ID_TEXTURE: 9,\n};\nexport const geometry = {\n AXIS_X : new Float32Array([1, 0, 0]),\n AXIS_MX : new Float32Array([-1, 0, 0]),\n AXIS_Y : new Float32Array([0, 1, 0]),\n AXIS_MY : new Float32Array([0, -1, 0]),\n AXIS_Z : new Float32Array([0, 0, 1]),\n AXIS_MZ : new Float32Array([0, 0, -1])\n};\nexport const vboType = {\n FLOAT: 0,\n UNSIGNED_BYTE : 1\n};\nexport const bufferType = {\n F32_1 : 0,\n F32_2 : 1,\n F32_3 : 2,\n F32_4 : 3,\n UI8_1 : 4,\n UI8_2 : 5,\n UI8_3 : 6,\n UI8_4 : 7,\n UI16_1 : 8,\n UI16_2 : 9,\n UI16_3 : 10,\n UI32_1 : 11,\n UI32_2 : 12,\n UI32_3 : 13,\n I8_1 : 14,\n I8_2 : 15,\n I8_3 : 16,\n I16_1 : 17,\n I16_2 : 18,\n I16_3 : 19,\n I32_1 : 20,\n I32_2 : 21,\n I32_3 : 22,\n};\nexport const objectType = {\n BBOX : 0,\n MESH : 1\n};\nexport const blendFactor = {\n ZERO : 0,\n ONE : 1,\n SRC_ALPHA : 2,\n ONE_MINUS_SRC_ALPHA : 3,\n DST_ALPHA : 4,\n ONE_MINUS_DST_ALPHA : 5,\n CONSTANT_ALPHA : 6,\n ONE_MINUS_CONSTANT_ALPHA : 7,\n SRC_COLOR : 8,\n ONE_MINUS_SRC_COLOR : 9,\n DST_COLOR : 10,\n ONE_MINUS_DST_COLOR : 11\n};\nexport const blendEquation = {\n FUNC_ADD : 0,\n FUNC_SUBTRACT : 1,\n FUNC_REVERSE_SUBTRACT : 2,\n MIN : 3,\n MAX : 4\n};\nexport const textureMagFilter = {\n NEAREST : 0,\n LINEAR : 1\n};\nexport const textureMinFilter = {\n NEAREST : 0,\n LINEAR : 1,\n NEAREST_MIPMAP_NEAREST : 2,\n LINEAR_MIPMAP_NEAREST : 3,\n NEAREST_MIPMAP_LINEAR : 4,\n LINEAR_MIPMAP_LINEAR : 5\n};\nexport const textureWrapper = {\n CLAMP : 0,\n REPEAT : 1,\n MIRROR : 2\n};\nexport const RBIntFormat = {\n R4G4B4A4: 0,\n R5G6B5 : 1,\n R5G5B5A1: 2,\n R8G8B8A8: 3,\n D16U : 4,\n D24U : 5,\n S8 : 6,\n DS : 7,\n D24S8 : 8,\n};\nexport const CompressedTextureFormat = {\n DXT1 : 0,\n DXT3 : 1,\n DXT5 : 2,\n};\nexport const direction = {\n RIGHT: 1,\n LEFT: -1,\n UP: 1,\n DOWN: -1,\n FORWARD: 1,\n BACKWARD: -1,\n NONE: 0\n};\nexport const cameraType = {\n PERSPECTIVE : 0,\n ORTHO : 1\n};\nexport const easingType = {\n LINEAR : 0,\n IN_QUAD : 1,\n OUT_QUAD : 2,\n IN_OUT_QUAD : 3,\n IN_CUBIC : 4,\n OUT_CUBIC : 5,\n IN_OUT_CUBIC : 6,\n IN_QUART : 7,\n OUT_QUART : 8,\n IN_OUT_QUART : 9,\n IN_QUINT : 10,\n OUT_QUINT : 11,\n IN_OUT_QUINT : 12,\n IN_SINE : 13,\n OUT_SINE : 14,\n IN_OUT_SINE : 15,\n IN_EXPO : 16,\n OUT_EXPO : 17,\n IN_OUT_EXPO : 18,\n IN_CIRC : 19,\n OUT_CIRC : 20,\n IN_OUT_CIRC : 21,\n IN_ELASTIC : 22,\n OUT_ELASTIC : 23,\n IN_OUT_ELASTIC : 24,\n IN_BACK : 25,\n OUT_BACK : 26,\n IN_OUT_BACK : 27,\n IN_BOUNCE : 28,\n OUT_BOUNCE : 29,\n IN_OUT_BOUNCE : 30\n};\n\nexport const uniformType = {\n FLOAT1: 0,\n FLOAT1V: 1,\n FLOAT2: 2,\n FLOAT2V: 3,\n FLOAT3: 4,\n FLOAT3V: 5,\n FLOAT4: 6,\n FLOAT4V: 7,\n\n INT1: 8,\n INT1V: 9,\n INT2: 10,\n INT2V: 11,\n INT3: 12,\n INT3V: 13,\n INT4: 14,\n INT4V: 15,\n\n MAT2: 16,\n MAT3: 17,\n MAT4: 18\n};\n\nexport const uniformSource = {\n SHADER: 0,\n OBJECT: 1,\n CHUNK: 2,\n SCENE: 3\n};\n\nexport const drawQueryState = {\n INACTIVE: -1,\n SHOULD_RUN: 0,\n IN_PROGRESS: 1,\n FINISHED: 2\n};\n\nexport const memoryType = {\n CPU_GEOMETRY: 1,\n GPU_GEOMETRY: 2,\n GPU_TEXTURES: 3,\n GPU_FRAMEBUFFERS: 4,\n};\n\nexport const cullingFrontFace = {\n CLOCK_WISE: 1,\n COUNTER_CLOCK_WISE: 2,\n};\n\nexport const cubeMapTarget = {\n POSITIVE_X: 0,\n NEGATIVE_X: 1,\n POSITIVE_Y: 2,\n NEGATIVE_Y: 3,\n POSITIVE_Z: 4,\n NEGATIVE_Z: 5,\n}\n\nexport const networkStatus = {\n OK : 0,\n ERROR : 1\n};\n\nexport const MAX_UINT8_ELEMS = 255;\nexport const MAX_UINT16_ELEMS = 256 * 256 - 1;\nexport const MAX_UINT32_ELEMS = 256 * 256 * 256 * 256 - 1;\n\nexport const EPSILON = 1E-8;\n","/**\n * @fileoverview gl-matrix - High performance matrix and vector operations\n * @author Brandon Jones\n * @author Colin MacKenzie IV\n * @version 2.3.2\n */\n\n/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * @fileoverview gl-matrix - High performance matrix and vector operations\n\t * @author Brandon Jones\n\t * @author Colin MacKenzie IV\n\t * @version 2.3.2\n\t */\n\n\t/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE. */\n\t// END HEADER\n\n\texports.glMatrix = __webpack_require__(1);\n\texports.mat2 = __webpack_require__(2);\n\texports.mat2d = __webpack_require__(3);\n\texports.mat3 = __webpack_require__(4);\n\texports.mat4 = __webpack_require__(5);\n\texports.quat = __webpack_require__(6);\n\texports.vec2 = __webpack_require__(9);\n\texports.vec3 = __webpack_require__(7);\n\texports.vec4 = __webpack_require__(8);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE. */\n\n\t/**\n\t * @class Common utilities\n\t * @name glMatrix\n\t */\n\tvar glMatrix = {};\n\n\t// Configuration Constants\n\tglMatrix.EPSILON = 0.000001;\n\tglMatrix.ARRAY_TYPE = (typeof Float32Array !== 'undefined') ? Float32Array : Array;\n\tglMatrix.RANDOM = Math.random;\n\tglMatrix.ENABLE_SIMD = false;\n\n\t// Capability detection\n\tglMatrix.SIMD_AVAILABLE = (glMatrix.ARRAY_TYPE === this.Float32Array) && ('SIMD' in this);\n\tglMatrix.USE_SIMD = glMatrix.ENABLE_SIMD && glMatrix.SIMD_AVAILABLE;\n\n\t/**\n\t * Sets the type of array used when creating new vectors and matrices\n\t *\n\t * @param {Type} type Array type, such as Float32Array or Array\n\t */\n\tglMatrix.setMatrixArrayType = function(type) {\n\t glMatrix.ARRAY_TYPE = type;\n\t}\n\n\tvar degree = Math.PI / 180;\n\n\t/**\n\t* Convert Degree To Radian\n\t*\n\t* @param {Number} a Angle in Degrees\n\t*/\n\tglMatrix.toRadian = function(a){\n\t return a * degree;\n\t}\n\n\t/**\n\t * Tests whether or not the arguments have approximately the same value, within an absolute\n\t * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less \n\t * than or equal to 1.0, and a relative tolerance is used for larger values)\n\t * \n\t * @param {Number} a The first number to test.\n\t * @param {Number} b The second number to test.\n\t * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n\t */\n\tglMatrix.equals = function(a, b) {\n\t\treturn Math.abs(a - b) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a), Math.abs(b));\n\t}\n\n\tmodule.exports = glMatrix;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE. */\n\n\tvar glMatrix = __webpack_require__(1);\n\n\t/**\n\t * @class 2x2 Matrix\n\t * @name mat2\n\t */\n\tvar mat2 = {};\n\n\t/**\n\t * Creates a new identity mat2\n\t *\n\t * @returns {mat2} a new 2x2 matrix\n\t */\n\tmat2.create = function() {\n\t var out = new glMatrix.ARRAY_TYPE(4);\n\t out[0] = 1;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 1;\n\t return out;\n\t};\n\n\t/**\n\t * Creates a new mat2 initialized with values from an existing matrix\n\t *\n\t * @param {mat2} a matrix to clone\n\t * @returns {mat2} a new 2x2 matrix\n\t */\n\tmat2.clone = function(a) {\n\t var out = new glMatrix.ARRAY_TYPE(4);\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[3];\n\t return out;\n\t};\n\n\t/**\n\t * Copy the values from one mat2 to another\n\t *\n\t * @param {mat2} out the receiving matrix\n\t * @param {mat2} a the source matrix\n\t * @returns {mat2} out\n\t */\n\tmat2.copy = function(out, a) {\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[3];\n\t return out;\n\t};\n\n\t/**\n\t * Set a mat2 to the identity matrix\n\t *\n\t * @param {mat2} out the receiving matrix\n\t * @returns {mat2} out\n\t */\n\tmat2.identity = function(out) {\n\t out[0] = 1;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 1;\n\t return out;\n\t};\n\n\t/**\n\t * Create a new mat2 with the given values\n\t *\n\t * @param {Number} m00 Component in column 0, row 0 position (index 0)\n\t * @param {Number} m01 Component in column 0, row 1 position (index 1)\n\t * @param {Number} m10 Component in column 1, row 0 position (index 2)\n\t * @param {Number} m11 Component in column 1, row 1 position (index 3)\n\t * @returns {mat2} out A new 2x2 matrix\n\t */\n\tmat2.fromValues = function(m00, m01, m10, m11) {\n\t var out = new glMatrix.ARRAY_TYPE(4);\n\t out[0] = m00;\n\t out[1] = m01;\n\t out[2] = m10;\n\t out[3] = m11;\n\t return out;\n\t};\n\n\t/**\n\t * Set the components of a mat2 to the given values\n\t *\n\t * @param {mat2} out the receiving matrix\n\t * @param {Number} m00 Component in column 0, row 0 position (index 0)\n\t * @param {Number} m01 Component in column 0, row 1 position (index 1)\n\t * @param {Number} m10 Component in column 1, row 0 position (index 2)\n\t * @param {Number} m11 Component in column 1, row 1 position (index 3)\n\t * @returns {mat2} out\n\t */\n\tmat2.set = function(out, m00, m01, m10, m11) {\n\t out[0] = m00;\n\t out[1] = m01;\n\t out[2] = m10;\n\t out[3] = m11;\n\t return out;\n\t};\n\n\n\t/**\n\t * Transpose the values of a mat2\n\t *\n\t * @param {mat2} out the receiving matrix\n\t * @param {mat2} a the source matrix\n\t * @returns {mat2} out\n\t */\n\tmat2.transpose = function(out, a) {\n\t // If we are transposing ourselves we can skip a few steps but have to cache some values\n\t if (out === a) {\n\t var a1 = a[1];\n\t out[1] = a[2];\n\t out[2] = a1;\n\t } else {\n\t out[0] = a[0];\n\t out[1] = a[2];\n\t out[2] = a[1];\n\t out[3] = a[3];\n\t }\n\t \n\t return out;\n\t};\n\n\t/**\n\t * Inverts a mat2\n\t *\n\t * @param {mat2} out the receiving matrix\n\t * @param {mat2} a the source matrix\n\t * @returns {mat2} out\n\t */\n\tmat2.invert = function(out, a) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3],\n\n\t // Calculate the determinant\n\t det = a0 * a3 - a2 * a1;\n\n\t if (!det) {\n\t return null;\n\t }\n\t det = 1.0 / det;\n\t \n\t out[0] = a3 * det;\n\t out[1] = -a1 * det;\n\t out[2] = -a2 * det;\n\t out[3] = a0 * det;\n\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the adjugate of a mat2\n\t *\n\t * @param {mat2} out the receiving matrix\n\t * @param {mat2} a the source matrix\n\t * @returns {mat2} out\n\t */\n\tmat2.adjoint = function(out, a) {\n\t // Caching this value is nessecary if out == a\n\t var a0 = a[0];\n\t out[0] = a[3];\n\t out[1] = -a[1];\n\t out[2] = -a[2];\n\t out[3] = a0;\n\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the determinant of a mat2\n\t *\n\t * @param {mat2} a the source matrix\n\t * @returns {Number} determinant of a\n\t */\n\tmat2.determinant = function (a) {\n\t return a[0] * a[3] - a[2] * a[1];\n\t};\n\n\t/**\n\t * Multiplies two mat2's\n\t *\n\t * @param {mat2} out the receiving matrix\n\t * @param {mat2} a the first operand\n\t * @param {mat2} b the second operand\n\t * @returns {mat2} out\n\t */\n\tmat2.multiply = function (out, a, b) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n\t var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n\t out[0] = a0 * b0 + a2 * b1;\n\t out[1] = a1 * b0 + a3 * b1;\n\t out[2] = a0 * b2 + a2 * b3;\n\t out[3] = a1 * b2 + a3 * b3;\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link mat2.multiply}\n\t * @function\n\t */\n\tmat2.mul = mat2.multiply;\n\n\t/**\n\t * Rotates a mat2 by the given angle\n\t *\n\t * @param {mat2} out the receiving matrix\n\t * @param {mat2} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat2} out\n\t */\n\tmat2.rotate = function (out, a, rad) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3],\n\t s = Math.sin(rad),\n\t c = Math.cos(rad);\n\t out[0] = a0 * c + a2 * s;\n\t out[1] = a1 * c + a3 * s;\n\t out[2] = a0 * -s + a2 * c;\n\t out[3] = a1 * -s + a3 * c;\n\t return out;\n\t};\n\n\t/**\n\t * Scales the mat2 by the dimensions in the given vec2\n\t *\n\t * @param {mat2} out the receiving matrix\n\t * @param {mat2} a the matrix to rotate\n\t * @param {vec2} v the vec2 to scale the matrix by\n\t * @returns {mat2} out\n\t **/\n\tmat2.scale = function(out, a, v) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3],\n\t v0 = v[0], v1 = v[1];\n\t out[0] = a0 * v0;\n\t out[1] = a1 * v0;\n\t out[2] = a2 * v1;\n\t out[3] = a3 * v1;\n\t return out;\n\t};\n\n\t/**\n\t * Creates a matrix from a given angle\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat2.identity(dest);\n\t * mat2.rotate(dest, dest, rad);\n\t *\n\t * @param {mat2} out mat2 receiving operation result\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat2} out\n\t */\n\tmat2.fromRotation = function(out, rad) {\n\t var s = Math.sin(rad),\n\t c = Math.cos(rad);\n\t out[0] = c;\n\t out[1] = s;\n\t out[2] = -s;\n\t out[3] = c;\n\t return out;\n\t}\n\n\t/**\n\t * Creates a matrix from a vector scaling\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat2.identity(dest);\n\t * mat2.scale(dest, dest, vec);\n\t *\n\t * @param {mat2} out mat2 receiving operation result\n\t * @param {vec2} v Scaling vector\n\t * @returns {mat2} out\n\t */\n\tmat2.fromScaling = function(out, v) {\n\t out[0] = v[0];\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = v[1];\n\t return out;\n\t}\n\n\t/**\n\t * Returns a string representation of a mat2\n\t *\n\t * @param {mat2} a matrix to represent as a string\n\t * @returns {String} string representation of the matrix\n\t */\n\tmat2.str = function (a) {\n\t return 'mat2(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')';\n\t};\n\n\t/**\n\t * Returns Frobenius norm of a mat2\n\t *\n\t * @param {mat2} a the matrix to calculate Frobenius norm of\n\t * @returns {Number} Frobenius norm\n\t */\n\tmat2.frob = function (a) {\n\t return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2)))\n\t};\n\n\t/**\n\t * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix\n\t * @param {mat2} L the lower triangular matrix \n\t * @param {mat2} D the diagonal matrix \n\t * @param {mat2} U the upper triangular matrix \n\t * @param {mat2} a the input matrix to factorize\n\t */\n\n\tmat2.LDU = function (L, D, U, a) { \n\t L[2] = a[2]/a[0]; \n\t U[0] = a[0]; \n\t U[1] = a[1]; \n\t U[3] = a[3] - L[2] * U[1]; \n\t return [L, D, U]; \n\t}; \n\n\t/**\n\t * Adds two mat2's\n\t *\n\t * @param {mat2} out the receiving matrix\n\t * @param {mat2} a the first operand\n\t * @param {mat2} b the second operand\n\t * @returns {mat2} out\n\t */\n\tmat2.add = function(out, a, b) {\n\t out[0] = a[0] + b[0];\n\t out[1] = a[1] + b[1];\n\t out[2] = a[2] + b[2];\n\t out[3] = a[3] + b[3];\n\t return out;\n\t};\n\n\t/**\n\t * Subtracts matrix b from matrix a\n\t *\n\t * @param {mat2} out the receiving matrix\n\t * @param {mat2} a the first operand\n\t * @param {mat2} b the second operand\n\t * @returns {mat2} out\n\t */\n\tmat2.subtract = function(out, a, b) {\n\t out[0] = a[0] - b[0];\n\t out[1] = a[1] - b[1];\n\t out[2] = a[2] - b[2];\n\t out[3] = a[3] - b[3];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link mat2.subtract}\n\t * @function\n\t */\n\tmat2.sub = mat2.subtract;\n\n\t/**\n\t * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n\t *\n\t * @param {mat2} a The first matrix.\n\t * @param {mat2} b The second matrix.\n\t * @returns {Boolean} True if the matrices are equal, false otherwise.\n\t */\n\tmat2.exactEquals = function (a, b) {\n\t return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n\t};\n\n\t/**\n\t * Returns whether or not the matrices have approximately the same elements in the same position.\n\t *\n\t * @param {mat2} a The first matrix.\n\t * @param {mat2} b The second matrix.\n\t * @returns {Boolean} True if the matrices are equal, false otherwise.\n\t */\n\tmat2.equals = function (a, b) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n\t var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n\t return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n\t Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\n\t Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\n\t Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)));\n\t};\n\n\t/**\n\t * Multiply each element of the matrix by a scalar.\n\t *\n\t * @param {mat2} out the receiving matrix\n\t * @param {mat2} a the matrix to scale\n\t * @param {Number} b amount to scale the matrix's elements by\n\t * @returns {mat2} out\n\t */\n\tmat2.multiplyScalar = function(out, a, b) {\n\t out[0] = a[0] * b;\n\t out[1] = a[1] * b;\n\t out[2] = a[2] * b;\n\t out[3] = a[3] * b;\n\t return out;\n\t};\n\n\t/**\n\t * Adds two mat2's after multiplying each element of the second operand by a scalar value.\n\t *\n\t * @param {mat2} out the receiving vector\n\t * @param {mat2} a the first operand\n\t * @param {mat2} b the second operand\n\t * @param {Number} scale the amount to scale b's elements by before adding\n\t * @returns {mat2} out\n\t */\n\tmat2.multiplyScalarAndAdd = function(out, a, b, scale) {\n\t out[0] = a[0] + (b[0] * scale);\n\t out[1] = a[1] + (b[1] * scale);\n\t out[2] = a[2] + (b[2] * scale);\n\t out[3] = a[3] + (b[3] * scale);\n\t return out;\n\t};\n\n\tmodule.exports = mat2;\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE. */\n\n\tvar glMatrix = __webpack_require__(1);\n\n\t/**\n\t * @class 2x3 Matrix\n\t * @name mat2d\n\t * \n\t * @description \n\t * A mat2d contains six elements defined as:\n\t *
\n\t * [a, c, tx,\n\t *  b, d, ty]\n\t * 
\n\t * This is a short form for the 3x3 matrix:\n\t *
\n\t * [a, c, tx,\n\t *  b, d, ty,\n\t *  0, 0, 1]\n\t * 
\n\t * The last row is ignored so the array is shorter and operations are faster.\n\t */\n\tvar mat2d = {};\n\n\t/**\n\t * Creates a new identity mat2d\n\t *\n\t * @returns {mat2d} a new 2x3 matrix\n\t */\n\tmat2d.create = function() {\n\t var out = new glMatrix.ARRAY_TYPE(6);\n\t out[0] = 1;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 1;\n\t out[4] = 0;\n\t out[5] = 0;\n\t return out;\n\t};\n\n\t/**\n\t * Creates a new mat2d initialized with values from an existing matrix\n\t *\n\t * @param {mat2d} a matrix to clone\n\t * @returns {mat2d} a new 2x3 matrix\n\t */\n\tmat2d.clone = function(a) {\n\t var out = new glMatrix.ARRAY_TYPE(6);\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[3];\n\t out[4] = a[4];\n\t out[5] = a[5];\n\t return out;\n\t};\n\n\t/**\n\t * Copy the values from one mat2d to another\n\t *\n\t * @param {mat2d} out the receiving matrix\n\t * @param {mat2d} a the source matrix\n\t * @returns {mat2d} out\n\t */\n\tmat2d.copy = function(out, a) {\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[3];\n\t out[4] = a[4];\n\t out[5] = a[5];\n\t return out;\n\t};\n\n\t/**\n\t * Set a mat2d to the identity matrix\n\t *\n\t * @param {mat2d} out the receiving matrix\n\t * @returns {mat2d} out\n\t */\n\tmat2d.identity = function(out) {\n\t out[0] = 1;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 1;\n\t out[4] = 0;\n\t out[5] = 0;\n\t return out;\n\t};\n\n\t/**\n\t * Create a new mat2d with the given values\n\t *\n\t * @param {Number} a Component A (index 0)\n\t * @param {Number} b Component B (index 1)\n\t * @param {Number} c Component C (index 2)\n\t * @param {Number} d Component D (index 3)\n\t * @param {Number} tx Component TX (index 4)\n\t * @param {Number} ty Component TY (index 5)\n\t * @returns {mat2d} A new mat2d\n\t */\n\tmat2d.fromValues = function(a, b, c, d, tx, ty) {\n\t var out = new glMatrix.ARRAY_TYPE(6);\n\t out[0] = a;\n\t out[1] = b;\n\t out[2] = c;\n\t out[3] = d;\n\t out[4] = tx;\n\t out[5] = ty;\n\t return out;\n\t};\n\n\t/**\n\t * Set the components of a mat2d to the given values\n\t *\n\t * @param {mat2d} out the receiving matrix\n\t * @param {Number} a Component A (index 0)\n\t * @param {Number} b Component B (index 1)\n\t * @param {Number} c Component C (index 2)\n\t * @param {Number} d Component D (index 3)\n\t * @param {Number} tx Component TX (index 4)\n\t * @param {Number} ty Component TY (index 5)\n\t * @returns {mat2d} out\n\t */\n\tmat2d.set = function(out, a, b, c, d, tx, ty) {\n\t out[0] = a;\n\t out[1] = b;\n\t out[2] = c;\n\t out[3] = d;\n\t out[4] = tx;\n\t out[5] = ty;\n\t return out;\n\t};\n\n\t/**\n\t * Inverts a mat2d\n\t *\n\t * @param {mat2d} out the receiving matrix\n\t * @param {mat2d} a the source matrix\n\t * @returns {mat2d} out\n\t */\n\tmat2d.invert = function(out, a) {\n\t var aa = a[0], ab = a[1], ac = a[2], ad = a[3],\n\t atx = a[4], aty = a[5];\n\n\t var det = aa * ad - ab * ac;\n\t if(!det){\n\t return null;\n\t }\n\t det = 1.0 / det;\n\n\t out[0] = ad * det;\n\t out[1] = -ab * det;\n\t out[2] = -ac * det;\n\t out[3] = aa * det;\n\t out[4] = (ac * aty - ad * atx) * det;\n\t out[5] = (ab * atx - aa * aty) * det;\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the determinant of a mat2d\n\t *\n\t * @param {mat2d} a the source matrix\n\t * @returns {Number} determinant of a\n\t */\n\tmat2d.determinant = function (a) {\n\t return a[0] * a[3] - a[1] * a[2];\n\t};\n\n\t/**\n\t * Multiplies two mat2d's\n\t *\n\t * @param {mat2d} out the receiving matrix\n\t * @param {mat2d} a the first operand\n\t * @param {mat2d} b the second operand\n\t * @returns {mat2d} out\n\t */\n\tmat2d.multiply = function (out, a, b) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5],\n\t b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5];\n\t out[0] = a0 * b0 + a2 * b1;\n\t out[1] = a1 * b0 + a3 * b1;\n\t out[2] = a0 * b2 + a2 * b3;\n\t out[3] = a1 * b2 + a3 * b3;\n\t out[4] = a0 * b4 + a2 * b5 + a4;\n\t out[5] = a1 * b4 + a3 * b5 + a5;\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link mat2d.multiply}\n\t * @function\n\t */\n\tmat2d.mul = mat2d.multiply;\n\n\t/**\n\t * Rotates a mat2d by the given angle\n\t *\n\t * @param {mat2d} out the receiving matrix\n\t * @param {mat2d} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat2d} out\n\t */\n\tmat2d.rotate = function (out, a, rad) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5],\n\t s = Math.sin(rad),\n\t c = Math.cos(rad);\n\t out[0] = a0 * c + a2 * s;\n\t out[1] = a1 * c + a3 * s;\n\t out[2] = a0 * -s + a2 * c;\n\t out[3] = a1 * -s + a3 * c;\n\t out[4] = a4;\n\t out[5] = a5;\n\t return out;\n\t};\n\n\t/**\n\t * Scales the mat2d by the dimensions in the given vec2\n\t *\n\t * @param {mat2d} out the receiving matrix\n\t * @param {mat2d} a the matrix to translate\n\t * @param {vec2} v the vec2 to scale the matrix by\n\t * @returns {mat2d} out\n\t **/\n\tmat2d.scale = function(out, a, v) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5],\n\t v0 = v[0], v1 = v[1];\n\t out[0] = a0 * v0;\n\t out[1] = a1 * v0;\n\t out[2] = a2 * v1;\n\t out[3] = a3 * v1;\n\t out[4] = a4;\n\t out[5] = a5;\n\t return out;\n\t};\n\n\t/**\n\t * Translates the mat2d by the dimensions in the given vec2\n\t *\n\t * @param {mat2d} out the receiving matrix\n\t * @param {mat2d} a the matrix to translate\n\t * @param {vec2} v the vec2 to translate the matrix by\n\t * @returns {mat2d} out\n\t **/\n\tmat2d.translate = function(out, a, v) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5],\n\t v0 = v[0], v1 = v[1];\n\t out[0] = a0;\n\t out[1] = a1;\n\t out[2] = a2;\n\t out[3] = a3;\n\t out[4] = a0 * v0 + a2 * v1 + a4;\n\t out[5] = a1 * v0 + a3 * v1 + a5;\n\t return out;\n\t};\n\n\t/**\n\t * Creates a matrix from a given angle\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat2d.identity(dest);\n\t * mat2d.rotate(dest, dest, rad);\n\t *\n\t * @param {mat2d} out mat2d receiving operation result\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat2d} out\n\t */\n\tmat2d.fromRotation = function(out, rad) {\n\t var s = Math.sin(rad), c = Math.cos(rad);\n\t out[0] = c;\n\t out[1] = s;\n\t out[2] = -s;\n\t out[3] = c;\n\t out[4] = 0;\n\t out[5] = 0;\n\t return out;\n\t}\n\n\t/**\n\t * Creates a matrix from a vector scaling\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat2d.identity(dest);\n\t * mat2d.scale(dest, dest, vec);\n\t *\n\t * @param {mat2d} out mat2d receiving operation result\n\t * @param {vec2} v Scaling vector\n\t * @returns {mat2d} out\n\t */\n\tmat2d.fromScaling = function(out, v) {\n\t out[0] = v[0];\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = v[1];\n\t out[4] = 0;\n\t out[5] = 0;\n\t return out;\n\t}\n\n\t/**\n\t * Creates a matrix from a vector translation\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat2d.identity(dest);\n\t * mat2d.translate(dest, dest, vec);\n\t *\n\t * @param {mat2d} out mat2d receiving operation result\n\t * @param {vec2} v Translation vector\n\t * @returns {mat2d} out\n\t */\n\tmat2d.fromTranslation = function(out, v) {\n\t out[0] = 1;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 1;\n\t out[4] = v[0];\n\t out[5] = v[1];\n\t return out;\n\t}\n\n\t/**\n\t * Returns a string representation of a mat2d\n\t *\n\t * @param {mat2d} a matrix to represent as a string\n\t * @returns {String} string representation of the matrix\n\t */\n\tmat2d.str = function (a) {\n\t return 'mat2d(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + \n\t a[3] + ', ' + a[4] + ', ' + a[5] + ')';\n\t};\n\n\t/**\n\t * Returns Frobenius norm of a mat2d\n\t *\n\t * @param {mat2d} a the matrix to calculate Frobenius norm of\n\t * @returns {Number} Frobenius norm\n\t */\n\tmat2d.frob = function (a) { \n\t return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + 1))\n\t}; \n\n\t/**\n\t * Adds two mat2d's\n\t *\n\t * @param {mat2d} out the receiving matrix\n\t * @param {mat2d} a the first operand\n\t * @param {mat2d} b the second operand\n\t * @returns {mat2d} out\n\t */\n\tmat2d.add = function(out, a, b) {\n\t out[0] = a[0] + b[0];\n\t out[1] = a[1] + b[1];\n\t out[2] = a[2] + b[2];\n\t out[3] = a[3] + b[3];\n\t out[4] = a[4] + b[4];\n\t out[5] = a[5] + b[5];\n\t return out;\n\t};\n\n\t/**\n\t * Subtracts matrix b from matrix a\n\t *\n\t * @param {mat2d} out the receiving matrix\n\t * @param {mat2d} a the first operand\n\t * @param {mat2d} b the second operand\n\t * @returns {mat2d} out\n\t */\n\tmat2d.subtract = function(out, a, b) {\n\t out[0] = a[0] - b[0];\n\t out[1] = a[1] - b[1];\n\t out[2] = a[2] - b[2];\n\t out[3] = a[3] - b[3];\n\t out[4] = a[4] - b[4];\n\t out[5] = a[5] - b[5];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link mat2d.subtract}\n\t * @function\n\t */\n\tmat2d.sub = mat2d.subtract;\n\n\t/**\n\t * Multiply each element of the matrix by a scalar.\n\t *\n\t * @param {mat2d} out the receiving matrix\n\t * @param {mat2d} a the matrix to scale\n\t * @param {Number} b amount to scale the matrix's elements by\n\t * @returns {mat2d} out\n\t */\n\tmat2d.multiplyScalar = function(out, a, b) {\n\t out[0] = a[0] * b;\n\t out[1] = a[1] * b;\n\t out[2] = a[2] * b;\n\t out[3] = a[3] * b;\n\t out[4] = a[4] * b;\n\t out[5] = a[5] * b;\n\t return out;\n\t};\n\n\t/**\n\t * Adds two mat2d's after multiplying each element of the second operand by a scalar value.\n\t *\n\t * @param {mat2d} out the receiving vector\n\t * @param {mat2d} a the first operand\n\t * @param {mat2d} b the second operand\n\t * @param {Number} scale the amount to scale b's elements by before adding\n\t * @returns {mat2d} out\n\t */\n\tmat2d.multiplyScalarAndAdd = function(out, a, b, scale) {\n\t out[0] = a[0] + (b[0] * scale);\n\t out[1] = a[1] + (b[1] * scale);\n\t out[2] = a[2] + (b[2] * scale);\n\t out[3] = a[3] + (b[3] * scale);\n\t out[4] = a[4] + (b[4] * scale);\n\t out[5] = a[5] + (b[5] * scale);\n\t return out;\n\t};\n\n\t/**\n\t * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n\t *\n\t * @param {mat2d} a The first matrix.\n\t * @param {mat2d} b The second matrix.\n\t * @returns {Boolean} True if the matrices are equal, false otherwise.\n\t */\n\tmat2d.exactEquals = function (a, b) {\n\t return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5];\n\t};\n\n\t/**\n\t * Returns whether or not the matrices have approximately the same elements in the same position.\n\t *\n\t * @param {mat2d} a The first matrix.\n\t * @param {mat2d} b The second matrix.\n\t * @returns {Boolean} True if the matrices are equal, false otherwise.\n\t */\n\tmat2d.equals = function (a, b) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\n\t var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5];\n\t return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n\t Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\n\t Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\n\t Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)) &&\n\t Math.abs(a4 - b4) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a4), Math.abs(b4)) &&\n\t Math.abs(a5 - b5) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a5), Math.abs(b5)));\n\t};\n\n\tmodule.exports = mat2d;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE. */\n\n\tvar glMatrix = __webpack_require__(1);\n\n\t/**\n\t * @class 3x3 Matrix\n\t * @name mat3\n\t */\n\tvar mat3 = {};\n\n\t/**\n\t * Creates a new identity mat3\n\t *\n\t * @returns {mat3} a new 3x3 matrix\n\t */\n\tmat3.create = function() {\n\t var out = new glMatrix.ARRAY_TYPE(9);\n\t out[0] = 1;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 0;\n\t out[4] = 1;\n\t out[5] = 0;\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = 1;\n\t return out;\n\t};\n\n\t/**\n\t * Copies the upper-left 3x3 values into the given mat3.\n\t *\n\t * @param {mat3} out the receiving 3x3 matrix\n\t * @param {mat4} a the source 4x4 matrix\n\t * @returns {mat3} out\n\t */\n\tmat3.fromMat4 = function(out, a) {\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[4];\n\t out[4] = a[5];\n\t out[5] = a[6];\n\t out[6] = a[8];\n\t out[7] = a[9];\n\t out[8] = a[10];\n\t return out;\n\t};\n\n\t/**\n\t * Creates a new mat3 initialized with values from an existing matrix\n\t *\n\t * @param {mat3} a matrix to clone\n\t * @returns {mat3} a new 3x3 matrix\n\t */\n\tmat3.clone = function(a) {\n\t var out = new glMatrix.ARRAY_TYPE(9);\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[3];\n\t out[4] = a[4];\n\t out[5] = a[5];\n\t out[6] = a[6];\n\t out[7] = a[7];\n\t out[8] = a[8];\n\t return out;\n\t};\n\n\t/**\n\t * Copy the values from one mat3 to another\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {mat3} a the source matrix\n\t * @returns {mat3} out\n\t */\n\tmat3.copy = function(out, a) {\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[3];\n\t out[4] = a[4];\n\t out[5] = a[5];\n\t out[6] = a[6];\n\t out[7] = a[7];\n\t out[8] = a[8];\n\t return out;\n\t};\n\n\t/**\n\t * Create a new mat3 with the given values\n\t *\n\t * @param {Number} m00 Component in column 0, row 0 position (index 0)\n\t * @param {Number} m01 Component in column 0, row 1 position (index 1)\n\t * @param {Number} m02 Component in column 0, row 2 position (index 2)\n\t * @param {Number} m10 Component in column 1, row 0 position (index 3)\n\t * @param {Number} m11 Component in column 1, row 1 position (index 4)\n\t * @param {Number} m12 Component in column 1, row 2 position (index 5)\n\t * @param {Number} m20 Component in column 2, row 0 position (index 6)\n\t * @param {Number} m21 Component in column 2, row 1 position (index 7)\n\t * @param {Number} m22 Component in column 2, row 2 position (index 8)\n\t * @returns {mat3} A new mat3\n\t */\n\tmat3.fromValues = function(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n\t var out = new glMatrix.ARRAY_TYPE(9);\n\t out[0] = m00;\n\t out[1] = m01;\n\t out[2] = m02;\n\t out[3] = m10;\n\t out[4] = m11;\n\t out[5] = m12;\n\t out[6] = m20;\n\t out[7] = m21;\n\t out[8] = m22;\n\t return out;\n\t};\n\n\t/**\n\t * Set the components of a mat3 to the given values\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {Number} m00 Component in column 0, row 0 position (index 0)\n\t * @param {Number} m01 Component in column 0, row 1 position (index 1)\n\t * @param {Number} m02 Component in column 0, row 2 position (index 2)\n\t * @param {Number} m10 Component in column 1, row 0 position (index 3)\n\t * @param {Number} m11 Component in column 1, row 1 position (index 4)\n\t * @param {Number} m12 Component in column 1, row 2 position (index 5)\n\t * @param {Number} m20 Component in column 2, row 0 position (index 6)\n\t * @param {Number} m21 Component in column 2, row 1 position (index 7)\n\t * @param {Number} m22 Component in column 2, row 2 position (index 8)\n\t * @returns {mat3} out\n\t */\n\tmat3.set = function(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n\t out[0] = m00;\n\t out[1] = m01;\n\t out[2] = m02;\n\t out[3] = m10;\n\t out[4] = m11;\n\t out[5] = m12;\n\t out[6] = m20;\n\t out[7] = m21;\n\t out[8] = m22;\n\t return out;\n\t};\n\n\t/**\n\t * Set a mat3 to the identity matrix\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @returns {mat3} out\n\t */\n\tmat3.identity = function(out) {\n\t out[0] = 1;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 0;\n\t out[4] = 1;\n\t out[5] = 0;\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = 1;\n\t return out;\n\t};\n\n\t/**\n\t * Transpose the values of a mat3\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {mat3} a the source matrix\n\t * @returns {mat3} out\n\t */\n\tmat3.transpose = function(out, a) {\n\t // If we are transposing ourselves we can skip a few steps but have to cache some values\n\t if (out === a) {\n\t var a01 = a[1], a02 = a[2], a12 = a[5];\n\t out[1] = a[3];\n\t out[2] = a[6];\n\t out[3] = a01;\n\t out[5] = a[7];\n\t out[6] = a02;\n\t out[7] = a12;\n\t } else {\n\t out[0] = a[0];\n\t out[1] = a[3];\n\t out[2] = a[6];\n\t out[3] = a[1];\n\t out[4] = a[4];\n\t out[5] = a[7];\n\t out[6] = a[2];\n\t out[7] = a[5];\n\t out[8] = a[8];\n\t }\n\n\t return out;\n\t};\n\n\t/**\n\t * Inverts a mat3\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {mat3} a the source matrix\n\t * @returns {mat3} out\n\t */\n\tmat3.invert = function(out, a) {\n\t var a00 = a[0], a01 = a[1], a02 = a[2],\n\t a10 = a[3], a11 = a[4], a12 = a[5],\n\t a20 = a[6], a21 = a[7], a22 = a[8],\n\n\t b01 = a22 * a11 - a12 * a21,\n\t b11 = -a22 * a10 + a12 * a20,\n\t b21 = a21 * a10 - a11 * a20,\n\n\t // Calculate the determinant\n\t det = a00 * b01 + a01 * b11 + a02 * b21;\n\n\t if (!det) {\n\t return null;\n\t }\n\t det = 1.0 / det;\n\n\t out[0] = b01 * det;\n\t out[1] = (-a22 * a01 + a02 * a21) * det;\n\t out[2] = (a12 * a01 - a02 * a11) * det;\n\t out[3] = b11 * det;\n\t out[4] = (a22 * a00 - a02 * a20) * det;\n\t out[5] = (-a12 * a00 + a02 * a10) * det;\n\t out[6] = b21 * det;\n\t out[7] = (-a21 * a00 + a01 * a20) * det;\n\t out[8] = (a11 * a00 - a01 * a10) * det;\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the adjugate of a mat3\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {mat3} a the source matrix\n\t * @returns {mat3} out\n\t */\n\tmat3.adjoint = function(out, a) {\n\t var a00 = a[0], a01 = a[1], a02 = a[2],\n\t a10 = a[3], a11 = a[4], a12 = a[5],\n\t a20 = a[6], a21 = a[7], a22 = a[8];\n\n\t out[0] = (a11 * a22 - a12 * a21);\n\t out[1] = (a02 * a21 - a01 * a22);\n\t out[2] = (a01 * a12 - a02 * a11);\n\t out[3] = (a12 * a20 - a10 * a22);\n\t out[4] = (a00 * a22 - a02 * a20);\n\t out[5] = (a02 * a10 - a00 * a12);\n\t out[6] = (a10 * a21 - a11 * a20);\n\t out[7] = (a01 * a20 - a00 * a21);\n\t out[8] = (a00 * a11 - a01 * a10);\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the determinant of a mat3\n\t *\n\t * @param {mat3} a the source matrix\n\t * @returns {Number} determinant of a\n\t */\n\tmat3.determinant = function (a) {\n\t var a00 = a[0], a01 = a[1], a02 = a[2],\n\t a10 = a[3], a11 = a[4], a12 = a[5],\n\t a20 = a[6], a21 = a[7], a22 = a[8];\n\n\t return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n\t};\n\n\t/**\n\t * Multiplies two mat3's\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {mat3} a the first operand\n\t * @param {mat3} b the second operand\n\t * @returns {mat3} out\n\t */\n\tmat3.multiply = function (out, a, b) {\n\t var a00 = a[0], a01 = a[1], a02 = a[2],\n\t a10 = a[3], a11 = a[4], a12 = a[5],\n\t a20 = a[6], a21 = a[7], a22 = a[8],\n\n\t b00 = b[0], b01 = b[1], b02 = b[2],\n\t b10 = b[3], b11 = b[4], b12 = b[5],\n\t b20 = b[6], b21 = b[7], b22 = b[8];\n\n\t out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n\t out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n\t out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n\n\t out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n\t out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n\t out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n\n\t out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n\t out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n\t out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link mat3.multiply}\n\t * @function\n\t */\n\tmat3.mul = mat3.multiply;\n\n\t/**\n\t * Translate a mat3 by the given vector\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {mat3} a the matrix to translate\n\t * @param {vec2} v vector to translate by\n\t * @returns {mat3} out\n\t */\n\tmat3.translate = function(out, a, v) {\n\t var a00 = a[0], a01 = a[1], a02 = a[2],\n\t a10 = a[3], a11 = a[4], a12 = a[5],\n\t a20 = a[6], a21 = a[7], a22 = a[8],\n\t x = v[0], y = v[1];\n\n\t out[0] = a00;\n\t out[1] = a01;\n\t out[2] = a02;\n\n\t out[3] = a10;\n\t out[4] = a11;\n\t out[5] = a12;\n\n\t out[6] = x * a00 + y * a10 + a20;\n\t out[7] = x * a01 + y * a11 + a21;\n\t out[8] = x * a02 + y * a12 + a22;\n\t return out;\n\t};\n\n\t/**\n\t * Rotates a mat3 by the given angle\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {mat3} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat3} out\n\t */\n\tmat3.rotate = function (out, a, rad) {\n\t var a00 = a[0], a01 = a[1], a02 = a[2],\n\t a10 = a[3], a11 = a[4], a12 = a[5],\n\t a20 = a[6], a21 = a[7], a22 = a[8],\n\n\t s = Math.sin(rad),\n\t c = Math.cos(rad);\n\n\t out[0] = c * a00 + s * a10;\n\t out[1] = c * a01 + s * a11;\n\t out[2] = c * a02 + s * a12;\n\n\t out[3] = c * a10 - s * a00;\n\t out[4] = c * a11 - s * a01;\n\t out[5] = c * a12 - s * a02;\n\n\t out[6] = a20;\n\t out[7] = a21;\n\t out[8] = a22;\n\t return out;\n\t};\n\n\t/**\n\t * Scales the mat3 by the dimensions in the given vec2\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {mat3} a the matrix to rotate\n\t * @param {vec2} v the vec2 to scale the matrix by\n\t * @returns {mat3} out\n\t **/\n\tmat3.scale = function(out, a, v) {\n\t var x = v[0], y = v[1];\n\n\t out[0] = x * a[0];\n\t out[1] = x * a[1];\n\t out[2] = x * a[2];\n\n\t out[3] = y * a[3];\n\t out[4] = y * a[4];\n\t out[5] = y * a[5];\n\n\t out[6] = a[6];\n\t out[7] = a[7];\n\t out[8] = a[8];\n\t return out;\n\t};\n\n\t/**\n\t * Creates a matrix from a vector translation\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat3.identity(dest);\n\t * mat3.translate(dest, dest, vec);\n\t *\n\t * @param {mat3} out mat3 receiving operation result\n\t * @param {vec2} v Translation vector\n\t * @returns {mat3} out\n\t */\n\tmat3.fromTranslation = function(out, v) {\n\t out[0] = 1;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 0;\n\t out[4] = 1;\n\t out[5] = 0;\n\t out[6] = v[0];\n\t out[7] = v[1];\n\t out[8] = 1;\n\t return out;\n\t}\n\n\t/**\n\t * Creates a matrix from a given angle\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat3.identity(dest);\n\t * mat3.rotate(dest, dest, rad);\n\t *\n\t * @param {mat3} out mat3 receiving operation result\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat3} out\n\t */\n\tmat3.fromRotation = function(out, rad) {\n\t var s = Math.sin(rad), c = Math.cos(rad);\n\n\t out[0] = c;\n\t out[1] = s;\n\t out[2] = 0;\n\n\t out[3] = -s;\n\t out[4] = c;\n\t out[5] = 0;\n\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = 1;\n\t return out;\n\t}\n\n\t/**\n\t * Creates a matrix from a vector scaling\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat3.identity(dest);\n\t * mat3.scale(dest, dest, vec);\n\t *\n\t * @param {mat3} out mat3 receiving operation result\n\t * @param {vec2} v Scaling vector\n\t * @returns {mat3} out\n\t */\n\tmat3.fromScaling = function(out, v) {\n\t out[0] = v[0];\n\t out[1] = 0;\n\t out[2] = 0;\n\n\t out[3] = 0;\n\t out[4] = v[1];\n\t out[5] = 0;\n\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = 1;\n\t return out;\n\t}\n\n\t/**\n\t * Copies the values from a mat2d into a mat3\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {mat2d} a the matrix to copy\n\t * @returns {mat3} out\n\t **/\n\tmat3.fromMat2d = function(out, a) {\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = 0;\n\n\t out[3] = a[2];\n\t out[4] = a[3];\n\t out[5] = 0;\n\n\t out[6] = a[4];\n\t out[7] = a[5];\n\t out[8] = 1;\n\t return out;\n\t};\n\n\t/**\n\t* Calculates a 3x3 matrix from the given quaternion\n\t*\n\t* @param {mat3} out mat3 receiving operation result\n\t* @param {quat} q Quaternion to create matrix from\n\t*\n\t* @returns {mat3} out\n\t*/\n\tmat3.fromQuat = function (out, q) {\n\t var x = q[0], y = q[1], z = q[2], w = q[3],\n\t x2 = x + x,\n\t y2 = y + y,\n\t z2 = z + z,\n\n\t xx = x * x2,\n\t yx = y * x2,\n\t yy = y * y2,\n\t zx = z * x2,\n\t zy = z * y2,\n\t zz = z * z2,\n\t wx = w * x2,\n\t wy = w * y2,\n\t wz = w * z2;\n\n\t out[0] = 1 - yy - zz;\n\t out[3] = yx - wz;\n\t out[6] = zx + wy;\n\n\t out[1] = yx + wz;\n\t out[4] = 1 - xx - zz;\n\t out[7] = zy - wx;\n\n\t out[2] = zx - wy;\n\t out[5] = zy + wx;\n\t out[8] = 1 - xx - yy;\n\n\t return out;\n\t};\n\n\t/**\n\t* Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n\t*\n\t* @param {mat3} out mat3 receiving operation result\n\t* @param {mat4} a Mat4 to derive the normal matrix from\n\t*\n\t* @returns {mat3} out\n\t*/\n\tmat3.normalFromMat4 = function (out, a) {\n\t var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n\t a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n\t a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n\t a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n\t b00 = a00 * a11 - a01 * a10,\n\t b01 = a00 * a12 - a02 * a10,\n\t b02 = a00 * a13 - a03 * a10,\n\t b03 = a01 * a12 - a02 * a11,\n\t b04 = a01 * a13 - a03 * a11,\n\t b05 = a02 * a13 - a03 * a12,\n\t b06 = a20 * a31 - a21 * a30,\n\t b07 = a20 * a32 - a22 * a30,\n\t b08 = a20 * a33 - a23 * a30,\n\t b09 = a21 * a32 - a22 * a31,\n\t b10 = a21 * a33 - a23 * a31,\n\t b11 = a22 * a33 - a23 * a32,\n\n\t // Calculate the determinant\n\t det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n\t if (!det) {\n\t return null;\n\t }\n\t det = 1.0 / det;\n\n\t out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n\t out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n\t out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n\n\t out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n\t out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n\t out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n\n\t out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n\t out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n\t out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n\n\t return out;\n\t};\n\n\t/**\n\t * Returns a string representation of a mat3\n\t *\n\t * @param {mat3} a matrix to represent as a string\n\t * @returns {String} string representation of the matrix\n\t */\n\tmat3.str = function (a) {\n\t return 'mat3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' +\n\t a[3] + ', ' + a[4] + ', ' + a[5] + ', ' +\n\t a[6] + ', ' + a[7] + ', ' + a[8] + ')';\n\t};\n\n\t/**\n\t * Returns Frobenius norm of a mat3\n\t *\n\t * @param {mat3} a the matrix to calculate Frobenius norm of\n\t * @returns {Number} Frobenius norm\n\t */\n\tmat3.frob = function (a) {\n\t return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + Math.pow(a[6], 2) + Math.pow(a[7], 2) + Math.pow(a[8], 2)))\n\t};\n\n\t/**\n\t * Adds two mat3's\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {mat3} a the first operand\n\t * @param {mat3} b the second operand\n\t * @returns {mat3} out\n\t */\n\tmat3.add = function(out, a, b) {\n\t out[0] = a[0] + b[0];\n\t out[1] = a[1] + b[1];\n\t out[2] = a[2] + b[2];\n\t out[3] = a[3] + b[3];\n\t out[4] = a[4] + b[4];\n\t out[5] = a[5] + b[5];\n\t out[6] = a[6] + b[6];\n\t out[7] = a[7] + b[7];\n\t out[8] = a[8] + b[8];\n\t return out;\n\t};\n\n\t/**\n\t * Subtracts matrix b from matrix a\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {mat3} a the first operand\n\t * @param {mat3} b the second operand\n\t * @returns {mat3} out\n\t */\n\tmat3.subtract = function(out, a, b) {\n\t out[0] = a[0] - b[0];\n\t out[1] = a[1] - b[1];\n\t out[2] = a[2] - b[2];\n\t out[3] = a[3] - b[3];\n\t out[4] = a[4] - b[4];\n\t out[5] = a[5] - b[5];\n\t out[6] = a[6] - b[6];\n\t out[7] = a[7] - b[7];\n\t out[8] = a[8] - b[8];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link mat3.subtract}\n\t * @function\n\t */\n\tmat3.sub = mat3.subtract;\n\n\t/**\n\t * Multiply each element of the matrix by a scalar.\n\t *\n\t * @param {mat3} out the receiving matrix\n\t * @param {mat3} a the matrix to scale\n\t * @param {Number} b amount to scale the matrix's elements by\n\t * @returns {mat3} out\n\t */\n\tmat3.multiplyScalar = function(out, a, b) {\n\t out[0] = a[0] * b;\n\t out[1] = a[1] * b;\n\t out[2] = a[2] * b;\n\t out[3] = a[3] * b;\n\t out[4] = a[4] * b;\n\t out[5] = a[5] * b;\n\t out[6] = a[6] * b;\n\t out[7] = a[7] * b;\n\t out[8] = a[8] * b;\n\t return out;\n\t};\n\n\t/**\n\t * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n\t *\n\t * @param {mat3} out the receiving vector\n\t * @param {mat3} a the first operand\n\t * @param {mat3} b the second operand\n\t * @param {Number} scale the amount to scale b's elements by before adding\n\t * @returns {mat3} out\n\t */\n\tmat3.multiplyScalarAndAdd = function(out, a, b, scale) {\n\t out[0] = a[0] + (b[0] * scale);\n\t out[1] = a[1] + (b[1] * scale);\n\t out[2] = a[2] + (b[2] * scale);\n\t out[3] = a[3] + (b[3] * scale);\n\t out[4] = a[4] + (b[4] * scale);\n\t out[5] = a[5] + (b[5] * scale);\n\t out[6] = a[6] + (b[6] * scale);\n\t out[7] = a[7] + (b[7] * scale);\n\t out[8] = a[8] + (b[8] * scale);\n\t return out;\n\t};\n\n\t/**\n\t * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n\t *\n\t * @param {mat3} a The first matrix.\n\t * @param {mat3} b The second matrix.\n\t * @returns {Boolean} True if the matrices are equal, false otherwise.\n\t */\n\tmat3.exactEquals = function (a, b) {\n\t return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] &&\n\t a[3] === b[3] && a[4] === b[4] && a[5] === b[5] &&\n\t a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n\t};\n\n\t/**\n\t * Returns whether or not the matrices have approximately the same elements in the same position.\n\t *\n\t * @param {mat3} a The first matrix.\n\t * @param {mat3} b The second matrix.\n\t * @returns {Boolean} True if the matrices are equal, false otherwise.\n\t */\n\tmat3.equals = function (a, b) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7], a8 = a[8];\n\t var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = a[6], b7 = b[7], b8 = b[8];\n\t return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n\t Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\n\t Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\n\t Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)) &&\n\t Math.abs(a4 - b4) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a4), Math.abs(b4)) &&\n\t Math.abs(a5 - b5) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a5), Math.abs(b5)) &&\n\t Math.abs(a6 - b6) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a6), Math.abs(b6)) &&\n\t Math.abs(a7 - b7) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a7), Math.abs(b7)) &&\n\t Math.abs(a8 - b8) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a8), Math.abs(b8)));\n\t};\n\n\n\tmodule.exports = mat3;\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE. */\n\n\tvar glMatrix = __webpack_require__(1);\n\n\t/**\n\t * @class 4x4 Matrix\n\t * @name mat4\n\t */\n\tvar mat4 = {\n\t scalar: {},\n\t SIMD: {}\n\t};\n\n\t/**\n\t * Creates a new identity mat4\n\t *\n\t * @returns {mat4} a new 4x4 matrix\n\t */\n\tmat4.create = function() {\n\t var out = new glMatrix.ARRAY_TYPE(16);\n\t out[0] = 1;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 0;\n\t out[4] = 0;\n\t out[5] = 1;\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = 0;\n\t out[9] = 0;\n\t out[10] = 1;\n\t out[11] = 0;\n\t out[12] = 0;\n\t out[13] = 0;\n\t out[14] = 0;\n\t out[15] = 1;\n\t return out;\n\t};\n\n\t/**\n\t * Creates a new mat4 initialized with values from an existing matrix\n\t *\n\t * @param {mat4} a matrix to clone\n\t * @returns {mat4} a new 4x4 matrix\n\t */\n\tmat4.clone = function(a) {\n\t var out = new glMatrix.ARRAY_TYPE(16);\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[3];\n\t out[4] = a[4];\n\t out[5] = a[5];\n\t out[6] = a[6];\n\t out[7] = a[7];\n\t out[8] = a[8];\n\t out[9] = a[9];\n\t out[10] = a[10];\n\t out[11] = a[11];\n\t out[12] = a[12];\n\t out[13] = a[13];\n\t out[14] = a[14];\n\t out[15] = a[15];\n\t return out;\n\t};\n\n\t/**\n\t * Copy the values from one mat4 to another\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the source matrix\n\t * @returns {mat4} out\n\t */\n\tmat4.copy = function(out, a) {\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[3];\n\t out[4] = a[4];\n\t out[5] = a[5];\n\t out[6] = a[6];\n\t out[7] = a[7];\n\t out[8] = a[8];\n\t out[9] = a[9];\n\t out[10] = a[10];\n\t out[11] = a[11];\n\t out[12] = a[12];\n\t out[13] = a[13];\n\t out[14] = a[14];\n\t out[15] = a[15];\n\t return out;\n\t};\n\n\t/**\n\t * Create a new mat4 with the given values\n\t *\n\t * @param {Number} m00 Component in column 0, row 0 position (index 0)\n\t * @param {Number} m01 Component in column 0, row 1 position (index 1)\n\t * @param {Number} m02 Component in column 0, row 2 position (index 2)\n\t * @param {Number} m03 Component in column 0, row 3 position (index 3)\n\t * @param {Number} m10 Component in column 1, row 0 position (index 4)\n\t * @param {Number} m11 Component in column 1, row 1 position (index 5)\n\t * @param {Number} m12 Component in column 1, row 2 position (index 6)\n\t * @param {Number} m13 Component in column 1, row 3 position (index 7)\n\t * @param {Number} m20 Component in column 2, row 0 position (index 8)\n\t * @param {Number} m21 Component in column 2, row 1 position (index 9)\n\t * @param {Number} m22 Component in column 2, row 2 position (index 10)\n\t * @param {Number} m23 Component in column 2, row 3 position (index 11)\n\t * @param {Number} m30 Component in column 3, row 0 position (index 12)\n\t * @param {Number} m31 Component in column 3, row 1 position (index 13)\n\t * @param {Number} m32 Component in column 3, row 2 position (index 14)\n\t * @param {Number} m33 Component in column 3, row 3 position (index 15)\n\t * @returns {mat4} A new mat4\n\t */\n\tmat4.fromValues = function(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n\t var out = new glMatrix.ARRAY_TYPE(16);\n\t out[0] = m00;\n\t out[1] = m01;\n\t out[2] = m02;\n\t out[3] = m03;\n\t out[4] = m10;\n\t out[5] = m11;\n\t out[6] = m12;\n\t out[7] = m13;\n\t out[8] = m20;\n\t out[9] = m21;\n\t out[10] = m22;\n\t out[11] = m23;\n\t out[12] = m30;\n\t out[13] = m31;\n\t out[14] = m32;\n\t out[15] = m33;\n\t return out;\n\t};\n\n\t/**\n\t * Set the components of a mat4 to the given values\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {Number} m00 Component in column 0, row 0 position (index 0)\n\t * @param {Number} m01 Component in column 0, row 1 position (index 1)\n\t * @param {Number} m02 Component in column 0, row 2 position (index 2)\n\t * @param {Number} m03 Component in column 0, row 3 position (index 3)\n\t * @param {Number} m10 Component in column 1, row 0 position (index 4)\n\t * @param {Number} m11 Component in column 1, row 1 position (index 5)\n\t * @param {Number} m12 Component in column 1, row 2 position (index 6)\n\t * @param {Number} m13 Component in column 1, row 3 position (index 7)\n\t * @param {Number} m20 Component in column 2, row 0 position (index 8)\n\t * @param {Number} m21 Component in column 2, row 1 position (index 9)\n\t * @param {Number} m22 Component in column 2, row 2 position (index 10)\n\t * @param {Number} m23 Component in column 2, row 3 position (index 11)\n\t * @param {Number} m30 Component in column 3, row 0 position (index 12)\n\t * @param {Number} m31 Component in column 3, row 1 position (index 13)\n\t * @param {Number} m32 Component in column 3, row 2 position (index 14)\n\t * @param {Number} m33 Component in column 3, row 3 position (index 15)\n\t * @returns {mat4} out\n\t */\n\tmat4.set = function(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n\t out[0] = m00;\n\t out[1] = m01;\n\t out[2] = m02;\n\t out[3] = m03;\n\t out[4] = m10;\n\t out[5] = m11;\n\t out[6] = m12;\n\t out[7] = m13;\n\t out[8] = m20;\n\t out[9] = m21;\n\t out[10] = m22;\n\t out[11] = m23;\n\t out[12] = m30;\n\t out[13] = m31;\n\t out[14] = m32;\n\t out[15] = m33;\n\t return out;\n\t};\n\n\n\t/**\n\t * Set a mat4 to the identity matrix\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @returns {mat4} out\n\t */\n\tmat4.identity = function(out) {\n\t out[0] = 1;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 0;\n\t out[4] = 0;\n\t out[5] = 1;\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = 0;\n\t out[9] = 0;\n\t out[10] = 1;\n\t out[11] = 0;\n\t out[12] = 0;\n\t out[13] = 0;\n\t out[14] = 0;\n\t out[15] = 1;\n\t return out;\n\t};\n\n\t/**\n\t * Transpose the values of a mat4 not using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the source matrix\n\t * @returns {mat4} out\n\t */\n\tmat4.scalar.transpose = function(out, a) {\n\t // If we are transposing ourselves we can skip a few steps but have to cache some values\n\t if (out === a) {\n\t var a01 = a[1], a02 = a[2], a03 = a[3],\n\t a12 = a[6], a13 = a[7],\n\t a23 = a[11];\n\n\t out[1] = a[4];\n\t out[2] = a[8];\n\t out[3] = a[12];\n\t out[4] = a01;\n\t out[6] = a[9];\n\t out[7] = a[13];\n\t out[8] = a02;\n\t out[9] = a12;\n\t out[11] = a[14];\n\t out[12] = a03;\n\t out[13] = a13;\n\t out[14] = a23;\n\t } else {\n\t out[0] = a[0];\n\t out[1] = a[4];\n\t out[2] = a[8];\n\t out[3] = a[12];\n\t out[4] = a[1];\n\t out[5] = a[5];\n\t out[6] = a[9];\n\t out[7] = a[13];\n\t out[8] = a[2];\n\t out[9] = a[6];\n\t out[10] = a[10];\n\t out[11] = a[14];\n\t out[12] = a[3];\n\t out[13] = a[7];\n\t out[14] = a[11];\n\t out[15] = a[15];\n\t }\n\n\t return out;\n\t};\n\n\t/**\n\t * Transpose the values of a mat4 using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the source matrix\n\t * @returns {mat4} out\n\t */\n\tmat4.SIMD.transpose = function(out, a) {\n\t var a0, a1, a2, a3,\n\t tmp01, tmp23,\n\t out0, out1, out2, out3;\n\n\t a0 = SIMD.Float32x4.load(a, 0);\n\t a1 = SIMD.Float32x4.load(a, 4);\n\t a2 = SIMD.Float32x4.load(a, 8);\n\t a3 = SIMD.Float32x4.load(a, 12);\n\n\t tmp01 = SIMD.Float32x4.shuffle(a0, a1, 0, 1, 4, 5);\n\t tmp23 = SIMD.Float32x4.shuffle(a2, a3, 0, 1, 4, 5);\n\t out0 = SIMD.Float32x4.shuffle(tmp01, tmp23, 0, 2, 4, 6);\n\t out1 = SIMD.Float32x4.shuffle(tmp01, tmp23, 1, 3, 5, 7);\n\t SIMD.Float32x4.store(out, 0, out0);\n\t SIMD.Float32x4.store(out, 4, out1);\n\n\t tmp01 = SIMD.Float32x4.shuffle(a0, a1, 2, 3, 6, 7);\n\t tmp23 = SIMD.Float32x4.shuffle(a2, a3, 2, 3, 6, 7);\n\t out2 = SIMD.Float32x4.shuffle(tmp01, tmp23, 0, 2, 4, 6);\n\t out3 = SIMD.Float32x4.shuffle(tmp01, tmp23, 1, 3, 5, 7);\n\t SIMD.Float32x4.store(out, 8, out2);\n\t SIMD.Float32x4.store(out, 12, out3);\n\n\t return out;\n\t};\n\n\t/**\n\t * Transpse a mat4 using SIMD if available and enabled\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the source matrix\n\t * @returns {mat4} out\n\t */\n\tmat4.transpose = glMatrix.USE_SIMD ? mat4.SIMD.transpose : mat4.scalar.transpose;\n\n\t/**\n\t * Inverts a mat4 not using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the source matrix\n\t * @returns {mat4} out\n\t */\n\tmat4.scalar.invert = function(out, a) {\n\t var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n\t a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n\t a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n\t a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n\t b00 = a00 * a11 - a01 * a10,\n\t b01 = a00 * a12 - a02 * a10,\n\t b02 = a00 * a13 - a03 * a10,\n\t b03 = a01 * a12 - a02 * a11,\n\t b04 = a01 * a13 - a03 * a11,\n\t b05 = a02 * a13 - a03 * a12,\n\t b06 = a20 * a31 - a21 * a30,\n\t b07 = a20 * a32 - a22 * a30,\n\t b08 = a20 * a33 - a23 * a30,\n\t b09 = a21 * a32 - a22 * a31,\n\t b10 = a21 * a33 - a23 * a31,\n\t b11 = a22 * a33 - a23 * a32,\n\n\t // Calculate the determinant\n\t det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n\t if (!det) {\n\t return null;\n\t }\n\t det = 1.0 / det;\n\n\t out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n\t out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n\t out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n\t out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n\t out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n\t out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n\t out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n\t out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n\t out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n\t out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n\t out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n\t out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n\t out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n\t out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n\t out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n\t out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n\n\t return out;\n\t};\n\n\t/**\n\t * Inverts a mat4 using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the source matrix\n\t * @returns {mat4} out\n\t */\n\tmat4.SIMD.invert = function(out, a) {\n\t var row0, row1, row2, row3,\n\t tmp1,\n\t minor0, minor1, minor2, minor3,\n\t det,\n\t a0 = SIMD.Float32x4.load(a, 0),\n\t a1 = SIMD.Float32x4.load(a, 4),\n\t a2 = SIMD.Float32x4.load(a, 8),\n\t a3 = SIMD.Float32x4.load(a, 12);\n\n\t // Compute matrix adjugate\n\t tmp1 = SIMD.Float32x4.shuffle(a0, a1, 0, 1, 4, 5);\n\t row1 = SIMD.Float32x4.shuffle(a2, a3, 0, 1, 4, 5);\n\t row0 = SIMD.Float32x4.shuffle(tmp1, row1, 0, 2, 4, 6);\n\t row1 = SIMD.Float32x4.shuffle(row1, tmp1, 1, 3, 5, 7);\n\t tmp1 = SIMD.Float32x4.shuffle(a0, a1, 2, 3, 6, 7);\n\t row3 = SIMD.Float32x4.shuffle(a2, a3, 2, 3, 6, 7);\n\t row2 = SIMD.Float32x4.shuffle(tmp1, row3, 0, 2, 4, 6);\n\t row3 = SIMD.Float32x4.shuffle(row3, tmp1, 1, 3, 5, 7);\n\n\t tmp1 = SIMD.Float32x4.mul(row2, row3);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 1, 0, 3, 2);\n\t minor0 = SIMD.Float32x4.mul(row1, tmp1);\n\t minor1 = SIMD.Float32x4.mul(row0, tmp1);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 2, 3, 0, 1);\n\t minor0 = SIMD.Float32x4.sub(SIMD.Float32x4.mul(row1, tmp1), minor0);\n\t minor1 = SIMD.Float32x4.sub(SIMD.Float32x4.mul(row0, tmp1), minor1);\n\t minor1 = SIMD.Float32x4.swizzle(minor1, 2, 3, 0, 1);\n\n\t tmp1 = SIMD.Float32x4.mul(row1, row2);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 1, 0, 3, 2);\n\t minor0 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row3, tmp1), minor0);\n\t minor3 = SIMD.Float32x4.mul(row0, tmp1);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 2, 3, 0, 1);\n\t minor0 = SIMD.Float32x4.sub(minor0, SIMD.Float32x4.mul(row3, tmp1));\n\t minor3 = SIMD.Float32x4.sub(SIMD.Float32x4.mul(row0, tmp1), minor3);\n\t minor3 = SIMD.Float32x4.swizzle(minor3, 2, 3, 0, 1);\n\n\t tmp1 = SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(row1, 2, 3, 0, 1), row3);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 1, 0, 3, 2);\n\t row2 = SIMD.Float32x4.swizzle(row2, 2, 3, 0, 1);\n\t minor0 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row2, tmp1), minor0);\n\t minor2 = SIMD.Float32x4.mul(row0, tmp1);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 2, 3, 0, 1);\n\t minor0 = SIMD.Float32x4.sub(minor0, SIMD.Float32x4.mul(row2, tmp1));\n\t minor2 = SIMD.Float32x4.sub(SIMD.Float32x4.mul(row0, tmp1), minor2);\n\t minor2 = SIMD.Float32x4.swizzle(minor2, 2, 3, 0, 1);\n\n\t tmp1 = SIMD.Float32x4.mul(row0, row1);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 1, 0, 3, 2);\n\t minor2 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row3, tmp1), minor2);\n\t minor3 = SIMD.Float32x4.sub(SIMD.Float32x4.mul(row2, tmp1), minor3);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 2, 3, 0, 1);\n\t minor2 = SIMD.Float32x4.sub(SIMD.Float32x4.mul(row3, tmp1), minor2);\n\t minor3 = SIMD.Float32x4.sub(minor3, SIMD.Float32x4.mul(row2, tmp1));\n\n\t tmp1 = SIMD.Float32x4.mul(row0, row3);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 1, 0, 3, 2);\n\t minor1 = SIMD.Float32x4.sub(minor1, SIMD.Float32x4.mul(row2, tmp1));\n\t minor2 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row1, tmp1), minor2);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 2, 3, 0, 1);\n\t minor1 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row2, tmp1), minor1);\n\t minor2 = SIMD.Float32x4.sub(minor2, SIMD.Float32x4.mul(row1, tmp1));\n\n\t tmp1 = SIMD.Float32x4.mul(row0, row2);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 1, 0, 3, 2);\n\t minor1 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row3, tmp1), minor1);\n\t minor3 = SIMD.Float32x4.sub(minor3, SIMD.Float32x4.mul(row1, tmp1));\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 2, 3, 0, 1);\n\t minor1 = SIMD.Float32x4.sub(minor1, SIMD.Float32x4.mul(row3, tmp1));\n\t minor3 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row1, tmp1), minor3);\n\n\t // Compute matrix determinant\n\t det = SIMD.Float32x4.mul(row0, minor0);\n\t det = SIMD.Float32x4.add(SIMD.Float32x4.swizzle(det, 2, 3, 0, 1), det);\n\t det = SIMD.Float32x4.add(SIMD.Float32x4.swizzle(det, 1, 0, 3, 2), det);\n\t tmp1 = SIMD.Float32x4.reciprocalApproximation(det);\n\t det = SIMD.Float32x4.sub(\n\t SIMD.Float32x4.add(tmp1, tmp1),\n\t SIMD.Float32x4.mul(det, SIMD.Float32x4.mul(tmp1, tmp1)));\n\t det = SIMD.Float32x4.swizzle(det, 0, 0, 0, 0);\n\t if (!det) {\n\t return null;\n\t }\n\n\t // Compute matrix inverse\n\t SIMD.Float32x4.store(out, 0, SIMD.Float32x4.mul(det, minor0));\n\t SIMD.Float32x4.store(out, 4, SIMD.Float32x4.mul(det, minor1));\n\t SIMD.Float32x4.store(out, 8, SIMD.Float32x4.mul(det, minor2));\n\t SIMD.Float32x4.store(out, 12, SIMD.Float32x4.mul(det, minor3));\n\t return out;\n\t}\n\n\t/**\n\t * Inverts a mat4 using SIMD if available and enabled\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the source matrix\n\t * @returns {mat4} out\n\t */\n\tmat4.invert = glMatrix.USE_SIMD ? mat4.SIMD.invert : mat4.scalar.invert;\n\n\t/**\n\t * Calculates the adjugate of a mat4 not using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the source matrix\n\t * @returns {mat4} out\n\t */\n\tmat4.scalar.adjoint = function(out, a) {\n\t var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n\t a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n\t a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n\t a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n\n\t out[0] = (a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22));\n\t out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n\t out[2] = (a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12));\n\t out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n\t out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n\t out[5] = (a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22));\n\t out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n\t out[7] = (a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12));\n\t out[8] = (a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21));\n\t out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n\t out[10] = (a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11));\n\t out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n\t out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n\t out[13] = (a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21));\n\t out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n\t out[15] = (a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11));\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the adjugate of a mat4 using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the source matrix\n\t * @returns {mat4} out\n\t */\n\tmat4.SIMD.adjoint = function(out, a) {\n\t var a0, a1, a2, a3;\n\t var row0, row1, row2, row3;\n\t var tmp1;\n\t var minor0, minor1, minor2, minor3;\n\n\t a0 = SIMD.Float32x4.load(a, 0);\n\t a1 = SIMD.Float32x4.load(a, 4);\n\t a2 = SIMD.Float32x4.load(a, 8);\n\t a3 = SIMD.Float32x4.load(a, 12);\n\n\t // Transpose the source matrix. Sort of. Not a true transpose operation\n\t tmp1 = SIMD.Float32x4.shuffle(a0, a1, 0, 1, 4, 5);\n\t row1 = SIMD.Float32x4.shuffle(a2, a3, 0, 1, 4, 5);\n\t row0 = SIMD.Float32x4.shuffle(tmp1, row1, 0, 2, 4, 6);\n\t row1 = SIMD.Float32x4.shuffle(row1, tmp1, 1, 3, 5, 7);\n\n\t tmp1 = SIMD.Float32x4.shuffle(a0, a1, 2, 3, 6, 7);\n\t row3 = SIMD.Float32x4.shuffle(a2, a3, 2, 3, 6, 7);\n\t row2 = SIMD.Float32x4.shuffle(tmp1, row3, 0, 2, 4, 6);\n\t row3 = SIMD.Float32x4.shuffle(row3, tmp1, 1, 3, 5, 7);\n\n\t tmp1 = SIMD.Float32x4.mul(row2, row3);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 1, 0, 3, 2);\n\t minor0 = SIMD.Float32x4.mul(row1, tmp1);\n\t minor1 = SIMD.Float32x4.mul(row0, tmp1);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 2, 3, 0, 1);\n\t minor0 = SIMD.Float32x4.sub(SIMD.Float32x4.mul(row1, tmp1), minor0);\n\t minor1 = SIMD.Float32x4.sub(SIMD.Float32x4.mul(row0, tmp1), minor1);\n\t minor1 = SIMD.Float32x4.swizzle(minor1, 2, 3, 0, 1);\n\n\t tmp1 = SIMD.Float32x4.mul(row1, row2);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 1, 0, 3, 2);\n\t minor0 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row3, tmp1), minor0);\n\t minor3 = SIMD.Float32x4.mul(row0, tmp1);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 2, 3, 0, 1);\n\t minor0 = SIMD.Float32x4.sub(minor0, SIMD.Float32x4.mul(row3, tmp1));\n\t minor3 = SIMD.Float32x4.sub(SIMD.Float32x4.mul(row0, tmp1), minor3);\n\t minor3 = SIMD.Float32x4.swizzle(minor3, 2, 3, 0, 1);\n\n\t tmp1 = SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(row1, 2, 3, 0, 1), row3);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 1, 0, 3, 2);\n\t row2 = SIMD.Float32x4.swizzle(row2, 2, 3, 0, 1);\n\t minor0 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row2, tmp1), minor0);\n\t minor2 = SIMD.Float32x4.mul(row0, tmp1);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 2, 3, 0, 1);\n\t minor0 = SIMD.Float32x4.sub(minor0, SIMD.Float32x4.mul(row2, tmp1));\n\t minor2 = SIMD.Float32x4.sub(SIMD.Float32x4.mul(row0, tmp1), minor2);\n\t minor2 = SIMD.Float32x4.swizzle(minor2, 2, 3, 0, 1);\n\n\t tmp1 = SIMD.Float32x4.mul(row0, row1);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 1, 0, 3, 2);\n\t minor2 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row3, tmp1), minor2);\n\t minor3 = SIMD.Float32x4.sub(SIMD.Float32x4.mul(row2, tmp1), minor3);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 2, 3, 0, 1);\n\t minor2 = SIMD.Float32x4.sub(SIMD.Float32x4.mul(row3, tmp1), minor2);\n\t minor3 = SIMD.Float32x4.sub(minor3, SIMD.Float32x4.mul(row2, tmp1));\n\n\t tmp1 = SIMD.Float32x4.mul(row0, row3);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 1, 0, 3, 2);\n\t minor1 = SIMD.Float32x4.sub(minor1, SIMD.Float32x4.mul(row2, tmp1));\n\t minor2 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row1, tmp1), minor2);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 2, 3, 0, 1);\n\t minor1 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row2, tmp1), minor1);\n\t minor2 = SIMD.Float32x4.sub(minor2, SIMD.Float32x4.mul(row1, tmp1));\n\n\t tmp1 = SIMD.Float32x4.mul(row0, row2);\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 1, 0, 3, 2);\n\t minor1 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row3, tmp1), minor1);\n\t minor3 = SIMD.Float32x4.sub(minor3, SIMD.Float32x4.mul(row1, tmp1));\n\t tmp1 = SIMD.Float32x4.swizzle(tmp1, 2, 3, 0, 1);\n\t minor1 = SIMD.Float32x4.sub(minor1, SIMD.Float32x4.mul(row3, tmp1));\n\t minor3 = SIMD.Float32x4.add(SIMD.Float32x4.mul(row1, tmp1), minor3);\n\n\t SIMD.Float32x4.store(out, 0, minor0);\n\t SIMD.Float32x4.store(out, 4, minor1);\n\t SIMD.Float32x4.store(out, 8, minor2);\n\t SIMD.Float32x4.store(out, 12, minor3);\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the adjugate of a mat4 using SIMD if available and enabled\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the source matrix\n\t * @returns {mat4} out\n\t */\n\t mat4.adjoint = glMatrix.USE_SIMD ? mat4.SIMD.adjoint : mat4.scalar.adjoint;\n\n\t/**\n\t * Calculates the determinant of a mat4\n\t *\n\t * @param {mat4} a the source matrix\n\t * @returns {Number} determinant of a\n\t */\n\tmat4.determinant = function (a) {\n\t var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n\t a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n\t a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n\t a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n\t b00 = a00 * a11 - a01 * a10,\n\t b01 = a00 * a12 - a02 * a10,\n\t b02 = a00 * a13 - a03 * a10,\n\t b03 = a01 * a12 - a02 * a11,\n\t b04 = a01 * a13 - a03 * a11,\n\t b05 = a02 * a13 - a03 * a12,\n\t b06 = a20 * a31 - a21 * a30,\n\t b07 = a20 * a32 - a22 * a30,\n\t b08 = a20 * a33 - a23 * a30,\n\t b09 = a21 * a32 - a22 * a31,\n\t b10 = a21 * a33 - a23 * a31,\n\t b11 = a22 * a33 - a23 * a32;\n\n\t // Calculate the determinant\n\t return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\t};\n\n\t/**\n\t * Multiplies two mat4's explicitly using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the first operand, must be a Float32Array\n\t * @param {mat4} b the second operand, must be a Float32Array\n\t * @returns {mat4} out\n\t */\n\tmat4.SIMD.multiply = function (out, a, b) {\n\t var a0 = SIMD.Float32x4.load(a, 0);\n\t var a1 = SIMD.Float32x4.load(a, 4);\n\t var a2 = SIMD.Float32x4.load(a, 8);\n\t var a3 = SIMD.Float32x4.load(a, 12);\n\n\t var b0 = SIMD.Float32x4.load(b, 0);\n\t var out0 = SIMD.Float32x4.add(\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b0, 0, 0, 0, 0), a0),\n\t SIMD.Float32x4.add(\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b0, 1, 1, 1, 1), a1),\n\t SIMD.Float32x4.add(\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b0, 2, 2, 2, 2), a2),\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b0, 3, 3, 3, 3), a3))));\n\t SIMD.Float32x4.store(out, 0, out0);\n\n\t var b1 = SIMD.Float32x4.load(b, 4);\n\t var out1 = SIMD.Float32x4.add(\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b1, 0, 0, 0, 0), a0),\n\t SIMD.Float32x4.add(\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b1, 1, 1, 1, 1), a1),\n\t SIMD.Float32x4.add(\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b1, 2, 2, 2, 2), a2),\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b1, 3, 3, 3, 3), a3))));\n\t SIMD.Float32x4.store(out, 4, out1);\n\n\t var b2 = SIMD.Float32x4.load(b, 8);\n\t var out2 = SIMD.Float32x4.add(\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b2, 0, 0, 0, 0), a0),\n\t SIMD.Float32x4.add(\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b2, 1, 1, 1, 1), a1),\n\t SIMD.Float32x4.add(\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b2, 2, 2, 2, 2), a2),\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b2, 3, 3, 3, 3), a3))));\n\t SIMD.Float32x4.store(out, 8, out2);\n\n\t var b3 = SIMD.Float32x4.load(b, 12);\n\t var out3 = SIMD.Float32x4.add(\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b3, 0, 0, 0, 0), a0),\n\t SIMD.Float32x4.add(\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b3, 1, 1, 1, 1), a1),\n\t SIMD.Float32x4.add(\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b3, 2, 2, 2, 2), a2),\n\t SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(b3, 3, 3, 3, 3), a3))));\n\t SIMD.Float32x4.store(out, 12, out3);\n\n\t return out;\n\t};\n\n\t/**\n\t * Multiplies two mat4's explicitly not using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the first operand\n\t * @param {mat4} b the second operand\n\t * @returns {mat4} out\n\t */\n\tmat4.scalar.multiply = function (out, a, b) {\n\t var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n\t a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n\t a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n\t a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n\n\t // Cache only the current line of the second matrix\n\t var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n\t out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n\t out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n\t out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n\t out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n\t b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7];\n\t out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n\t out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n\t out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n\t out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n\t b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11];\n\t out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n\t out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n\t out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n\t out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n\t b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15];\n\t out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n\t out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n\t out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n\t out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\t return out;\n\t};\n\n\t/**\n\t * Multiplies two mat4's using SIMD if available and enabled\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the first operand\n\t * @param {mat4} b the second operand\n\t * @returns {mat4} out\n\t */\n\tmat4.multiply = glMatrix.USE_SIMD ? mat4.SIMD.multiply : mat4.scalar.multiply;\n\n\t/**\n\t * Alias for {@link mat4.multiply}\n\t * @function\n\t */\n\tmat4.mul = mat4.multiply;\n\n\t/**\n\t * Translate a mat4 by the given vector not using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to translate\n\t * @param {vec3} v vector to translate by\n\t * @returns {mat4} out\n\t */\n\tmat4.scalar.translate = function (out, a, v) {\n\t var x = v[0], y = v[1], z = v[2],\n\t a00, a01, a02, a03,\n\t a10, a11, a12, a13,\n\t a20, a21, a22, a23;\n\n\t if (a === out) {\n\t out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n\t out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n\t out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n\t out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n\t } else {\n\t a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\n\t a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\n\t a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\n\n\t out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03;\n\t out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13;\n\t out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23;\n\n\t out[12] = a00 * x + a10 * y + a20 * z + a[12];\n\t out[13] = a01 * x + a11 * y + a21 * z + a[13];\n\t out[14] = a02 * x + a12 * y + a22 * z + a[14];\n\t out[15] = a03 * x + a13 * y + a23 * z + a[15];\n\t }\n\n\t return out;\n\t};\n\n\t/**\n\t * Translates a mat4 by the given vector using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to translate\n\t * @param {vec3} v vector to translate by\n\t * @returns {mat4} out\n\t */\n\tmat4.SIMD.translate = function (out, a, v) {\n\t var a0 = SIMD.Float32x4.load(a, 0),\n\t a1 = SIMD.Float32x4.load(a, 4),\n\t a2 = SIMD.Float32x4.load(a, 8),\n\t a3 = SIMD.Float32x4.load(a, 12),\n\t vec = SIMD.Float32x4(v[0], v[1], v[2] , 0);\n\n\t if (a !== out) {\n\t out[0] = a[0]; out[1] = a[1]; out[2] = a[2]; out[3] = a[3];\n\t out[4] = a[4]; out[5] = a[5]; out[6] = a[6]; out[7] = a[7];\n\t out[8] = a[8]; out[9] = a[9]; out[10] = a[10]; out[11] = a[11];\n\t }\n\n\t a0 = SIMD.Float32x4.mul(a0, SIMD.Float32x4.swizzle(vec, 0, 0, 0, 0));\n\t a1 = SIMD.Float32x4.mul(a1, SIMD.Float32x4.swizzle(vec, 1, 1, 1, 1));\n\t a2 = SIMD.Float32x4.mul(a2, SIMD.Float32x4.swizzle(vec, 2, 2, 2, 2));\n\n\t var t0 = SIMD.Float32x4.add(a0, SIMD.Float32x4.add(a1, SIMD.Float32x4.add(a2, a3)));\n\t SIMD.Float32x4.store(out, 12, t0);\n\n\t return out;\n\t};\n\n\t/**\n\t * Translates a mat4 by the given vector using SIMD if available and enabled\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to translate\n\t * @param {vec3} v vector to translate by\n\t * @returns {mat4} out\n\t */\n\tmat4.translate = glMatrix.USE_SIMD ? mat4.SIMD.translate : mat4.scalar.translate;\n\n\t/**\n\t * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to scale\n\t * @param {vec3} v the vec3 to scale the matrix by\n\t * @returns {mat4} out\n\t **/\n\tmat4.scalar.scale = function(out, a, v) {\n\t var x = v[0], y = v[1], z = v[2];\n\n\t out[0] = a[0] * x;\n\t out[1] = a[1] * x;\n\t out[2] = a[2] * x;\n\t out[3] = a[3] * x;\n\t out[4] = a[4] * y;\n\t out[5] = a[5] * y;\n\t out[6] = a[6] * y;\n\t out[7] = a[7] * y;\n\t out[8] = a[8] * z;\n\t out[9] = a[9] * z;\n\t out[10] = a[10] * z;\n\t out[11] = a[11] * z;\n\t out[12] = a[12];\n\t out[13] = a[13];\n\t out[14] = a[14];\n\t out[15] = a[15];\n\t return out;\n\t};\n\n\t/**\n\t * Scales the mat4 by the dimensions in the given vec3 using vectorization\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to scale\n\t * @param {vec3} v the vec3 to scale the matrix by\n\t * @returns {mat4} out\n\t **/\n\tmat4.SIMD.scale = function(out, a, v) {\n\t var a0, a1, a2;\n\t var vec = SIMD.Float32x4(v[0], v[1], v[2], 0);\n\n\t a0 = SIMD.Float32x4.load(a, 0);\n\t SIMD.Float32x4.store(\n\t out, 0, SIMD.Float32x4.mul(a0, SIMD.Float32x4.swizzle(vec, 0, 0, 0, 0)));\n\n\t a1 = SIMD.Float32x4.load(a, 4);\n\t SIMD.Float32x4.store(\n\t out, 4, SIMD.Float32x4.mul(a1, SIMD.Float32x4.swizzle(vec, 1, 1, 1, 1)));\n\n\t a2 = SIMD.Float32x4.load(a, 8);\n\t SIMD.Float32x4.store(\n\t out, 8, SIMD.Float32x4.mul(a2, SIMD.Float32x4.swizzle(vec, 2, 2, 2, 2)));\n\n\t out[12] = a[12];\n\t out[13] = a[13];\n\t out[14] = a[14];\n\t out[15] = a[15];\n\t return out;\n\t};\n\n\t/**\n\t * Scales the mat4 by the dimensions in the given vec3 using SIMD if available and enabled\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to scale\n\t * @param {vec3} v the vec3 to scale the matrix by\n\t * @returns {mat4} out\n\t */\n\tmat4.scale = glMatrix.USE_SIMD ? mat4.SIMD.scale : mat4.scalar.scale;\n\n\t/**\n\t * Rotates a mat4 by the given angle around the given axis\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @param {vec3} axis the axis to rotate around\n\t * @returns {mat4} out\n\t */\n\tmat4.rotate = function (out, a, rad, axis) {\n\t var x = axis[0], y = axis[1], z = axis[2],\n\t len = Math.sqrt(x * x + y * y + z * z),\n\t s, c, t,\n\t a00, a01, a02, a03,\n\t a10, a11, a12, a13,\n\t a20, a21, a22, a23,\n\t b00, b01, b02,\n\t b10, b11, b12,\n\t b20, b21, b22;\n\n\t if (Math.abs(len) < glMatrix.EPSILON) { return null; }\n\n\t len = 1 / len;\n\t x *= len;\n\t y *= len;\n\t z *= len;\n\n\t s = Math.sin(rad);\n\t c = Math.cos(rad);\n\t t = 1 - c;\n\n\t a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\n\t a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\n\t a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\n\n\t // Construct the elements of the rotation matrix\n\t b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s;\n\t b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s;\n\t b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c;\n\n\t // Perform rotation-specific matrix multiplication\n\t out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n\t out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n\t out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n\t out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n\t out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n\t out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n\t out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n\t out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n\t out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n\t out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n\t out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n\t out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n\t if (a !== out) { // If the source and destination differ, copy the unchanged last row\n\t out[12] = a[12];\n\t out[13] = a[13];\n\t out[14] = a[14];\n\t out[15] = a[15];\n\t }\n\t return out;\n\t};\n\n\t/**\n\t * Rotates a matrix by the given angle around the X axis not using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat4} out\n\t */\n\tmat4.scalar.rotateX = function (out, a, rad) {\n\t var s = Math.sin(rad),\n\t c = Math.cos(rad),\n\t a10 = a[4],\n\t a11 = a[5],\n\t a12 = a[6],\n\t a13 = a[7],\n\t a20 = a[8],\n\t a21 = a[9],\n\t a22 = a[10],\n\t a23 = a[11];\n\n\t if (a !== out) { // If the source and destination differ, copy the unchanged rows\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[3];\n\t out[12] = a[12];\n\t out[13] = a[13];\n\t out[14] = a[14];\n\t out[15] = a[15];\n\t }\n\n\t // Perform axis-specific matrix multiplication\n\t out[4] = a10 * c + a20 * s;\n\t out[5] = a11 * c + a21 * s;\n\t out[6] = a12 * c + a22 * s;\n\t out[7] = a13 * c + a23 * s;\n\t out[8] = a20 * c - a10 * s;\n\t out[9] = a21 * c - a11 * s;\n\t out[10] = a22 * c - a12 * s;\n\t out[11] = a23 * c - a13 * s;\n\t return out;\n\t};\n\n\t/**\n\t * Rotates a matrix by the given angle around the X axis using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat4} out\n\t */\n\tmat4.SIMD.rotateX = function (out, a, rad) {\n\t var s = SIMD.Float32x4.splat(Math.sin(rad)),\n\t c = SIMD.Float32x4.splat(Math.cos(rad));\n\n\t if (a !== out) { // If the source and destination differ, copy the unchanged rows\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[3];\n\t out[12] = a[12];\n\t out[13] = a[13];\n\t out[14] = a[14];\n\t out[15] = a[15];\n\t }\n\n\t // Perform axis-specific matrix multiplication\n\t var a_1 = SIMD.Float32x4.load(a, 4);\n\t var a_2 = SIMD.Float32x4.load(a, 8);\n\t SIMD.Float32x4.store(out, 4,\n\t SIMD.Float32x4.add(SIMD.Float32x4.mul(a_1, c), SIMD.Float32x4.mul(a_2, s)));\n\t SIMD.Float32x4.store(out, 8,\n\t SIMD.Float32x4.sub(SIMD.Float32x4.mul(a_2, c), SIMD.Float32x4.mul(a_1, s)));\n\t return out;\n\t};\n\n\t/**\n\t * Rotates a matrix by the given angle around the X axis using SIMD if availabe and enabled\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat4} out\n\t */\n\tmat4.rotateX = glMatrix.USE_SIMD ? mat4.SIMD.rotateX : mat4.scalar.rotateX;\n\n\t/**\n\t * Rotates a matrix by the given angle around the Y axis not using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat4} out\n\t */\n\tmat4.scalar.rotateY = function (out, a, rad) {\n\t var s = Math.sin(rad),\n\t c = Math.cos(rad),\n\t a00 = a[0],\n\t a01 = a[1],\n\t a02 = a[2],\n\t a03 = a[3],\n\t a20 = a[8],\n\t a21 = a[9],\n\t a22 = a[10],\n\t a23 = a[11];\n\n\t if (a !== out) { // If the source and destination differ, copy the unchanged rows\n\t out[4] = a[4];\n\t out[5] = a[5];\n\t out[6] = a[6];\n\t out[7] = a[7];\n\t out[12] = a[12];\n\t out[13] = a[13];\n\t out[14] = a[14];\n\t out[15] = a[15];\n\t }\n\n\t // Perform axis-specific matrix multiplication\n\t out[0] = a00 * c - a20 * s;\n\t out[1] = a01 * c - a21 * s;\n\t out[2] = a02 * c - a22 * s;\n\t out[3] = a03 * c - a23 * s;\n\t out[8] = a00 * s + a20 * c;\n\t out[9] = a01 * s + a21 * c;\n\t out[10] = a02 * s + a22 * c;\n\t out[11] = a03 * s + a23 * c;\n\t return out;\n\t};\n\n\t/**\n\t * Rotates a matrix by the given angle around the Y axis using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat4} out\n\t */\n\tmat4.SIMD.rotateY = function (out, a, rad) {\n\t var s = SIMD.Float32x4.splat(Math.sin(rad)),\n\t c = SIMD.Float32x4.splat(Math.cos(rad));\n\n\t if (a !== out) { // If the source and destination differ, copy the unchanged rows\n\t out[4] = a[4];\n\t out[5] = a[5];\n\t out[6] = a[6];\n\t out[7] = a[7];\n\t out[12] = a[12];\n\t out[13] = a[13];\n\t out[14] = a[14];\n\t out[15] = a[15];\n\t }\n\n\t // Perform axis-specific matrix multiplication\n\t var a_0 = SIMD.Float32x4.load(a, 0);\n\t var a_2 = SIMD.Float32x4.load(a, 8);\n\t SIMD.Float32x4.store(out, 0,\n\t SIMD.Float32x4.sub(SIMD.Float32x4.mul(a_0, c), SIMD.Float32x4.mul(a_2, s)));\n\t SIMD.Float32x4.store(out, 8,\n\t SIMD.Float32x4.add(SIMD.Float32x4.mul(a_0, s), SIMD.Float32x4.mul(a_2, c)));\n\t return out;\n\t};\n\n\t/**\n\t * Rotates a matrix by the given angle around the Y axis if SIMD available and enabled\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat4} out\n\t */\n\t mat4.rotateY = glMatrix.USE_SIMD ? mat4.SIMD.rotateY : mat4.scalar.rotateY;\n\n\t/**\n\t * Rotates a matrix by the given angle around the Z axis not using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat4} out\n\t */\n\tmat4.scalar.rotateZ = function (out, a, rad) {\n\t var s = Math.sin(rad),\n\t c = Math.cos(rad),\n\t a00 = a[0],\n\t a01 = a[1],\n\t a02 = a[2],\n\t a03 = a[3],\n\t a10 = a[4],\n\t a11 = a[5],\n\t a12 = a[6],\n\t a13 = a[7];\n\n\t if (a !== out) { // If the source and destination differ, copy the unchanged last row\n\t out[8] = a[8];\n\t out[9] = a[9];\n\t out[10] = a[10];\n\t out[11] = a[11];\n\t out[12] = a[12];\n\t out[13] = a[13];\n\t out[14] = a[14];\n\t out[15] = a[15];\n\t }\n\n\t // Perform axis-specific matrix multiplication\n\t out[0] = a00 * c + a10 * s;\n\t out[1] = a01 * c + a11 * s;\n\t out[2] = a02 * c + a12 * s;\n\t out[3] = a03 * c + a13 * s;\n\t out[4] = a10 * c - a00 * s;\n\t out[5] = a11 * c - a01 * s;\n\t out[6] = a12 * c - a02 * s;\n\t out[7] = a13 * c - a03 * s;\n\t return out;\n\t};\n\n\t/**\n\t * Rotates a matrix by the given angle around the Z axis using SIMD\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat4} out\n\t */\n\tmat4.SIMD.rotateZ = function (out, a, rad) {\n\t var s = SIMD.Float32x4.splat(Math.sin(rad)),\n\t c = SIMD.Float32x4.splat(Math.cos(rad));\n\n\t if (a !== out) { // If the source and destination differ, copy the unchanged last row\n\t out[8] = a[8];\n\t out[9] = a[9];\n\t out[10] = a[10];\n\t out[11] = a[11];\n\t out[12] = a[12];\n\t out[13] = a[13];\n\t out[14] = a[14];\n\t out[15] = a[15];\n\t }\n\n\t // Perform axis-specific matrix multiplication\n\t var a_0 = SIMD.Float32x4.load(a, 0);\n\t var a_1 = SIMD.Float32x4.load(a, 4);\n\t SIMD.Float32x4.store(out, 0,\n\t SIMD.Float32x4.add(SIMD.Float32x4.mul(a_0, c), SIMD.Float32x4.mul(a_1, s)));\n\t SIMD.Float32x4.store(out, 4,\n\t SIMD.Float32x4.sub(SIMD.Float32x4.mul(a_1, c), SIMD.Float32x4.mul(a_0, s)));\n\t return out;\n\t};\n\n\t/**\n\t * Rotates a matrix by the given angle around the Z axis if SIMD available and enabled\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to rotate\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat4} out\n\t */\n\t mat4.rotateZ = glMatrix.USE_SIMD ? mat4.SIMD.rotateZ : mat4.scalar.rotateZ;\n\n\t/**\n\t * Creates a matrix from a vector translation\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat4.identity(dest);\n\t * mat4.translate(dest, dest, vec);\n\t *\n\t * @param {mat4} out mat4 receiving operation result\n\t * @param {vec3} v Translation vector\n\t * @returns {mat4} out\n\t */\n\tmat4.fromTranslation = function(out, v) {\n\t out[0] = 1;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 0;\n\t out[4] = 0;\n\t out[5] = 1;\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = 0;\n\t out[9] = 0;\n\t out[10] = 1;\n\t out[11] = 0;\n\t out[12] = v[0];\n\t out[13] = v[1];\n\t out[14] = v[2];\n\t out[15] = 1;\n\t return out;\n\t}\n\n\t/**\n\t * Creates a matrix from a vector scaling\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat4.identity(dest);\n\t * mat4.scale(dest, dest, vec);\n\t *\n\t * @param {mat4} out mat4 receiving operation result\n\t * @param {vec3} v Scaling vector\n\t * @returns {mat4} out\n\t */\n\tmat4.fromScaling = function(out, v) {\n\t out[0] = v[0];\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 0;\n\t out[4] = 0;\n\t out[5] = v[1];\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = 0;\n\t out[9] = 0;\n\t out[10] = v[2];\n\t out[11] = 0;\n\t out[12] = 0;\n\t out[13] = 0;\n\t out[14] = 0;\n\t out[15] = 1;\n\t return out;\n\t}\n\n\t/**\n\t * Creates a matrix from a given angle around a given axis\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat4.identity(dest);\n\t * mat4.rotate(dest, dest, rad, axis);\n\t *\n\t * @param {mat4} out mat4 receiving operation result\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @param {vec3} axis the axis to rotate around\n\t * @returns {mat4} out\n\t */\n\tmat4.fromRotation = function(out, rad, axis) {\n\t var x = axis[0], y = axis[1], z = axis[2],\n\t len = Math.sqrt(x * x + y * y + z * z),\n\t s, c, t;\n\n\t if (Math.abs(len) < glMatrix.EPSILON) { return null; }\n\n\t len = 1 / len;\n\t x *= len;\n\t y *= len;\n\t z *= len;\n\n\t s = Math.sin(rad);\n\t c = Math.cos(rad);\n\t t = 1 - c;\n\n\t // Perform rotation-specific matrix multiplication\n\t out[0] = x * x * t + c;\n\t out[1] = y * x * t + z * s;\n\t out[2] = z * x * t - y * s;\n\t out[3] = 0;\n\t out[4] = x * y * t - z * s;\n\t out[5] = y * y * t + c;\n\t out[6] = z * y * t + x * s;\n\t out[7] = 0;\n\t out[8] = x * z * t + y * s;\n\t out[9] = y * z * t - x * s;\n\t out[10] = z * z * t + c;\n\t out[11] = 0;\n\t out[12] = 0;\n\t out[13] = 0;\n\t out[14] = 0;\n\t out[15] = 1;\n\t return out;\n\t}\n\n\t/**\n\t * Creates a matrix from the given angle around the X axis\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat4.identity(dest);\n\t * mat4.rotateX(dest, dest, rad);\n\t *\n\t * @param {mat4} out mat4 receiving operation result\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat4} out\n\t */\n\tmat4.fromXRotation = function(out, rad) {\n\t var s = Math.sin(rad),\n\t c = Math.cos(rad);\n\n\t // Perform axis-specific matrix multiplication\n\t out[0] = 1;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 0;\n\t out[4] = 0;\n\t out[5] = c;\n\t out[6] = s;\n\t out[7] = 0;\n\t out[8] = 0;\n\t out[9] = -s;\n\t out[10] = c;\n\t out[11] = 0;\n\t out[12] = 0;\n\t out[13] = 0;\n\t out[14] = 0;\n\t out[15] = 1;\n\t return out;\n\t}\n\n\t/**\n\t * Creates a matrix from the given angle around the Y axis\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat4.identity(dest);\n\t * mat4.rotateY(dest, dest, rad);\n\t *\n\t * @param {mat4} out mat4 receiving operation result\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat4} out\n\t */\n\tmat4.fromYRotation = function(out, rad) {\n\t var s = Math.sin(rad),\n\t c = Math.cos(rad);\n\n\t // Perform axis-specific matrix multiplication\n\t out[0] = c;\n\t out[1] = 0;\n\t out[2] = -s;\n\t out[3] = 0;\n\t out[4] = 0;\n\t out[5] = 1;\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = s;\n\t out[9] = 0;\n\t out[10] = c;\n\t out[11] = 0;\n\t out[12] = 0;\n\t out[13] = 0;\n\t out[14] = 0;\n\t out[15] = 1;\n\t return out;\n\t}\n\n\t/**\n\t * Creates a matrix from the given angle around the Z axis\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat4.identity(dest);\n\t * mat4.rotateZ(dest, dest, rad);\n\t *\n\t * @param {mat4} out mat4 receiving operation result\n\t * @param {Number} rad the angle to rotate the matrix by\n\t * @returns {mat4} out\n\t */\n\tmat4.fromZRotation = function(out, rad) {\n\t var s = Math.sin(rad),\n\t c = Math.cos(rad);\n\n\t // Perform axis-specific matrix multiplication\n\t out[0] = c;\n\t out[1] = s;\n\t out[2] = 0;\n\t out[3] = 0;\n\t out[4] = -s;\n\t out[5] = c;\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = 0;\n\t out[9] = 0;\n\t out[10] = 1;\n\t out[11] = 0;\n\t out[12] = 0;\n\t out[13] = 0;\n\t out[14] = 0;\n\t out[15] = 1;\n\t return out;\n\t}\n\n\t/**\n\t * Creates a matrix from a quaternion rotation and vector translation\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat4.identity(dest);\n\t * mat4.translate(dest, vec);\n\t * var quatMat = mat4.create();\n\t * quat4.toMat4(quat, quatMat);\n\t * mat4.multiply(dest, quatMat);\n\t *\n\t * @param {mat4} out mat4 receiving operation result\n\t * @param {quat4} q Rotation quaternion\n\t * @param {vec3} v Translation vector\n\t * @returns {mat4} out\n\t */\n\tmat4.fromRotationTranslation = function (out, q, v) {\n\t // Quaternion math\n\t var x = q[0], y = q[1], z = q[2], w = q[3],\n\t x2 = x + x,\n\t y2 = y + y,\n\t z2 = z + z,\n\n\t xx = x * x2,\n\t xy = x * y2,\n\t xz = x * z2,\n\t yy = y * y2,\n\t yz = y * z2,\n\t zz = z * z2,\n\t wx = w * x2,\n\t wy = w * y2,\n\t wz = w * z2;\n\n\t out[0] = 1 - (yy + zz);\n\t out[1] = xy + wz;\n\t out[2] = xz - wy;\n\t out[3] = 0;\n\t out[4] = xy - wz;\n\t out[5] = 1 - (xx + zz);\n\t out[6] = yz + wx;\n\t out[7] = 0;\n\t out[8] = xz + wy;\n\t out[9] = yz - wx;\n\t out[10] = 1 - (xx + yy);\n\t out[11] = 0;\n\t out[12] = v[0];\n\t out[13] = v[1];\n\t out[14] = v[2];\n\t out[15] = 1;\n\n\t return out;\n\t};\n\n\t/**\n\t * Returns the translation vector component of a transformation\n\t * matrix. If a matrix is built with fromRotationTranslation,\n\t * the returned vector will be the same as the translation vector\n\t * originally supplied.\n\t * @param {vec3} out Vector to receive translation component\n\t * @param {mat4} mat Matrix to be decomposed (input)\n\t * @return {vec3} out\n\t */\n\tmat4.getTranslation = function (out, mat) {\n\t out[0] = mat[12];\n\t out[1] = mat[13];\n\t out[2] = mat[14];\n\n\t return out;\n\t};\n\n\t/**\n\t * Returns a quaternion representing the rotational component\n\t * of a transformation matrix. If a matrix is built with\n\t * fromRotationTranslation, the returned quaternion will be the\n\t * same as the quaternion originally supplied.\n\t * @param {quat} out Quaternion to receive the rotation component\n\t * @param {mat4} mat Matrix to be decomposed (input)\n\t * @return {quat} out\n\t */\n\tmat4.getRotation = function (out, mat) {\n\t // Algorithm taken from http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\t var trace = mat[0] + mat[5] + mat[10];\n\t var S = 0;\n\n\t if (trace > 0) { \n\t S = Math.sqrt(trace + 1.0) * 2;\n\t out[3] = 0.25 * S;\n\t out[0] = (mat[6] - mat[9]) / S;\n\t out[1] = (mat[8] - mat[2]) / S; \n\t out[2] = (mat[1] - mat[4]) / S; \n\t } else if ((mat[0] > mat[5])&(mat[0] > mat[10])) { \n\t S = Math.sqrt(1.0 + mat[0] - mat[5] - mat[10]) * 2;\n\t out[3] = (mat[6] - mat[9]) / S;\n\t out[0] = 0.25 * S;\n\t out[1] = (mat[1] + mat[4]) / S; \n\t out[2] = (mat[8] + mat[2]) / S; \n\t } else if (mat[5] > mat[10]) { \n\t S = Math.sqrt(1.0 + mat[5] - mat[0] - mat[10]) * 2;\n\t out[3] = (mat[8] - mat[2]) / S;\n\t out[0] = (mat[1] + mat[4]) / S; \n\t out[1] = 0.25 * S;\n\t out[2] = (mat[6] + mat[9]) / S; \n\t } else { \n\t S = Math.sqrt(1.0 + mat[10] - mat[0] - mat[5]) * 2;\n\t out[3] = (mat[1] - mat[4]) / S;\n\t out[0] = (mat[8] + mat[2]) / S;\n\t out[1] = (mat[6] + mat[9]) / S;\n\t out[2] = 0.25 * S;\n\t }\n\n\t return out;\n\t};\n\n\t/**\n\t * Creates a matrix from a quaternion rotation, vector translation and vector scale\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat4.identity(dest);\n\t * mat4.translate(dest, vec);\n\t * var quatMat = mat4.create();\n\t * quat4.toMat4(quat, quatMat);\n\t * mat4.multiply(dest, quatMat);\n\t * mat4.scale(dest, scale)\n\t *\n\t * @param {mat4} out mat4 receiving operation result\n\t * @param {quat4} q Rotation quaternion\n\t * @param {vec3} v Translation vector\n\t * @param {vec3} s Scaling vector\n\t * @returns {mat4} out\n\t */\n\tmat4.fromRotationTranslationScale = function (out, q, v, s) {\n\t // Quaternion math\n\t var x = q[0], y = q[1], z = q[2], w = q[3],\n\t x2 = x + x,\n\t y2 = y + y,\n\t z2 = z + z,\n\n\t xx = x * x2,\n\t xy = x * y2,\n\t xz = x * z2,\n\t yy = y * y2,\n\t yz = y * z2,\n\t zz = z * z2,\n\t wx = w * x2,\n\t wy = w * y2,\n\t wz = w * z2,\n\t sx = s[0],\n\t sy = s[1],\n\t sz = s[2];\n\n\t out[0] = (1 - (yy + zz)) * sx;\n\t out[1] = (xy + wz) * sx;\n\t out[2] = (xz - wy) * sx;\n\t out[3] = 0;\n\t out[4] = (xy - wz) * sy;\n\t out[5] = (1 - (xx + zz)) * sy;\n\t out[6] = (yz + wx) * sy;\n\t out[7] = 0;\n\t out[8] = (xz + wy) * sz;\n\t out[9] = (yz - wx) * sz;\n\t out[10] = (1 - (xx + yy)) * sz;\n\t out[11] = 0;\n\t out[12] = v[0];\n\t out[13] = v[1];\n\t out[14] = v[2];\n\t out[15] = 1;\n\n\t return out;\n\t};\n\n\t/**\n\t * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n\t * This is equivalent to (but much faster than):\n\t *\n\t * mat4.identity(dest);\n\t * mat4.translate(dest, vec);\n\t * mat4.translate(dest, origin);\n\t * var quatMat = mat4.create();\n\t * quat4.toMat4(quat, quatMat);\n\t * mat4.multiply(dest, quatMat);\n\t * mat4.scale(dest, scale)\n\t * mat4.translate(dest, negativeOrigin);\n\t *\n\t * @param {mat4} out mat4 receiving operation result\n\t * @param {quat4} q Rotation quaternion\n\t * @param {vec3} v Translation vector\n\t * @param {vec3} s Scaling vector\n\t * @param {vec3} o The origin vector around which to scale and rotate\n\t * @returns {mat4} out\n\t */\n\tmat4.fromRotationTranslationScaleOrigin = function (out, q, v, s, o) {\n\t // Quaternion math\n\t var x = q[0], y = q[1], z = q[2], w = q[3],\n\t x2 = x + x,\n\t y2 = y + y,\n\t z2 = z + z,\n\n\t xx = x * x2,\n\t xy = x * y2,\n\t xz = x * z2,\n\t yy = y * y2,\n\t yz = y * z2,\n\t zz = z * z2,\n\t wx = w * x2,\n\t wy = w * y2,\n\t wz = w * z2,\n\n\t sx = s[0],\n\t sy = s[1],\n\t sz = s[2],\n\n\t ox = o[0],\n\t oy = o[1],\n\t oz = o[2];\n\n\t out[0] = (1 - (yy + zz)) * sx;\n\t out[1] = (xy + wz) * sx;\n\t out[2] = (xz - wy) * sx;\n\t out[3] = 0;\n\t out[4] = (xy - wz) * sy;\n\t out[5] = (1 - (xx + zz)) * sy;\n\t out[6] = (yz + wx) * sy;\n\t out[7] = 0;\n\t out[8] = (xz + wy) * sz;\n\t out[9] = (yz - wx) * sz;\n\t out[10] = (1 - (xx + yy)) * sz;\n\t out[11] = 0;\n\t out[12] = v[0] + ox - (out[0] * ox + out[4] * oy + out[8] * oz);\n\t out[13] = v[1] + oy - (out[1] * ox + out[5] * oy + out[9] * oz);\n\t out[14] = v[2] + oz - (out[2] * ox + out[6] * oy + out[10] * oz);\n\t out[15] = 1;\n\n\t return out;\n\t};\n\n\t/**\n\t * Calculates a 4x4 matrix from the given quaternion\n\t *\n\t * @param {mat4} out mat4 receiving operation result\n\t * @param {quat} q Quaternion to create matrix from\n\t *\n\t * @returns {mat4} out\n\t */\n\tmat4.fromQuat = function (out, q) {\n\t var x = q[0], y = q[1], z = q[2], w = q[3],\n\t x2 = x + x,\n\t y2 = y + y,\n\t z2 = z + z,\n\n\t xx = x * x2,\n\t yx = y * x2,\n\t yy = y * y2,\n\t zx = z * x2,\n\t zy = z * y2,\n\t zz = z * z2,\n\t wx = w * x2,\n\t wy = w * y2,\n\t wz = w * z2;\n\n\t out[0] = 1 - yy - zz;\n\t out[1] = yx + wz;\n\t out[2] = zx - wy;\n\t out[3] = 0;\n\n\t out[4] = yx - wz;\n\t out[5] = 1 - xx - zz;\n\t out[6] = zy + wx;\n\t out[7] = 0;\n\n\t out[8] = zx + wy;\n\t out[9] = zy - wx;\n\t out[10] = 1 - xx - yy;\n\t out[11] = 0;\n\n\t out[12] = 0;\n\t out[13] = 0;\n\t out[14] = 0;\n\t out[15] = 1;\n\n\t return out;\n\t};\n\n\t/**\n\t * Generates a frustum matrix with the given bounds\n\t *\n\t * @param {mat4} out mat4 frustum matrix will be written into\n\t * @param {Number} left Left bound of the frustum\n\t * @param {Number} right Right bound of the frustum\n\t * @param {Number} bottom Bottom bound of the frustum\n\t * @param {Number} top Top bound of the frustum\n\t * @param {Number} near Near bound of the frustum\n\t * @param {Number} far Far bound of the frustum\n\t * @returns {mat4} out\n\t */\n\tmat4.frustum = function (out, left, right, bottom, top, near, far) {\n\t var rl = 1 / (right - left),\n\t tb = 1 / (top - bottom),\n\t nf = 1 / (near - far);\n\t out[0] = (near * 2) * rl;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 0;\n\t out[4] = 0;\n\t out[5] = (near * 2) * tb;\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = (right + left) * rl;\n\t out[9] = (top + bottom) * tb;\n\t out[10] = (far + near) * nf;\n\t out[11] = -1;\n\t out[12] = 0;\n\t out[13] = 0;\n\t out[14] = (far * near * 2) * nf;\n\t out[15] = 0;\n\t return out;\n\t};\n\n\t/**\n\t * Generates a perspective projection matrix with the given bounds\n\t *\n\t * @param {mat4} out mat4 frustum matrix will be written into\n\t * @param {number} fovy Vertical field of view in radians\n\t * @param {number} aspect Aspect ratio. typically viewport width/height\n\t * @param {number} near Near bound of the frustum\n\t * @param {number} far Far bound of the frustum\n\t * @returns {mat4} out\n\t */\n\tmat4.perspective = function (out, fovy, aspect, near, far) {\n\t var f = 1.0 / Math.tan(fovy / 2),\n\t nf = 1 / (near - far);\n\t out[0] = f / aspect;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 0;\n\t out[4] = 0;\n\t out[5] = f;\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = 0;\n\t out[9] = 0;\n\t out[10] = (far + near) * nf;\n\t out[11] = -1;\n\t out[12] = 0;\n\t out[13] = 0;\n\t out[14] = (2 * far * near) * nf;\n\t out[15] = 0;\n\t return out;\n\t};\n\n\t/**\n\t * Generates a perspective projection matrix with the given field of view.\n\t * This is primarily useful for generating projection matrices to be used\n\t * with the still experiemental WebVR API.\n\t *\n\t * @param {mat4} out mat4 frustum matrix will be written into\n\t * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n\t * @param {number} near Near bound of the frustum\n\t * @param {number} far Far bound of the frustum\n\t * @returns {mat4} out\n\t */\n\tmat4.perspectiveFromFieldOfView = function (out, fov, near, far) {\n\t var upTan = Math.tan(fov.upDegrees * Math.PI/180.0),\n\t downTan = Math.tan(fov.downDegrees * Math.PI/180.0),\n\t leftTan = Math.tan(fov.leftDegrees * Math.PI/180.0),\n\t rightTan = Math.tan(fov.rightDegrees * Math.PI/180.0),\n\t xScale = 2.0 / (leftTan + rightTan),\n\t yScale = 2.0 / (upTan + downTan);\n\n\t out[0] = xScale;\n\t out[1] = 0.0;\n\t out[2] = 0.0;\n\t out[3] = 0.0;\n\t out[4] = 0.0;\n\t out[5] = yScale;\n\t out[6] = 0.0;\n\t out[7] = 0.0;\n\t out[8] = -((leftTan - rightTan) * xScale * 0.5);\n\t out[9] = ((upTan - downTan) * yScale * 0.5);\n\t out[10] = far / (near - far);\n\t out[11] = -1.0;\n\t out[12] = 0.0;\n\t out[13] = 0.0;\n\t out[14] = (far * near) / (near - far);\n\t out[15] = 0.0;\n\t return out;\n\t}\n\n\t/**\n\t * Generates a orthogonal projection matrix with the given bounds\n\t *\n\t * @param {mat4} out mat4 frustum matrix will be written into\n\t * @param {number} left Left bound of the frustum\n\t * @param {number} right Right bound of the frustum\n\t * @param {number} bottom Bottom bound of the frustum\n\t * @param {number} top Top bound of the frustum\n\t * @param {number} near Near bound of the frustum\n\t * @param {number} far Far bound of the frustum\n\t * @returns {mat4} out\n\t */\n\tmat4.ortho = function (out, left, right, bottom, top, near, far) {\n\t var lr = 1 / (left - right),\n\t bt = 1 / (bottom - top),\n\t nf = 1 / (near - far);\n\t out[0] = -2 * lr;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 0;\n\t out[4] = 0;\n\t out[5] = -2 * bt;\n\t out[6] = 0;\n\t out[7] = 0;\n\t out[8] = 0;\n\t out[9] = 0;\n\t out[10] = 2 * nf;\n\t out[11] = 0;\n\t out[12] = (left + right) * lr;\n\t out[13] = (top + bottom) * bt;\n\t out[14] = (far + near) * nf;\n\t out[15] = 1;\n\t return out;\n\t};\n\n\t/**\n\t * Generates a look-at matrix with the given eye position, focal point, and up axis\n\t *\n\t * @param {mat4} out mat4 frustum matrix will be written into\n\t * @param {vec3} eye Position of the viewer\n\t * @param {vec3} center Point the viewer is looking at\n\t * @param {vec3} up vec3 pointing up\n\t * @returns {mat4} out\n\t */\n\tmat4.lookAt = function (out, eye, center, up) {\n\t var x0, x1, x2, y0, y1, y2, z0, z1, z2, len,\n\t eyex = eye[0],\n\t eyey = eye[1],\n\t eyez = eye[2],\n\t upx = up[0],\n\t upy = up[1],\n\t upz = up[2],\n\t centerx = center[0],\n\t centery = center[1],\n\t centerz = center[2];\n\n\t if (Math.abs(eyex - centerx) < glMatrix.EPSILON &&\n\t Math.abs(eyey - centery) < glMatrix.EPSILON &&\n\t Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n\t return mat4.identity(out);\n\t }\n\n\t z0 = eyex - centerx;\n\t z1 = eyey - centery;\n\t z2 = eyez - centerz;\n\n\t len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n\t z0 *= len;\n\t z1 *= len;\n\t z2 *= len;\n\n\t x0 = upy * z2 - upz * z1;\n\t x1 = upz * z0 - upx * z2;\n\t x2 = upx * z1 - upy * z0;\n\t len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n\t if (!len) {\n\t x0 = 0;\n\t x1 = 0;\n\t x2 = 0;\n\t } else {\n\t len = 1 / len;\n\t x0 *= len;\n\t x1 *= len;\n\t x2 *= len;\n\t }\n\n\t y0 = z1 * x2 - z2 * x1;\n\t y1 = z2 * x0 - z0 * x2;\n\t y2 = z0 * x1 - z1 * x0;\n\n\t len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n\t if (!len) {\n\t y0 = 0;\n\t y1 = 0;\n\t y2 = 0;\n\t } else {\n\t len = 1 / len;\n\t y0 *= len;\n\t y1 *= len;\n\t y2 *= len;\n\t }\n\n\t out[0] = x0;\n\t out[1] = y0;\n\t out[2] = z0;\n\t out[3] = 0;\n\t out[4] = x1;\n\t out[5] = y1;\n\t out[6] = z1;\n\t out[7] = 0;\n\t out[8] = x2;\n\t out[9] = y2;\n\t out[10] = z2;\n\t out[11] = 0;\n\t out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n\t out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n\t out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n\t out[15] = 1;\n\n\t return out;\n\t};\n\n\t/**\n\t * Returns a string representation of a mat4\n\t *\n\t * @param {mat4} a matrix to represent as a string\n\t * @returns {String} string representation of the matrix\n\t */\n\tmat4.str = function (a) {\n\t return 'mat4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' +\n\t a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' +\n\t a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' +\n\t a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')';\n\t};\n\n\t/**\n\t * Returns Frobenius norm of a mat4\n\t *\n\t * @param {mat4} a the matrix to calculate Frobenius norm of\n\t * @returns {Number} Frobenius norm\n\t */\n\tmat4.frob = function (a) {\n\t return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + Math.pow(a[6], 2) + Math.pow(a[7], 2) + Math.pow(a[8], 2) + Math.pow(a[9], 2) + Math.pow(a[10], 2) + Math.pow(a[11], 2) + Math.pow(a[12], 2) + Math.pow(a[13], 2) + Math.pow(a[14], 2) + Math.pow(a[15], 2) ))\n\t};\n\n\t/**\n\t * Adds two mat4's\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the first operand\n\t * @param {mat4} b the second operand\n\t * @returns {mat4} out\n\t */\n\tmat4.add = function(out, a, b) {\n\t out[0] = a[0] + b[0];\n\t out[1] = a[1] + b[1];\n\t out[2] = a[2] + b[2];\n\t out[3] = a[3] + b[3];\n\t out[4] = a[4] + b[4];\n\t out[5] = a[5] + b[5];\n\t out[6] = a[6] + b[6];\n\t out[7] = a[7] + b[7];\n\t out[8] = a[8] + b[8];\n\t out[9] = a[9] + b[9];\n\t out[10] = a[10] + b[10];\n\t out[11] = a[11] + b[11];\n\t out[12] = a[12] + b[12];\n\t out[13] = a[13] + b[13];\n\t out[14] = a[14] + b[14];\n\t out[15] = a[15] + b[15];\n\t return out;\n\t};\n\n\t/**\n\t * Subtracts matrix b from matrix a\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the first operand\n\t * @param {mat4} b the second operand\n\t * @returns {mat4} out\n\t */\n\tmat4.subtract = function(out, a, b) {\n\t out[0] = a[0] - b[0];\n\t out[1] = a[1] - b[1];\n\t out[2] = a[2] - b[2];\n\t out[3] = a[3] - b[3];\n\t out[4] = a[4] - b[4];\n\t out[5] = a[5] - b[5];\n\t out[6] = a[6] - b[6];\n\t out[7] = a[7] - b[7];\n\t out[8] = a[8] - b[8];\n\t out[9] = a[9] - b[9];\n\t out[10] = a[10] - b[10];\n\t out[11] = a[11] - b[11];\n\t out[12] = a[12] - b[12];\n\t out[13] = a[13] - b[13];\n\t out[14] = a[14] - b[14];\n\t out[15] = a[15] - b[15];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link mat4.subtract}\n\t * @function\n\t */\n\tmat4.sub = mat4.subtract;\n\n\t/**\n\t * Multiply each element of the matrix by a scalar.\n\t *\n\t * @param {mat4} out the receiving matrix\n\t * @param {mat4} a the matrix to scale\n\t * @param {Number} b amount to scale the matrix's elements by\n\t * @returns {mat4} out\n\t */\n\tmat4.multiplyScalar = function(out, a, b) {\n\t out[0] = a[0] * b;\n\t out[1] = a[1] * b;\n\t out[2] = a[2] * b;\n\t out[3] = a[3] * b;\n\t out[4] = a[4] * b;\n\t out[5] = a[5] * b;\n\t out[6] = a[6] * b;\n\t out[7] = a[7] * b;\n\t out[8] = a[8] * b;\n\t out[9] = a[9] * b;\n\t out[10] = a[10] * b;\n\t out[11] = a[11] * b;\n\t out[12] = a[12] * b;\n\t out[13] = a[13] * b;\n\t out[14] = a[14] * b;\n\t out[15] = a[15] * b;\n\t return out;\n\t};\n\n\t/**\n\t * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n\t *\n\t * @param {mat4} out the receiving vector\n\t * @param {mat4} a the first operand\n\t * @param {mat4} b the second operand\n\t * @param {Number} scale the amount to scale b's elements by before adding\n\t * @returns {mat4} out\n\t */\n\tmat4.multiplyScalarAndAdd = function(out, a, b, scale) {\n\t out[0] = a[0] + (b[0] * scale);\n\t out[1] = a[1] + (b[1] * scale);\n\t out[2] = a[2] + (b[2] * scale);\n\t out[3] = a[3] + (b[3] * scale);\n\t out[4] = a[4] + (b[4] * scale);\n\t out[5] = a[5] + (b[5] * scale);\n\t out[6] = a[6] + (b[6] * scale);\n\t out[7] = a[7] + (b[7] * scale);\n\t out[8] = a[8] + (b[8] * scale);\n\t out[9] = a[9] + (b[9] * scale);\n\t out[10] = a[10] + (b[10] * scale);\n\t out[11] = a[11] + (b[11] * scale);\n\t out[12] = a[12] + (b[12] * scale);\n\t out[13] = a[13] + (b[13] * scale);\n\t out[14] = a[14] + (b[14] * scale);\n\t out[15] = a[15] + (b[15] * scale);\n\t return out;\n\t};\n\n\t/**\n\t * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n\t *\n\t * @param {mat4} a The first matrix.\n\t * @param {mat4} b The second matrix.\n\t * @returns {Boolean} True if the matrices are equal, false otherwise.\n\t */\n\tmat4.exactEquals = function (a, b) {\n\t return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && \n\t a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && \n\t a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] &&\n\t a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n\t};\n\n\t/**\n\t * Returns whether or not the matrices have approximately the same elements in the same position.\n\t *\n\t * @param {mat4} a The first matrix.\n\t * @param {mat4} b The second matrix.\n\t * @returns {Boolean} True if the matrices are equal, false otherwise.\n\t */\n\tmat4.equals = function (a, b) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3],\n\t a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7], \n\t a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11], \n\t a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15];\n\n\t var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3],\n\t b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], \n\t b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], \n\t b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n\n\t return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n\t Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\n\t Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\n\t Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)) &&\n\t Math.abs(a4 - b4) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a4), Math.abs(b4)) &&\n\t Math.abs(a5 - b5) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a5), Math.abs(b5)) &&\n\t Math.abs(a6 - b6) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a6), Math.abs(b6)) &&\n\t Math.abs(a7 - b7) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a7), Math.abs(b7)) &&\n\t Math.abs(a8 - b8) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a8), Math.abs(b8)) &&\n\t Math.abs(a9 - b9) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a9), Math.abs(b9)) &&\n\t Math.abs(a10 - b10) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a10), Math.abs(b10)) &&\n\t Math.abs(a11 - b11) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a11), Math.abs(b11)) &&\n\t Math.abs(a12 - b12) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a12), Math.abs(b12)) &&\n\t Math.abs(a13 - b13) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a13), Math.abs(b13)) &&\n\t Math.abs(a14 - b14) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a14), Math.abs(b14)) &&\n\t Math.abs(a15 - b15) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a15), Math.abs(b15)));\n\t};\n\n\n\n\tmodule.exports = mat4;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE. */\n\n\tvar glMatrix = __webpack_require__(1);\n\tvar mat3 = __webpack_require__(4);\n\tvar vec3 = __webpack_require__(7);\n\tvar vec4 = __webpack_require__(8);\n\n\t/**\n\t * @class Quaternion\n\t * @name quat\n\t */\n\tvar quat = {};\n\n\t/**\n\t * Creates a new identity quat\n\t *\n\t * @returns {quat} a new quaternion\n\t */\n\tquat.create = function() {\n\t var out = new glMatrix.ARRAY_TYPE(4);\n\t out[0] = 0;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 1;\n\t return out;\n\t};\n\n\t/**\n\t * Sets a quaternion to represent the shortest rotation from one\n\t * vector to another.\n\t *\n\t * Both vectors are assumed to be unit length.\n\t *\n\t * @param {quat} out the receiving quaternion.\n\t * @param {vec3} a the initial vector\n\t * @param {vec3} b the destination vector\n\t * @returns {quat} out\n\t */\n\tquat.rotationTo = (function() {\n\t var tmpvec3 = vec3.create();\n\t var xUnitVec3 = vec3.fromValues(1,0,0);\n\t var yUnitVec3 = vec3.fromValues(0,1,0);\n\n\t return function(out, a, b) {\n\t var dot = vec3.dot(a, b);\n\t if (dot < -0.999999) {\n\t vec3.cross(tmpvec3, xUnitVec3, a);\n\t if (vec3.length(tmpvec3) < 0.000001)\n\t vec3.cross(tmpvec3, yUnitVec3, a);\n\t vec3.normalize(tmpvec3, tmpvec3);\n\t quat.setAxisAngle(out, tmpvec3, Math.PI);\n\t return out;\n\t } else if (dot > 0.999999) {\n\t out[0] = 0;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 1;\n\t return out;\n\t } else {\n\t vec3.cross(tmpvec3, a, b);\n\t out[0] = tmpvec3[0];\n\t out[1] = tmpvec3[1];\n\t out[2] = tmpvec3[2];\n\t out[3] = 1 + dot;\n\t return quat.normalize(out, out);\n\t }\n\t };\n\t})();\n\n\t/**\n\t * Sets the specified quaternion with values corresponding to the given\n\t * axes. Each axis is a vec3 and is expected to be unit length and\n\t * perpendicular to all other specified axes.\n\t *\n\t * @param {vec3} view the vector representing the viewing direction\n\t * @param {vec3} right the vector representing the local \"right\" direction\n\t * @param {vec3} up the vector representing the local \"up\" direction\n\t * @returns {quat} out\n\t */\n\tquat.setAxes = (function() {\n\t var matr = mat3.create();\n\n\t return function(out, view, right, up) {\n\t matr[0] = right[0];\n\t matr[3] = right[1];\n\t matr[6] = right[2];\n\n\t matr[1] = up[0];\n\t matr[4] = up[1];\n\t matr[7] = up[2];\n\n\t matr[2] = -view[0];\n\t matr[5] = -view[1];\n\t matr[8] = -view[2];\n\n\t return quat.normalize(out, quat.fromMat3(out, matr));\n\t };\n\t})();\n\n\t/**\n\t * Creates a new quat initialized with values from an existing quaternion\n\t *\n\t * @param {quat} a quaternion to clone\n\t * @returns {quat} a new quaternion\n\t * @function\n\t */\n\tquat.clone = vec4.clone;\n\n\t/**\n\t * Creates a new quat initialized with the given values\n\t *\n\t * @param {Number} x X component\n\t * @param {Number} y Y component\n\t * @param {Number} z Z component\n\t * @param {Number} w W component\n\t * @returns {quat} a new quaternion\n\t * @function\n\t */\n\tquat.fromValues = vec4.fromValues;\n\n\t/**\n\t * Copy the values from one quat to another\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {quat} a the source quaternion\n\t * @returns {quat} out\n\t * @function\n\t */\n\tquat.copy = vec4.copy;\n\n\t/**\n\t * Set the components of a quat to the given values\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {Number} x X component\n\t * @param {Number} y Y component\n\t * @param {Number} z Z component\n\t * @param {Number} w W component\n\t * @returns {quat} out\n\t * @function\n\t */\n\tquat.set = vec4.set;\n\n\t/**\n\t * Set a quat to the identity quaternion\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @returns {quat} out\n\t */\n\tquat.identity = function(out) {\n\t out[0] = 0;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 1;\n\t return out;\n\t};\n\n\t/**\n\t * Sets a quat from the given angle and rotation axis,\n\t * then returns it.\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {vec3} axis the axis around which to rotate\n\t * @param {Number} rad the angle in radians\n\t * @returns {quat} out\n\t **/\n\tquat.setAxisAngle = function(out, axis, rad) {\n\t rad = rad * 0.5;\n\t var s = Math.sin(rad);\n\t out[0] = s * axis[0];\n\t out[1] = s * axis[1];\n\t out[2] = s * axis[2];\n\t out[3] = Math.cos(rad);\n\t return out;\n\t};\n\n\t/**\n\t * Gets the rotation axis and angle for a given\n\t * quaternion. If a quaternion is created with\n\t * setAxisAngle, this method will return the same\n\t * values as providied in the original parameter list\n\t * OR functionally equivalent values.\n\t * Example: The quaternion formed by axis [0, 0, 1] and\n\t * angle -90 is the same as the quaternion formed by\n\t * [0, 0, 1] and 270. This method favors the latter.\n\t * @param {vec3} out_axis Vector receiving the axis of rotation\n\t * @param {quat} q Quaternion to be decomposed\n\t * @return {Number} Angle, in radians, of the rotation\n\t */\n\tquat.getAxisAngle = function(out_axis, q) {\n\t var rad = Math.acos(q[3]) * 2.0;\n\t var s = Math.sin(rad / 2.0);\n\t if (s != 0.0) {\n\t out_axis[0] = q[0] / s;\n\t out_axis[1] = q[1] / s;\n\t out_axis[2] = q[2] / s;\n\t } else {\n\t // If s is zero, return any axis (no rotation - axis does not matter)\n\t out_axis[0] = 1;\n\t out_axis[1] = 0;\n\t out_axis[2] = 0;\n\t }\n\t return rad;\n\t};\n\n\t/**\n\t * Adds two quat's\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {quat} a the first operand\n\t * @param {quat} b the second operand\n\t * @returns {quat} out\n\t * @function\n\t */\n\tquat.add = vec4.add;\n\n\t/**\n\t * Multiplies two quat's\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {quat} a the first operand\n\t * @param {quat} b the second operand\n\t * @returns {quat} out\n\t */\n\tquat.multiply = function(out, a, b) {\n\t var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n\t bx = b[0], by = b[1], bz = b[2], bw = b[3];\n\n\t out[0] = ax * bw + aw * bx + ay * bz - az * by;\n\t out[1] = ay * bw + aw * by + az * bx - ax * bz;\n\t out[2] = az * bw + aw * bz + ax * by - ay * bx;\n\t out[3] = aw * bw - ax * bx - ay * by - az * bz;\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link quat.multiply}\n\t * @function\n\t */\n\tquat.mul = quat.multiply;\n\n\t/**\n\t * Scales a quat by a scalar number\n\t *\n\t * @param {quat} out the receiving vector\n\t * @param {quat} a the vector to scale\n\t * @param {Number} b amount to scale the vector by\n\t * @returns {quat} out\n\t * @function\n\t */\n\tquat.scale = vec4.scale;\n\n\t/**\n\t * Rotates a quaternion by the given angle about the X axis\n\t *\n\t * @param {quat} out quat receiving operation result\n\t * @param {quat} a quat to rotate\n\t * @param {number} rad angle (in radians) to rotate\n\t * @returns {quat} out\n\t */\n\tquat.rotateX = function (out, a, rad) {\n\t rad *= 0.5; \n\n\t var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n\t bx = Math.sin(rad), bw = Math.cos(rad);\n\n\t out[0] = ax * bw + aw * bx;\n\t out[1] = ay * bw + az * bx;\n\t out[2] = az * bw - ay * bx;\n\t out[3] = aw * bw - ax * bx;\n\t return out;\n\t};\n\n\t/**\n\t * Rotates a quaternion by the given angle about the Y axis\n\t *\n\t * @param {quat} out quat receiving operation result\n\t * @param {quat} a quat to rotate\n\t * @param {number} rad angle (in radians) to rotate\n\t * @returns {quat} out\n\t */\n\tquat.rotateY = function (out, a, rad) {\n\t rad *= 0.5; \n\n\t var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n\t by = Math.sin(rad), bw = Math.cos(rad);\n\n\t out[0] = ax * bw - az * by;\n\t out[1] = ay * bw + aw * by;\n\t out[2] = az * bw + ax * by;\n\t out[3] = aw * bw - ay * by;\n\t return out;\n\t};\n\n\t/**\n\t * Rotates a quaternion by the given angle about the Z axis\n\t *\n\t * @param {quat} out quat receiving operation result\n\t * @param {quat} a quat to rotate\n\t * @param {number} rad angle (in radians) to rotate\n\t * @returns {quat} out\n\t */\n\tquat.rotateZ = function (out, a, rad) {\n\t rad *= 0.5; \n\n\t var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n\t bz = Math.sin(rad), bw = Math.cos(rad);\n\n\t out[0] = ax * bw + ay * bz;\n\t out[1] = ay * bw - ax * bz;\n\t out[2] = az * bw + aw * bz;\n\t out[3] = aw * bw - az * bz;\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the W component of a quat from the X, Y, and Z components.\n\t * Assumes that quaternion is 1 unit in length.\n\t * Any existing W component will be ignored.\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {quat} a quat to calculate W component of\n\t * @returns {quat} out\n\t */\n\tquat.calculateW = function (out, a) {\n\t var x = a[0], y = a[1], z = a[2];\n\n\t out[0] = x;\n\t out[1] = y;\n\t out[2] = z;\n\t out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the dot product of two quat's\n\t *\n\t * @param {quat} a the first operand\n\t * @param {quat} b the second operand\n\t * @returns {Number} dot product of a and b\n\t * @function\n\t */\n\tquat.dot = vec4.dot;\n\n\t/**\n\t * Performs a linear interpolation between two quat's\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {quat} a the first operand\n\t * @param {quat} b the second operand\n\t * @param {Number} t interpolation amount between the two inputs\n\t * @returns {quat} out\n\t * @function\n\t */\n\tquat.lerp = vec4.lerp;\n\n\t/**\n\t * Performs a spherical linear interpolation between two quat\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {quat} a the first operand\n\t * @param {quat} b the second operand\n\t * @param {Number} t interpolation amount between the two inputs\n\t * @returns {quat} out\n\t */\n\tquat.slerp = function (out, a, b, t) {\n\t // benchmarks:\n\t // http://jsperf.com/quaternion-slerp-implementations\n\n\t var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n\t bx = b[0], by = b[1], bz = b[2], bw = b[3];\n\n\t var omega, cosom, sinom, scale0, scale1;\n\n\t // calc cosine\n\t cosom = ax * bx + ay * by + az * bz + aw * bw;\n\t // adjust signs (if necessary)\n\t if ( cosom < 0.0 ) {\n\t cosom = -cosom;\n\t bx = - bx;\n\t by = - by;\n\t bz = - bz;\n\t bw = - bw;\n\t }\n\t // calculate coefficients\n\t if ( (1.0 - cosom) > 0.000001 ) {\n\t // standard case (slerp)\n\t omega = Math.acos(cosom);\n\t sinom = Math.sin(omega);\n\t scale0 = Math.sin((1.0 - t) * omega) / sinom;\n\t scale1 = Math.sin(t * omega) / sinom;\n\t } else { \n\t // \"from\" and \"to\" quaternions are very close \n\t // ... so we can do a linear interpolation\n\t scale0 = 1.0 - t;\n\t scale1 = t;\n\t }\n\t // calculate final values\n\t out[0] = scale0 * ax + scale1 * bx;\n\t out[1] = scale0 * ay + scale1 * by;\n\t out[2] = scale0 * az + scale1 * bz;\n\t out[3] = scale0 * aw + scale1 * bw;\n\t \n\t return out;\n\t};\n\n\t/**\n\t * Performs a spherical linear interpolation with two control points\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {quat} a the first operand\n\t * @param {quat} b the second operand\n\t * @param {quat} c the third operand\n\t * @param {quat} d the fourth operand\n\t * @param {Number} t interpolation amount\n\t * @returns {quat} out\n\t */\n\tquat.sqlerp = (function () {\n\t var temp1 = quat.create();\n\t var temp2 = quat.create();\n\t \n\t return function (out, a, b, c, d, t) {\n\t quat.slerp(temp1, a, d, t);\n\t quat.slerp(temp2, b, c, t);\n\t quat.slerp(out, temp1, temp2, 2 * t * (1 - t));\n\t \n\t return out;\n\t };\n\t}());\n\n\t/**\n\t * Calculates the inverse of a quat\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {quat} a quat to calculate inverse of\n\t * @returns {quat} out\n\t */\n\tquat.invert = function(out, a) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3],\n\t dot = a0*a0 + a1*a1 + a2*a2 + a3*a3,\n\t invDot = dot ? 1.0/dot : 0;\n\t \n\t // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n\t out[0] = -a0*invDot;\n\t out[1] = -a1*invDot;\n\t out[2] = -a2*invDot;\n\t out[3] = a3*invDot;\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the conjugate of a quat\n\t * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {quat} a quat to calculate conjugate of\n\t * @returns {quat} out\n\t */\n\tquat.conjugate = function (out, a) {\n\t out[0] = -a[0];\n\t out[1] = -a[1];\n\t out[2] = -a[2];\n\t out[3] = a[3];\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the length of a quat\n\t *\n\t * @param {quat} a vector to calculate length of\n\t * @returns {Number} length of a\n\t * @function\n\t */\n\tquat.length = vec4.length;\n\n\t/**\n\t * Alias for {@link quat.length}\n\t * @function\n\t */\n\tquat.len = quat.length;\n\n\t/**\n\t * Calculates the squared length of a quat\n\t *\n\t * @param {quat} a vector to calculate squared length of\n\t * @returns {Number} squared length of a\n\t * @function\n\t */\n\tquat.squaredLength = vec4.squaredLength;\n\n\t/**\n\t * Alias for {@link quat.squaredLength}\n\t * @function\n\t */\n\tquat.sqrLen = quat.squaredLength;\n\n\t/**\n\t * Normalize a quat\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {quat} a quaternion to normalize\n\t * @returns {quat} out\n\t * @function\n\t */\n\tquat.normalize = vec4.normalize;\n\n\t/**\n\t * Creates a quaternion from the given 3x3 rotation matrix.\n\t *\n\t * NOTE: The resultant quaternion is not normalized, so you should be sure\n\t * to renormalize the quaternion yourself where necessary.\n\t *\n\t * @param {quat} out the receiving quaternion\n\t * @param {mat3} m rotation matrix\n\t * @returns {quat} out\n\t * @function\n\t */\n\tquat.fromMat3 = function(out, m) {\n\t // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n\t // article \"Quaternion Calculus and Fast Animation\".\n\t var fTrace = m[0] + m[4] + m[8];\n\t var fRoot;\n\n\t if ( fTrace > 0.0 ) {\n\t // |w| > 1/2, may as well choose w > 1/2\n\t fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\t out[3] = 0.5 * fRoot;\n\t fRoot = 0.5/fRoot; // 1/(4w)\n\t out[0] = (m[5]-m[7])*fRoot;\n\t out[1] = (m[6]-m[2])*fRoot;\n\t out[2] = (m[1]-m[3])*fRoot;\n\t } else {\n\t // |w| <= 1/2\n\t var i = 0;\n\t if ( m[4] > m[0] )\n\t i = 1;\n\t if ( m[8] > m[i*3+i] )\n\t i = 2;\n\t var j = (i+1)%3;\n\t var k = (i+2)%3;\n\t \n\t fRoot = Math.sqrt(m[i*3+i]-m[j*3+j]-m[k*3+k] + 1.0);\n\t out[i] = 0.5 * fRoot;\n\t fRoot = 0.5 / fRoot;\n\t out[3] = (m[j*3+k] - m[k*3+j]) * fRoot;\n\t out[j] = (m[j*3+i] + m[i*3+j]) * fRoot;\n\t out[k] = (m[k*3+i] + m[i*3+k]) * fRoot;\n\t }\n\t \n\t return out;\n\t};\n\n\t/**\n\t * Returns a string representation of a quatenion\n\t *\n\t * @param {quat} a vector to represent as a string\n\t * @returns {String} string representation of the vector\n\t */\n\tquat.str = function (a) {\n\t return 'quat(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')';\n\t};\n\n\t/**\n\t * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n\t *\n\t * @param {quat} a The first quaternion.\n\t * @param {quat} b The second quaternion.\n\t * @returns {Boolean} True if the vectors are equal, false otherwise.\n\t */\n\tquat.exactEquals = vec4.exactEquals;\n\n\t/**\n\t * Returns whether or not the quaternions have approximately the same elements in the same position.\n\t *\n\t * @param {quat} a The first vector.\n\t * @param {quat} b The second vector.\n\t * @returns {Boolean} True if the vectors are equal, false otherwise.\n\t */\n\tquat.equals = vec4.equals;\n\n\tmodule.exports = quat;\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE. */\n\n\tvar glMatrix = __webpack_require__(1);\n\n\t/**\n\t * @class 3 Dimensional Vector\n\t * @name vec3\n\t */\n\tvar vec3 = {};\n\n\t/**\n\t * Creates a new, empty vec3\n\t *\n\t * @returns {vec3} a new 3D vector\n\t */\n\tvec3.create = function() {\n\t var out = new glMatrix.ARRAY_TYPE(3);\n\t out[0] = 0;\n\t out[1] = 0;\n\t out[2] = 0;\n\t return out;\n\t};\n\n\t/**\n\t * Creates a new vec3 initialized with values from an existing vector\n\t *\n\t * @param {vec3} a vector to clone\n\t * @returns {vec3} a new 3D vector\n\t */\n\tvec3.clone = function(a) {\n\t var out = new glMatrix.ARRAY_TYPE(3);\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t return out;\n\t};\n\n\t/**\n\t * Creates a new vec3 initialized with the given values\n\t *\n\t * @param {Number} x X component\n\t * @param {Number} y Y component\n\t * @param {Number} z Z component\n\t * @returns {vec3} a new 3D vector\n\t */\n\tvec3.fromValues = function(x, y, z) {\n\t var out = new glMatrix.ARRAY_TYPE(3);\n\t out[0] = x;\n\t out[1] = y;\n\t out[2] = z;\n\t return out;\n\t};\n\n\t/**\n\t * Copy the values from one vec3 to another\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the source vector\n\t * @returns {vec3} out\n\t */\n\tvec3.copy = function(out, a) {\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t return out;\n\t};\n\n\t/**\n\t * Set the components of a vec3 to the given values\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {Number} x X component\n\t * @param {Number} y Y component\n\t * @param {Number} z Z component\n\t * @returns {vec3} out\n\t */\n\tvec3.set = function(out, x, y, z) {\n\t out[0] = x;\n\t out[1] = y;\n\t out[2] = z;\n\t return out;\n\t};\n\n\t/**\n\t * Adds two vec3's\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @returns {vec3} out\n\t */\n\tvec3.add = function(out, a, b) {\n\t out[0] = a[0] + b[0];\n\t out[1] = a[1] + b[1];\n\t out[2] = a[2] + b[2];\n\t return out;\n\t};\n\n\t/**\n\t * Subtracts vector b from vector a\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @returns {vec3} out\n\t */\n\tvec3.subtract = function(out, a, b) {\n\t out[0] = a[0] - b[0];\n\t out[1] = a[1] - b[1];\n\t out[2] = a[2] - b[2];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link vec3.subtract}\n\t * @function\n\t */\n\tvec3.sub = vec3.subtract;\n\n\t/**\n\t * Multiplies two vec3's\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @returns {vec3} out\n\t */\n\tvec3.multiply = function(out, a, b) {\n\t out[0] = a[0] * b[0];\n\t out[1] = a[1] * b[1];\n\t out[2] = a[2] * b[2];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link vec3.multiply}\n\t * @function\n\t */\n\tvec3.mul = vec3.multiply;\n\n\t/**\n\t * Divides two vec3's\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @returns {vec3} out\n\t */\n\tvec3.divide = function(out, a, b) {\n\t out[0] = a[0] / b[0];\n\t out[1] = a[1] / b[1];\n\t out[2] = a[2] / b[2];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link vec3.divide}\n\t * @function\n\t */\n\tvec3.div = vec3.divide;\n\n\t/**\n\t * Math.ceil the components of a vec3\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a vector to ceil\n\t * @returns {vec3} out\n\t */\n\tvec3.ceil = function (out, a) {\n\t out[0] = Math.ceil(a[0]);\n\t out[1] = Math.ceil(a[1]);\n\t out[2] = Math.ceil(a[2]);\n\t return out;\n\t};\n\n\t/**\n\t * Math.floor the components of a vec3\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a vector to floor\n\t * @returns {vec3} out\n\t */\n\tvec3.floor = function (out, a) {\n\t out[0] = Math.floor(a[0]);\n\t out[1] = Math.floor(a[1]);\n\t out[2] = Math.floor(a[2]);\n\t return out;\n\t};\n\n\t/**\n\t * Returns the minimum of two vec3's\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @returns {vec3} out\n\t */\n\tvec3.min = function(out, a, b) {\n\t out[0] = Math.min(a[0], b[0]);\n\t out[1] = Math.min(a[1], b[1]);\n\t out[2] = Math.min(a[2], b[2]);\n\t return out;\n\t};\n\n\t/**\n\t * Returns the maximum of two vec3's\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @returns {vec3} out\n\t */\n\tvec3.max = function(out, a, b) {\n\t out[0] = Math.max(a[0], b[0]);\n\t out[1] = Math.max(a[1], b[1]);\n\t out[2] = Math.max(a[2], b[2]);\n\t return out;\n\t};\n\n\t/**\n\t * Math.round the components of a vec3\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a vector to round\n\t * @returns {vec3} out\n\t */\n\tvec3.round = function (out, a) {\n\t out[0] = Math.round(a[0]);\n\t out[1] = Math.round(a[1]);\n\t out[2] = Math.round(a[2]);\n\t return out;\n\t};\n\n\t/**\n\t * Scales a vec3 by a scalar number\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the vector to scale\n\t * @param {Number} b amount to scale the vector by\n\t * @returns {vec3} out\n\t */\n\tvec3.scale = function(out, a, b) {\n\t out[0] = a[0] * b;\n\t out[1] = a[1] * b;\n\t out[2] = a[2] * b;\n\t return out;\n\t};\n\n\t/**\n\t * Adds two vec3's after scaling the second operand by a scalar value\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @param {Number} scale the amount to scale b by before adding\n\t * @returns {vec3} out\n\t */\n\tvec3.scaleAndAdd = function(out, a, b, scale) {\n\t out[0] = a[0] + (b[0] * scale);\n\t out[1] = a[1] + (b[1] * scale);\n\t out[2] = a[2] + (b[2] * scale);\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the euclidian distance between two vec3's\n\t *\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @returns {Number} distance between a and b\n\t */\n\tvec3.distance = function(a, b) {\n\t var x = b[0] - a[0],\n\t y = b[1] - a[1],\n\t z = b[2] - a[2];\n\t return Math.sqrt(x*x + y*y + z*z);\n\t};\n\n\t/**\n\t * Alias for {@link vec3.distance}\n\t * @function\n\t */\n\tvec3.dist = vec3.distance;\n\n\t/**\n\t * Calculates the squared euclidian distance between two vec3's\n\t *\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @returns {Number} squared distance between a and b\n\t */\n\tvec3.squaredDistance = function(a, b) {\n\t var x = b[0] - a[0],\n\t y = b[1] - a[1],\n\t z = b[2] - a[2];\n\t return x*x + y*y + z*z;\n\t};\n\n\t/**\n\t * Alias for {@link vec3.squaredDistance}\n\t * @function\n\t */\n\tvec3.sqrDist = vec3.squaredDistance;\n\n\t/**\n\t * Calculates the length of a vec3\n\t *\n\t * @param {vec3} a vector to calculate length of\n\t * @returns {Number} length of a\n\t */\n\tvec3.length = function (a) {\n\t var x = a[0],\n\t y = a[1],\n\t z = a[2];\n\t return Math.sqrt(x*x + y*y + z*z);\n\t};\n\n\t/**\n\t * Alias for {@link vec3.length}\n\t * @function\n\t */\n\tvec3.len = vec3.length;\n\n\t/**\n\t * Calculates the squared length of a vec3\n\t *\n\t * @param {vec3} a vector to calculate squared length of\n\t * @returns {Number} squared length of a\n\t */\n\tvec3.squaredLength = function (a) {\n\t var x = a[0],\n\t y = a[1],\n\t z = a[2];\n\t return x*x + y*y + z*z;\n\t};\n\n\t/**\n\t * Alias for {@link vec3.squaredLength}\n\t * @function\n\t */\n\tvec3.sqrLen = vec3.squaredLength;\n\n\t/**\n\t * Negates the components of a vec3\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a vector to negate\n\t * @returns {vec3} out\n\t */\n\tvec3.negate = function(out, a) {\n\t out[0] = -a[0];\n\t out[1] = -a[1];\n\t out[2] = -a[2];\n\t return out;\n\t};\n\n\t/**\n\t * Returns the inverse of the components of a vec3\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a vector to invert\n\t * @returns {vec3} out\n\t */\n\tvec3.inverse = function(out, a) {\n\t out[0] = 1.0 / a[0];\n\t out[1] = 1.0 / a[1];\n\t out[2] = 1.0 / a[2];\n\t return out;\n\t};\n\n\t/**\n\t * Normalize a vec3\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a vector to normalize\n\t * @returns {vec3} out\n\t */\n\tvec3.normalize = function(out, a) {\n\t var x = a[0],\n\t y = a[1],\n\t z = a[2];\n\t var len = x*x + y*y + z*z;\n\t if (len > 0) {\n\t //TODO: evaluate use of glm_invsqrt here?\n\t len = 1 / Math.sqrt(len);\n\t out[0] = a[0] * len;\n\t out[1] = a[1] * len;\n\t out[2] = a[2] * len;\n\t }\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the dot product of two vec3's\n\t *\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @returns {Number} dot product of a and b\n\t */\n\tvec3.dot = function (a, b) {\n\t return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n\t};\n\n\t/**\n\t * Computes the cross product of two vec3's\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @returns {vec3} out\n\t */\n\tvec3.cross = function(out, a, b) {\n\t var ax = a[0], ay = a[1], az = a[2],\n\t bx = b[0], by = b[1], bz = b[2];\n\n\t out[0] = ay * bz - az * by;\n\t out[1] = az * bx - ax * bz;\n\t out[2] = ax * by - ay * bx;\n\t return out;\n\t};\n\n\t/**\n\t * Performs a linear interpolation between two vec3's\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @param {Number} t interpolation amount between the two inputs\n\t * @returns {vec3} out\n\t */\n\tvec3.lerp = function (out, a, b, t) {\n\t var ax = a[0],\n\t ay = a[1],\n\t az = a[2];\n\t out[0] = ax + t * (b[0] - ax);\n\t out[1] = ay + t * (b[1] - ay);\n\t out[2] = az + t * (b[2] - az);\n\t return out;\n\t};\n\n\t/**\n\t * Performs a hermite interpolation with two control points\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @param {vec3} c the third operand\n\t * @param {vec3} d the fourth operand\n\t * @param {Number} t interpolation amount between the two inputs\n\t * @returns {vec3} out\n\t */\n\tvec3.hermite = function (out, a, b, c, d, t) {\n\t var factorTimes2 = t * t,\n\t factor1 = factorTimes2 * (2 * t - 3) + 1,\n\t factor2 = factorTimes2 * (t - 2) + t,\n\t factor3 = factorTimes2 * (t - 1),\n\t factor4 = factorTimes2 * (3 - 2 * t);\n\t \n\t out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n\t out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n\t out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n\t \n\t return out;\n\t};\n\n\t/**\n\t * Performs a bezier interpolation with two control points\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the first operand\n\t * @param {vec3} b the second operand\n\t * @param {vec3} c the third operand\n\t * @param {vec3} d the fourth operand\n\t * @param {Number} t interpolation amount between the two inputs\n\t * @returns {vec3} out\n\t */\n\tvec3.bezier = function (out, a, b, c, d, t) {\n\t var inverseFactor = 1 - t,\n\t inverseFactorTimesTwo = inverseFactor * inverseFactor,\n\t factorTimes2 = t * t,\n\t factor1 = inverseFactorTimesTwo * inverseFactor,\n\t factor2 = 3 * t * inverseFactorTimesTwo,\n\t factor3 = 3 * factorTimes2 * inverseFactor,\n\t factor4 = factorTimes2 * t;\n\t \n\t out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n\t out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n\t out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n\t \n\t return out;\n\t};\n\n\t/**\n\t * Generates a random vector with the given scale\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n\t * @returns {vec3} out\n\t */\n\tvec3.random = function (out, scale) {\n\t scale = scale || 1.0;\n\n\t var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n\t var z = (glMatrix.RANDOM() * 2.0) - 1.0;\n\t var zScale = Math.sqrt(1.0-z*z) * scale;\n\n\t out[0] = Math.cos(r) * zScale;\n\t out[1] = Math.sin(r) * zScale;\n\t out[2] = z * scale;\n\t return out;\n\t};\n\n\t/**\n\t * Transforms the vec3 with a mat4.\n\t * 4th vector component is implicitly '1'\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the vector to transform\n\t * @param {mat4} m matrix to transform with\n\t * @returns {vec3} out\n\t */\n\tvec3.transformMat4 = function(out, a, m) {\n\t var x = a[0], y = a[1], z = a[2],\n\t w = m[3] * x + m[7] * y + m[11] * z + m[15];\n\t w = w || 1.0;\n\t out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n\t out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n\t out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n\t return out;\n\t};\n\n\t/**\n\t * Transforms the vec3 with a mat3.\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the vector to transform\n\t * @param {mat4} m the 3x3 matrix to transform with\n\t * @returns {vec3} out\n\t */\n\tvec3.transformMat3 = function(out, a, m) {\n\t var x = a[0], y = a[1], z = a[2];\n\t out[0] = x * m[0] + y * m[3] + z * m[6];\n\t out[1] = x * m[1] + y * m[4] + z * m[7];\n\t out[2] = x * m[2] + y * m[5] + z * m[8];\n\t return out;\n\t};\n\n\t/**\n\t * Transforms the vec3 with a quat\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec3} a the vector to transform\n\t * @param {quat} q quaternion to transform with\n\t * @returns {vec3} out\n\t */\n\tvec3.transformQuat = function(out, a, q) {\n\t // benchmarks: http://jsperf.com/quaternion-transform-vec3-implementations\n\n\t var x = a[0], y = a[1], z = a[2],\n\t qx = q[0], qy = q[1], qz = q[2], qw = q[3],\n\n\t // calculate quat * vec\n\t ix = qw * x + qy * z - qz * y,\n\t iy = qw * y + qz * x - qx * z,\n\t iz = qw * z + qx * y - qy * x,\n\t iw = -qx * x - qy * y - qz * z;\n\n\t // calculate result * inverse quat\n\t out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n\t out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n\t out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\t return out;\n\t};\n\n\t/**\n\t * Rotate a 3D vector around the x-axis\n\t * @param {vec3} out The receiving vec3\n\t * @param {vec3} a The vec3 point to rotate\n\t * @param {vec3} b The origin of the rotation\n\t * @param {Number} c The angle of rotation\n\t * @returns {vec3} out\n\t */\n\tvec3.rotateX = function(out, a, b, c){\n\t var p = [], r=[];\n\t\t //Translate point to the origin\n\t\t p[0] = a[0] - b[0];\n\t\t p[1] = a[1] - b[1];\n\t \tp[2] = a[2] - b[2];\n\n\t\t //perform rotation\n\t\t r[0] = p[0];\n\t\t r[1] = p[1]*Math.cos(c) - p[2]*Math.sin(c);\n\t\t r[2] = p[1]*Math.sin(c) + p[2]*Math.cos(c);\n\n\t\t //translate to correct position\n\t\t out[0] = r[0] + b[0];\n\t\t out[1] = r[1] + b[1];\n\t\t out[2] = r[2] + b[2];\n\n\t \treturn out;\n\t};\n\n\t/**\n\t * Rotate a 3D vector around the y-axis\n\t * @param {vec3} out The receiving vec3\n\t * @param {vec3} a The vec3 point to rotate\n\t * @param {vec3} b The origin of the rotation\n\t * @param {Number} c The angle of rotation\n\t * @returns {vec3} out\n\t */\n\tvec3.rotateY = function(out, a, b, c){\n\t \tvar p = [], r=[];\n\t \t//Translate point to the origin\n\t \tp[0] = a[0] - b[0];\n\t \tp[1] = a[1] - b[1];\n\t \tp[2] = a[2] - b[2];\n\t \n\t \t//perform rotation\n\t \tr[0] = p[2]*Math.sin(c) + p[0]*Math.cos(c);\n\t \tr[1] = p[1];\n\t \tr[2] = p[2]*Math.cos(c) - p[0]*Math.sin(c);\n\t \n\t \t//translate to correct position\n\t \tout[0] = r[0] + b[0];\n\t \tout[1] = r[1] + b[1];\n\t \tout[2] = r[2] + b[2];\n\t \n\t \treturn out;\n\t};\n\n\t/**\n\t * Rotate a 3D vector around the z-axis\n\t * @param {vec3} out The receiving vec3\n\t * @param {vec3} a The vec3 point to rotate\n\t * @param {vec3} b The origin of the rotation\n\t * @param {Number} c The angle of rotation\n\t * @returns {vec3} out\n\t */\n\tvec3.rotateZ = function(out, a, b, c){\n\t \tvar p = [], r=[];\n\t \t//Translate point to the origin\n\t \tp[0] = a[0] - b[0];\n\t \tp[1] = a[1] - b[1];\n\t \tp[2] = a[2] - b[2];\n\t \n\t \t//perform rotation\n\t \tr[0] = p[0]*Math.cos(c) - p[1]*Math.sin(c);\n\t \tr[1] = p[0]*Math.sin(c) + p[1]*Math.cos(c);\n\t \tr[2] = p[2];\n\t \n\t \t//translate to correct position\n\t \tout[0] = r[0] + b[0];\n\t \tout[1] = r[1] + b[1];\n\t \tout[2] = r[2] + b[2];\n\t \n\t \treturn out;\n\t};\n\n\t/**\n\t * Perform some operation over an array of vec3s.\n\t *\n\t * @param {Array} a the array of vectors to iterate over\n\t * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n\t * @param {Number} offset Number of elements to skip at the beginning of the array\n\t * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n\t * @param {Function} fn Function to call for each vector in the array\n\t * @param {Object} [arg] additional argument to pass to fn\n\t * @returns {Array} a\n\t * @function\n\t */\n\tvec3.forEach = (function() {\n\t var vec = vec3.create();\n\n\t return function(a, stride, offset, count, fn, arg) {\n\t var i, l;\n\t if(!stride) {\n\t stride = 3;\n\t }\n\n\t if(!offset) {\n\t offset = 0;\n\t }\n\t \n\t if(count) {\n\t l = Math.min((count * stride) + offset, a.length);\n\t } else {\n\t l = a.length;\n\t }\n\n\t for(i = offset; i < l; i += stride) {\n\t vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2];\n\t fn(vec, vec, arg);\n\t a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2];\n\t }\n\t \n\t return a;\n\t };\n\t})();\n\n\t/**\n\t * Get the angle between two 3D vectors\n\t * @param {vec3} a The first operand\n\t * @param {vec3} b The second operand\n\t * @returns {Number} The angle in radians\n\t */\n\tvec3.angle = function(a, b) {\n\t \n\t var tempA = vec3.fromValues(a[0], a[1], a[2]);\n\t var tempB = vec3.fromValues(b[0], b[1], b[2]);\n\t \n\t vec3.normalize(tempA, tempA);\n\t vec3.normalize(tempB, tempB);\n\t \n\t var cosine = vec3.dot(tempA, tempB);\n\n\t if(cosine > 1.0){\n\t return 0;\n\t } else {\n\t return Math.acos(cosine);\n\t } \n\t};\n\n\t/**\n\t * Returns a string representation of a vector\n\t *\n\t * @param {vec3} a vector to represent as a string\n\t * @returns {String} string representation of the vector\n\t */\n\tvec3.str = function (a) {\n\t return 'vec3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ')';\n\t};\n\n\t/**\n\t * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n\t *\n\t * @param {vec3} a The first vector.\n\t * @param {vec3} b The second vector.\n\t * @returns {Boolean} True if the vectors are equal, false otherwise.\n\t */\n\tvec3.exactEquals = function (a, b) {\n\t return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n\t};\n\n\t/**\n\t * Returns whether or not the vectors have approximately the same elements in the same position.\n\t *\n\t * @param {vec3} a The first vector.\n\t * @param {vec3} b The second vector.\n\t * @returns {Boolean} True if the vectors are equal, false otherwise.\n\t */\n\tvec3.equals = function (a, b) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2];\n\t var b0 = b[0], b1 = b[1], b2 = b[2];\n\t return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n\t Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\n\t Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)));\n\t};\n\n\tmodule.exports = vec3;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE. */\n\n\tvar glMatrix = __webpack_require__(1);\n\n\t/**\n\t * @class 4 Dimensional Vector\n\t * @name vec4\n\t */\n\tvar vec4 = {};\n\n\t/**\n\t * Creates a new, empty vec4\n\t *\n\t * @returns {vec4} a new 4D vector\n\t */\n\tvec4.create = function() {\n\t var out = new glMatrix.ARRAY_TYPE(4);\n\t out[0] = 0;\n\t out[1] = 0;\n\t out[2] = 0;\n\t out[3] = 0;\n\t return out;\n\t};\n\n\t/**\n\t * Creates a new vec4 initialized with values from an existing vector\n\t *\n\t * @param {vec4} a vector to clone\n\t * @returns {vec4} a new 4D vector\n\t */\n\tvec4.clone = function(a) {\n\t var out = new glMatrix.ARRAY_TYPE(4);\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[3];\n\t return out;\n\t};\n\n\t/**\n\t * Creates a new vec4 initialized with the given values\n\t *\n\t * @param {Number} x X component\n\t * @param {Number} y Y component\n\t * @param {Number} z Z component\n\t * @param {Number} w W component\n\t * @returns {vec4} a new 4D vector\n\t */\n\tvec4.fromValues = function(x, y, z, w) {\n\t var out = new glMatrix.ARRAY_TYPE(4);\n\t out[0] = x;\n\t out[1] = y;\n\t out[2] = z;\n\t out[3] = w;\n\t return out;\n\t};\n\n\t/**\n\t * Copy the values from one vec4 to another\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a the source vector\n\t * @returns {vec4} out\n\t */\n\tvec4.copy = function(out, a) {\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t out[2] = a[2];\n\t out[3] = a[3];\n\t return out;\n\t};\n\n\t/**\n\t * Set the components of a vec4 to the given values\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {Number} x X component\n\t * @param {Number} y Y component\n\t * @param {Number} z Z component\n\t * @param {Number} w W component\n\t * @returns {vec4} out\n\t */\n\tvec4.set = function(out, x, y, z, w) {\n\t out[0] = x;\n\t out[1] = y;\n\t out[2] = z;\n\t out[3] = w;\n\t return out;\n\t};\n\n\t/**\n\t * Adds two vec4's\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a the first operand\n\t * @param {vec4} b the second operand\n\t * @returns {vec4} out\n\t */\n\tvec4.add = function(out, a, b) {\n\t out[0] = a[0] + b[0];\n\t out[1] = a[1] + b[1];\n\t out[2] = a[2] + b[2];\n\t out[3] = a[3] + b[3];\n\t return out;\n\t};\n\n\t/**\n\t * Subtracts vector b from vector a\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a the first operand\n\t * @param {vec4} b the second operand\n\t * @returns {vec4} out\n\t */\n\tvec4.subtract = function(out, a, b) {\n\t out[0] = a[0] - b[0];\n\t out[1] = a[1] - b[1];\n\t out[2] = a[2] - b[2];\n\t out[3] = a[3] - b[3];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link vec4.subtract}\n\t * @function\n\t */\n\tvec4.sub = vec4.subtract;\n\n\t/**\n\t * Multiplies two vec4's\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a the first operand\n\t * @param {vec4} b the second operand\n\t * @returns {vec4} out\n\t */\n\tvec4.multiply = function(out, a, b) {\n\t out[0] = a[0] * b[0];\n\t out[1] = a[1] * b[1];\n\t out[2] = a[2] * b[2];\n\t out[3] = a[3] * b[3];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link vec4.multiply}\n\t * @function\n\t */\n\tvec4.mul = vec4.multiply;\n\n\t/**\n\t * Divides two vec4's\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a the first operand\n\t * @param {vec4} b the second operand\n\t * @returns {vec4} out\n\t */\n\tvec4.divide = function(out, a, b) {\n\t out[0] = a[0] / b[0];\n\t out[1] = a[1] / b[1];\n\t out[2] = a[2] / b[2];\n\t out[3] = a[3] / b[3];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link vec4.divide}\n\t * @function\n\t */\n\tvec4.div = vec4.divide;\n\n\t/**\n\t * Math.ceil the components of a vec4\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a vector to ceil\n\t * @returns {vec4} out\n\t */\n\tvec4.ceil = function (out, a) {\n\t out[0] = Math.ceil(a[0]);\n\t out[1] = Math.ceil(a[1]);\n\t out[2] = Math.ceil(a[2]);\n\t out[3] = Math.ceil(a[3]);\n\t return out;\n\t};\n\n\t/**\n\t * Math.floor the components of a vec4\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a vector to floor\n\t * @returns {vec4} out\n\t */\n\tvec4.floor = function (out, a) {\n\t out[0] = Math.floor(a[0]);\n\t out[1] = Math.floor(a[1]);\n\t out[2] = Math.floor(a[2]);\n\t out[3] = Math.floor(a[3]);\n\t return out;\n\t};\n\n\t/**\n\t * Returns the minimum of two vec4's\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a the first operand\n\t * @param {vec4} b the second operand\n\t * @returns {vec4} out\n\t */\n\tvec4.min = function(out, a, b) {\n\t out[0] = Math.min(a[0], b[0]);\n\t out[1] = Math.min(a[1], b[1]);\n\t out[2] = Math.min(a[2], b[2]);\n\t out[3] = Math.min(a[3], b[3]);\n\t return out;\n\t};\n\n\t/**\n\t * Returns the maximum of two vec4's\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a the first operand\n\t * @param {vec4} b the second operand\n\t * @returns {vec4} out\n\t */\n\tvec4.max = function(out, a, b) {\n\t out[0] = Math.max(a[0], b[0]);\n\t out[1] = Math.max(a[1], b[1]);\n\t out[2] = Math.max(a[2], b[2]);\n\t out[3] = Math.max(a[3], b[3]);\n\t return out;\n\t};\n\n\t/**\n\t * Math.round the components of a vec4\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a vector to round\n\t * @returns {vec4} out\n\t */\n\tvec4.round = function (out, a) {\n\t out[0] = Math.round(a[0]);\n\t out[1] = Math.round(a[1]);\n\t out[2] = Math.round(a[2]);\n\t out[3] = Math.round(a[3]);\n\t return out;\n\t};\n\n\t/**\n\t * Scales a vec4 by a scalar number\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a the vector to scale\n\t * @param {Number} b amount to scale the vector by\n\t * @returns {vec4} out\n\t */\n\tvec4.scale = function(out, a, b) {\n\t out[0] = a[0] * b;\n\t out[1] = a[1] * b;\n\t out[2] = a[2] * b;\n\t out[3] = a[3] * b;\n\t return out;\n\t};\n\n\t/**\n\t * Adds two vec4's after scaling the second operand by a scalar value\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a the first operand\n\t * @param {vec4} b the second operand\n\t * @param {Number} scale the amount to scale b by before adding\n\t * @returns {vec4} out\n\t */\n\tvec4.scaleAndAdd = function(out, a, b, scale) {\n\t out[0] = a[0] + (b[0] * scale);\n\t out[1] = a[1] + (b[1] * scale);\n\t out[2] = a[2] + (b[2] * scale);\n\t out[3] = a[3] + (b[3] * scale);\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the euclidian distance between two vec4's\n\t *\n\t * @param {vec4} a the first operand\n\t * @param {vec4} b the second operand\n\t * @returns {Number} distance between a and b\n\t */\n\tvec4.distance = function(a, b) {\n\t var x = b[0] - a[0],\n\t y = b[1] - a[1],\n\t z = b[2] - a[2],\n\t w = b[3] - a[3];\n\t return Math.sqrt(x*x + y*y + z*z + w*w);\n\t};\n\n\t/**\n\t * Alias for {@link vec4.distance}\n\t * @function\n\t */\n\tvec4.dist = vec4.distance;\n\n\t/**\n\t * Calculates the squared euclidian distance between two vec4's\n\t *\n\t * @param {vec4} a the first operand\n\t * @param {vec4} b the second operand\n\t * @returns {Number} squared distance between a and b\n\t */\n\tvec4.squaredDistance = function(a, b) {\n\t var x = b[0] - a[0],\n\t y = b[1] - a[1],\n\t z = b[2] - a[2],\n\t w = b[3] - a[3];\n\t return x*x + y*y + z*z + w*w;\n\t};\n\n\t/**\n\t * Alias for {@link vec4.squaredDistance}\n\t * @function\n\t */\n\tvec4.sqrDist = vec4.squaredDistance;\n\n\t/**\n\t * Calculates the length of a vec4\n\t *\n\t * @param {vec4} a vector to calculate length of\n\t * @returns {Number} length of a\n\t */\n\tvec4.length = function (a) {\n\t var x = a[0],\n\t y = a[1],\n\t z = a[2],\n\t w = a[3];\n\t return Math.sqrt(x*x + y*y + z*z + w*w);\n\t};\n\n\t/**\n\t * Alias for {@link vec4.length}\n\t * @function\n\t */\n\tvec4.len = vec4.length;\n\n\t/**\n\t * Calculates the squared length of a vec4\n\t *\n\t * @param {vec4} a vector to calculate squared length of\n\t * @returns {Number} squared length of a\n\t */\n\tvec4.squaredLength = function (a) {\n\t var x = a[0],\n\t y = a[1],\n\t z = a[2],\n\t w = a[3];\n\t return x*x + y*y + z*z + w*w;\n\t};\n\n\t/**\n\t * Alias for {@link vec4.squaredLength}\n\t * @function\n\t */\n\tvec4.sqrLen = vec4.squaredLength;\n\n\t/**\n\t * Negates the components of a vec4\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a vector to negate\n\t * @returns {vec4} out\n\t */\n\tvec4.negate = function(out, a) {\n\t out[0] = -a[0];\n\t out[1] = -a[1];\n\t out[2] = -a[2];\n\t out[3] = -a[3];\n\t return out;\n\t};\n\n\t/**\n\t * Returns the inverse of the components of a vec4\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a vector to invert\n\t * @returns {vec4} out\n\t */\n\tvec4.inverse = function(out, a) {\n\t out[0] = 1.0 / a[0];\n\t out[1] = 1.0 / a[1];\n\t out[2] = 1.0 / a[2];\n\t out[3] = 1.0 / a[3];\n\t return out;\n\t};\n\n\t/**\n\t * Normalize a vec4\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a vector to normalize\n\t * @returns {vec4} out\n\t */\n\tvec4.normalize = function(out, a) {\n\t var x = a[0],\n\t y = a[1],\n\t z = a[2],\n\t w = a[3];\n\t var len = x*x + y*y + z*z + w*w;\n\t if (len > 0) {\n\t len = 1 / Math.sqrt(len);\n\t out[0] = x * len;\n\t out[1] = y * len;\n\t out[2] = z * len;\n\t out[3] = w * len;\n\t }\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the dot product of two vec4's\n\t *\n\t * @param {vec4} a the first operand\n\t * @param {vec4} b the second operand\n\t * @returns {Number} dot product of a and b\n\t */\n\tvec4.dot = function (a, b) {\n\t return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n\t};\n\n\t/**\n\t * Performs a linear interpolation between two vec4's\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a the first operand\n\t * @param {vec4} b the second operand\n\t * @param {Number} t interpolation amount between the two inputs\n\t * @returns {vec4} out\n\t */\n\tvec4.lerp = function (out, a, b, t) {\n\t var ax = a[0],\n\t ay = a[1],\n\t az = a[2],\n\t aw = a[3];\n\t out[0] = ax + t * (b[0] - ax);\n\t out[1] = ay + t * (b[1] - ay);\n\t out[2] = az + t * (b[2] - az);\n\t out[3] = aw + t * (b[3] - aw);\n\t return out;\n\t};\n\n\t/**\n\t * Generates a random vector with the given scale\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n\t * @returns {vec4} out\n\t */\n\tvec4.random = function (out, scale) {\n\t scale = scale || 1.0;\n\n\t //TODO: This is a pretty awful way of doing this. Find something better.\n\t out[0] = glMatrix.RANDOM();\n\t out[1] = glMatrix.RANDOM();\n\t out[2] = glMatrix.RANDOM();\n\t out[3] = glMatrix.RANDOM();\n\t vec4.normalize(out, out);\n\t vec4.scale(out, out, scale);\n\t return out;\n\t};\n\n\t/**\n\t * Transforms the vec4 with a mat4.\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a the vector to transform\n\t * @param {mat4} m matrix to transform with\n\t * @returns {vec4} out\n\t */\n\tvec4.transformMat4 = function(out, a, m) {\n\t var x = a[0], y = a[1], z = a[2], w = a[3];\n\t out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n\t out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n\t out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n\t out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n\t return out;\n\t};\n\n\t/**\n\t * Transforms the vec4 with a quat\n\t *\n\t * @param {vec4} out the receiving vector\n\t * @param {vec4} a the vector to transform\n\t * @param {quat} q quaternion to transform with\n\t * @returns {vec4} out\n\t */\n\tvec4.transformQuat = function(out, a, q) {\n\t var x = a[0], y = a[1], z = a[2],\n\t qx = q[0], qy = q[1], qz = q[2], qw = q[3],\n\n\t // calculate quat * vec\n\t ix = qw * x + qy * z - qz * y,\n\t iy = qw * y + qz * x - qx * z,\n\t iz = qw * z + qx * y - qy * x,\n\t iw = -qx * x - qy * y - qz * z;\n\n\t // calculate result * inverse quat\n\t out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n\t out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n\t out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\t out[3] = a[3];\n\t return out;\n\t};\n\n\t/**\n\t * Perform some operation over an array of vec4s.\n\t *\n\t * @param {Array} a the array of vectors to iterate over\n\t * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n\t * @param {Number} offset Number of elements to skip at the beginning of the array\n\t * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n\t * @param {Function} fn Function to call for each vector in the array\n\t * @param {Object} [arg] additional argument to pass to fn\n\t * @returns {Array} a\n\t * @function\n\t */\n\tvec4.forEach = (function() {\n\t var vec = vec4.create();\n\n\t return function(a, stride, offset, count, fn, arg) {\n\t var i, l;\n\t if(!stride) {\n\t stride = 4;\n\t }\n\n\t if(!offset) {\n\t offset = 0;\n\t }\n\t \n\t if(count) {\n\t l = Math.min((count * stride) + offset, a.length);\n\t } else {\n\t l = a.length;\n\t }\n\n\t for(i = offset; i < l; i += stride) {\n\t vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2]; vec[3] = a[i+3];\n\t fn(vec, vec, arg);\n\t a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2]; a[i+3] = vec[3];\n\t }\n\t \n\t return a;\n\t };\n\t})();\n\n\t/**\n\t * Returns a string representation of a vector\n\t *\n\t * @param {vec4} a vector to represent as a string\n\t * @returns {String} string representation of the vector\n\t */\n\tvec4.str = function (a) {\n\t return 'vec4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')';\n\t};\n\n\t/**\n\t * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n\t *\n\t * @param {vec4} a The first vector.\n\t * @param {vec4} b The second vector.\n\t * @returns {Boolean} True if the vectors are equal, false otherwise.\n\t */\n\tvec4.exactEquals = function (a, b) {\n\t return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n\t};\n\n\t/**\n\t * Returns whether or not the vectors have approximately the same elements in the same position.\n\t *\n\t * @param {vec4} a The first vector.\n\t * @param {vec4} b The second vector.\n\t * @returns {Boolean} True if the vectors are equal, false otherwise.\n\t */\n\tvec4.equals = function (a, b) {\n\t var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n\t var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n\t return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n\t Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\n\t Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\n\t Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)));\n\t};\n\n\tmodule.exports = vec4;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE. */\n\n\tvar glMatrix = __webpack_require__(1);\n\n\t/**\n\t * @class 2 Dimensional Vector\n\t * @name vec2\n\t */\n\tvar vec2 = {};\n\n\t/**\n\t * Creates a new, empty vec2\n\t *\n\t * @returns {vec2} a new 2D vector\n\t */\n\tvec2.create = function() {\n\t var out = new glMatrix.ARRAY_TYPE(2);\n\t out[0] = 0;\n\t out[1] = 0;\n\t return out;\n\t};\n\n\t/**\n\t * Creates a new vec2 initialized with values from an existing vector\n\t *\n\t * @param {vec2} a vector to clone\n\t * @returns {vec2} a new 2D vector\n\t */\n\tvec2.clone = function(a) {\n\t var out = new glMatrix.ARRAY_TYPE(2);\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t return out;\n\t};\n\n\t/**\n\t * Creates a new vec2 initialized with the given values\n\t *\n\t * @param {Number} x X component\n\t * @param {Number} y Y component\n\t * @returns {vec2} a new 2D vector\n\t */\n\tvec2.fromValues = function(x, y) {\n\t var out = new glMatrix.ARRAY_TYPE(2);\n\t out[0] = x;\n\t out[1] = y;\n\t return out;\n\t};\n\n\t/**\n\t * Copy the values from one vec2 to another\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the source vector\n\t * @returns {vec2} out\n\t */\n\tvec2.copy = function(out, a) {\n\t out[0] = a[0];\n\t out[1] = a[1];\n\t return out;\n\t};\n\n\t/**\n\t * Set the components of a vec2 to the given values\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {Number} x X component\n\t * @param {Number} y Y component\n\t * @returns {vec2} out\n\t */\n\tvec2.set = function(out, x, y) {\n\t out[0] = x;\n\t out[1] = y;\n\t return out;\n\t};\n\n\t/**\n\t * Adds two vec2's\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the first operand\n\t * @param {vec2} b the second operand\n\t * @returns {vec2} out\n\t */\n\tvec2.add = function(out, a, b) {\n\t out[0] = a[0] + b[0];\n\t out[1] = a[1] + b[1];\n\t return out;\n\t};\n\n\t/**\n\t * Subtracts vector b from vector a\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the first operand\n\t * @param {vec2} b the second operand\n\t * @returns {vec2} out\n\t */\n\tvec2.subtract = function(out, a, b) {\n\t out[0] = a[0] - b[0];\n\t out[1] = a[1] - b[1];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link vec2.subtract}\n\t * @function\n\t */\n\tvec2.sub = vec2.subtract;\n\n\t/**\n\t * Multiplies two vec2's\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the first operand\n\t * @param {vec2} b the second operand\n\t * @returns {vec2} out\n\t */\n\tvec2.multiply = function(out, a, b) {\n\t out[0] = a[0] * b[0];\n\t out[1] = a[1] * b[1];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link vec2.multiply}\n\t * @function\n\t */\n\tvec2.mul = vec2.multiply;\n\n\t/**\n\t * Divides two vec2's\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the first operand\n\t * @param {vec2} b the second operand\n\t * @returns {vec2} out\n\t */\n\tvec2.divide = function(out, a, b) {\n\t out[0] = a[0] / b[0];\n\t out[1] = a[1] / b[1];\n\t return out;\n\t};\n\n\t/**\n\t * Alias for {@link vec2.divide}\n\t * @function\n\t */\n\tvec2.div = vec2.divide;\n\n\t/**\n\t * Math.ceil the components of a vec2\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a vector to ceil\n\t * @returns {vec2} out\n\t */\n\tvec2.ceil = function (out, a) {\n\t out[0] = Math.ceil(a[0]);\n\t out[1] = Math.ceil(a[1]);\n\t return out;\n\t};\n\n\t/**\n\t * Math.floor the components of a vec2\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a vector to floor\n\t * @returns {vec2} out\n\t */\n\tvec2.floor = function (out, a) {\n\t out[0] = Math.floor(a[0]);\n\t out[1] = Math.floor(a[1]);\n\t return out;\n\t};\n\n\t/**\n\t * Returns the minimum of two vec2's\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the first operand\n\t * @param {vec2} b the second operand\n\t * @returns {vec2} out\n\t */\n\tvec2.min = function(out, a, b) {\n\t out[0] = Math.min(a[0], b[0]);\n\t out[1] = Math.min(a[1], b[1]);\n\t return out;\n\t};\n\n\t/**\n\t * Returns the maximum of two vec2's\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the first operand\n\t * @param {vec2} b the second operand\n\t * @returns {vec2} out\n\t */\n\tvec2.max = function(out, a, b) {\n\t out[0] = Math.max(a[0], b[0]);\n\t out[1] = Math.max(a[1], b[1]);\n\t return out;\n\t};\n\n\t/**\n\t * Math.round the components of a vec2\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a vector to round\n\t * @returns {vec2} out\n\t */\n\tvec2.round = function (out, a) {\n\t out[0] = Math.round(a[0]);\n\t out[1] = Math.round(a[1]);\n\t return out;\n\t};\n\n\t/**\n\t * Scales a vec2 by a scalar number\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the vector to scale\n\t * @param {Number} b amount to scale the vector by\n\t * @returns {vec2} out\n\t */\n\tvec2.scale = function(out, a, b) {\n\t out[0] = a[0] * b;\n\t out[1] = a[1] * b;\n\t return out;\n\t};\n\n\t/**\n\t * Adds two vec2's after scaling the second operand by a scalar value\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the first operand\n\t * @param {vec2} b the second operand\n\t * @param {Number} scale the amount to scale b by before adding\n\t * @returns {vec2} out\n\t */\n\tvec2.scaleAndAdd = function(out, a, b, scale) {\n\t out[0] = a[0] + (b[0] * scale);\n\t out[1] = a[1] + (b[1] * scale);\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the euclidian distance between two vec2's\n\t *\n\t * @param {vec2} a the first operand\n\t * @param {vec2} b the second operand\n\t * @returns {Number} distance between a and b\n\t */\n\tvec2.distance = function(a, b) {\n\t var x = b[0] - a[0],\n\t y = b[1] - a[1];\n\t return Math.sqrt(x*x + y*y);\n\t};\n\n\t/**\n\t * Alias for {@link vec2.distance}\n\t * @function\n\t */\n\tvec2.dist = vec2.distance;\n\n\t/**\n\t * Calculates the squared euclidian distance between two vec2's\n\t *\n\t * @param {vec2} a the first operand\n\t * @param {vec2} b the second operand\n\t * @returns {Number} squared distance between a and b\n\t */\n\tvec2.squaredDistance = function(a, b) {\n\t var x = b[0] - a[0],\n\t y = b[1] - a[1];\n\t return x*x + y*y;\n\t};\n\n\t/**\n\t * Alias for {@link vec2.squaredDistance}\n\t * @function\n\t */\n\tvec2.sqrDist = vec2.squaredDistance;\n\n\t/**\n\t * Calculates the length of a vec2\n\t *\n\t * @param {vec2} a vector to calculate length of\n\t * @returns {Number} length of a\n\t */\n\tvec2.length = function (a) {\n\t var x = a[0],\n\t y = a[1];\n\t return Math.sqrt(x*x + y*y);\n\t};\n\n\t/**\n\t * Alias for {@link vec2.length}\n\t * @function\n\t */\n\tvec2.len = vec2.length;\n\n\t/**\n\t * Calculates the squared length of a vec2\n\t *\n\t * @param {vec2} a vector to calculate squared length of\n\t * @returns {Number} squared length of a\n\t */\n\tvec2.squaredLength = function (a) {\n\t var x = a[0],\n\t y = a[1];\n\t return x*x + y*y;\n\t};\n\n\t/**\n\t * Alias for {@link vec2.squaredLength}\n\t * @function\n\t */\n\tvec2.sqrLen = vec2.squaredLength;\n\n\t/**\n\t * Negates the components of a vec2\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a vector to negate\n\t * @returns {vec2} out\n\t */\n\tvec2.negate = function(out, a) {\n\t out[0] = -a[0];\n\t out[1] = -a[1];\n\t return out;\n\t};\n\n\t/**\n\t * Returns the inverse of the components of a vec2\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a vector to invert\n\t * @returns {vec2} out\n\t */\n\tvec2.inverse = function(out, a) {\n\t out[0] = 1.0 / a[0];\n\t out[1] = 1.0 / a[1];\n\t return out;\n\t};\n\n\t/**\n\t * Normalize a vec2\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a vector to normalize\n\t * @returns {vec2} out\n\t */\n\tvec2.normalize = function(out, a) {\n\t var x = a[0],\n\t y = a[1];\n\t var len = x*x + y*y;\n\t if (len > 0) {\n\t //TODO: evaluate use of glm_invsqrt here?\n\t len = 1 / Math.sqrt(len);\n\t out[0] = a[0] * len;\n\t out[1] = a[1] * len;\n\t }\n\t return out;\n\t};\n\n\t/**\n\t * Calculates the dot product of two vec2's\n\t *\n\t * @param {vec2} a the first operand\n\t * @param {vec2} b the second operand\n\t * @returns {Number} dot product of a and b\n\t */\n\tvec2.dot = function (a, b) {\n\t return a[0] * b[0] + a[1] * b[1];\n\t};\n\n\t/**\n\t * Computes the cross product of two vec2's\n\t * Note that the cross product must by definition produce a 3D vector\n\t *\n\t * @param {vec3} out the receiving vector\n\t * @param {vec2} a the first operand\n\t * @param {vec2} b the second operand\n\t * @returns {vec3} out\n\t */\n\tvec2.cross = function(out, a, b) {\n\t var z = a[0] * b[1] - a[1] * b[0];\n\t out[0] = out[1] = 0;\n\t out[2] = z;\n\t return out;\n\t};\n\n\t/**\n\t * Performs a linear interpolation between two vec2's\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the first operand\n\t * @param {vec2} b the second operand\n\t * @param {Number} t interpolation amount between the two inputs\n\t * @returns {vec2} out\n\t */\n\tvec2.lerp = function (out, a, b, t) {\n\t var ax = a[0],\n\t ay = a[1];\n\t out[0] = ax + t * (b[0] - ax);\n\t out[1] = ay + t * (b[1] - ay);\n\t return out;\n\t};\n\n\t/**\n\t * Generates a random vector with the given scale\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n\t * @returns {vec2} out\n\t */\n\tvec2.random = function (out, scale) {\n\t scale = scale || 1.0;\n\t var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n\t out[0] = Math.cos(r) * scale;\n\t out[1] = Math.sin(r) * scale;\n\t return out;\n\t};\n\n\t/**\n\t * Transforms the vec2 with a mat2\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the vector to transform\n\t * @param {mat2} m matrix to transform with\n\t * @returns {vec2} out\n\t */\n\tvec2.transformMat2 = function(out, a, m) {\n\t var x = a[0],\n\t y = a[1];\n\t out[0] = m[0] * x + m[2] * y;\n\t out[1] = m[1] * x + m[3] * y;\n\t return out;\n\t};\n\n\t/**\n\t * Transforms the vec2 with a mat2d\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the vector to transform\n\t * @param {mat2d} m matrix to transform with\n\t * @returns {vec2} out\n\t */\n\tvec2.transformMat2d = function(out, a, m) {\n\t var x = a[0],\n\t y = a[1];\n\t out[0] = m[0] * x + m[2] * y + m[4];\n\t out[1] = m[1] * x + m[3] * y + m[5];\n\t return out;\n\t};\n\n\t/**\n\t * Transforms the vec2 with a mat3\n\t * 3rd vector component is implicitly '1'\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the vector to transform\n\t * @param {mat3} m matrix to transform with\n\t * @returns {vec2} out\n\t */\n\tvec2.transformMat3 = function(out, a, m) {\n\t var x = a[0],\n\t y = a[1];\n\t out[0] = m[0] * x + m[3] * y + m[6];\n\t out[1] = m[1] * x + m[4] * y + m[7];\n\t return out;\n\t};\n\n\t/**\n\t * Transforms the vec2 with a mat4\n\t * 3rd vector component is implicitly '0'\n\t * 4th vector component is implicitly '1'\n\t *\n\t * @param {vec2} out the receiving vector\n\t * @param {vec2} a the vector to transform\n\t * @param {mat4} m matrix to transform with\n\t * @returns {vec2} out\n\t */\n\tvec2.transformMat4 = function(out, a, m) {\n\t var x = a[0], \n\t y = a[1];\n\t out[0] = m[0] * x + m[4] * y + m[12];\n\t out[1] = m[1] * x + m[5] * y + m[13];\n\t return out;\n\t};\n\n\t/**\n\t * Perform some operation over an array of vec2s.\n\t *\n\t * @param {Array} a the array of vectors to iterate over\n\t * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n\t * @param {Number} offset Number of elements to skip at the beginning of the array\n\t * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n\t * @param {Function} fn Function to call for each vector in the array\n\t * @param {Object} [arg] additional argument to pass to fn\n\t * @returns {Array} a\n\t * @function\n\t */\n\tvec2.forEach = (function() {\n\t var vec = vec2.create();\n\n\t return function(a, stride, offset, count, fn, arg) {\n\t var i, l;\n\t if(!stride) {\n\t stride = 2;\n\t }\n\n\t if(!offset) {\n\t offset = 0;\n\t }\n\t \n\t if(count) {\n\t l = Math.min((count * stride) + offset, a.length);\n\t } else {\n\t l = a.length;\n\t }\n\n\t for(i = offset; i < l; i += stride) {\n\t vec[0] = a[i]; vec[1] = a[i+1];\n\t fn(vec, vec, arg);\n\t a[i] = vec[0]; a[i+1] = vec[1];\n\t }\n\t \n\t return a;\n\t };\n\t})();\n\n\t/**\n\t * Returns a string representation of a vector\n\t *\n\t * @param {vec2} a vector to represent as a string\n\t * @returns {String} string representation of the vector\n\t */\n\tvec2.str = function (a) {\n\t return 'vec2(' + a[0] + ', ' + a[1] + ')';\n\t};\n\n\t/**\n\t * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n\t *\n\t * @param {vec2} a The first vector.\n\t * @param {vec2} b The second vector.\n\t * @returns {Boolean} True if the vectors are equal, false otherwise.\n\t */\n\tvec2.exactEquals = function (a, b) {\n\t return a[0] === b[0] && a[1] === b[1];\n\t};\n\n\t/**\n\t * Returns whether or not the vectors have approximately the same elements in the same position.\n\t *\n\t * @param {vec2} a The first vector.\n\t * @param {vec2} b The second vector.\n\t * @returns {Boolean} True if the vectors are equal, false otherwise.\n\t */\n\tvec2.equals = function (a, b) {\n\t var a0 = a[0], a1 = a[1];\n\t var b0 = b[0], b1 = b[1];\n\t return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n\t Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)));\n\t};\n\n\tmodule.exports = vec2;\n\n\n/***/ }\n/******/ ])\n});\n;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","const extendConstants = (...constants) => {\n constants.forEach(constant => {\n Object.keys(constant).forEach(key => (constant[constant[key]] = key));\n });\n};\n\nexport const shadingType = {\n SMOOTH: 0,\n FLAT: 1,\n};\nexport const colorType = {\n BUFFER: 0,\n TEXTURE_UV: 1,\n TEXTURE_PROJECTION: 2,\n DISTANCE_MAP: 3,\n MATCAP: 4,\n UNIFORM: 5,\n};\nexport const lineType = {\n SCREEN: 0,\n INSTANCED: 1,\n GENERAL: 2,\n};\nexport const lineColorType = {\n UNIFORM: 0,\n TEXTURE: 1,\n OUTPUT: 2,\n BUFFER: 3,\n};\nexport const stepType = {\n NONE: 0,\n SELECT: 1,\n SMOOTH: 2,\n ERASE: 3,\n TRANSFORM: 4,\n DEFEATURE: 5,\n HEAL_TEXTURE: 6,\n CUSTOM: 7,\n};\nexport const msgType = {\n LOAD_PROJECT : 0,\n ERASE : 2,\n SELECT : 3,\n SMOOTH : 4,\n SET_OBJECT_TRANSFORM : 10,\n SET_OBJECT_VISIBILITY : 11,\n SET_OBJECT_NAME : 12,\n SET_OBJECT_COLOR : 13,\n GROUP_OBJECTS : 15,\n ADD_OBJECT_TO_GROUP : 16,\n REMOVE_OBJECT_FROM_GROUP : 17,\n REMOVE_GROUP : 18,\n CLEAR_SELECTION : 19,\n DUPLICATE_OBJECT : 21,\n SAVE : 22,\n UNDO : 23,\n REDO : 24,\n CLEANUP : 27,\n INVERT_SELECTION : 29,\n SET_OBJECT_LOCK_STATE : 30,\n INIT : 31,\n UPDATE_PROJECT : 37,\n RESET_HISTORY : 38,\n ADJUST_TEXTURE : 39,\n INVERT_NORMALS : 40,\n REMOVE_OBJECT : 41,\n};\nexport const propertyType = {\n OBJECT : 1,\n FRAME : 2,\n GROUP : 3,\n ASSET : 4,\n LEVEL : 5,\n MEASURE : 6,\n PHOTO_GROUP: 7,\n};\nexport const objectType = {\n ANONYM : 0,\n SCAN : 1,\n FUSION : 2,\n SURFELS : 3,\n GROUP : 4,\n CAD : 6,\n POINTCLOUD : 7,\n PHOTO_GROUP : 8,\n LINEAR_MEASURE : 9,\n GEODESIC_MEASURE : 10,\n SECTION : 11,\n DISTANCE_MAP : 12,\n};\nexport const cadType = {\n MODEL : 1,\n CYLINDER : 2,\n CONE: 3,\n TRUNCATED_CONE: 4,\n SPHERE: 5,\n PLANE: 6,\n TORUS: 7,\n FREEFORM: 8,\n UNDEFINED: 9,\n};\nexport const basePlane = {\n XOY: 0,\n YOZ: 1,\n ZOX: 2,\n};\nexport const selectionType = {\n NONE : -1,\n SPHERE : 0,\n CIRCLE : 1,\n RECTANGLE : 2,\n LASSO : 3,\n CUT_OFF_PLANE : 4,\n INVERT : 5,\n CLEAR : 6,\n};\nexport const postEffects = {\n COLOR_BALANCE : 0,\n SHARPNESS : 1,\n GRAIN : 2,\n VIGNETTE : 3,\n};\nexport const fittingMode = {\n EXPAND : 0,\n EXACT : 1,\n ROBUST : 2,\n}\nexport const cadPrimitive = {\n PLANE : 0,\n SPHERE : 1,\n TORUS : 2,\n CYLINDER : 3,\n CONE : 4,\n}\nexport const photoState = {\n DEFAULT : 0,\n HOVERED : 1,\n ACTIVE : 2,\n}\nexport const photoOrientation = {\n DEFAULT : 0,\n MIRROR_HORIZONTAL : 1,\n ROTATION180 : 2,\n MIRROR_VERTICAL : 3,\n ROTATION90_MIRROR_HORIZONTAL : 4,\n ROTATION90 : 5,\n ROTATION270_MIRROR_HORIZONTAL : 6,\n ROTATION270 : 7,\n}\nexport const scanMode = {\n TRIANGLES : 0,\n SURFELS_HIGH : 1,\n SURFELS_MID : 2,\n}\nexport const propertyInitStatus = {\n INCOMPLETE : 0,\n INITIALIZING : 1,\n COMPLETE : 2,\n}\nextendConstants(msgType);\n","import events from \"_src/engine/events\";\nimport StackTrace from \"stacktrace-js\"\n\nconst isDev = process.env.NODE_ENV === \"development\";\nlet _logType;\n\nexport default {\n\n INDIGO: \"color: Indigo;\",\n BLACK: \"color: black;\",\n BLUE: \"color: DodgerBlue;\",\n GREEN: \"color: ForestGreen;\",\n RED: \"color: red;\",\n YELLOW: \"color: yellow;\",\n ORANGE: \"color: orange;\",\n DARK_ORANGE: \"color: darkorange;\",\n\n LOADING_ERROR : 0,\n STORAGE_ERROR : 1,\n INITIALIZATION_ERROR: 2,\n DEVELOPERS_ERROR : 3,\n API_ERROR : 4,\n\n BROWSER_LOG : 0,\n BACKEND_LOG : 1,\n\n setLogType(logType) {\n _logType = logType;\n },\n\n log (message, color = this.BLACK, silent = false) {\n if (!silent) {\n if (_logType === this.BROWSER_LOG) {\n console.log(\"%c\" + message, color);\n } else {\n console.log(message);\n }\n }\n\n events.emit(\"log\", {\n payload: {message, stackTrace: StackTrace.getSync()},\n });\n },\n\n warn (message, color = this.DARK_ORANGE) {\n if (_logType === this.BROWSER_LOG) {\n console.warn(\"%cEngine warning: \" + message, color);\n } else {\n console.warn(\"Engine warning: \" + message);\n }\n\n events.emit(\"warn\", {\n payload: {message, stackTrace: StackTrace.getSync()},\n });\n },\n\n error (type, message) {\n\n if (isDev) {\n console.error(\"Engine error: \", message);\n }\n\n events.emit(\"error\", {\n type,\n payload: {message, stackTrace: StackTrace.getSync()},\n });\n\n }\n\n}\n","/**\n * This module describes application states returned by the \"update\" event\n * @version 0.3\n * @exports src/app_state\n * @namespace Application\n */\n\nimport {shadingType, selectionType, scanMode, objectType} from \"_src/constants\";\nimport { cameraType, MAX_UINT32_ELEMS } from \"_src/engine/constants\";\nimport events from \"_src/engine/events\";\nimport output from \"_src/engine/output\";\n\n/**\n * Object or Group information. Includes most of the fields described [here]{@link https://confluence.artec-group.com:4432/display/WS/Project+JSON+structure}.\n * Additional fields are as follows.\n * @typedef {Object} ObjectInfo\n * @memberof Application\n * @property {MT_SCAN|MT_FUSION|MT_GROUP} type - Type of the object\n * @property {Array} frames - List of frames. Frames have {@link Application.FrameInfo} type. For objects only.\n * @property {Number} numPolygons - Number of polygons. For objects only.\n * @property {Number} numVertices - Number of vertices. For objects only.\n * @property {Number} maxError - The highest error value in scan's frames. For objects only.\n * @property {String} groupID - Id of this object's group.\n */\n\n /**\n * @typedef {Object} FrameInfo\n * @memberof Application\n * @property {string} name - Frame's name\n * @property {Array(3)} color - Color of the frame\n * @property {Boolean} textured - Whether the frame has a texture\n * @property {Number} error - The error value of the frame\n * @property {Number} numPolygons - Number of polygons in this frame\n * @property {Number} numVertices - Number of vertices in this frame\n */\n\n/**\n * Application state generated by the \"update\" event\n * @memberof Application\n * @typedef {Object} State\n * @property {Number} FPS - Current frames per second\n * @property {Boolean} isApplyingHistoryStep - Informs if undo/redo is being applied\n * @property {Boolean} isSaving - Informs if the project is being saved at the moment\n * @property {Boolean} isLoading - Informs if the project is being loading at the moment\n * @property {Boolean} hasLoadingErrors - Informs that project is not fully loaded, http errors have happened\n * @property {Boolean} updatingStates - Informs if the project has objects with being updated state\n * @property {Boolean} editingAllowed - Whether or not application allows any objects' editing\n * @property {Boolean} bboxVisibility - Is bbox visible\n * @property {Boolean} showGrid - Is grid plane visible\n * @property {Boolean} showGridAxes - Are grid axes visible\n * @property {BM_DIFFUSE|BM_TRANSPARENT|BM_FRONTFACE|BM_NONE} backFaceMode - Current backface mode\n * @property {Boolean} lighting - Is lighting enabled\n * @property {Boolean} selectThrough - Is select through enabled\n * @property {Boolean} hasSelectedGeometry - Is any geometry on the scene selected\n * @property {Number} selectionSphereRadius - Radius of the selection sphere\n * @property {Number} selectionCircleRadius - Radius of the selection circle\n * @property {Number} normalsLength - Length of normals\n * @property {Number} xrayEdgeFalloff - Xray edge falloff\n * @property {Number} xrayIntensity - Xray Intensity\n * @property {Number} lightingAngle - Horizontal angle of scene lighting\n * @property {TT_NONE|TT_VIEW|TT_ALIGN|TT_ERASER|TT_SMOOTHER|TT_TRANSFORM|TT_LOD|TT_POSITIONER|TT_MEASUREMENTS|TT_CADFITTER|TT_DEFEATURE|TT_TEXTURE_HEALER||TT_CADPICKER} activeTool - Currently active tool\n * @property {ST_SPHERE|ST_CIRCLE|ST_RECTANGLE|ST_LASSO|ST_NONE} selectionType - Type of selection\n * @property {SM_SELECT|SM_UNSELECT} selectionMode - Selection mode\n * @property {CT_ORTHO|CT_PERSPECTIVE} cameraType - Type of camera\n * @property {CC_TRACKBALL|CC_ORBIT|CC_PHOTO} cameraControl - Type of camera control\n * @property {RM_SOLID|RM_WIREFRAME|RM_POINTS} renderMode - Render mode\n * @property {CM_TEXTURE|CM_SCAN_COLOR|CM_FRAME_COLOR|CM_MAX_ERROR|CM_XRAY} colorMode - Color mode\n * @property {SHT_FLAT|SHT_SMOOTH} shadingType - Type of shading\n * @property {{r, g, b}} wireframeColor - Wireframe color\n * @property {{r, g, b}} backFaceColor - Color of back faces of the scene objects\n * @property {string} hoverOn - ID of the object currently hovered by mouse\n * @property {Number} positionerPointsCount - Number of points currently selected in Positioner manipulator\n * @property {Number} memoryUsage - Total memory size in bytes allocated by geometry on CPU side\n * @property {{leftAlignPoints: Array(), rightAlignPoints: Array()}} alignPoints - Arrays of align Points in screen coordinates\n * @property {Number} hoverWindowOn - ID of the window currently hovered by mouse\n * @property {Number} smoothStrength - Strength of the smooth brush\n * @property {Boolean} showAllFrames - Whether to show all frames or only textured frames\n * @property {Boolean} showNormals - Are object's normals visible\n * @property {Boolean} showViewcube - Is viewcube visible\n * @property {Boolean} enableCameraControls - Are camera controls enabled\n * @property {Boolean} manipulatorIsActive - Is manipulator active\n * @property {Boolean} annotationsEnabled - Whether the annotation mode are enabled\n * @property {SM_NONE|SM_CONCURRENT|SM_BLEND} surfelsFilteringMode - Surfels filtering mode\n * @property {Number} surfelsNoiseSize - Size of surlfes noised points\n * @property {Boolean} GPUTimeDebugEnabled - Whether the GPU frame time debug enabled\n * @property {Boolean} distanceMapMode - Does any distance map displayed\n * @property {Number} measurementType - Type of measurement creating in measurements manipulator\n * @property {Array(Number)|null} photoViewRectangleInternal - Screen coordinates of photo view rectangle or null if photo mode is disabled (for internal usage)\n * @property {Array(Number)} photoFitArea - Screen coordinates of photo fitting area used for photoViewRectangle\n * @property {scanMode.TRIANGLES|scanMode.SURFELS_HIGH|scanMode.SURFELS_MID} scanMode - Scan visualization method\n */\n\nconst CT_ORTHO = cameraType.ORTHO;\nconst CT_PERSPECTIVE = cameraType.PERSPECTIVE;\n\nconst CC_TRACKBALL = 0;\nconst CC_ORBIT = 1;\nconst CC_PHOTO = 2;\n\nconst ST_NONE = selectionType.NONE;\nconst ST_SPHERE = selectionType.SPHERE;\nconst ST_CIRCLE = selectionType.CIRCLE;\nconst ST_RECTANGLE = selectionType.RECTANGLE;\nconst ST_CUT_OFF_PLANE = selectionType.CUT_OFF_PLANE;\nconst ST_LASSO = selectionType.LASSO;\n\nconst SM_SELECT = 0;\nconst SM_UNSELECT = 1;\n\nconst SHT_SMOOTH = shadingType.SMOOTH;\nconst SHT_FLAT = shadingType.FLAT;\n\nconst TT_NONE = -1;\nconst TT_VIEW = 0;\nconst TT_ALIGN = 1;\nconst TT_ERASER = 2;\nconst TT_SMOOTHER = 3;\nconst TT_TRANSFORM = 4;\nconst TT_LOD = 5;\nconst TT_POSITIONER = 6;\nconst TT_DEFEATURE = 7;\nconst TT_TEXTURE_HEALER = 8;\nconst TT_MEASUREMENTS = 9;\nconst TT_CADFITTER = 10;\nconst TT_CADPICKER = 11;\n\nconst RM_SOLID = 0;\nconst RM_WIREFRAME = 1;\nconst RM_POINTS = 2;\n\nconst CM_TEXTURE = 0;\nconst CM_SCAN_COLOR = 1;\nconst CM_FRAME_COLOR = 2;\nconst CM_MAX_ERROR = 3;\nconst CM_XRAY = 4;\n\nconst SM_NONE = 0;\nconst SM_CONCURRENT = 1;\nconst SM_BLEND = 2;\n\nconst GS_OCTREE = 0b00000001;\nconst GS_HALF_EDGE = 0b00000010;\nconst GS_MINMAX = 0b00000100;\nconst GS_DRAW_DEPTH = 0b00001000;\nconst GS_NORMALS = 0b00010000;\n\nconst BM_NONE = 0;\nconst BM_DIFFUSE = 1;\nconst BM_TRANSPARENT = 2;\nconst BM_FRONTFACE = 3;\n\nconst stateValues = new Map();\nconst specificHandlers = new Map();\nspecificHandlers.set(\"isApplyingHistoryStep\", setIsApplyingHistoryStep);\nspecificHandlers.set(\"isSaving\", setIsSaving);\nspecificHandlers.set(\"isLoading\", setIsLoading);\nspecificHandlers.set(\"hasLoadingErrors\", setHasLoadingErrors);\nspecificHandlers.set(\"updatingStates\", setStateUpdateRequired);\nspecificHandlers.set(\"hoverOn\", setHoverOn);\nspecificHandlers.set(\"hoverWindowOn\", setHoverWindowOn);\nspecificHandlers.set(\"cachingObjectsNumber\", addUnloadingObjectsNumber);\n\nconst noRedrawStates = new Set();\nnoRedrawStates.add(\"FPS\");\nnoRedrawStates.add(\"hoverOn\");\nnoRedrawStates.add(\"alignPoints\");\nnoRedrawStates.add(\"hoverWindowOn\");\nnoRedrawStates.add(\"manipulatorIsActive\");\nnoRedrawStates.add(\"memoryUsage\");\nnoRedrawStates.add(\"selectionCircleRadius\");\n\nconst defaultState = {\n \"activeTool\": TT_NONE,\n \"selectionType\": ST_NONE,\n \"selectionMode\": SM_SELECT,\n \"selectionSphereRadius\": 100,\n \"selectionCircleRadius\": 100,\n \"normalsLength\": 25,\n \"cameraType\": CT_PERSPECTIVE,\n \"cameraControl\": CC_TRACKBALL,\n \"renderMode\": RM_SOLID,\n \"colorMode\": CM_TEXTURE,\n \"bboxVisibility\": false,\n \"shadingType\": SHT_FLAT,\n \"xrayEdgeFalloff\": 0.1,\n \"xrayIntensity\": 1.1,\n \"backFaceMode\": BM_DIFFUSE,\n \"lighting\": true,\n \"lightingAngle\": 0.0,\n \"hasSelectedGeometry\": false,\n \"selectThrough\": true,\n \"backFaceColor\": {\"r\": 58 / 255, \"g\": 58 / 255, \"b\": 61 / 255}, // #3A3B3D\n \"wireframeColor\": {\"r\": 0.0, \"g\": 0.0, \"b\": 0.0},\n \"isApplyingHistoryStep\": false,\n \"isSaving\": false,\n \"isLoading\": false,\n \"hasLoadingErrors\": false,\n \"updatingStates\": false,\n \"editingAllowed\": true,\n \"FPS\": 0,\n \"hoverOn\": null,\n \"positionerPointsCount\": 0,\n \"memoryUsage\": 0,\n \"alignPoints\": null,\n \"hoverWindowOn\": null,\n \"smoothStrength\": 0.03,\n \"softwareRenderingWidth\": 1,\n \"softwareRenderingHeight\": 1,\n \"cachingObjectsNumber\" : 0,\n \"showAllFrames\": false,\n \"showGrid\": true,\n \"showGridAxes\": true,\n \"showNormals\": false,\n \"showViewcube\": true,\n \"enableCameraControls\": true,\n \"manipulatorIsActive\": false,\n \"annotationsEnabled\": false,\n \"surfelsFilteringMode\": SM_CONCURRENT,\n \"surfelsNoiseSize\": 1.0,\n \"GPUTimeDebugEnabled\": false,\n \"cadFitterPickingMode\": true,\n \"distanceMapMode\": false,\n \"measurementType\": objectType.LINEAR_MEASURE,\n \"photoViewRectangleInternal\": null,\n \"photoFitArea\": null,\n \"scanMode\": scanMode.SURFELS_HIGH,\n};\n\nfunction clean() {\n for (let key in defaultState) {\n stateValues.set(key, null);\n }\n}\n\nfunction setAndEmit(stateName, stateValue) {\n // NOTE: this check only works for primitive types (e.g. color will be set anyway)\n const currentValue = getStateValue(stateName);\n if (stateValue === Object(stateValue) || currentValue !== stateValue) {\n stateValues.set(stateName, stateValue);\n events.emit(\"update\", {[stateName]: stateValue});\n }\n}\n\nfunction setStateValue(stateName, stateValue) {\n\n if (!noRedrawStates.has(stateName)) {\n events.emit(\"frame_requested\");\n }\n\n if (specificHandlers.has(stateName)) {\n specificHandlers.get(stateName)(stateValue);\n } else if (stateValues.has(stateName)) {\n setAndEmit(stateName, stateValue);\n } else {\n output.error(output.DEVELOPERS_ERROR, `unknown app state: ${stateName}.`);\n }\n}\n\nfunction getStateValue(stateName) {\n if (!stateValues.has(stateName)) {\n output.error(output.DEVELOPERS_ERROR, `unknown app state: ${stateName}.`);\n }\n\n return stateValues.get(stateName);\n}\n\nclean();\n\nexport default {\n\n // camera types\n CT_ORTHO,\n CT_PERSPECTIVE,\n\n // camera control types\n CC_TRACKBALL,\n CC_ORBIT,\n CC_PHOTO,\n\n // rendering modes\n RM_SOLID,\n RM_WIREFRAME,\n RM_POINTS,\n\n // color modes\n CM_TEXTURE,\n CM_SCAN_COLOR,\n CM_FRAME_COLOR,\n CM_MAX_ERROR,\n CM_XRAY,\n\n // surfels filtering modes\n SM_NONE,\n SM_CONCURRENT,\n SM_BLEND,\n\n // selection type\n ST_SPHERE,\n ST_CIRCLE,\n ST_RECTANGLE,\n ST_LASSO,\n ST_CUT_OFF_PLANE,\n ST_NONE,\n\n //selection mode\n SM_SELECT,\n SM_UNSELECT,\n\n // shading type\n SHT_SMOOTH,\n SHT_FLAT,\n\n // tool type\n TT_NONE,\n TT_VIEW,\n TT_ALIGN,\n TT_ERASER,\n TT_SMOOTHER,\n TT_TRANSFORM,\n TT_LOD,\n TT_POSITIONER,\n TT_MEASUREMENTS,\n TT_CADFITTER,\n TT_CADPICKER,\n TT_DEFEATURE,\n TT_TEXTURE_HEALER,\n\n stateFlags : 0,\n GS_OCTREE,\n GS_HALF_EDGE,\n GS_MINMAX,\n GS_DRAW_DEPTH,\n GS_NORMALS,\n\n // backface mode\n BM_NONE,\n BM_DIFFUSE,\n BM_TRANSPARENT,\n BM_FRONTFACE,\n\n init() {\n for (let key in defaultState) {\n setStateValue(key, defaultState[key]);\n }\n },\n\n extractStates() {\n return this.stateFlags;\n },\n\n syncStates(states) {\n this.stateFlags = states;\n },\n\n setState(mask, value) {\n this.stateFlags = value ? this.stateFlags | mask : this.stateFlags & (MAX_UINT32_ELEMS ^ mask);\n events.emit(\"frame_requested\");\n },\n\n getState(mask) {\n return Boolean(this.stateFlags & mask);\n },\n\n setStateValue,\n getStateValue,\n\n cleanup() {\n clean();\n }\n\n}\n\nfunction setIsApplyingHistoryStep(isApplying) {\n setAndEmit(\"isApplyingHistoryStep\", isApplying);\n updateEditingAllowed();\n}\n\nfunction setIsSaving(isSaving) {\n setAndEmit(\"isSaving\", isSaving);\n updateEditingAllowed();\n}\n\nfunction setIsLoading(isLoading) {\n setAndEmit(\"isLoading\", isLoading);\n updateEditingAllowed();\n}\n\nfunction setHasLoadingErrors(hasLoadingErrors) {\n setAndEmit(\"hasLoadingErrors\", hasLoadingErrors);\n updateEditingAllowed();\n}\n\nfunction setStateUpdateRequired(required) {\n setAndEmit(\"updatingStates\", required);\n updateEditingAllowed();\n}\n\nfunction updateEditingAllowed() {\n const editingAllowed = !getStateValue(\"isApplyingHistoryStep\") &&\n !getStateValue(\"isSaving\") &&\n !getStateValue(\"updatingStates\") &&\n !getStateValue(\"hasLoadingErrors\") &&\n !getStateValue(\"isLoading\");\n setAndEmit(\"editingAllowed\", editingAllowed);\n}\n\nfunction setHoverOn(hoverOn) {\n const hoverOff = getStateValue(\"hoverOn\");\n if (hoverOff !== hoverOn) {\n stateValues.set(\"hoverOn\", hoverOn);\n events.emit(\"update\", {\"hoverOn\": hoverOn, \"hoverOff\": hoverOff});\n }\n}\n\nfunction setHoverWindowOn(hoverOn) {\n const hoverOff = getStateValue(\"hoverWindowOn\");\n if (hoverOff !== hoverOn) {\n stateValues.set(\"hoverWindowOn\", hoverOn);\n events.emit(\"update\", {\"hoverWindowOn\": hoverOn, \"hoverWindowOff\": hoverOff});\n }\n}\n\nfunction addUnloadingObjectsNumber(value) {\n const number = getStateValue(\"cachingObjectsNumber\");\n setAndEmit(\"cachingObjectsNumber\", number + value);\n}\n","export enum ECadFormat {\n STEP = 'step',\n STP = 'stp',\n IGES = 'iges',\n IGS = 'igs',\n X_T = 'x_t',\n}\n\nexport const BASE_API_URL = '/api/frontend/v1';\n\nexport const GET = 'GET_';\nexport const POST = 'POST_';\nexport const DELETE = 'DELETE_';\nexport const UPDATE = 'UPDATE_';\nexport const SET = 'SET_';\nexport const CREATE = 'CREATE_';\nexport const MOVE = 'MOVE_';\nexport const TRIGGER = 'TRIGGER_';\nexport const DOWNLOAD = 'DOWNLOAD_';\nexport const SEARCH = 'SEARCH_';\nexport const ADD = 'ADD_';\nexport const START = 'START_';\nexport const CLEAR = 'CLEAR_';\nexport const PAUSE = 'PAUSE_';\nexport const SHOW = 'SHOW_';\nexport const MARK = 'MARK_';\nexport const CLICK = 'CLICK_';\nexport const RECOVER = 'RECOVER_';\nexport const ROLLBACK = 'ROLLBACK';\nexport const UNDO = 'UNDO_';\nexport const REDO = 'REDO_';\nexport const ADJUST = 'ADJUST_';\nexport const EXPORT = 'EXPORT_';\nexport const PATCH = 'PATCH_';\nexport const GROUP = 'GROUP_';\nexport const GROUPS = 'GROUPS_';\nexport const IMPORT = 'IMPORT_';\nexport const COLLAPSED = 'COLLAPSED_';\nexport const READ = 'READ_';\nexport const CHECK = 'CHECK_';\nexport const TRACK = 'TRACK_';\nexport const EDIT = 'EDIT_';\nexport const DUPLICATE = 'DUPLICATE_';\nexport const LOADED = 'LOADED_';\nexport const PROGRESS = 'PROGRESS_';\nexport const COMPLETE = 'COMPLETE_';\nexport const ERROR = 'ERROR_';\nexport const FAILED = 'FAILED_';\nexport const PROCESS = 'PROCESS_';\nexport const ALIGN = 'ALIGN_';\nexport const ORDER = 'ORDER_';\nexport const DRAG = 'DRAG';\nexport const COLOR = 'COLOR_';\nexport const STATUS = 'STATUS_';\nexport const OBJECTS = 'OBJECTS_';\nexport const HISTORY = 'HISTORY_';\nexport const REQUEST = 'REQUEST_';\nexport const TIMEOUTED = 'TIMEOUTED_';\nexport const HIDDENFEATURE = 'HIDDENFEATURE_';\nexport const JOB = 'JOB_';\nexport const TEXTURE = 'TEXTURE_';\nexport const STRUCT = 'STRUCT_';\nexport const UUID = 'UUID_';\nexport const HOVER = 'HOVER_';\nexport const NEW = 'NEW_';\nexport const ANNOTATION = 'ANNOTATION_';\nexport const ANNOTATIONS = 'ANNOTATIONS_';\nexport const ATTACHMENTS = 'ATTACHMENTS_';\nexport const TUTORIAL = 'TUTORIAL_';\nexport const EVENT = 'EVENT_';\nexport const CONTENT = 'CONTENT_';\nexport const LICENSE = 'LICENSE_';\nexport const LOCATION_CHANGE = '@@router/LOCATION_CHANGE';\nexport const DATA_FOR = 'DATA_FOR_';\nexport const WS_ = 'WS_';\nexport const APP = 'APP_';\nexport const USER = 'USER_';\nexport const AVAILABLE = 'AVAILABLE_';\nexport const INSTALLPROMPT = 'INSTALLPROMPT_';\nexport const INSTALLED = 'INSTALLED_';\nexport const CLOSE = 'CLOSE_';\nexport const OPEN = 'OPEN_';\nexport const BAR = 'BAR_';\nexport const TOGGLE = 'TOGGLE_';\nexport const STEP = 'STEP_';\nexport const TAB = 'TAB_';\nexport const EMPTY = 'ENPTY_';\nexport const CONTINUE = 'CONTINUE_';\nexport const RENAME = 'RENAME_';\n\nexport const PROJECTS = 'PROJECTS_';\nexport const PROJECT = 'PROJECT_';\nexport const PRESETS = 'PRESETS_';\nexport const PRESET = 'PRESET_';\nexport const NOTIFICATIONS = 'NOTIFICATIONS_';\nexport const NOTIFICATION = 'NOTIFICATION_';\nexport const BASE = 'BASE_';\nexport const CHUNK = 'CHUNK_';\nexport const ACTION = 'ACTION_';\nexport const ALGORITHMS = 'ALGORITHMS_';\nexport const FEED = 'FEED';\nexport const LINK = 'LINK_';\nexport const BLOCK = 'BLOCK_';\nexport const META = 'META_';\nexport const DATA = 'DATA_';\nexport const ATTACHMENT = 'ATTACHMENT_';\nexport const PACK = 'PACK_';\nexport const COUNTS = 'COUNTS_';\nexport const RECONSTRUCTION = '_RECONSTRUCTION';\nexport const PRICE = '_PRICE';\nexport const TRIAL = '_TRIAL';\nexport const BUYPLAN = '_BUYPLAN';\nexport const EXTRA = '_EXTRA';\nexport const DEMO = '_DEMO';\nexport const ROUTE = 'ROUTE';\nexport const MEASUREMENT = 'MEASUREMENT_';\nexport const DISTANCE = 'DISTANCE_';\n\nexport const SHARE = 'SHARE_';\nexport const UPLOAD = 'UPLOAD_';\nexport const SAVE = 'SAVE_';\nexport const FOLDER = 'FOLDER_';\n\nexport const ACCOUNT = 'ACCOUNT_';\nexport const LOGOUT = 'LOGOUT_';\n\nexport const EDITOR = 'EDITOR_';\nexport const UI = 'UI_';\nexport const MODE = 'MODE_';\nexport const FLIP = 'FLIP_';\nexport const PANELS = 'PANELS_';\nexport const SCENE = 'SCENE_';\nexport const VIEW = 'VIEW_';\nexport const AS = 'AS_';\n\nexport const MAKE_PROJECT_OWN = 'MAKE_PROJECT_OWN';\nexport const RESET_SUPPORT_PROJECT = 'RESET_SUPPORT_PROJECT';\nexport const UPDATE_EMBEDDED_SHARING_IN_PROJECT = 'UPDATE_EMBEDDED_SHARING_IN_PROJECT';\nexport const DELETE_EMBEDDED_SHARING_IN_PROJECT = 'DELETE_EMBEDDED_SHARING_IN_PROJECT';\nexport const UPDATE_EMBEDDED_SHARING_ROLE = 'UPDATE_EMBEDDED_SHARING_ROLE';\nexport const SET_ACTIVE_PHOTO_SET = 'SET_ACTIVE_PHOTO_SET';\nexport const FLUSH_PHOTO_TEXTURING_STATE = 'FLUSH_PHOTO_TEXTURING_STATE';\nexport const SET_PHOTO_VIEW_EVENT_RECT = 'SET_PHOTO_VIEW_EVENT_RECT';\nexport const DELETE_PHOTOS = 'DELETE_PHOTOS';\nexport const TOGGLE_PHOTOS_SORT_BY_NAME = 'TOGGLE_PHOTOS_SORT_BY_NAME';\nexport const TOGGLE_PHOTOS_SORT_BY_REG_ERROR = 'TOGGLE_PHOTOS_SORT_BY_REG_ERROR';\nexport const SET_OPEN_PHOTO_SET_LIST = 'SET_OPEN_PHOTO_SET_LIST';\nexport const SET_PHOTO_LOADING_PROGRESS = 'SET_PHOTO_LOADING_PROGRESS';\nexport const RESET_PHOTO_LOADING_PROGRESS = 'RESET_PHOTO_LOADING_PROGRESS';\n\nexport const UPDATE_WS_PROJECT_CONTENT = 'UPDATE_WS_PROJECT_CONTENT';\nexport const SET_WS_PROJECT_CONTENT = 'SET_WS_PROJECT_CONTENT';\nexport const CLEAR_WS_STATE = 'CLEAR_WS_STATE';\nexport const SET_WS_UPDATE = 'SET_UPDATE_WS_';\nexport const APPLY_INITIAL_WS_SCENE_SETTINGS = 'APPLY_INITIAL_WS_SCENE_SETTINGS';\nexport const ADD_WS_OBJECTS_STUBS = 'ADD_WS_STUB_OBJECT';\nexport const DELETE_WS_OBJECTS_STUBS = 'DELETE_OBJECTS_STUBS';\nexport const HIDE_WS_OBJECTS = 'HIDE_WS_OBJECTS';\nexport const RESTORE_WS_OBJECTS_VISIBILITY = 'RESTORE_WS_OBJECTS_VISIBILITY';\nexport const SAVE_HIDDEN_WS_OBJECTS_IDS = 'SAVE_HIDDEN_WS_OBJECTS_IDS';\nexport const DELETE_SAVED_HIDDEN_WS_OBJECTS_IDS = 'DELETE_SAVED_HIDDEN_WS_OBJECTS_IDS';\nexport const HIDE_VISIBLE_MEASURES = 'HIDE_VISIBLE_MEASURES';\nexport const RESTORE_MEASURES_VISIBILITY = 'RESTORE_MEASURES_VISIBILITY';\nexport const SAVE_HIDDEN_MEASURES = 'SAVE_HIDDEN_MEASURES';\nexport const DELETE_SAVED_HIDDEN_MEASURES = 'DELETE_SAVED_HIDDEN_MEASURES';\n\nexport const SET_WORKSPACE_WIDTH = 'SET_WORKSPACE_WIDTH';\nexport const TOGGLE_WORKSPACE_VISIBILITY = 'TOGGLE_WORKSPACE_VISIBILITY';\nexport const SET_INITIAL_VIEWPORT = 'UPDATE_VIEWPORT';\nexport const SET_VIEWPORT = 'SET_VIEWPORT';\nexport const SET_PHOTO_FIT_AREA = 'SET_PHOTO_FIT_AREA';\nexport const DOWNLOAD_PHOTO_SETS = 'DOWNLOAD_PHOTO_SETS';\nexport const DOWNLOAD_PHOTOS = 'DOWNLOAD_PHOTOS';\n\nexport const CHANGE_NAVIGATION_MODE = 'CHANGE_NAVIGATION_MODE';\nexport const CHANGE_SHORTCUT_ENABLEMENT = 'CHANGE_SHORTCUT_ENABLEMENT';\n\nexport const SET_ACCOUNT = 'SET_ACCOUNT';\n\nexport const SET_HISTORY_JUMP_TARGET = 'SET_HISTORY_JUMP_TARGET';\nexport const HISTORY_JUMP_PERFORMED = 'HISTORY_JUMP_PERFORMED';\n\nexport const SAVE_PROJECT_INFO_PREVIEW = 'SAVE_PROJECT_INFO_PREVIEW';\nexport const SAVE_PROJECT_INFO = 'SAVE_PROJECT_INFO';\n\nexport const LOAD_DATA_ROUTES = {\n PROJECTS: '/projects',\n FOLDER: '/folder_content',\n ACCOUNT: '/account',\n PRESETS: '/presets',\n};\n\nexport const OBJECT_TYPE = {\n FOLDER: 'Folder',\n PROJECT: 'Project',\n};\n\nexport const LOADERS = 'LOADERS';\n\nexport const MODAL = 'MODAL';\nexport const SHAKE_MODAL = 'SHAKE_MODAL';\n\nexport const COLOR_PICKER_PALLETTE = [\n '#EB4F36',\n '#B6D300',\n '#29C4F0',\n '#2F80ED',\n '#3CB54F',\n '#8755FF',\n '#8A5B2B',\n '#D142A0',\n '#FC8B34',\n '#EFC000',\n];\n\nexport const ALIGN_GREY = '#f3f3f3';\n\nexport const EMAIL_REGEXP = /[^@\\s]+@[^@\\s]+/;\n\nexport const CHUNK_SIZE = 5 * 1024 * 1024;\n\nexport const API_STATUS = {\n initial: 'initial',\n loading: 'loading',\n loaded: 'loaded',\n error: 'error',\n} as const;\n\nexport const VIEW_CUBE = {\n normalPosition: {\n width: 150,\n height: 150,\n rightOffset: 160,\n topOffset: 205,\n },\n openMenuPosition: {\n width: 150,\n height: 150,\n rightOffset: 365,\n topOffset: 205,\n },\n hiddenPosition: {\n width: 150,\n height: 150,\n rightOffset: -365,\n topOffset: -205,\n },\n};\n\nexport const PROJECT_STATUS = {\n preparing: 0,\n new: 1,\n uploading: 2,\n uploaded: 3,\n processing: 4,\n processed: 5,\n enqueued_to_destroy: 6,\n failed_to_upload: 8,\n failed_to_convert: 9,\n};\n\nexport const DEVICE_MIN_WIDTH = 1280;\n\nexport const DESTINATION_TYPES = {\n bell: 2,\n bar: 3,\n};\n\nexport const DEBOUNCE_UPDATE_TIME = 300;\n\nexport const LEFT_PANEL_WIDTH = 210;\n\nexport const MAX_RESPONSE_TIME = 2000000000;\n\nexport const JOB_TYPES = {\n run_algorithms: 1,\n patch_project_structure: 2,\n send_events_to_node: 3,\n convert_project: 4,\n adjust_texture: 5,\n duplicate_entities: 6,\n delete_entities: 7,\n create_group: 8,\n manual_align: 9,\n import: 10,\n skyrecon: 11,\n as_history_import: 12,\n};\n\nexport const CONVERTER = {\n AS_TO_WS: 'as_to_ws',\n WS_TO_AS: 'ws_to_as',\n LEO_TO_WS: 'leo_to_ws',\n};\n\nexport const JOB_STATUSES = {\n processed: 5,\n rolled_back: 7,\n};\n\nexport const ASTUDIO_SCANNER_TYPES = {\n LType: 'LargeL',\n MType: 'Eva',\n SType: 'Small',\n Spider: 'Spider',\n Leo: 'Leo',\n Ray: 'Ray',\n Micro: 'Micro',\n};\n\nexport const SNAPSHOT_TYPE = {\n project: 1,\n fusions: 2,\n scans: 3,\n cadobjects: 4,\n point_clouds: 5,\n};\n\nexport const SNAPSHOT_FORMAT = {\n artec_studio: 1,\n scan: 2,\n obj: 3,\n ply: 4,\n stl: 5,\n vrml: 6,\n phobos: 7,\n step: 8,\n iges: 9,\n x_t: 10,\n igs: 11,\n stp: 12,\n ptx: 13,\n xyz: 14,\n btx: 15,\n btxv2: 16,\n btxv3: 17,\n btxv5: 18,\n btxv6: 19,\n usd: 20,\n};\n\nexport const ANNOTATION_STATUS = {\n new: 'new',\n resolved: 'resolved',\n};\n\nexport const IMAGE_TYPES = [\n 'image/jpeg',\n 'image/png',\n 'image/vnd.microsoft.icon',\n 'image/gif',\n 'image/bmp',\n 'image/webp',\n 'image/svg+xml',\n 'image/tiff',\n];\n\nexport const ANNOTATION_RELOAD_TIME = 20000;\n\n// for visited tutorial store\nexport const TUTORIAL_SETTINGS = {\n tutorialVisitedOnce: false,\n tutorialmanual: false, // dnt use camel case here\n};\n\nexport const UI_ELEMENTS = {\n HEADER: 45,\n TOOL: 45,\n LEFT_MENU: 210,\n RIGHT_MENU_WITH_ACTIONS: 257,\n};\n\nexport const TMP_MIGRATE = '_TMP_MIGRATE';\n\nexport enum LICENSE_TYPE {\n Lifetime = 1,\n Subscription = 2,\n}\n\nexport enum ELicenceCodes {\n FREE = 'ac_free',\n STORAGE_200GB = 'ac_200gb',\n STORAGE_200GB_MO = 'ac_200gb_1mo',\n STORAGE_1TB_MO = 'ac_1tb_1mo',\n STORAGE_1TB = 'ac_1tb',\n STORAGE_1TB_5YEARS = 'ac_1tb_5y',\n UNLIMITED = 'ac_qa_unlimited',\n}\n\nexport enum RESOURCE_TYPES {\n Size = 1,\n Tokens = 2,\n}\n\nexport const TRIAL_COOKIE = 'the_trial_product_has_been_successfully_assigned';\n\nexport const DAYS_TILL_EXPIRED = 30;\nexport const DAYS_TILL_DELETED = 90;\nexport const DAYS_TILL_DELETED_ATTENTION = 14;\n\nexport const FREE_LIMIT = 5 * 1024 * 1024 * 1024;\nexport enum MeasureKind {\n Distances,\n Sections,\n Distancemaps,\n}\n\nexport const THR_COLOR = '#00E74E';\n\nexport const WORKSPACE_PLUS_COLUMNS_GAP = 20;\nexport const WORKSPACE_PLUS_PADDINGS = 15 + 15 + 10 + 15; // paddingsRight + paddingLeft + buttonPaddings\nexport const WORKSPACE_PLUS_MIN_WIDTH = 50;\n\nexport const DISCRETE_COLORS = [\n '#002AFF',\n '#0883FF',\n '#22B0FF',\n '#35DFFF',\n '#41F5FF',\n '#F1EE00',\n '#FEC900',\n '#FCA400',\n '#FA7500',\n '#F91000',\n];\n\nexport const GRADIENT_COLORS = ['#002BFF', '#00B2FF', '#00F0FF', '#FAFF00', '#FF8A00', '#FF0000'];\n\nexport const EMPTY_PROJECT_SIZE = 31;\n\nexport const MAX_DESCRIPTION_SIZE = 1000;\n","import FrameBuffer from \"_src/engine/framebuffer\";\nimport primitiveFactory from \"_src/engine/factories/primitive\";\nimport objFactory from \"_src/engine/factories/object\";\nimport {primitiveType, blendFactor} from \"_src/engine/constants\";\n\nimport Pass from \"_src/render_graph/pass\";\nimport CopyShader from \"_src/shaders/copy/copy\";\nimport Camera from \"_src/engine/camera\";\n\nexport default class ResolvePass extends Pass {\n\n constructor() {\n\n super(null);\n\n this.init();\n\n }\n\n init() {\n\n this.shader = new CopyShader({transparent : true});\n this.shader.setSourceBlendFactor(blendFactor.ONE);\n\n this.screenFB = new FrameBuffer(null, null);\n\n }\n\n update(graphsData) {\n\n this.scenes.length = 0;\n\n for (let graphData of graphsData) {\n const screenCamera = new Camera();\n screenCamera.setViewport(graphData.viewport[2], graphData.viewport[3], graphData.viewport[0], graphData.viewport[1]);\n const scene = this._addScene(screenCamera);\n scene.clearedStencil = false;\n scene.clearedColor = this.scenes.length === 1;\n scene.clearedDepth = this.scenes.length === 1;\n\n scene.setFramebuffer(this.screenFB);\n\n const screenPlane = objFactory.createDrawable(this.shader);\n screenPlane.addGeometryChunk(primitiveFactory.create(primitiveType.SCREEN_QUAD));\n scene.add(screenPlane);\n\n screenPlane.setTexture(graphData.colorTexture, 0);\n }\n\n }\n\n}\n","import events from \"_src/engine/events\";\nimport output from \"_src/engine/output\";\nimport minmaxUtils from \"_src/engine/utility/minmax\";\nimport {cameraType} from \"_src/engine/constants\";\nimport {BufferReaderType} from \"_src/client/buffer_reader\";\nimport compat from \"_src/engine/compat\";\nimport {vec3, vec4} from \"_src/libs/gl-matrix\";\nimport workspace from \"_src/workspace\";\nimport selector from \"_src/manipulators/libs/selector\";\nimport ResolvePass from \"_src/render_graph/passes/resolve_pass\";\nimport renderGraph, {RenderGraph} from \"_src/render_graph/render_graph\";\nimport renderGraphManager from \"_src/render_graph/render_graph\";\nimport GPUBufferReader from \"_src/client/buffer_reader\";\nimport {screenUtils} from \"_src/client/utils\";\nimport appState from \"_src/app_state\";\nimport config from \"_src/config\";\nimport controlFactory from \"_src/client/controls/control_factory\";\nimport TrackballControl from \"_src/client/controls/trackball\";\nimport renderer from \"_src/engine/renderer\";\nimport {objectType} from \"_src/constants\";\nimport TargetControl from \"_src/client/controls/target_control\";\n\nconst MAIN = 0;\nlet ALIGNEE = -1;\nlet ALIGNER = -1;\n\nconst _windows = new Map();\nconst _GPUTimeMeasurements = [];\nlet _windowID = 0;\nlet _resolvePass = null;\n\nlet _prevWidth = 1;\nlet _prevHeight = 1;\n\nclass Window {\n\n constructor(viewport, camType = cameraType.PERSPECTIVE) {\n this.objects = [];\n this.id = _windowID;\n this._viewport = vec4.create();\n this.renderGraph = new RenderGraph(this.id === MAIN, camType);\n\n this.bufferReader = new GPUBufferReader(this.renderGraph);\n\n this._active = false;\n\n this.setViewport(viewport);\n\n const workspaceScene = this.renderGraph.getWorkspaceScene();\n const workspaceCamera = workspaceScene.camera;\n const controlType = appState.getStateValue(\"cameraControl\");\n this.setCameraControl(controlFactory.createControl(controlType, workspaceCamera));\n this.cameraControl.setEnabled(appState.getStateValue(\"enableCameraControls\"));\n this.cameraControl.setAngles(Math.PI / 4, Math.PI / 4);\n this.cameraControl.setDefaultPosition([-1,-1,-1,1,1,1]);\n\n this._initClosures();\n this._initEvents();\n\n }\n\n setCameraControl(control) {\n if (this.cameraControl instanceof TrackballControl) {\n this.cameraControl.unregisterRotationIndicator(this.renderGraph.getInterfaceScene());\n }\n this.cameraControl = control;\n if (control instanceof TrackballControl) {\n control.registerRotationIndicator(this.renderGraph.getInterfaceScene());\n }\n }\n\n setViewport(viewport) {\n viewport[0] = Math.round(viewport[0]);\n viewport[1] = Math.round(viewport[1]);\n viewport[2] = Math.round(viewport[2]);\n viewport[3] = Math.round(viewport[3]);\n\n this.renderGraph.resize(viewport[2], viewport[3]);\n vec4.copy(this._viewport, viewport);\n }\n\n toViewportX(windowX) {\n return windowX - this._viewport[0];\n }\n\n toViewportY(windowY) {\n return windowY - this._viewport[1];\n }\n\n getViewport() {\n return this._viewport;\n }\n\n addObject(object) {\n if (this.objects.indexOf(object) === -1) {\n this.objects.push(object);\n }\n }\n\n removeObject(object) {\n const index = this.objects.indexOf(object);\n if (index !== -1) {\n this.objects.splice(index, 1);\n }\n\n for (const scene of [this.renderGraph.getWorkspaceScene(), this.renderGraph.getSurfelsDepthScene(),\n this.renderGraph.getSurfelsAdditiveScene(), this.renderGraph.getPostBlendingScene()]) {\n scene.remove(object.model);\n }\n\n if (object.edgesModel) this.renderGraph.getInterfaceScene().remove(object.edgesModel);\n }\n\n updateObjectsScene() {\n const workspaceScene = this.renderGraph.getWorkspaceScene();\n const interfaceScene = this.renderGraph.getInterfaceScene();\n const surfelsDepthScene = this.renderGraph.getSurfelsDepthScene();\n const surfelsAdditiveScene = this.renderGraph.getSurfelsAdditiveScene();\n const postBlendingScene = this.renderGraph.getPostBlendingScene();\n\n const xRayEnabled = appState.getStateValue(\"colorMode\") === appState.CM_XRAY;\n for (const object of this.objects) {\n if (!(object.type === objectType.SURFELS || object.type === objectType.FUSION || object.type === objectType.SCAN ||\n object.type === objectType.CAD)) {\n continue;\n }\n\n if (!xRayEnabled && (object.model.getOpacity() !== 1.0 || object.type === objectType.CAD && object.isPrimitive())) {\n workspaceScene.remove(object.model);\n surfelsDepthScene.remove(object.model);\n surfelsAdditiveScene.remove(object.model);\n postBlendingScene.add(object.model);\n } else {\n if (object.type === objectType.SURFELS) {\n if (object.model.shader.getSurfelsFiltering() === appState.SM_BLEND) {\n workspaceScene.remove(object.model);\n postBlendingScene.remove(object.model);\n surfelsDepthScene.add(object.model);\n surfelsAdditiveScene.add(object.model);\n } else {\n workspaceScene.add(object.model);\n postBlendingScene.remove(object.model);\n surfelsDepthScene.remove(object.model);\n surfelsAdditiveScene.remove(object.model);\n }\n } else {\n workspaceScene.add(object.model);\n postBlendingScene.remove(object.model);\n }\n }\n\n if (object.edgesModel) interfaceScene.add(object.edgesModel);\n }\n\n const surfelsBlendingEnabled = Boolean(surfelsDepthScene.getChildren().length || surfelsAdditiveScene.getChildren().length);\n const postBlendingEnabled = Boolean(postBlendingScene.getChildren().length);\n\n this.renderGraph.setSurfelsBlendingEnabled(surfelsBlendingEnabled);\n this.renderGraph.setPostBlendingEnabled(postBlendingEnabled);\n }\n\n _initClosures() {\n const _vec3Tmp = vec3.create();\n this._zoomHandler = ({screenX, screenY, delta}) => {\n if (!this.isInViewport(screenX, screenY)) {\n return;\n }\n\n const {x, y} = screenUtils.toScreen(this._viewport, this.renderGraph.getWorkspaceScene().camera.viewport, screenX, screenY);\n this.cameraControl.zoom(delta, x, y);\n this.renderGraph.requestFrame();\n };\n\n this._zoomEndHandler = ({screenX, screenY}) => {\n if (!this.isInViewport(screenX, screenY)) {\n return;\n }\n\n this.bufferReader.dropBuffers();\n events.emit(\"camera_zoom_end\", this.cameraControl.object);\n }\n\n this._controlStartHandler = ({screenX, screenY}) => {\n if (!this.isInViewport(screenX, screenY)) {\n return;\n }\n\n this._setActive(true);\n const camera = this.renderGraph.getWorkspaceScene().camera;\n const {x, y} = screenUtils.toScreen(this.getViewport(), camera.viewport, screenX, screenY);\n this.cameraControl.startRotation(x, y);\n\n events.emit(\"control_move_start\");\n };\n\n this._controlRotateHandler = ({movementX, movementY}) => {\n if (!this._isActive()) {\n return;\n }\n\n const camera = this.renderGraph.getWorkspaceScene().camera;\n const viewport = camera.viewport;\n\n const dx = movementX / viewport[2];\n const dy = movementY / viewport[3];\n\n this.cameraControl.rotate(dx, dy);\n\n this.renderGraph.requestFrame();\n };\n\n this._controlPanHandler = ({movementX, movementY}) => {\n if (!this._isActive()) {\n return;\n }\n\n const camera = this.renderGraph.getWorkspaceScene().camera;\n const viewport = camera.viewport;\n\n const aspect = viewport[2] / viewport[3];\n let dx = movementX / viewport[2];\n let dy = movementY / viewport[3];\n\n dx /= Math.max(1.0 / aspect, 1.0);\n dy /= Math.max(aspect, 1.0);\n\n this.cameraControl.pan(dx, dy);\n\n this.renderGraph.requestFrame();\n };\n\n this._controlEndHandler = () => {\n if (!this._isActive()) {\n return;\n }\n\n this.cameraControl.endRotation();\n this.bufferReader.dropBuffers();\n events.emit(\"control_move_end\", this.cameraControl.object);\n this._setActive(false);\n\n this.renderGraph.requestFrame();\n };\n\n this._controlResetPointHandler = ({screenX, screenY}) => {\n const control = this.cameraControl;\n if (!(control instanceof TargetControl)) {\n return;\n }\n\n const xRayEnabled = appState.getStateValue(\"colorMode\") === appState.CM_XRAY;\n if (xRayEnabled) {\n return;\n }\n\n if (!this.isInViewport(screenX, screenY)) {\n return;\n }\n\n const camera = this.renderGraph.getWorkspaceScene().camera;\n const point = _vec3Tmp;\n this.getPixelWorldPoint(screenX, screenY, camera, point).then(res => {\n if (res) {\n control.setTarget(point, () => {\n this.renderGraph.requestFrame();\n },\n () => {\n this.bufferReader.dropBuffers();\n this.renderGraph.requestFrame();\n });\n control.setTargetVisibility(true);\n\n this.bufferReader.dropBuffers();\n this.renderGraph.requestFrame();\n }\n });\n };\n\n this._mouseMoveHandler = ({screenX, screenY}) => {\n if (this.isInViewport(screenX, screenY)) {\n appState.setStateValue(\"hoverWindowOn\", this.id);\n }\n };\n\n const worldMinmax = new Array(6);\n this._updateNearFar = () => {\n const workspaceScene = this.renderGraph.getWorkspaceScene();\n const photosScene = this.renderGraph.getPhotosScene();\n const surfelsScene = this.renderGraph.getSurfelsDepthScene();\n const postBlendingScene = this.renderGraph.getPostBlendingScene();\n\n minmaxUtils.reset(worldMinmax);\n\n minmaxUtils.expandMinmaxByScene(worldMinmax, workspaceScene);\n minmaxUtils.expandMinmaxByScene(worldMinmax, photosScene);\n minmaxUtils.expandMinmaxByScene(worldMinmax, surfelsScene);\n minmaxUtils.expandMinmaxByScene(worldMinmax, postBlendingScene);\n\n if (!minmaxUtils.isValid(worldMinmax)) {\n minmaxUtils.setDefaultValue(worldMinmax);\n }\n\n const camera = workspaceScene.camera;\n const [near, far] = minmaxUtils.calcNearFarByMinMax(worldMinmax, camera);\n camera.updateNearFar(near, far);\n this.renderGraph.requestFrame();\n };\n\n this.getMinMax = () => {\n return worldMinmax;\n };\n\n this._cameraMoveHandler = (camera) => {\n const workspaceScene = this.renderGraph.getWorkspaceScene();\n const cadsAdditionalScene = this.renderGraph.getCadsAdditionalScene();\n const surfelsDepthScene = this.renderGraph.getSurfelsDepthScene();\n const surfelsAdditiveScene = this.renderGraph.getSurfelsAdditiveScene();\n const postBlendingWorkspaceScene = this.renderGraph.getPostBlendingScene();\n const interfaceScene = this.renderGraph.getInterfaceScene();\n const postBlendingInterfaceScene = this.renderGraph.getPostBlendingInterfaceScene();\n const workspaceCamera = workspaceScene.camera;\n if (camera === workspaceCamera) {\n if (this.cameraControl instanceof TrackballControl) {\n this.cameraControl.updateRotationIndicator();\n }\n this._updateNearFar();\n workspaceScene.updateLights(config.lights);\n surfelsDepthScene.updateLights(config.lights);\n surfelsAdditiveScene.updateLights(config.lights);\n postBlendingWorkspaceScene.updateLights(config.lights);\n interfaceScene.updateLights(config.widgetsLights);\n postBlendingInterfaceScene.updateLights(config.widgetsLights);\n cadsAdditionalScene.updateLights(config.widgetsLights);\n this.renderGraph.getPass(renderGraph.COMPARE_DRAW).getScenes()[0].updateLights(config.lights);\n this.renderGraph.getPass(renderGraph.COMPARE_DRAW).getScenes()[1].updateLights(config.lights);\n }\n };\n\n this._objectsBboxUpdateHandler = (objects) => {\n for (let object of objects) {\n if (this.objects.includes(object)) {\n this._updateNearFar();\n break;\n }\n }\n };\n\n }\n\n _initEvents() {\n\n events.on(\"client_mousemove\", this._mouseMoveHandler);\n\n events.on(\"control_zoom\", this._zoomHandler);\n events.on(\"control_zoom_end\", this._zoomEndHandler);\n events.on(\"control_start\", this._controlStartHandler);\n events.on(\"control_move\", this._controlRotateHandler);\n events.on(\"control_pan\", this._controlPanHandler);\n events.on(\"control_end\", this._controlEndHandler);\n events.on(\"control_set_target\", this._controlResetPointHandler);\n\n events.on(\"camera_move\", this._cameraMoveHandler);\n events.on(\"object_bboxes_updated\", this._objectsBboxUpdateHandler);\n events.on(\"object_visibility_change\", this._updateNearFar);\n\n }\n\n _deInitEvents() {\n\n events.off(\"client_mousemove\", this._mouseMoveHandler);\n\n events.off(\"control_zoom\", this._zoomHandler);\n events.off(\"control_zoom_end\", this._zoomEndHandler);\n events.off(\"control_start\", this._controlStartHandler);\n events.off(\"control_move\", this._controlRotateHandler);\n events.off(\"control_pan\", this._controlPanHandler);\n events.off(\"control_end\", this._controlEndHandler);\n events.off(\"control_set_target\", this._controlResetPointHandler);\n\n events.off(\"camera_move\", this._cameraMoveHandler);\n events.off(\"object_bboxes_updated\", this._objectsBboxUpdateHandler);\n events.off(\"object_visibility_change\", this._updateNearFar);\n\n }\n\n _setActive(active) {\n this._active = active;\n }\n\n _isActive() {\n return this._active;\n }\n\n isInViewport(x, y) {\n return this.isInViewportXY(x, y);\n }\n\n isInViewportXY(windowX, windowY) {\n return windowX >= this._viewport[0] && windowX <= this._viewport[0] + this._viewport[2] &&\n windowY >= this._viewport[1] && windowY <= this._viewport[1] + this._viewport[3];\n }\n\n async getPixelWorldPoint(clientX, clientY, camera, dest, forcedRaycast = false, forcedRead = false) {\n\n if (appState.getState(appState.GS_DRAW_DEPTH) && compat.mrtEnabled && !forcedRaycast) {\n const textureX = this.toViewportX(clientX);\n const textureY = this.toViewportY(clientY);\n\n const pixelDepth = forcedRead ? await this.bufferReader.readPixelGPU(textureX, textureY, BufferReaderType.GENERAL_PURPOSE) :\n await this.bufferReader.readPixelCache(textureX, textureY, BufferReaderType.GENERAL_PURPOSE);\n\n if (pixelDepth < 0.0) {\n return null;\n }\n\n this.bufferReader.depthToWorldSpace(pixelDepth, clientX, clientY, this.getViewport(), camera, dest);\n const pickID = await this.bufferReader.readPixelCache(textureX, textureY, BufferReaderType.OBJECT_ID);\n const object = pickID ? workspace.getObjectByID(pickID) : null;\n\n return {object};\n } else {\n const objects = this.objects.filter(object => workspace.checkIsReady(object) && object.getVisibility());\n const drawableToObject = new Map();\n for (const object of objects) {\n for (const drawable of object.getAllLoadedDrawables()) {\n drawableToObject.set(drawable, object);\n }\n }\n const {x, y} = screenUtils.toScreen(this.getViewport(), camera.viewport, clientX, clientY);\n const res = selector.findClosestIntersection(dest, x, y, camera, drawableToObject.keys());\n if (!res) {\n return null;\n }\n\n const object = drawableToObject.get(res);\n return {object};\n }\n\n }\n\n setBackgroundColor(r,g,b,a) {\n this.renderGraph.getPass(renderGraphManager.BACKGROUND).getMainScene().setClearColor(r,g,b,a);\n }\n\n setBackgroundTexture(texture) {\n this.renderGraph.getPass(renderGraphManager.BACKGROUND).setTexture(texture);\n }\n\n cleanup() {\n this._deInitEvents();\n this.renderGraph.cleanup();\n this.bufferReader.cleanup();\n\n this.objects.length = 0;\n\n }\n\n}\n\nfunction _updateResolvePass() {\n const graphsData = [];\n for (let window of _windows.values()) {\n graphsData.push({\n viewport: window.getViewport(),\n colorTexture: window.renderGraph.getOutputTexture(),\n });\n }\n _resolvePass.update(graphsData);\n}\n\nexport default {\n init() {\n _windowID = 0;\n _resolvePass = new ResolvePass();\n },\n\n createWindow(viewport, camType) {\n _windows.set(_windowID, new Window(viewport, camType));\n _updateResolvePass();\n return _windowID++;\n },\n\n deleteWindow(windowID) {\n if (windowID === 0) {\n output.error(output.API_ERROR, \"Can't delete main window\");\n return;\n }\n\n const window = _windows.get(windowID);\n if (!window) {\n output.error(output.API_ERROR, \"Can't delete non-existent window with id: \\\"\" + windowID + \"\\\"\");\n return;\n }\n\n window.cleanup();\n _windows.delete(windowID);\n _updateResolvePass();\n },\n\n setWindowObjects(objects, windowID) {\n const window = _windows.get(windowID);\n if (!window) {\n output.error(output.API_ERROR, \"Can't set object to non-existent window with id: \\\"\" + windowID + \"\\\"\");\n return;\n }\n\n for (const object of window.objects) {\n window.removeObject(object);\n }\n\n window.objects = objects;\n window.updateObjectsScene();\n\n window.cameraControl.setDefaultPosition(workspace.getBBox(object => objects.includes(object)));\n window.renderGraph.requestFrame();\n window.bufferReader.dropBuffers();\n },\n\n updateWindowViewport(windowID, viewport) {\n const window = _windows.get(windowID);\n if (!window) {\n output.error(output.API_ERROR, \"Can't set viewport to non-existent window with id: \\\"\" + windowID + \"\\\"\");\n return;\n }\n\n window.setViewport(viewport);\n window.cameraControl.setDefaultPosition(workspace.getBBox(object => window.objects.includes(object)));\n window.renderGraph.requestFrame();\n _updateResolvePass();\n window.bufferReader.dropBuffers();\n },\n\n getWindow(id) {\n return _windows.get(id);\n },\n\n update(dt) {\n const gpuTimeDebugEnabled = appState.getStateValue(\"GPUTimeDebugEnabled\");\n for (const window of _windows.values()) {\n if (window.cameraControl) {\n window.cameraControl.update(dt);\n }\n }\n\n const windowsToUpdate = Array.from(_windows.values()).filter(window => window.renderGraph.isFrameRequested());\n if (windowsToUpdate.length === 0) {\n return;\n }\n\n if (gpuTimeDebugEnabled) {\n renderer.startTimeQuery();\n }\n\n for (const window of windowsToUpdate) {\n window.renderGraph.render(dt);\n }\n _resolvePass.render();\n\n if (gpuTimeDebugEnabled) {\n renderer.stopTimeQuery();\n const elapsedNanos = renderer.getTimeQueryResult();\n if (elapsedNanos) {\n const averagedNanos = getAveragedGPUTime(elapsedNanos);\n console.log(\"avg frame time (ms):\", averagedNanos / 1000000);\n }\n }\n\n },\n\n updateWindows() {\n for (let window of _windows.values()) {\n window.renderGraph.requestFrame();\n }\n },\n\n resizeWindows(width, height) {\n width = Math.max(width, 1);\n height = Math.max(height, 1);\n\n const wAspect = width / _prevWidth;\n const hAspect = height / _prevHeight;\n\n let scene = 0;\n for (let window of _windows.values()) {\n const viewport = window.getViewport();\n viewport[0] = Math.round(viewport[0] * wAspect);\n viewport[1] = Math.round(viewport[1] * hAspect);\n viewport[2] = Math.round(viewport[2] * wAspect);\n viewport[3] = Math.round(viewport[3] * hAspect);\n\n window.setViewport(viewport);\n _resolvePass.scenes[scene++].camera.setViewport(viewport[2], viewport[3], viewport[0], viewport[1]);\n window.renderGraph.requestFrame();\n window.bufferReader.dropBuffers();\n }\n\n _prevWidth = width;\n _prevHeight = height;\n },\n\n disableControls() {\n for (let window of _windows.values()) {\n window.cameraControl.setEnabled(false);\n }\n },\n\n enableControls() {\n for (let window of _windows.values()) {\n window.cameraControl.setEnabled(true);\n }\n },\n\n cleanup() {\n for (let window of _windows.values()) {\n window.cleanup();\n }\n\n _windows.clear();\n _windowID = 0;\n _resolvePass = null;\n\n renderGraphManager.cleanup();\n _GPUTimeMeasurements.length = 0;\n },\n\n applyToAllWindows(func) {\n for (const window of _windows.values()) {\n func(window);\n }\n },\n\n MAIN,\n ALIGNEE,\n ALIGNER,\n}\n\nfunction getAveragedGPUTime(newMeasurement) {\n const period = 400;\n\n if (_GPUTimeMeasurements.length === period) {\n _GPUTimeMeasurements.shift();\n }\n _GPUTimeMeasurements.push(newMeasurement);\n\n const sum = _GPUTimeMeasurements.reduce((a, b) => a + b, 0);\n const avg = (sum / _GPUTimeMeasurements.length) || 0;\n\n return avg;\n}\n","let _browserEventsEnabled = false;\n\nexport default {\n standardEvents: [],\n passiveStandardEvents: [],\n\n windowEvents: [\"orientationchange\", \"resize\"],\n\n documentEvents: [\"webkitfullscreenchange\", \"mozfullscreenchange\",\n \"fullscreenchange\", \"MSFullscreenChange\", \"visibilitychange\"],\n listeners: {},\n\n dispatchCb: function(event) {\n this.emit(event.type, event);\n },\n\n initBrowserEvents: function(elem) {\n\n this.standardEvents.forEach(\n (e) => elem.addEventListener(e, this.dispatchCb.bind(this), false)\n );\n\n this.passiveStandardEvents.forEach(\n (e) => elem.addEventListener(e, this.dispatchCb.bind(this), {passive: true})\n );\n\n this.windowEvents.forEach(\n (e) => window.addEventListener(e, this.dispatchCb.bind(this), false)\n );\n\n this.documentEvents.forEach(\n (e) => document.addEventListener(e, this.dispatchCb.bind(this), false)\n );\n\n _browserEventsEnabled = true;\n },\n\n on: function(eventName, listener) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n\n if (this.listeners[eventName].indexOf(listener) === - 1) {\n this.listeners[eventName].push(listener);\n }\n },\n\n off: function(eventName, listener) {\n if (!this.listeners[eventName]) {\n return;\n }\n\n const evListeners = this.listeners[eventName];\n for (var i = 0; i < evListeners.length; i++) {\n if (evListeners[i] == listener) {\n evListeners.splice(i, 1);\n break;\n }\n }\n },\n\n emit: function(eventName, param) {\n\n if (!this.listeners[eventName])\n return;\n\n this.listeners[eventName].forEach((l) => {\n l(param);\n });\n },\n\n cleanup: function(elem) {\n\n if (_browserEventsEnabled) {\n this.standardEvents.forEach(\n (e) => elem.removeEventListener(e, this.dispatchCb.bind(this))\n );\n this.passiveStandardEvents.forEach(\n (e) => elem.removeEventListener(e, this.dispatchCb.bind(this))\n );\n this.windowEvents.forEach(\n (e) => window.removeEventListener(e, this.dispatchCb.bind(this))\n );\n this.documentEvents.forEach(\n (e) => document.removeEventListener(e, this.dispatchCb.bind(this))\n );\n }\n this.listeners = {};\n }\n};\n","import {cadType, objectType} from \"_src/constants\";\nimport ObjectWrapper from \"_src/object_wrapper\";\nimport primitiveFactory from \"_src/engine/factories/primitive\";\nimport {primitiveType} from \"_src/engine/constants\";\n\nexport default class CadWrapper extends ObjectWrapper {\n constructor(params) {\n super(params);\n this.type = objectType.CAD;\n\n this.edgesModel = params.edgesModel !== undefined ? params.edgesModel : null;\n }\n\n isPrimitive() {\n return this.getSubType() !== cadType.MODEL;\n }\n\n getSubType() {\n return this._selfPropertyGetter(\"cadType\");\n }\n\n getModelData() {\n return this._selfPropertyGetter(\"cadData\");\n }\n\n setVisibility(visible) {\n super.setVisibility(visible);\n if (this.edgesModel) this.edgesModel.setVisibility(visible);\n }\n\n setOpacity(opacity) {\n super.setOpacity(opacity);\n if (this.edgesModel) this.edgesModel.setOpacity(opacity);\n }\n\n move(matrix, withPropertyUpdate = false) {\n super.move(matrix, withPropertyUpdate);\n\n if (this.edgesModel) this.edgesModel.setMatrix(matrix);\n }\n\n async _loadFrames(properties, level) {\n await super._loadFrames(properties, level);\n if (!this.edgesModel) return;\n\n for (const edgeFrame of this.frames) {\n for (const edgeChunk of edgeFrame.model.chunks) {\n const points = edgeChunk.geometry.getItemBuffer(\"a_position\");\n const primitives = edgeChunk.geometry.getItemBuffer(\"edges_indices\");\n if (!primitives) continue;\n\n const chunk = primitiveFactory.create(primitiveType.LINE_ARRAY, { points, primitives });\n this.edgesModel.addGeometryChunk(chunk);\n }\n }\n this.edgesModel.setVisibility(this.getVisibility());\n this.edgesModel.setFrustrumCulling(false);\n }\n}\n","import {objectType} from \"_src/constants\";\nimport {pixelBufferType} from \"_src/engine/constants\";\nimport GroupableWrapper from \"_src/groupable_wrapper\";\nimport loader from \"_src/loader\";\nimport output from \"_src/engine/output\";\nimport bufferFactory from \"_src/engine/factories/pixel_buffer\";\nimport loadingProgress from \"_src/loading_progress\";\nimport containersCache from \"_src/engine/packers/containers_cache\";\nimport reformer from \"_src/reformer/reformer\";\n\nclass PhotoWrapper {\n constructor(selfPropertyGetter) {\n this.mip = null;\n this.fullPhoto = null;\n this.fullPhotoPromise = null;\n this._selfPropertyGetter = selfPropertyGetter;\n }\n\n getProperty(name) {\n return this._selfPropertyGetter(name);\n }\n}\n\nexport default class PhotoGroupWrapper extends GroupableWrapper {\n constructor(params) {\n super(params);\n this.type = objectType.PHOTO_GROUP;\n this.photos = new Map();\n this.previewData = {};\n\n this.undistortion = null;\n this._undistortionPromise = null;\n }\n\n getHash() {\n return this._selfPropertyGetter(\"photosSource\")[\"hash\"];\n }\n\n async _loadData() {\n const loadingFiles = new Set();\n const loadingPromises = [];\n for (const photoData of this._selfPropertyGetter(\"photos\")) {\n const photoObject = new PhotoWrapper(name => photoData[name]);\n this.photos.set(photoData[\"id\"], photoObject);\n\n const photoDescriptor = photoData[\"textures\"][0][\"levels\"][1];\n const file = photoDescriptor[\"file\"];\n const id = photoDescriptor[\"index\"];\n const payload = {\n objectID: -1,\n frameID: -1,\n id: id,\n releaseAfterUse: false,\n };\n loadingFiles.add(file);\n\n const photoPath = reformer.getProjectDirectory() + file;\n const promise = loader.load(photoPath, loader.IMAGE, payload).then(image => {\n if (!image) {\n output.error(output.DEVELOPERS_ERROR, \"Can't load photo on path: \" + photoPath);\n return;\n }\n const texture = bufferFactory.create(pixelBufferType.T_RGBA,\n {\n width : image.width,\n height : image.height,\n immutable : true,\n }\n );\n\n texture.initMipMapLevelImage(0, image);\n photoObject.mip = texture;\n\n this.previewData[photoData[\"id\"]] = image.getImage();\n loadingProgress.updatePhotoGroupStatus(this);\n });\n loadingPromises.push(promise);\n }\n\n await Promise.all(loadingPromises);\n\n for (const file of loadingFiles) {\n containersCache.releaseContainer(file);\n }\n }\n\n _unloadData() {\n this.previewData = {};\n this.photos.clear();\n this.undistortion = null;\n this._undistortionPromise = null;\n }\n\n removePhoto(id, dataFiles) {\n const photosData = this._selfPropertyGetter(\"photos\");\n const photoData = photosData.find(photo => photo[\"id\"] === id);\n if (photoData) {\n dataFiles.push(photoData[\"textures\"][0][\"levels\"][0].file);\n dataFiles.push(photoData[\"textures\"][0][\"levels\"][1].file);\n }\n\n this.photos.delete(id);\n this._selfPropertySetter(\"photos\", photosData.filter(photo => photo[\"id\"] !== id));\n this._selfPropertyGetter(\"photosSource\")[\"hash\"] = \"\";\n }\n\n async initPhoto(id, progressCallback) {\n const photo = this.photos.get(id);\n if (photo.fullPhoto) {\n progressCallback(this.getID(), id, 1);\n return photo.fullPhoto;\n }\n\n if (!photo.fullPhotoPromise) photo.fullPhotoPromise = this._initPhoto(id, progressCallback);\n return photo.fullPhotoPromise;\n }\n\n async initUndistortion() {\n if (this.undistortion) return this.undistortion;\n\n if (!this._undistortionPromise) this._undistortionPromise = this._initUndistortion();\n return this._undistortionPromise;\n }\n\n getPhotoFiles(photoIDs) {\n const photos = this._selfPropertyGetter(\"photos\");\n const photoFiles = [];\n for (const photoID of photoIDs) {\n const photoData = photos.find(photo => photo[\"id\"] === photoID);\n const photoFile = photoData ? {\n file: photoData[\"textures\"][0][\"levels\"][0][\"file\"],\n index: photoData[\"textures\"][0][\"levels\"][0][\"index\"]\n } : null;\n photoFiles.push(photoFile);\n }\n\n return photoFiles;\n }\n\n async _initUndistortion() {\n const descriptor = this._selfPropertyGetter(\"undistortionMap\");\n if (!descriptor) return null;\n\n const file = descriptor.getValue(\"file\");\n const index = descriptor.getValue(\"index\");\n const payload = {\n objectID: this.getID(),\n frameID: -1,\n id: index,\n };\n const fullPath = reformer.getProjectDirectory() + file;\n\n let image;\n try {\n image = await loader.load(fullPath, loader.IMAGE, payload);\n if (!image) {\n output.error(output.DEVELOPERS_ERROR, \"Can't load undistortion map on path: \" + fullPath);\n return null;\n }\n } catch (e) {\n output.error(output.DEVELOPERS_ERROR, \"Can't load undistortion map on path: \" + fullPath);\n return null;\n }\n\n const texture = bufferFactory.create(pixelBufferType.T_RG32F,\n {\n width : image.width,\n height : image.height,\n }\n );\n\n texture.initMipMapLevelBuffer(0, image.getBuffer());\n containersCache.releaseContainer(file);\n this.undistortion = texture;\n return this.undistortion;\n }\n\n async _initPhoto(photoID, progressCallback) {\n const photoData = this._selfPropertyGetter(\"photos\").find(photo => photo[\"id\"] === photoID);\n const photoDescriptor = photoData[\"textures\"][0][\"levels\"][0];\n const file = photoDescriptor[\"file\"];\n const index = photoDescriptor[\"index\"];\n const fullPath = reformer.getProjectDirectory() + file;\n\n const loadingCallback = progress => progressCallback(this.getID(), photoID, progress);\n const payload = {\n objectID: this.getID(),\n frameID: photoID,\n id: index,\n fileProgress: loadingCallback,\n };\n\n let image;\n try {\n image = await loader.load(fullPath, loader.IMAGE, payload);\n if (!image) {\n output.error(output.DEVELOPERS_ERROR, \"Can't load photo on path: \" + fullPath);\n return null;\n }\n } catch (error) {\n if (!loader.isLegalError(error)) {\n output.error(output.DEVELOPERS_ERROR, \"Can't load photo: \" + photoID);\n return null;\n }\n }\n const texture = bufferFactory.create(pixelBufferType.T_RGBA,\n {\n width : image.width,\n height : image.height,\n immutable : true,\n }\n );\n\n const buffer = image.getBuffer();\n if (buffer) {\n texture.initMipMapLevelBuffer(0, buffer);\n } else {\n texture.initMipMapLevelImage(0, image);\n }\n\n this.photos.get(photoID).fullPhoto = texture;\n containersCache.releaseContainer(file);\n progressCallback(this.getID(), photoID, 1);\n\n return texture;\n }\n}\n","import {objectType} from \"_src/constants\";\nimport Wrapper from \"_src/wrapper\";\nimport loader from \"_src/loader\";\nimport containersCache from \"_src/engine/packers/containers_cache\";\nimport reformer from \"_src/reformer/reformer\";\n\nclass SelectableWrapper {\n constructor(propertyGetter) {\n this._selfPropertyGetter = propertyGetter;\n }\n\n getVisibility() {\n return this._selfPropertyGetter(\"visible\");\n }\n\n getSelection() {\n return this._selfPropertyGetter(\"selected\");\n }\n\n getProperty(name) {\n return this._selfPropertyGetter(name);\n }\n}\n\nclass ContourWrapper extends SelectableWrapper {\n constructor(propertyGetter) {\n super(propertyGetter);\n this.points = null;\n }\n}\n\nclass SectionWrapper extends SelectableWrapper {\n constructor(propertyGetter) {\n super(propertyGetter);\n this.contours = [];\n }\n}\n\nexport default class SectionMeasureWrapper extends Wrapper {\n constructor(params) {\n super(params);\n this.type = objectType.SECTION;\n this.sections = [];\n }\n\n getSelection() {\n return this._selfPropertyGetter(\"selected\");\n }\n\n setSelection(selected) {\n this._selfPropertySetter(\"selected\", selected);\n }\n\n getHash() {\n return this._selfPropertyGetter(\"geometriesSource\")[\"hash\"];\n }\n\n async _loadData() {\n const loadingFiles = new Set();\n const loadingPromises = [];\n for (const sectionData of this._selfPropertyGetter(\"geometries\")) {\n const sectionWrapper = new SectionWrapper(name => sectionData[name]);\n\n const contoursData = sectionData[\"contours\"];\n for (const contourData of contoursData) {\n const file = contourData[\"file\"];\n const index = contourData[\"index\"];\n const payload = {\n objectID: this.getID(),\n frameID: -1,\n id: index,\n };\n loadingFiles.add(file);\n\n const contourWrapper = new ContourWrapper(name => contourData[name]);\n const promise = await loader.load(reformer.getProjectDirectory() + file, loader.GEOMETRY, payload).then(geometry => {\n contourWrapper.points = geometry.getItemBuffer(\"a_position\");\n });\n loadingPromises.push(promise);\n sectionWrapper.contours.push(contourWrapper);\n }\n\n this.sections.push(sectionWrapper);\n }\n await Promise.all(loadingPromises);\n\n for (const file of loadingFiles) {\n containersCache.releaseContainer(file);\n }\n }\n\n _unloadData() {\n this.sections.length = 0;\n }\n}\n","import minmaxUtils from \"_src/engine/utility/minmax\";\n\nimport { vec3 } from \"_src/libs/gl-matrix\";\n\nconst vec3Tmp = vec3.create();\n\nexport function recalculateBoundings(positionsArray, toWorld, boxes, status) {\n\n const minmaxWorld = minmaxUtils.reset([]);\n\n let chunkCounter = 0;\n while (status.active && chunkCounter < positionsArray.length) {\n\n const positions = positionsArray[chunkCounter];\n\n const minmaxLocal = minmaxUtils.reset([]);\n\n recalculateBounding(positions, toWorld, minmaxWorld, minmaxLocal);\n\n boxes.push(minmaxLocal);\n\n ++chunkCounter;\n }\n\n if (!status.active) {\n return null;\n }\n\n return minmaxWorld;\n\n}\n\nexport function recalculateBounding(positions, toWorld, minmaxWorld, minmaxLocal) {\n\n for (let j = 0; j < positions.length; j+=3) {\n\n const vertex = vec3.set(vec3Tmp, positions[j], positions[j + 1], positions[j + 2]);\n\n minmaxUtils.expandPoint(minmaxLocal, vertex);\n vec3.transformMat4(vertex, vertex, toWorld);\n minmaxUtils.expandPoint(minmaxWorld, vertex);\n\n }\n\n}\n","import minmaxUtils from \"_src/engine/utility/minmax\";\nimport Chunk from \"_src/engine/chunk\";\nimport output from \"_src/engine/output\";\nimport workerManager from \"_src/engine/worker_manager.js\";\nimport { messageType, resultStatus } from \"_src/engine/ipc.js\";\nimport {recalculateBounding} from \"_src/engine/boundings\";\n\nimport Wrapper from \"_src/wrapper\";\n\nimport loader from \"_src/loader\";\nimport appState from \"_src/app_state\";\nimport config from \"_src/config\";\nimport bufferFactory from \"_src/engine/factories/pixel_buffer\";\nimport {\n pixelBufferType,\n bufferType,\n textureWrapper,\n} from \"_src/engine/constants\";\nimport database from \"_database\";\nimport workspace from \"_src/workspace\";\nimport loadingProgress from \"_src/loading_progress\";\nimport compat from \"_src/engine/compat\";\nimport {unCompressDxt} from \"_src/utils\";\nimport {colorType, objectType} from \"_src/constants\";\nimport projectTree from \"_src/reformer/project_tree\";\nimport reformer from \"_src/reformer/reformer\";\n\nexport default class FrameWrapper extends Wrapper {\n\n constructor(params) {\n\n super(params);\n\n const parentID = params.parentID ? params.parentID : \"\";\n this._visibility = false;\n this.model = params.model !== undefined ? params.model : null;\n\n this.textureList = [];\n\n // NOTE: this is just a reference info. It's not intended for use in\n // algorithms\n this.numPolygons = 0;\n this.numVertices = 0;\n\n this._chunksMap = {};\n\n this.cacheID = \"\";\n\n this._loadingCanceled = false;\n this.shouldBeLoaded = false;\n\n this._tid = workerManager.INVALID_ID;\n\n this._cacheUnloadedData = config.cacheUnloadedData;\n\n this.geometryPromise = null;\n\n this.texturePromise = null;\n this.texturesLoaded = false;\n\n this.chunksToBeRemoved = [];\n\n this._selfPropertyGetter = (name) => projectTree._getProperty(parentID).getValue(\"frames\").find(prop => prop.getValue(\"id\") === this.getID()).getValue(name);\n }\n\n getVisibility() {\n return this._visibility;\n }\n\n isKeyFrame() {\n return this._selfPropertyGetter(\"keyframe\");\n }\n\n getRegError() {\n return this._selfPropertyGetter(\"error\");\n }\n\n copyLocalMinmax(minmax) {\n minmaxUtils.copy(this.getLocalMinmax(), minmax);\n }\n\n copyWorldMinmax(minmax) {\n minmaxUtils.copy(this.getWorldMinmax(), minmax);\n }\n\n getWorldMinmax() {\n return this.model.minmaxWorld;\n }\n\n getLocalMinmax() {\n return this.model.minmaxLocal;\n }\n\n expandWorldMinMax(minmax) {\n minmaxUtils.expandMinmax(this.getWorldMinmax(), minmax);\n }\n\n expandLocalMinMax(minmax) {\n minmaxUtils.expandMinmax(this.getLocalMinmax(), minmax);\n }\n\n loadGeometry(property, objectID, level = 0) {\n\n this.loaded = false;\n this._loadingCanceled = false;\n\n if (this.geometryPromise) {\n throw \"Trying to load frame twice.\";\n }\n\n this.geometryPromise = this._loadGeometryLevel(property, level, objectID).then(() => {\n this.geometryPromise = null;\n });\n\n return this.geometryPromise;\n\n }\n\n async unloadData() {\n\n if (this._cacheUnloadedData && this.loaded) {\n await database.putFrameData(this);\n }\n\n workerManager.terminateByID(this._tid);\n\n this.model.cleanupChunks();\n\n this.loaded = false;\n this._loadingCanceled = true;\n\n }\n\n unloadTextures() {\n if (this.hasTextures()) {\n const textureLevel = Math.min(config.scansTextureLevel, this.textureList[0].length - 1);\n const path = reformer.getProjectDirectory() + this.textureList[0][textureLevel][\"path\"];\n const inSliceId = this.textureList[0][textureLevel][\"index\"];\n loader.abortByPathAndId(path, inSliceId);\n this.texturesLoaded = false;\n this.model.cleanupTextures();\n }\n }\n\n isEmpty() {\n return !this.model;\n }\n\n setVisibility(visible) {\n this._visibility = visible;\n this.model.setVisibility(visible);\n }\n\n addTextureInfo(property) {\n const levels = [];\n for (const level of property.getValue(\"levels\")) {\n levels.push({\n path: level.getValue(\"file\"),\n width: level.getValue(\"width\"),\n height: level.getValue(\"height\"),\n channels: level.getValue(\"channels\"),\n index: level.getValue(\"index\"),\n });\n }\n\n this.textureList.push(levels);\n\n }\n\n initChunks(geometries) {\n\n for (let property of geometries) {\n const chunkID = property.getValue(\"id\");\n let chunk = this.model.chunks.find(chunk => chunk.getID() === chunkID);\n if (!chunk) {\n chunk = new Chunk(chunkID);\n chunk.needsReload = true;\n this.addChunk(chunk);\n }\n\n }\n\n }\n\n async _loadGeometryLevel(property, level, objectID) {\n const loadedFromCache = this._cacheUnloadedData && (await database.getFrameData(this));\n if (loadedFromCache) return;\n\n const geometries = property.getValue(\"geometries\").filter(geometryProperty => geometryProperty.getValue(\"levels\").length > level);\n this.initChunks(geometries);\n\n const chunks = this.model.chunks;\n if (chunks.length !== geometries.length) {\n return Promise.reject({ message : `Chunks number mismatch for objectID ${objectID}, frame ${this.getID()}`});\n }\n\n await this.loadChunks(level, objectID, property);\n }\n\n loadChunks(level, objectID, property) {\n\n const promises = [];\n const chunks = this.model.chunks;\n\n for (let i = 0; i < chunks.length; ++i) {\n if (!chunks[i].needsReload) {\n continue;\n }\n promises.push(this.loadChunk(i, level, objectID, property));\n }\n return Promise.all(promises).then(() => {\n if (this._loadingCanceled) {\n this._chunksMap = {};\n this.model.cleanupChunks();\n } else {\n this.loaded = true;\n }\n });\n\n }\n\n loadChunk(index, level, objectID, property) {\n\n const chunk = this.model.chunks[index];\n const geometryProperty = property.getValue(\"geometries\").find(property => property.getValue(\"id\") === chunk.getID());\n\n return this.loadChunkGeometry(chunk, geometryProperty, level, loader.GEOMETRY, objectID).then((geometry) => {\n if (!geometry) {\n // NOTE: we cancel loading for invalid geometries\n this._loadingCanceled = true;\n }\n chunk.needsReload = false;\n loadingProgress.updateObjectStatus(workspace.getObjectByID(objectID), level);\n });\n\n }\n\n loadChunkGeometry(chunk, property, level, loaderType, objectID) {\n const minmax = property.getValue(\"box\");\n const levels = property.getValue(\"levels\");\n const path = reformer.getProjectDirectory() + levels[level].getValue(\"file\");\n const inSliceID = levels[level].getValue(\"index\");\n\n const payload = {\n objectID: objectID,\n frameID: this.getID(),\n id: inSliceID,\n };\n\n return loader.load(path, loaderType, payload).then((geometry) => {\n\n if (!geometry) {\n return null;\n }\n\n this._checkTextureConsistency(geometry, objectID);\n\n if (appState.getState(appState.GS_NORMALS) && !geometry.hasLayoutItem(\"a_normal\")) {\n const count = geometry.getVerticesCount();\n geometry.initEmptyBuffer(\"a_normal\", count, bufferType.F32_3);\n }\n\n if (appState.getStateValue(\"distanceMapMode\") && !geometry.hasLayoutItem(\"a_distance\") && this.model.shader.getDirectiveValue(\"COLOR_TYPE\") === colorType.DISTANCE_MAP) {\n const count = geometry.getVerticesCount();\n geometry.initEmptyBuffer(\"a_distance\", count, bufferType.F32_1);\n }\n\n const rm = appState.getStateValue(\"renderMode\");\n const needsVertexID = rm === appState.RM_WIREFRAME;\n\n this.model.setChunkGeometry(chunk, geometry);\n chunk.updateSelectionMask();\n chunk.updateVertexID(needsVertexID);\n geometry.setBbox(minmax);\n this.model.updateChunkBBox(chunk);\n\n return geometry;\n\n }).catch((errorCode) => {\n if (!loader.isDecimationError(errorCode)) {\n throw errorCode;\n }\n\n return null;\n\n });\n }\n\n _checkTextureConsistency(geometry, objectID) {\n const parentObject = workspace.getObjectByID(objectID);\n if (parentObject.type === objectType.FUSION && this.textureList.length > 0 && !geometry.hasLayoutItem(\"a_uv\")) {\n this.textureList.length = 0;\n parentObject.updateTextureUsage();\n }\n }\n\n loadTexture() {\n if (this.textureList.length > 0) {\n const textureLevel = Math.min(config.scansTextureLevel, this.textureList[0].length - 1);\n return this._loadTexture(0, textureLevel).then((loaded) => {\n if (loaded) {\n this.texturesLoaded = true;\n this.model.properties.enableLinearColorSpace = this.textureList.length === 0;\n }\n });\n }\n return Promise.resolve();\n }\n\n async _loadTexture(slot, level) {\n const path = reformer.getProjectDirectory() + this.textureList[slot][level][\"path\"];\n const inSliceId = this.textureList[slot][level][\"index\"];\n let compression = null;\n\n if (this.texturePromise) {\n await this.texturePromise;\n }\n\n this.texturePromise = loader.load(path, loader.IMAGE, {id: inSliceId}).then((image) => {\n\n if (!image) {\n output.error(output.DEVELOPERS_ERROR, \"Can't load image on path: \" + path);\n return;\n }\n\n let buffer = image.getBuffer();\n if (compression !== null && !compat.textureCompressionEnabled) {\n buffer = unCompressDxt(buffer, image.width, image.height, compression);\n compression = null;\n }\n const textureFormat = compression === null ? pixelBufferType.T_RGBA : pixelBufferType.T_COMPRESSED;\n\n // NOTE: we create a new texture here instead of resize of the older one\n const texture = bufferFactory.create(textureFormat,\n {\n width : image.width,\n height : image.height,\n immutable: true,\n format : compression,\n }\n );\n\n if (buffer) {\n texture.initMipMapLevelBuffer(0, buffer);\n } else {\n texture.initMipMapLevelImage(0, image);\n }\n\n this.model.setTexture(texture, slot);\n\n if (this.model.shader.getDirectiveValue(\"COLOR_TYPE\") === colorType.TEXTURE_UV) {\n const chunks = this.model.chunks;\n for (let j = 0; j < chunks.length; ++j) {\n chunks[j].markAttributeDirty(\"a_uv\");\n }\n }\n return true;\n }).catch((error) => {\n if (!loader.isLegalError(error)) {\n output.error(output.DEVELOPERS_ERROR, \"Can't load image. \" + error);\n }\n return false;\n }).finally(() => {\n this.texturePromise = null;\n });\n\n return this.texturePromise;\n }\n\n abortLoading(object) {\n\n for (const chunk of this.model.chunks) {\n const path = workspace.getChunkPath(object, this.id, chunk.id);\n if (path) loader.abortByPath(path);\n }\n }\n\n checkIsGeometryLoading() {\n return Boolean(this.geometryPromise);\n }\n\n getGeometryLoadingPromise() {\n return this.geometryPromise;\n }\n\n updateBoundingsByTransform() {\n const worldMinmax = minmaxUtils.recomputedFromTransform([], this.getLocalMinmax(), this.model.modelMatrix);\n this.copyWorldMinmax(worldMinmax);\n }\n\n calculateBoundings() {\n\n const minmax = this.getWorldMinmax();\n\n if (this.model.chunks.length === 0) {\n minmaxUtils.reset(minmax);\n return Promise.resolve(minmax);\n }\n\n if (config.useWorkers) {\n return this._calculateBoundingsWorker();\n } else {\n return this._calculateBoundingsMain();\n }\n\n }\n\n hasTextures() {\n return this.textureList.length > 0;\n }\n\n _calculateBoundingsMain() {\n\n const minmax = this.getWorldMinmax();\n const chunks = this.model.chunks;\n\n minmaxUtils.reset(minmax);\n\n const toWorld = this.model.modelMatrix;\n\n const promises = [];\n\n for (let i = 0; i < chunks.length; ++i) {\n\n const geometry = chunks[i].geometry;\n\n const positions = geometry.getItemBuffer(\"a_position\");\n // NOTE: it's a hack. Server side corrupts geometry boxes\n minmaxUtils.reset(geometry.bbox);\n\n promises.push(recalculateBounding(positions, toWorld, minmax, geometry.bbox));\n }\n\n return Promise.all(promises).then(() => {\n return minmax;\n });\n\n }\n\n _calculateBoundingsWorker() {\n\n const message = {};\n const transfer = [];\n\n message[\"indices\"] = {};\n message[\"positions\"] = {};\n\n for (const chunk of this.model.chunks) {\n\n const geometry = chunk.geometry;\n const chunkID = chunk.getID();\n\n const positions = geometry.getItemBuffer(\"a_position\");\n message[\"positions\"][chunkID] = positions;\n const positionsItem = geometry.getLayoutItem(\"a_position\");\n positionsItem.setIsDetached(true);\n transfer.push(positions.buffer);\n\n }\n\n message.type = messageType.RECALCULATE_BOUNDINGS;\n message.toWorld = this.model.modelMatrix;\n\n this._tid = workerManager.generateUniqueID();\n\n return workerManager.sendMessage(message, transfer, this._tid).then(({ data }) => {\n\n minmaxUtils.copy(this.getWorldMinmax(), data.minmax);\n\n for (let id in data[\"positions\"]) {\n\n const chunk = this.getChunkByID(id);\n if (chunk === null) {\n output.error(output.DEVELOPERS_ERROR, \"Can't calculate boundings for incomplete frames.\");\n continue;\n }\n const geometry = chunk.geometry;\n\n minmaxUtils.copy(geometry.bbox, data.boxes[id]);\n\n const positionsItem = geometry.getLayoutItem(\"a_position\");\n positionsItem.setBuffer(data[\"positions\"][id].buffer);\n\n }\n\n return this.getWorldMinmax();\n\n }).catch((error) => {\n if (error.code != resultStatus.TERMINATED) {\n output.error(output.DEVELOPERS_ERROR, \"Can't recalculate boundings. \" + error.message);\n }\n return this.getWorldMinmax();\n });\n\n }\n\n updateNumPolygons() {\n\n this.numPolygons = 0;\n\n const chunks = this.model.chunks;\n for (let i = 0; i < chunks.length; ++i) {\n this.numPolygons += chunks[i].geometry.getTrianglesCount();\n }\n\n }\n\n updateNumVertices() {\n\n this.numVertices = 0;\n\n const chunks = this.model.chunks;\n for (let i = 0; i < chunks.length; ++i) {\n this.numVertices += chunks[i].geometry.getVerticesCount();\n }\n\n }\n\n dropTextures() {\n\n this.textureList.length = 0;\n\n const shader = this.model.shader;\n shader.setDirective(\"COLOR_TYPE\", colorType.UNIFORM);\n\n }\n\n cleanup() {\n\n this.model.cleanup();\n this.model = null;\n this._chunksMap = {};\n\n this.textureList = [];\n this.chunksToBeRemoved.length = 0;\n\n }\n\n getChunkByID(id) {\n return this._chunksMap[id] || null;\n }\n\n addChunk(chunk) {\n this.model.addChunk(chunk);\n this._chunksMap[chunk.getID()] = chunk;\n chunk.color = new Float32Array([Math.random(), Math.random(), Math.random()]);\n }\n\n _deleteChunk(chunk) {\n\n const id = chunk.getID();\n\n delete this._chunksMap[id];\n\n const index = this.model.chunks.indexOf(chunk);\n\n this.model.chunks.splice(index, 1);\n\n chunk.cleanup();\n\n }\n\n deleteChunk(chunk, keepSaveInfo = true) {\n\n this._deleteChunk(chunk);\n\n if (keepSaveInfo) {\n this.chunksToBeRemoved.push(chunk.getID());\n }\n\n }\n\n async initByExternalData(objectData, progressCallback = null) {\n const geometry = objectData.geometry;\n const chunk = new Chunk();\n this.addChunk(chunk);\n this.model.setChunkGeometry(chunk, geometry);\n this.copyLocalMinmax(geometry.bbox);\n this.copyWorldMinmax(geometry.bbox);\n if (config.viewOnlyMode) {\n for (const item of Object.values(geometry.getLayout())) {\n item.scheduleUnload();\n }\n }\n\n const getProgressHandler = (() => {\n const partials = [];\n\n return (() => {\n if (progressCallback === null) return null;\n\n const partialNumber = partials.length;\n partials.push(0);\n\n return function(partialProgress) {\n partials[partialNumber] = partialProgress;\n const sum = partials.reduce((partialSum, a) => partialSum + a, 0);\n progressCallback(sum / partials.length);\n }\n });\n })();\n\n const material = objectData.material;\n const texturingPromises = [];\n const textureList = [material.baseTexture, material.metallicRoughnessTexture];\n for (let i=0; i {\n if (i === 0) this.textureList.push({}); //dummy textureInfo to mark that frame has texture\n return image;\n }).catch(e => {\n output.warn(\"Can't load model texture: \" + e);\n });\n } else {\n loadingPromise = Promise.resolve(null);\n }\n\n const texturingPromise = loadingPromise.then(image => {\n const width = image ? image.width : 1;\n const height = image ? image.height : 1;\n const texture = bufferFactory.create(pixelBufferType.T_RGBA,\n {\n width: width,\n height: height,\n immutable: true,\n flipY: material.flipTexture,\n wrapper: textureWrapper.REPEAT,\n }\n );\n if (image) {\n const buffer = image.getBuffer();\n if (buffer) {\n texture.initMipMapLevelBuffer(0, buffer);\n } else {\n texture.initMipMapLevelImage(0, image);\n }\n }\n\n this.model.setTexture(texture, i);\n });\n\n texturingPromises.push(texturingPromise);\n }\n await Promise.allSettled(texturingPromises);\n this.texturesLoaded = true;\n\n if (progressCallback) progressCallback(1);\n this.loaded = true;\n }\n}\n","import { mat4 } from \"_src/libs/gl-matrix\";\n\nconst ST_LEO = \"Leo\";\nconst ST_SPIDER = \"Spider\";\nconst ST_EVA = \"Eva\";\nconst ST_MICRO = \"Micro\";\nconst ST_RAY = \"Ray\";\n\nconst CT_LUMINERA = \"luminera\";\nconst CT_POINTGRAY = \"pointgray\";\n\nconst MaxPower = 3;\n\nexport default function calcTextureCorrectionMatrix(scanProperty, dest) {\n\n const m = scanProperty.getValue(\"correction\");\n const colorCorrectionMatrix = mat4.set(dest, m[0], m[1], m[2], 0,\n m[3], m[4], m[5], 0,\n m[6], m[7], m[8], 0,\n m[9], m[10],m[11],1);\n const corrCoeff = calcTexturingCorrectionCoefficient(scanProperty);\n\n if (corrCoeff != -1) {\n mat4.multiplyScalar(dest, dest, corrCoeff);\n }\n\n return { colorCorrectionMatrix, corrCoeff };\n\n}\n\nfunction calcTexturingCorrectionCoefficient(scanProperty) {\n\n const scannerType = scanProperty.getValue(\"scannertype\");\n const textureGain = scanProperty.getValue(\"texturegain\");\n const textureCameraType = scanProperty.getValue(\"texturecameratype\");\n\n const calibrationGain = scannerType === ST_LEO ? getCalibrationGainForLeo() :\n getCalibrationGainForArtecTextureCameraType(textureGain, textureCameraType);\n\n const textureBrightnessLevel = getBrightenssLevelForScannerType(scannerType);\n const textureIllumination = scanProperty.getValue(\"textureillumination\");\n\n if (!textureIllumination)\n {\n return -1;\n }\n\n if (scannerType != ST_LEO)\n {\n if (!textureGain || !textureCameraType)\n {\n return -1;\n }\n }\n\n const distanceCorrectionCoeff = 1.0 / (textureIllumination * 1e6);\n\n return calibrationGain * distanceCorrectionCoeff * textureBrightnessLevel;\n\n}\n\nfunction getBrightenssLevelForScannerType(scannertype) {\n\n switch(scannertype) {\n case ST_SPIDER:\n return 70;\n case ST_EVA:\n return 175;\n case ST_MICRO:\n return 110;\n case ST_LEO:\n return 175;\n case ST_RAY:\n return 175;\n default:\n return 175;\n }\n\n}\n\nfunction getCalibrationGainForLeo() {\n //https://bitbucket.artec-group.com:4433/projects/AS/repos/app-astudio/browse/astudio/source/Utils/TexturingCorrectionCoefficient.cpp#17\n return 1.0;\n}\n\nfunction getCalibrationGainForArtecTextureCameraType(textureGain, textureCameraType) {\n\n const Ig =[ // Lumenera: I(g) = k1 * g + k0\n [0.6538, 9.64, 0.0, 0.0],\n\n // PG Fly: I(g) = k3 * g^3 + k2 * g^2 + k1 * g + k0\n [124.99878123, 16.52975347, 1.08349533, 0.0]\n ];\n\n // Default gain that is used for camera callibration\n const calibrationGain = [// Lumenera (value was estimated since no EVA's with this camera type)\n 4.0,\n // PG Fly\n 0.0];\n\n const cameraTypeId = textureCameraType == CT_LUMINERA ? 0 : textureCameraType == CT_POINTGRAY ? 1 : 1;\n\n const g = textureGain || 1.0;\n const g0 = calibrationGain[cameraTypeId];\n\n let calibrationBrightnessLevel = 0.0;\n let estimatedBrightnessLevel = 0.0;\n\n let gPow = 1.0;\n let g0Pow = 1.0;\n\n for (let power = 0; power <= MaxPower; power++)\n {\n estimatedBrightnessLevel += Ig[cameraTypeId][power] * gPow;\n calibrationBrightnessLevel += Ig[cameraTypeId][power] * g0Pow;\n gPow *= g;\n g0Pow *= g0;\n }\n\n return calibrationBrightnessLevel / estimatedBrightnessLevel;\n\n}\n","import workerManager from \"_src/engine/worker_manager\";\nimport { messageType } from \"_src/engine/ipc\";\nimport {DEFAULT_ATTRIBUTES, DEFAULT_NO_INDICES_ATTRIBUTES} from \"_src/engine/utility/attributes\";\nimport workerPool from \"_src/engine/worker_pool\";\nimport {writeChunk} from \"_src/engine/loaders/utils\"\n\n// NOTE: this module is only loaded in nodejs build (see webpack.config.js)\nimport zstdCoder from \"_zstdCoderModule\";\n\nexport default {\n\n async encodeMain(geometry, compressionLevel) {\n const data = prepareGeometryData(geometry, compressionLevel);\n const encoder = await zstdCoder.getCoder();\n const result = writeChunk(data, \"zstd\", encoder);\n return result.arrayBuffer;\n },\n\n encodeWorker(geometry, compressionLevel) {\n\n const data = prepareGeometryData(geometry, compressionLevel);\n\n const transfer = [];\n\n const message = {\n type: messageType.ENCODE_ZSTD,\n buffersData: data\n };\n\n const savingAttributes = geometry.isPointCloud ? DEFAULT_NO_INDICES_ATTRIBUTES : DEFAULT_ATTRIBUTES;\n for (let i = 0; i < savingAttributes.length; ++i) {\n\n const name = savingAttributes[i];\n const item = geometry.getLayoutItem(name);\n\n if (item) {\n if (item.isDetached()) {\n return Promise.reject(\"Can't encode geometry. \" + name + \" buffer is detached.\");\n }\n\n const attributeBuffer = item.getBuffer();\n transfer.push(attributeBuffer.buffer);\n item.setIsDetached(true);\n }\n\n }\n\n return workerManager.sendMessage(message, transfer).then((result) => {\n\n for (let i = 0; i < savingAttributes.length; ++i) {\n\n const name = savingAttributes[i];\n const item = geometry.getLayoutItem(name);\n\n if (item) {\n item.setBuffer(result.data[name].buffer);\n }\n\n }\n\n return result.data.arrayBuffer;\n\n });\n\n },\n\n cleanup() {\n workerPool.cleanup(messageType.ENCODE_ZSTD);\n return Promise.resolve();\n }\n\n}\n\nfunction prepareGeometryData(geometry, compressionLevel) {\n\n const data = {level: compressionLevel};\n\n const savingAttributes = geometry.isPointCloud ? DEFAULT_NO_INDICES_ATTRIBUTES : DEFAULT_ATTRIBUTES;\n for (let i = 0; i < savingAttributes.length; ++i) {\n\n const name = savingAttributes[i];\n const buffer = geometry.getItemBuffer(name);\n\n if (buffer) {\n data[name] = buffer;\n }\n\n }\n\n return data;\n\n}\n","import {writeChunk} from \"_src/engine/loaders/utils\"\n\nexport default {\n\n encodeMain(geometry) {\n return writeChunk(geometry);\n },\n\n cleanup() {\n return Promise.resolve();\n }\n\n}\n","import { objectType } from \"_src/constants\";\nimport output from \"_src/engine/output\";\nimport zstdEncoder from \"_src/engine/loaders/zstd/zstd_encoder\";\nimport plnEncoder from \"_src/engine/loaders/pln/pln_encoder\";\nimport reformer from \"_src/reformer/reformer\";\nimport config from \"_src/config\";\n\nexport default {\n\n ENCODER_PLN: 0,\n ENCODER_ZSTD: 1,\n\n zstdCompressionLevel: 5,\n\n getPackedBuffers(chunk, encoderType) {\n\n const geometry = chunk.geometry;\n\n if (geometry.empty()) {\n output.error(output.DEVELOPERS_ERROR, \"Trying to save empty chunk\");\n return Promise.resolve(null);\n }\n\n switch (encoderType) {\n case this.ENCODER_PLN:\n return plnEncoder.encodeMain(geometry);\n case this.ENCODER_ZSTD:\n if (config.useWorkers) {\n return zstdEncoder.encodeWorker(geometry, this.zstdCompressionLevel);\n } else {\n return zstdEncoder.encodeMain(geometry, this.zstdCompressionLevel);\n }\n default:\n output.error(output.API_ERROR, \"Can't pack the geometry. Wrong encoder type:\" + encoderType);\n return Promise.resolve(null);\n }\n\n },\n\n serializeObject(property, objectJSON, type) {\n switch (type) {\n case objectType.FUSION:\n case objectType.SURFELS:\n case objectType.SCAN:\n case objectType.CAD:\n reformer.serializeObject(property, objectJSON);\n break;\n case objectType.GROUP:\n reformer.serializeGroup(property, objectJSON);\n break;\n }\n }\n}\n","import {objectType} from \"_src/constants\";\nimport Wrapper from \"_src/wrapper\";\nimport loader from \"_src/loader\";\nimport containersCache from \"_src/engine/packers/containers_cache\";\nimport reformer from \"_src/reformer/reformer\";\n\nclass KnotWrapper {\n constructor(dataGetter, isPerpendicular = false, parentUUID = null) {\n this._dataGetter = dataGetter;\n this.isPerpendicular = isPerpendicular;\n this.parentUUID = parentUUID;\n }\n\n getData() {\n return this._dataGetter();\n }\n}\n\nexport default class DistanceMeasureWrapper extends Wrapper {\n constructor(params) {\n super(params);\n this.type = params.type !== undefined ? params.type : objectType.LINEAR_MEASURE;\n this.knots = [];\n }\n\n getHash() {\n return this._selfPropertyGetter(\"geometriesSource\")[\"hash\"];\n }\n\n getSelection() {\n return this._selfPropertyGetter(\"selected\");\n }\n\n setSelection(selected) {\n this._selfPropertySetter(\"selected\", selected);\n }\n\n async _loadData() {\n const geometryProperties = this._selfPropertyGetter(\"geometries\");\n if (this.type === objectType.LINEAR_MEASURE) {\n for (let i=0; i geometryProperties[i][\"position\"], geometryProperties[i][\"perpendicular\"], geometryProperties[i][\"object-uuid\"]);\n this.knots.push(knotWrapper);\n }\n } else {\n const loadingFiles = new Set();\n const loadingPromises = [];\n for (const knotProperty of geometryProperties) {\n const file = knotProperty[\"file\"];\n const index = knotProperty[\"index\"];\n const payload = {\n objectID: this.getID(),\n frameID: -1,\n id: index,\n };\n loadingFiles.add(file);\n const promise = loader.load(reformer.getProjectDirectory() + file, loader.GEOMETRY, payload).then(geometry => {\n const points = geometry.getItemBuffer(\"a_position\");\n const knotWrapper = new KnotWrapper(() => points);\n this.knots.push(knotWrapper);\n });\n loadingPromises.push(promise);\n }\n await Promise.all(loadingPromises);\n\n for (const file of loadingFiles) {\n containersCache.releaseContainer(file);\n }\n }\n }\n\n _unloadData() {\n this.knots.length = 0;\n }\n}\n","import {objectType} from \"_src/constants\";\nimport Wrapper from \"_src/wrapper\";\nimport loader from \"_src/loader\";\nimport containersCache from \"_src/engine/packers/containers_cache\";\nimport reformer from \"_src/reformer/reformer\";\n\nexport default class DistanceMapWrapper extends Wrapper {\n constructor(params) {\n super(params);\n this.type = objectType.DISTANCE_MAP;\n this.data = [];\n }\n\n getHash() {\n return this._selfPropertyGetter(\"geometriesSource\")[\"hash\"];\n }\n\n async _loadData() {\n const chunkProperties = this._selfPropertyGetter(\"geometries\");\n\n const loadingPromises = [];\n const loadingFiles = new Set();\n for (const chunkProperty of chunkProperties) {\n const payload = {\n objectID: this.getID(),\n frameID: -1,\n id: chunkProperty[\"index\"],\n };\n\n const file = reformer.getProjectDirectory() + chunkProperty[\"file\"];\n loadingFiles.add(file);\n const chunkNumber = loadingPromises.length;\n const loadingPromise = loader.load(file, loader.GEOMETRY, payload).then(geometry => {\n this.data[chunkNumber] = geometry.getItemBuffer(\"a_distance\");\n });\n\n loadingPromises.push(loadingPromise);\n }\n await Promise.all(loadingPromises);\n\n for (const file of loadingFiles) {\n containersCache.releaseContainer(file);\n }\n }\n\n _unloadData() {\n this.data.length = 0;\n }\n}\n","import {idGenerator} from \"_src/utils\";\nimport {colorType, objectType} from \"_src/constants\";\nimport appState from \"_src/app_state\";\nimport config from \"_src/config\";\n\nexport default class DetachedWrapper {\n constructor(params) {\n this.id = idGenerator.getNext();\n this.type = objectType.FUSION;\n this.model = params.model !== undefined ? params.model : null;\n this.frames = [];\n\n this._visibility = false;\n }\n\n getID() {\n return this.id;\n }\n\n getVisibility() {\n return this._visibility;\n }\n\n setVisibility(visibility) {\n this._visibility = visibility;\n for (const frame of this.frames) {\n frame.setVisibility(visibility);\n }\n }\n\n getWorldMinmax() {\n return this.model.minmaxWorld;\n }\n\n updateTextureUsage(textureRequested = appState.getStateValue(\"colorMode\") === appState.CM_TEXTURE) {\n if (this.frames.length < 1) return;\n let hasTextures = this.frames[0].textureList.length > 0;\n\n const textureUsed = textureRequested && hasTextures;\n const colorMode = textureUsed ? colorType.TEXTURE_UV : colorType.UNIFORM;\n const reflectivity = textureUsed ? config.textureReflectivity : config.diffuseReflectivity;\n this.model.setColorMode(colorMode);\n this.frames[0].model.setReflectivity(reflectivity);\n this.frames[0].model.properties.enableLambertDiffuse = textureUsed;\n this.frames[0].model.properties.enableColorCorrection = textureUsed;\n }\n}\n","import output from \"_src/engine/output\";\nimport objFactory from \"_src/engine/factories/object\";\nimport materialFactory from \"_src/client/materials/material_factory\";\nimport events from \"_src/engine/events\";\nimport { Geometry, GeometryBuffer } from \"_src/engine/geometry.js\";\nimport minmaxUtils from \"_src/engine/utility/minmax\";\n\nimport ObjectWrapper from \"_src/object_wrapper\";\nimport CadWrapper from \"_src/cad_wrapper\";\nimport PhotoGroupWrapper from \"_src/photogroup_wrapper\";\nimport SectionMeasureWrapper from \"_src/section_measure_wrapper\";\nimport FrameWrapper from \"_src/frame_wrapper\";\nimport Group from \"_src/groupable_wrapper\";\n\nimport loader from \"_src/loader\";\nimport loadingProgress from \"_src/loading_progress\";\nimport objState from \"_src/obj_state\";\nimport appState from \"_src/app_state\";\nimport history from \"_src/history/manager\";\nimport calcTextureCorrectionMatrix from \"_src/texture_correction\";\nimport {cadType, objectType, propertyInitStatus, scanMode} from \"_src/constants\";\nimport {colorUtils} from \"_src/utils\";\nimport { mat4 } from \"_src/libs/gl-matrix\";\n\nimport reformer from \"_src/reformer/reformer\";\nimport saveManager from \"_src/save_manager\";\nimport config from \"_src/config\";\nimport containersCache from \"_src/engine/packers/containers_cache\";\nimport {stencilAction, stencilFunc, stencilValue} from \"_src/engine/constants\";\nimport indexedDataBase from \"_database\";\nimport monitoring from \"_src/monitoring\";\nimport projectTree from \"_src/reformer/project_tree\";\nimport DistanceMeasureWrapper from \"_src/distance_measure_wrapper\";\nimport DistanceMapWrapper from \"_src/distance_map_wrapper\";\nimport DetachedWrapper from \"_src/detached_wrapper\";\n\nconst _useChunkLevels = false;\nconst _saveChunksState = {\n addPayloads: [],\n updatePayloads: [],\n deletePayloads: [],\n deletedFrames: [],\n projectFiles: [],\n};\n\nexport default {\n\n _objects: [],\n _groups: [],\n _photoGroups: [],\n _measures: [],\n\n _scene: null,\n\n _updatedChunks: new Set(),\n _newChunks: new Set(),\n\n _chunksChildrenNeighbours: new WeakMap(),\n _chunksParentNeighbours: new WeakMap(),\n\n _objectInitialized: new WeakSet(),\n _needDupliVerticesUpdate: new WeakSet(),\n _normalsBuilt: new WeakSet(),\n\n _totalNumLoadingGeometries: 0,\n _numLoadedGeometries: 0,\n\n _objectsUpdatePromises: new Map(),\n _objectsSyncPromises: new Map(),\n _objectSyncTriggers : [],\n\n _scansDecimationRatio: 1.0,\n _sliceToFrames: new Map(),\n _objectsLoadingsNumber: new WeakMap(),\n _decimatedFramesSets: new WeakSet(),\n _frameToPriority: new WeakMap(),\n\n _saveID: 0,\n\n async openProject(projectPath) {\n try {\n const json = await loader.load(projectPath, loader.JSON, null);\n if (!json) {\n return null;\n }\n\n reformer.setProjectPath(projectPath);\n if (config.cacheUnloadedData) await indexedDataBase.cleanup();\n\n return json;\n } catch (error) {\n if (!loader.isLegalError(error)) {\n throw error;\n }\n\n return null;\n }\n },\n\n async closeProject() {\n\n const objects = this.getObjects();\n\n for (const object of objects) {\n await object.unloadData();\n events.emit(\"object_removed\", object);\n }\n\n // NOTE: we can close current project before JSON is loaded\n loader.abortByType(loader.JSON);\n loader.abortByType(loader.GEOMETRY);\n\n this._totalNumLoadingGeometries = 0;\n this._numLoadedGeometries = 0;\n\n history.restart();\n reformer.cleanup();\n\n this._clearDataContainers();\n\n },\n\n async loadExternalModel(path, progress = null) {\n const loadPayload = {fileProgress: progress, useWorkers: true};\n const objectsData = await loader.load(path, loader.EXTERNAL, loadPayload);\n if (objectsData.length === 0) throw new Error(\"No objects in file\");\n const objectData = objectsData[0];\n\n const model = objFactory.createDrawable(null);\n const materialType = Boolean(objectData.material.baseTexture) && Boolean(objectData.material.metallicRoughnessTexture) ? materialFactory.PBR : materialFactory.ASTUDIO;\n await materialFactory.resetMaterial(materialType, model, model.properties);\n const objectWrapper = new DetachedWrapper({\n model : model,\n });\n const frameWrapper = new FrameWrapper({\n model : model,\n });\n const texturingProgress = progress ? (progressVal) => progress.emit(progress.TEXTURING, progressVal) : null;\n await frameWrapper.initByExternalData(objectData, texturingProgress);\n objectWrapper.frames.push(frameWrapper);\n\n model.setDiffuseColor(0.8, 0.8, 0.8);\n model.setVisibility(true);\n if (objectData.geometry.hasLayoutItem(\"a_normal\")) appState.setStateValue(\"shadingType\", appState.SHT_SMOOTH);\n\n this._addObject(objectWrapper);\n events.emit(\"objects_initialized\");\n },\n\n cleanup() {\n\n this._clearDataContainers();\n\n this._scene = null;\n\n this._saveID = 0;\n\n },\n\n _clearDataContainers() {\n\n for (const object of this.getObjects()) {\n object.cleanup();\n }\n this._objects.length = 0;\n this._photoGroups.length = 0;\n this._measures.length = 0;\n this._groups.length = 0;\n\n this._scansDecimationRatio = 1.0;\n this._sliceToFrames.clear();\n\n this._newChunks.clear();\n this._updatedChunks.clear();\n\n this._objectsUpdatePromises.clear();\n this._objectsSyncPromises.clear();\n this._objectSyncTriggers.length = 0;\n this._validateObjectsStates();\n\n },\n\n scheduleObjectDrawQueries(object, shouldRun) {\n if (!config.drawQueries) return;\n\n // we avoid using _traverseChildren here as it is a bit slower and\n // this method can get quite hot sometimes.\n for (let frame of object.frames) {\n const model = frame.model;\n const chunks = model.chunks;\n for (let chunk of chunks) {\n model.setScheduleDrawQuery(chunk, shouldRun);\n }\n }\n\n if (shouldRun) {\n this._scene.batcher.needsSort = true;\n }\n\n },\n\n createObjects() {\n const scanList = projectTree.getPropertiesByType(objectType.SCAN).concat(projectTree.getPropertiesByType(objectType.POINTCLOUD));\n const fusionList = projectTree.getPropertiesByType(objectType.FUSION);\n\n for (const scanProperty of scanList) {\n if (appState.getStateValue(\"scanMode\") !== scanMode.TRIANGLES && scanProperty.getValue(\"surfelsfile\") !== null) {\n this._createSurfelsWrapper(scanProperty);\n } else {\n this._createScanWrapper(scanProperty);\n }\n }\n\n for (const fusionProperty of fusionList) {\n this._createFusionWrapper(fusionProperty);\n }\n\n if (config.enableRendering) {\n const cadList = projectTree.getPropertiesByType(objectType.CAD);\n const photoGroupList = projectTree.getPropertiesByType(objectType.PHOTO_GROUP);\n const sectionMeasuresList = projectTree.getPropertiesByType(objectType.SECTION);\n const distanceMeasuresList = projectTree.getPropertiesByType(objectType.LINEAR_MEASURE).concat(projectTree.getPropertiesByType(objectType.GEODESIC_MEASURE));\n const distanceMapList = projectTree.getPropertiesByType(objectType.DISTANCE_MAP);\n const groupsList = projectTree.getPropertiesByType(objectType.GROUP);\n\n for (const cadData of cadList) {\n this._createCADWrapper(cadData);\n }\n for (const groupProperty of groupsList) {\n this._createGroupWrapper(groupProperty);\n }\n for (const photoGroupProperty of photoGroupList) {\n this._createPhotoGroupWrapper(photoGroupProperty);\n }\n for (const sectionMeasureProperty of sectionMeasuresList) {\n this._createSectionMeasureWrapper(sectionMeasureProperty);\n }\n for (const distanceMeasureProperty of distanceMeasuresList) {\n this._createDistanceMeasureWrapper(distanceMeasureProperty);\n }\n for (const distanceMapProperty of distanceMapList) {\n this._createDistanceMapWrapper(distanceMapProperty);\n }\n }\n },\n\n async initObjects() {\n const combinePromises = [];\n for (const object of this._objects.concat(this._photoGroups).concat(this._measures)) {\n if (object.getVisibility()) {\n combinePromises.push(projectTree.combineObjectStructure(object.getID()));\n }\n }\n await Promise.all(combinePromises);\n\n for (const object of this._objects) {\n if (this._objectInitialized.has(object) || object.getProperty(\"initStatus\") !== propertyInitStatus.COMPLETE) {\n continue;\n }\n\n switch (object.type) {\n case objectType.FUSION:\n this._initFusionWrapper(object);\n break;\n case objectType.SCAN:\n this._initScanWrapper(object);\n break;\n case objectType.SURFELS:\n this._initSurfelsWrapper(object);\n break;\n case objectType.CAD:\n await this._initCADWrapper(object);\n break;\n }\n\n this._objectInitialized.add(object);\n }\n\n this._initDecimationMap();\n events.emit(\"objects_initialized\");\n },\n\n prepareProjectLoading(json) {\n reformer.initProjectStructure(json);\n this.createObjects();\n },\n\n async updateProject(path) {\n const json = await loader.load(path, loader.JSON, null);\n if (!json) {\n return null;\n }\n if (config.cacheUnloadedData) await indexedDataBase.cleanup();\n reformer.setProjectPath(path);\n\n const updatedObjects = await this._updateProjectStructure(json);\n return updatedObjects;\n },\n\n _updateFrame(frame, oldData, data, object) {\n frame.numPolygons = 0;\n frame.numVertices = 0;\n let updated = false;\n\n updated = updateModelTransform(frame.model, data) || updated;\n for (const chunkData of data.getValue(\"geometries\")) {\n frame.numPolygons += chunkData.getValue(\"levels\")[0].getValue(\"triangles\");\n frame.numVertices += chunkData.getValue(\"levels\")[0].getValue(\"points\");\n\n if (frame.model.chunks.find(chunk => chunk.getID() === chunkData.getValue(\"id\"))) {\n continue;\n }\n\n frame.loaded = false;\n updated = true;\n //Note: chunk will be added during frame load\n }\n\n const chunksToDelete = [];\n for (const chunk of frame.model.chunks) {\n if (!data.getValue(\"geometries\").find(chunkData => chunkData.getValue(\"id\") === chunk.getID())) {\n chunksToDelete.push(chunk);\n updated = true;\n }\n }\n\n for (const chunk of chunksToDelete) {\n frame.deleteChunk(chunk, false);\n }\n\n const geometryUpdated = this._updateFrameGeometryData(frame, oldData, data);\n const textureUpdated = this._updateFrameTextureData(frame, oldData, data, object);\n\n updated = geometryUpdated || textureUpdated || updated;\n\n return updated;\n },\n\n _updateFrameGeometryData(frame, oldData, data) {\n let updated = false;\n\n for (const chunkData of data.getValue(\"geometries\")) {\n const chunkObject = frame.model.chunks.find(chunk => chunk.getID() === chunkData.getValue(\"id\"));\n if (!chunkObject) {\n continue;\n }\n const oldChunkData = oldData.getValue(\"geometries\").find(oldChunkData => oldChunkData.getValue(\"id\") === chunkData.getValue(\"id\"));\n\n const oldZeroDataLevelHash = oldChunkData.getValue(\"levels\")[0].getValue(\"hash\");\n const zeroDataLevelHash = chunkData.getValue(\"levels\")[0].getValue(\"hash\");\n\n const upToDate = chunkObject.geometry && oldZeroDataLevelHash === zeroDataLevelHash;\n\n if (!upToDate) {\n this._normalsBuilt.delete(chunkObject);\n chunkObject.needsReload = true;\n frame.loaded = false;\n updated = true;\n chunkObject.cleanup();\n }\n }\n\n return updated;\n },\n\n _updateFrameTextureData(frame, oldData, data, object) {\n let updated = false;\n let shouldLoadTexture = false;\n\n const texturesData = data.getValue(\"textures\") || [];\n const oldTexturesData = oldData.getValue(\"textures\") || [];\n\n if (texturesData.length && !oldTexturesData.length) {\n frame.addTextureInfo(texturesData[0]);\n shouldLoadTexture = true;\n updated = true;\n } else if (!texturesData.length && oldTexturesData.length) {\n frame.dropTextures();\n updated = true;\n } else if (texturesData.length && oldTexturesData.length) {\n const newTextureLevels = texturesData[0].getValue(\"levels\");\n const oldTextureLevels = oldTexturesData[0].getValue(\"levels\");\n const newTextureHash = newTextureLevels[newTextureLevels.length - 1].getValue(\"hash\");\n const oldTextureHash = oldTextureLevels[oldTextureLevels.length - 1].getValue(\"hash\");\n if (newTextureHash !== oldTextureHash) {\n frame.textureList.length = 0;\n frame.addTextureInfo(texturesData[0]);\n object.setFrameTemporaryTexture(frame);\n shouldLoadTexture = true;\n updated = true;\n }\n }\n\n if (shouldLoadTexture) {\n frame.loadTexture();\n }\n\n return updated;\n },\n\n _updateFrames(object, oldFramesNode, framesNode){\n let updated = false;\n\n for (const frameData of framesNode) {\n const frameObject = object.frames.find(frame => frame.getID() === frameData.getValue(\"id\"));\n if (frameObject) {\n const oldFrameData = oldFramesNode.find(frameProperty => frameProperty.getValue(\"id\") === frameObject.getID());\n updated = this._updateFrame(frameObject, oldFrameData, frameData, object) || updated;\n continue;\n }\n\n const frameWrapper = this._createFrameWrapper(frameData, object.getID());\n frameWrapper.model.setDiffuseColor(...object.getColor());\n frameWrapper.model.shader = object.model.shader;\n\n frameWrapper.updateBoundingsByTransform();\n object.addFrame(frameWrapper);\n object.model.add(frameWrapper.model);\n updated = true;\n }\n\n const framesToUnload = [];\n for (const frame of object.frames) {\n if (!framesNode.find(frameData => frameData.getValue(\"id\") === frame.getID())) {\n framesToUnload.push(frame);\n updated = true;\n }\n }\n\n for (const frame of framesToUnload) {\n object.removeFrame(frame);\n }\n\n return updated;\n },\n\n async _updateObject(object, oldProperty, property) {\n let updated = false;\n updated = updateModelTransform(object.model, property) || updated;\n\n let geometryNode = null;\n let oldGeometryNode = null;\n\n switch (object.type) {\n case objectType.FUSION:\n geometryNode = property.getValue(\"geometriesfile\");\n oldGeometryNode = oldProperty.getValue(\"geometriesfile\");\n break;\n case objectType.SURFELS:\n geometryNode = property.getValue(\"surfelsfile\");\n oldGeometryNode = oldProperty.getValue(\"surfelsfile\");\n break;\n case objectType.SCAN:\n geometryNode = property.getValue(\"framesfile\");\n oldGeometryNode = oldProperty.getValue(\"framesfile\");\n break;\n case objectType.CAD:\n //cad's geometry update is not implemented\n return updated;\n\n default:\n output.error(output.DEVELOPERS_ERROR, \"update for type \" + object.type + \" is not supported yet\");\n return false;\n }\n\n if (!this._objectInitialized.has(object)) {\n return updated;\n }\n\n const oldGeometryHash = oldGeometryNode[\"hash\"];\n const newGeometryHash = geometryNode[\"hash\"];\n const geometryUpToDate = oldGeometryHash && newGeometryHash && oldGeometryHash === newGeometryHash;\n\n //Note: this is hack because of texture info is in main file. Its better to move it to the frame\n let fusionTextureUpToDate = true;\n if (object.type === objectType.FUSION) {\n const oldTextureExists = oldProperty.getValue(\"textures\").length > 0;\n const newTextureExists = property.getValue(\"textures\").length > 0;\n\n const oldTextureHash = oldTextureExists ? oldProperty.getValue(\"textures\")[0][\"levels\"][0][\"hash\"] : \"\";\n const newTextureHash = newTextureExists ? property.getValue(\"textures\")[0][\"levels\"][0][\"hash\"] : \"\";\n fusionTextureUpToDate = oldTextureHash === newTextureHash;\n }\n\n const oldFramesProperty = oldProperty.getValue(\"frames\");\n if (geometryUpToDate && fusionTextureUpToDate) {\n property.setValue(\"frames\", oldFramesProperty);\n property.setValue(\"initStatus\", propertyInitStatus.COMPLETE);\n } else {\n await projectTree.combineObjectStructure(object.getID());\n const framesProperty = property.getValue(\"frames\");\n\n if (objState.checkIsUpdating(object)) {\n await objState.getUpdatePromise(object);\n }\n updated = this._updateFrames(object, oldFramesProperty, framesProperty) || updated;\n }\n\n return updated;\n },\n\n async _updateProjectStructure(json) {\n let updatedObjects = [];\n\n const oldPhotoGroupsList = projectTree.getPropertiesByType(objectType.PHOTO_GROUP);\n const oldDistanceMeasureList = projectTree.getPropertiesByType(objectType.LINEAR_MEASURE).concat(projectTree.getPropertiesByType(objectType.GEODESIC_MEASURE));\n const oldSectionMeasureList = projectTree.getPropertiesByType(objectType.SECTION);\n const oldDistanceMapList = projectTree.getPropertiesByType(objectType.DISTANCE_MAP);\n const oldCadList = projectTree.getPropertiesByType(objectType.CAD);\n const oldScanList = projectTree.getPropertiesByType(objectType.SCAN).concat(projectTree.getPropertiesByType(objectType.POINTCLOUD));\n const oldFusionList = projectTree.getPropertiesByType(objectType.FUSION);\n\n reformer.initProjectStructure(json);\n\n const photoGroupsList = projectTree.getPropertiesByType(objectType.PHOTO_GROUP);\n const distanceMeasureList = projectTree.getPropertiesByType(objectType.LINEAR_MEASURE).concat(projectTree.getPropertiesByType(objectType.GEODESIC_MEASURE));\n const sectionMeasureList = projectTree.getPropertiesByType(objectType.SECTION);\n const distanceMapList = projectTree.getPropertiesByType(objectType.DISTANCE_MAP);\n const cadList = projectTree.getPropertiesByType(objectType.CAD);\n const scanList = projectTree.getPropertiesByType(objectType.SCAN).concat(projectTree.getPropertiesByType(objectType.POINTCLOUD));\n const fusionList = projectTree.getPropertiesByType(objectType.FUSION);\n const groupsList = projectTree.getPropertiesByType(objectType.GROUP);\n\n const updateObjectList = async (objectPropertyList, oldObjectPropertyList, objectsList, preUpdateFn, updateFn, createFn, removeFn) => {\n for (const objectProperty of objectPropertyList) {\n const object = objectsList.find(object => object.getID() === objectProperty.getValue(\"id\"));\n if (object) {\n if (preUpdateFn) await preUpdateFn(object);\n if (updateFn) {\n const oldObjectProperty = oldObjectPropertyList.find(property => property.getValue(\"id\") === object.getID());\n await updateFn(object, oldObjectProperty, objectProperty);\n }\n } else {\n const newObject = createFn(objectProperty);\n updatedObjects.push(newObject);\n }\n }\n\n const objectsToUnload = [];\n for (const object of objectsList) {\n if (!objectPropertyList.find(property => property.getValue(\"id\") === object.getID())) {\n objectsToUnload.push(object);\n }\n }\n for (const object of objectsToUnload) {\n await removeFn(object);\n }\n }\n\n const objectsPreUpdateFn = async (object) => {\n if (objState.checkIsUpdating(object)) {\n await objState.getUpdatePromise(object);\n }\n }\n const objectsUpdateFn = async (object, oldObjectProperty, objectProperty) => {\n const updated = await this._updateObject(object, oldObjectProperty, objectProperty);\n if (updated) {\n updatedObjects.push(object);\n }\n }\n const scanCreateFn = (objectProperty) => {\n if (appState.getStateValue(\"scanMode\") !== scanMode.TRIANGLES && objectProperty.getValue(\"surfelsfile\") !== null) {\n return this._createSurfelsWrapper(objectProperty);\n } else {\n return this._createScanWrapper(objectProperty);\n }\n }\n const scanObjectsList = this.getObjects().filter(object => object.type === objectType.SCAN || object.type === objectType.SURFELS);\n const fusionObjectsList = this.getObjects().filter(object => object.type === objectType.FUSION);\n const cadObjectsList = this.getObjects().filter(object => object.type === objectType.CAD);\n const distanceMeasureObjectsList = this.getMeasures().filter(object => object.type === objectType.LINEAR_MEASURE || object.type === objectType.GEODESIC_MEASURE);\n const sectionMeasuresObjectsList = this.getMeasures().filter(object => object.type === objectType.SECTION);\n const distanceMapsObjectsList = this.getMeasures().filter(object => object.type === objectType.DISTANCE_MAP);\n\n await updateObjectList(scanList, oldScanList, scanObjectsList, objectsPreUpdateFn, objectsUpdateFn, scanCreateFn, o=>this.removeObject(o));\n await updateObjectList(fusionList, oldFusionList, fusionObjectsList, objectsPreUpdateFn, objectsUpdateFn, p => this._createFusionWrapper(p), o=>this.removeObject(o));\n await updateObjectList(cadList, oldCadList, cadObjectsList, objectsPreUpdateFn, objectsUpdateFn, p=>this._createCADWrapper(p), o=>this.removeObject(o));\n await updateObjectList(photoGroupsList, oldPhotoGroupsList, this.getPhotoGroups(), null, _updatePhotoGroup, p=>this._createPhotoGroupWrapper(p), pg=>this._removePhotoGroup(pg));\n await updateObjectList(groupsList, null, this.getGroups(), null, null, p=>this._createGroupWrapper(p), g=>this._removeGroup(g));\n await updateObjectList(distanceMeasureList, oldDistanceMeasureList, distanceMeasureObjectsList, null, _updateMeasure, p=>this._createDistanceMeasureWrapper(p), m=>this._removeMeasure(m));\n await updateObjectList(sectionMeasureList, oldSectionMeasureList, sectionMeasuresObjectsList, null, _updateMeasure, p=>this._createSectionMeasureWrapper(p), m=>this._removeMeasure(m));\n await updateObjectList(distanceMapList, oldDistanceMapList, distanceMapsObjectsList, null, _updateMeasure, p=>this._createDistanceMapWrapper(p), m=>this._removeMeasure(m));\n\n updatedObjects = updatedObjects.filter(object => object.type === objectType.FUSION || object.type === objectType.CAD || object.type === objectType.SCAN || object.type === objectType.SURFELS);\n for (const object of updatedObjects) {\n object.setState(objState.OS_OCTREE, false);\n object.setState(objState.OS_HALF_EDGE, false);\n object.setState(objState.OS_NORMAL, false);\n }\n\n return updatedObjects;\n },\n\n async updateScanMode(mode) {\n let needInitObjects = false;\n for (const object of this.getObjects().slice()) {\n const someDataLoaded = object.loaded || object.checkNeedsLoadFrames();\n const needReinitObject = object.type === objectType.SCAN && this.hasScanSurfels(object) && mode !== scanMode.TRIANGLES ||\n object.type === objectType.SURFELS && mode === scanMode.TRIANGLES;\n const needReloadObject = object.type === objectType.SURFELS && someDataLoaded &&\n (mode === scanMode.SURFELS_HIGH && object.geometryLevel === 1 || mode === scanMode.SURFELS_MID && this.hasObjectLods(object) && object.geometryLevel === 0);\n\n if (needReloadObject || needReinitObject) {\n await object.unloadData();\n }\n\n if (needReinitObject) {\n releaseSlicedCache(object);\n this._objects.splice(this._objects.indexOf(object), 1);\n events.emit(\"object_removed\", object);\n\n const property = projectTree._getProperty(object.getID()); //hack\n property.getValue(\"frames\").length = 0;\n property.setValue(\"initStatus\", propertyInitStatus.INCOMPLETE);\n if (mode === scanMode.TRIANGLES) this._createScanWrapper(property);\n else this._createSurfelsWrapper(property);\n needInitObjects = true;\n }\n }\n\n if (needInitObjects) {\n await this.initObjects();\n }\n },\n\n loadObjectData(object, level = 0) {\n let numLoadings = this._objectsLoadingsNumber.get(object) + 1;\n this._objectsLoadingsNumber.set(object, numLoadings);\n\n object.updateTextureUsage();\n\n return object.loadData(object.getProperty(\"frames\"), level).then(() => {\n this.onObjectLoaded(object);\n }).catch((error) => {\n if (!loader.isLegalError(error)) {\n output.error(output.LOADING_ERROR, \"Couldn't load object data. Reason: \" + error.message);\n return;\n }\n if (loader.isNetworkError(error)) {\n appState.setStateValue(\"hasLoadingErrors\", true);\n output.warn(\"Couldn't load project. Editing is forbidden.\");\n return;\n }\n if (loader.isTotalAborted(error)) {\n return;\n }\n this.onObjectLoaded(object);\n });\n },\n\n onObjectLoaded(object) {\n\n const numLoadings = Math.max(this._objectsLoadingsNumber.get(object) - 1, 0);\n this._objectsLoadingsNumber.set(object, numLoadings);\n\n if (numLoadings !== 0) {\n return;\n }\n\n releaseSlicedCache(object);\n object.loaded = true;\n\n for (let frame of object.frames) {\n const model = frame.model;\n this._calculateNeighbourChunks(model.chunks);\n }\n\n this.applyState(object);\n\n events.emit(\"object_loaded\", object);\n },\n\n _createScanWrapper(property) {\n const model = objFactory.createDrawable(null);\n if (config.enableRendering) {\n materialFactory.resetMaterial(materialFactory.ASTUDIO, model, model.properties);\n const shader = model.shader;\n\n shader.setTextureProjectionMatrix(property.getValue(\"projection\"));\n const { colorCorrectionMatrix, corrCoeff } = calcTextureCorrectionMatrix(property, mat4.create());\n if (corrCoeff !== -1) {\n shader.setDirective(\"COLOR_CORRECTION\", true);\n shader.setColorCorrectionMatrix(colorCorrectionMatrix);\n }\n }\n\n const scanWrapper = new ObjectWrapper({\n type : objectType.SCAN,\n id : property.getValue(\"id\"),\n model : model,\n usetexture : property.getValue(\"numTexturedFrames\") > 0\n });\n\n model.setMatrix(property.getValue(\"transform\"));\n model.updateMatrix();\n this._addObject(scanWrapper);\n\n return scanWrapper;\n },\n\n _initScanWrapper(scanWrapper) {\n for (const frameProperty of scanWrapper.getProperty(\"frames\")) {\n\n const frameWrapper = this._createFrameWrapper(frameProperty, scanWrapper.getID());\n frameWrapper.model.setDiffuseColor(...scanWrapper.getColor());\n scanWrapper.model.add(frameWrapper.model);\n\n frameWrapper.model.updateMatrix();\n frameWrapper.updateBoundingsByTransform();\n\n if (config.enableRendering) {\n materialFactory.resetMaterial(materialFactory.ASTUDIO, frameWrapper.model, frameWrapper.model.properties);\n frameWrapper.model.shader = scanWrapper.model.shader;\n }\n\n scanWrapper.addFrame(frameWrapper);\n\n }\n\n if (appState.getStateValue(\"colorMode\") === appState.CM_FRAME_COLOR) {\n scanWrapper.applyUniqueColorToFrames();\n } else {\n scanWrapper.applyObjectColorToFrames();\n }\n\n this._objectsLoadingsNumber.set(scanWrapper, 0);\n\n events.emit(\"objects_updated\", [scanWrapper]);\n },\n\n _createCADWrapper(property) {\n const isPrimitive = Boolean(property.getValue(\"cadType\") !== cadType.MODEL);\n\n const mainModel = objFactory.createDrawable(null);\n const mainMaterial = isPrimitive ? materialFactory.CAD : materialFactory.ASTUDIO;\n const edgesModel = isPrimitive ? null : objFactory.createDrawable(null);\n if (config.enableRendering) {\n materialFactory.resetMaterial(mainMaterial, mainModel, mainModel.properties);\n if (edgesModel) materialFactory.resetMaterial(materialFactory.CAD_EDGES, edgesModel, edgesModel.properties);\n }\n\n const CADWrapper = new CadWrapper({\n id : property.getValue(\"id\"),\n model : mainModel,\n edgesModel : edgesModel,\n });\n\n mainModel.setMatrix(property.getValue(\"transform\"));\n mainModel.updateMatrix();\n if (edgesModel) {\n edgesModel.setMatrix(property.getValue(\"transform\"));\n }\n\n this._addObject(CADWrapper);\n return CADWrapper;\n },\n\n async _initCADWrapper(CADWrapper) {\n const material = CADWrapper.isPrimitive() ? materialFactory.CAD : materialFactory.ASTUDIO;\n\n for (const frameProperty of CADWrapper.getProperty(\"frames\")) {\n\n const frameWrapper = this._createFrameWrapper(frameProperty, CADWrapper.getID());\n frameWrapper.model.setDiffuseColor(...CADWrapper.getColor());\n CADWrapper.model.add(frameWrapper.model);\n\n frameWrapper.model.updateMatrix();\n frameWrapper.updateBoundingsByTransform();\n\n if (config.enableRendering) {\n materialFactory.resetMaterial(material, frameWrapper.model, frameWrapper.model.properties);\n frameWrapper.model.shader = CADWrapper.model.shader;\n }\n\n CADWrapper.addFrame(frameWrapper);\n\n }\n\n if (appState.getStateValue(\"colorMode\") === appState.CM_FRAME_COLOR) {\n CADWrapper.applyUniqueColorToFrames();\n } else {\n CADWrapper.applyObjectColorToFrames();\n }\n\n this._objectsLoadingsNumber.set(CADWrapper, 0);\n\n events.emit(\"objects_updated\", [CADWrapper]);\n },\n\n _createPhotoGroupWrapper(property) {\n const photoGroupWrapper = new PhotoGroupWrapper({id: property.getValue(\"id\")});\n this._photoGroups.push(photoGroupWrapper);\n return photoGroupWrapper;\n },\n\n _createSectionMeasureWrapper(property) {\n const sectionMeasureWrapper = new SectionMeasureWrapper({id: property.getValue(\"id\")});\n this._measures.push(sectionMeasureWrapper);\n return sectionMeasureWrapper;\n },\n\n _createDistanceMeasureWrapper(property) {\n const distanceMeasureWrapper = new DistanceMeasureWrapper({\n id: property.getValue(\"id\"),\n type: property.getValue(\"type\"),\n });\n this._measures.push(distanceMeasureWrapper);\n return distanceMeasureWrapper;\n },\n\n _createDistanceMapWrapper(property) {\n const distanceMapWrapper = new DistanceMapWrapper({id: property.getValue(\"id\")});\n this._measures.push(distanceMapWrapper);\n return distanceMapWrapper;\n },\n\n _createFusionWrapper(property) {\n const model = objFactory.createDrawable(null);\n if (config.enableRendering) {\n materialFactory.resetMaterial(materialFactory.ASTUDIO, model, model.properties);\n }\n\n const fusionWrapper = new ObjectWrapper({\n type : objectType.FUSION,\n model : model,\n id : property.getValue(\"id\"),\n usetexture : property.getValue(\"numTexturedFrames\") > 0\n });\n model.setMatrix(property.getValue(\"transform\"));\n model.updateMatrix();\n this._addObject(fusionWrapper);\n return fusionWrapper;\n },\n\n _initFusionWrapper(fusionWrapper) {\n const framesProperty = fusionWrapper.getProperty(\"frames\");\n const frameWrapper = this._createFrameWrapper(framesProperty[0], fusionWrapper.getID());\n frameWrapper.model.setDiffuseColor(...fusionWrapper.getColor());\n frameWrapper.model.shader = fusionWrapper.model.shader;\n\n fusionWrapper.model.add(frameWrapper.model);\n frameWrapper.model.updateMatrix();\n frameWrapper.updateBoundingsByTransform();\n fusionWrapper.addFrame(frameWrapper);\n\n this._objectsLoadingsNumber.set(fusionWrapper, 0);\n events.emit(\"objects_updated\", [fusionWrapper]);\n },\n\n _createSurfelsWrapper(property) {\n const model = objFactory.createDrawable(null);\n if (config.enableRendering) {\n materialFactory.resetMaterial(materialFactory.SURFELS, model, model.properties);\n }\n\n const surfelsWrapper = new ObjectWrapper({\n type : objectType.SURFELS,\n id : property.getValue(\"id\"),\n model : model,\n usetexture : false\n });\n model.setMatrix(property.getValue(\"transform\"));\n model.updateMatrix();\n this._addObject(surfelsWrapper);\n return surfelsWrapper;\n },\n\n _initSurfelsWrapper(surfelsWrapper) {\n const framesProperty = surfelsWrapper.getProperty(\"frames\");\n const frameWrapper = this._createFrameWrapper(framesProperty[0], surfelsWrapper.getID());\n frameWrapper.model.setDiffuseColor(...surfelsWrapper.getColor());\n frameWrapper.model.shader = surfelsWrapper.model.shader;\n surfelsWrapper.model.add(frameWrapper.model);\n frameWrapper.model.updateMatrix();\n frameWrapper.updateBoundingsByTransform();\n surfelsWrapper.addFrame(frameWrapper);\n this._objectsLoadingsNumber.set(surfelsWrapper, 0);\n\n events.emit(\"objects_updated\", [surfelsWrapper]);\n },\n\n _createFrameWrapper(property, parentID) {\n\n const model = objFactory.createDrawable(null);\n model.setReflectivity(config.diffuseReflectivity);\n\n const frameWrapper = new FrameWrapper({\n id : property.getValue(\"id\"),\n parentID : parentID,\n model\n });\n\n model.setMatrix(property.getValue(\"transform\"));\n\n for (const texture of property.getValue(\"textures\")) {\n frameWrapper.addTextureInfo(texture);\n }\n\n for (const geometry of property.getValue(\"geometries\")) {\n frameWrapper.expandLocalMinMax(geometry.getValue(\"box\"));\n\n const levels = geometry.getValue(\"levels\");\n if (levels.length) {\n // NOTE: there are no levels for just duplicated objects\n frameWrapper.numPolygons += levels[0].getValue(\"triangles\");\n frameWrapper.numVertices += levels[0].getValue(\"points\");\n }\n }\n\n return frameWrapper;\n\n },\n\n _incrementNumLoadedGeometries() {\n\n ++this._numLoadedGeometries;\n\n },\n\n applyState(object) {\n\n let syncPromise = this._getSyncPromise(object);\n\n if (syncPromise) {\n return syncPromise;\n }\n\n syncPromise = this._applyState(object);\n\n this._storeSyncPromise(object, syncPromise);\n\n return syncPromise.then(() => {\n this._removeSyncPromise(object);\n events.emit(\"object_state_applied\", object);\n });\n\n },\n\n _applyState(object) {\n\n return new Promise((resolve) => {\n this._storeSyncTrigger(resolve);\n }).then(() => {\n return this._updateObjectStates(object);\n });\n\n },\n\n _updateObjectStates(object) {\n if (objState.checkIsUpdating(object)) {\n return objState.getUpdatePromise(object);\n }\n\n const updatePromise = this._asyncObjectUpdate(object).then(() => {\n this._removeUpdatePromise(object);\n this._validateObjectsStates();\n });\n\n this._storeUpdatePromise(object, updatePromise);\n return updatePromise;\n },\n\n async _asyncObjectUpdate(object) {\n if (config.viewOnlyMode) {\n return;\n }\n\n if (!this.checkIsReady(object) || !object.getVisibility()) {\n return;\n }\n\n return objState.update(object);\n },\n\n setObjectState(state, value) {\n if (![objState.OS_NORMAL, objState.OS_OCTREE, objState.OS_HALF_EDGE].includes(state)) {\n return;\n }\n\n for (const object of this.getObjects()) {\n object.setState(state, value);\n }\n },\n\n updateObjectsStates() {\n\n let trigger = this._getActiveSyncTrigger();\n\n while(trigger) {\n trigger();\n trigger = this._getActiveSyncTrigger();\n }\n\n },\n\n clearLoader() {\n loader.abort();\n },\n\n getBBox(pred) {\n\n const objects = pred ? this.getObjects().filter(pred): this.getObjects();\n\n const minmax = [Infinity, Infinity, Infinity, -Infinity, -Infinity, -Infinity];\n\n for (let i = 0; i < objects.length; ++i) {\n minmaxUtils.expandMinmax(minmax, objects[i].getWorldMinmax());\n }\n\n if (!minmaxUtils.isValid(minmax)) {\n return minmaxUtils.setDefaultValue(minmax);\n }\n\n return minmax;\n\n },\n\n getPhotoGroups() {\n return this._photoGroups;\n },\n\n getMeasures() {\n return this._measures;\n },\n\n _getObjectSizeData(object) {\n const sizeData = {\n surfels: object.getProperty(\"surfelsSize\"),\n textured: object.getProperty(\"texturedSize\"),\n untextured: object.getProperty(\"untexturedSize\"),\n total: object.getProperty(\"datasize\"),\n };\n return sizeData;\n },\n\n createDistanceMapMeta(name, uuid, minDistance, maxDistance, dstUuid, searchDistance) {\n return {\n \"uuid\" : uuid,\n \"name\" : name,\n \"dstUuid\" : dstUuid,\n \"annotation\" : [],\n \"minDistance\" : minDistance,\n \"maxDistance\" : maxDistance,\n \"geometries\" : [],\n \"searchDistance\" : searchDistance\n }\n },\n\n getObjectByID(id) {\n return this._objects.find(object => object.getID() === id) || null;\n },\n\n getObjectByUUID(uuid) {\n return this._objects.find(object => object.getUUID() === uuid) || null;\n },\n\n getGroupByID(id) {\n return this._groups.find(group => group.getID() === id) || null;\n },\n\n getPhotoGroupByID(id) {\n return this._photoGroups.find(photoGroup => photoGroup.getID() === id) || null;\n },\n\n getMeasureByID(id) {\n return this._measures.find(measure => measure.getID() === id) || null;\n },\n\n _addObject(object) {\n this._objects.push(object);\n events.emit(\"object_added\", object);\n },\n\n async removeObject(object) {\n\n object.unloadData();\n for (const frame of object.frames) {\n await frame.geometryPromise;\n }\n\n projectTree.removeObject(object.getID());\n this._objects.splice(this._objects.indexOf(object), 1);\n\n events.emit(\"object_removed\", object);\n },\n\n getObjects() {\n return this._objects;\n },\n\n getGroups() {\n return this._groups;\n },\n\n updateFramesVisibility(object) {\n const allFramesMode = appState.getStateValue(\"showAllFrames\");\n const forceNonTexturedFrames = object.type !== objectType.SCAN && !object.hasTextures();\n const forceKeyFrames = object.type === objectType.SCAN && !object.hasTextures();\n\n if (!object.getVisibility()) {\n object.hideAllFrames();\n } else {\n if (allFramesMode || forceNonTexturedFrames) {\n object.showNonTexturedFrames();\n } else {\n if (forceKeyFrames) {\n if (object.hasKeyFrames) {\n object.hideNonTexturedFrames();\n object.showKeyFrames();\n } else {\n object.showNonTexturedFrames();\n }\n } else {\n object.hideNonTexturedFrames();\n }\n }\n }\n },\n\n updateNonTexturedFrames(object) {\n this.updateFramesVisibility(object);\n return this.updateDecimation();\n },\n\n checkIsReadyToSelect(object) {\n\n if (!object.getVisibility()) {\n return false;\n }\n\n if (object.getLockState()) {\n return false;\n }\n\n if (!this.checkIsReady(object)) {\n return false;\n }\n\n if (object.type === objectType.CAD) {\n return false;\n }\n\n if (object.getProperty(\"type\") === objectType.POINTCLOUD) {\n return false;\n }\n\n return true;\n\n },\n\n checkIsReadyToSmooth(object) {\n return object.type === objectType.FUSION && this.checkIsReadyToSelect(object);\n },\n\n setDrawDepth(enabled) {\n for (const object of this.getObjects()) {\n object.model.shader.setDirective(\"RGB_DEPTH\", enabled);\n }\n },\n\n setWriteDistanceMap(enabled) {\n for (const object of this.getObjects()) {\n object.model.shader.setDirective(\"DM_OUTPUT\", enabled);\n }\n },\n\n _storeUpdatePromise(object, promise) {\n this._objectsUpdatePromises.set(object, promise);\n this._validateObjectsStates();\n },\n\n _removeUpdatePromise(object) {\n this._objectsUpdatePromises.delete(object);\n this._validateObjectsStates();\n },\n\n _storeSyncTrigger(trigger) {\n this._objectSyncTriggers.push(trigger);\n },\n\n _getActiveSyncTrigger() {\n return this._objectSyncTriggers.pop();\n },\n\n _storeSyncPromise(object, promise) {\n this._objectsSyncPromises.set(object, promise);\n },\n\n _getSyncPromise(object) {\n return this._objectsSyncPromises.get(object);\n },\n\n _removeSyncPromise(object) {\n this._objectsSyncPromises.delete(object);\n },\n\n _validateObjectsStates() {\n appState.setStateValue(\"updatingStates\", this._objectsUpdatePromises.size !== 0);\n },\n\n markChunkAsNew(chunk) {\n this._newChunks.add(chunk);\n },\n\n markChunkAsUpdated(chunk) {\n this._updatedChunks.add(chunk);\n },\n\n isNewChunk(chunk) {\n return this._newChunks.has(chunk);\n },\n\n isUpdatedChunk(chunk) {\n return this._updatedChunks.has(chunk);\n },\n\n removeChunkFromNew(chunk){\n this._newChunks.delete(chunk);\n },\n\n removeChunkFromUpdated(chunk){\n this._updatedChunks.delete(chunk);\n },\n\n dropChunkHash(object, frame, chunk) {\n switch (object.type) {\n case objectType.FUSION:\n object.getProperty(\"geometriesfile\")[\"hash\"] = \"\";\n break;\n case objectType.SCAN:\n object.getProperty(\"framesfile\")[\"hash\"] = \"\";\n break;\n case objectType.SURFELS:\n object.getProperty(\"surfelsfile\")[\"hash\"] = \"\";\n break;\n }\n const frameInfo = object.getProperty(\"frames\").find(frameInfo => frameInfo.getValue(\"id\") === frame.getID());\n const chunkInfo = frameInfo.getValue(\"geometries\").find(chunkInfo => chunkInfo.getValue(\"id\") === chunk.getID());\n\n for (const levelInfo of chunkInfo.getValue(\"levels\")) {\n levelInfo.setValue(\"hash\", \"\");\n }\n },\n\n async getObjectBuffersToSave(object) {\n if (objState.checkIsUpdating(object)) {\n await objState.getUpdatePromise(object);\n }\n\n const framesProperty = object.getProperty(\"frames\");\n const promises = [];\n for (const frame of object.frames) {\n const frameProperty = framesProperty.find(property => property.getValue(\"id\") === frame.getID());\n\n if (!frameProperty) {\n output.error(output.DEVELOPERS_ERROR, \"Can't find frame \" + frame.getID() + \" in project sjson\");\n continue;\n }\n\n const model = frame.model;\n const frameID = frame.getID();\n const chunks = model.chunks;\n\n for (const chunk of chunks) {\n const chunkID = chunk.getID();\n const geometryProperty = frameProperty.getValue(\"geometries\").find(property => property.getValue(\"id\") === chunkID);\n if (!geometryProperty) {\n output.error(output.DEVELOPERS_ERROR, \"Can't find chunk \" + chunkID + \" in project sjson\");\n continue;\n }\n\n let chunkFullID = frameID + \"-\" + chunkID;\n if (object.type === objectType.SCAN || object.type === objectType.CAD) {\n chunkFullID = object.getID() + \"-\" + chunkFullID;\n }\n\n const chunkPaths = [];\n const levelsProperty = geometryProperty.getValue(\"levels\");\n if (_useChunkLevels && object.type !== objectType.FUSION) {\n const levelProperty = levelsProperty[object.geometryLevel];\n chunkPaths.push(levelProperty.getValue(\"file\"));\n } else {\n for (const levelProperty of levelsProperty) {\n chunkPaths.push(levelProperty.getValue(\"file\"));\n }\n }\n if (geometryProperty.getValue(\"attrs\")) {\n chunkPaths.push(geometryProperty.getValue(\"attrs\")[\"file\"]);\n }\n\n if (_useChunkLevels) {\n const levelProperty = levelsProperty[object.geometryLevel];\n const levelID = levelProperty.getValue(\"id\");\n chunkFullID = chunkFullID + \"-\" + levelID;\n }\n\n if (this.isNewChunk(chunk)) {\n this.getObjectFiles(object, _saveChunksState.projectFiles);\n\n promises.push(saveManager.getPackedBuffers(chunk, saveManager.ENCODER_ZSTD).then((buffer) => {\n const addPayload = {\"chunkId\": chunkFullID, \"buffer\": buffer, \"paths\": chunkPaths, \"state\": \"new\"};\n _saveChunksState.addPayloads.push(addPayload);\n this.removeChunkFromNew(chunk);\n }));\n }\n\n if (this.isUpdatedChunk(chunk)) {\n this.getObjectFiles(object, _saveChunksState.projectFiles);\n\n promises.push(saveManager.getPackedBuffers(chunk, saveManager.ENCODER_ZSTD).then((buffer) => {\n const updatePayload = {\"chunkId\": chunkFullID, \"buffer\": buffer, \"paths\": chunkPaths, \"state\": \"updated\"};\n _saveChunksState.updatePayloads.push(updatePayload);\n this.removeChunkFromUpdated(chunk);\n chunk.geometry.deleteLayoutItem(\"old_indices\");\n }));\n }\n }\n }\n\n const updatePromise = Promise.all(promises).then(() => {\n this._removeUpdatePromise(object);\n });\n this._storeUpdatePromise(object, updatePromise);\n\n await updatePromise;\n },\n\n _calculateNeighbourChunks(chunks) {\n\n for (let j = 0; j < chunks.length; ++j) {\n\n const currChunk = chunks[j];\n const currBbox = currChunk.geometry.bbox;\n\n const childrenNeighbours = [];\n const parentNeighbours = [];\n\n this._chunksChildrenNeighbours.set(currChunk, childrenNeighbours);\n this._chunksParentNeighbours.set(currChunk, parentNeighbours);\n\n const currX = (currChunk.geometry.bbox[0] + currChunk.geometry.bbox[3]) / 2;\n const currY = (currChunk.geometry.bbox[1] + currChunk.geometry.bbox[4]) / 2;\n const currZ = (currChunk.geometry.bbox[2] + currChunk.geometry.bbox[5]) / 2;\n\n for (let i = 0; i < chunks.length; ++i) {\n\n const chunk = chunks[i];\n\n if (chunk == currChunk) {\n continue;\n }\n\n const bbox = chunk.geometry.bbox;\n\n const x = (chunk.geometry.bbox[0] + chunk.geometry.bbox[3]) / 2;\n const y = (chunk.geometry.bbox[1] + chunk.geometry.bbox[4]) / 2;\n const z = (chunk.geometry.bbox[2] + chunk.geometry.bbox[5]) / 2;\n\n if ( doBboxesIntersect(bbox, currBbox)) {\n\n const diffX = x - currX;\n const diffY = y - currY;\n const diffZ = z - currZ;\n\n const isParent = diffZ > 0 || diffZ==0 && diffY > 0 || diffZ == 0 && diffY == 0 && diffX > 0;\n\n if (isParent) {\n parentNeighbours.push(chunk);\n } else {\n childrenNeighbours.push(chunk);\n }\n\n }\n\n }\n\n }\n\n },\n\n getNeighbourChunks(chunk) {\n return this._chunksChildrenNeighbours.get(chunk);\n },\n\n setNeedsDupliVerticesUpdate(chunk, needs) {\n if (needs) {\n this._needDupliVerticesUpdate.add(chunk);\n } else {\n this._needDupliVerticesUpdate.delete(chunk);\n }\n },\n\n checkNeedsDupliVerticesUpdate(chunk) {\n return this._needDupliVerticesUpdate.has(chunk);\n },\n\n checkIsReady(object) {\n return object.loaded && !objState.checkIsUpdating(object);\n },\n\n setScene(scene) {\n this._scene = scene;\n },\n\n getScene() {\n return this._scene;\n },\n\n _getObjectSurfelsFile(object) {\n const surfelsDescription = object.getProperty(\"surfelsfile\");\n return surfelsDescription ? surfelsDescription[\"jsonref\"] : null;\n },\n\n _getObjectTrianglesFile(object) {\n if (object.type === objectType.FUSION) {\n return object.getProperty(\"geometriesfile\")[\"jsonref\"];\n } else {\n return object.getProperty(\"framesfile\")[\"jsonref\"];\n }\n },\n\n getObjectFiles(object, files) {\n const trianglesFile = this._getObjectTrianglesFile(object);\n if (trianglesFile) {\n files.push(trianglesFile);\n }\n const surfelsFile = this._getObjectSurfelsFile(object);\n if (surfelsFile) {\n files.push(surfelsFile);\n }\n },\n\n getPhotoGroupFiles(photoGroup, files) {\n files.push(photoGroup.getProperty(\"photosSource\")[\"jsonref\"]);\n },\n\n getCadSlice(object) {\n const slice = object.getProperty(\"cadModel\")[\"file\"];\n return slice;\n },\n\n //Note: this method is only needed for server-side manualalign\n async getSurfelsObjectFrameGeometrySlices(object) {\n const tmpSurfelsFile = object.getProperty(\"surfelsfile\");\n const tmpFrames = object.getProperty(\"frames\");\n\n //_selfPropertySetter usage is a hack\n object._selfPropertySetter(\"surfelsfile\", null);\n object._selfPropertySetter(\"frames\", []);\n object._selfPropertySetter(\"initStatus\", propertyInitStatus.INCOMPLETE);\n\n await projectTree.combineObjectStructure(object.getID());\n const surfelsObjectFrameGeometrySlices = object.getProperty(\"frames\");\n object._selfPropertySetter(\"surfelsfile\", tmpSurfelsFile);\n object._selfPropertySetter(\"frames\", tmpFrames);\n\n return surfelsObjectFrameGeometrySlices;\n },\n\n getObjectFramesProperty(object) {\n return object.getProperty(\"frames\");\n },\n\n async getFrameGeometrySlices(frameProperty) {\n const slices = new Set();\n for (const geometry of frameProperty.getValue(\"geometries\")) {\n const levels = geometry.getValue(\"levels\");\n slices.add(levels[0].getValue(\"file\"));\n }\n return Array.from(slices);\n },\n\n getFrameTextureSlices(object, frame=null) {\n let frameProperty;\n if (object.type === objectType.FUSION) {\n frameProperty = object.getProperty(\"frames\")[0];\n } else {\n frameProperty = object.getProperty(\"frames\").find(property => property.getValue(\"id\") === frame.getID());\n }\n\n const slices = new Set();\n for (const texture of frameProperty.getValue(\"textures\")) {\n const levels = texture.getValue(\"levels\");\n slices.add(levels[0].getValue(\"file\"));\n }\n return Array.from(slices);\n },\n\n _initDecimationMap() {\n this._sliceToFrames.clear();\n\n for (const object of this._objects) {\n if (!this._objectInitialized.has(object)) {\n continue;\n }\n\n const noDecimationFrame = object.hasTextures() ? object.frames.find(frame => frame.hasTextures()) : object.frames[0];\n for (const frameProperty of object.getProperty(\"frames\")) {\n const frame = object.frames.find(frame => frame.getID() === frameProperty.getValue(\"id\"));\n\n for (const geometryPropery of frameProperty.getValue(\"geometries\")) {\n const levels = geometryPropery.getValue(\"levels\");\n const filepath = levels[0].getValue(\"file\");\n let framesSet = this._sliceToFrames.get(filepath);\n if (!framesSet) {\n framesSet = new Set();\n this._sliceToFrames.set(filepath, framesSet);\n if (object.type === objectType.SCAN) {\n this._decimatedFramesSets.add(framesSet);\n }\n }\n\n if (frame.getID() === noDecimationFrame.getID()) {\n this._decimatedFramesSets.delete(framesSet);\n }\n\n framesSet.add(frame);\n\n }\n }\n }\n },\n\n _updateDecimationMap() {\n\n let changed = false;\n\n const slicesToLoad = this._scansDecimationRatio * this._sliceToFrames.size;\n let slicesLoaded = 0;\n\n const allFramesSets = Array.from(this._sliceToFrames.values());\n const texturedFramesSet = allFramesSets.filter(framesSet => {\n const firstFrame = framesSet.values().next().value;\n return firstFrame.textureList.length > 0;\n });\n const nonTexturedFramesSet = allFramesSets.filter(framesSet => {\n const firstFrame = framesSet.values().next().value;\n\n return firstFrame.textureList.length === 0;\n });\n\n for (const framesSet of allFramesSets) {\n const firstFrame = framesSet.values().next().value;\n const isTexturedFramesSet = firstFrame.textureList.length > 0;\n for (const frame of framesSet) {\n const isTexturedFrame = frame.textureList.length > 0;\n if (isTexturedFramesSet != isTexturedFrame) {\n output.warn(\"There are textured and untextured frames in the same slice.\");\n break;\n }\n }\n }\n\n const processedSets = new Set();\n let priority = 1;\n const decimateFramesSet = framesSets => {\n let step = framesSets.length - 1 || 1;\n\n while (step > 0) {\n for (let i = 0; i < framesSets.length; i += step) {\n const framesSet = framesSets[i];\n if (processedSets.has(framesSet)) {\n continue;\n }\n\n const decimationAllowed = this._decimatedFramesSets.has(framesSet);\n const firstFrame = framesSet.values().next().value;\n\n const sliceAlreadyLoaded = firstFrame.shouldBeLoaded;\n const sliceShown = firstFrame ? firstFrame.getVisibility() : false;\n const sliceShouldBeLoaded = (sliceAlreadyLoaded || sliceShown) && (!decimationAllowed || slicesLoaded < slicesToLoad);\n\n for (const frame of framesSet) {\n if (frame.shouldBeLoaded !== sliceShouldBeLoaded) {\n changed = true;\n }\n\n frame.shouldBeLoaded = sliceShouldBeLoaded;\n this._frameToPriority.set(frame, decimationAllowed ? priority : 1);\n }\n priority++;\n\n if (sliceShouldBeLoaded) {\n slicesLoaded++;\n }\n\n processedSets.add(framesSet);\n }\n\n step = Math.floor(step / 2);\n }\n }\n\n decimateFramesSet(texturedFramesSet);\n decimateFramesSet(nonTexturedFramesSet);\n for (const object of this.getPhotoGroups().concat(this.getMeasures())) {\n if (object.isLoadingNeeded()) changed = true;\n }\n\n return changed;\n\n },\n\n startProjectLoading() {\n return this._updateAllNonTexturedFrames();\n },\n\n _updateAllNonTexturedFrames() {\n for (const object of this._objects) {\n this.updateFramesVisibility(object);\n }\n return this.updateDecimation();\n },\n\n updateDecimation() {\n const changed = this._updateDecimationMap();\n if (!changed) {\n return Promise.resolve();\n }\n\n loadingProgress.init();\n return this.reloadObjects();\n },\n\n shiftLoadingQueue(queue) {\n //Note: whole asset group has same priority\n\n for (const assetGroup of queue) {\n if (assetGroup.type !== loader.GEOMETRY || !assetGroup.assets.length) {\n continue;\n }\n\n const asset = assetGroup.assets[0];\n const objectID = asset.payload.objectID;\n const frameID = asset.payload.frameID;\n\n const object = this.getObjectByID(objectID);\n if (!object) {\n continue;\n }\n\n const frame = object.frames.find(frame => frame.getID() === frameID);\n if (!frame) {\n continue;\n }\n\n assetGroup.priority = this._frameToPriority.get(frame);\n }\n },\n\n async reloadObjects() {\n appState.setStateValue(\"isLoading\", true);\n const promises = [];\n\n for (const object of this.getObjects()) {\n\n object.unloadMarkedFrames();\n\n if (objState.checkIsUpdating(object)) {\n continue;\n }\n\n if (object.checkNeedsLoadFrames()) {\n const fusionHasLods = object.type === objectType.FUSION && this.hasObjectLods(object);\n if (object.type === objectType.SCAN || object.type === objectType.SURFELS) monitoring.registerLoadingObject();\n let promise;\n if (config.lodPreload && fusionHasLods) {\n const fastLevel = 1;\n const defaultLevel = 0;\n promise = this.loadObjectData(object, fastLevel).then(() => {\n const frame = object.frames[0];\n //NOTE: we have to release the flags to reload object geometry\n frame.loaded = false;\n for (const chunk of frame.model.chunks) {\n chunk.needsReload = true;\n }\n return this.loadObjectData(object, defaultLevel);\n });\n } else {\n const level = object.type === objectType.SURFELS && appState.getStateValue(\"scanMode\") === scanMode.SURFELS_MID && this.hasObjectLods(object) ? 1 : 0;\n promise = this.loadObjectData(object, level);\n }\n promise = promise.finally(() => {\n if (object.type === objectType.SCAN || object.type === objectType.SURFELS) monitoring.unregisterLoadingObject();\n });\n\n promises.push(promise);\n }\n }\n\n for (const object of this.getPhotoGroups().concat(this.getMeasures())) {\n if (!object.isLoadingNeeded()) continue;\n\n promises.push(object.loadData());\n }\n\n await Promise.all(promises);\n\n appState.setStateValue(\"isLoading\", false);\n },\n\n setScansDecimationRatio(rate) {\n\n this._scansDecimationRatio = rate;\n\n this.updateDecimation();\n },\n\n getScansDecimationRatio() {\n return this._scansDecimationRatio;\n },\n\n /*\n createGroup(name, id, groupID) {\n const property = reformer.createGroupProperty();\n\n property.insertValue(\"name\", name);\n property.insertValue(\"groupID\", groupID);\n property.insertValue(\"id\", id);\n\n const group = this._createGroupWrapper(property);\n return group;\n },\n */\n\n _createGroupWrapper(property) {\n const group = new Group({\n id : property.getValue(\"id\"),\n });\n\n this._groups.push(group);\n return group;\n },\n\n removeGroup(groupID) {\n const group = this.getGroupByID(groupID);\n if (!group) {\n output.error(output.API_ERROR, \"Can't remove group. Wrong group id: \\\"\" + groupID + \"\\\"\");\n return;\n }\n const payload = {\n id: group.getID(),\n uuid: group.getUUID(),\n name: group.getName(),\n project_files: [],\n }\n\n this._removeGroup(group);\n return payload;\n },\n\n _removeGroup(group) {\n const groups = this._groups;\n for (const object of this.getObjects().concat(groups).concat(this.getPhotoGroups())) {\n if (object.getGroup() === group.getID()) {\n object.setGroup(group.getGroup());\n }\n }\n\n groups.splice(groups.indexOf(group), 1);\n projectTree.removeObject(group.getID());\n },\n\n _removePhotoGroup(photoGroup) {\n this._photoGroups.splice(this._photoGroups.indexOf(photoGroup), 1);\n projectTree.removeObject(photoGroup.getID());\n },\n\n _removeMeasure(measure) {\n this._measures.splice(this._measures.indexOf(measure), 1);\n projectTree.removeObject(measure.getID());\n },\n\n hasObjectLods(object) {\n const geometriesInfo = object.getProperty(\"frames\")[0].getValue(\"geometries\");\n for (const geometryInfo of geometriesInfo) {\n if (geometryInfo.getValue(\"levels\").length > 1) return true;\n }\n\n return false;\n },\n\n hasScanSurfels(scan) {\n return scan.getProperty(\"surfelsfile\") !== null;\n },\n\n async setObjectVisibility(object, visible) {\n object.setVisibility(visible);\n if (object instanceof DetachedWrapper) return;\n\n if (visible) await this.initObjects();\n\n if (object instanceof ObjectWrapper) {\n if (visible) {\n await this.updateNonTexturedFrames(object);\n } else {\n releaseSlicedCache(object);\n }\n\n reportGeometrySelection(object);\n\n this.applyState(object);\n\n events.emit(\"object_visibility_change\");\n } else {\n await this.updateDecimation();\n }\n\n },\n\n duplicateObjects(objectIDs) {\n\n const payload = {\n \"operations\" : [],\n \"projectFiles\" : []\n };\n const operations = payload[\"operations\"];\n const projectFiles = [];\n const groupIdMap = {};\n\n for (const id of objectIDs) {\n const object = this.getObjectByID(id) || this.getGroupByID(id) || this.getPhotoGroupByID(id);\n if (!object) {\n output.warn(`Couldn't copy object. Unknown id: ${id}`);\n continue;\n }\n\n if (!(object.getGroup() in groupIdMap)) {\n groupIdMap[object.getGroup()] = [];\n }\n\n groupIdMap[object.getGroup()].push(object);\n }\n\n for (const groupID in groupIdMap) {\n const entry = {\"op\": \"copyEntry\",\n \"objects\": []};\n\n if (groupID) {\n entry[\"groupID\"] = groupID;\n }\n for (const object of groupIdMap[groupID]) {\n entry[\"objects\"].push(this._generateObjectCopyEntry(object, projectFiles));\n }\n\n operations.push(entry);\n }\n\n payload[\"projectFiles\"] = [... new Set(projectFiles)];\n\n return payload;\n\n // NOTE: This might come in handy when objects duplication is done in RAM\n /*\n const duplicatedData = duplicateObjectData(data);\n\n let newObject;\n switch (object.type) {\n case objectType.SCAN: {\n newObject = this._createScanWrapper(duplicatedData);\n for (let i = 0; i < object.frames.length; ++i) {\n if (!object.frames[i].visible) {\n continue;\n }\n newObject.frames[i].initChunks(duplicatedData[\"frames\"][i][\"geometries\"]);\n }\n\n break;\n }\n\n case objectType.FUSION: {\n newObject = this._createFusionWrapper(duplicatedData);\n newObject.frames[0].initChunks(duplicatedData[\"geometries\"]);\n\n break;\n }\n\n case objectType.SURFELS: {\n newObject = this._createSurfelsWrapper(duplicatedData);\n newObject.frames[0].initChunks(duplicatedData[\"geometries\"]);\n\n break;\n }\n }\n\n this._cloneObjectGeometry(newObject, object);\n\n newObject.setVisibility(object.visible);\n newObject.locked = object.locked;\n newObject.model.setMatrix(object.model.modelMatrix);\n\n const objInfo = {\n \"copyOf\" : object.getID()\n };\n this._updateObjectInfo(newObject, objInfo);\n this._projectContent.objects.push(objInfo);\n\n this.onObjectLoaded(newObject);\n\n return object;\n */\n\n },\n\n generateUniqueGroupName() {\n\n const groupsNames = new Set();\n\n for (let i = 0; i < this._groups.length; ++i) {\n groupsNames.add(this._groups[i].getName());\n }\n\n let n = 0;\n let name = \"Group_\" + n;\n\n while (groupsNames.has(name)) {\n ++n;\n name = \"Group_\" + n;\n }\n\n return name;\n\n },\n\n generateUniqueGroupID() {\n\n const groupIDs = new Set();\n\n for (const group of this.getGroups()) {\n groupIDs.add(group.getID());\n }\n\n for (const object of this.getObjects().concat(this.getPhotoGroups()).concat(this.getMeasures())) {\n groupIDs.add(object.getID());\n }\n\n let n = 0;\n let id = \"n\" + n.toString().padStart(2, \"0\");\n\n while (groupIDs.has(name)) {\n ++n;\n id = \"n\" + n.toString().padStart(2, \"0\");\n }\n\n return id;\n\n },\n\n _resetChunkDupliVertices(chunk) {\n\n chunk.resetDupliVertices();\n chunk.resetParentVerticesMask();\n\n const parents = this._chunksParentNeighbours.get(chunk);\n for (let i = 0; i < parents.length; ++i) {\n parents[i].resetDupliVertices();\n this.setNeedsDupliVerticesUpdate(parents[i], true)\n }\n\n const children = this._chunksChildrenNeighbours.get(chunk);\n\n for (let i = 0; i < children.length; ++i) {\n\n const childChunk = children[i];\n childChunk.resetParentVerticesMask();\n this.setNeedsDupliVerticesUpdate(childChunk, true)\n\n const childParents = this._chunksParentNeighbours.get(childChunk);\n for (let j = 0; j < childParents.length; ++j) {\n childParents[j].resetDupliVertices();\n this.setNeedsDupliVerticesUpdate(childParents[j], true)\n }\n\n }\n\n },\n\n _cloneObjectGeometry(dstObject, srcObject) {\n\n const srcFrames = srcObject.frames;\n const dstFrames = dstObject.frames;\n\n for (let i = 0; i < dstFrames.length; ++i) {\n\n const srcFrame = srcFrames[i];\n const dstFrame = dstFrames[i];\n\n const srcFrameModel = srcFrames[i].model;\n const dstFrameModel = dstFrames[i].model;\n\n const srcChunks = srcFrameModel.chunks;\n const dstChunks = dstFrameModel.chunks;\n\n for (let j = 0; j < dstChunks.length; ++j) {\n\n const srcChunk = srcChunks[j];\n const dstChunk = dstChunks[j];\n\n const srcGeometry = srcChunk.geometry;\n const dstGeometry = cloneGeometry(srcGeometry);\n\n dstFrameModel.setChunkGeometry(dstChunk, dstGeometry);\n dstFrameModel.updateChunkBBox(dstChunk);\n\n this.markChunkAsNew(dstChunk);\n\n }\n\n dstFrame.numPolygons = srcFrame.numPolygons;\n dstFrame.numVertices = srcFrame.numVertices;\n dstFrame.loaded = true;\n\n }\n\n },\n\n prepareWireframeGeometry(object, enabled) {\n\n if (!object.loaded) {\n return;\n }\n\n for (const frame of object.frames) {\n if (frame.loaded) {\n for (const chunk of frame.model.chunks) {\n chunk.updateVertexID(enabled);\n }\n }\n }\n\n },\n\n getVerbosityInfo() {\n let info = \"\";\n\n for (const object of this.getObjects()) {\n info += this.getVerbosityAboutObject(object);\n }\n\n return info;\n },\n\n getVerbosityAboutObject(object) {\n let chunkOctreeUpdated = false;\n // NOTE: come up about this info\n // if (this.checkIsReady(object)) {\n // chunkOctreeUpdated = true;\n // for (const frame of object.frames) {\n // for (const chunk of frame.model.chunks) {\n // if (this.checkNeedsOctreeUpdate(chunk)) {\n // chunkOctreeUpdated = false;\n // }\n // }\n // }\n // }\n\n return `object: ${object.id}, type: ${object.type}, visibility: ${object.getVisibility()}, isLocked: ${object.getLockState()}, isLoaded: ${object.loaded}, isUpdating: ${objState.checkIsUpdating(object)}, octreeBuilt: ${object.getState(appState.GS_OCTREE)}, chunksOctreeUpdated: ${chunkOctreeUpdated}\\n`;\n },\n\n\n updateShadesForGroupObjects(group, enabled) {\n const objectsInGroup = this.getObjects().concat(this.getPhotoGroups()).filter(object => object.getGroup() === group.getID());\n const groupColor = group.getColor();\n\n const {h, s, l} = colorUtils.rgbToHsl({r: groupColor[0], g: groupColor[1], b: groupColor[2]});\n const shadesCount = objectsInGroup.length + 1;\n const step = (1 - l) / shadesCount;\n\n const frameColorEnabled = appState.getStateValue(\"colorMode\") === appState.CM_FRAME_COLOR;\n\n for (let i = 0; i < objectsInGroup.length; i++) {\n const object = objectsInGroup[i];\n const newObjectColor = colorUtils.hslToRgb({h, s, l: l + step * (i+1)});\n if (enabled) {\n object.applyTemporaryColorToFrames(newObjectColor);\n } else if (frameColorEnabled) {\n object.applyUniqueColorToFrames();\n } else {\n object.applyObjectColorToFrames();\n }\n }\n },\n\n updateColorsForGroupObjects(group, enabled) {\n const objectsInGroup = this._objects.filter(object => object.getGroup() === group.getID());\n const groupColor = group.getColor();\n const frameColorEnabled = appState.getStateValue(\"colorMode\") === appState.CM_FRAME_COLOR;\n\n for (const object of objectsInGroup) {\n if (enabled) {\n object.applyTemporaryColorToFrames(groupColor);\n } else if (frameColorEnabled) {\n object.applyUniqueColorToFrames();\n } else {\n object.applyObjectColorToFrames();\n }\n }\n },\n\n async removeObjects(descriptors) {\n const payload = {\n \"projectFiles\": [],\n }\n const projectFiles = payload[\"projectFiles\"];\n const dataFiles = [];\n\n for (const desc of descriptors) {\n const objectID = desc.objectID;\n const object = this.getObjectByID(objectID) || this.getGroupByID(objectID) || this.getPhotoGroupByID(objectID);\n if (!object) {\n output.error(output.API_ERROR, \"Can't remove object \" + objectID + \". Not found\");\n continue;\n }\n\n await this._recursiveRemoveObject(object, desc.l1ID, projectFiles, dataFiles);\n }\n\n payload[\"projectFiles\"] = [...new Set(projectFiles)];\n if (dataFiles.length) payload[\"dataFiles\"] = [...new Set(dataFiles)];\n return payload;\n },\n\n async _recursiveRemoveObject(object, l1ID, projectFiles, dataFiles) {\n if (object.type === objectType.PHOTO_GROUP) {\n this.getPhotoGroupFiles(object, projectFiles);\n if (l1ID !== undefined) {\n object.removePhoto(l1ID, dataFiles);\n } else {\n this._removePhotoGroup(object);\n }\n } else if (object.type === objectType.GROUP) {\n const children = this._getGroupChildren(object);\n for (const child of children) {\n await this._recursiveRemoveObject(child, l1ID, projectFiles, dataFiles);\n }\n this._removeGroup(object);\n } else {\n this.getObjectFiles(object, projectFiles);\n await this.removeObject(object);\n }\n },\n\n getChunkPath(object, frameID, chunkID) {\n const frame = object.frames.find(frame => frame.getID() === frameID);\n if (!frame) {\n output.error(output.DEVELOPERS_ERROR, \"Can't find frame \" + frameID + \" in workspace\");\n return;\n }\n\n const frameProperties = object.getProperty(\"frames\");\n if (!frameProperties) return;\n\n const frameProperty = frameProperties.find(property => property.getValue(\"id\") === frameID);\n if (!frameProperty) return;\n\n const geometryProperty = frameProperty.getValue(\"geometries\").find(property => property.getValue(\"id\") === chunkID);\n if (!geometryProperty) {\n output.error(output.DEVELOPERS_ERROR, \"Can't find chunk \" + chunkID + \" in project sjson\");\n return;\n }\n\n const levels = geometryProperty.getValue(\"levels\");\n\n return levels[0].getValue(\"file\");\n },\n\n _generateObjectCopyEntry(object, projectFiles) {\n const entry = {\n \"visibility\": object.getVisibility(),\n \"color\": reformer.generateHexColorRandom()\n };\n const newName = \"Copy of \" + object.getName();\n\n entry[\"id\"] = object.getID();\n if (object.type === objectType.GROUP) {\n const children = this._getGroupChildren(object);\n entry[\"objects\"] = children.map(child => this._generateObjectCopyEntry(child, projectFiles));\n entry[\"groupName\"] = newName;\n } else if (object.type === objectType.PHOTO_GROUP) {\n this.getPhotoGroupFiles(object, projectFiles);\n entry[\"name\"] = newName;\n } else {\n this.getObjectFiles(object, projectFiles);\n entry[\"name\"] = newName;\n }\n\n return entry;\n },\n\n _getGroupChildren(group) {\n return this.getObjects().concat(this._groups).concat(this._photoGroups).filter(obj => obj.getGroup() === group.id);\n },\n\n async updateSaveChunksState() {\n const promises = [];\n for (const object of this.getObjects()) {\n promises.push(this.getObjectBuffersToSave(object));\n\n const frames = object.getProperty(\"frames\");\n for (const frame of object.frames) {\n const frameProperty = frames.find(property => property.getValue(\"id\") === frame.getID());\n\n if (!frameProperty) {\n output.error(output.DEVELOPERS_ERROR, \"Can't find frame \" + frame.getID() + \" in project sjson\");\n continue;\n }\n\n for (let deletedChunkID of frame.chunksToBeRemoved) {\n const geometryProperty = frameProperty.getValue(\"geometries\").find(property => property.getValue(\"id\") === deletedChunkID);\n if (!geometryProperty) {\n output.error(output.DEVELOPERS_ERROR, \"Can't find chunk \" + deletedChunkID + \" in project sjson\");\n continue;\n }\n\n let chunkFullID = frame.getID() + \"-\" + deletedChunkID;\n if (object.type === objectType.SCAN || object.type === objectType.CAD) {\n chunkFullID = object.getID() + \"-\" + chunkFullID;\n }\n\n const chunkPaths = [];\n const levelsProperty = geometryProperty.getValue(\"levels\");\n if (_useChunkLevels && object.type !== objectType.FUSION) {\n const levelProperty = levelsProperty[object.geometryLevel];\n chunkPaths.push(levelProperty.getValue(\"file\"));\n } else {\n for (const levelProperty of levelsProperty) {\n chunkPaths.push(levelProperty.getValue(\"file\"));\n }\n }\n if (geometryProperty.getValue(\"attrs\")) {\n chunkPaths.push(geometryProperty.getValue(\"attrs\")[\"file\"]);\n }\n\n if (_useChunkLevels) {\n const levelProperty = levelsProperty[object.geometryLevel];\n const levelID = levelProperty.getValue(\"id\");\n chunkFullID = chunkFullID + \"-\" + levelID;\n }\n\n this.getObjectFiles(object, _saveChunksState.projectFiles);\n\n const deletePayload = {\"chunkId\": chunkFullID, \"paths\": chunkPaths, \"state\": \"deleted\"};\n _saveChunksState.deletePayloads.push(deletePayload);\n }\n\n if (frame.model.chunks.length === 0 && frame.chunksToBeRemoved.length > 0) {\n const frameFullID = object.type === objectType.SCAN || object.type === objectType.CAD ? object.getID() + \"-\" + frame.getID() : frame.getID();\n processFrameDeletion(frameProperty, frameFullID);\n }\n frame.chunksToBeRemoved.length = 0;\n }\n }\n\n try {\n await Promise.all(promises);\n } catch (error) {\n output.error(output.DEVELOPERS_ERROR, \"Can't pack chunks. Reason: \" + error);\n }\n },\n\n saveChunks() {\n const saveId = this._saveID++;\n\n const slicedMode = projectTree.version >= 4;\n events.emit(\"save\", {\"start\": true, \"saveId\": saveId});\n appState.setStateValue(\"isSaving\", true);\n\n generateSaveEventsForChunks(slicedMode, saveId);\n\n appState.setStateValue(\"isSaving\", false);\n events.emit(\"save\", {\"end\": true, saveId});\n },\n\n saveJSON() {\n const saveId = this._saveID++;\n\n events.emit(\"save\", {\"start\": true, \"saveId\": saveId});\n appState.setStateValue(\"isSaving\", true);\n\n //TODO: WS-337\n const serializedJson = reformer.getSerializedProject();\n events.emit(\"save\", {\"sjson\": serializedJson, \"saveId\": saveId});\n\n appState.setStateValue(\"isSaving\", false);\n events.emit(\"save\", {\"end\": true, saveId});\n },\n\n getObjectMaxError(objectID) {\n const object = this.getObjectByID(objectID);\n if (!object) {\n output.error(output.API_ERROR, `Can't get object's max error. Object with id \"${objectID}\" is not found`);\n return null;\n }\n\n if (object.type !== objectType.SCAN && object.type !== objectType.SURFELS) {\n return null;\n }\n\n const maxError = object.getProperty(\"maxError\");\n const scannerType = object.getScannerType();\n const maxErrorColor = colorUtils.getErrorColor(maxError, scannerType, []);\n return {\n color: maxErrorColor,\n maxError: maxError,\n };\n },\n\n activateObjectOutline(object, outlinePass, highlightPreset) {\n const shader = object.model.shader;\n outlinePass.setHighlightSettings(highlightPreset);\n\n this.scheduleObjectDrawQueries(object, false);\n\n shader.enableStencilTest();\n shader.setStencilFrontZPassAction(stencilAction.REPLACE);\n shader.setStencilBackZPassAction(stencilAction.REPLACE);\n shader.setStencilFrontZFailAction(stencilAction.REPLACE);\n shader.setStencilBackZFailAction(stencilAction.REPLACE);\n shader.setStencilReferenceValue(stencilValue.HIGHLIGHTED_OBJECT);\n shader.setStencilFunction(stencilFunc.ALWAYS);\n },\n\n deactivateObjectOutline(object) {\n object.model.shader.disableStencilTest();\n this.scheduleObjectDrawQueries(object, true);\n },\n}\n\nfunction doBboxesIntersect(a, b) {\n return (a[0] <= b[3] && a[3] >= b[0]) &&\n (a[1] <= b[4] && a[4] >= b[1]) &&\n (a[2] <= b[5] && a[5] >= b[2]);\n}\n\n// NOTE: This might come in handy when objects duplication is done in RAM\n/*\nfunction duplicateObjectData(data) {\n\n const JSONData = JSON.stringify(data);\n const duplicatedData = JSON.parse(JSONData);\n\n duplicatedData[\"id\"] = idGenerator.getNext();\n\n const frames = duplicatedData[\"frames\"];\n\n if (frames) {\n for (let i = 0; i < frames.length; ++i) {\n dropGeometryDataLevels(frames[i]);\n }\n } else {\n dropGeometryDataLevels(duplicatedData);\n }\n\n return duplicatedData;\n\n}\n\nfunction dropGeometryDataLevels(data) {\n\n const geometriesData = data[\"geometries\"];\n\n for (let i = 0; i < geometriesData.length; ++i) {\n const geometryData = geometriesData[i];\n geometryData[\"levels\"] = [];\n }\n\n}\n*/\n\nfunction cloneGeometry(srcGeometry) {\n\n const srcLayout = srcGeometry.getLayout();\n\n const layout = {};\n const bbox = srcGeometry.bbox.slice();\n\n for (let bufferName in srcLayout) {\n\n const srcItem = srcLayout[bufferName];\n\n const dstItem = new GeometryBuffer({\n buffer: srcItem.buffer.slice(),\n type: srcItem.type,\n byteOffset: srcItem.getByteOffset(),\n stride: srcItem.getStride(),\n divisor: srcItem.getDivisor()\n });\n\n layout[bufferName] = dstItem;\n\n }\n\n return new Geometry({layout, bbox});\n\n}\n\nfunction releaseSlicedCache(object) {\n const textureLevel = object.type === objectType.FUSION ? 0 : config.scansTextureLevel;\n\n for (const frameProperty of object.getProperty(\"frames\")) {\n for (const geometry of frameProperty.getValue(\"geometries\")) {\n const levels = geometry.getValue(\"levels\");\n if (object.geometryLevel === null || levels.length <= object.geometryLevel) continue;\n\n const filename = levels[object.geometryLevel].getValue(\"file\");\n containersCache.releaseContainer(reformer.getProjectDirectory() + filename);\n }\n\n for (const texture of frameProperty.getValue(\"textures\")) {\n const levels = texture.getValue(\"levels\");\n const filename = levels[textureLevel].getValue(\"file\");\n containersCache.releaseContainer(reformer.getProjectDirectory() + filename);\n }\n }\n}\n\nfunction updateModelTransform(model, data) {\n if (config.viewOnlyMode) return false;\n\n const eps = 0.000001;\n let upToDate = true;\n\n for (let i=0; i<16; i++) {\n if (Math.abs(model.localMatrix[i] - data.getValue(\"transform\")[i]) > eps) {\n upToDate = false;\n break;\n }\n }\n\n if (!upToDate) {\n model.setMatrix(data.getValue(\"transform\"));\n model.updateMatrix();\n }\n\n return !upToDate;\n}\n\nasync function _updatePhotoGroup(photoGroup, oldProperty, property) {\n if (oldProperty.getValue(\"initStatus\") !== propertyInitStatus.COMPLETE) return false;\n\n const oldGeometryHash = oldProperty.getValue(\"photosSource\")[\"hash\"];\n const newGeometryHash = property.getValue(\"photosSource\")[\"hash\"];\n const geometryUpToDate = oldGeometryHash === newGeometryHash;\n\n if (geometryUpToDate) {\n property.setValue(\"photos\", oldProperty.getValue(\"photos\"));\n property.setValue(\"initStatus\", propertyInitStatus.COMPLETE);\n } else {\n photoGroup.unloadData();\n await projectTree.combineObjectStructure(photoGroup.getID());\n }\n\n return !geometryUpToDate;\n}\n\nasync function _updateMeasure(measure, oldProperty, newProperty) {\n if (oldProperty.getValue(\"initStatus\") !== propertyInitStatus.COMPLETE) return false;\n\n newProperty.setValue(\"selected\", oldProperty.getValue(\"selected\"));\n if (oldProperty.getValue(\"geometriesSource\")[\"hash\"] === newProperty.getValue(\"geometriesSource\")[\"hash\"]) {\n newProperty.setValue(\"geometries\", oldProperty.getValue(\"geometries\"));\n newProperty.setValue(\"properties\", oldProperty.getValue(\"properties\"));\n\n if (newProperty.getValue(\"type\") === objectType.SECTION) {\n for (let i=0; i 0) {\n _saveChunksState.deletedFrames.push({\"id\": fullID, \"paths\": frameFiles});\n }\n}\n\nfunction generateSaveEventsForChunks(slicedMode, saveId) {\n const savePayload = {\n \"saveId\": saveId,\n \"sliceDiffs\": [],\n \"projectFiles\": [... new Set(_saveChunksState.projectFiles)],\n };\n\n if (slicedMode) {\n const sliceDiffsMap = new Map();\n for (const payloadGroup of [_saveChunksState.addPayloads, _saveChunksState.updatePayloads, _saveChunksState.deletePayloads]) {\n for (const payload of payloadGroup) {\n const chunkBuffer = payload[\"buffer\"];\n const slicePaths = payload[\"paths\"];\n let currentSliceDiff = sliceDiffsMap.get(slicePaths[0]);\n if (!currentSliceDiff) {\n currentSliceDiff = {\n \"buffers\": [],\n \"chunks\": [],\n \"paths\": new Set(),\n };\n sliceDiffsMap.set(slicePaths[0], currentSliceDiff);\n }\n\n if (chunkBuffer) {\n currentSliceDiff[\"buffers\"].push(chunkBuffer);\n }\n\n const chunkMeta = {\n \"chunkId\": payload[\"chunkId\"],\n \"state\": payload[\"state\"],\n };\n currentSliceDiff[\"chunks\"].push(chunkMeta);\n slicePaths.forEach(path => currentSliceDiff[\"paths\"].add(path))\n }\n }\n\n const sliceDiffs = Array.from(sliceDiffsMap.values());\n for (const sliceDiff of sliceDiffs) {\n sliceDiff[\"paths\"] = Array.from(sliceDiff[\"paths\"]);\n sliceDiff[\"buffer\"] = containersCache.packBuffers(sliceDiff[\"buffers\"]);\n delete sliceDiff[\"buffers\"];\n }\n\n savePayload[\"sliceDiffs\"] = sliceDiffs;\n if (_saveChunksState.deletedFrames.length > 0) {\n savePayload[\"deletedFrames\"] = _saveChunksState.deletedFrames;\n }\n\n } else {\n for (const payloadGroup of [_saveChunksState.addPayloads, _saveChunksState.updatePayloads, _saveChunksState.deletePayloads]) {\n for (const payload of payloadGroup) {\n const sliceDiff = {\n \"chunks\": []\n };\n\n const chunkInfo = {\n \"chunkId\": payload[\"chunkId\"],\n \"state\": payload[\"state\"],\n };\n\n if (payload[\"buffer\"]) {\n sliceDiff[\"buffer\"] = payload[\"buffer\"];\n }\n\n sliceDiff[\"chunks\"].push(chunkInfo);\n savePayload[\"sliceDiffs\"].push(sliceDiff);\n }\n }\n }\n\n events.emit(\"save\", savePayload);\n\n _saveChunksState.addPayloads.length = 0;\n _saveChunksState.updatePayloads.length = 0;\n _saveChunksState.deletePayloads.length = 0;\n _saveChunksState.deletedFrames.length = 0;\n _saveChunksState.projectFiles.length = 0;\n}\n","type Color = {\n r: number,\n g: number,\n b: number,\n}\n\ntype ColorWrapper = {\n color: Color,\n}\n\ntype Fresnel = {\n bias: number,\n power: number,\n scale: number,\n backfaceFactor: number,\n}\n\ninterface IConfig {\n readonly maxHistoryUndos: number,\n readonly selectionColor: Color,\n readonly deselectionColor: Color,\n readonly xrayBackgroundColor: Color,\n readonly outlineColor: Color,\n readonly cadOutlineColor: Color,\n readonly diffuseReflectivity: number[],\n readonly textureReflectivity: number[],\n readonly widgetsLights: ColorWrapper[],\n readonly lights: ColorWrapper[],\n readonly cutOffPlaneFColor: Color,\n readonly cutOffPlaneBColor: Color,\n readonly maxErrorFusionColor: Color,\n readonly geometryMemoryLimit: number, // bytes\n readonly greenErrorColor: number[],\n readonly yellowErrorColor: number[],\n readonly orangeErrorColor: number[],\n readonly redErrorColor: number[],\n readonly darkRedErrorColor: number[],\n readonly scansTextureLevel: number,\n readonly maxPixelRatio: number,\n readonly modelWithWireframeOpacity: number,\n readonly nodeMaxImageSize: number,\n readonly enableAntialiasing: boolean,\n readonly postBlending: boolean,\n readonly surfelsFixedPointSize: number,\n readonly frensel: Fresnel,\n readonly drawQueries: boolean,\n\n backgroundColor: Color,\n backgroundTexture: string,\n cacheUnloadedData: boolean,\n viewOnlyMode: boolean,\n useWorkers: boolean,\n dropTextures: boolean,\n enableRendering: boolean,\n clientAlign: boolean,\n enableManipulatorsWarnings: boolean,\n adaptiveSurfelsFiltering: boolean,\n maxWorkersPerTask: number,\n recalculateInterfaceDepth: boolean,\n lodPreload: boolean,\n perObjectEditing: boolean,\n}\n\nconst config: IConfig = {\n maxHistoryUndos: 20,\n selectionColor: {r: 0.851, g: 0.337, b: 0.337},\n deselectionColor: {r: 0.54, g: 0.86, b: 0.6},\n xrayBackgroundColor: {r: 0.1, g: 0.1, b: 0.1},\n outlineColor: {r: 0.18, g: 0.5, b: 0.93},\n cadOutlineColor: {r: 1.0, g: 1.0, b: 1.0},\n diffuseReflectivity: [0.11, 0.55, 0.33],\n textureReflectivity: [0.11, 1.0, 0.33],\n widgetsLights: [\n {color: {r: 1, g: 1, b: 1}}\n ],\n lights: [\n {color: {r: 1, g: 1, b: 1}}\n ],\n cutOffPlaneFColor: {r: 0.0, g: 0.8, b: 0.0},\n cutOffPlaneBColor: {r: 0.8, g: 0.0, b: 0.0},\n maxErrorFusionColor: {r: 0.6, g: 0.6, b: 0.6},\n geometryMemoryLimit: 500000000, // bytes\n greenErrorColor: [0.0, 1.0, 0.0],\n yellowErrorColor: [1.0, 1.0, 0.0],\n orangeErrorColor: [1.0, 0.65, 0.0],\n redErrorColor: [1.0, 0.0, 0.0],\n darkRedErrorColor: [0.4, 0.0, 0.0],\n scansTextureLevel: 0,\n maxPixelRatio: 2,\n modelWithWireframeOpacity: 0.1,\n nodeMaxImageSize: 4096,\n enableAntialiasing: true,\n postBlending: true,\n surfelsFixedPointSize: 3.0,\n frensel: {\n bias: 0.3,\n power: 2.0,\n scale: 0.8,\n backfaceFactor: 0.8,\n },\n drawQueries: false,\n\n backgroundColor: {r: 0.898, g: 0.898, b: 0.898},\n backgroundTexture: \"\",\n cacheUnloadedData: false,\n viewOnlyMode: false,\n useWorkers: false,\n dropTextures: false,\n enableRendering: true,\n clientAlign: false,\n enableManipulatorsWarnings: false,\n adaptiveSurfelsFiltering: false,\n maxWorkersPerTask: 4,\n recalculateInterfaceDepth: false,\n lodPreload: false,\n perObjectEditing: false,\n};\n\nexport default config;\n","import output from \"_src/engine/output\";\n\nimport {propertyType, objectType, cadType, propertyInitStatus} from \"_src/constants\";\nimport { colorUtils } from \"_src/utils\";\n\nlet reported = {};\n\nconst HSL_THRESHOLD = { h: 2 / 360, s: 1 / 100, l: 1 };\n\nexport function createProperty(type) {\n switch(type) {\n case propertyType.LEVEL:\n return createLevelProperty();\n case propertyType.ASSET:\n return createAssetProperty();\n case propertyType.OBJECT:\n return createObjectProperty();\n case propertyType.FRAME:\n return createFrameProperty();\n case propertyType.GROUP:\n return createGroupProperty();\n case propertyType.MEASURE:\n return createMeasureProperty();\n case propertyType.PHOTO_GROUP:\n return createPhotoGroupProperty();\n }\n}\n\nexport function reformValue(data, fieldName, generateValueMethod, reportName) {\n\n if (!valueExists(data, fieldName) && reportName) {\n reportOnce(reportName, fieldName);\n }\n\n if (!valueExists(data, fieldName) || valueIsIllegal(data, fieldName)) {\n return generateValueMethod();\n } else {\n return data[fieldName];\n }\n\n}\n\nexport function generateGroupColor(shades) {\n\n if (shades === undefined || shades.length === 0 ) {\n return colorUtils.generateHexColor();\n }\n\n const hslShades = shades.map(color => colorUtils.rgbToHsl(color));\n\n if (!checkShadesCompatibility(hslShades)) {\n return colorUtils.generateHexColor();\n }\n\n hslShades.sort((a, b) => a.l - b.l);\n\n const shadesCount = shades.length;\n\n const theDarkestShade = hslShades[0];\n const theLightestShade = hslShades[shadesCount - 1];\n const step = (shadesCount - 1) > 0 ? (theLightestShade.l - theDarkestShade.l) / (shadesCount - 1) : theDarkestShade.l / 2;\n const groupShade = { ...theDarkestShade, l: Math.max(theDarkestShade.l - step, 0) };\n\n const rgbColor = colorUtils.hslToRgb(groupShade);\n\n return colorUtils.rgbToHex(rgbColor[0], rgbColor[1], rgbColor[2]);\n\n}\n\nexport function getHexPaletteUnique(colorList) {\n const color = colorUtils.getPaletteColorUnique(colorList);\n colorList.push(color);\n return color;\n}\n\nexport function deepCopy(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\nexport function cleanup() {\n reported = {};\n}\n\nexport function getCadType(objectData) {\n const cadTypeString = objectData[\"type\"];\n switch (cadTypeString) {\n case \"model\":\n return cadType.MODEL;\n case \"cylinder\":\n return cadType.CYLINDER;\n case \"cone\":\n return objectData[\"properties\"][\"truncated\"] ? cadType.TRUNCATED_CONE : cadType.CONE;\n case \"sphere\":\n return cadType.SPHERE;\n case \"plane\":\n return cadType.PLANE;\n case \"torus\":\n return cadType.TORUS;\n case \"free-form\":\n return cadType.FREEFORM;\n default:\n return cadType.UNDEFINED;\n }\n}\n\nclass Property {\n\n constructor() {\n this._property = {};\n }\n\n getValue(name) {\n if (!(name in this._property)) {\n throw `Couldn't find property ${name}`;\n }\n return this._property[name];\n }\n\n setValue(name, value) {\n this._property[name] = value;\n }\n\n insertValue(name, value) {\n if (!(name in this._property)) {\n throw `Couldn't find property ${name}`;\n }\n this._property[name] = value;\n }\n\n getPropertyMap() {\n return deepCopy(this._property);\n }\n\n}\n\nfunction createAssetProperty() {\n const property = new Property();\n\n property.setValue(\"id\", \"\");\n property.setValue(\"box\", []);\n property.setValue(\"grid\", []);\n property.setValue(\"name\", \"\");\n property.setValue(\"levels\", []);\n property.setValue(\"attrs\", null);\n\n return property;\n}\n\nfunction createLevelProperty() {\n const property = new Property();\n\n property.setValue(\"id\", \"\");\n property.setValue(\"file\", \"\");\n property.setValue(\"hash\", \"\");\n property.setValue(\"width\", 0);\n property.setValue(\"height\", 0);\n property.setValue(\"channels\", 0);\n property.setValue(\"index\", 0);\n property.setValue(\"name\", \"\");\n property.setValue(\"points\", 0);\n property.setValue(\"triangles\", 0);\n\n return property;\n}\n\nfunction createObjectProperty() {\n const property = new Property();\n property.setValue(\"initStatus\", propertyInitStatus.INCOMPLETE);\n\n property.setValue(\"name\", \"\");\n property.setValue(\"id\", \"\");\n property.setValue(\"groupID\", \"\");\n property.setValue(\"visible\", true);\n property.setValue(\"locked\", false);\n property.setValue(\"color\", \"\");\n property.setValue(\"uuid\", \"\");\n property.setValue(\"scannertype\", \"\");\n property.setValue(\"deviceserial\", \"\");\n property.setValue(\"datasize\", 0);\n property.setValue(\"surfelsSize\", 0);\n property.setValue(\"texturedSize\", 0);\n property.setValue(\"untexturedSize\", 0);\n property.setValue(\"isHD\", false);\n property.setValue(\"hasrawgeometry\", false);\n property.setValue(\"targetRawScan\", \"\");\n\n property.setValue(\"texturegain\", 0.0);\n property.setValue(\"texturecameratype\", 0);\n property.setValue(\"textureillumination\", 0.0);\n property.setValue(\"globalapplied\", false);\n property.setValue(\"type\", -1);\n\n property.setValue(\"textures\", []);\n\n property.setValue(\"frames\", []);\n\n property.setValue(\"transform\", [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n property.setValue(\"projection\", [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0]);\n property.setValue(\"correction\", [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0]);\n\n property.setValue(\"surfelsfile\", {});\n property.setValue(\"geometriesfile\", {});\n property.setValue(\"framesfile\", {});\n\n property.setValue(\"numPolygons\", 0);\n property.setValue(\"numVertices\", 0);\n property.setValue(\"numSurfels\", 0);\n property.setValue(\"maxError\", 0);\n property.setValue(\"numFrames\", 0);\n property.setValue(\"numTexturedFrames\", 0);\n\n property.setValue(\"textureWidth\", 0);\n property.setValue(\"textureHeight\", 0);\n\n property.setValue(\"cadData\", {});\n property.setValue(\"cadModel\", {});\n property.setValue(\"cadType\", \"\");\n property.setValue(\"cadProperties\", {});\n\n //cads experimental\n property.setValue(\"fitmaskfile\", {});\n property.setValue(\"fitMaskFrames\", []);\n property.setValue(\"assembly\", {});\n property.setValue(\"referencedFusion\", \"\");\n\n return property;\n}\n\nfunction createFrameProperty() {\n const property = new Property();\n\n property.setValue(\"name\", \"\");\n property.setValue(\"id\", \"\");\n property.setValue(\"color\", \"\");\n property.setValue(\"error\", 0.0);\n property.setValue(\"keyframe\", false);\n\n property.setValue(\"numPolygons\", 0);\n property.setValue(\"numVertices\", 0);\n property.setValue(\"numSurfels\", 0);\n property.setValue(\"textured\", false);\n\n property.setValue(\"transform\", [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n property.setValue(\"textures\", []);\n property.setValue(\"geometries\", []);\n property.setValue(\"trackings\", []);\n\n return property;\n}\n\nfunction createGroupProperty() {\n const property = new Property();\n\n property.setValue(\"name\", \"\");\n property.setValue(\"id\", \"\");\n property.setValue(\"uuid\", \"\");\n property.setValue(\"color\", \"\");\n property.setValue(\"visible\", true);\n property.setValue(\"locked\", true);\n property.setValue(\"groupID\", \"\");\n property.setValue(\"type\", objectType.GROUP);\n\n property.setValue(\"numPolygons\", 0);\n property.setValue(\"numVertices\", 0);\n property.setValue(\"textured\", false);\n\n property.setValue(\"transform\", [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n property.setValue(\"textures\", []);\n property.setValue(\"geometries\", []);\n\n return property;\n}\n\nfunction createMeasureProperty() {\n const property = new Property();\n property.setValue(\"initStatus\", propertyInitStatus.INCOMPLETE);\n\n property.setValue(\"name\", \"\");\n property.setValue(\"id\", \"\");\n property.setValue(\"uuid\", \"\");\n property.setValue(\"visible\", false);\n property.setValue(\"selected\", false);\n property.setValue(\"properties\", {});\n\n //for lines\n property.setValue(\"type\", -1);\n\n //for distance maps\n property.setValue(\"searchDistance\", -1);\n\n //for internal use\n property.setValue(\"geometriesSource\", \"\");\n property.setValue(\"geometries\", null);\n property.setValue(\"measuredObjects\", []);\n\n return property;\n}\n\nfunction createPhotoGroupProperty() {\n const property = new Property();\n\n property.setValue(\"name\", \"\");\n property.setValue(\"id\", \"\");\n property.setValue(\"initStatus\", propertyInitStatus.INCOMPLETE);\n property.setValue(\"uuid\", \"\");\n property.setValue(\"groupID\", \"\");\n property.setValue(\"visible\", false);\n property.setValue(\"type\", objectType.PHOTO_GROUP);\n property.setValue(\"projection\", [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0]);\n property.setValue(\"transform\", [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n property.setValue(\"properties\", {});\n property.setValue(\"scenePhotoSize\", 0);\n property.setValue(\"registered\", false);\n\n property.setValue(\"photos\", null);\n property.setValue(\"undistortionMap\", null);\n\n //for internal use\n property.setValue(\"photosSource\", \"\");\n\n return property;\n}\n\nfunction valueExists(data, fieldName) {\n return fieldName in data;\n}\n\nfunction valueIsIllegal(data, fieldName) {\n return data[fieldName] === \"\";\n}\n\nfunction reportOnce(source, missingAttribute) {\n\n if (!reported[source]) {\n reported[source] = new Set();\n }\n\n if (reported[source].has(missingAttribute)) {\n return;\n }\n\n reported[source].add(missingAttribute)\n\n output.warn(\"\\\"\" + source + \"\\\" doesn't have the \\\"\" + missingAttribute + \"\\\" field!\");\n\n}\n\nfunction checkShadesCompatibility(shades) {\n\n let hmin = shades[0].h,\n hmax = shades[0].h,\n smin = shades[0].s,\n smax = shades[0].s;\n\n for (let shade of shades) {\n if (shade.h > hmax) {\n hmax = shade.h;\n } else if (shade.h < hmin) {\n hmin = shade.h;\n }\n if (shade.s > smax) {\n smax = shade.s;\n } else if (shade.s < hmin) {\n smin = shade.s;\n }\n }\n\n return (hmax - hmin < HSL_THRESHOLD.h) && (smax - smin < HSL_THRESHOLD.s);\n\n}\n\n\n\n","import GL from \"_src/engine/gl\";\nimport { uniformSource } from \"_src/engine/constants\";\n\nclass Uniform {\n\n constructor(type, value, source = uniformSource.SHADER) {\n this.type = type;\n this.value = value;\n this.location = null; // assigned after shader compilation\n this.source = source;\n\n this._setter = GL.getUniformSetter(type);\n }\n\n commit() {\n this._setter(this.location, this.value);\n }\n\n}\n\nexport default Uniform;\n","import Drawable from \"_src/engine/drawable\";\n\nexport default {\n createDrawable(shader) {\n return new Drawable(shader);\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"style-module_2Vkt7\",\"trigger\":\"style-module_jghDJ\",\"hidden\":\"style-module_zMPZ-\",\"tooltip\":\"style-module_1agzd\",\"top\":\"style-module_1Pi_-\",\"bottom\":\"style-module_11kaT\",\"right\":\"style-module_J9eXA\",\"left\":\"style-module_3k9QJ\"};","import React, { useState, useEffect, useRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport cl from 'classnames';\nimport style from './style.module.styl';\n\nconst Tooltip = ({\n\tchildren,\n\tclassName,\n\tcontainerClassName,\n\ttext = '',\n\tshow = false,\n\torientation = 'vertical',\n\ttimeout = 300,\n\tdirection,\n\thideTimeout = 0,\n\tshowTimeout = 0,\n}) => {\n\tconst [isShow, setShow] = useState(show);\n\tconst [timer, setTimer] = useState(null);\n\tconst [hideTimer, setHideTimer] = useState(null);\n\tconst [showTimer, setShowTimer] = useState(null);\n\tconst triggerRef = useRef(null);\n\tconst tooltipContainerRef = useRef(null);\n\tconst tooltipRef = useRef(null);\n\n\tlet lastTop;\n\tconst anchorScrollTop = document.documentElement.scrollTop;\n\n\tuseEffect(() => {\n\t\tif (show && !isShow) {\n\t\t\tsetShow(true);\n\t\t} else if (!show && isShow) {\n\t\t\tsetShow(false);\n\t\t}\n\t}, [show]);\n\n\n\tconst scrollListener = () => {\n\t\tif (tooltipContainerRef.current) {\n\t\t\tif (!lastTop) {\n\t\t\t\tlastTop = parseInt(tooltipContainerRef.current.style.top, 10);\n\t\t\t}\n\t\t\ttooltipContainerRef.current.style.top = `${lastTop\n\t\t\t\t- document.documentElement.scrollTop\n\t\t\t\t+ anchorScrollTop}px`;\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tif (showTimeout > 0) {\n\t\t\tsetShow(true);\n\t\t\tconst _showTimeout = setTimeout(() => {\n\t\t\t\tsetShow(true);\n\t\t\t}, timeout);\n\n\t\t\tsetShowTimer(_showTimeout);\n\n\t\t\tsetHideTimer(setTimeout(() => {\n\t\t\t\tif (triggerRef && triggerRef.current) {\n\t\t\t\t\tsetShow(false);\n\t\t\t\t\tsetTimer(null);\n\t\t\t\t}\n\t\t\t}, hideTimeout));\n\t\t}\n\n\t\treturn () => {\n\t\t\tclearTimeout(showTimer);\n\t\t};\n\t}, [showTimeout]);\n\n\tuseEffect(() => {\n\t\tif (triggerRef.current && tooltipContainerRef.current) {\n\t\t\tlet positionClass;\n\t\t\tlet coords;\n\n\t\t\tconst triggerRect = triggerRef.current.children[0].getBoundingClientRect();\n\t\t\tconst tooltipRect = tooltipContainerRef.current.getBoundingClientRect();\n\n\t\t\tconst windowWidth = document.documentElement.clientWidth;\n\n\t\t\tconst pageY = triggerRect.top;\n\t\t\tconst pageX = triggerRect.left;\n\n\t\t\tif (!direction && orientation === 'vertical') {\n\t\t\t\tif ((pageY - tooltipRect.height - 10) > 0) {\n\t\t\t\t\tpositionClass = 'top';\n\t\t\t\t\tcoords = {\n\t\t\t\t\t\ttop: `${pageY - tooltipRect.height - 10}px`,\n\t\t\t\t\t\tleft: `${pageX + triggerRect.width / 2}px`,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tpositionClass = 'bottom';\n\t\t\t\t\tcoords = {\n\t\t\t\t\t\ttop: `${pageY + triggerRect.height + 10}px`,\n\t\t\t\t\t\tleft: `${pageX + triggerRect.width / 2}px`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else if (orientation === 'horizontal' || direction === 'left' || direction === 'right') {\n\t\t\t\tif (direction === 'right' || (windowWidth - pageX - triggerRect.width - tooltipRect.width - 10) > 0) {\n\t\t\t\t\tpositionClass = 'right';\n\t\t\t\t\tcoords = {\n\t\t\t\t\t\ttop: `${pageY + triggerRect.height / 2}px`,\n\t\t\t\t\t\tleft: `${pageX + triggerRect.width + 10}px`,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tpositionClass = 'left';\n\t\t\t\t\tcoords = {\n\t\t\t\t\t\ttop: `${pageY + triggerRect.height / 2}px`,\n\t\t\t\t\t\tleft: `${pageX - tooltipRect.width - 10}px`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (direction) {\n\t\t\t\tpositionClass = direction;\n\t\t\t\tif (direction === 'top') {\n\t\t\t\t\tcoords = {\n\t\t\t\t\t\ttop: `${pageY - tooltipRect.height - 10}px`,\n\t\t\t\t\t\tleft: `${pageX + triggerRect.width / 2}px`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (direction === 'bottom') {\n\t\t\t\t\tcoords = {\n\t\t\t\t\t\ttop: `${pageY + triggerRect.height + 10}px`,\n\t\t\t\t\t\tleft: `${pageX + triggerRect.width / 2}px`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (direction === 'right') {\n\t\t\t\t\tcoords = {\n\t\t\t\t\t\ttop: `${pageY + triggerRect.height / 2}px`,\n\t\t\t\t\t\tleft: `${pageX + triggerRect.width + 10}px`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (direction === 'left') {\n\t\t\t\t\tcoords = {\n\t\t\t\t\t\ttop: `${pageY + triggerRect.height / 2}px`,\n\t\t\t\t\t\tleft: `${pageX - tooltipRect.width - 10}px`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttooltipContainerRef.current.style.top = coords.top;\n\t\t\ttooltipContainerRef.current.style.left = coords.left;\n\t\t\ttooltipRef.current.className = cl(style.tooltip, style[positionClass], className);\n\t\t\ttooltipRef.current.style.opacity = 1;\n\n\t\t\tdocument.addEventListener('scroll', scrollListener);\n\t\t}\n\n\t\treturn (() => {\n\t\t\tdocument.removeEventListener('scroll', scrollListener);\n\t\t});\n\t});\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t(isShow) && text && ReactDOM.createPortal(\n\t\t\t\t\t(\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{text}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t),\n\t\t\t\t\tdocument.querySelector('body'),\n\t\t\t\t)\n\t\t\t}\n\t\t\t {\n\t\t\t\t\tclearTimeout(hideTimer);\n\t\t\t\t\tclearTimeout(showTimer);\n\t\t\t\t\tsetTimer(setTimeout(() => {\n\t\t\t\t\t\tif (triggerRef && triggerRef.current) {\n\t\t\t\t\t\t\tsetShow(true);\n\t\t\t\t\t\t\tsetTimer(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, timeout));\n\t\t\t\t}}\n\t\t\t\tonMouseLeave={() => {\n\t\t\t\t\tif (timer) {\n\t\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsetHideTimer(setTimeout(() => {\n\t\t\t\t\t\tif (triggerRef && triggerRef.current) {\n\t\t\t\t\t\t\tsetShow(false);\n\t\t\t\t\t\t\tsetTimer(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, hideTimeout));\n\t\t\t\t}}\n\t\t\t\tref={triggerRef}\n\t\t\t\tclassName={cl(style.trigger, containerClassName)}\n\t\t\t\tonClickCapture={() => {\n\t\t\t\t\tclearTimeout(hideTimer);\n\t\t\t\t\tclearTimeout(showTimer);\n\t\t\t\t\tif (timer) {\n\t\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsetShow(false);\n\t\t\t\t}}\n\t\t\t\tonTouchStartCapture={(e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tclearTimeout(hideTimer);\n\t\t\t\t\tclearTimeout(showTimer);\n\t\t\t\t\tsetTimer(setTimeout(() => {\n\t\t\t\t\t\tif (triggerRef && triggerRef.current) {\n\t\t\t\t\t\t\tsetShow(true);\n\t\t\t\t\t\t\tsetTimer(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, timeout));\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default React.memo(Tooltip);\n","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"style-module_3asj8\",\"buttonText\":\"style-module_ZPGhb\",\"buttonIcon\":\"style-module_EByKT\",\"primaryButton\":\"style-module_3uv5Z\",\"secondaryButton\":\"style-module_3itxn\",\"textButton\":\"style-module_2b_Nc\",\"link\":\"style-module_28JMP\",\"linkText\":\"style-module_1BF93\",\"linkIcon\":\"style-module_Tfo63\",\"iconButton\":\"style-module_1bA3y\",\"editorMainButton\":\"style-module_xF2Id\",\"editorSecondaryButton\":\"style-module_21fpY\",\"algorithmItem\":\"style-module_1Bl8e\"};","import React from 'react';\nimport cl from 'classnames';\nimport { Link } from 'react-router-dom';\nimport Tooltip from '../Tooltip';\nimport style from './style.module.styl';\n\nconst Button = ({\n\tclassName,\n\tonClick,\n\tonClickCapture,\n\tpath,\n\ttheme,\n\ticon,\n\tdisabled,\n\tchildren,\n\ticonHeight = 15,\n\ticonWidth = 15,\n\thint = null,\n\thintDirection,\n\thintOrientation,\n\thintClass,\n\talgorithmItem = false,\n\tcontainerClassName,\n\ttarget,\n\tdataTs,\n\ttype = 'button',\n\tuseSpace,\n\ttabIndex,\n\tshowTooltip,\n}) => {\n\tconst _onClick = (e) => {\n\t\tif (!useSpace && e.nativeEvent.detail === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (onClick) { onClick(e); }\n\t};\n\n\tconst _onClickCapture = (e) => {\n\t\tif (!useSpace && e.nativeEvent.detail === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (onClickCapture) { onClickCapture(e); }\n\t};\n\n\tif (path) {\n\t\treturn (\n\t\t\t\n\t\t\t\t{icon && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{children}\n\t\t\t\n\t\t);\n\t}\n\n\tif (children) {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{icon && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\t{children}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\tif (!children && icon) {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\treturn null;\n};\n\nexport default Button;\n","import React from 'react';\nimport style from './style.module.styl';\n\nconst Form = props =>
;\n\nexport default Form;\n","// extracted by mini-css-extract-plugin\nexport default {\"userPic\":\"style-module_uXrOt\",\"userPicHoverable\":\"style-module_354BH\",\"avatarImg\":\"style-module_21Y1m\",\"default\":\"style-module_3x3gJ\"};","import React from 'react';\nimport cl from 'classnames';\nimport style from './style.module.styl';\n\nconst UserPic = ({\n\tname,\n\tavatar,\n\tbackColor,\n\tclassName,\n\thoverable = false,\n}) => (\n\t\n\t\t{avatar ? {name} : name}\n\t\n);\n\nexport default React.memo(UserPic);\n","// extracted by mini-css-extract-plugin\nexport default {\"checkbox\":\"style-module_1W_b3\",\"icon\":\"style-module_35y5a\",\"checked\":\"style-module_22LhK\",\"disabled\":\"style-module_14poJ\",\"partial\":\"style-module_14XaI\",\"noLabel\":\"style-module_31ZHV\",\"toggle\":\"style-module_3-Esh\",\"toggler\":\"style-module_PrMDk\",\"visuallyHidden\":\"style-module_2Su6z\",\"editorCheckbox\":\"style-module_3HYl2\",\"myArtecCheckbox\":\"style-module_2IM9o\"};","import React from 'react';\nimport cl from 'classnames';\nimport Tooltip from '../Tooltip';\nimport style from './style.module.styl';\n\nconst Checkbox = ({\n\tlabel,\n\tchecked,\n\tdisabled,\n\ttoggle,\n\tclassName,\n\tid,\n\tname,\n\tonChange,\n\tonClick,\n\ttheme,\n\tpartial,\n\thint = '',\n\thintDirection,\n\thintOrientation,\n\thintClass,\n}) => (\n\t\n\t\t {\n\t\t\t\te.stopPropagation();\n\t\t\t}}\n\t\t>\n\t\t\t\n\t\t\t{toggle ? (\n\t\t\t\t
\n\t\t\t) : (\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t)}\n\t\t\t{label}\n\t\t\n\t\n);\n\nexport default Checkbox;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"style-module_2JLu4\",\"toggleContainer\":\"style-module_NEA_G\",\"dropdown\":\"style-module_2ER-j\",\"dropdownHidden\":\"style-module_1KlsZ\",\"dropdownContext\":\"style-module_hqCv6\",\"dropdownItem\":\"style-module_JY9lX\",\"topCenter\":\"style-module_1AqQk\",\"topLeft\":\"style-module_sN53k\",\"topRight\":\"style-module_1Wq3e\",\"bottomCenter\":\"style-module_Sc9SF\",\"bottomLeft\":\"style-module_3D-1R\",\"bottomRight\":\"style-module_2T07Y\"};","import React, { useRef, useEffect, useLayoutEffect } from 'react';\nimport cl from 'classnames';\n\nimport style from '../Dropdown/style.module.styl';\n\nconst ContextMenu = ({\n\tchildren,\n\tclassName,\n\topened,\n\tpageX,\n\tpageY,\n\tonToggle = () => { },\n\tid,\n\tonlyLeft,\n\tisContainer,\n\ttopGap = 45,\n\tgap = 5,\n}) => {\n\tconst menuRef = useRef(null);\n\n\tconst useOutsideHandler = (ref) => {\n\t\tconst handleClickOutside = (event) => {\n\t\t\tif (ref.current && !ref.current.contains(event.target) && typeof onToggle === 'function') {\n\t\t\t\tonToggle(false);\n\t\t\t}\n\t\t};\n\n\t\tuseLayoutEffect(() => {\n\t\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\t\tlet styleOpened;\n\n\n\t\t\tif (ref.current) {\n\t\t\t\tconst { clientHeight, clientWidth } = document.documentElement;\n\n\n\t\t\t\tconst menuElementRect = menuRef.current.getBoundingClientRect();\n\t\t\t\tconst menuHeight = menuRef.current.clientHeight;\n\t\t\t\tconst menuWidth = menuRef.current.clientWidth;\n\t\t\t\tconst spaceAtTheBottom = clientHeight - pageY - menuElementRect.height;\n\t\t\t\tconst spaceAtTheRight = clientWidth - pageX - menuElementRect.width;\n\t\t\t\tconst spaceAtTheTop = pageY - menuHeight;\n\t\t\t\tconst spaceAtTheLeft = pageX - menuWidth;\n\t\t\t\tconst needScroll = (clientHeight - menuHeight - gap * 2 - topGap) < 0;\n\t\t\t\tconst upward = spaceAtTheBottom < 0;\n\t\t\t\tconst toLeft = onlyLeft || (spaceAtTheRight < 0 && spaceAtTheLeft > spaceAtTheTop);\n\n\t\t\t\tlet top; let left;\n\n\t\t\t\tif (upward) {\n\t\t\t\t\ttop = spaceAtTheTop > 0 ? `${pageY - menuHeight}px` : `${topGap + gap}\tpx`;\n\t\t\t\t} else {\n\t\t\t\t\ttop = `${pageY}px`;\n\t\t\t\t}\n\n\t\t\t\tif (toLeft || onlyLeft) {\n\t\t\t\t\tleft = `${pageX + gap - menuWidth}px`;\n\t\t\t\t} else {\n\t\t\t\t\tleft = `${pageX + gap}px`;\n\t\t\t\t}\n\n\t\t\t\tstyleOpened = { left, top };\n\t\t\t\tif (needScroll) {\n\t\t\t\t\tref.current.style.top = '62px';\n\t\t\t\t\tref.current.style.left = styleOpened.left;\n\t\t\t\t\tref.current.style.right = styleOpened.right;\n\t\t\t\t\tref.current.style.opacity = '1';\n\t\t\t\t\tref.current.style.bottom = '12px';\n\t\t\t\t\tref.current.style.overflowY = 'auto';\n\t\t\t\t\tref.current.style.height = `${clientHeight - topGap - gap * 2}px`;\n\t\t\t\t} else {\n\t\t\t\t\tref.current.style.top = styleOpened.top;\n\t\t\t\t\tref.current.style.left = styleOpened.left;\n\t\t\t\t\tref.current.style.right = styleOpened.right;\n\t\t\t\t\tref.current.style.opacity = '1';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('mousedown', handleClickOutside);\n\t\t\t\tstyleOpened = {};\n\t\t\t};\n\t\t});\n\t};\n\n\tuseOutsideHandler(menuRef);\n\n\tif (!opened) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\tisContainer\n\t\t\t? (\n\t\t\t\t\n\t\t\t\t\t{React.cloneElement(children, { onToggle: () => onToggle(false) })}\n\t\t\t\t
\n\t\t\t)\n\t\t\t: (\n\t\t\t\t\n\t\t\t\t\t{React.Children.map(children, (child, i) => (\n\t\t\t\t\t\tchild && (\n\t\t\t\t\t\t\t onToggle(false)}\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{React.cloneElement(child)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\t\t\t\t\t))}\n\t\t\t\t\n\t\t\t)\n\t);\n};\n\nexport default React.memo(ContextMenu);\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","var e=\"-ms-\";var r=\"-moz-\";var a=\"-webkit-\";var n=\"comm\";var c=\"rule\";var s=\"decl\";var t=\"@page\";var u=\"@media\";var i=\"@import\";var f=\"@charset\";var o=\"@viewport\";var l=\"@supports\";var v=\"@document\";var p=\"@namespace\";var h=\"@keyframes\";var b=\"@font-face\";var w=\"@counter-style\";var d=\"@font-feature-values\";var $=Math.abs;var k=String.fromCharCode;var g=Object.assign;function m(e,r){return C(e,0)^45?(((r<<2^C(e,0))<<2^C(e,1))<<2^C(e,2))<<2^C(e,3):0}function x(e){return e.trim()}function y(e,r){return(e=r.exec(e))?e[0]:e}function j(e,r,a){return e.replace(r,a)}function z(e,r){return e.indexOf(r)}function C(e,r){return e.charCodeAt(r)|0}function O(e,r,a){return e.slice(r,a)}function A(e){return e.length}function M(e){return e.length}function S(e,r){return r.push(e),e}function q(e,r){return e.map(r).join(\"\")}var B=1;var D=1;var E=0;var F=0;var G=0;var H=\"\";function I(e,r,a,n,c,s,t){return{value:e,root:r,parent:a,type:n,props:c,children:s,line:B,column:D,length:t,return:\"\"}}function J(e,r){return g(I(\"\",null,null,\"\",null,null,0),e,{length:-e.length},r)}function K(){return G}function L(){G=F>0?C(H,--F):0;if(D--,G===10)D=1,B--;return G}function N(){G=F2||T(G)>3?\"\":\" \"}function Z(e){while(N())switch(T(G)){case 0:S(ae(F-1),e);break;case 2:S(W(G),e);break;default:S(k(G),e)}return e}function _(e,r){while(--r&&N())if(G<48||G>102||G>57&&G<65||G>70&&G<97)break;return R(e,Q()+(r<6&&P()==32&&N()==32))}function ee(e){while(N())switch(G){case e:return F;case 34:case 39:if(e!==34&&e!==39)ee(G);break;case 40:if(e===41)ee(e);break;case 92:N();break}return F}function re(e,r){while(N())if(e+G===47+10)break;else if(e+G===42+42&&P()===47)break;return\"/*\"+R(r,F-1)+\"*\"+k(e===47?e:N())}function ae(e){while(!T(P()))N();return R(e,F)}function ne(e){return V(ce(\"\",null,null,null,[\"\"],e=U(e),0,[0],e))}function ce(e,r,a,n,c,s,t,u,i){var f=0;var o=0;var l=t;var v=0;var p=0;var h=0;var b=1;var w=1;var d=1;var $=0;var g=\"\";var m=c;var x=s;var y=n;var O=g;while(w)switch(h=$,$=N()){case 40:if(h!=108&&C(O,l-1)==58){if(z(O+=j(W($),\"&\",\"&\\f\"),\"&\\f\")!=-1)d=-1;break}case 34:case 39:case 91:O+=W($);break;case 9:case 10:case 13:case 32:O+=Y(h);break;case 92:O+=_(Q()-1,7);continue;case 47:switch(P()){case 42:case 47:S(te(re(N(),Q()),r,a),i);break;default:O+=\"/\"}break;case 123*b:u[f++]=A(O)*d;case 125*b:case 59:case 0:switch($){case 0:case 125:w=0;case 59+o:if(p>0&&A(O)-l)S(p>32?ue(O+\";\",n,a,l-1):ue(j(O,\" \",\"\")+\";\",n,a,l-2),i);break;case 59:O+=\";\";default:S(y=se(O,r,a,f,o,c,u,g,m=[],x=[],l),s);if($===123)if(o===0)ce(O,r,y,y,m,s,l,u,x);else switch(v===99&&C(O,3)===110?100:v){case 100:case 109:case 115:ce(e,y,y,n&&S(se(e,y,y,0,0,c,u,g,c,m=[],l),x),c,x,l,u,n?m:x);break;default:ce(O,y,y,y,[\"\"],x,0,u,x)}}f=o=p=0,b=d=1,g=O=\"\",l=t;break;case 58:l=1+A(O),p=h;default:if(b<1)if($==123)--b;else if($==125&&b++==0&&L()==125)continue;switch(O+=k($),$*b){case 38:d=o>0?1:(O+=\"\\f\",-1);break;case 44:u[f++]=(A(O)-1)*d,d=1;break;case 64:if(P()===45)O+=W(N());v=P(),o=l=A(g=O+=ae(Q())),$++;break;case 45:if(h===45&&A(O)==2)b=0}}return s}function se(e,r,a,n,s,t,u,i,f,o,l){var v=s-1;var p=s===0?t:[\"\"];var h=M(p);for(var b=0,w=0,d=0;b0?p[k]+\" \"+g:j(g,/&\\f/g,p[k])))f[d++]=m;return I(e,r,a,s===0?c:i,f,o,l)}function te(e,r,a){return I(e,r,a,n,k(K()),O(e,2,-2),0)}function ue(e,r,a,n){return I(e,r,a,s,O(e,0,n),O(e,n+1,-1),n)}function ie(n,c,s){switch(m(n,c)){case 5103:return a+\"print-\"+n+n;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return a+n+n;case 4789:return r+n+n;case 5349:case 4246:case 4810:case 6968:case 2756:return a+n+r+n+e+n+n;case 5936:switch(C(n,c+11)){case 114:return a+n+e+j(n,/[svh]\\w+-[tblr]{2}/,\"tb\")+n;case 108:return a+n+e+j(n,/[svh]\\w+-[tblr]{2}/,\"tb-rl\")+n;case 45:return a+n+e+j(n,/[svh]\\w+-[tblr]{2}/,\"lr\")+n}case 6828:case 4268:case 2903:return a+n+e+n+n;case 6165:return a+n+e+\"flex-\"+n+n;case 5187:return a+n+j(n,/(\\w+).+(:[^]+)/,a+\"box-$1$2\"+e+\"flex-$1$2\")+n;case 5443:return a+n+e+\"flex-item-\"+j(n,/flex-|-self/g,\"\")+(!y(n,/flex-|baseline/)?e+\"grid-row-\"+j(n,/flex-|-self/g,\"\"):\"\")+n;case 4675:return a+n+e+\"flex-line-pack\"+j(n,/align-content|flex-|-self/g,\"\")+n;case 5548:return a+n+e+j(n,\"shrink\",\"negative\")+n;case 5292:return a+n+e+j(n,\"basis\",\"preferred-size\")+n;case 6060:return a+\"box-\"+j(n,\"-grow\",\"\")+a+n+e+j(n,\"grow\",\"positive\")+n;case 4554:return a+j(n,/([^-])(transform)/g,\"$1\"+a+\"$2\")+n;case 6187:return j(j(j(n,/(zoom-|grab)/,a+\"$1\"),/(image-set)/,a+\"$1\"),n,\"\")+n;case 5495:case 3959:return j(n,/(image-set\\([^]*)/,a+\"$1\"+\"$`$1\");case 4968:return j(j(n,/(.+:)(flex-)?(.*)/,a+\"box-pack:$3\"+e+\"flex-pack:$3\"),/s.+-b[^;]+/,\"justify\")+a+n+n;case 4200:if(!y(n,/flex-|baseline/))return e+\"grid-column-align\"+O(n,c)+n;break;case 2592:case 3360:return e+j(n,\"template-\",\"\")+n;case 4384:case 3616:if(s&&s.some((function(e,r){return c=r,y(e.props,/grid-\\w+-end/)}))){return~z(n+(s=s[c].value),\"span\")?n:e+j(n,\"-start\",\"\")+n+e+\"grid-row-span:\"+(~z(s,\"span\")?y(s,/\\d+/):+y(s,/\\d+/)-+y(n,/\\d+/))+\";\"}return e+j(n,\"-start\",\"\")+n;case 4896:case 4128:return s&&s.some((function(e){return y(e.props,/grid-\\w+-start/)}))?n:e+j(j(n,\"-end\",\"-span\"),\"span \",\"\")+n;case 4095:case 3583:case 4068:case 2532:return j(n,/(.+)-inline(.+)/,a+\"$1$2\")+n;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(A(n)-1-c>6)switch(C(n,c+1)){case 109:if(C(n,c+4)!==45)break;case 102:return j(n,/(.+:)(.+)-([^]+)/,\"$1\"+a+\"$2-$3\"+\"$1\"+r+(C(n,c+3)==108?\"$3\":\"$2-$3\"))+n;case 115:return~z(n,\"stretch\")?ie(j(n,\"stretch\",\"fill-available\"),c,s)+n:n}break;case 5152:case 5920:return j(n,/(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/,(function(r,a,c,s,t,u,i){return e+a+\":\"+c+i+(s?e+a+\"-span:\"+(t?u:+u-+c)+i:\"\")+n}));case 4949:if(C(n,c+6)===121)return j(n,\":\",\":\"+a)+n;break;case 6444:switch(C(n,C(n,14)===45?18:11)){case 120:return j(n,/(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/,\"$1\"+a+(C(n,14)===45?\"inline-\":\"\")+\"box$3\"+\"$1\"+a+\"$2$3\"+\"$1\"+e+\"$2box$3\")+n;case 100:return j(n,\":\",\":\"+e)+n}break;case 5719:case 2647:case 2135:case 3927:case 2391:return j(n,\"scroll-\",\"scroll-snap-\")+n}return n}function fe(e,r){var a=\"\";var n=M(e);for(var c=0;c-1)if(!n.return)switch(n.type){case s:n.return=ie(n.value,n.length,u);return;case h:return fe([J(n,{value:j(n.value,\"@\",\"@\"+a)})],i);case c:if(n.length)return q(n.props,(function(c){switch(y(c,/(::plac\\w+|:read-\\w+)/)){case\":read-only\":case\":read-write\":return fe([J(n,{props:[j(c,/:(read-\\w+)/,\":\"+r+\"$1\")]})],i);case\"::placeholder\":return fe([J(n,{props:[j(c,/:(plac\\w+)/,\":\"+a+\"input-$1\")]}),J(n,{props:[j(c,/:(plac\\w+)/,\":\"+r+\"$1\")]}),J(n,{props:[j(c,/:(plac\\w+)/,e+\"input-$1\")]})],i)}return\"\"}))}}function he(e){switch(e.type){case c:e.props=e.props.map((function(r){return q(X(r),(function(r,a,n){switch(C(r,0)){case 12:return O(r,1,A(r));case 0:case 40:case 43:case 62:case 126:return r;case 58:if(n[++a]===\"global\")n[a]=\"\",n[++a]=\"\\f\"+O(n[a],a=1,-1);case 32:return a===1?\"\":r;default:switch(a){case 0:e=r;return M(n)>1?\"\":r;case a=M(n)-1:case 2:return a===2?r+e+e:r+e;default:return r}}}))}))}}export{f as CHARSET,n as COMMENT,w as COUNTER_STYLE,s as DECLARATION,v as DOCUMENT,b as FONT_FACE,d as FONT_FEATURE_VALUES,i as IMPORT,h as KEYFRAMES,u as MEDIA,r as MOZ,e as MS,p as NAMESPACE,t as PAGE,c as RULESET,l as SUPPORTS,o as VIEWPORT,a as WEBKIT,$ as abs,U as alloc,S as append,g as assign,Q as caret,K as char,G as character,H as characters,C as charat,D as column,q as combine,te as comment,re as commenter,ne as compile,J as copy,V as dealloc,ue as declaration,W as delimit,ee as delimiter,_ as escaping,k as from,m as hash,ae as identifier,z as indexof,E as length,B as line,y as match,le as middleware,he as namespace,N as next,I as node,ce as parse,P as peek,F as position,ie as prefix,pe as prefixer,L as prev,j as replace,se as ruleset,ve as rulesheet,fe as serialize,M as sizeof,R as slice,oe as stringify,A as strlen,O as substr,T as token,X as tokenize,Z as tokenizer,x as trim,Y as whitespace};\n//# sourceMappingURL=stylis.mjs.map\n","var weakMemoize = function weakMemoize(func) {\n // $FlowFixMe flow doesn't include all non-primitive types as allowed for weakmaps\n var cache = new WeakMap();\n return function (arg) {\n if (cache.has(arg)) {\n // $FlowFixMe\n return cache.get(arg);\n }\n\n var ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n};\n\nexport default weakMemoize;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = element.parent === children[0]; // in nested rules comments become children of the \"auto-inserted\" rule\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? children[0].children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if ( key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport default createCache;\n","import hoistNonReactStatics$1 from 'hoist-non-react-statics';\n\n// this file isolates this package that is not tree-shakeable\n// and if this module doesn't actually contain any logic of its own\n// then Rollup just use 'hoist-non-react-statics' directly in other chunks\n\nvar hoistNonReactStatics = (function (targetComponent, sourceComponent) {\n return hoistNonReactStatics$1(targetComponent, sourceComponent);\n});\n\nexport default hoistNonReactStatics;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","import * as React from 'react';\nimport { useLayoutEffect } from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import { createContext, useContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = useContext(ThemeContext);\n return /*#__PURE__*/createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, useTheme as u, withEmotionCache as w };\n","import { createElement, useContext, useRef, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-6a883da9.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-6a883da9.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.10.5\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": \"./macro.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.10.5\",\n\t\t\"@emotion/cache\": \"^11.10.5\",\n\t\t\"@emotion/serialize\": \"^1.1.1\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.0\",\n\t\t\"@emotion/utils\": \"^1.2.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.0\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\t\"@babel/core\": \"^7.0.0\",\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@babel/core\": {\n\t\t\toptional: true\n\t\t},\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@babel/core\": \"^7.18.5\",\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.10.5\",\n\t\t\"@emotion/css-prettifier\": \"1.1.1\",\n\t\t\"@emotion/server\": \"11.10.0\",\n\t\t\"@emotion/styled\": \"11.10.5\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": \"./macro.js\"\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n var res = insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { jsx, keyframes, css as css$2, ClassNames } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport AutosizeInput from 'react-input-autosize';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _defineProperty$1 from '@babel/runtime/helpers/esm/defineProperty';\nimport { createContext, Component } from 'react';\nimport { createPortal } from 'react-dom';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\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\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\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\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\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\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\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\n return _possibleConstructorReturn(this, result);\n };\n}\n\n// ==============================\n// NO OP\n// ==============================\nvar noop = function noop() {};\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n @returns 'react-select__comp react-select__comp--some'\n*/\n\nfunction applyPrefixToName(prefix, name) {\n if (!name) {\n return prefix;\n } else if (name[0] === '-') {\n return prefix + name;\n } else {\n return prefix + '__' + name;\n }\n}\n\nfunction classNames(prefix, state, className) {\n var arr = [className];\n\n if (state && prefix) {\n for (var key in state) {\n if (state.hasOwnProperty(key) && state[key]) {\n arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n }\n }\n }\n\n return arr.filter(function (i) {\n return i;\n }).map(function (i) {\n return String(i).trim();\n }).join(' ');\n} // ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n if (Array.isArray(value)) return value.filter(Boolean);\n if (_typeof(value) === 'object' && value !== null) return [value];\n return [];\n}; // ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n if (onInputChange) {\n var newValue = onInputChange(inputValue, actionMeta);\n if (typeof newValue === 'string') return newValue;\n }\n\n return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\nfunction getScrollTop(el) {\n if (isDocumentElement(el)) {\n return window.pageYOffset;\n }\n\n return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n // with a scroll distance, we perform scroll on the element\n if (isDocumentElement(el)) {\n window.scrollTo(0, top);\n return;\n }\n\n el.scrollTop = top;\n} // Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n var style = getComputedStyle(element);\n var excludeStaticParent = style.position === 'absolute';\n var overflowRx = /(auto|scroll)/;\n var docEl = document.documentElement; // suck it, flow...\n\n if (style.position === 'fixed') return docEl;\n\n for (var parent = element; parent = parent.parentElement;) {\n style = getComputedStyle(parent);\n\n if (excludeStaticParent && style.position === 'static') {\n continue;\n }\n\n if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent;\n }\n }\n\n return docEl;\n} // Animated Scroll To\n// ------------------------------\n\n/**\n @param t: time (elapsed)\n @param b: initial value\n @param c: amount of change\n @param d: duration\n*/\n\nfunction easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n var start = getScrollTop(element);\n var change = to - start;\n var increment = 10;\n var currentTime = 0;\n\n function animateScroll() {\n currentTime += increment;\n var val = easeOutCubic(currentTime, start, change, duration);\n scrollTo(element, val);\n\n if (currentTime < duration) {\n window.requestAnimationFrame(animateScroll);\n } else {\n callback(element);\n }\n }\n\n animateScroll();\n} // Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n var menuRect = menuEl.getBoundingClientRect();\n var focusedRect = focusedEl.getBoundingClientRect();\n var overScroll = focusedEl.offsetHeight / 3;\n\n if (focusedRect.bottom + overScroll > menuRect.bottom) {\n scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n } else if (focusedRect.top - overScroll < menuRect.top) {\n scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n }\n} // ==============================\n// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\nfunction getBoundingClientObj(element) {\n var rect = element.getBoundingClientRect();\n return {\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width\n };\n}\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n try {\n document.createEvent('TouchEvent');\n return true;\n } catch (e) {\n return false;\n }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n try {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n } catch (e) {\n return false;\n }\n}\n\nfunction getMenuPlacement(_ref) {\n var maxHeight = _ref.maxHeight,\n menuEl = _ref.menuEl,\n minHeight = _ref.minHeight,\n placement = _ref.placement,\n shouldScroll = _ref.shouldScroll,\n isFixedPosition = _ref.isFixedPosition,\n theme = _ref.theme;\n var spacing = theme.spacing;\n var scrollParent = getScrollParent(menuEl);\n var defaultState = {\n placement: 'bottom',\n maxHeight: maxHeight\n }; // something went wrong, return default state\n\n if (!menuEl || !menuEl.offsetParent) return defaultState; // we can't trust `scrollParent.scrollHeight` --> it may increase when\n // the menu is rendered\n\n var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n scrollHeight = _scrollParent$getBoun.height;\n\n var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n menuBottom = _menuEl$getBoundingCl.bottom,\n menuHeight = _menuEl$getBoundingCl.height,\n menuTop = _menuEl$getBoundingCl.top;\n\n var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n containerTop = _menuEl$offsetParent$.top;\n\n var viewHeight = window.innerHeight;\n var scrollTop = getScrollTop(scrollParent);\n var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n var viewSpaceAbove = containerTop - marginTop;\n var viewSpaceBelow = viewHeight - menuTop;\n var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n var scrollUp = scrollTop + menuTop - marginTop;\n var scrollDuration = 160;\n\n switch (placement) {\n case 'auto':\n case 'bottom':\n // 1: the menu will fit, do nothing\n if (viewSpaceBelow >= menuHeight) {\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n }\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n } // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n\n var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n return {\n placement: 'bottom',\n maxHeight: constrainedHeight\n };\n } // 4. Forked beviour when there isn't enough space below\n // AUTO: flip the menu, render above\n\n\n if (placement === 'auto' || isFixedPosition) {\n // may need to be constrained after flipping\n var _constrainedHeight = maxHeight;\n var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n if (spaceAbove >= minHeight) {\n _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight\n };\n } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n if (placement === 'bottom') {\n scrollTo(scrollParent, scrollDown);\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n }\n\n break;\n\n case 'top':\n // 1: the menu will fit, do nothing\n if (viewSpaceAbove >= menuHeight) {\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n var _constrainedHeight2 = maxHeight; // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n }\n\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight2\n };\n } // 4. not enough space, the browser WILL NOT increase scrollable area when\n // absolutely positioned element rendered above the viewport (only below).\n // Flip the menu, render below\n\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n\n default:\n throw new Error(\"Invalid placement provided \\\"\".concat(placement, \"\\\".\"));\n } // fulfil contract with flow: implicit return value of undefined\n\n\n return defaultState;\n} // Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n var placementToCSSProp = {\n bottom: 'top',\n top: 'bottom'\n };\n return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n var _ref3;\n\n var placement = _ref2.placement,\n _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n spacing = _ref2$theme.spacing,\n colors = _ref2$theme.colors;\n return _ref3 = {\n label: 'menu'\n }, _defineProperty$1(_ref3, alignToControl(placement), '100%'), _defineProperty$1(_ref3, \"backgroundColor\", colors.neutral0), _defineProperty$1(_ref3, \"borderRadius\", borderRadius), _defineProperty$1(_ref3, \"boxShadow\", '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), _defineProperty$1(_ref3, \"marginBottom\", spacing.menuGutter), _defineProperty$1(_ref3, \"marginTop\", spacing.menuGutter), _defineProperty$1(_ref3, \"position\", 'absolute'), _defineProperty$1(_ref3, \"width\", '100%'), _defineProperty$1(_ref3, \"zIndex\", 1), _ref3;\n};\nvar PortalPlacementContext = /*#__PURE__*/createContext({\n getPortalPlacement: null\n}); // NOTE: internal only\n\nvar MenuPlacer = /*#__PURE__*/function (_Component) {\n _inherits(MenuPlacer, _Component);\n\n var _super = _createSuper(MenuPlacer);\n\n function MenuPlacer() {\n var _this;\n\n _classCallCheck(this, MenuPlacer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n maxHeight: _this.props.maxMenuHeight,\n placement: null\n };\n\n _this.getPlacement = function (ref) {\n var _this$props = _this.props,\n minMenuHeight = _this$props.minMenuHeight,\n maxMenuHeight = _this$props.maxMenuHeight,\n menuPlacement = _this$props.menuPlacement,\n menuPosition = _this$props.menuPosition,\n menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n theme = _this$props.theme;\n if (!ref) return; // DO NOT scroll if position is fixed\n\n var isFixedPosition = menuPosition === 'fixed';\n var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n var state = getMenuPlacement({\n maxHeight: maxMenuHeight,\n menuEl: ref,\n minHeight: minMenuHeight,\n placement: menuPlacement,\n shouldScroll: shouldScroll,\n isFixedPosition: isFixedPosition,\n theme: theme\n });\n var getPortalPlacement = _this.context.getPortalPlacement;\n if (getPortalPlacement) getPortalPlacement(state);\n\n _this.setState(state);\n };\n\n _this.getUpdatedProps = function () {\n var menuPlacement = _this.props.menuPlacement;\n var placement = _this.state.placement || coercePlacement(menuPlacement);\n return _objectSpread2(_objectSpread2({}, _this.props), {}, {\n placement: placement,\n maxHeight: _this.state.maxHeight\n });\n };\n\n return _this;\n }\n\n _createClass(MenuPlacer, [{\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return children({\n ref: this.getPlacement,\n placerProps: this.getUpdatedProps()\n });\n }\n }]);\n\n return MenuPlacer;\n}(Component);\nMenuPlacer.contextType = PortalPlacementContext;\n\nvar Menu = function Menu(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('menu', props),\n className: cx({\n menu: true\n }, className),\n ref: innerRef\n }, innerProps), children);\n};\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4) {\n var maxHeight = _ref4.maxHeight,\n baseUnit = _ref4.theme.spacing.baseUnit;\n return {\n maxHeight: maxHeight,\n overflowY: 'auto',\n paddingBottom: baseUnit,\n paddingTop: baseUnit,\n position: 'relative',\n // required for offset[Height, Top] > keyboard scroll\n WebkitOverflowScrolling: 'touch'\n };\n};\nvar MenuList = function MenuList(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n innerRef = props.innerRef,\n isMulti = props.isMulti;\n return jsx(\"div\", _extends({\n css: getStyles('menuList', props),\n className: cx({\n 'menu-list': true,\n 'menu-list--is-multi': isMulti\n }, className),\n ref: innerRef\n }, innerProps), children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5) {\n var _ref5$theme = _ref5.theme,\n baseUnit = _ref5$theme.spacing.baseUnit,\n colors = _ref5$theme.colors;\n return {\n color: colors.neutral40,\n padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\"),\n textAlign: 'center'\n };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('noOptionsMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--no-options': true\n }, className)\n }, innerProps), children);\n};\nNoOptionsMessage.defaultProps = {\n children: 'No options'\n};\nvar LoadingMessage = function LoadingMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('loadingMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--loading': true\n }, className)\n }, innerProps), children);\n};\nLoadingMessage.defaultProps = {\n children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n var rect = _ref6.rect,\n offset = _ref6.offset,\n position = _ref6.position;\n return {\n left: rect.left,\n position: position,\n top: offset,\n width: rect.width,\n zIndex: 1\n };\n};\nvar MenuPortal = /*#__PURE__*/function (_Component2) {\n _inherits(MenuPortal, _Component2);\n\n var _super2 = _createSuper(MenuPortal);\n\n function MenuPortal() {\n var _this2;\n\n _classCallCheck(this, MenuPortal);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _this2.state = {\n placement: null\n };\n\n _this2.getPortalPlacement = function (_ref7) {\n var placement = _ref7.placement;\n var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n if (placement !== initialPlacement) {\n _this2.setState({\n placement: placement\n });\n }\n };\n\n return _this2;\n }\n\n _createClass(MenuPortal, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n appendTo = _this$props2.appendTo,\n children = _this$props2.children,\n className = _this$props2.className,\n controlElement = _this$props2.controlElement,\n cx = _this$props2.cx,\n innerProps = _this$props2.innerProps,\n menuPlacement = _this$props2.menuPlacement,\n position = _this$props2.menuPosition,\n getStyles = _this$props2.getStyles;\n var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n if (!appendTo && !isFixed || !controlElement) {\n return null;\n }\n\n var placement = this.state.placement || coercePlacement(menuPlacement);\n var rect = getBoundingClientObj(controlElement);\n var scrollDistance = isFixed ? 0 : window.pageYOffset;\n var offset = rect[placement] + scrollDistance;\n var state = {\n offset: offset,\n position: position,\n rect: rect\n }; // same wrapper element whether fixed or portalled\n\n var menuWrapper = jsx(\"div\", _extends({\n css: getStyles('menuPortal', state),\n className: cx({\n 'menu-portal': true\n }, className)\n }, innerProps), children);\n return jsx(PortalPlacementContext.Provider, {\n value: {\n getPortalPlacement: this.getPortalPlacement\n }\n }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);\n }\n }]);\n\n return MenuPortal;\n}(Component);\n\nvar containerCSS = function containerCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isRtl = _ref.isRtl;\n return {\n label: 'container',\n direction: isRtl ? 'rtl' : null,\n pointerEvents: isDisabled ? 'none' : null,\n // cancel mouse events when disabled\n position: 'relative'\n };\n};\nvar SelectContainer = function SelectContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends({\n css: getStyles('container', props),\n className: cx({\n '--is-disabled': isDisabled,\n '--is-rtl': isRtl\n }, className)\n }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n alignItems: 'center',\n display: 'flex',\n flex: 1,\n flexWrap: 'wrap',\n padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\"),\n WebkitOverflowScrolling: 'touch',\n position: 'relative',\n overflow: 'hidden'\n };\n};\nvar ValueContainer = function ValueContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n innerProps = props.innerProps,\n isMulti = props.isMulti,\n getStyles = props.getStyles,\n hasValue = props.hasValue;\n return jsx(\"div\", _extends({\n css: getStyles('valueContainer', props),\n className: cx({\n 'value-container': true,\n 'value-container--is-multi': isMulti,\n 'value-container--has-value': hasValue\n }, className)\n }, innerProps), children);\n}; // ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n return {\n alignItems: 'center',\n alignSelf: 'stretch',\n display: 'flex',\n flexShrink: 0\n };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n innerProps = props.innerProps,\n getStyles = props.getStyles;\n return jsx(\"div\", _extends({\n css: getStyles('indicatorsContainer', props),\n className: cx({\n indicators: true\n }, className)\n }, innerProps), children);\n};\n\nvar _templateObject;\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"8mmkcg\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0\"\n} : {\n name: \"tj5bde-Svg\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;label:Svg;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHR5cGUgeyBDb21tb25Qcm9wcywgVGhlbWUgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IFN2ZyA9ICh7IHNpemUsIC4uLnByb3BzIH06IHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk0xNC4zNDggMTQuODQ5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwbC0yLjY1MS0zLjAzMC0yLjY1MSAzLjAyOWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMC0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOSAwLTEuNjk3bDIuNzU4LTMuMTUtMi43NTktMy4xNTJjLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI4IDAtMS42OTdzMS4yMjgtMC40NjkgMS42OTcgMGwyLjY1MiAzLjAzMSAyLjY1MS0zLjAzMWMwLjQ2OS0wLjQ2OSAxLjIyOC0wLjQ2OSAxLjY5NyAwczAuNDY5IDEuMjI5IDAgMS42OTdsLTIuNzU4IDMuMTUyIDIuNzU4IDMuMTVjMC40NjkgMC40NjkgMC40NjkgMS4yMjkgMCAxLjY5OHpcIiAvPlxuICA8L1N2Zz5cbik7XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IGFueSkgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIEluZGljYXRvclByb3BzID0gQ29tbW9uUHJvcHMgJiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuOiBOb2RlLFxuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn07XG5cbmNvbnN0IGJhc2VDU1MgPSAoe1xuICBpc0ZvY3VzZWQsXG4gIHRoZW1lOiB7XG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIGNvbG9ycyxcbiAgfSxcbn06IEluZGljYXRvclByb3BzKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG5cbiAgJzpob3Zlcic6IHtcbiAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnZHJvcGRvd25JbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnY2xlYXJJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudHlwZSBTZXBhcmF0b3JTdGF0ZSA9IHsgaXNEaXNhYmxlZDogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gKHtcbiAgaXNEaXNhYmxlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogQ29tbW9uUHJvcHMgJiBTZXBhcmF0b3JTdGF0ZSkgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgd2lkdGg6IDEsXG59KTtcblxuZXhwb3J0IGNvbnN0IEluZGljYXRvclNlcGFyYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdpbmRpY2F0b3JTZXBhcmF0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KHsgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlIH0sIGNsYXNzTmFtZSl9XG4gICAgLz5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTG9hZGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IGxvYWRpbmdEb3RBbmltYXRpb25zID0ga2V5ZnJhbWVzYFxuICAwJSwgODAlLCAxMDAlIHsgb3BhY2l0eTogMDsgfVxuICA0MCUgeyBvcGFjaXR5OiAxOyB9XG5gO1xuXG5leHBvcnQgY29uc3QgbG9hZGluZ0luZGljYXRvckNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgc2l6ZSxcbiAgdGhlbWU6IHtcbiAgICBjb2xvcnMsXG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICB9LFxufToge1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW4sXG4gIHNpemU6IG51bWJlcixcbiAgdGhlbWU6IFRoZW1lLFxufSkgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgZm9udFNpemU6IHNpemUsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG1hcmdpblJpZ2h0OiBzaXplLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbn0pO1xuXG50eXBlIERvdFByb3BzID0geyBkZWxheTogbnVtYmVyLCBvZmZzZXQ6IGJvb2xlYW4gfTtcbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IERvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiBudWxsLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSWNvblByb3BzID0ge1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn0gJiBDb21tb25Qcm9wcyAmIHtcbiAgICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgICBzaXplOiBudW1iZXIsXG4gIH07XG5leHBvcnQgY29uc3QgTG9hZGluZ0luZGljYXRvciA9IChwcm9wczogTG9hZGluZ0ljb25Qcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcywgaXNSdGwgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2xvYWRpbmdJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2FkaW5nSW5kaWNhdG9yLmRlZmF1bHRQcm9wcyA9IHsgc2l6ZTogNCB9O1xuIl19 */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar Svg = function Svg(_ref) {\n var size = _ref.size,\n props = _objectWithoutProperties(_ref, [\"size\"]);\n\n return jsx(\"svg\", _extends({\n height: size,\n width: size,\n viewBox: \"0 0 20 20\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n css: _ref2\n }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n }));\n};\nvar DownChevron = function DownChevron(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n }));\n}; // ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3) {\n var isFocused = _ref3.isFocused,\n _ref3$theme = _ref3.theme,\n baseUnit = _ref3$theme.spacing.baseUnit,\n colors = _ref3$theme.colors;\n return {\n label: 'indicatorContainer',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n ':hover': {\n color: isFocused ? colors.neutral80 : colors.neutral40\n }\n };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('dropdownIndicator', props),\n className: cx({\n indicator: true,\n 'dropdown-indicator': true\n }, className)\n }, innerProps), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('clearIndicator', props),\n className: cx({\n indicator: true,\n 'clear-indicator': true\n }, className)\n }, innerProps), children || jsx(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4) {\n var isDisabled = _ref4.isDisabled,\n _ref4$theme = _ref4.theme,\n baseUnit = _ref4$theme.spacing.baseUnit,\n colors = _ref4$theme.colors;\n return {\n label: 'indicatorSeparator',\n alignSelf: 'stretch',\n backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n marginBottom: baseUnit * 2,\n marginTop: baseUnit * 2,\n width: 1\n };\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"span\", _extends({}, innerProps, {\n css: getStyles('indicatorSeparator', props),\n className: cx({\n 'indicator-separator': true\n }, className)\n }));\n}; // ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n 0%, 80%, 100% { opacity: 0; }\\n 40% { opacity: 1; }\\n\"])));\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5) {\n var isFocused = _ref5.isFocused,\n size = _ref5.size,\n _ref5$theme = _ref5.theme,\n colors = _ref5$theme.colors,\n baseUnit = _ref5$theme.spacing.baseUnit;\n return {\n label: 'loadingIndicator',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n alignSelf: 'center',\n fontSize: size,\n lineHeight: 1,\n marginRight: size,\n textAlign: 'center',\n verticalAlign: 'middle'\n };\n};\n\nvar LoadingDot = function LoadingDot(_ref6) {\n var delay = _ref6.delay,\n offset = _ref6.offset;\n return jsx(\"span\", {\n css: /*#__PURE__*/css$2({\n animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n backgroundColor: 'currentColor',\n borderRadius: '1em',\n display: 'inline-block',\n marginLeft: offset ? '1em' : null,\n height: '1em',\n verticalAlign: 'top',\n width: '1em'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:LoadingDot;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHR5cGUgeyBDb21tb25Qcm9wcywgVGhlbWUgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IFN2ZyA9ICh7IHNpemUsIC4uLnByb3BzIH06IHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk0xNC4zNDggMTQuODQ5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwbC0yLjY1MS0zLjAzMC0yLjY1MSAzLjAyOWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMC0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOSAwLTEuNjk3bDIuNzU4LTMuMTUtMi43NTktMy4xNTJjLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI4IDAtMS42OTdzMS4yMjgtMC40NjkgMS42OTcgMGwyLjY1MiAzLjAzMSAyLjY1MS0zLjAzMWMwLjQ2OS0wLjQ2OSAxLjIyOC0wLjQ2OSAxLjY5NyAwczAuNDY5IDEuMjI5IDAgMS42OTdsLTIuNzU4IDMuMTUyIDIuNzU4IDMuMTVjMC40NjkgMC40NjkgMC40NjkgMS4yMjkgMCAxLjY5OHpcIiAvPlxuICA8L1N2Zz5cbik7XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IGFueSkgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIEluZGljYXRvclByb3BzID0gQ29tbW9uUHJvcHMgJiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuOiBOb2RlLFxuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn07XG5cbmNvbnN0IGJhc2VDU1MgPSAoe1xuICBpc0ZvY3VzZWQsXG4gIHRoZW1lOiB7XG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIGNvbG9ycyxcbiAgfSxcbn06IEluZGljYXRvclByb3BzKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG5cbiAgJzpob3Zlcic6IHtcbiAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnZHJvcGRvd25JbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnY2xlYXJJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudHlwZSBTZXBhcmF0b3JTdGF0ZSA9IHsgaXNEaXNhYmxlZDogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gKHtcbiAgaXNEaXNhYmxlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogQ29tbW9uUHJvcHMgJiBTZXBhcmF0b3JTdGF0ZSkgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgd2lkdGg6IDEsXG59KTtcblxuZXhwb3J0IGNvbnN0IEluZGljYXRvclNlcGFyYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdpbmRpY2F0b3JTZXBhcmF0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KHsgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlIH0sIGNsYXNzTmFtZSl9XG4gICAgLz5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTG9hZGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IGxvYWRpbmdEb3RBbmltYXRpb25zID0ga2V5ZnJhbWVzYFxuICAwJSwgODAlLCAxMDAlIHsgb3BhY2l0eTogMDsgfVxuICA0MCUgeyBvcGFjaXR5OiAxOyB9XG5gO1xuXG5leHBvcnQgY29uc3QgbG9hZGluZ0luZGljYXRvckNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgc2l6ZSxcbiAgdGhlbWU6IHtcbiAgICBjb2xvcnMsXG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICB9LFxufToge1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW4sXG4gIHNpemU6IG51bWJlcixcbiAgdGhlbWU6IFRoZW1lLFxufSkgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgZm9udFNpemU6IHNpemUsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG1hcmdpblJpZ2h0OiBzaXplLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbn0pO1xuXG50eXBlIERvdFByb3BzID0geyBkZWxheTogbnVtYmVyLCBvZmZzZXQ6IGJvb2xlYW4gfTtcbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IERvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiBudWxsLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSWNvblByb3BzID0ge1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn0gJiBDb21tb25Qcm9wcyAmIHtcbiAgICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgICBzaXplOiBudW1iZXIsXG4gIH07XG5leHBvcnQgY29uc3QgTG9hZGluZ0luZGljYXRvciA9IChwcm9wczogTG9hZGluZ0ljb25Qcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcywgaXNSdGwgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2xvYWRpbmdJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2FkaW5nSW5kaWNhdG9yLmRlZmF1bHRQcm9wcyA9IHsgc2l6ZTogNCB9O1xuIl19 */\")\n });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends({\n css: getStyles('loadingIndicator', props),\n className: cx({\n indicator: true,\n 'loading-indicator': true\n }, className)\n }, innerProps), jsx(LoadingDot, {\n delay: 0,\n offset: isRtl\n }), jsx(LoadingDot, {\n delay: 160,\n offset: true\n }), jsx(LoadingDot, {\n delay: 320,\n offset: !isRtl\n }));\n};\nLoadingIndicator.defaultProps = {\n size: 4\n};\n\nvar css = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n _ref$theme = _ref.theme,\n colors = _ref$theme.colors,\n borderRadius = _ref$theme.borderRadius,\n spacing = _ref$theme.spacing;\n return {\n label: 'control',\n alignItems: 'center',\n backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n borderRadius: borderRadius,\n borderStyle: 'solid',\n borderWidth: 1,\n boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : null,\n cursor: 'default',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n minHeight: spacing.controlHeight,\n outline: '0 !important',\n position: 'relative',\n transition: 'all 100ms',\n '&:hover': {\n borderColor: isFocused ? colors.primary : colors.neutral30\n }\n };\n};\n\nvar Control = function Control(props) {\n var children = props.children,\n cx = props.cx,\n getStyles = props.getStyles,\n className = props.className,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n innerRef = props.innerRef,\n innerProps = props.innerProps,\n menuIsOpen = props.menuIsOpen;\n return jsx(\"div\", _extends({\n ref: innerRef,\n css: getStyles('control', props),\n className: cx({\n control: true,\n 'control--is-disabled': isDisabled,\n 'control--is-focused': isFocused,\n 'control--menu-is-open': menuIsOpen\n }, className)\n }, innerProps), children);\n};\n\nvar groupCSS = function groupCSS(_ref) {\n var spacing = _ref.theme.spacing;\n return {\n paddingBottom: spacing.baseUnit * 2,\n paddingTop: spacing.baseUnit * 2\n };\n};\n\nvar Group = function Group(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n Heading = props.Heading,\n headingProps = props.headingProps,\n innerProps = props.innerProps,\n label = props.label,\n theme = props.theme,\n selectProps = props.selectProps;\n return jsx(\"div\", _extends({\n css: getStyles('group', props),\n className: cx({\n group: true\n }, className)\n }, innerProps), jsx(Heading, _extends({}, headingProps, {\n selectProps: selectProps,\n theme: theme,\n getStyles: getStyles,\n cx: cx\n }), label), jsx(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n label: 'group',\n color: '#999',\n cursor: 'default',\n display: 'block',\n fontSize: '75%',\n fontWeight: '500',\n marginBottom: '0.25em',\n paddingLeft: spacing.baseUnit * 3,\n paddingRight: spacing.baseUnit * 3,\n textTransform: 'uppercase'\n };\n};\nvar GroupHeading = function GroupHeading(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n theme = props.theme;\n props.selectProps;\n var cleanProps = _objectWithoutProperties(props, [\"className\", \"cx\", \"getStyles\", \"theme\", \"selectProps\"]);\n\n return jsx(\"div\", _extends({\n css: getStyles('groupHeading', _objectSpread2({\n theme: theme\n }, cleanProps)),\n className: cx({\n 'group-heading': true\n }, className)\n }, cleanProps));\n};\n\nvar inputCSS = function inputCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n margin: spacing.baseUnit / 2,\n paddingBottom: spacing.baseUnit / 2,\n paddingTop: spacing.baseUnit / 2,\n visibility: isDisabled ? 'hidden' : 'visible',\n color: colors.neutral80\n };\n};\n\nvar inputStyle = function inputStyle(isHidden) {\n return {\n label: 'input',\n background: 0,\n border: 0,\n fontSize: 'inherit',\n opacity: isHidden ? 0 : 1,\n outline: 0,\n padding: 0,\n color: 'inherit'\n };\n};\n\nvar Input = function Input(_ref2) {\n var className = _ref2.className,\n cx = _ref2.cx,\n getStyles = _ref2.getStyles,\n innerRef = _ref2.innerRef,\n isHidden = _ref2.isHidden,\n isDisabled = _ref2.isDisabled,\n theme = _ref2.theme;\n _ref2.selectProps;\n var props = _objectWithoutProperties(_ref2, [\"className\", \"cx\", \"getStyles\", \"innerRef\", \"isHidden\", \"isDisabled\", \"theme\", \"selectProps\"]);\n\n return jsx(\"div\", {\n css: getStyles('input', _objectSpread2({\n theme: theme\n }, props))\n }, jsx(AutosizeInput, _extends({\n className: cx({\n input: true\n }, className),\n inputRef: innerRef,\n inputStyle: inputStyle(isHidden),\n disabled: isDisabled\n }, props)));\n};\n\nvar multiValueCSS = function multiValueCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n borderRadius = _ref$theme.borderRadius,\n colors = _ref$theme.colors;\n return {\n label: 'multiValue',\n backgroundColor: colors.neutral10,\n borderRadius: borderRadius / 2,\n display: 'flex',\n margin: spacing.baseUnit / 2,\n minWidth: 0 // resolves flex/text-overflow bug\n\n };\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n var _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n colors = _ref2$theme.colors,\n cropWithEllipsis = _ref2.cropWithEllipsis;\n return {\n borderRadius: borderRadius / 2,\n color: colors.neutral80,\n fontSize: '85%',\n overflow: 'hidden',\n padding: 3,\n paddingLeft: 6,\n textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n whiteSpace: 'nowrap'\n };\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n var _ref3$theme = _ref3.theme,\n spacing = _ref3$theme.spacing,\n borderRadius = _ref3$theme.borderRadius,\n colors = _ref3$theme.colors,\n isFocused = _ref3.isFocused;\n return {\n alignItems: 'center',\n borderRadius: borderRadius / 2,\n backgroundColor: isFocused && colors.dangerLight,\n display: 'flex',\n paddingLeft: spacing.baseUnit,\n paddingRight: spacing.baseUnit,\n ':hover': {\n backgroundColor: colors.dangerLight,\n color: colors.danger\n }\n };\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n var children = _ref4.children,\n innerProps = _ref4.innerProps;\n return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nfunction MultiValueRemove(_ref5) {\n var children = _ref5.children,\n innerProps = _ref5.innerProps;\n return jsx(\"div\", innerProps, children || jsx(CrossIcon, {\n size: 14\n }));\n}\n\nvar MultiValue = function MultiValue(props) {\n var children = props.children,\n className = props.className,\n components = props.components,\n cx = props.cx,\n data = props.data,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n removeProps = props.removeProps,\n selectProps = props.selectProps;\n var Container = components.Container,\n Label = components.Label,\n Remove = components.Remove;\n return jsx(ClassNames, null, function (_ref6) {\n var css = _ref6.css,\n emotionCx = _ref6.cx;\n return jsx(Container, {\n data: data,\n innerProps: _objectSpread2({\n className: emotionCx(css(getStyles('multiValue', props)), cx({\n 'multi-value': true,\n 'multi-value--is-disabled': isDisabled\n }, className))\n }, innerProps),\n selectProps: selectProps\n }, jsx(Label, {\n data: data,\n innerProps: {\n className: emotionCx(css(getStyles('multiValueLabel', props)), cx({\n 'multi-value__label': true\n }, className))\n },\n selectProps: selectProps\n }, children), jsx(Remove, {\n data: data,\n innerProps: _objectSpread2({\n className: emotionCx(css(getStyles('multiValueRemove', props)), cx({\n 'multi-value__remove': true\n }, className))\n }, removeProps),\n selectProps: selectProps\n }));\n });\n};\n\nMultiValue.defaultProps = {\n cropWithEllipsis: true\n};\n\nvar optionCSS = function optionCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n isSelected = _ref.isSelected,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'option',\n backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n cursor: 'default',\n display: 'block',\n fontSize: 'inherit',\n padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n width: '100%',\n userSelect: 'none',\n WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n // provide some affordance on touch devices\n ':active': {\n backgroundColor: !isDisabled && (isSelected ? colors.primary : colors.primary50)\n }\n };\n};\n\nvar Option = function Option(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n isSelected = props.isSelected,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('option', props),\n className: cx({\n option: true,\n 'option--is-disabled': isDisabled,\n 'option--is-focused': isFocused,\n 'option--is-selected': isSelected\n }, className),\n ref: innerRef\n }, innerProps), children);\n};\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'placeholder',\n color: colors.neutral50,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar Placeholder = function Placeholder(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('placeholder', props),\n className: cx({\n placeholder: true\n }, className)\n }, innerProps), children);\n};\n\nvar css$1 = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'singleValue',\n color: isDisabled ? colors.neutral40 : colors.neutral80,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n maxWidth: \"calc(100% - \".concat(spacing.baseUnit * 2, \"px)\"),\n overflow: 'hidden',\n position: 'absolute',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar SingleValue = function SingleValue(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('singleValue', props),\n className: cx({\n 'single-value': true,\n 'single-value--is-disabled': isDisabled\n }, className)\n }, innerProps), children);\n};\n\nvar components = {\n ClearIndicator: ClearIndicator,\n Control: Control,\n DropdownIndicator: DropdownIndicator,\n DownChevron: DownChevron,\n CrossIcon: CrossIcon,\n Group: Group,\n GroupHeading: GroupHeading,\n IndicatorsContainer: IndicatorsContainer,\n IndicatorSeparator: IndicatorSeparator,\n Input: Input,\n LoadingIndicator: LoadingIndicator,\n Menu: Menu,\n MenuList: MenuList,\n MenuPortal: MenuPortal,\n LoadingMessage: LoadingMessage,\n NoOptionsMessage: NoOptionsMessage,\n MultiValue: MultiValue,\n MultiValueContainer: MultiValueContainer,\n MultiValueLabel: MultiValueLabel,\n MultiValueRemove: MultiValueRemove,\n Option: Option,\n Placeholder: Placeholder,\n SelectContainer: SelectContainer,\n SingleValue: SingleValue,\n ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n return _objectSpread2(_objectSpread2({}, components), props.components);\n};\n\nexport { classNames as A, defaultComponents as B, isDocumentElement as C, cleanValue as D, scrollIntoView as E, noop as F, handleInputChange as G, MenuPlacer as M, _createSuper as _, _objectSpread2 as a, clearIndicatorCSS as b, components as c, containerCSS as d, css as e, dropdownIndicatorCSS as f, groupCSS as g, groupHeadingCSS as h, indicatorsContainerCSS as i, indicatorSeparatorCSS as j, inputCSS as k, loadingIndicatorCSS as l, loadingMessageCSS as m, menuCSS as n, menuListCSS as o, menuPortalCSS as p, multiValueCSS as q, multiValueLabelCSS as r, multiValueRemoveCSS as s, noOptionsMessageCSS as t, optionCSS as u, placeholderCSS as v, css$1 as w, valueContainerCSS as x, isTouchCapable as y, isMobileDevice as z };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { a as _objectSpread2, b as clearIndicatorCSS, d as containerCSS, e as css$1, f as dropdownIndicatorCSS, g as groupCSS, h as groupHeadingCSS, i as indicatorsContainerCSS, j as indicatorSeparatorCSS, k as inputCSS, l as loadingIndicatorCSS, m as loadingMessageCSS, n as menuCSS, o as menuListCSS, p as menuPortalCSS, q as multiValueCSS, r as multiValueLabelCSS, s as multiValueRemoveCSS, t as noOptionsMessageCSS, u as optionCSS, v as placeholderCSS, w as css$2, x as valueContainerCSS, y as isTouchCapable, z as isMobileDevice, _ as _createSuper, A as classNames, B as defaultComponents, C as isDocumentElement, D as cleanValue, E as scrollIntoView, F as noop, M as MenuPlacer } from './index-b19cc27c.browser.esm.js';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport React, { useRef, useCallback, useEffect, Component } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\n\nvar diacritics = [{\n base: 'A',\n letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n base: 'AA',\n letters: \"\\uA732\"\n}, {\n base: 'AE',\n letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n base: 'AO',\n letters: \"\\uA734\"\n}, {\n base: 'AU',\n letters: \"\\uA736\"\n}, {\n base: 'AV',\n letters: \"\\uA738\\uA73A\"\n}, {\n base: 'AY',\n letters: \"\\uA73C\"\n}, {\n base: 'B',\n letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n base: 'C',\n letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n base: 'D',\n letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\"\n}, {\n base: 'DZ',\n letters: \"\\u01F1\\u01C4\"\n}, {\n base: 'Dz',\n letters: \"\\u01F2\\u01C5\"\n}, {\n base: 'E',\n letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n base: 'F',\n letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n base: 'G',\n letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n base: 'H',\n letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n base: 'I',\n letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n base: 'J',\n letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n base: 'K',\n letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n base: 'L',\n letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n base: 'LJ',\n letters: \"\\u01C7\"\n}, {\n base: 'Lj',\n letters: \"\\u01C8\"\n}, {\n base: 'M',\n letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n base: 'N',\n letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n base: 'NJ',\n letters: \"\\u01CA\"\n}, {\n base: 'Nj',\n letters: \"\\u01CB\"\n}, {\n base: 'O',\n letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n base: 'OI',\n letters: \"\\u01A2\"\n}, {\n base: 'OO',\n letters: \"\\uA74E\"\n}, {\n base: 'OU',\n letters: \"\\u0222\"\n}, {\n base: 'P',\n letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n base: 'Q',\n letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n base: 'R',\n letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n base: 'S',\n letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n base: 'T',\n letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n base: 'TZ',\n letters: \"\\uA728\"\n}, {\n base: 'U',\n letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n base: 'V',\n letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n base: 'VY',\n letters: \"\\uA760\"\n}, {\n base: 'W',\n letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n base: 'X',\n letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n base: 'Y',\n letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n base: 'Z',\n letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n base: 'a',\n letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n base: 'aa',\n letters: \"\\uA733\"\n}, {\n base: 'ae',\n letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n base: 'ao',\n letters: \"\\uA735\"\n}, {\n base: 'au',\n letters: \"\\uA737\"\n}, {\n base: 'av',\n letters: \"\\uA739\\uA73B\"\n}, {\n base: 'ay',\n letters: \"\\uA73D\"\n}, {\n base: 'b',\n letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n base: 'c',\n letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n base: 'd',\n letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n base: 'dz',\n letters: \"\\u01F3\\u01C6\"\n}, {\n base: 'e',\n letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n base: 'f',\n letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n base: 'g',\n letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n base: 'h',\n letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n base: 'hv',\n letters: \"\\u0195\"\n}, {\n base: 'i',\n letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n base: 'j',\n letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n base: 'k',\n letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n base: 'l',\n letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n base: 'lj',\n letters: \"\\u01C9\"\n}, {\n base: 'm',\n letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n base: 'n',\n letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n base: 'nj',\n letters: \"\\u01CC\"\n}, {\n base: 'o',\n letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n base: 'oi',\n letters: \"\\u01A3\"\n}, {\n base: 'ou',\n letters: \"\\u0223\"\n}, {\n base: 'oo',\n letters: \"\\uA74F\"\n}, {\n base: 'p',\n letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n base: 'q',\n letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n base: 'r',\n letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n base: 's',\n letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n base: 't',\n letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n base: 'tz',\n letters: \"\\uA729\"\n}, {\n base: 'u',\n letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n base: 'v',\n letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n base: 'vy',\n letters: \"\\uA761\"\n}, {\n base: 'w',\n letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n base: 'x',\n letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n base: 'y',\n letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n base: 'z',\n letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}];\nvar anyDiacritic = new RegExp('[' + diacritics.map(function (d) {\n return d.letters;\n}).join('') + ']', 'g');\nvar diacriticToBase = {};\n\nfor (var i = 0; i < diacritics.length; i++) {\n var diacritic = diacritics[i];\n\n for (var j = 0; j < diacritic.letters.length; j++) {\n diacriticToBase[diacritic.letters[j]] = diacritic.base;\n }\n}\n\nvar stripDiacritics = function stripDiacritics(str) {\n return str.replace(anyDiacritic, function (match) {\n return diacriticToBase[match];\n });\n};\n\nvar trimString = function trimString(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n return \"\".concat(option.label, \" \").concat(option.value);\n};\n\nvar createFilter = function createFilter(config) {\n return function (option, rawInput) {\n var _ignoreCase$ignoreAcc = _objectSpread2({\n ignoreCase: true,\n ignoreAccents: true,\n stringify: defaultStringify,\n trim: true,\n matchFrom: 'any'\n }, config),\n ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n stringify = _ignoreCase$ignoreAcc.stringify,\n trim = _ignoreCase$ignoreAcc.trim,\n matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n var input = trim ? trimString(rawInput) : rawInput;\n var candidate = trim ? trimString(stringify(option)) : stringify(option);\n\n if (ignoreCase) {\n input = input.toLowerCase();\n candidate = candidate.toLowerCase();\n }\n\n if (ignoreAccents) {\n input = stripDiacritics(input);\n candidate = stripDiacritics(candidate);\n }\n\n return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n };\n};\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n name: \"7pg0cj-a11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap\"\n} : {\n name: \"1f43avz-a11yText-A11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFJIiwiZmlsZSI6IkExMXlUZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgdHlwZSBFbGVtZW50Q29uZmlnIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG4vLyBBc3Npc3RpdmUgdGV4dCB0byBkZXNjcmliZSB2aXN1YWwgZWxlbWVudHMuIEhpZGRlbiBmb3Igc2lnaHRlZCB1c2Vycy5cbmNvbnN0IEExMXlUZXh0ID0gKHByb3BzOiBFbGVtZW50Q29uZmlnPCdzcGFuJz4pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\nvar A11yText = function A11yText(props) {\n return jsx(\"span\", _extends({\n css: _ref\n }, props));\n};\n\nfunction DummyInput(_ref) {\n _ref.in;\n _ref.out;\n _ref.onExited;\n _ref.appear;\n _ref.enter;\n _ref.exit;\n var innerRef = _ref.innerRef;\n _ref.emotion;\n var props = _objectWithoutProperties(_ref, [\"in\", \"out\", \"onExited\", \"appear\", \"enter\", \"exit\", \"innerRef\", \"emotion\"]);\n\n return jsx(\"input\", _extends({\n ref: innerRef\n }, props, {\n css: /*#__PURE__*/css({\n label: 'dummyInput',\n // get rid of any default styles\n background: 0,\n border: 0,\n fontSize: 'inherit',\n outline: 0,\n padding: 0,\n // important! without `width` browsers won't allow focus\n width: 1,\n // remove cursor on desktop\n color: 'transparent',\n // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n left: -100,\n opacity: 0,\n position: 'relative',\n transform: 'scale(0)'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:DummyInput;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJNIiwiZmlsZSI6IkR1bW15SW5wdXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIER1bW15SW5wdXQoe1xuICBpbjogaW5Qcm9wLFxuICBvdXQsXG4gIG9uRXhpdGVkLFxuICBhcHBlYXIsXG4gIGVudGVyLFxuICBleGl0LFxuICBpbm5lclJlZixcbiAgZW1vdGlvbixcbiAgLi4ucHJvcHNcbn06IGFueSkge1xuICByZXR1cm4gKFxuICAgIDxpbnB1dFxuICAgICAgcmVmPXtpbm5lclJlZn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIGNzcz17e1xuICAgICAgICBsYWJlbDogJ2R1bW15SW5wdXQnLFxuICAgICAgICAvLyBnZXQgcmlkIG9mIGFueSBkZWZhdWx0IHN0eWxlc1xuICAgICAgICBiYWNrZ3JvdW5kOiAwLFxuICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgICAgIG91dGxpbmU6IDAsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIC8vIGltcG9ydGFudCEgd2l0aG91dCBgd2lkdGhgIGJyb3dzZXJzIHdvbid0IGFsbG93IGZvY3VzXG4gICAgICAgIHdpZHRoOiAxLFxuXG4gICAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gZGVza3RvcFxuICAgICAgICBjb2xvcjogJ3RyYW5zcGFyZW50JyxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICAgIGxlZnQ6IC0xMDAsXG4gICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSgwKScsXG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG4iXX0= */\")\n }));\n}\n\nvar cancelScroll = function cancelScroll(event) {\n event.preventDefault();\n event.stopPropagation();\n};\n\nfunction useScrollCapture(_ref) {\n var isEnabled = _ref.isEnabled,\n onBottomArrive = _ref.onBottomArrive,\n onBottomLeave = _ref.onBottomLeave,\n onTopArrive = _ref.onTopArrive,\n onTopLeave = _ref.onTopLeave;\n var isBottom = useRef(false);\n var isTop = useRef(false);\n var touchStart = useRef(0);\n var scrollTarget = useRef(null);\n var handleEventDelta = useCallback(function (event, delta) {\n // Reference should never be `null` at this point, but flow complains otherwise\n if (scrollTarget.current === null) return;\n var _scrollTarget$current = scrollTarget.current,\n scrollTop = _scrollTarget$current.scrollTop,\n scrollHeight = _scrollTarget$current.scrollHeight,\n clientHeight = _scrollTarget$current.clientHeight;\n var target = scrollTarget.current;\n var isDeltaPositive = delta > 0;\n var availableScroll = scrollHeight - clientHeight - scrollTop;\n var shouldCancelScroll = false; // reset bottom/top flags\n\n if (availableScroll > delta && isBottom.current) {\n if (onBottomLeave) onBottomLeave(event);\n isBottom.current = false;\n }\n\n if (isDeltaPositive && isTop.current) {\n if (onTopLeave) onTopLeave(event);\n isTop.current = false;\n } // bottom limit\n\n\n if (isDeltaPositive && delta > availableScroll) {\n if (onBottomArrive && !isBottom.current) {\n onBottomArrive(event);\n }\n\n target.scrollTop = scrollHeight;\n shouldCancelScroll = true;\n isBottom.current = true; // top limit\n } else if (!isDeltaPositive && -delta > scrollTop) {\n if (onTopArrive && !isTop.current) {\n onTopArrive(event);\n }\n\n target.scrollTop = 0;\n shouldCancelScroll = true;\n isTop.current = true;\n } // cancel scroll\n\n\n if (shouldCancelScroll) {\n cancelScroll(event);\n }\n }, []);\n var onWheel = useCallback(function (event) {\n handleEventDelta(event, event.deltaY);\n }, [handleEventDelta]);\n var onTouchStart = useCallback(function (event) {\n // set touch start so we can calculate touchmove delta\n touchStart.current = event.changedTouches[0].clientY;\n }, []);\n var onTouchMove = useCallback(function (event) {\n var deltaY = touchStart.current - event.changedTouches[0].clientY;\n handleEventDelta(event, deltaY);\n }, [handleEventDelta]);\n var startListening = useCallback(function (el) {\n // bail early if no element is available to attach to\n if (!el) return; // all the if statements are to appease Flow 😢\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('wheel', onWheel, false);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchstart', onTouchStart, false);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchmove', onTouchMove, false);\n }\n }, [onTouchMove, onTouchStart, onWheel]);\n var stopListening = useCallback(function (el) {\n // bail early if no element is available to detach from\n if (!el) return; // all the if statements are to appease Flow 😢\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('wheel', onWheel, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchstart', onTouchStart, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchmove', onTouchMove, false);\n }\n }, [onTouchMove, onTouchStart, onWheel]);\n useEffect(function () {\n if (!isEnabled) return;\n var element = scrollTarget.current;\n startListening(element);\n return function () {\n stopListening(element);\n };\n }, [isEnabled, startListening, stopListening]);\n return function (element) {\n scrollTarget.current = element;\n };\n}\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n boxSizing: 'border-box',\n // account for possible declaration `width: 100%;` on body\n overflow: 'hidden',\n position: 'relative',\n height: '100%'\n};\n\nfunction preventTouchMove(e) {\n e.preventDefault();\n}\n\nfunction allowTouchMove(e) {\n e.stopPropagation();\n}\n\nfunction preventInertiaScroll() {\n var top = this.scrollTop;\n var totalScroll = this.scrollHeight;\n var currentScroll = top + this.offsetHeight;\n\n if (top === 0) {\n this.scrollTop = 1;\n } else if (currentScroll === totalScroll) {\n this.scrollTop = top - 1;\n }\n} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\n\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nvar canUseDOM = !!( window.document && window.document.createElement);\nvar activeScrollLocks = 0;\nvar listenerOptions = {\n capture: false,\n passive: false\n};\nfunction useScrollLock(_ref) {\n var isEnabled = _ref.isEnabled,\n _ref$accountForScroll = _ref.accountForScrollbars,\n accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll;\n var originalStyles = useRef({});\n var scrollTarget = useRef(null);\n var addScrollLock = useCallback(function (touchScrollTarget) {\n if (!canUseDOM) return;\n var target = document.body;\n var targetStyle = target && target.style;\n\n if (accountForScrollbars) {\n // store any styles already applied to the body\n STYLE_KEYS.forEach(function (key) {\n var val = targetStyle && targetStyle[key];\n originalStyles.current[key] = val;\n });\n } // apply the lock styles and padding if this is the first scroll lock\n\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0;\n var clientWidth = document.body ? document.body.clientWidth : 0;\n var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n Object.keys(LOCK_STYLES).forEach(function (key) {\n var val = LOCK_STYLES[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n\n if (targetStyle) {\n targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n }\n } // account for touch devices\n\n\n if (target && isTouchDevice()) {\n // Mobile Safari ignores { overflow: hidden } declaration on the body.\n target.addEventListener('touchmove', preventTouchMove, listenerOptions); // Allow scroll on provided target\n\n if (touchScrollTarget) {\n touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, listenerOptions);\n touchScrollTarget.addEventListener('touchmove', allowTouchMove, listenerOptions);\n }\n } // increment active scroll locks\n\n\n activeScrollLocks += 1;\n }, []);\n var removeScrollLock = useCallback(function (touchScrollTarget) {\n if (!canUseDOM) return;\n var target = document.body;\n var targetStyle = target && target.style; // safely decrement active scroll locks\n\n activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n STYLE_KEYS.forEach(function (key) {\n var val = originalStyles.current[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n } // remove touch listeners\n\n\n if (target && isTouchDevice()) {\n target.removeEventListener('touchmove', preventTouchMove, listenerOptions);\n\n if (touchScrollTarget) {\n touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, listenerOptions);\n touchScrollTarget.removeEventListener('touchmove', allowTouchMove, listenerOptions);\n }\n }\n }, []);\n useEffect(function () {\n if (!isEnabled) return;\n var element = scrollTarget.current;\n addScrollLock(element);\n return function () {\n removeScrollLock(element);\n };\n }, [isEnabled, addScrollLock, removeScrollLock]);\n return function (element) {\n scrollTarget.current = element;\n };\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar blurSelectInput = function blurSelectInput() {\n return document.activeElement && document.activeElement.blur();\n};\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"1kfdb0e\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0\"\n} : {\n name: \"bp8cua-ScrollManager\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0RVIiwiZmlsZSI6IlNjcm9sbE1hbmFnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgUmVhY3QsIHsgdHlwZSBFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZVNjcm9sbENhcHR1cmUgZnJvbSAnLi91c2VTY3JvbGxDYXB0dXJlJztcbmltcG9ydCB1c2VTY3JvbGxMb2NrIGZyb20gJy4vdXNlU2Nyb2xsTG9jayc7XG5cbnR5cGUgUmVmQ2FsbGJhY2s8VD4gPSAoVCB8IG51bGwpID0+IHZvaWQ7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiAoUmVmQ2FsbGJhY2s8SFRNTEVsZW1lbnQ+KSA9PiBFbGVtZW50PCo+LFxuICBsb2NrRW5hYmxlZDogYm9vbGVhbixcbiAgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW4sXG4gIG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MRWxlbWVudD4pID0+IHZvaWQsXG4gIG9uQm90dG9tTGVhdmU/OiAoZXZlbnQ6IFN5bnRoZXRpY0V2ZW50PEhUTUxFbGVtZW50PikgPT4gdm9pZCxcbiAgb25Ub3BBcnJpdmU/OiAoZXZlbnQ6IFN5bnRoZXRpY0V2ZW50PEhUTUxFbGVtZW50PikgPT4gdm9pZCxcbiAgb25Ub3BMZWF2ZT86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB2b2lkLFxufTtcblxuY29uc3QgYmx1clNlbGVjdElucHV0ID0gKCkgPT5cbiAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcih7XG4gIGNoaWxkcmVuLFxuICBsb2NrRW5hYmxlZCxcbiAgY2FwdHVyZUVuYWJsZWQgPSB0cnVlLFxuICBvbkJvdHRvbUFycml2ZSxcbiAgb25Cb3R0b21MZWF2ZSxcbiAgb25Ub3BBcnJpdmUsXG4gIG9uVG9wTGVhdmUsXG59OiBQcm9wcykge1xuICBjb25zdCBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUsXG4gIH0pO1xuICBjb25zdCBzZXRTY3JvbGxMb2NrVGFyZ2V0ID0gdXNlU2Nyb2xsTG9jayh7IGlzRW5hYmxlZDogbG9ja0VuYWJsZWQgfSk7XG5cbiAgY29uc3QgdGFyZ2V0UmVmID0gZWxlbWVudCA9PiB7XG4gICAgc2V0U2Nyb2xsQ2FwdHVyZVRhcmdldChlbGVtZW50KTtcbiAgICBzZXRTY3JvbGxMb2NrVGFyZ2V0KGVsZW1lbnQpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAge2xvY2tFbmFibGVkICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIG9uQ2xpY2s9e2JsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtjaGlsZHJlbih0YXJnZXRSZWYpfVxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICk7XG59XG4iXX0= */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1\n};\n\nfunction ScrollManager(_ref) {\n var children = _ref.children,\n lockEnabled = _ref.lockEnabled,\n _ref$captureEnabled = _ref.captureEnabled,\n captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled,\n onBottomArrive = _ref.onBottomArrive,\n onBottomLeave = _ref.onBottomLeave,\n onTopArrive = _ref.onTopArrive,\n onTopLeave = _ref.onTopLeave;\n var setScrollCaptureTarget = useScrollCapture({\n isEnabled: captureEnabled,\n onBottomArrive: onBottomArrive,\n onBottomLeave: onBottomLeave,\n onTopArrive: onTopArrive,\n onTopLeave: onTopLeave\n });\n var setScrollLockTarget = useScrollLock({\n isEnabled: lockEnabled\n });\n\n var targetRef = function targetRef(element) {\n setScrollCaptureTarget(element);\n setScrollLockTarget(element);\n };\n\n return jsx(React.Fragment, null, lockEnabled && jsx(\"div\", {\n onClick: blurSelectInput,\n css: _ref2\n }), children(targetRef));\n}\n\nvar instructionsAriaMessage = function instructionsAriaMessage(event) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var isSearchable = context.isSearchable,\n isMulti = context.isMulti,\n label = context.label,\n isDisabled = context.isDisabled,\n tabSelectsValue = context.tabSelectsValue;\n\n switch (event) {\n case 'menu':\n return \"Use Up and Down to choose options\".concat(isDisabled ? '' : ', press Enter to select the currently focused option', \", press Escape to exit the menu\").concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', \".\");\n\n case 'input':\n return \"\".concat(label ? label : 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '');\n\n case 'value':\n return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n }\n};\nvar valueEventAriaMessage = function valueEventAriaMessage(event, context) {\n var value = context.value,\n isDisabled = context.isDisabled;\n if (!value) return;\n\n switch (event) {\n case 'deselect-option':\n case 'pop-value':\n case 'remove-value':\n return \"option \".concat(value, \", deselected.\");\n\n case 'select-option':\n return isDisabled ? \"option \".concat(value, \" is disabled. Select another option.\") : \"option \".concat(value, \", selected.\");\n }\n};\nvar valueFocusAriaMessage = function valueFocusAriaMessage(_ref) {\n var focusedValue = _ref.focusedValue,\n getOptionLabel = _ref.getOptionLabel,\n selectValue = _ref.selectValue;\n return \"value \".concat(getOptionLabel(focusedValue), \" focused, \").concat(selectValue.indexOf(focusedValue) + 1, \" of \").concat(selectValue.length, \".\");\n};\nvar optionFocusAriaMessage = function optionFocusAriaMessage(_ref2) {\n var focusedOption = _ref2.focusedOption,\n getOptionLabel = _ref2.getOptionLabel,\n options = _ref2.options;\n return \"option \".concat(getOptionLabel(focusedOption), \" focused\").concat(focusedOption.isDisabled ? ' disabled' : '', \", \").concat(options.indexOf(focusedOption) + 1, \" of \").concat(options.length, \".\");\n};\nvar resultsAriaMessage = function resultsAriaMessage(_ref3) {\n var inputValue = _ref3.inputValue,\n screenReaderMessage = _ref3.screenReaderMessage;\n return \"\".concat(screenReaderMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n};\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n return group.label;\n};\nvar getOptionLabel = function getOptionLabel(option) {\n return option.label;\n};\nvar getOptionValue = function getOptionValue(option) {\n return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n return !!option.isDisabled;\n};\n\nvar defaultStyles = {\n clearIndicator: clearIndicatorCSS,\n container: containerCSS,\n control: css$1,\n dropdownIndicator: dropdownIndicatorCSS,\n group: groupCSS,\n groupHeading: groupHeadingCSS,\n indicatorsContainer: indicatorsContainerCSS,\n indicatorSeparator: indicatorSeparatorCSS,\n input: inputCSS,\n loadingIndicator: loadingIndicatorCSS,\n loadingMessage: loadingMessageCSS,\n menu: menuCSS,\n menuList: menuListCSS,\n menuPortal: menuPortalCSS,\n multiValue: multiValueCSS,\n multiValueLabel: multiValueLabelCSS,\n multiValueRemove: multiValueRemoveCSS,\n noOptionsMessage: noOptionsMessageCSS,\n option: optionCSS,\n placeholder: placeholderCSS,\n singleValue: css$2,\n valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // initialize with source styles\n var styles = _objectSpread2({}, source); // massage in target styles\n\n\n Object.keys(target).forEach(function (key) {\n if (source[key]) {\n styles[key] = function (rsCss, props) {\n return target[key](source[key](rsCss, props), props);\n };\n } else {\n styles[key] = target[key];\n }\n });\n return styles;\n}\n\nvar colors = {\n primary: '#2684FF',\n primary75: '#4C9AFF',\n primary50: '#B2D4FF',\n primary25: '#DEEBFF',\n danger: '#DE350B',\n dangerLight: '#FFBDAD',\n neutral0: 'hsl(0, 0%, 100%)',\n neutral5: 'hsl(0, 0%, 95%)',\n neutral10: 'hsl(0, 0%, 90%)',\n neutral20: 'hsl(0, 0%, 80%)',\n neutral30: 'hsl(0, 0%, 70%)',\n neutral40: 'hsl(0, 0%, 60%)',\n neutral50: 'hsl(0, 0%, 50%)',\n neutral60: 'hsl(0, 0%, 40%)',\n neutral70: 'hsl(0, 0%, 30%)',\n neutral80: 'hsl(0, 0%, 20%)',\n neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4; // Used to calculate consistent margin/padding on elements\n\nvar baseUnit = 4; // The minimum height of the control\n\nvar controlHeight = 38; // The amount of space between the control and menu */\n\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n baseUnit: baseUnit,\n controlHeight: controlHeight,\n menuGutter: menuGutter\n};\nvar defaultTheme = {\n borderRadius: borderRadius,\n colors: colors,\n spacing: spacing\n};\n\nvar defaultProps = {\n backspaceRemovesValue: true,\n blurInputOnSelect: isTouchCapable(),\n captureMenuScroll: !isTouchCapable(),\n closeMenuOnSelect: true,\n closeMenuOnScroll: false,\n components: {},\n controlShouldRenderValue: true,\n escapeClearsValue: false,\n filterOption: createFilter(),\n formatGroupLabel: formatGroupLabel,\n getOptionLabel: getOptionLabel,\n getOptionValue: getOptionValue,\n isDisabled: false,\n isLoading: false,\n isMulti: false,\n isRtl: false,\n isSearchable: true,\n isOptionDisabled: isOptionDisabled,\n loadingMessage: function loadingMessage() {\n return 'Loading...';\n },\n maxMenuHeight: 300,\n minMenuHeight: 140,\n menuIsOpen: false,\n menuPlacement: 'bottom',\n menuPosition: 'absolute',\n menuShouldBlockScroll: false,\n menuShouldScrollIntoView: !isMobileDevice(),\n noOptionsMessage: function noOptionsMessage() {\n return 'No options';\n },\n openMenuOnFocus: false,\n openMenuOnClick: true,\n options: [],\n pageSize: 5,\n placeholder: 'Select...',\n screenReaderStatus: function screenReaderStatus(_ref) {\n var count = _ref.count;\n return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n },\n styles: {},\n tabIndex: '0',\n tabSelectsValue: true\n};\n\nfunction toCategorizedOption(props, option, selectValue, index) {\n var isDisabled = _isOptionDisabled(props, option, selectValue);\n\n var isSelected = _isOptionSelected(props, option, selectValue);\n\n var label = getOptionLabel$1(props, option);\n var value = getOptionValue$1(props, option);\n return {\n type: 'option',\n data: option,\n isDisabled: isDisabled,\n isSelected: isSelected,\n label: label,\n value: value,\n index: index\n };\n}\n\nfunction buildCategorizedOptions(props, selectValue) {\n return props.options.map(function (groupOrOption, groupOrOptionIndex) {\n if (groupOrOption.options) {\n var categorizedOptions = groupOrOption.options.map(function (option, optionIndex) {\n return toCategorizedOption(props, option, selectValue, optionIndex);\n }).filter(function (categorizedOption) {\n return isFocusable(props, categorizedOption);\n });\n return categorizedOptions.length > 0 ? {\n type: 'group',\n data: groupOrOption,\n options: categorizedOptions,\n index: groupOrOptionIndex\n } : undefined;\n }\n\n var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex);\n return isFocusable(props, categorizedOption) ? categorizedOption : undefined;\n }) // Flow limitation (see https://github.com/facebook/flow/issues/1414)\n .filter(function (categorizedOption) {\n return !!categorizedOption;\n });\n}\n\nfunction buildFocusableOptionsFromCategorizedOptions(categorizedOptions) {\n return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) {\n if (categorizedOption.type === 'group') {\n optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) {\n return option.data;\n })));\n } else {\n optionsAccumulator.push(categorizedOption.data);\n }\n\n return optionsAccumulator;\n }, []);\n}\n\nfunction buildFocusableOptions(props, selectValue) {\n return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue));\n}\n\nfunction isFocusable(props, categorizedOption) {\n var _props$inputValue = props.inputValue,\n inputValue = _props$inputValue === void 0 ? '' : _props$inputValue;\n var data = categorizedOption.data,\n isSelected = categorizedOption.isSelected,\n label = categorizedOption.label,\n value = categorizedOption.value;\n return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, {\n label: label,\n value: value,\n data: data\n }, inputValue);\n}\n\nfunction getNextFocusedValue(state, nextSelectValue) {\n var focusedValue = state.focusedValue,\n lastSelectValue = state.selectValue;\n var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n if (lastFocusedIndex > -1) {\n var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\n if (nextFocusedIndex > -1) {\n // the focused value is still in the selectValue, return it\n return focusedValue;\n } else if (lastFocusedIndex < nextSelectValue.length) {\n // the focusedValue is not present in the next selectValue array by\n // reference, so return the new value at the same index\n return nextSelectValue[lastFocusedIndex];\n }\n }\n\n return null;\n}\n\nfunction getNextFocusedOption(state, options) {\n var lastFocusedOption = state.focusedOption;\n return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n}\n\nvar getOptionLabel$1 = function getOptionLabel(props, data) {\n return props.getOptionLabel(data);\n};\n\nvar getOptionValue$1 = function getOptionValue(props, data) {\n return props.getOptionValue(data);\n};\n\nfunction _isOptionDisabled(props, option, selectValue) {\n return typeof props.isOptionDisabled === 'function' ? props.isOptionDisabled(option, selectValue) : false;\n}\n\nfunction _isOptionSelected(props, option, selectValue) {\n if (selectValue.indexOf(option) > -1) return true;\n\n if (typeof props.isOptionSelected === 'function') {\n return props.isOptionSelected(option, selectValue);\n }\n\n var candidate = getOptionValue$1(props, option);\n return selectValue.some(function (i) {\n return getOptionValue$1(props, i) === candidate;\n });\n}\n\nfunction _filterOption(props, option, inputValue) {\n return props.filterOption ? props.filterOption(option, inputValue) : true;\n}\n\nvar shouldHideSelectedOptions = function shouldHideSelectedOptions(props) {\n var hideSelectedOptions = props.hideSelectedOptions,\n isMulti = props.isMulti;\n if (hideSelectedOptions === undefined) return isMulti;\n return hideSelectedOptions;\n};\n\nvar instanceId = 1;\n\nvar Select = /*#__PURE__*/function (_Component) {\n _inherits(Select, _Component);\n\n var _super = _createSuper(Select);\n\n // Misc. Instance Properties\n // ------------------------------\n // TODO\n // Refs\n // ------------------------------\n // Lifecycle\n // ------------------------------\n function Select(_props) {\n var _this;\n\n _classCallCheck(this, Select);\n\n _this = _super.call(this, _props);\n _this.state = {\n ariaLiveSelection: '',\n ariaLiveContext: '',\n focusedOption: null,\n focusedValue: null,\n inputIsHidden: false,\n isFocused: false,\n selectValue: [],\n clearFocusValueOnUpdate: false,\n inputIsHiddenAfterUpdate: undefined,\n prevProps: undefined\n };\n _this.blockOptionHover = false;\n _this.isComposing = false;\n _this.commonProps = void 0;\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n _this.instancePrefix = '';\n _this.openAfterFocus = false;\n _this.scrollToFocusedOptionOnUpdate = false;\n _this.userIsDragging = void 0;\n _this.controlRef = null;\n\n _this.getControlRef = function (ref) {\n _this.controlRef = ref;\n };\n\n _this.focusedOptionRef = null;\n\n _this.getFocusedOptionRef = function (ref) {\n _this.focusedOptionRef = ref;\n };\n\n _this.menuListRef = null;\n\n _this.getMenuListRef = function (ref) {\n _this.menuListRef = ref;\n };\n\n _this.inputRef = null;\n\n _this.getInputRef = function (ref) {\n _this.inputRef = ref;\n };\n\n _this.focus = _this.focusInput;\n _this.blur = _this.blurInput;\n\n _this.onChange = function (newValue, actionMeta) {\n var _this$props = _this.props,\n onChange = _this$props.onChange,\n name = _this$props.name;\n onChange(newValue, _objectSpread2(_objectSpread2({}, actionMeta), {}, {\n name: name\n }));\n };\n\n _this.setValue = function (newValue) {\n var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'set-value';\n var option = arguments.length > 2 ? arguments[2] : undefined;\n var _this$props2 = _this.props,\n closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n isMulti = _this$props2.isMulti;\n\n _this.onInputChange('', {\n action: 'set-value'\n });\n\n if (closeMenuOnSelect) {\n _this.setState({\n inputIsHiddenAfterUpdate: !isMulti\n });\n\n _this.onMenuClose();\n } // when the select value should change, we should reset focusedValue\n\n\n _this.setState({\n clearFocusValueOnUpdate: true\n });\n\n _this.onChange(newValue, {\n action: action,\n option: option\n });\n };\n\n _this.selectOption = function (newValue) {\n var _this$props3 = _this.props,\n blurInputOnSelect = _this$props3.blurInputOnSelect,\n isMulti = _this$props3.isMulti;\n var selectValue = _this.state.selectValue;\n\n if (isMulti) {\n if (_this.isOptionSelected(newValue, selectValue)) {\n var candidate = _this.getOptionValue(newValue);\n\n _this.setValue(selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n }), 'deselect-option', newValue);\n\n _this.announceAriaLiveSelection({\n event: 'deselect-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n if (!_this.isOptionDisabled(newValue, selectValue)) {\n _this.setValue([].concat(_toConsumableArray(selectValue), [newValue]), 'select-option', newValue);\n\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n // announce that option is disabled\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue),\n isDisabled: true\n }\n });\n }\n }\n } else {\n if (!_this.isOptionDisabled(newValue, selectValue)) {\n _this.setValue(newValue, 'select-option');\n\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n // announce that option is disabled\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue),\n isDisabled: true\n }\n });\n }\n }\n\n if (blurInputOnSelect) {\n _this.blurInput();\n }\n };\n\n _this.removeValue = function (removedValue) {\n var isMulti = _this.props.isMulti;\n var selectValue = _this.state.selectValue;\n\n var candidate = _this.getOptionValue(removedValue);\n\n var newValueArray = selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n });\n var newValue = isMulti ? newValueArray : newValueArray.length > 0 ? newValueArray[0] : null;\n\n _this.onChange(newValue, {\n action: 'remove-value',\n removedValue: removedValue\n });\n\n _this.announceAriaLiveSelection({\n event: 'remove-value',\n context: {\n value: removedValue ? _this.getOptionLabel(removedValue) : ''\n }\n });\n\n _this.focusInput();\n };\n\n _this.clearValue = function () {\n var selectValue = _this.state.selectValue;\n\n _this.onChange(_this.props.isMulti ? [] : null, {\n action: 'clear',\n removedValues: selectValue\n });\n };\n\n _this.popValue = function () {\n var isMulti = _this.props.isMulti;\n var selectValue = _this.state.selectValue;\n var lastSelectedValue = selectValue[selectValue.length - 1];\n var newValueArray = selectValue.slice(0, selectValue.length - 1);\n var newValue = isMulti ? newValueArray : newValueArray.length > 0 ? newValueArray[0] : null;\n\n _this.announceAriaLiveSelection({\n event: 'pop-value',\n context: {\n value: lastSelectedValue ? _this.getOptionLabel(lastSelectedValue) : ''\n }\n });\n\n _this.onChange(newValue, {\n action: 'pop-value',\n removedValue: lastSelectedValue\n });\n };\n\n _this.getValue = function () {\n return _this.state.selectValue;\n };\n\n _this.cx = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return classNames.apply(void 0, [_this.props.classNamePrefix].concat(args));\n };\n\n _this.getOptionLabel = function (data) {\n return getOptionLabel$1(_this.props, data);\n };\n\n _this.getOptionValue = function (data) {\n return getOptionValue$1(_this.props, data);\n };\n\n _this.getStyles = function (key, props) {\n var base = defaultStyles[key](props);\n base.boxSizing = 'border-box';\n var custom = _this.props.styles[key];\n return custom ? custom(base, props) : base;\n };\n\n _this.getElementId = function (element) {\n return \"\".concat(_this.instancePrefix, \"-\").concat(element);\n };\n\n _this.getComponents = function () {\n return defaultComponents(_this.props);\n };\n\n _this.buildCategorizedOptions = function () {\n return buildCategorizedOptions(_this.props, _this.state.selectValue);\n };\n\n _this.getCategorizedOptions = function () {\n return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : [];\n };\n\n _this.buildFocusableOptions = function () {\n return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions());\n };\n\n _this.getFocusableOptions = function () {\n return _this.props.menuIsOpen ? _this.buildFocusableOptions() : [];\n };\n\n _this.announceAriaLiveSelection = function (_ref2) {\n var event = _ref2.event,\n context = _ref2.context;\n\n _this.setState({\n ariaLiveSelection: valueEventAriaMessage(event, context)\n });\n };\n\n _this.announceAriaLiveContext = function (_ref3) {\n var event = _ref3.event,\n context = _ref3.context;\n\n _this.setState({\n ariaLiveContext: instructionsAriaMessage(event, _objectSpread2(_objectSpread2({}, context), {}, {\n label: _this.props['aria-label']\n }))\n });\n };\n\n _this.onMenuMouseDown = function (event) {\n if (event.button !== 0) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n _this.focusInput();\n };\n\n _this.onMenuMouseMove = function (event) {\n _this.blockOptionHover = false;\n };\n\n _this.onControlMouseDown = function (event) {\n var openMenuOnClick = _this.props.openMenuOnClick;\n\n if (!_this.state.isFocused) {\n if (openMenuOnClick) {\n _this.openAfterFocus = true;\n }\n\n _this.focusInput();\n } else if (!_this.props.menuIsOpen) {\n if (openMenuOnClick) {\n _this.openMenu('first');\n }\n } else {\n if ( // $FlowFixMe\n event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n _this.onMenuClose();\n }\n }\n\n if ( // $FlowFixMe\n event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n event.preventDefault();\n }\n };\n\n _this.onDropdownIndicatorMouseDown = function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n if (_this.props.isDisabled) return;\n var _this$props4 = _this.props,\n isMulti = _this$props4.isMulti,\n menuIsOpen = _this$props4.menuIsOpen;\n\n _this.focusInput();\n\n if (menuIsOpen) {\n _this.setState({\n inputIsHiddenAfterUpdate: !isMulti\n });\n\n _this.onMenuClose();\n } else {\n _this.openMenu('first');\n }\n\n event.preventDefault();\n event.stopPropagation();\n };\n\n _this.onClearIndicatorMouseDown = function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n _this.clearValue();\n\n event.stopPropagation();\n _this.openAfterFocus = false;\n\n if (event.type === 'touchend') {\n _this.focusInput();\n } else {\n setTimeout(function () {\n return _this.focusInput();\n });\n }\n };\n\n _this.onScroll = function (event) {\n if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n _this.props.onMenuClose();\n }\n } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n if (_this.props.closeMenuOnScroll(event)) {\n _this.props.onMenuClose();\n }\n }\n };\n\n _this.onCompositionStart = function () {\n _this.isComposing = true;\n };\n\n _this.onCompositionEnd = function () {\n _this.isComposing = false;\n };\n\n _this.onTouchStart = function (_ref4) {\n var touches = _ref4.touches;\n var touch = touches && touches.item(0);\n\n if (!touch) {\n return;\n }\n\n _this.initialTouchX = touch.clientX;\n _this.initialTouchY = touch.clientY;\n _this.userIsDragging = false;\n };\n\n _this.onTouchMove = function (_ref5) {\n var touches = _ref5.touches;\n var touch = touches && touches.item(0);\n\n if (!touch) {\n return;\n }\n\n var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n var moveThreshold = 5;\n _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n };\n\n _this.onTouchEnd = function (event) {\n if (_this.userIsDragging) return; // close the menu if the user taps outside\n // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n // on events on child elements, not the document (which we've attached this handler to).\n\n if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n _this.blurInput();\n } // reset move vars\n\n\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n };\n\n _this.onControlTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n _this.onControlMouseDown(event);\n };\n\n _this.onClearIndicatorTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n _this.onClearIndicatorMouseDown(event);\n };\n\n _this.onDropdownIndicatorTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n _this.onDropdownIndicatorMouseDown(event);\n };\n\n _this.handleInputChange = function (event) {\n var inputValue = event.currentTarget.value;\n\n _this.setState({\n inputIsHiddenAfterUpdate: false\n });\n\n _this.onInputChange(inputValue, {\n action: 'input-change'\n });\n\n if (!_this.props.menuIsOpen) {\n _this.onMenuOpen();\n }\n };\n\n _this.onInputFocus = function (event) {\n var _this$props5 = _this.props,\n isSearchable = _this$props5.isSearchable,\n isMulti = _this$props5.isMulti;\n\n if (_this.props.onFocus) {\n _this.props.onFocus(event);\n }\n\n _this.setState({\n inputIsHiddenAfterUpdate: false\n });\n\n _this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n\n _this.setState({\n isFocused: true\n });\n\n if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n _this.openMenu('first');\n }\n\n _this.openAfterFocus = false;\n };\n\n _this.onInputBlur = function (event) {\n if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n _this.inputRef.focus();\n\n return;\n }\n\n if (_this.props.onBlur) {\n _this.props.onBlur(event);\n }\n\n _this.onInputChange('', {\n action: 'input-blur'\n });\n\n _this.onMenuClose();\n\n _this.setState({\n focusedValue: null,\n isFocused: false\n });\n };\n\n _this.onOptionHover = function (focusedOption) {\n if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n return;\n }\n\n _this.setState({\n focusedOption: focusedOption\n });\n };\n\n _this.shouldHideSelectedOptions = function () {\n return shouldHideSelectedOptions(_this.props);\n };\n\n _this.onKeyDown = function (event) {\n var _this$props6 = _this.props,\n isMulti = _this$props6.isMulti,\n backspaceRemovesValue = _this$props6.backspaceRemovesValue,\n escapeClearsValue = _this$props6.escapeClearsValue,\n inputValue = _this$props6.inputValue,\n isClearable = _this$props6.isClearable,\n isDisabled = _this$props6.isDisabled,\n menuIsOpen = _this$props6.menuIsOpen,\n onKeyDown = _this$props6.onKeyDown,\n tabSelectsValue = _this$props6.tabSelectsValue,\n openMenuOnFocus = _this$props6.openMenuOnFocus;\n var _this$state = _this.state,\n focusedOption = _this$state.focusedOption,\n focusedValue = _this$state.focusedValue,\n selectValue = _this$state.selectValue;\n if (isDisabled) return;\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n\n if (event.defaultPrevented) {\n return;\n }\n } // Block option hover events when the user has just pressed a key\n\n\n _this.blockOptionHover = true;\n\n switch (event.key) {\n case 'ArrowLeft':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('previous');\n\n break;\n\n case 'ArrowRight':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('next');\n\n break;\n\n case 'Delete':\n case 'Backspace':\n if (inputValue) return;\n\n if (focusedValue) {\n _this.removeValue(focusedValue);\n } else {\n if (!backspaceRemovesValue) return;\n\n if (isMulti) {\n _this.popValue();\n } else if (isClearable) {\n _this.clearValue();\n }\n }\n\n break;\n\n case 'Tab':\n if (_this.isComposing) return;\n\n if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // don't capture the event if the menu opens on focus and the focused\n // option is already selected; it breaks the flow of navigation\n openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n return;\n }\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'Enter':\n if (event.keyCode === 229) {\n // ignore the keydown event from an Input Method Editor(IME)\n // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n break;\n }\n\n if (menuIsOpen) {\n if (!focusedOption) return;\n if (_this.isComposing) return;\n\n _this.selectOption(focusedOption);\n\n break;\n }\n\n return;\n\n case 'Escape':\n if (menuIsOpen) {\n _this.setState({\n inputIsHiddenAfterUpdate: false\n });\n\n _this.onInputChange('', {\n action: 'menu-close'\n });\n\n _this.onMenuClose();\n } else if (isClearable && escapeClearsValue) {\n _this.clearValue();\n }\n\n break;\n\n case ' ':\n // space\n if (inputValue) {\n return;\n }\n\n if (!menuIsOpen) {\n _this.openMenu('first');\n\n break;\n }\n\n if (!focusedOption) return;\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'ArrowUp':\n if (menuIsOpen) {\n _this.focusOption('up');\n } else {\n _this.openMenu('last');\n }\n\n break;\n\n case 'ArrowDown':\n if (menuIsOpen) {\n _this.focusOption('down');\n } else {\n _this.openMenu('first');\n }\n\n break;\n\n case 'PageUp':\n if (!menuIsOpen) return;\n\n _this.focusOption('pageup');\n\n break;\n\n case 'PageDown':\n if (!menuIsOpen) return;\n\n _this.focusOption('pagedown');\n\n break;\n\n case 'Home':\n if (!menuIsOpen) return;\n\n _this.focusOption('first');\n\n break;\n\n case 'End':\n if (!menuIsOpen) return;\n\n _this.focusOption('last');\n\n break;\n\n default:\n return;\n }\n\n event.preventDefault();\n };\n\n _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n _this.state.selectValue = cleanValue(_props.value);\n return _this;\n }\n\n _createClass(Select, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startListeningComposition();\n this.startListeningToTouch();\n\n if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n // Listen to all scroll events, and filter them out inside of 'onScroll'\n document.addEventListener('scroll', this.onScroll, true);\n }\n\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props7 = this.props,\n isDisabled = _this$props7.isDisabled,\n menuIsOpen = _this$props7.menuIsOpen;\n var isFocused = this.state.isFocused;\n\n if ( // ensure focus is restored correctly when the control becomes enabled\n isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n this.focusInput();\n }\n\n if (isFocused && isDisabled && !prevProps.isDisabled) {\n // ensure select state gets blurred in case Select is programatically disabled while focused\n this.setState({\n isFocused: false\n }, this.onMenuClose);\n } // scroll the focused option into view if necessary\n\n\n if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n scrollIntoView(this.menuListRef, this.focusedOptionRef);\n this.scrollToFocusedOptionOnUpdate = false;\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopListeningComposition();\n this.stopListeningToTouch();\n document.removeEventListener('scroll', this.onScroll, true);\n } // ==============================\n // Consumer Handlers\n // ==============================\n\n }, {\n key: \"onMenuOpen\",\n value: function onMenuOpen() {\n this.props.onMenuOpen();\n }\n }, {\n key: \"onMenuClose\",\n value: function onMenuClose() {\n var _this$props8 = this.props,\n isSearchable = _this$props8.isSearchable,\n isMulti = _this$props8.isMulti;\n this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n this.onInputChange('', {\n action: 'menu-close'\n });\n this.props.onMenuClose();\n }\n }, {\n key: \"onInputChange\",\n value: function onInputChange(newValue, actionMeta) {\n this.props.onInputChange(newValue, actionMeta);\n } // ==============================\n // Methods\n // ==============================\n\n }, {\n key: \"focusInput\",\n value: function focusInput() {\n if (!this.inputRef) return;\n this.inputRef.focus();\n }\n }, {\n key: \"blurInput\",\n value: function blurInput() {\n if (!this.inputRef) return;\n this.inputRef.blur();\n } // aliased for consumers\n\n }, {\n key: \"openMenu\",\n value: function openMenu(focusOption) {\n var _this2 = this;\n\n var _this$state2 = this.state,\n selectValue = _this$state2.selectValue,\n isFocused = _this$state2.isFocused;\n var focusableOptions = this.buildFocusableOptions();\n var _this$props9 = this.props,\n isMulti = _this$props9.isMulti,\n tabSelectsValue = _this$props9.tabSelectsValue;\n var openAtIndex = focusOption === 'first' ? 0 : focusableOptions.length - 1;\n\n if (!isMulti) {\n var selectedIndex = focusableOptions.indexOf(selectValue[0]);\n\n if (selectedIndex > -1) {\n openAtIndex = selectedIndex;\n }\n } // only scroll if the menu isn't already open\n\n\n this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n this.setState({\n inputIsHiddenAfterUpdate: false,\n focusedValue: null,\n focusedOption: focusableOptions[openAtIndex]\n }, function () {\n _this2.onMenuOpen();\n\n _this2.announceAriaLiveContext({\n event: 'menu',\n context: {\n tabSelectsValue: tabSelectsValue\n }\n });\n });\n }\n }, {\n key: \"focusValue\",\n value: function focusValue(direction) {\n var _this$props10 = this.props,\n isMulti = _this$props10.isMulti,\n isSearchable = _this$props10.isSearchable;\n var _this$state3 = this.state,\n selectValue = _this$state3.selectValue,\n focusedValue = _this$state3.focusedValue; // Only multiselects support value focusing\n\n if (!isMulti) return;\n this.setState({\n focusedOption: null\n });\n var focusedIndex = selectValue.indexOf(focusedValue);\n\n if (!focusedValue) {\n focusedIndex = -1;\n this.announceAriaLiveContext({\n event: 'value'\n });\n }\n\n var lastIndex = selectValue.length - 1;\n var nextFocus = -1;\n if (!selectValue.length) return;\n\n switch (direction) {\n case 'previous':\n if (focusedIndex === 0) {\n // don't cycle from the start to the end\n nextFocus = 0;\n } else if (focusedIndex === -1) {\n // if nothing is focused, focus the last value first\n nextFocus = lastIndex;\n } else {\n nextFocus = focusedIndex - 1;\n }\n\n break;\n\n case 'next':\n if (focusedIndex > -1 && focusedIndex < lastIndex) {\n nextFocus = focusedIndex + 1;\n }\n\n break;\n }\n\n if (nextFocus === -1) {\n this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n }\n\n this.setState({\n inputIsHidden: nextFocus !== -1,\n focusedValue: selectValue[nextFocus]\n });\n }\n }, {\n key: \"focusOption\",\n value: function focusOption() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n var _this$props11 = this.props,\n pageSize = _this$props11.pageSize,\n tabSelectsValue = _this$props11.tabSelectsValue;\n var _this$state4 = this.state,\n focusedOption = _this$state4.focusedOption,\n selectValue = _this$state4.selectValue;\n var options = this.getFocusableOptions();\n if (!options.length) return;\n var nextFocus = 0; // handles 'first'\n\n var focusedIndex = options.indexOf(focusedOption);\n\n if (!focusedOption) {\n focusedIndex = -1;\n this.announceAriaLiveContext({\n event: 'menu',\n context: {\n tabSelectsValue: tabSelectsValue\n }\n });\n }\n\n if (direction === 'up') {\n nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n } else if (direction === 'down') {\n nextFocus = (focusedIndex + 1) % options.length;\n } else if (direction === 'pageup') {\n nextFocus = focusedIndex - pageSize;\n if (nextFocus < 0) nextFocus = 0;\n } else if (direction === 'pagedown') {\n nextFocus = focusedIndex + pageSize;\n if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n } else if (direction === 'last') {\n nextFocus = options.length - 1;\n }\n\n this.scrollToFocusedOptionOnUpdate = true;\n this.setState({\n focusedOption: options[nextFocus],\n focusedValue: null\n });\n this.announceAriaLiveContext({\n event: 'menu',\n context: {\n isDisabled: this.isOptionDisabled(options[nextFocus], selectValue),\n tabSelectsValue: tabSelectsValue\n }\n });\n }\n }, {\n key: \"getTheme\",\n value: // ==============================\n // Getters\n // ==============================\n function getTheme() {\n // Use the default theme if there are no customizations.\n if (!this.props.theme) {\n return defaultTheme;\n } // If the theme prop is a function, assume the function\n // knows how to merge the passed-in default theme with\n // its own modifications.\n\n\n if (typeof this.props.theme === 'function') {\n return this.props.theme(defaultTheme);\n } // Otherwise, if a plain theme object was passed in,\n // overlay it with the default theme.\n\n\n return _objectSpread2(_objectSpread2({}, defaultTheme), this.props.theme);\n }\n }, {\n key: \"getCommonProps\",\n value: function getCommonProps() {\n var clearValue = this.clearValue,\n cx = this.cx,\n getStyles = this.getStyles,\n getValue = this.getValue,\n setValue = this.setValue,\n selectOption = this.selectOption,\n props = this.props;\n var isMulti = props.isMulti,\n isRtl = props.isRtl,\n options = props.options;\n var hasValue = this.hasValue();\n return {\n cx: cx,\n clearValue: clearValue,\n getStyles: getStyles,\n getValue: getValue,\n hasValue: hasValue,\n isMulti: isMulti,\n isRtl: isRtl,\n options: options,\n selectOption: selectOption,\n setValue: setValue,\n selectProps: props,\n theme: this.getTheme()\n };\n }\n }, {\n key: \"hasValue\",\n value: function hasValue() {\n var selectValue = this.state.selectValue;\n return selectValue.length > 0;\n }\n }, {\n key: \"hasOptions\",\n value: function hasOptions() {\n return !!this.getFocusableOptions().length;\n }\n }, {\n key: \"countOptions\",\n value: function countOptions() {\n return this.getFocusableOptions().length;\n }\n }, {\n key: \"isClearable\",\n value: function isClearable() {\n var _this$props12 = this.props,\n isClearable = _this$props12.isClearable,\n isMulti = _this$props12.isMulti; // single select, by default, IS NOT clearable\n // multi select, by default, IS clearable\n\n if (isClearable === undefined) return isMulti;\n return isClearable;\n }\n }, {\n key: \"isOptionDisabled\",\n value: function isOptionDisabled(option, selectValue) {\n return _isOptionDisabled(this.props, option, selectValue);\n }\n }, {\n key: \"isOptionSelected\",\n value: function isOptionSelected(option, selectValue) {\n return _isOptionSelected(this.props, option, selectValue);\n }\n }, {\n key: \"filterOption\",\n value: function filterOption(option, inputValue) {\n return _filterOption(this.props, option, inputValue);\n }\n }, {\n key: \"formatOptionLabel\",\n value: function formatOptionLabel(data, context) {\n if (typeof this.props.formatOptionLabel === 'function') {\n var inputValue = this.props.inputValue;\n var selectValue = this.state.selectValue;\n return this.props.formatOptionLabel(data, {\n context: context,\n inputValue: inputValue,\n selectValue: selectValue\n });\n } else {\n return this.getOptionLabel(data);\n }\n }\n }, {\n key: \"formatGroupLabel\",\n value: function formatGroupLabel(data) {\n return this.props.formatGroupLabel(data);\n } // ==============================\n // Mouse Handlers\n // ==============================\n\n }, {\n key: \"startListeningComposition\",\n value: // ==============================\n // Composition Handlers\n // ==============================\n function startListeningComposition() {\n if (document && document.addEventListener) {\n document.addEventListener('compositionstart', this.onCompositionStart, false);\n document.addEventListener('compositionend', this.onCompositionEnd, false);\n }\n }\n }, {\n key: \"stopListeningComposition\",\n value: function stopListeningComposition() {\n if (document && document.removeEventListener) {\n document.removeEventListener('compositionstart', this.onCompositionStart);\n document.removeEventListener('compositionend', this.onCompositionEnd);\n }\n }\n }, {\n key: \"startListeningToTouch\",\n value: // ==============================\n // Touch Handlers\n // ==============================\n function startListeningToTouch() {\n if (document && document.addEventListener) {\n document.addEventListener('touchstart', this.onTouchStart, false);\n document.addEventListener('touchmove', this.onTouchMove, false);\n document.addEventListener('touchend', this.onTouchEnd, false);\n }\n }\n }, {\n key: \"stopListeningToTouch\",\n value: function stopListeningToTouch() {\n if (document && document.removeEventListener) {\n document.removeEventListener('touchstart', this.onTouchStart);\n document.removeEventListener('touchmove', this.onTouchMove);\n document.removeEventListener('touchend', this.onTouchEnd);\n }\n }\n }, {\n key: \"constructAriaLiveMessage\",\n value: // ==============================\n // Renderers\n // ==============================\n function constructAriaLiveMessage() {\n var _this$state5 = this.state,\n ariaLiveContext = _this$state5.ariaLiveContext,\n selectValue = _this$state5.selectValue,\n focusedValue = _this$state5.focusedValue,\n focusedOption = _this$state5.focusedOption;\n var _this$props13 = this.props,\n options = _this$props13.options,\n menuIsOpen = _this$props13.menuIsOpen,\n inputValue = _this$props13.inputValue,\n screenReaderStatus = _this$props13.screenReaderStatus; // An aria live message representing the currently focused value in the select.\n\n var focusedValueMsg = focusedValue ? valueFocusAriaMessage({\n focusedValue: focusedValue,\n getOptionLabel: this.getOptionLabel,\n selectValue: selectValue\n }) : ''; // An aria live message representing the currently focused option in the select.\n\n var focusedOptionMsg = focusedOption && menuIsOpen ? optionFocusAriaMessage({\n focusedOption: focusedOption,\n getOptionLabel: this.getOptionLabel,\n options: options\n }) : ''; // An aria live message representing the set of focusable results and current searchterm/inputvalue.\n\n var resultsMsg = resultsAriaMessage({\n inputValue: inputValue,\n screenReaderMessage: screenReaderStatus({\n count: this.countOptions()\n })\n });\n return \"\".concat(focusedValueMsg, \" \").concat(focusedOptionMsg, \" \").concat(resultsMsg, \" \").concat(ariaLiveContext);\n }\n }, {\n key: \"renderInput\",\n value: function renderInput() {\n var _this$props14 = this.props,\n isDisabled = _this$props14.isDisabled,\n isSearchable = _this$props14.isSearchable,\n inputId = _this$props14.inputId,\n inputValue = _this$props14.inputValue,\n tabIndex = _this$props14.tabIndex,\n form = _this$props14.form;\n\n var _this$getComponents = this.getComponents(),\n Input = _this$getComponents.Input;\n\n var inputIsHidden = this.state.inputIsHidden;\n var id = inputId || this.getElementId('input'); // aria attributes makes the JSX \"noisy\", separated for clarity\n\n var ariaAttributes = {\n 'aria-autocomplete': 'list',\n 'aria-label': this.props['aria-label'],\n 'aria-labelledby': this.props['aria-labelledby']\n };\n\n if (!isSearchable) {\n // use a dummy input to maintain focus/blur functionality\n return /*#__PURE__*/React.createElement(DummyInput, _extends({\n id: id,\n innerRef: this.getInputRef,\n onBlur: this.onInputBlur,\n onChange: noop,\n onFocus: this.onInputFocus,\n readOnly: true,\n disabled: isDisabled,\n tabIndex: tabIndex,\n form: form,\n value: \"\"\n }, ariaAttributes));\n }\n\n var _this$commonProps = this.commonProps,\n cx = _this$commonProps.cx,\n theme = _this$commonProps.theme,\n selectProps = _this$commonProps.selectProps;\n return /*#__PURE__*/React.createElement(Input, _extends({\n autoCapitalize: \"none\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n cx: cx,\n getStyles: this.getStyles,\n id: id,\n innerRef: this.getInputRef,\n isDisabled: isDisabled,\n isHidden: inputIsHidden,\n onBlur: this.onInputBlur,\n onChange: this.handleInputChange,\n onFocus: this.onInputFocus,\n selectProps: selectProps,\n spellCheck: \"false\",\n tabIndex: tabIndex,\n form: form,\n theme: theme,\n type: \"text\",\n value: inputValue\n }, ariaAttributes));\n }\n }, {\n key: \"renderPlaceholderOrValue\",\n value: function renderPlaceholderOrValue() {\n var _this3 = this;\n\n var _this$getComponents2 = this.getComponents(),\n MultiValue = _this$getComponents2.MultiValue,\n MultiValueContainer = _this$getComponents2.MultiValueContainer,\n MultiValueLabel = _this$getComponents2.MultiValueLabel,\n MultiValueRemove = _this$getComponents2.MultiValueRemove,\n SingleValue = _this$getComponents2.SingleValue,\n Placeholder = _this$getComponents2.Placeholder;\n\n var commonProps = this.commonProps;\n var _this$props15 = this.props,\n controlShouldRenderValue = _this$props15.controlShouldRenderValue,\n isDisabled = _this$props15.isDisabled,\n isMulti = _this$props15.isMulti,\n inputValue = _this$props15.inputValue,\n placeholder = _this$props15.placeholder;\n var _this$state6 = this.state,\n selectValue = _this$state6.selectValue,\n focusedValue = _this$state6.focusedValue,\n isFocused = _this$state6.isFocused;\n\n if (!this.hasValue() || !controlShouldRenderValue) {\n return inputValue ? null : /*#__PURE__*/React.createElement(Placeholder, _extends({}, commonProps, {\n key: \"placeholder\",\n isDisabled: isDisabled,\n isFocused: isFocused\n }), placeholder);\n }\n\n if (isMulti) {\n var selectValues = selectValue.map(function (opt, index) {\n var isOptionFocused = opt === focusedValue;\n return /*#__PURE__*/React.createElement(MultiValue, _extends({}, commonProps, {\n components: {\n Container: MultiValueContainer,\n Label: MultiValueLabel,\n Remove: MultiValueRemove\n },\n isFocused: isOptionFocused,\n isDisabled: isDisabled,\n key: \"\".concat(_this3.getOptionValue(opt)).concat(index),\n index: index,\n removeProps: {\n onClick: function onClick() {\n return _this3.removeValue(opt);\n },\n onTouchEnd: function onTouchEnd() {\n return _this3.removeValue(opt);\n },\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n data: opt\n }), _this3.formatOptionLabel(opt, 'value'));\n });\n return selectValues;\n }\n\n if (inputValue) {\n return null;\n }\n\n var singleValue = selectValue[0];\n return /*#__PURE__*/React.createElement(SingleValue, _extends({}, commonProps, {\n data: singleValue,\n isDisabled: isDisabled\n }), this.formatOptionLabel(singleValue, 'value'));\n }\n }, {\n key: \"renderClearIndicator\",\n value: function renderClearIndicator() {\n var _this$getComponents3 = this.getComponents(),\n ClearIndicator = _this$getComponents3.ClearIndicator;\n\n var commonProps = this.commonProps;\n var _this$props16 = this.props,\n isDisabled = _this$props16.isDisabled,\n isLoading = _this$props16.isLoading;\n var isFocused = this.state.isFocused;\n\n if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n return null;\n }\n\n var innerProps = {\n onMouseDown: this.onClearIndicatorMouseDown,\n onTouchEnd: this.onClearIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return /*#__PURE__*/React.createElement(ClearIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderLoadingIndicator\",\n value: function renderLoadingIndicator() {\n var _this$getComponents4 = this.getComponents(),\n LoadingIndicator = _this$getComponents4.LoadingIndicator;\n\n var commonProps = this.commonProps;\n var _this$props17 = this.props,\n isDisabled = _this$props17.isDisabled,\n isLoading = _this$props17.isLoading;\n var isFocused = this.state.isFocused;\n if (!LoadingIndicator || !isLoading) return null;\n var innerProps = {\n 'aria-hidden': 'true'\n };\n return /*#__PURE__*/React.createElement(LoadingIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderIndicatorSeparator\",\n value: function renderIndicatorSeparator() {\n var _this$getComponents5 = this.getComponents(),\n DropdownIndicator = _this$getComponents5.DropdownIndicator,\n IndicatorSeparator = _this$getComponents5.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n\n if (!DropdownIndicator || !IndicatorSeparator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n return /*#__PURE__*/React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderDropdownIndicator\",\n value: function renderDropdownIndicator() {\n var _this$getComponents6 = this.getComponents(),\n DropdownIndicator = _this$getComponents6.DropdownIndicator;\n\n if (!DropdownIndicator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n var innerProps = {\n onMouseDown: this.onDropdownIndicatorMouseDown,\n onTouchEnd: this.onDropdownIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return /*#__PURE__*/React.createElement(DropdownIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderMenu\",\n value: function renderMenu() {\n var _this4 = this;\n\n var _this$getComponents7 = this.getComponents(),\n Group = _this$getComponents7.Group,\n GroupHeading = _this$getComponents7.GroupHeading,\n Menu = _this$getComponents7.Menu,\n MenuList = _this$getComponents7.MenuList,\n MenuPortal = _this$getComponents7.MenuPortal,\n LoadingMessage = _this$getComponents7.LoadingMessage,\n NoOptionsMessage = _this$getComponents7.NoOptionsMessage,\n Option = _this$getComponents7.Option;\n\n var commonProps = this.commonProps;\n var focusedOption = this.state.focusedOption;\n var _this$props18 = this.props,\n captureMenuScroll = _this$props18.captureMenuScroll,\n inputValue = _this$props18.inputValue,\n isLoading = _this$props18.isLoading,\n loadingMessage = _this$props18.loadingMessage,\n minMenuHeight = _this$props18.minMenuHeight,\n maxMenuHeight = _this$props18.maxMenuHeight,\n menuIsOpen = _this$props18.menuIsOpen,\n menuPlacement = _this$props18.menuPlacement,\n menuPosition = _this$props18.menuPosition,\n menuPortalTarget = _this$props18.menuPortalTarget,\n menuShouldBlockScroll = _this$props18.menuShouldBlockScroll,\n menuShouldScrollIntoView = _this$props18.menuShouldScrollIntoView,\n noOptionsMessage = _this$props18.noOptionsMessage,\n onMenuScrollToTop = _this$props18.onMenuScrollToTop,\n onMenuScrollToBottom = _this$props18.onMenuScrollToBottom;\n if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\n var render = function render(props, id) {\n var type = props.type,\n data = props.data,\n isDisabled = props.isDisabled,\n isSelected = props.isSelected,\n label = props.label,\n value = props.value;\n var isFocused = focusedOption === data;\n var onHover = isDisabled ? undefined : function () {\n return _this4.onOptionHover(data);\n };\n var onSelect = isDisabled ? undefined : function () {\n return _this4.selectOption(data);\n };\n var optionId = \"\".concat(_this4.getElementId('option'), \"-\").concat(id);\n var innerProps = {\n id: optionId,\n onClick: onSelect,\n onMouseMove: onHover,\n onMouseOver: onHover,\n tabIndex: -1\n };\n return /*#__PURE__*/React.createElement(Option, _extends({}, commonProps, {\n innerProps: innerProps,\n data: data,\n isDisabled: isDisabled,\n isSelected: isSelected,\n key: optionId,\n label: label,\n type: type,\n value: value,\n isFocused: isFocused,\n innerRef: isFocused ? _this4.getFocusedOptionRef : undefined\n }), _this4.formatOptionLabel(props.data, 'menu'));\n };\n\n var menuUI;\n\n if (this.hasOptions()) {\n menuUI = this.getCategorizedOptions().map(function (item) {\n if (item.type === 'group') {\n var data = item.data,\n options = item.options,\n groupIndex = item.index;\n var groupId = \"\".concat(_this4.getElementId('group'), \"-\").concat(groupIndex);\n var headingId = \"\".concat(groupId, \"-heading\");\n return /*#__PURE__*/React.createElement(Group, _extends({}, commonProps, {\n key: groupId,\n data: data,\n options: options,\n Heading: GroupHeading,\n headingProps: {\n id: headingId,\n data: item.data\n },\n label: _this4.formatGroupLabel(item.data)\n }), item.options.map(function (option) {\n return render(option, \"\".concat(groupIndex, \"-\").concat(option.index));\n }));\n } else if (item.type === 'option') {\n return render(item, \"\".concat(item.index));\n }\n });\n } else if (isLoading) {\n var message = loadingMessage({\n inputValue: inputValue\n });\n if (message === null) return null;\n menuUI = /*#__PURE__*/React.createElement(LoadingMessage, commonProps, message);\n } else {\n var _message = noOptionsMessage({\n inputValue: inputValue\n });\n\n if (_message === null) return null;\n menuUI = /*#__PURE__*/React.createElement(NoOptionsMessage, commonProps, _message);\n }\n\n var menuPlacementProps = {\n minMenuHeight: minMenuHeight,\n maxMenuHeight: maxMenuHeight,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition,\n menuShouldScrollIntoView: menuShouldScrollIntoView\n };\n var menuElement = /*#__PURE__*/React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref6) {\n var ref = _ref6.ref,\n _ref6$placerProps = _ref6.placerProps,\n placement = _ref6$placerProps.placement,\n maxHeight = _ref6$placerProps.maxHeight;\n return /*#__PURE__*/React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n innerRef: ref,\n innerProps: {\n onMouseDown: _this4.onMenuMouseDown,\n onMouseMove: _this4.onMenuMouseMove\n },\n isLoading: isLoading,\n placement: placement\n }), /*#__PURE__*/React.createElement(ScrollManager, {\n captureEnabled: captureMenuScroll,\n onTopArrive: onMenuScrollToTop,\n onBottomArrive: onMenuScrollToBottom,\n lockEnabled: menuShouldBlockScroll\n }, function (scrollTargetRef) {\n return /*#__PURE__*/React.createElement(MenuList, _extends({}, commonProps, {\n innerRef: function innerRef(instance) {\n _this4.getMenuListRef(instance);\n\n scrollTargetRef(instance);\n },\n isLoading: isLoading,\n maxHeight: maxHeight\n }), menuUI);\n }));\n }); // positioning behaviour is almost identical for portalled and fixed,\n // so we use the same component. the actual portalling logic is forked\n // within the component based on `menuPosition`\n\n return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React.createElement(MenuPortal, _extends({}, commonProps, {\n appendTo: menuPortalTarget,\n controlElement: this.controlRef,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition\n }), menuElement) : menuElement;\n }\n }, {\n key: \"renderFormField\",\n value: function renderFormField() {\n var _this5 = this;\n\n var _this$props19 = this.props,\n delimiter = _this$props19.delimiter,\n isDisabled = _this$props19.isDisabled,\n isMulti = _this$props19.isMulti,\n name = _this$props19.name;\n var selectValue = this.state.selectValue;\n if (!name || isDisabled) return;\n\n if (isMulti) {\n if (delimiter) {\n var value = selectValue.map(function (opt) {\n return _this5.getOptionValue(opt);\n }).join(delimiter);\n return /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: value\n });\n } else {\n var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n return /*#__PURE__*/React.createElement(\"input\", {\n key: \"i-\".concat(i),\n name: name,\n type: \"hidden\",\n value: _this5.getOptionValue(opt)\n });\n }) : /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\"\n });\n return /*#__PURE__*/React.createElement(\"div\", null, input);\n }\n } else {\n var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n return /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: _value\n });\n }\n }\n }, {\n key: \"renderLiveRegion\",\n value: function renderLiveRegion() {\n if (!this.state.isFocused) return null;\n return /*#__PURE__*/React.createElement(A11yText, {\n \"aria-live\": \"polite\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n id: \"aria-selection-event\"\n }, \"\\xA0\", this.state.ariaLiveSelection), /*#__PURE__*/React.createElement(\"span\", {\n id: \"aria-context\"\n }, \"\\xA0\", this.constructAriaLiveMessage()));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$getComponents8 = this.getComponents(),\n Control = _this$getComponents8.Control,\n IndicatorsContainer = _this$getComponents8.IndicatorsContainer,\n SelectContainer = _this$getComponents8.SelectContainer,\n ValueContainer = _this$getComponents8.ValueContainer;\n\n var _this$props20 = this.props,\n className = _this$props20.className,\n id = _this$props20.id,\n isDisabled = _this$props20.isDisabled,\n menuIsOpen = _this$props20.menuIsOpen;\n var isFocused = this.state.isFocused;\n var commonProps = this.commonProps = this.getCommonProps();\n return /*#__PURE__*/React.createElement(SelectContainer, _extends({}, commonProps, {\n className: className,\n innerProps: {\n id: id,\n onKeyDown: this.onKeyDown\n },\n isDisabled: isDisabled,\n isFocused: isFocused\n }), this.renderLiveRegion(), /*#__PURE__*/React.createElement(Control, _extends({}, commonProps, {\n innerRef: this.getControlRef,\n innerProps: {\n onMouseDown: this.onControlMouseDown,\n onTouchEnd: this.onControlTouchEnd\n },\n isDisabled: isDisabled,\n isFocused: isFocused,\n menuIsOpen: menuIsOpen\n }), /*#__PURE__*/React.createElement(ValueContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n var prevProps = state.prevProps,\n clearFocusValueOnUpdate = state.clearFocusValueOnUpdate,\n inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate;\n var options = props.options,\n value = props.value,\n menuIsOpen = props.menuIsOpen,\n inputValue = props.inputValue;\n var newMenuOptionsState = {};\n\n if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) {\n var selectValue = cleanValue(value);\n var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : [];\n var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null;\n var focusedOption = getNextFocusedOption(state, focusableOptions);\n newMenuOptionsState = {\n selectValue: selectValue,\n focusedOption: focusedOption,\n focusedValue: focusedValue,\n clearFocusValueOnUpdate: false\n };\n } // some updates should toggle the state of the input visibility\n\n\n var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? {\n inputIsHidden: inputIsHiddenAfterUpdate,\n inputIsHiddenAfterUpdate: undefined\n } : {};\n return _objectSpread2(_objectSpread2(_objectSpread2({}, newMenuOptionsState), newInputIsHiddenState), {}, {\n prevProps: props\n });\n }\n }]);\n\n return Select;\n}(Component);\n\nSelect.defaultProps = defaultProps;\n\nexport { Select as S, defaultProps as a, createFilter as c, defaultTheme as d, mergeStyles as m };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport { _ as _createSuper } from './index-b19cc27c.browser.esm.js';\nimport React, { Component } from 'react';\n\nvar defaultProps = {\n defaultInputValue: '',\n defaultMenuIsOpen: false,\n defaultValue: null\n};\n\nvar manageState = function manageState(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inherits(StateManager, _Component);\n\n var _super = _createSuper(StateManager);\n\n function StateManager() {\n var _this;\n\n _classCallCheck(this, StateManager);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.select = void 0;\n _this.state = {\n inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n };\n\n _this.onChange = function (value, actionMeta) {\n _this.callProp('onChange', value, actionMeta);\n\n _this.setState({\n value: value\n });\n };\n\n _this.onInputChange = function (value, actionMeta) {\n // TODO: for backwards compatibility, we allow the prop to return a new\n // value, but now inputValue is a controllable prop we probably shouldn't\n var newValue = _this.callProp('onInputChange', value, actionMeta);\n\n _this.setState({\n inputValue: newValue !== undefined ? newValue : value\n });\n };\n\n _this.onMenuOpen = function () {\n _this.callProp('onMenuOpen');\n\n _this.setState({\n menuIsOpen: true\n });\n };\n\n _this.onMenuClose = function () {\n _this.callProp('onMenuClose');\n\n _this.setState({\n menuIsOpen: false\n });\n };\n\n return _this;\n }\n\n _createClass(StateManager, [{\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"getProp\",\n value: function getProp(key) {\n return this.props[key] !== undefined ? this.props[key] : this.state[key];\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"callProp\",\n value: function callProp(name) {\n if (typeof this.props[name] === 'function') {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return (_this$props = this.props)[name].apply(_this$props, args);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props;\n _this$props2.defaultInputValue;\n _this$props2.defaultMenuIsOpen;\n _this$props2.defaultValue;\n var props = _objectWithoutProperties(_this$props2, [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\"]);\n\n return /*#__PURE__*/React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this2.select = _ref;\n },\n inputValue: this.getProp('inputValue'),\n menuIsOpen: this.getProp('menuIsOpen'),\n onChange: this.onChange,\n onInputChange: this.onInputChange,\n onMenuClose: this.onMenuClose,\n onMenuOpen: this.onMenuOpen,\n value: this.getProp('value')\n }));\n }\n }]);\n\n return StateManager;\n }(Component), _class.defaultProps = defaultProps, _temp;\n};\n\nexport { manageState as m };\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","var e=\"-ms-\";var r=\"-moz-\";var a=\"-webkit-\";var n=\"comm\";var c=\"rule\";var s=\"decl\";var t=\"@page\";var u=\"@media\";var i=\"@import\";var f=\"@charset\";var o=\"@viewport\";var l=\"@supports\";var v=\"@document\";var p=\"@namespace\";var h=\"@keyframes\";var b=\"@font-face\";var w=\"@counter-style\";var d=\"@font-feature-values\";var $=Math.abs;var k=String.fromCharCode;var g=Object.assign;function m(e,r){return C(e,0)^45?(((r<<2^C(e,0))<<2^C(e,1))<<2^C(e,2))<<2^C(e,3):0}function x(e){return e.trim()}function y(e,r){return(e=r.exec(e))?e[0]:e}function j(e,r,a){return e.replace(r,a)}function z(e,r){return e.indexOf(r)}function C(e,r){return e.charCodeAt(r)|0}function O(e,r,a){return e.slice(r,a)}function A(e){return e.length}function M(e){return e.length}function S(e,r){return r.push(e),e}function q(e,r){return e.map(r).join(\"\")}var B=1;var D=1;var E=0;var F=0;var G=0;var H=\"\";function I(e,r,a,n,c,s,t){return{value:e,root:r,parent:a,type:n,props:c,children:s,line:B,column:D,length:t,return:\"\"}}function J(e,r){return g(I(\"\",null,null,\"\",null,null,0),e,{length:-e.length},r)}function K(){return G}function L(){G=F>0?C(H,--F):0;if(D--,G===10)D=1,B--;return G}function N(){G=F2||T(G)>3?\"\":\" \"}function Z(e){while(N())switch(T(G)){case 0:S(ae(F-1),e);break;case 2:S(W(G),e);break;default:S(k(G),e)}return e}function _(e,r){while(--r&&N())if(G<48||G>102||G>57&&G<65||G>70&&G<97)break;return R(e,Q()+(r<6&&P()==32&&N()==32))}function ee(e){while(N())switch(G){case e:return F;case 34:case 39:if(e!==34&&e!==39)ee(G);break;case 40:if(e===41)ee(e);break;case 92:N();break}return F}function re(e,r){while(N())if(e+G===47+10)break;else if(e+G===42+42&&P()===47)break;return\"/*\"+R(r,F-1)+\"*\"+k(e===47?e:N())}function ae(e){while(!T(P()))N();return R(e,F)}function ne(e){return V(ce(\"\",null,null,null,[\"\"],e=U(e),0,[0],e))}function ce(e,r,a,n,c,s,t,u,i){var f=0;var o=0;var l=t;var v=0;var p=0;var h=0;var b=1;var w=1;var d=1;var $=0;var g=\"\";var m=c;var x=s;var y=n;var O=g;while(w)switch(h=$,$=N()){case 40:if(h!=108&&C(O,l-1)==58){if(z(O+=j(W($),\"&\",\"&\\f\"),\"&\\f\")!=-1)d=-1;break}case 34:case 39:case 91:O+=W($);break;case 9:case 10:case 13:case 32:O+=Y(h);break;case 92:O+=_(Q()-1,7);continue;case 47:switch(P()){case 42:case 47:S(te(re(N(),Q()),r,a),i);break;default:O+=\"/\"}break;case 123*b:u[f++]=A(O)*d;case 125*b:case 59:case 0:switch($){case 0:case 125:w=0;case 59+o:if(p>0&&A(O)-l)S(p>32?ue(O+\";\",n,a,l-1):ue(j(O,\" \",\"\")+\";\",n,a,l-2),i);break;case 59:O+=\";\";default:S(y=se(O,r,a,f,o,c,u,g,m=[],x=[],l),s);if($===123)if(o===0)ce(O,r,y,y,m,s,l,u,x);else switch(v===99&&C(O,3)===110?100:v){case 100:case 109:case 115:ce(e,y,y,n&&S(se(e,y,y,0,0,c,u,g,c,m=[],l),x),c,x,l,u,n?m:x);break;default:ce(O,y,y,y,[\"\"],x,0,u,x)}}f=o=p=0,b=d=1,g=O=\"\",l=t;break;case 58:l=1+A(O),p=h;default:if(b<1)if($==123)--b;else if($==125&&b++==0&&L()==125)continue;switch(O+=k($),$*b){case 38:d=o>0?1:(O+=\"\\f\",-1);break;case 44:u[f++]=(A(O)-1)*d,d=1;break;case 64:if(P()===45)O+=W(N());v=P(),o=l=A(g=O+=ae(Q())),$++;break;case 45:if(h===45&&A(O)==2)b=0}}return s}function se(e,r,a,n,s,t,u,i,f,o,l){var v=s-1;var p=s===0?t:[\"\"];var h=M(p);for(var b=0,w=0,d=0;b0?p[k]+\" \"+g:j(g,/&\\f/g,p[k])))f[d++]=m;return I(e,r,a,s===0?c:i,f,o,l)}function te(e,r,a){return I(e,r,a,n,k(K()),O(e,2,-2),0)}function ue(e,r,a,n){return I(e,r,a,s,O(e,0,n),O(e,n+1,-1),n)}function ie(n,c,s){switch(m(n,c)){case 5103:return a+\"print-\"+n+n;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return a+n+n;case 4789:return r+n+n;case 5349:case 4246:case 4810:case 6968:case 2756:return a+n+r+n+e+n+n;case 5936:switch(C(n,c+11)){case 114:return a+n+e+j(n,/[svh]\\w+-[tblr]{2}/,\"tb\")+n;case 108:return a+n+e+j(n,/[svh]\\w+-[tblr]{2}/,\"tb-rl\")+n;case 45:return a+n+e+j(n,/[svh]\\w+-[tblr]{2}/,\"lr\")+n}case 6828:case 4268:case 2903:return a+n+e+n+n;case 6165:return a+n+e+\"flex-\"+n+n;case 5187:return a+n+j(n,/(\\w+).+(:[^]+)/,a+\"box-$1$2\"+e+\"flex-$1$2\")+n;case 5443:return a+n+e+\"flex-item-\"+j(n,/flex-|-self/g,\"\")+(!y(n,/flex-|baseline/)?e+\"grid-row-\"+j(n,/flex-|-self/g,\"\"):\"\")+n;case 4675:return a+n+e+\"flex-line-pack\"+j(n,/align-content|flex-|-self/g,\"\")+n;case 5548:return a+n+e+j(n,\"shrink\",\"negative\")+n;case 5292:return a+n+e+j(n,\"basis\",\"preferred-size\")+n;case 6060:return a+\"box-\"+j(n,\"-grow\",\"\")+a+n+e+j(n,\"grow\",\"positive\")+n;case 4554:return a+j(n,/([^-])(transform)/g,\"$1\"+a+\"$2\")+n;case 6187:return j(j(j(n,/(zoom-|grab)/,a+\"$1\"),/(image-set)/,a+\"$1\"),n,\"\")+n;case 5495:case 3959:return j(n,/(image-set\\([^]*)/,a+\"$1\"+\"$`$1\");case 4968:return j(j(n,/(.+:)(flex-)?(.*)/,a+\"box-pack:$3\"+e+\"flex-pack:$3\"),/s.+-b[^;]+/,\"justify\")+a+n+n;case 4200:if(!y(n,/flex-|baseline/))return e+\"grid-column-align\"+O(n,c)+n;break;case 2592:case 3360:return e+j(n,\"template-\",\"\")+n;case 4384:case 3616:if(s&&s.some((function(e,r){return c=r,y(e.props,/grid-\\w+-end/)}))){return~z(n+(s=s[c].value),\"span\")?n:e+j(n,\"-start\",\"\")+n+e+\"grid-row-span:\"+(~z(s,\"span\")?y(s,/\\d+/):+y(s,/\\d+/)-+y(n,/\\d+/))+\";\"}return e+j(n,\"-start\",\"\")+n;case 4896:case 4128:return s&&s.some((function(e){return y(e.props,/grid-\\w+-start/)}))?n:e+j(j(n,\"-end\",\"-span\"),\"span \",\"\")+n;case 4095:case 3583:case 4068:case 2532:return j(n,/(.+)-inline(.+)/,a+\"$1$2\")+n;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(A(n)-1-c>6)switch(C(n,c+1)){case 109:if(C(n,c+4)!==45)break;case 102:return j(n,/(.+:)(.+)-([^]+)/,\"$1\"+a+\"$2-$3\"+\"$1\"+r+(C(n,c+3)==108?\"$3\":\"$2-$3\"))+n;case 115:return~z(n,\"stretch\")?ie(j(n,\"stretch\",\"fill-available\"),c,s)+n:n}break;case 5152:case 5920:return j(n,/(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/,(function(r,a,c,s,t,u,i){return e+a+\":\"+c+i+(s?e+a+\"-span:\"+(t?u:+u-+c)+i:\"\")+n}));case 4949:if(C(n,c+6)===121)return j(n,\":\",\":\"+a)+n;break;case 6444:switch(C(n,C(n,14)===45?18:11)){case 120:return j(n,/(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/,\"$1\"+a+(C(n,14)===45?\"inline-\":\"\")+\"box$3\"+\"$1\"+a+\"$2$3\"+\"$1\"+e+\"$2box$3\")+n;case 100:return j(n,\":\",\":\"+e)+n}break;case 5719:case 2647:case 2135:case 3927:case 2391:return j(n,\"scroll-\",\"scroll-snap-\")+n}return n}function fe(e,r){var a=\"\";var n=M(e);for(var c=0;c-1)if(!n.return)switch(n.type){case s:n.return=ie(n.value,n.length,u);return;case h:return fe([J(n,{value:j(n.value,\"@\",\"@\"+a)})],i);case c:if(n.length)return q(n.props,(function(c){switch(y(c,/(::plac\\w+|:read-\\w+)/)){case\":read-only\":case\":read-write\":return fe([J(n,{props:[j(c,/:(read-\\w+)/,\":\"+r+\"$1\")]})],i);case\"::placeholder\":return fe([J(n,{props:[j(c,/:(plac\\w+)/,\":\"+a+\"input-$1\")]}),J(n,{props:[j(c,/:(plac\\w+)/,\":\"+r+\"$1\")]}),J(n,{props:[j(c,/:(plac\\w+)/,e+\"input-$1\")]})],i)}return\"\"}))}}function he(e){switch(e.type){case c:e.props=e.props.map((function(r){return q(X(r),(function(r,a,n){switch(C(r,0)){case 12:return O(r,1,A(r));case 0:case 40:case 43:case 62:case 126:return r;case 58:if(n[++a]===\"global\")n[a]=\"\",n[++a]=\"\\f\"+O(n[a],a=1,-1);case 32:return a===1?\"\":r;default:switch(a){case 0:e=r;return M(n)>1?\"\":r;case a=M(n)-1:case 2:return a===2?r+e+e:r+e;default:return r}}}))}))}}export{f as CHARSET,n as COMMENT,w as COUNTER_STYLE,s as DECLARATION,v as DOCUMENT,b as FONT_FACE,d as FONT_FEATURE_VALUES,i as IMPORT,h as KEYFRAMES,u as MEDIA,r as MOZ,e as MS,p as NAMESPACE,t as PAGE,c as RULESET,l as SUPPORTS,o as VIEWPORT,a as WEBKIT,$ as abs,U as alloc,S as append,g as assign,Q as caret,K as char,G as character,H as characters,C as charat,D as column,q as combine,te as comment,re as commenter,ne as compile,J as copy,V as dealloc,ue as declaration,W as delimit,ee as delimiter,_ as escaping,k as from,m as hash,ae as identifier,z as indexof,E as length,B as line,y as match,le as middleware,he as namespace,N as next,I as node,ce as parse,P as peek,F as position,ie as prefix,pe as prefixer,L as prev,j as replace,se as ruleset,ve as rulesheet,fe as serialize,M as sizeof,R as slice,oe as stringify,A as strlen,O as substr,T as token,X as tokenize,Z as tokenizer,x as trim,Y as whitespace};\n//# sourceMappingURL=stylis.mjs.map\n","var weakMemoize = function weakMemoize(func) {\n // $FlowFixMe flow doesn't include all non-primitive types as allowed for weakmaps\n var cache = new WeakMap();\n return function (arg) {\n if (cache.has(arg)) {\n // $FlowFixMe\n return cache.get(arg);\n }\n\n var ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n};\n\nexport default weakMemoize;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = element.parent === children[0]; // in nested rules comments become children of the \"auto-inserted\" rule\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? children[0].children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if ( key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport default createCache;\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","import { S as Select } from './Select-0b2b7701.browser.esm.js';\nexport { c as createFilter, d as defaultTheme, m as mergeStyles } from './Select-0b2b7701.browser.esm.js';\nimport { m as manageState } from './stateManager-ffc9d993.browser.esm.js';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport { _ as _createSuper } from './index-b19cc27c.browser.esm.js';\nexport { c as components } from './index-b19cc27c.browser.esm.js';\nimport React, { Component } from 'react';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nimport memoizeOne from 'memoize-one';\nimport '@babel/runtime/helpers/extends';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport 'react-input-autosize';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\nimport '@babel/runtime/helpers/typeof';\n\nvar NonceProvider = /*#__PURE__*/function (_Component) {\n _inherits(NonceProvider, _Component);\n\n var _super = _createSuper(NonceProvider);\n\n function NonceProvider(props) {\n var _this;\n\n _classCallCheck(this, NonceProvider);\n\n _this = _super.call(this, props);\n\n _this.createEmotionCache = function (nonce, key) {\n return createCache({\n nonce: nonce,\n key: key\n });\n };\n\n _this.createEmotionCache = memoizeOne(_this.createEmotionCache);\n return _this;\n }\n\n _createClass(NonceProvider, [{\n key: \"render\",\n value: function render() {\n var emotionCache = this.createEmotionCache(this.props.nonce, this.props.cacheKey);\n return /*#__PURE__*/React.createElement(CacheProvider, {\n value: emotionCache\n }, this.props.children);\n }\n }]);\n\n return NonceProvider;\n}(Component);\n\nvar index = manageState(Select);\n\nexport default index;\nexport { NonceProvider };\n","// extracted by mini-css-extract-plugin\nexport default {\"errorMsg\":\"style-module_B8m4i\",\"container\":\"style-module_3EzjE\",\"error\":\"style-module_3d1Ep\",\"label\":\"style-module_1y2Rr\",\"algorithmContainer\":\"style-module_1up8_\"};","import React from 'react';\nimport UISelect, { components } from 'react-select';\n\nimport cl from 'classnames';\nimport style from './style.module.styl';\n\nconst IndicatorSeparator = () => null;\n\nconst ClearIndicator = () => null;\n\nconst DropdownIndicator = (props) => (\n\t\n\t\t\n\t\t\t\n\t\t\n\t\n);\n\nconst Option = (props) => {\n\tconst className = props.data.theme ? `select__option--${props.data.theme}` : null;\n\treturn ;\n};\n\nconst ValueContainer = ({ children, ...props }) => (\n\t{children}\n);\n\nconst SingleValue = ({ children, ...props }) => (\n\t{children}\n);\n\nconst MultiValue = ({ children, ...props }) => (\n\t{children}\n);\n\nconst SelectContainer = ({ children, ...props }) => (\n\t{children}\n);\n\nconst scroll = (state) => () => {\n\tconst preventScrollElem = document.querySelector('.js-prevent-scroll');\n\tif (preventScrollElem) {\n\t\tpreventScrollElem.style.overflow = state;\n\t}\n};\n\n\nconst Select = ({\n\tlabel,\n\toptions,\n\tclassName,\n\tonChange,\n\tvalue,\n\terror,\n\tdisabled,\n\tdefaultValue,\n\tplaceholder,\n\tmenuPlacement,\n\tmenuPosition,\n\tcustomOption,\n\tvalueContainer,\n\tsingleValue,\n\tmultiValue,\n\telem,\n\thideSelectedOptions = false,\n\talgorithmItem = false,\n\tcloseMenuOnSelect,\n\tisMulti,\n\tonMenuOpen,\n\tmenuIsOpen,\n\tselectContainer,\n\tisPortal,\n\tisSearchable = false,\n}) => (\n\t\n\t\t{label && }\n\t\t {\n\t\t\t\tif (onMenuOpen) {\n\t\t\t\t\tonMenuOpen(state);\n\t\t\t\t}\n\t\t\t\tscroll('hidden')(state);\n\t\t\t}}\n\t\t\tonMenuClose={scroll('auto')}\n\t\t\tref={elem}\n\t\t\tcloseMenuOnSelect={closeMenuOnSelect}\n\t\t\tisMulti={isMulti}\n\t\t\tmenuIsOpen={menuIsOpen}\n\t\t/>\n\t\t{error && {error}}\n\t\n);\n\nexport default Select;\n","/**\n * react-number-format - 4.4.4\n * Author : Sudhanshu Yadav\n * Copyright (c) 2016, 2021 to Sudhanshu Yadav, released under the MIT license.\n * https://github.com/s-yadav/react-number-format\n */\n\nimport React from 'react';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\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}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\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\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\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\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\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\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\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 } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: 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\nvar propTypes = createCommonjsModule(function (module) {\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{\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\n// basic noop function\nfunction noop() {}\nfunction returnTrue() {\n return true;\n}\nfunction charIsNumber(_char) {\n return !!(_char || '').match(/\\d/);\n}\nfunction isNil(val) {\n return val === null || val === undefined;\n}\nfunction escapeRegExp(str) {\n return str.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, \"\\\\$&\");\n}\nfunction getThousandsGroupRegex(thousandsGroupStyle) {\n switch (thousandsGroupStyle) {\n case 'lakh':\n return /(\\d+?)(?=(\\d\\d)+(\\d)(?!\\d))(\\.\\d+)?/g;\n\n case 'wan':\n return /(\\d)(?=(\\d{4})+(?!\\d))/g;\n\n case 'thousand':\n default:\n return /(\\d)(?=(\\d{3})+(?!\\d))/g;\n }\n}\nfunction applyThousandSeparator(str, thousandSeparator, thousandsGroupStyle) {\n var thousandsGroupRegex = getThousandsGroupRegex(thousandsGroupStyle);\n var index = str.search(/[1-9]/);\n index = index === -1 ? str.length : index;\n return str.substring(0, index) + str.substring(index, str.length).replace(thousandsGroupRegex, '$1' + thousandSeparator);\n} //spilt a float number into different parts beforeDecimal, afterDecimal, and negation\n\nfunction splitDecimal(numStr) {\n var allowNegative = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var hasNagation = numStr[0] === '-';\n var addNegation = hasNagation && allowNegative;\n numStr = numStr.replace('-', '');\n var parts = numStr.split('.');\n var beforeDecimal = parts[0];\n var afterDecimal = parts[1] || '';\n return {\n beforeDecimal: beforeDecimal,\n afterDecimal: afterDecimal,\n hasNagation: hasNagation,\n addNegation: addNegation\n };\n}\nfunction fixLeadingZero(numStr) {\n if (!numStr) return numStr;\n var isNegative = numStr[0] === '-';\n if (isNegative) numStr = numStr.substring(1, numStr.length);\n var parts = numStr.split('.');\n var beforeDecimal = parts[0].replace(/^0+/, '') || '0';\n var afterDecimal = parts[1] || '';\n return \"\".concat(isNegative ? '-' : '').concat(beforeDecimal).concat(afterDecimal ? \".\".concat(afterDecimal) : '');\n}\n/**\n * limit decimal numbers to given scale\n * Not used .fixedTo because that will break with big numbers\n */\n\nfunction limitToScale(numStr, scale, fixedDecimalScale) {\n var str = '';\n var filler = fixedDecimalScale ? '0' : '';\n\n for (var i = 0; i <= scale - 1; i++) {\n str += numStr[i] || filler;\n }\n\n return str;\n}\n/**\n * This method is required to round prop value to given scale.\n * Not used .round or .fixedTo because that will break with big numbers\n */\n\nfunction roundToPrecision(numStr, scale, fixedDecimalScale) {\n //if number is empty don't do anything return empty string\n if (['', '-'].indexOf(numStr) !== -1) return numStr;\n var shoudHaveDecimalSeparator = numStr.indexOf('.') !== -1 && scale;\n\n var _splitDecimal = splitDecimal(numStr),\n beforeDecimal = _splitDecimal.beforeDecimal,\n afterDecimal = _splitDecimal.afterDecimal,\n hasNagation = _splitDecimal.hasNagation;\n\n var roundedDecimalParts = parseFloat(\"0.\".concat(afterDecimal || '0')).toFixed(scale).split('.');\n var intPart = beforeDecimal.split('').reverse().reduce(function (roundedStr, current, idx) {\n if (roundedStr.length > idx) {\n return (Number(roundedStr[0]) + Number(current)).toString() + roundedStr.substring(1, roundedStr.length);\n }\n\n return current + roundedStr;\n }, roundedDecimalParts[0]);\n var decimalPart = limitToScale(roundedDecimalParts[1] || '', Math.min(scale, afterDecimal.length), fixedDecimalScale);\n var negation = hasNagation ? '-' : '';\n var decimalSeparator = shoudHaveDecimalSeparator ? '.' : '';\n return \"\".concat(negation).concat(intPart).concat(decimalSeparator).concat(decimalPart);\n}\nfunction omit(obj, keyMaps) {\n var filteredObj = {};\n Object.keys(obj).forEach(function (key) {\n if (!keyMaps[key]) filteredObj[key] = obj[key];\n });\n return filteredObj;\n}\n/** set the caret positon in an input field **/\n\nfunction setCaretPosition(el, caretPos) {\n el.value = el.value; // ^ this is used to not only get \"focus\", but\n // to make sure we don't have it everything -selected-\n // (it causes an issue in chrome, and having it doesn't hurt any other browser)\n\n if (el !== null) {\n if (el.createTextRange) {\n var range = el.createTextRange();\n range.move('character', caretPos);\n range.select();\n return true;\n } // (el.selectionStart === 0 added for Firefox bug)\n\n\n if (el.selectionStart || el.selectionStart === 0) {\n el.focus();\n el.setSelectionRange(caretPos, caretPos);\n return true;\n } // fail city, fortunately this never happens (as far as I've tested) :)\n\n\n el.focus();\n return false;\n }\n}\n/**\n Given previous value and newValue it returns the index\n start - end to which values have changed.\n This function makes assumption about only consecutive\n characters are changed which is correct assumption for caret input.\n*/\n\nfunction findChangedIndex(prevValue, newValue) {\n var i = 0,\n j = 0;\n var prevLength = prevValue.length;\n var newLength = newValue.length;\n\n while (prevValue[i] === newValue[i] && i < prevLength) {\n i++;\n } //check what has been changed from last\n\n\n while (prevValue[prevLength - 1 - j] === newValue[newLength - 1 - j] && newLength - j > i && prevLength - j > i) {\n j++;\n }\n\n return {\n start: i,\n end: prevLength - j\n };\n}\n/*\n Returns a number whose value is limited to the given range\n*/\n\nfunction clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\nfunction getCurrentCaretPosition(el) {\n /*Max of selectionStart and selectionEnd is taken for the patch of pixel and other mobile device caret bug*/\n return Math.max(el.selectionStart, el.selectionEnd);\n}\nfunction addInputMode(format) {\n return format || !(navigator.platform && /iPhone|iPod/.test(navigator.platform));\n}\n\nvar propTypes$1 = {\n thousandSeparator: propTypes.oneOfType([propTypes.string, propTypes.oneOf([true])]),\n decimalSeparator: propTypes.string,\n allowedDecimalSeparators: propTypes.arrayOf(propTypes.string),\n thousandsGroupStyle: propTypes.oneOf(['thousand', 'lakh', 'wan']),\n decimalScale: propTypes.number,\n fixedDecimalScale: propTypes.bool,\n displayType: propTypes.oneOf(['input', 'text']),\n prefix: propTypes.string,\n suffix: propTypes.string,\n format: propTypes.oneOfType([propTypes.string, propTypes.func]),\n removeFormatting: propTypes.func,\n mask: propTypes.oneOfType([propTypes.string, propTypes.arrayOf(propTypes.string)]),\n value: propTypes.oneOfType([propTypes.number, propTypes.string]),\n defaultValue: propTypes.oneOfType([propTypes.number, propTypes.string]),\n isNumericString: propTypes.bool,\n customInput: propTypes.elementType,\n allowNegative: propTypes.bool,\n allowEmptyFormatting: propTypes.bool,\n allowLeadingZeros: propTypes.bool,\n onValueChange: propTypes.func,\n onKeyDown: propTypes.func,\n onMouseUp: propTypes.func,\n onChange: propTypes.func,\n onFocus: propTypes.func,\n onBlur: propTypes.func,\n type: propTypes.oneOf(['text', 'tel', 'password']),\n isAllowed: propTypes.func,\n renderText: propTypes.func,\n getInputRef: propTypes.oneOfType([propTypes.func, // for legacy refs\n propTypes.shape({\n current: propTypes.any\n })])\n};\nvar defaultProps = {\n displayType: 'input',\n decimalSeparator: '.',\n thousandsGroupStyle: 'thousand',\n fixedDecimalScale: false,\n prefix: '',\n suffix: '',\n allowNegative: true,\n allowEmptyFormatting: false,\n allowLeadingZeros: false,\n isNumericString: false,\n type: 'text',\n onValueChange: noop,\n onChange: noop,\n onKeyDown: noop,\n onMouseUp: noop,\n onFocus: noop,\n onBlur: noop,\n isAllowed: returnTrue\n};\n\nvar NumberFormat =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(NumberFormat, _React$Component);\n\n function NumberFormat(props) {\n var _this;\n\n _classCallCheck(this, NumberFormat);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NumberFormat).call(this, props));\n var defaultValue = props.defaultValue; //validate props\n\n _this.validateProps();\n\n var formattedValue = _this.formatValueProp(defaultValue);\n\n _this.state = {\n value: formattedValue,\n numAsString: _this.removeFormatting(formattedValue),\n mounted: false\n };\n _this.selectionBeforeInput = {\n selectionStart: 0,\n selectionEnd: 0\n };\n _this.onChange = _this.onChange.bind(_assertThisInitialized(_this));\n _this.onKeyDown = _this.onKeyDown.bind(_assertThisInitialized(_this));\n _this.onMouseUp = _this.onMouseUp.bind(_assertThisInitialized(_this));\n _this.onFocus = _this.onFocus.bind(_assertThisInitialized(_this));\n _this.onBlur = _this.onBlur.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(NumberFormat, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // set mounted state\n // eslint-disable-next-line react/no-did-mount-set-state\n this.setState({\n mounted: true\n });\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n this.updateValueIfRequired(prevProps);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n clearTimeout(this.focusTimeout);\n }\n }, {\n key: \"updateValueIfRequired\",\n value: function updateValueIfRequired(prevProps) {\n var props = this.props,\n state = this.state,\n focusedElm = this.focusedElm;\n var stateValue = state.value,\n _state$numAsString = state.numAsString,\n lastNumStr = _state$numAsString === void 0 ? '' : _state$numAsString; // If only state changed no need to do any thing\n\n if (prevProps !== props) {\n //validate props\n this.validateProps();\n var lastValueWithNewFormat = this.formatNumString(lastNumStr);\n var formattedValue = isNil(props.value) ? lastValueWithNewFormat : this.formatValueProp();\n var numAsString = this.removeFormatting(formattedValue);\n var floatValue = parseFloat(numAsString);\n var lastFloatValue = parseFloat(lastNumStr);\n\n if ( //while typing set state only when float value changes\n (!isNaN(floatValue) || !isNaN(lastFloatValue)) && floatValue !== lastFloatValue || //can also set state when float value is same and the format props changes\n lastValueWithNewFormat !== stateValue || //set state always when not in focus and formatted value is changed\n focusedElm === null && formattedValue !== stateValue) {\n this.updateValue({\n formattedValue: formattedValue,\n numAsString: numAsString,\n input: focusedElm\n });\n }\n }\n }\n /** Misc methods **/\n\n }, {\n key: \"getFloatString\",\n value: function getFloatString() {\n var num = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var decimalScale = this.props.decimalScale;\n\n var _this$getSeparators = this.getSeparators(),\n decimalSeparator = _this$getSeparators.decimalSeparator;\n\n var numRegex = this.getNumberRegex(true); //remove negation for regex check\n\n var hasNegation = num[0] === '-';\n if (hasNegation) num = num.replace('-', ''); //if decimal scale is zero remove decimal and number after decimalSeparator\n\n if (decimalSeparator && decimalScale === 0) {\n num = num.split(decimalSeparator)[0];\n }\n\n num = (num.match(numRegex) || []).join('').replace(decimalSeparator, '.'); //remove extra decimals\n\n var firstDecimalIndex = num.indexOf('.');\n\n if (firstDecimalIndex !== -1) {\n num = \"\".concat(num.substring(0, firstDecimalIndex), \".\").concat(num.substring(firstDecimalIndex + 1, num.length).replace(new RegExp(escapeRegExp(decimalSeparator), 'g'), ''));\n } //add negation back\n\n\n if (hasNegation) num = '-' + num;\n return num;\n } //returned regex assumes decimalSeparator is as per prop\n\n }, {\n key: \"getNumberRegex\",\n value: function getNumberRegex(g, ignoreDecimalSeparator) {\n var _this$props = this.props,\n format = _this$props.format,\n decimalScale = _this$props.decimalScale;\n\n var _this$getSeparators2 = this.getSeparators(),\n decimalSeparator = _this$getSeparators2.decimalSeparator;\n\n return new RegExp('\\\\d' + (decimalSeparator && decimalScale !== 0 && !ignoreDecimalSeparator && !format ? '|' + escapeRegExp(decimalSeparator) : ''), g ? 'g' : undefined);\n }\n }, {\n key: \"getSeparators\",\n value: function getSeparators() {\n var decimalSeparator = this.props.decimalSeparator;\n var _this$props2 = this.props,\n thousandSeparator = _this$props2.thousandSeparator,\n allowedDecimalSeparators = _this$props2.allowedDecimalSeparators;\n\n if (thousandSeparator === true) {\n thousandSeparator = ',';\n }\n\n if (!allowedDecimalSeparators) {\n allowedDecimalSeparators = [decimalSeparator, '.'];\n }\n\n return {\n decimalSeparator: decimalSeparator,\n thousandSeparator: thousandSeparator,\n allowedDecimalSeparators: allowedDecimalSeparators\n };\n }\n }, {\n key: \"getMaskAtIndex\",\n value: function getMaskAtIndex(index) {\n var _this$props$mask = this.props.mask,\n mask = _this$props$mask === void 0 ? ' ' : _this$props$mask;\n\n if (typeof mask === 'string') {\n return mask;\n }\n\n return mask[index] || ' ';\n }\n }, {\n key: \"getValueObject\",\n value: function getValueObject(formattedValue, numAsString) {\n var floatValue = parseFloat(numAsString);\n return {\n formattedValue: formattedValue,\n value: numAsString,\n floatValue: isNaN(floatValue) ? undefined : floatValue\n };\n }\n }, {\n key: \"validateProps\",\n value: function validateProps() {\n var mask = this.props.mask; //validate decimalSeparator and thousandSeparator\n\n var _this$getSeparators3 = this.getSeparators(),\n decimalSeparator = _this$getSeparators3.decimalSeparator,\n thousandSeparator = _this$getSeparators3.thousandSeparator;\n\n if (decimalSeparator === thousandSeparator) {\n throw new Error(\"\\n Decimal separator can't be same as thousand separator.\\n thousandSeparator: \".concat(thousandSeparator, \" (thousandSeparator = {true} is same as thousandSeparator = \\\",\\\")\\n decimalSeparator: \").concat(decimalSeparator, \" (default value for decimalSeparator is .)\\n \"));\n } //validate mask\n\n\n if (mask) {\n var maskAsStr = mask === 'string' ? mask : mask.toString();\n\n if (maskAsStr.match(/\\d/g)) {\n throw new Error(\"\\n Mask \".concat(mask, \" should not contain numeric character;\\n \"));\n }\n }\n }\n /** Misc methods end **/\n\n /** caret specific methods **/\n\n }, {\n key: \"setPatchedCaretPosition\",\n value: function setPatchedCaretPosition(el, caretPos, currentValue) {\n /* setting caret position within timeout of 0ms is required for mobile chrome,\n otherwise browser resets the caret position after we set it\n We are also setting it without timeout so that in normal browser we don't see the flickering */\n setCaretPosition(el, caretPos);\n setTimeout(function () {\n if (el.value === currentValue) setCaretPosition(el, caretPos);\n }, 0);\n }\n /* This keeps the caret within typing area so people can't type in between prefix or suffix */\n\n }, {\n key: \"correctCaretPosition\",\n value: function correctCaretPosition(value, caretPos, direction) {\n var _this$props3 = this.props,\n prefix = _this$props3.prefix,\n suffix = _this$props3.suffix,\n format = _this$props3.format; //if value is empty return 0\n\n if (value === '') return 0; //caret position should be between 0 and value length\n\n caretPos = clamp(caretPos, 0, value.length); //in case of format as number limit between prefix and suffix\n\n if (!format) {\n var hasNegation = value[0] === '-';\n return clamp(caretPos, prefix.length + (hasNegation ? 1 : 0), value.length - suffix.length);\n } //in case if custom format method don't do anything\n\n\n if (typeof format === 'function') return caretPos;\n /* in case format is string find the closest # position from the caret position */\n //in case the caretPos have input value on it don't do anything\n\n if (format[caretPos] === '#' && charIsNumber(value[caretPos])) return caretPos; //if caretPos is just after input value don't do anything\n\n if (format[caretPos - 1] === '#' && charIsNumber(value[caretPos - 1])) return caretPos; //find the nearest caret position\n\n var firstHashPosition = format.indexOf('#');\n var lastHashPosition = format.lastIndexOf('#'); //limit the cursor between the first # position and the last # position\n\n caretPos = clamp(caretPos, firstHashPosition, lastHashPosition + 1);\n var nextPos = format.substring(caretPos, format.length).indexOf('#');\n var caretLeftBound = caretPos;\n var caretRightBound = caretPos + (nextPos === -1 ? 0 : nextPos); //get the position where the last number is present\n\n while (caretLeftBound > firstHashPosition && (format[caretLeftBound] !== '#' || !charIsNumber(value[caretLeftBound]))) {\n caretLeftBound -= 1;\n }\n\n var goToLeft = !charIsNumber(value[caretRightBound]) || direction === 'left' && caretPos !== firstHashPosition || caretPos - caretLeftBound < caretRightBound - caretPos;\n\n if (goToLeft) {\n //check if number should be taken after the bound or after it\n //if number preceding a valid number keep it after\n return charIsNumber(value[caretLeftBound]) ? caretLeftBound + 1 : caretLeftBound;\n }\n\n return caretRightBound;\n }\n }, {\n key: \"getCaretPosition\",\n value: function getCaretPosition(inputValue, formattedValue, caretPos) {\n var format = this.props.format;\n var stateValue = this.state.value;\n var numRegex = this.getNumberRegex(true);\n var inputNumber = (inputValue.match(numRegex) || []).join('');\n var formattedNumber = (formattedValue.match(numRegex) || []).join('');\n var j, i;\n j = 0;\n\n for (i = 0; i < caretPos; i++) {\n var currentInputChar = inputValue[i] || '';\n var currentFormatChar = formattedValue[j] || ''; //no need to increase new cursor position if formatted value does not have those characters\n //case inputValue = 1a23 and formattedValue = 123\n\n if (!currentInputChar.match(numRegex) && currentInputChar !== currentFormatChar) continue; //When we are striping out leading zeros maintain the new cursor position\n //Case inputValue = 00023 and formattedValue = 23;\n\n if (currentInputChar === '0' && currentFormatChar.match(numRegex) && currentFormatChar !== '0' && inputNumber.length !== formattedNumber.length) continue; //we are not using currentFormatChar because j can change here\n\n while (currentInputChar !== formattedValue[j] && j < formattedValue.length) {\n j++;\n }\n\n j++;\n }\n\n if (typeof format === 'string' && !stateValue) {\n //set it to the maximum value so it goes after the last number\n j = formattedValue.length;\n } //correct caret position if its outside of editable area\n\n\n j = this.correctCaretPosition(formattedValue, j);\n return j;\n }\n /** caret specific methods ends **/\n\n /** methods to remove formattting **/\n\n }, {\n key: \"removePrefixAndSuffix\",\n value: function removePrefixAndSuffix(val) {\n var _this$props4 = this.props,\n format = _this$props4.format,\n prefix = _this$props4.prefix,\n suffix = _this$props4.suffix; //remove prefix and suffix\n\n if (!format && val) {\n var isNegative = val[0] === '-'; //remove negation sign\n\n if (isNegative) val = val.substring(1, val.length); //remove prefix\n\n val = prefix && val.indexOf(prefix) === 0 ? val.substring(prefix.length, val.length) : val; //remove suffix\n\n var suffixLastIndex = val.lastIndexOf(suffix);\n val = suffix && suffixLastIndex !== -1 && suffixLastIndex === val.length - suffix.length ? val.substring(0, suffixLastIndex) : val; //add negation sign back\n\n if (isNegative) val = '-' + val;\n }\n\n return val;\n }\n }, {\n key: \"removePatternFormatting\",\n value: function removePatternFormatting(val) {\n var format = this.props.format;\n var formatArray = format.split('#').filter(function (str) {\n return str !== '';\n });\n var start = 0;\n var numStr = '';\n\n for (var i = 0, ln = formatArray.length; i <= ln; i++) {\n var part = formatArray[i] || ''; //if i is the last fragment take the index of end of the value\n //For case like +1 (911) 911 91 91 having pattern +1 (###) ### ## ##\n\n var index = i === ln ? val.length : val.indexOf(part, start);\n /* in any case if we don't find the pattern part in the value assume the val as numeric string\n This will be also in case if user has started typing, in any other case it will not be -1\n unless wrong prop value is provided */\n\n if (index === -1) {\n numStr = val;\n break;\n } else {\n numStr += val.substring(start, index);\n start = index + part.length;\n }\n }\n\n return (numStr.match(/\\d/g) || []).join('');\n }\n }, {\n key: \"removeFormatting\",\n value: function removeFormatting(val) {\n var _this$props5 = this.props,\n format = _this$props5.format,\n removeFormatting = _this$props5.removeFormatting;\n if (!val) return val;\n\n if (!format) {\n val = this.removePrefixAndSuffix(val);\n val = this.getFloatString(val);\n } else if (typeof format === 'string') {\n val = this.removePatternFormatting(val);\n } else if (typeof removeFormatting === 'function') {\n //condition need to be handled if format method is provide,\n val = removeFormatting(val);\n } else {\n val = (val.match(/\\d/g) || []).join('');\n }\n\n return val;\n }\n /** methods to remove formattting end **/\n\n /*** format specific methods start ***/\n\n /**\n * Format when # based string is provided\n * @param {string} numStr Numeric String\n * @return {string} formatted Value\n */\n\n }, {\n key: \"formatWithPattern\",\n value: function formatWithPattern(numStr) {\n var format = this.props.format;\n var hashCount = 0;\n var formattedNumberAry = format.split('');\n\n for (var i = 0, ln = format.length; i < ln; i++) {\n if (format[i] === '#') {\n formattedNumberAry[i] = numStr[hashCount] || this.getMaskAtIndex(hashCount);\n hashCount += 1;\n }\n }\n\n return formattedNumberAry.join('');\n }\n /**\n * @param {string} numStr Numeric string/floatString] It always have decimalSeparator as .\n * @return {string} formatted Value\n */\n\n }, {\n key: \"formatAsNumber\",\n value: function formatAsNumber(numStr) {\n var _this$props6 = this.props,\n decimalScale = _this$props6.decimalScale,\n fixedDecimalScale = _this$props6.fixedDecimalScale,\n prefix = _this$props6.prefix,\n suffix = _this$props6.suffix,\n allowNegative = _this$props6.allowNegative,\n thousandsGroupStyle = _this$props6.thousandsGroupStyle;\n\n var _this$getSeparators4 = this.getSeparators(),\n thousandSeparator = _this$getSeparators4.thousandSeparator,\n decimalSeparator = _this$getSeparators4.decimalSeparator;\n\n var hasDecimalSeparator = numStr.indexOf('.') !== -1 || decimalScale && fixedDecimalScale;\n\n var _splitDecimal = splitDecimal(numStr, allowNegative),\n beforeDecimal = _splitDecimal.beforeDecimal,\n afterDecimal = _splitDecimal.afterDecimal,\n addNegation = _splitDecimal.addNegation; // eslint-disable-line prefer-const\n //apply decimal precision if its defined\n\n\n if (decimalScale !== undefined) afterDecimal = limitToScale(afterDecimal, decimalScale, fixedDecimalScale);\n\n if (thousandSeparator) {\n beforeDecimal = applyThousandSeparator(beforeDecimal, thousandSeparator, thousandsGroupStyle);\n } //add prefix and suffix\n\n\n if (prefix) beforeDecimal = prefix + beforeDecimal;\n if (suffix) afterDecimal = afterDecimal + suffix; //restore negation sign\n\n if (addNegation) beforeDecimal = '-' + beforeDecimal;\n numStr = beforeDecimal + (hasDecimalSeparator && decimalSeparator || '') + afterDecimal;\n return numStr;\n }\n }, {\n key: \"formatNumString\",\n value: function formatNumString() {\n var numStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var _this$props7 = this.props,\n format = _this$props7.format,\n allowEmptyFormatting = _this$props7.allowEmptyFormatting;\n var formattedValue = numStr;\n\n if (numStr === '' && !allowEmptyFormatting) {\n formattedValue = '';\n } else if (numStr === '-' && !format) {\n formattedValue = '-';\n } else if (typeof format === 'string') {\n formattedValue = this.formatWithPattern(formattedValue);\n } else if (typeof format === 'function') {\n formattedValue = format(formattedValue);\n } else {\n formattedValue = this.formatAsNumber(formattedValue);\n }\n\n return formattedValue;\n }\n }, {\n key: \"formatValueProp\",\n value: function formatValueProp(defaultValue) {\n var _this$props8 = this.props,\n format = _this$props8.format,\n decimalScale = _this$props8.decimalScale,\n fixedDecimalScale = _this$props8.fixedDecimalScale,\n allowEmptyFormatting = _this$props8.allowEmptyFormatting;\n var _this$props9 = this.props,\n value = _this$props9.value,\n isNumericString = _this$props9.isNumericString; // if value is undefined or null, use defaultValue instead\n\n value = isNil(value) ? defaultValue : value;\n var isNonNumericFalsy = !value && value !== 0;\n\n if (isNonNumericFalsy && allowEmptyFormatting) {\n value = '';\n } // if value is not defined return empty string\n\n\n if (isNonNumericFalsy && !allowEmptyFormatting) return '';\n\n if (typeof value === 'number') {\n value = value.toString();\n isNumericString = true;\n } //change infinity value to empty string\n\n\n if (value === 'Infinity' && isNumericString) {\n value = '';\n } //round the number based on decimalScale\n //format only if non formatted value is provided\n\n\n if (isNumericString && !format && typeof decimalScale === 'number') {\n value = roundToPrecision(value, decimalScale, fixedDecimalScale);\n }\n\n var formattedValue = isNumericString ? this.formatNumString(value) : this.formatInput(value);\n return formattedValue;\n }\n }, {\n key: \"formatNegation\",\n value: function formatNegation() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var allowNegative = this.props.allowNegative;\n var negationRegex = new RegExp('(-)');\n var doubleNegationRegex = new RegExp('(-)(.)*(-)'); // Check number has '-' value\n\n var hasNegation = negationRegex.test(value); // Check number has 2 or more '-' values\n\n var removeNegation = doubleNegationRegex.test(value); //remove negation\n\n value = value.replace(/-/g, '');\n\n if (hasNegation && !removeNegation && allowNegative) {\n value = '-' + value;\n }\n\n return value;\n }\n }, {\n key: \"formatInput\",\n value: function formatInput() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var format = this.props.format; //format negation only if we are formatting as number\n\n if (!format) {\n value = this.removePrefixAndSuffix(value);\n value = this.formatNegation(value);\n } //remove formatting from number\n\n\n value = this.removeFormatting(value);\n return this.formatNumString(value);\n }\n /*** format specific methods end ***/\n\n }, {\n key: \"isCharacterAFormat\",\n value: function isCharacterAFormat(caretPos, value) {\n var _this$props10 = this.props,\n format = _this$props10.format,\n prefix = _this$props10.prefix,\n suffix = _this$props10.suffix,\n decimalScale = _this$props10.decimalScale,\n fixedDecimalScale = _this$props10.fixedDecimalScale;\n\n var _this$getSeparators5 = this.getSeparators(),\n decimalSeparator = _this$getSeparators5.decimalSeparator; //check within format pattern\n\n\n if (typeof format === 'string' && format[caretPos] !== '#') return true; //check in number format\n\n if (!format && (caretPos < prefix.length || caretPos >= value.length - suffix.length || decimalScale && fixedDecimalScale && value[caretPos] === decimalSeparator)) {\n return true;\n }\n\n return false;\n }\n }, {\n key: \"checkIfFormatGotDeleted\",\n value: function checkIfFormatGotDeleted(start, end, value) {\n for (var i = start; i < end; i++) {\n if (this.isCharacterAFormat(i, value)) return true;\n }\n\n return false;\n }\n /**\n * This will check if any formatting got removed by the delete or backspace and reset the value\n * It will also work as fallback if android chome keyDown handler does not work\n **/\n\n }, {\n key: \"correctInputValue\",\n value: function correctInputValue(caretPos, lastValue, value) {\n var _this$props11 = this.props,\n format = _this$props11.format,\n allowNegative = _this$props11.allowNegative,\n prefix = _this$props11.prefix,\n suffix = _this$props11.suffix,\n decimalScale = _this$props11.decimalScale;\n\n var _this$getSeparators6 = this.getSeparators(),\n allowedDecimalSeparators = _this$getSeparators6.allowedDecimalSeparators,\n decimalSeparator = _this$getSeparators6.decimalSeparator;\n\n var lastNumStr = this.state.numAsString || '';\n var _this$selectionBefore = this.selectionBeforeInput,\n selectionStart = _this$selectionBefore.selectionStart,\n selectionEnd = _this$selectionBefore.selectionEnd;\n\n var _findChangedIndex = findChangedIndex(lastValue, value),\n start = _findChangedIndex.start,\n end = _findChangedIndex.end;\n /** Check for any allowed decimal separator is added in the numeric format and replace it with decimal separator */\n\n\n if (!format && start === end && allowedDecimalSeparators.indexOf(value[selectionStart]) !== -1) {\n var separator = decimalScale === 0 ? '' : decimalSeparator;\n return value.substr(0, selectionStart) + separator + value.substr(selectionStart + 1, value.length);\n }\n /* don't do anyhting if something got added,\n or if value is empty string (when whole input is cleared)\n or whole input is replace with a number\n */\n\n\n var leftBound = !!format ? 0 : prefix.length;\n var rightBound = lastValue.length - (!!format ? 0 : suffix.length);\n\n if (value.length > lastValue.length || !value.length || start === end || selectionStart === 0 && selectionEnd === lastValue.length || selectionStart === leftBound && selectionEnd === rightBound) {\n return value;\n } //if format got deleted reset the value to last value\n\n\n if (this.checkIfFormatGotDeleted(start, end, lastValue)) {\n value = lastValue;\n } //for numbers check if beforeDecimal got deleted and there is nothing after decimal,\n //clear all numbers in such case while keeping the - sign\n\n\n if (!format) {\n var numericString = this.removeFormatting(value);\n\n var _splitDecimal2 = splitDecimal(numericString, allowNegative),\n beforeDecimal = _splitDecimal2.beforeDecimal,\n afterDecimal = _splitDecimal2.afterDecimal,\n addNegation = _splitDecimal2.addNegation; // eslint-disable-line prefer-const\n //clear only if something got deleted\n\n\n var isBeforeDecimalPoint = caretPos < value.indexOf(decimalSeparator) + 1;\n\n if (numericString.length < lastNumStr.length && isBeforeDecimalPoint && beforeDecimal === '' && !parseFloat(afterDecimal)) {\n return addNegation ? '-' : '';\n }\n }\n\n return value;\n }\n /** Update value and caret position */\n\n }, {\n key: \"updateValue\",\n value: function updateValue(params) {\n var formattedValue = params.formattedValue,\n input = params.input,\n _params$setCaretPosit = params.setCaretPosition,\n setCaretPosition = _params$setCaretPosit === void 0 ? true : _params$setCaretPosit;\n var numAsString = params.numAsString,\n caretPos = params.caretPos;\n var onValueChange = this.props.onValueChange;\n var lastValue = this.state.value;\n\n if (input) {\n //set caret position, and value imperatively when element is provided\n if (setCaretPosition) {\n //calculate caret position if not defined\n if (!caretPos) {\n var inputValue = params.inputValue || input.value;\n var currentCaretPosition = getCurrentCaretPosition(input);\n /**\n * set the value imperatively, this is required for IE fix\n * This is also required as if new caret position is beyond the previous value.\n * Caret position will not be set correctly\n */\n\n input.value = formattedValue; //get the caret position\n\n caretPos = this.getCaretPosition(inputValue, formattedValue, currentCaretPosition);\n } //set caret position\n\n\n this.setPatchedCaretPosition(input, caretPos, formattedValue);\n } else {\n /**\n * if we are not setting caret position set the value imperatively.\n * This is required on onBlur method\n */\n input.value = formattedValue;\n }\n } //calculate numeric string if not passed\n\n\n if (numAsString === undefined) {\n numAsString = this.removeFormatting(formattedValue);\n } //update state if value is changed\n\n\n if (formattedValue !== lastValue) {\n this.setState({\n value: formattedValue,\n numAsString: numAsString\n }); // trigger onValueChange synchronously, so parent is updated along with the number format. Fix for #277, #287\n\n onValueChange(this.getValueObject(formattedValue, numAsString));\n }\n }\n }, {\n key: \"onChange\",\n value: function onChange(e) {\n var el = e.target;\n var inputValue = el.value;\n var state = this.state,\n props = this.props;\n var isAllowed = props.isAllowed;\n var lastValue = state.value || '';\n var currentCaretPosition = getCurrentCaretPosition(el);\n inputValue = this.correctInputValue(currentCaretPosition, lastValue, inputValue);\n var formattedValue = this.formatInput(inputValue) || '';\n var numAsString = this.removeFormatting(formattedValue);\n var valueObj = this.getValueObject(formattedValue, numAsString);\n\n if (!isAllowed(valueObj)) {\n formattedValue = lastValue;\n }\n\n this.updateValue({\n formattedValue: formattedValue,\n numAsString: numAsString,\n inputValue: inputValue,\n input: el\n });\n props.onChange(e);\n }\n }, {\n key: \"onBlur\",\n value: function onBlur(e) {\n var props = this.props,\n state = this.state;\n var format = props.format,\n onBlur = props.onBlur,\n allowLeadingZeros = props.allowLeadingZeros;\n var numAsString = state.numAsString;\n var lastValue = state.value;\n this.focusedElm = null;\n clearTimeout(this.focusTimeout);\n\n if (!format) {\n // if the numAsString is not a valid number reset it to empty\n if (isNaN(parseFloat(numAsString))) {\n numAsString = '';\n }\n\n if (!allowLeadingZeros) {\n numAsString = fixLeadingZero(numAsString);\n }\n\n var formattedValue = this.formatNumString(numAsString); //change the state\n\n if (formattedValue !== lastValue) {\n // the event needs to be persisted because its properties can be accessed in an asynchronous way\n this.updateValue({\n formattedValue: formattedValue,\n numAsString: numAsString,\n input: e.target,\n setCaretPosition: false\n });\n onBlur(e);\n return;\n }\n }\n\n onBlur(e);\n }\n }, {\n key: \"onKeyDown\",\n value: function onKeyDown(e) {\n var el = e.target;\n var key = e.key;\n var selectionStart = el.selectionStart,\n selectionEnd = el.selectionEnd,\n _el$value = el.value,\n value = _el$value === void 0 ? '' : _el$value;\n var expectedCaretPosition;\n var _this$props12 = this.props,\n decimalScale = _this$props12.decimalScale,\n fixedDecimalScale = _this$props12.fixedDecimalScale,\n prefix = _this$props12.prefix,\n suffix = _this$props12.suffix,\n format = _this$props12.format,\n onKeyDown = _this$props12.onKeyDown;\n var ignoreDecimalSeparator = decimalScale !== undefined && fixedDecimalScale;\n var numRegex = this.getNumberRegex(false, ignoreDecimalSeparator);\n var negativeRegex = new RegExp('-');\n var isPatternFormat = typeof format === 'string';\n this.selectionBeforeInput = {\n selectionStart: selectionStart,\n selectionEnd: selectionEnd\n }; //Handle backspace and delete against non numerical/decimal characters or arrow keys\n\n if (key === 'ArrowLeft' || key === 'Backspace') {\n expectedCaretPosition = selectionStart - 1;\n } else if (key === 'ArrowRight') {\n expectedCaretPosition = selectionStart + 1;\n } else if (key === 'Delete') {\n expectedCaretPosition = selectionStart;\n } //if expectedCaretPosition is not set it means we don't want to Handle keyDown\n //also if multiple characters are selected don't handle\n\n\n if (expectedCaretPosition === undefined || selectionStart !== selectionEnd) {\n onKeyDown(e);\n return;\n }\n\n var newCaretPosition = expectedCaretPosition;\n var leftBound = isPatternFormat ? format.indexOf('#') : prefix.length;\n var rightBound = isPatternFormat ? format.lastIndexOf('#') + 1 : value.length - suffix.length;\n\n if (key === 'ArrowLeft' || key === 'ArrowRight') {\n var direction = key === 'ArrowLeft' ? 'left' : 'right';\n newCaretPosition = this.correctCaretPosition(value, expectedCaretPosition, direction);\n } else if (key === 'Delete' && !numRegex.test(value[expectedCaretPosition]) && !negativeRegex.test(value[expectedCaretPosition])) {\n while (!numRegex.test(value[newCaretPosition]) && newCaretPosition < rightBound) {\n newCaretPosition++;\n }\n } else if (key === 'Backspace' && !numRegex.test(value[expectedCaretPosition])) {\n /* NOTE: This is special case when backspace is pressed on a\n negative value while the cursor position is after prefix. We can't handle it on onChange because\n we will not have any information of keyPress\n */\n if (selectionStart <= leftBound + 1 && value[0] === '-' && typeof format === 'undefined') {\n var newValue = value.substring(1);\n this.updateValue({\n formattedValue: newValue,\n caretPos: newCaretPosition,\n input: el\n });\n } else if (!negativeRegex.test(value[expectedCaretPosition])) {\n while (!numRegex.test(value[newCaretPosition - 1]) && newCaretPosition > leftBound) {\n newCaretPosition--;\n }\n\n newCaretPosition = this.correctCaretPosition(value, newCaretPosition, 'left');\n }\n }\n\n if (newCaretPosition !== expectedCaretPosition || expectedCaretPosition < leftBound || expectedCaretPosition > rightBound) {\n e.preventDefault();\n this.setPatchedCaretPosition(el, newCaretPosition, value);\n }\n /* NOTE: this is just required for unit test as we need to get the newCaretPosition,\n Remove this when you find different solution */\n\n\n if (e.isUnitTestRun) {\n this.setPatchedCaretPosition(el, newCaretPosition, value);\n }\n\n onKeyDown(e);\n }\n /** required to handle the caret position when click anywhere within the input **/\n\n }, {\n key: \"onMouseUp\",\n value: function onMouseUp(e) {\n var el = e.target;\n /**\n * NOTE: we have to give default value for value as in case when custom input is provided\n * value can come as undefined when nothing is provided on value prop.\n */\n\n var selectionStart = el.selectionStart,\n selectionEnd = el.selectionEnd,\n _el$value2 = el.value,\n value = _el$value2 === void 0 ? '' : _el$value2;\n\n if (selectionStart === selectionEnd) {\n var caretPosition = this.correctCaretPosition(value, selectionStart);\n\n if (caretPosition !== selectionStart) {\n this.setPatchedCaretPosition(el, caretPosition, value);\n }\n }\n\n this.props.onMouseUp(e);\n }\n }, {\n key: \"onFocus\",\n value: function onFocus(e) {\n var _this2 = this;\n\n // Workaround Chrome and Safari bug https://bugs.chromium.org/p/chromium/issues/detail?id=779328\n // (onFocus event target selectionStart is always 0 before setTimeout)\n e.persist();\n this.focusedElm = e.target;\n this.focusTimeout = setTimeout(function () {\n var el = e.target;\n var selectionStart = el.selectionStart,\n selectionEnd = el.selectionEnd,\n _el$value3 = el.value,\n value = _el$value3 === void 0 ? '' : _el$value3;\n\n var caretPosition = _this2.correctCaretPosition(value, selectionStart); //setPatchedCaretPosition only when everything is not selected on focus (while tabbing into the field)\n\n\n if (caretPosition !== selectionStart && !(selectionStart === 0 && selectionEnd === value.length)) {\n _this2.setPatchedCaretPosition(el, caretPosition, value);\n }\n\n _this2.props.onFocus(e);\n }, 0);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props13 = this.props,\n type = _this$props13.type,\n displayType = _this$props13.displayType,\n customInput = _this$props13.customInput,\n renderText = _this$props13.renderText,\n getInputRef = _this$props13.getInputRef,\n format = _this$props13.format;\n var _this$state = this.state,\n value = _this$state.value,\n mounted = _this$state.mounted;\n var otherProps = omit(this.props, propTypes$1); // add input mode on element based on format prop and device once the component is mounted \n\n var inputMode = mounted && addInputMode(format) ? 'numeric' : undefined;\n\n var inputProps = _extends({\n inputMode: inputMode\n }, otherProps, {\n type: type,\n value: value,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown,\n onMouseUp: this.onMouseUp,\n onFocus: this.onFocus,\n onBlur: this.onBlur\n });\n\n if (displayType === 'text') {\n return renderText ? renderText(value) || null : React.createElement(\"span\", _extends({}, otherProps, {\n ref: getInputRef\n }), value);\n } else if (customInput) {\n var CustomInput = customInput;\n return React.createElement(CustomInput, _extends({}, inputProps, {\n ref: getInputRef\n }));\n }\n\n return React.createElement(\"input\", _extends({}, inputProps, {\n ref: getInputRef\n }));\n }\n }]);\n\n return NumberFormat;\n}(React.Component);\n\nNumberFormat.propTypes = propTypes$1;\nNumberFormat.defaultProps = defaultProps;\n\nexport default NumberFormat;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"style-module_3Uz4e\",\"label\":\"style-module_1stBw\",\"clearButton\":\"style-module_1M9r6\",\"clearButtonInInputWithLabel\":\"style-module_zCTxb\",\"paddingBeforeCloseButton\":\"style-module_rie-r\",\"error\":\"style-module__MB2Y\",\"errorMsg\":\"style-module_1ujLn\",\"disabled\":\"style-module_3Rxvt\",\"algorithmItem\":\"style-module_fs8di\"};","import React, { useState } from 'react';\nimport cl from 'classnames';\nimport NumberFormat from 'react-number-format';\nimport style from './style.module.styl';\nimport Button from '../Button';\n\nconst Input = ({\n\tclassName,\n\tonChange,\n\tonClear,\n\tvalue,\n\tlabel,\n\ttype = 'text',\n\terror,\n\tid,\n\tdisabled,\n\tref,\n\twithThousandSeparator,\n\talgorithmItem = false,\n\twithVisibleButton = false,\n\tclearable,\n\t...props\n}) => {\n\tconst [passwordVisible, setPasswordVisible] = useState(false);\n\n\tconst showClearIndicator = !disabled && clearable && value;\n\tconst customType = type === 'search' ? 'text' : type;\n\n\treturn (\n\t\t
\n\t\t\t{label && (\n\t\t\t\t\n\t\t\t)}\n\t\t\t{type === 'password' && withVisibleButton && (\n\t\t\t\t {\n\t\t\t\t\t\t!disabled && setPasswordVisible(!passwordVisible);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\t{withThousandSeparator\n\t\t\t\t? (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t\t: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t{ showClearIndicator && (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tonClear?.();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t{error && {error}}\n\t\t
\n\t);\n};\n\nexport default Input;\n","// extracted by mini-css-extract-plugin\nexport default {\"label\":\"style-module_3GTBA\",\"track\":\"style-module_7T7xE\",\"disabled\":\"style-module_3RV2E\",\"withInput\":\"style-module_KohvN\",\"labelWithInput\":\"style-module_2dStN\",\"labelWithInputSingle\":\"style-module_2OfJK\",\"input\":\"style-module_4OVqw\",\"container\":\"style-module_FTxFF\",\"hidden\":\"style-module_3j37s\",\"algorithmItem\":\"style-module_1ADDf\"};","/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { useRef, useEffect, useState } from 'react';\nimport { Range, getTrackBackground } from 'react-range';\nimport cl from 'classnames';\nimport style from './style.module.styl';\nimport Tooltip from '../Tooltip';\n\nconst round2digits = (num) => Math.round(num * 100) / 100;\n\nconst RangeSlider = ({\n\tmin,\n\tmax,\n\tstep,\n\tvalue,\n\tonChange,\n\tonKeyUp = () => { },\n\tclassName,\n\tlabels,\n\tlabel,\n\twithInput,\n\tdisabled,\n\ticon,\n\ticonHeight = 15,\n\ticonWidth = 15,\n\tround,\n\tmaxlength = 10,\n\talgorithmItem = false,\n\tinputType = 'text',\n\thint = '',\n\thintDirection,\n\thintOrientation,\n\thintClass,\n\tborderColor,\n}) => {\n\tconst inputRef = useRef(null);\n\tconst hiddenSpanRef = useRef(null);\n\tconst [inputValue, setInputValue] = useState(value);\n\tconst [inputWidth, setInputWidth] = useState(50);\n\n\tuseEffect(() => {\n\t\tif (inputValue !== value) {\n\t\t\tsetInputValue(value);\n\t\t}\n\n\t\tif (value > max) {\n\t\t\tonChange(max);\n\t\t}\n\n\t\tif (value < min) {\n\t\t\tonChange(min);\n\t\t}\n\t}, [value]);\n\n\tuseEffect(() => {\n\t\tif (hiddenSpanRef.current) setInputWidth(hiddenSpanRef.current.offsetWidth);\n\t}, [inputValue]);\n\n\tconst iconCss = icon ? {\n\t\tposition: 'absolute',\n\t\ttop: `-${iconHeight / 2 - 5}px`,\n\t\tleft: `-${iconWidth / 2}px`,\n\t} : {};\n\n\tconst colors = {\n\t\tfront: '#c3c5cb',\n\t\tback: disabled ? '#c3c5cb' : '#3A3B3D',\n\t};\n\n\treturn (\n\t\t\n\t\t\t{label && (\n\t\t\t\t\n\t\t\t\t\t{label}\n\t\t\t\t\n\t\t\t)}\n\t\t\t{labels && labels.length > 0 && (\n\t\t\t\t\n\t\t\t\t\t{labels[0]}\n\t\t\t\t\n\t\t\t)}\n\t\t\t onChange(values[0])}\n\t\t\t\ttooltip={false}\n\t\t\t\tmin={min}\n\t\t\t\tmax={max}\n\t\t\t\tvalues={[value > max ? max : value < min ? min : value] || [min]}\n\t\t\t\tstep={step}\n\t\t\t\trenderThumb={({ props, isDragged }) => (\n\t\t\t\t\t\n\t\t\t\t\t\t{withInput && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t inputRef.current.select()}\n\t\t\t\t\t\t\t\t\t\tonChange={(e) => setInputValue(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tonKeyUp={onKeyUp}\n\t\t\t\t\t\t\t\t\t\tonBlur={() => {\n\t\t\t\t\t\t\t\t\t\t\tconst parsedValue = parseFloat(inputValue, 10);\n\t\t\t\t\t\t\t\t\t\t\tif (!isNaN(parsedValue)) {\n\t\t\t\t\t\t\t\t\t\t\t\tonChange(typeof round === 'number' ? round2digits(parsedValue) : parsedValue);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tonChange(0);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\t\t\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\t\t\t\t\t\t\t\tconst parsedValue = parseFloat(inputValue, 10);\n\t\t\t\t\t\t\t\t\t\t\t\tif (!isNaN(parsedValue)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange(typeof round === 'number' ? round2digits(parsedValue) : parsedValue);\n\t\t\t\t\t\t\t\t\t\t\t\t\tinputRef.current.blur();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tclassName={style.input}\n\t\t\t\t\t\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\t\t\t\t\t\tmin={min}\n\t\t\t\t\t\t\t\t\t\tmax={max}\n\t\t\t\t\t\t\t\t\t\tstep={step}\n\t\t\t\t\t\t\t\t\t\tmaxLength={maxlength}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{icon && !withInput && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\trenderTrack={({ props, children }) => (\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (e.target.tagName.toUpperCase() !== 'INPUT') {\n\t\t\t\t\t\t\t\tprops.onMouseDown(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonTouchStart={props.onTouchStart}\n\t\t\t\t\t\tclassName={cl(withInput ? style.track : undefined)}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t...props.style,\n\t\t\t\t\t\t\theight: '11px',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\tmargin: withInput\n\t\t\t\t\t\t\t\t? label\n\t\t\t\t\t\t\t\t\t? '0 25px'\n\t\t\t\t\t\t\t\t\t: '0 30px'\n\t\t\t\t\t\t\t\t: '0',\n\t\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t{labels && labels.length > 0 && withInput && (\n\t\t\t\t\n\t\t\t)}\n\t\t\t{{inputValue}}\n\t\t\n\t);\n};\n\nexport default RangeSlider;\n","export var calculateChange = function calculateChange(e, hsl, direction, initialA, container) {\n var containerWidth = container.clientWidth;\n var containerHeight = container.clientHeight;\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (direction === 'vertical') {\n var a = void 0;\n if (top < 0) {\n a = 0;\n } else if (top > containerHeight) {\n a = 1;\n } else {\n a = Math.round(top * 100 / containerHeight) / 100;\n }\n\n if (hsl.a !== a) {\n return {\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: a,\n source: 'rgb'\n };\n }\n } else {\n var _a = void 0;\n if (left < 0) {\n _a = 0;\n } else if (left > containerWidth) {\n _a = 1;\n } else {\n _a = Math.round(left * 100 / containerWidth) / 100;\n }\n\n if (initialA !== _a) {\n return {\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: _a,\n source: 'rgb'\n };\n }\n }\n return null;\n};","var checkboardCache = {};\n\nexport var render = function render(c1, c2, size, serverCanvas) {\n if (typeof document === 'undefined' && !serverCanvas) {\n return null;\n }\n var canvas = serverCanvas ? new serverCanvas() : document.createElement('canvas');\n canvas.width = size * 2;\n canvas.height = size * 2;\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n return null;\n } // If no context can be found, return early.\n ctx.fillStyle = c1;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n ctx.fillStyle = c2;\n ctx.fillRect(0, 0, size, size);\n ctx.translate(size, size);\n ctx.fillRect(0, 0, size, size);\n return canvas.toDataURL();\n};\n\nexport var get = function get(c1, c2, size, serverCanvas) {\n var key = c1 + '-' + c2 + '-' + size + (serverCanvas ? '-server' : '');\n\n if (checkboardCache[key]) {\n return checkboardCache[key];\n }\n\n var checkboard = render(c1, c2, size, serverCanvas);\n checkboardCache[key] = checkboard;\n return checkboard;\n};","var _extends = Object.assign || 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; };\n\nimport React, { isValidElement } from 'react';\nimport reactCSS from 'reactcss';\nimport * as checkboard from '../../helpers/checkboard';\n\nexport var Checkboard = function Checkboard(_ref) {\n var white = _ref.white,\n grey = _ref.grey,\n size = _ref.size,\n renderers = _ref.renderers,\n borderRadius = _ref.borderRadius,\n boxShadow = _ref.boxShadow,\n children = _ref.children;\n\n var styles = reactCSS({\n 'default': {\n grid: {\n borderRadius: borderRadius,\n boxShadow: boxShadow,\n absolute: '0px 0px 0px 0px',\n background: 'url(' + checkboard.get(white, grey, size, renderers.canvas) + ') center left'\n }\n }\n });\n return isValidElement(children) ? React.cloneElement(children, _extends({}, children.props, { style: _extends({}, children.props.style, styles.grid) })) : React.createElement('div', { style: styles.grid });\n};\n\nCheckboard.defaultProps = {\n size: 8,\n white: 'transparent',\n grey: 'rgba(0,0,0,.08)',\n renderers: {}\n};\n\nexport default Checkboard;","var _extends = Object.assign || 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; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\nimport * as alpha from '../../helpers/alpha';\n\nimport Checkboard from './Checkboard';\n\nexport var Alpha = function (_ref) {\n _inherits(Alpha, _ref);\n\n function Alpha() {\n var _ref2;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Alpha);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Alpha.__proto__ || Object.getPrototypeOf(Alpha)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n var change = alpha.calculateChange(e, _this.props.hsl, _this.props.direction, _this.props.a, _this.container);\n change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n }, _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n window.addEventListener('mousemove', _this.handleChange);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n }, _this.unbindEventListeners = function () {\n window.removeEventListener('mousemove', _this.handleChange);\n window.removeEventListener('mouseup', _this.handleMouseUp);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Alpha, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var rgb = this.props.rgb;\n var styles = reactCSS({\n 'default': {\n alpha: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius\n },\n checkboard: {\n absolute: '0px 0px 0px 0px',\n overflow: 'hidden',\n borderRadius: this.props.radius\n },\n gradient: {\n absolute: '0px 0px 0px 0px',\n background: 'linear-gradient(to right, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)',\n boxShadow: this.props.shadow,\n borderRadius: this.props.radius\n },\n container: {\n position: 'relative',\n height: '100%',\n margin: '0 3px'\n },\n pointer: {\n position: 'absolute',\n left: rgb.a * 100 + '%'\n },\n slider: {\n width: '4px',\n borderRadius: '1px',\n height: '8px',\n boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n background: '#fff',\n marginTop: '1px',\n transform: 'translateX(-2px)'\n }\n },\n 'vertical': {\n gradient: {\n background: 'linear-gradient(to bottom, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)'\n },\n pointer: {\n left: 0,\n top: rgb.a * 100 + '%'\n }\n },\n 'overwrite': _extends({}, this.props.style)\n }, {\n vertical: this.props.direction === 'vertical',\n overwrite: true\n });\n\n return React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(\n 'div',\n { style: styles.checkboard },\n React.createElement(Checkboard, { renderers: this.props.renderers })\n ),\n React.createElement('div', { style: styles.gradient }),\n React.createElement(\n 'div',\n {\n style: styles.container,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n React.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? React.createElement(this.props.pointer, this.props) : React.createElement('div', { style: styles.slider })\n )\n )\n );\n }\n }]);\n\n return Alpha;\n}(PureComponent || Component);\n\nexport default Alpha;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\n\nvar DEFAULT_ARROW_OFFSET = 1;\n\nvar UP_KEY_CODE = 38;\nvar DOWN_KEY_CODE = 40;\nvar VALID_KEY_CODES = [UP_KEY_CODE, DOWN_KEY_CODE];\nvar isValidKeyCode = function isValidKeyCode(keyCode) {\n return VALID_KEY_CODES.indexOf(keyCode) > -1;\n};\nvar getNumberValue = function getNumberValue(value) {\n return Number(String(value).replace(/%/g, ''));\n};\n\nvar idCounter = 1;\n\nexport var EditableInput = function (_ref) {\n _inherits(EditableInput, _ref);\n\n function EditableInput(props) {\n _classCallCheck(this, EditableInput);\n\n var _this = _possibleConstructorReturn(this, (EditableInput.__proto__ || Object.getPrototypeOf(EditableInput)).call(this));\n\n _this.handleBlur = function () {\n if (_this.state.blurValue) {\n _this.setState({ value: _this.state.blurValue, blurValue: null });\n }\n };\n\n _this.handleChange = function (e) {\n _this.setUpdatedValue(e.target.value, e);\n };\n\n _this.handleKeyDown = function (e) {\n // In case `e.target.value` is a percentage remove the `%` character\n // and update accordingly with a percentage\n // https://github.com/casesandberg/react-color/issues/383\n var value = getNumberValue(e.target.value);\n if (!isNaN(value) && isValidKeyCode(e.keyCode)) {\n var offset = _this.getArrowOffset();\n var updatedValue = e.keyCode === UP_KEY_CODE ? value + offset : value - offset;\n\n _this.setUpdatedValue(updatedValue, e);\n }\n };\n\n _this.handleDrag = function (e) {\n if (_this.props.dragLabel) {\n var newValue = Math.round(_this.props.value + e.movementX);\n if (newValue >= 0 && newValue <= _this.props.dragMax) {\n _this.props.onChange && _this.props.onChange(_this.getValueObjectWithLabel(newValue), e);\n }\n }\n };\n\n _this.handleMouseDown = function (e) {\n if (_this.props.dragLabel) {\n e.preventDefault();\n _this.handleDrag(e);\n window.addEventListener('mousemove', _this.handleDrag);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }\n };\n\n _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n };\n\n _this.unbindEventListeners = function () {\n window.removeEventListener('mousemove', _this.handleDrag);\n window.removeEventListener('mouseup', _this.handleMouseUp);\n };\n\n _this.state = {\n value: String(props.value).toUpperCase(),\n blurValue: String(props.value).toUpperCase()\n };\n\n _this.inputId = 'rc-editable-input-' + idCounter++;\n return _this;\n }\n\n _createClass(EditableInput, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n if (this.props.value !== this.state.value && (prevProps.value !== this.props.value || prevState.value !== this.state.value)) {\n if (this.input === document.activeElement) {\n this.setState({ blurValue: String(this.props.value).toUpperCase() });\n } else {\n this.setState({ value: String(this.props.value).toUpperCase(), blurValue: !this.state.blurValue && String(this.props.value).toUpperCase() });\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'getValueObjectWithLabel',\n value: function getValueObjectWithLabel(value) {\n return _defineProperty({}, this.props.label, value);\n }\n }, {\n key: 'getArrowOffset',\n value: function getArrowOffset() {\n return this.props.arrowOffset || DEFAULT_ARROW_OFFSET;\n }\n }, {\n key: 'setUpdatedValue',\n value: function setUpdatedValue(value, e) {\n var onChangeValue = this.props.label ? this.getValueObjectWithLabel(value) : value;\n this.props.onChange && this.props.onChange(onChangeValue, e);\n\n this.setState({ value: value });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var styles = reactCSS({\n 'default': {\n wrap: {\n position: 'relative'\n }\n },\n 'user-override': {\n wrap: this.props.style && this.props.style.wrap ? this.props.style.wrap : {},\n input: this.props.style && this.props.style.input ? this.props.style.input : {},\n label: this.props.style && this.props.style.label ? this.props.style.label : {}\n },\n 'dragLabel-true': {\n label: {\n cursor: 'ew-resize'\n }\n }\n }, {\n 'user-override': true\n }, this.props);\n\n return React.createElement(\n 'div',\n { style: styles.wrap },\n React.createElement('input', {\n id: this.inputId,\n style: styles.input,\n ref: function ref(input) {\n return _this2.input = input;\n },\n value: this.state.value,\n onKeyDown: this.handleKeyDown,\n onChange: this.handleChange,\n onBlur: this.handleBlur,\n placeholder: this.props.placeholder,\n spellCheck: 'false'\n }),\n this.props.label && !this.props.hideLabel ? React.createElement(\n 'label',\n {\n htmlFor: this.inputId,\n style: styles.label,\n onMouseDown: this.handleMouseDown\n },\n this.props.label\n ) : null\n );\n }\n }]);\n\n return EditableInput;\n}(PureComponent || Component);\n\nexport default EditableInput;","export var calculateChange = function calculateChange(e, direction, hsl, container) {\n var containerWidth = container.clientWidth;\n var containerHeight = container.clientHeight;\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (direction === 'vertical') {\n var h = void 0;\n if (top < 0) {\n h = 359;\n } else if (top > containerHeight) {\n h = 0;\n } else {\n var percent = -(top * 100 / containerHeight) + 100;\n h = 360 * percent / 100;\n }\n\n if (hsl.h !== h) {\n return {\n h: h,\n s: hsl.s,\n l: hsl.l,\n a: hsl.a,\n source: 'hsl'\n };\n }\n } else {\n var _h = void 0;\n if (left < 0) {\n _h = 0;\n } else if (left > containerWidth) {\n _h = 359;\n } else {\n var _percent = left * 100 / containerWidth;\n _h = 360 * _percent / 100;\n }\n\n if (hsl.h !== _h) {\n return {\n h: _h,\n s: hsl.s,\n l: hsl.l,\n a: hsl.a,\n source: 'hsl'\n };\n }\n }\n return null;\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\nimport * as hue from '../../helpers/hue';\n\nexport var Hue = function (_ref) {\n _inherits(Hue, _ref);\n\n function Hue() {\n var _ref2;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Hue);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Hue.__proto__ || Object.getPrototypeOf(Hue)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n var change = hue.calculateChange(e, _this.props.direction, _this.props.hsl, _this.container);\n change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n }, _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n window.addEventListener('mousemove', _this.handleChange);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Hue, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'unbindEventListeners',\n value: function unbindEventListeners() {\n window.removeEventListener('mousemove', this.handleChange);\n window.removeEventListener('mouseup', this.handleMouseUp);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props$direction = this.props.direction,\n direction = _props$direction === undefined ? 'horizontal' : _props$direction;\n\n\n var styles = reactCSS({\n 'default': {\n hue: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius,\n boxShadow: this.props.shadow\n },\n container: {\n padding: '0 2px',\n position: 'relative',\n height: '100%',\n borderRadius: this.props.radius\n },\n pointer: {\n position: 'absolute',\n left: this.props.hsl.h * 100 / 360 + '%'\n },\n slider: {\n marginTop: '1px',\n width: '4px',\n borderRadius: '1px',\n height: '8px',\n boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n background: '#fff',\n transform: 'translateX(-2px)'\n }\n },\n 'vertical': {\n pointer: {\n left: '0px',\n top: -(this.props.hsl.h * 100 / 360) + 100 + '%'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(\n 'div',\n {\n className: 'hue-' + direction,\n style: styles.container,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n React.createElement(\n 'style',\n null,\n '\\n .hue-horizontal {\\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0\\n 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n background: -webkit-linear-gradient(to right, #f00 0%, #ff0\\n 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n }\\n\\n .hue-vertical {\\n background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%,\\n #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%,\\n #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n }\\n '\n ),\n React.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? React.createElement(this.props.pointer, this.props) : React.createElement('div', { style: styles.slider })\n )\n )\n );\n }\n }]);\n\n return Hue;\n}(PureComponent || Component);\n\nexport default Hue;","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nexport var Raised = function Raised(_ref) {\n var zDepth = _ref.zDepth,\n radius = _ref.radius,\n background = _ref.background,\n children = _ref.children,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles;\n\n var styles = reactCSS(merge({\n 'default': {\n wrap: {\n position: 'relative',\n display: 'inline-block'\n },\n content: {\n position: 'relative'\n },\n bg: {\n absolute: '0px 0px 0px 0px',\n boxShadow: '0 ' + zDepth + 'px ' + zDepth * 4 + 'px rgba(0,0,0,.24)',\n borderRadius: radius,\n background: background\n }\n },\n 'zDepth-0': {\n bg: {\n boxShadow: 'none'\n }\n },\n\n 'zDepth-1': {\n bg: {\n boxShadow: '0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16)'\n }\n },\n 'zDepth-2': {\n bg: {\n boxShadow: '0 6px 20px rgba(0,0,0,.19), 0 8px 17px rgba(0,0,0,.2)'\n }\n },\n 'zDepth-3': {\n bg: {\n boxShadow: '0 17px 50px rgba(0,0,0,.19), 0 12px 15px rgba(0,0,0,.24)'\n }\n },\n 'zDepth-4': {\n bg: {\n boxShadow: '0 25px 55px rgba(0,0,0,.21), 0 16px 28px rgba(0,0,0,.22)'\n }\n },\n 'zDepth-5': {\n bg: {\n boxShadow: '0 40px 77px rgba(0,0,0,.22), 0 27px 24px rgba(0,0,0,.2)'\n }\n },\n 'square': {\n bg: {\n borderRadius: '0'\n }\n },\n 'circle': {\n bg: {\n borderRadius: '50%'\n }\n }\n }, passedStyles), { 'zDepth-1': zDepth === 1 });\n\n return React.createElement(\n 'div',\n { style: styles.wrap },\n React.createElement('div', { style: styles.bg }),\n React.createElement(\n 'div',\n { style: styles.content },\n children\n )\n );\n};\n\nRaised.propTypes = {\n background: PropTypes.string,\n zDepth: PropTypes.oneOf([0, 1, 2, 3, 4, 5]),\n radius: PropTypes.number,\n styles: PropTypes.object\n};\n\nRaised.defaultProps = {\n background: '#fff',\n zDepth: 1,\n radius: 2,\n styles: {}\n};\n\nexport default Raised;","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n","export var calculateChange = function calculateChange(e, hsl, container) {\n var _container$getBoundin = container.getBoundingClientRect(),\n containerWidth = _container$getBoundin.width,\n containerHeight = _container$getBoundin.height;\n\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (left < 0) {\n left = 0;\n } else if (left > containerWidth) {\n left = containerWidth;\n }\n\n if (top < 0) {\n top = 0;\n } else if (top > containerHeight) {\n top = containerHeight;\n }\n\n var saturation = left / containerWidth;\n var bright = 1 - top / containerHeight;\n\n return {\n h: hsl.h,\n s: saturation,\n v: bright,\n a: hsl.a,\n source: 'hsv'\n };\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\nimport throttle from 'lodash-es/throttle';\nimport * as saturation from '../../helpers/saturation';\n\nexport var Saturation = function (_ref) {\n _inherits(Saturation, _ref);\n\n function Saturation(props) {\n _classCallCheck(this, Saturation);\n\n var _this = _possibleConstructorReturn(this, (Saturation.__proto__ || Object.getPrototypeOf(Saturation)).call(this, props));\n\n _this.handleChange = function (e) {\n typeof _this.props.onChange === 'function' && _this.throttle(_this.props.onChange, saturation.calculateChange(e, _this.props.hsl, _this.container), e);\n };\n\n _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n var renderWindow = _this.getContainerRenderWindow();\n renderWindow.addEventListener('mousemove', _this.handleChange);\n renderWindow.addEventListener('mouseup', _this.handleMouseUp);\n };\n\n _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n };\n\n _this.throttle = throttle(function (fn, data, e) {\n fn(data, e);\n }, 50);\n return _this;\n }\n\n _createClass(Saturation, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.throttle.cancel();\n this.unbindEventListeners();\n }\n }, {\n key: 'getContainerRenderWindow',\n value: function getContainerRenderWindow() {\n var container = this.container;\n\n var renderWindow = window;\n while (!renderWindow.document.contains(container) && renderWindow.parent !== renderWindow) {\n renderWindow = renderWindow.parent;\n }\n return renderWindow;\n }\n }, {\n key: 'unbindEventListeners',\n value: function unbindEventListeners() {\n var renderWindow = this.getContainerRenderWindow();\n renderWindow.removeEventListener('mousemove', this.handleChange);\n renderWindow.removeEventListener('mouseup', this.handleMouseUp);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _ref2 = this.props.style || {},\n color = _ref2.color,\n white = _ref2.white,\n black = _ref2.black,\n pointer = _ref2.pointer,\n circle = _ref2.circle;\n\n var styles = reactCSS({\n 'default': {\n color: {\n absolute: '0px 0px 0px 0px',\n background: 'hsl(' + this.props.hsl.h + ',100%, 50%)',\n borderRadius: this.props.radius\n },\n white: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius\n },\n black: {\n absolute: '0px 0px 0px 0px',\n boxShadow: this.props.shadow,\n borderRadius: this.props.radius\n },\n pointer: {\n position: 'absolute',\n top: -(this.props.hsv.v * 100) + 100 + '%',\n left: this.props.hsv.s * 100 + '%',\n cursor: 'default'\n },\n circle: {\n width: '4px',\n height: '4px',\n boxShadow: '0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3),\\n 0 0 1px 2px rgba(0,0,0,.4)',\n borderRadius: '50%',\n cursor: 'hand',\n transform: 'translate(-2px, -2px)'\n }\n },\n 'custom': {\n color: color,\n white: white,\n black: black,\n pointer: pointer,\n circle: circle\n }\n }, { 'custom': !!this.props.style });\n\n return React.createElement(\n 'div',\n {\n style: styles.color,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n React.createElement(\n 'style',\n null,\n '\\n .saturation-white {\\n background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));\\n background: linear-gradient(to right, #fff, rgba(255,255,255,0));\\n }\\n .saturation-black {\\n background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));\\n background: linear-gradient(to top, #000, rgba(0,0,0,0));\\n }\\n '\n ),\n React.createElement(\n 'div',\n { style: styles.white, className: 'saturation-white' },\n React.createElement('div', { style: styles.black, className: 'saturation-black' }),\n React.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? React.createElement(this.props.pointer, this.props) : React.createElement('div', { style: styles.circle })\n )\n )\n );\n }\n }]);\n\n return Saturation;\n}(PureComponent || Component);\n\nexport default Saturation;","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n","import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n","import each from 'lodash-es/each';\nimport tinycolor from 'tinycolor2';\n\nexport var simpleCheckForValidColor = function simpleCheckForValidColor(data) {\n var keysToCheck = ['r', 'g', 'b', 'a', 'h', 's', 'l', 'v'];\n var checked = 0;\n var passed = 0;\n each(keysToCheck, function (letter) {\n if (data[letter]) {\n checked += 1;\n if (!isNaN(data[letter])) {\n passed += 1;\n }\n if (letter === 's' || letter === 'l') {\n var percentPatt = /^\\d+%$/;\n if (percentPatt.test(data[letter])) {\n passed += 1;\n }\n }\n }\n });\n return checked === passed ? data : false;\n};\n\nexport var toState = function toState(data, oldHue) {\n var color = data.hex ? tinycolor(data.hex) : tinycolor(data);\n var hsl = color.toHsl();\n var hsv = color.toHsv();\n var rgb = color.toRgb();\n var hex = color.toHex();\n if (hsl.s === 0) {\n hsl.h = oldHue || 0;\n hsv.h = oldHue || 0;\n }\n var transparent = hex === '000000' && rgb.a === 0;\n\n return {\n hsl: hsl,\n hex: transparent ? 'transparent' : '#' + hex,\n rgb: rgb,\n hsv: hsv,\n oldHue: data.h || oldHue || hsl.h,\n source: data.source\n };\n};\n\nexport var isValidHex = function isValidHex(hex) {\n if (hex === 'transparent') {\n return true;\n }\n // disable hex4 and hex8\n var lh = String(hex).charAt(0) === '#' ? 1 : 0;\n return hex.length !== 4 + lh && hex.length < 7 + lh && tinycolor(hex).isValid();\n};\n\nexport var getContrastingColor = function getContrastingColor(data) {\n if (!data) {\n return '#fff';\n }\n var col = toState(data);\n if (col.hex === 'transparent') {\n return 'rgba(0,0,0,0.4)';\n }\n var yiq = (col.rgb.r * 299 + col.rgb.g * 587 + col.rgb.b * 114) / 1000;\n return yiq >= 128 ? '#000' : '#fff';\n};\n\nexport var red = {\n hsl: { a: 1, h: 0, l: 0.5, s: 1 },\n hex: '#ff0000',\n rgb: { r: 255, g: 0, b: 0, a: 1 },\n hsv: { h: 0, s: 1, v: 1, a: 1 }\n};\n\nexport var isvalidColorString = function isvalidColorString(string, type) {\n var stringWithoutDegree = string.replace('°', '');\n return tinycolor(type + ' (' + stringWithoutDegree + ')')._ok;\n};","var _extends = Object.assign || 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; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport debounce from 'lodash-es/debounce';\nimport * as color from '../../helpers/color';\n\nexport var ColorWrap = function ColorWrap(Picker) {\n var ColorPicker = function (_ref) {\n _inherits(ColorPicker, _ref);\n\n function ColorPicker(props) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this));\n\n _this.handleChange = function (data, event) {\n var isValidColor = color.simpleCheckForValidColor(data);\n if (isValidColor) {\n var colors = color.toState(data, data.h || _this.state.oldHue);\n _this.setState(colors);\n _this.props.onChangeComplete && _this.debounce(_this.props.onChangeComplete, colors, event);\n _this.props.onChange && _this.props.onChange(colors, event);\n }\n };\n\n _this.handleSwatchHover = function (data, event) {\n var isValidColor = color.simpleCheckForValidColor(data);\n if (isValidColor) {\n var colors = color.toState(data, data.h || _this.state.oldHue);\n _this.props.onSwatchHover && _this.props.onSwatchHover(colors, event);\n }\n };\n\n _this.state = _extends({}, color.toState(props.color, 0));\n\n _this.debounce = debounce(function (fn, data, event) {\n fn(data, event);\n }, 100);\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'render',\n value: function render() {\n var optionalEvents = {};\n if (this.props.onSwatchHover) {\n optionalEvents.onSwatchHover = this.handleSwatchHover;\n }\n\n return React.createElement(Picker, _extends({}, this.props, this.state, {\n onChange: this.handleChange\n }, optionalEvents));\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, state) {\n return _extends({}, color.toState(nextProps.color, state.oldHue));\n }\n }]);\n\n return ColorPicker;\n }(PureComponent || Component);\n\n ColorPicker.propTypes = _extends({}, Picker.propTypes);\n\n ColorPicker.defaultProps = _extends({}, Picker.defaultProps, {\n color: {\n h: 250,\n s: 0.50,\n l: 0.20,\n a: 1\n }\n });\n\n return ColorPicker;\n};\n\nexport default ColorWrap;","var _extends = Object.assign || 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; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable no-invalid-this */\nimport React from 'react';\n\nexport var handleFocus = function handleFocus(Component) {\n var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n return function (_React$Component) {\n _inherits(Focus, _React$Component);\n\n function Focus() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Focus);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Focus.__proto__ || Object.getPrototypeOf(Focus)).call.apply(_ref, [this].concat(args))), _this), _this.state = { focus: false }, _this.handleFocus = function () {\n return _this.setState({ focus: true });\n }, _this.handleBlur = function () {\n return _this.setState({ focus: false });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Focus, [{\n key: 'render',\n value: function render() {\n return React.createElement(\n Span,\n { onFocus: this.handleFocus, onBlur: this.handleBlur },\n React.createElement(Component, _extends({}, this.props, this.state))\n );\n }\n }]);\n\n return Focus;\n }(React.Component);\n};","var _extends = Object.assign || 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; };\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\nimport { handleFocus } from '../../helpers/interaction';\n\nimport Checkboard from './Checkboard';\n\nvar ENTER = 13;\n\nexport var Swatch = function Swatch(_ref) {\n var color = _ref.color,\n style = _ref.style,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onHover = _ref.onHover,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? color : _ref$title,\n children = _ref.children,\n focus = _ref.focus,\n _ref$focusStyle = _ref.focusStyle,\n focusStyle = _ref$focusStyle === undefined ? {} : _ref$focusStyle;\n\n var transparent = color === 'transparent';\n var styles = reactCSS({\n default: {\n swatch: _extends({\n background: color,\n height: '100%',\n width: '100%',\n cursor: 'pointer',\n position: 'relative',\n outline: 'none'\n }, style, focus ? focusStyle : {})\n }\n });\n\n var handleClick = function handleClick(e) {\n return onClick(color, e);\n };\n var handleKeyDown = function handleKeyDown(e) {\n return e.keyCode === ENTER && onClick(color, e);\n };\n var handleHover = function handleHover(e) {\n return onHover(color, e);\n };\n\n var optionalEvents = {};\n if (onHover) {\n optionalEvents.onMouseOver = handleHover;\n }\n\n return React.createElement(\n 'div',\n _extends({\n style: styles.swatch,\n onClick: handleClick,\n title: title,\n tabIndex: 0,\n onKeyDown: handleKeyDown\n }, optionalEvents),\n children,\n transparent && React.createElement(Checkboard, {\n borderRadius: styles.swatch.borderRadius,\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,0.1)'\n })\n );\n};\n\nexport default handleFocus(Swatch);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var AlphaPointer = function AlphaPointer(_ref) {\n var direction = _ref.direction;\n\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '18px',\n height: '18px',\n borderRadius: '50%',\n transform: 'translate(-9px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n },\n 'vertical': {\n picker: {\n transform: 'translate(-3px, -9px)'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default AlphaPointer;","var _extends = Object.assign || 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; };\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\n\nimport { ColorWrap, Alpha } from '../common';\nimport AlphaPointer from './AlphaPointer';\n\nexport var AlphaPicker = function AlphaPicker(_ref) {\n var rgb = _ref.rgb,\n hsl = _ref.hsl,\n width = _ref.width,\n height = _ref.height,\n onChange = _ref.onChange,\n direction = _ref.direction,\n style = _ref.style,\n renderers = _ref.renderers,\n pointer = _ref.pointer,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS({\n 'default': {\n picker: {\n position: 'relative',\n width: width,\n height: height\n },\n alpha: {\n radius: '2px',\n style: style\n }\n }\n });\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'alpha-picker ' + className },\n React.createElement(Alpha, _extends({}, styles.alpha, {\n rgb: rgb,\n hsl: hsl,\n pointer: pointer,\n renderers: renderers,\n onChange: onChange,\n direction: direction\n }))\n );\n};\n\nAlphaPicker.defaultProps = {\n width: '316px',\n height: '16px',\n direction: 'horizontal',\n pointer: AlphaPointer\n};\n\nexport default ColorWrap(AlphaPicker);","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n","import React from 'react';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\n\nimport { Swatch } from '../common';\n\nexport var BlockSwatches = function BlockSwatches(_ref) {\n var colors = _ref.colors,\n onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover;\n\n var styles = reactCSS({\n 'default': {\n swatches: {\n marginRight: '-10px'\n },\n swatch: {\n width: '22px',\n height: '22px',\n float: 'left',\n marginRight: '10px',\n marginBottom: '10px',\n borderRadius: '4px'\n },\n clear: {\n clear: 'both'\n }\n }\n });\n\n return React.createElement(\n 'div',\n { style: styles.swatches },\n map(colors, function (c) {\n return React.createElement(Swatch, {\n key: c,\n color: c,\n style: styles.swatch,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: {\n boxShadow: '0 0 4px ' + c\n }\n });\n }),\n React.createElement('div', { style: styles.clear })\n );\n};\n\nexport default BlockSwatches;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, EditableInput, Checkboard } from '../common';\nimport BlockSwatches from './BlockSwatches';\n\nexport var Block = function Block(_ref) {\n var onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n hex = _ref.hex,\n colors = _ref.colors,\n width = _ref.width,\n triangle = _ref.triangle,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var transparent = hex === 'transparent';\n var handleChange = function handleChange(hexCode, e) {\n color.isValidHex(hexCode) && onChange({\n hex: hexCode,\n source: 'hex'\n }, e);\n };\n\n var styles = reactCSS(merge({\n 'default': {\n card: {\n width: width,\n background: '#fff',\n boxShadow: '0 1px rgba(0,0,0,.1)',\n borderRadius: '6px',\n position: 'relative'\n },\n head: {\n height: '110px',\n background: hex,\n borderRadius: '6px 6px 0 0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative'\n },\n body: {\n padding: '10px'\n },\n label: {\n fontSize: '18px',\n color: color.getContrastingColor(hex),\n position: 'relative'\n },\n triangle: {\n width: '0px',\n height: '0px',\n borderStyle: 'solid',\n borderWidth: '0 10px 10px 10px',\n borderColor: 'transparent transparent ' + hex + ' transparent',\n position: 'absolute',\n top: '-10px',\n left: '50%',\n marginLeft: '-10px'\n },\n input: {\n width: '100%',\n fontSize: '12px',\n color: '#666',\n border: '0px',\n outline: 'none',\n height: '22px',\n boxShadow: 'inset 0 0 0 1px #ddd',\n borderRadius: '4px',\n padding: '0 7px',\n boxSizing: 'border-box'\n }\n },\n 'hide-triangle': {\n triangle: {\n display: 'none'\n }\n }\n }, passedStyles), { 'hide-triangle': triangle === 'hide' });\n\n return React.createElement(\n 'div',\n { style: styles.card, className: 'block-picker ' + className },\n React.createElement('div', { style: styles.triangle }),\n React.createElement(\n 'div',\n { style: styles.head },\n transparent && React.createElement(Checkboard, { borderRadius: '6px 6px 0 0' }),\n React.createElement(\n 'div',\n { style: styles.label },\n hex\n )\n ),\n React.createElement(\n 'div',\n { style: styles.body },\n React.createElement(BlockSwatches, { colors: colors, onClick: handleChange, onSwatchHover: onSwatchHover }),\n React.createElement(EditableInput, {\n style: { input: styles.input },\n value: hex,\n onChange: handleChange\n })\n )\n );\n};\n\nBlock.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n colors: PropTypes.arrayOf(PropTypes.string),\n triangle: PropTypes.oneOf(['top', 'hide']),\n styles: PropTypes.object\n};\n\nBlock.defaultProps = {\n width: 170,\n colors: ['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8'],\n triangle: 'top',\n styles: {}\n};\n\nexport default ColorWrap(Block);","export var red = {\"50\":\"#ffebee\",\"100\":\"#ffcdd2\",\"200\":\"#ef9a9a\",\"300\":\"#e57373\",\"400\":\"#ef5350\",\"500\":\"#f44336\",\"600\":\"#e53935\",\"700\":\"#d32f2f\",\"800\":\"#c62828\",\"900\":\"#b71c1c\",\"a100\":\"#ff8a80\",\"a200\":\"#ff5252\",\"a400\":\"#ff1744\",\"a700\":\"#d50000\"};\nexport var pink = {\"50\":\"#fce4ec\",\"100\":\"#f8bbd0\",\"200\":\"#f48fb1\",\"300\":\"#f06292\",\"400\":\"#ec407a\",\"500\":\"#e91e63\",\"600\":\"#d81b60\",\"700\":\"#c2185b\",\"800\":\"#ad1457\",\"900\":\"#880e4f\",\"a100\":\"#ff80ab\",\"a200\":\"#ff4081\",\"a400\":\"#f50057\",\"a700\":\"#c51162\"};\nexport var purple = {\"50\":\"#f3e5f5\",\"100\":\"#e1bee7\",\"200\":\"#ce93d8\",\"300\":\"#ba68c8\",\"400\":\"#ab47bc\",\"500\":\"#9c27b0\",\"600\":\"#8e24aa\",\"700\":\"#7b1fa2\",\"800\":\"#6a1b9a\",\"900\":\"#4a148c\",\"a100\":\"#ea80fc\",\"a200\":\"#e040fb\",\"a400\":\"#d500f9\",\"a700\":\"#aa00ff\"};\nexport var deepPurple = {\"50\":\"#ede7f6\",\"100\":\"#d1c4e9\",\"200\":\"#b39ddb\",\"300\":\"#9575cd\",\"400\":\"#7e57c2\",\"500\":\"#673ab7\",\"600\":\"#5e35b1\",\"700\":\"#512da8\",\"800\":\"#4527a0\",\"900\":\"#311b92\",\"a100\":\"#b388ff\",\"a200\":\"#7c4dff\",\"a400\":\"#651fff\",\"a700\":\"#6200ea\"};\nexport var indigo = {\"50\":\"#e8eaf6\",\"100\":\"#c5cae9\",\"200\":\"#9fa8da\",\"300\":\"#7986cb\",\"400\":\"#5c6bc0\",\"500\":\"#3f51b5\",\"600\":\"#3949ab\",\"700\":\"#303f9f\",\"800\":\"#283593\",\"900\":\"#1a237e\",\"a100\":\"#8c9eff\",\"a200\":\"#536dfe\",\"a400\":\"#3d5afe\",\"a700\":\"#304ffe\"};\nexport var blue = {\"50\":\"#e3f2fd\",\"100\":\"#bbdefb\",\"200\":\"#90caf9\",\"300\":\"#64b5f6\",\"400\":\"#42a5f5\",\"500\":\"#2196f3\",\"600\":\"#1e88e5\",\"700\":\"#1976d2\",\"800\":\"#1565c0\",\"900\":\"#0d47a1\",\"a100\":\"#82b1ff\",\"a200\":\"#448aff\",\"a400\":\"#2979ff\",\"a700\":\"#2962ff\"};\nexport var lightBlue = {\"50\":\"#e1f5fe\",\"100\":\"#b3e5fc\",\"200\":\"#81d4fa\",\"300\":\"#4fc3f7\",\"400\":\"#29b6f6\",\"500\":\"#03a9f4\",\"600\":\"#039be5\",\"700\":\"#0288d1\",\"800\":\"#0277bd\",\"900\":\"#01579b\",\"a100\":\"#80d8ff\",\"a200\":\"#40c4ff\",\"a400\":\"#00b0ff\",\"a700\":\"#0091ea\"};\nexport var cyan = {\"50\":\"#e0f7fa\",\"100\":\"#b2ebf2\",\"200\":\"#80deea\",\"300\":\"#4dd0e1\",\"400\":\"#26c6da\",\"500\":\"#00bcd4\",\"600\":\"#00acc1\",\"700\":\"#0097a7\",\"800\":\"#00838f\",\"900\":\"#006064\",\"a100\":\"#84ffff\",\"a200\":\"#18ffff\",\"a400\":\"#00e5ff\",\"a700\":\"#00b8d4\"};\nexport var teal = {\"50\":\"#e0f2f1\",\"100\":\"#b2dfdb\",\"200\":\"#80cbc4\",\"300\":\"#4db6ac\",\"400\":\"#26a69a\",\"500\":\"#009688\",\"600\":\"#00897b\",\"700\":\"#00796b\",\"800\":\"#00695c\",\"900\":\"#004d40\",\"a100\":\"#a7ffeb\",\"a200\":\"#64ffda\",\"a400\":\"#1de9b6\",\"a700\":\"#00bfa5\"};\nexport var green = {\"50\":\"#e8f5e9\",\"100\":\"#c8e6c9\",\"200\":\"#a5d6a7\",\"300\":\"#81c784\",\"400\":\"#66bb6a\",\"500\":\"#4caf50\",\"600\":\"#43a047\",\"700\":\"#388e3c\",\"800\":\"#2e7d32\",\"900\":\"#1b5e20\",\"a100\":\"#b9f6ca\",\"a200\":\"#69f0ae\",\"a400\":\"#00e676\",\"a700\":\"#00c853\"};\nexport var lightGreen = {\"50\":\"#f1f8e9\",\"100\":\"#dcedc8\",\"200\":\"#c5e1a5\",\"300\":\"#aed581\",\"400\":\"#9ccc65\",\"500\":\"#8bc34a\",\"600\":\"#7cb342\",\"700\":\"#689f38\",\"800\":\"#558b2f\",\"900\":\"#33691e\",\"a100\":\"#ccff90\",\"a200\":\"#b2ff59\",\"a400\":\"#76ff03\",\"a700\":\"#64dd17\"};\nexport var lime = {\"50\":\"#f9fbe7\",\"100\":\"#f0f4c3\",\"200\":\"#e6ee9c\",\"300\":\"#dce775\",\"400\":\"#d4e157\",\"500\":\"#cddc39\",\"600\":\"#c0ca33\",\"700\":\"#afb42b\",\"800\":\"#9e9d24\",\"900\":\"#827717\",\"a100\":\"#f4ff81\",\"a200\":\"#eeff41\",\"a400\":\"#c6ff00\",\"a700\":\"#aeea00\"};\nexport var yellow = {\"50\":\"#fffde7\",\"100\":\"#fff9c4\",\"200\":\"#fff59d\",\"300\":\"#fff176\",\"400\":\"#ffee58\",\"500\":\"#ffeb3b\",\"600\":\"#fdd835\",\"700\":\"#fbc02d\",\"800\":\"#f9a825\",\"900\":\"#f57f17\",\"a100\":\"#ffff8d\",\"a200\":\"#ffff00\",\"a400\":\"#ffea00\",\"a700\":\"#ffd600\"};\nexport var amber = {\"50\":\"#fff8e1\",\"100\":\"#ffecb3\",\"200\":\"#ffe082\",\"300\":\"#ffd54f\",\"400\":\"#ffca28\",\"500\":\"#ffc107\",\"600\":\"#ffb300\",\"700\":\"#ffa000\",\"800\":\"#ff8f00\",\"900\":\"#ff6f00\",\"a100\":\"#ffe57f\",\"a200\":\"#ffd740\",\"a400\":\"#ffc400\",\"a700\":\"#ffab00\"};\nexport var orange = {\"50\":\"#fff3e0\",\"100\":\"#ffe0b2\",\"200\":\"#ffcc80\",\"300\":\"#ffb74d\",\"400\":\"#ffa726\",\"500\":\"#ff9800\",\"600\":\"#fb8c00\",\"700\":\"#f57c00\",\"800\":\"#ef6c00\",\"900\":\"#e65100\",\"a100\":\"#ffd180\",\"a200\":\"#ffab40\",\"a400\":\"#ff9100\",\"a700\":\"#ff6d00\"};\nexport var deepOrange = {\"50\":\"#fbe9e7\",\"100\":\"#ffccbc\",\"200\":\"#ffab91\",\"300\":\"#ff8a65\",\"400\":\"#ff7043\",\"500\":\"#ff5722\",\"600\":\"#f4511e\",\"700\":\"#e64a19\",\"800\":\"#d84315\",\"900\":\"#bf360c\",\"a100\":\"#ff9e80\",\"a200\":\"#ff6e40\",\"a400\":\"#ff3d00\",\"a700\":\"#dd2c00\"};\nexport var brown = {\"50\":\"#efebe9\",\"100\":\"#d7ccc8\",\"200\":\"#bcaaa4\",\"300\":\"#a1887f\",\"400\":\"#8d6e63\",\"500\":\"#795548\",\"600\":\"#6d4c41\",\"700\":\"#5d4037\",\"800\":\"#4e342e\",\"900\":\"#3e2723\"};\nexport var grey = {\"50\":\"#fafafa\",\"100\":\"#f5f5f5\",\"200\":\"#eeeeee\",\"300\":\"#e0e0e0\",\"400\":\"#bdbdbd\",\"500\":\"#9e9e9e\",\"600\":\"#757575\",\"700\":\"#616161\",\"800\":\"#424242\",\"900\":\"#212121\"};\nexport var blueGrey = {\"50\":\"#eceff1\",\"100\":\"#cfd8dc\",\"200\":\"#b0bec5\",\"300\":\"#90a4ae\",\"400\":\"#78909c\",\"500\":\"#607d8b\",\"600\":\"#546e7a\",\"700\":\"#455a64\",\"800\":\"#37474f\",\"900\":\"#263238\"};\nexport var darkText = {\"primary\":\"rgba(0, 0, 0, 0.87)\",\"secondary\":\"rgba(0, 0, 0, 0.54)\",\"disabled\":\"rgba(0, 0, 0, 0.38)\",\"dividers\":\"rgba(0, 0, 0, 0.12)\"};\nexport var lightText = {\"primary\":\"rgba(255, 255, 255, 1)\",\"secondary\":\"rgba(255, 255, 255, 0.7)\",\"disabled\":\"rgba(255, 255, 255, 0.5)\",\"dividers\":\"rgba(255, 255, 255, 0.12)\"};\nexport var darkIcons = {\"active\":\"rgba(0, 0, 0, 0.54)\",\"inactive\":\"rgba(0, 0, 0, 0.38)\"};\nexport var lightIcons = {\"active\":\"rgba(255, 255, 255, 1)\",\"inactive\":\"rgba(255, 255, 255, 0.5)\"};\nexport var white = \"#ffffff\";\nexport var black = \"#000000\";\n\nexport default {\n red: red,\n pink: pink,\n purple: purple,\n deepPurple: deepPurple,\n indigo: indigo,\n blue: blue,\n lightBlue: lightBlue,\n cyan: cyan,\n teal: teal,\n green: green,\n lightGreen: lightGreen,\n lime: lime,\n yellow: yellow,\n amber: amber,\n orange: orange,\n deepOrange: deepOrange,\n brown: brown,\n grey: grey,\n blueGrey: blueGrey,\n darkText: darkText,\n lightText: lightText,\n darkIcons: darkIcons,\n lightIcons: lightIcons,\n white: white,\n black: black\n};\n","import React from 'react';\nimport reactCSS, { handleHover } from 'reactcss';\n\nimport { Swatch } from '../common';\n\nexport var CircleSwatch = function CircleSwatch(_ref) {\n var color = _ref.color,\n onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover,\n hover = _ref.hover,\n active = _ref.active,\n circleSize = _ref.circleSize,\n circleSpacing = _ref.circleSpacing;\n\n var styles = reactCSS({\n 'default': {\n swatch: {\n width: circleSize,\n height: circleSize,\n marginRight: circleSpacing,\n marginBottom: circleSpacing,\n transform: 'scale(1)',\n transition: '100ms transform ease'\n },\n Swatch: {\n borderRadius: '50%',\n background: 'transparent',\n boxShadow: 'inset 0 0 0 ' + (circleSize / 2 + 1) + 'px ' + color,\n transition: '100ms box-shadow ease'\n }\n },\n 'hover': {\n swatch: {\n transform: 'scale(1.2)'\n }\n },\n 'active': {\n Swatch: {\n boxShadow: 'inset 0 0 0 3px ' + color\n }\n }\n }, { hover: hover, active: active });\n\n return React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(Swatch, {\n style: styles.Swatch,\n color: color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: { boxShadow: styles.Swatch.boxShadow + ', 0 0 5px ' + color }\n })\n );\n};\n\nCircleSwatch.defaultProps = {\n circleSize: 28,\n circleSpacing: 14\n};\n\nexport default handleHover(CircleSwatch);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as material from 'material-colors';\n\nimport { ColorWrap } from '../common';\nimport CircleSwatch from './CircleSwatch';\n\nexport var Circle = function Circle(_ref) {\n var width = _ref.width,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n colors = _ref.colors,\n hex = _ref.hex,\n circleSize = _ref.circleSize,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n circleSpacing = _ref.circleSpacing,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n card: {\n width: width,\n display: 'flex',\n flexWrap: 'wrap',\n marginRight: -circleSpacing,\n marginBottom: -circleSpacing\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(hexCode, e) {\n return onChange({ hex: hexCode, source: 'hex' }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.card, className: 'circle-picker ' + className },\n map(colors, function (c) {\n return React.createElement(CircleSwatch, {\n key: c,\n color: c,\n onClick: handleChange,\n onSwatchHover: onSwatchHover,\n active: hex === c.toLowerCase(),\n circleSize: circleSize,\n circleSpacing: circleSpacing\n });\n })\n );\n};\n\nCircle.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n circleSize: PropTypes.number,\n circleSpacing: PropTypes.number,\n styles: PropTypes.object\n};\n\nCircle.defaultProps = {\n width: 252,\n circleSize: 28,\n circleSpacing: 14,\n colors: [material.red['500'], material.pink['500'], material.purple['500'], material.deepPurple['500'], material.indigo['500'], material.blue['500'], material.lightBlue['500'], material.cyan['500'], material.teal['500'], material.green['500'], material.lightGreen['500'], material.lime['500'], material.yellow['500'], material.amber['500'], material.orange['500'], material.deepOrange['500'], material.brown['500'], material.blueGrey['500']],\n styles: {}\n};\n\nexport default ColorWrap(Circle);","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable react/no-did-mount-set-state, no-param-reassign */\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\nimport isUndefined from 'lodash-es/isUndefined';\n\nimport { EditableInput } from '../common';\nimport UnfoldMoreHorizontalIcon from '@icons/material/UnfoldMoreHorizontalIcon';\n\nexport var ChromeFields = function (_React$Component) {\n _inherits(ChromeFields, _React$Component);\n\n function ChromeFields(props) {\n _classCallCheck(this, ChromeFields);\n\n var _this = _possibleConstructorReturn(this, (ChromeFields.__proto__ || Object.getPrototypeOf(ChromeFields)).call(this));\n\n _this.toggleViews = function () {\n if (_this.state.view === 'hex') {\n _this.setState({ view: 'rgb' });\n } else if (_this.state.view === 'rgb') {\n _this.setState({ view: 'hsl' });\n } else if (_this.state.view === 'hsl') {\n if (_this.props.hsl.a === 1) {\n _this.setState({ view: 'hex' });\n } else {\n _this.setState({ view: 'rgb' });\n }\n }\n };\n\n _this.handleChange = function (data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && _this.props.onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n _this.props.onChange({\n r: data.r || _this.props.rgb.r,\n g: data.g || _this.props.rgb.g,\n b: data.b || _this.props.rgb.b,\n source: 'rgb'\n }, e);\n } else if (data.a) {\n if (data.a < 0) {\n data.a = 0;\n } else if (data.a > 1) {\n data.a = 1;\n }\n\n _this.props.onChange({\n h: _this.props.hsl.h,\n s: _this.props.hsl.s,\n l: _this.props.hsl.l,\n a: Math.round(data.a * 100) / 100,\n source: 'rgb'\n }, e);\n } else if (data.h || data.s || data.l) {\n // Remove any occurances of '%'.\n if (typeof data.s === 'string' && data.s.includes('%')) {\n data.s = data.s.replace('%', '');\n }\n if (typeof data.l === 'string' && data.l.includes('%')) {\n data.l = data.l.replace('%', '');\n }\n\n // We store HSL as a unit interval so we need to override the 1 input to 0.01\n if (data.s == 1) {\n data.s = 0.01;\n } else if (data.l == 1) {\n data.l = 0.01;\n }\n\n _this.props.onChange({\n h: data.h || _this.props.hsl.h,\n s: Number(!isUndefined(data.s) ? data.s : _this.props.hsl.s),\n l: Number(!isUndefined(data.l) ? data.l : _this.props.hsl.l),\n source: 'hsl'\n }, e);\n }\n };\n\n _this.showHighlight = function (e) {\n e.currentTarget.style.background = '#eee';\n };\n\n _this.hideHighlight = function (e) {\n e.currentTarget.style.background = 'transparent';\n };\n\n if (props.hsl.a !== 1 && props.view === \"hex\") {\n _this.state = {\n view: \"rgb\"\n };\n } else {\n _this.state = {\n view: props.view\n };\n }\n return _this;\n }\n\n _createClass(ChromeFields, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var styles = reactCSS({\n 'default': {\n wrap: {\n paddingTop: '16px',\n display: 'flex'\n },\n fields: {\n flex: '1',\n display: 'flex',\n marginLeft: '-6px'\n },\n field: {\n paddingLeft: '6px',\n width: '100%'\n },\n alpha: {\n paddingLeft: '6px',\n width: '100%'\n },\n toggle: {\n width: '32px',\n textAlign: 'right',\n position: 'relative'\n },\n icon: {\n marginRight: '-4px',\n marginTop: '12px',\n cursor: 'pointer',\n position: 'relative'\n },\n iconHighlight: {\n position: 'absolute',\n width: '24px',\n height: '28px',\n background: '#eee',\n borderRadius: '4px',\n top: '10px',\n left: '12px',\n display: 'none'\n },\n input: {\n fontSize: '11px',\n color: '#333',\n width: '100%',\n borderRadius: '2px',\n border: 'none',\n boxShadow: 'inset 0 0 0 1px #dadada',\n height: '21px',\n textAlign: 'center'\n },\n label: {\n textTransform: 'uppercase',\n fontSize: '11px',\n lineHeight: '11px',\n color: '#969696',\n textAlign: 'center',\n display: 'block',\n marginTop: '12px'\n },\n svg: {\n fill: '#333',\n width: '24px',\n height: '24px',\n border: '1px transparent solid',\n borderRadius: '5px'\n }\n },\n 'disableAlpha': {\n alpha: {\n display: 'none'\n }\n }\n }, this.props, this.state);\n\n var fields = void 0;\n if (this.state.view === 'hex') {\n fields = React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'hex', value: this.props.hex,\n onChange: this.handleChange\n })\n )\n );\n } else if (this.state.view === 'rgb') {\n fields = React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'r',\n value: this.props.rgb.r,\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'g',\n value: this.props.rgb.g,\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'b',\n value: this.props.rgb.b,\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'a',\n value: this.props.rgb.a,\n arrowOffset: 0.01,\n onChange: this.handleChange\n })\n )\n );\n } else if (this.state.view === 'hsl') {\n fields = React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'h',\n value: Math.round(this.props.hsl.h),\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 's',\n value: Math.round(this.props.hsl.s * 100) + '%',\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'l',\n value: Math.round(this.props.hsl.l * 100) + '%',\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'a',\n value: this.props.hsl.a,\n arrowOffset: 0.01,\n onChange: this.handleChange\n })\n )\n );\n }\n\n return React.createElement(\n 'div',\n { style: styles.wrap, className: 'flexbox-fix' },\n fields,\n React.createElement(\n 'div',\n { style: styles.toggle },\n React.createElement(\n 'div',\n { style: styles.icon, onClick: this.toggleViews, ref: function ref(icon) {\n return _this2.icon = icon;\n } },\n React.createElement(UnfoldMoreHorizontalIcon, {\n style: styles.svg,\n onMouseOver: this.showHighlight,\n onMouseEnter: this.showHighlight,\n onMouseOut: this.hideHighlight\n })\n )\n )\n );\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, state) {\n if (nextProps.hsl.a !== 1 && state.view === 'hex') {\n return { view: 'rgb' };\n }\n return null;\n }\n }]);\n\n return ChromeFields;\n}(React.Component);\n\nChromeFields.defaultProps = {\n view: \"hex\"\n};\n\nexport default ChromeFields;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var ChromePointer = function ChromePointer() {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '12px',\n height: '12px',\n borderRadius: '6px',\n transform: 'translate(-6px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default ChromePointer;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var ChromePointerCircle = function ChromePointerCircle() {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '12px',\n height: '12px',\n borderRadius: '6px',\n boxShadow: 'inset 0 0 0 1px #fff',\n transform: 'translate(-6px, -6px)'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default ChromePointerCircle;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue, Alpha, Checkboard } from '../common';\nimport ChromeFields from './ChromeFields';\nimport ChromePointer from './ChromePointer';\nimport ChromePointerCircle from './ChromePointerCircle';\n\nexport var Chrome = function Chrome(_ref) {\n var width = _ref.width,\n onChange = _ref.onChange,\n disableAlpha = _ref.disableAlpha,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hsv = _ref.hsv,\n hex = _ref.hex,\n renderers = _ref.renderers,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className,\n defaultView = _ref.defaultView;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n width: width,\n background: '#fff',\n borderRadius: '2px',\n boxShadow: '0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)',\n boxSizing: 'initial',\n fontFamily: 'Menlo'\n },\n saturation: {\n width: '100%',\n paddingBottom: '55%',\n position: 'relative',\n borderRadius: '2px 2px 0 0',\n overflow: 'hidden'\n },\n Saturation: {\n radius: '2px 2px 0 0'\n },\n body: {\n padding: '16px 16px 12px'\n },\n controls: {\n display: 'flex'\n },\n color: {\n width: '32px'\n },\n swatch: {\n marginTop: '6px',\n width: '16px',\n height: '16px',\n borderRadius: '8px',\n position: 'relative',\n overflow: 'hidden'\n },\n active: {\n absolute: '0px 0px 0px 0px',\n borderRadius: '8px',\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.1)',\n background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + rgb.a + ')',\n zIndex: '2'\n },\n toggles: {\n flex: '1'\n },\n hue: {\n height: '10px',\n position: 'relative',\n marginBottom: '8px'\n },\n Hue: {\n radius: '2px'\n },\n alpha: {\n height: '10px',\n position: 'relative'\n },\n Alpha: {\n radius: '2px'\n }\n },\n 'disableAlpha': {\n color: {\n width: '22px'\n },\n alpha: {\n display: 'none'\n },\n hue: {\n marginBottom: '0px'\n },\n swatch: {\n width: '10px',\n height: '10px',\n marginTop: '0px'\n }\n }\n }, passedStyles), { disableAlpha: disableAlpha });\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'chrome-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.saturation },\n React.createElement(Saturation, {\n style: styles.Saturation,\n hsl: hsl,\n hsv: hsv,\n pointer: ChromePointerCircle,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.body },\n React.createElement(\n 'div',\n { style: styles.controls, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.color },\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement('div', { style: styles.active }),\n React.createElement(Checkboard, { renderers: renderers })\n )\n ),\n React.createElement(\n 'div',\n { style: styles.toggles },\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n style: styles.Hue,\n hsl: hsl,\n pointer: ChromePointer,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(Alpha, {\n style: styles.Alpha,\n rgb: rgb,\n hsl: hsl,\n pointer: ChromePointer,\n renderers: renderers,\n onChange: onChange\n })\n )\n )\n ),\n React.createElement(ChromeFields, {\n rgb: rgb,\n hsl: hsl,\n hex: hex,\n view: defaultView,\n onChange: onChange,\n disableAlpha: disableAlpha\n })\n )\n );\n};\n\nChrome.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disableAlpha: PropTypes.bool,\n styles: PropTypes.object,\n defaultView: PropTypes.oneOf([\"hex\", \"rgb\", \"hsl\"])\n};\n\nChrome.defaultProps = {\n width: 225,\n disableAlpha: false,\n styles: {}\n};\n\nexport default ColorWrap(Chrome);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as colorUtils from '../../helpers/color';\n\nimport { Swatch } from '../common';\n\nexport var CompactColor = function CompactColor(_ref) {\n var color = _ref.color,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onSwatchHover = _ref.onSwatchHover,\n active = _ref.active;\n\n var styles = reactCSS({\n 'default': {\n color: {\n background: color,\n width: '15px',\n height: '15px',\n float: 'left',\n marginRight: '5px',\n marginBottom: '5px',\n position: 'relative',\n cursor: 'pointer'\n },\n dot: {\n absolute: '5px 5px 5px 5px',\n background: colorUtils.getContrastingColor(color),\n borderRadius: '50%',\n opacity: '0'\n }\n },\n 'active': {\n dot: {\n opacity: '1'\n }\n },\n 'color-#FFFFFF': {\n color: {\n boxShadow: 'inset 0 0 0 1px #ddd'\n },\n dot: {\n background: '#000'\n }\n },\n 'transparent': {\n dot: {\n background: '#000'\n }\n }\n }, { active: active, 'color-#FFFFFF': color === '#FFFFFF', 'transparent': color === 'transparent' });\n\n return React.createElement(\n Swatch,\n {\n style: styles.color,\n color: color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: { boxShadow: '0 0 4px ' + color }\n },\n React.createElement('div', { style: styles.dot })\n );\n};\n\nexport default CompactColor;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nimport { EditableInput } from '../common';\n\nexport var CompactFields = function CompactFields(_ref) {\n var hex = _ref.hex,\n rgb = _ref.rgb,\n onChange = _ref.onChange;\n\n var styles = reactCSS({\n 'default': {\n fields: {\n display: 'flex',\n paddingBottom: '6px',\n paddingRight: '5px',\n position: 'relative'\n },\n active: {\n position: 'absolute',\n top: '6px',\n left: '5px',\n height: '9px',\n width: '9px',\n background: hex\n },\n HEXwrap: {\n flex: '6',\n position: 'relative'\n },\n HEXinput: {\n width: '80%',\n padding: '0px',\n paddingLeft: '20%',\n border: 'none',\n outline: 'none',\n background: 'none',\n fontSize: '12px',\n color: '#333',\n height: '16px'\n },\n HEXlabel: {\n display: 'none'\n },\n RGBwrap: {\n flex: '3',\n position: 'relative'\n },\n RGBinput: {\n width: '70%',\n padding: '0px',\n paddingLeft: '30%',\n border: 'none',\n outline: 'none',\n background: 'none',\n fontSize: '12px',\n color: '#333',\n height: '16px'\n },\n RGBlabel: {\n position: 'absolute',\n top: '3px',\n left: '0px',\n lineHeight: '16px',\n textTransform: 'uppercase',\n fontSize: '12px',\n color: '#999'\n }\n }\n });\n\n var handleChange = function handleChange(data, e) {\n if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n source: 'rgb'\n }, e);\n } else {\n onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n }\n };\n\n return React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement('div', { style: styles.active }),\n React.createElement(EditableInput, {\n style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n label: 'hex',\n value: hex,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'r',\n value: rgb.r,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'g',\n value: rgb.g,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'b',\n value: rgb.b,\n onChange: handleChange\n })\n );\n};\n\nexport default CompactFields;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, Raised } from '../common';\nimport CompactColor from './CompactColor';\nimport CompactFields from './CompactFields';\n\nexport var Compact = function Compact(_ref) {\n var onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n colors = _ref.colors,\n hex = _ref.hex,\n rgb = _ref.rgb,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n Compact: {\n background: '#f6f6f6',\n radius: '4px'\n },\n compact: {\n paddingTop: '5px',\n paddingLeft: '5px',\n boxSizing: 'initial',\n width: '240px'\n },\n clear: {\n clear: 'both'\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else {\n onChange(data, e);\n }\n };\n\n return React.createElement(\n Raised,\n { style: styles.Compact, styles: passedStyles },\n React.createElement(\n 'div',\n { style: styles.compact, className: 'compact-picker ' + className },\n React.createElement(\n 'div',\n null,\n map(colors, function (c) {\n return React.createElement(CompactColor, {\n key: c,\n color: c,\n active: c.toLowerCase() === hex,\n onClick: handleChange,\n onSwatchHover: onSwatchHover\n });\n }),\n React.createElement('div', { style: styles.clear })\n ),\n React.createElement(CompactFields, { hex: hex, rgb: rgb, onChange: handleChange })\n )\n );\n};\n\nCompact.propTypes = {\n colors: PropTypes.arrayOf(PropTypes.string),\n styles: PropTypes.object\n};\n\nCompact.defaultProps = {\n colors: ['#4D4D4D', '#999999', '#FFFFFF', '#F44E3B', '#FE9200', '#FCDC00', '#DBDF00', '#A4DD00', '#68CCCA', '#73D8FF', '#AEA1FF', '#FDA1FF', '#333333', '#808080', '#cccccc', '#D33115', '#E27300', '#FCC400', '#B0BC00', '#68BC00', '#16A5A5', '#009CE0', '#7B64FF', '#FA28FF', '#000000', '#666666', '#B3B3B3', '#9F0500', '#C45100', '#FB9E00', '#808900', '#194D33', '#0C797D', '#0062B1', '#653294', '#AB149E'],\n styles: {}\n};\n\nexport default ColorWrap(Compact);","import React from 'react';\nimport reactCSS, { handleHover } from 'reactcss';\n\nimport { Swatch } from '../common';\n\nexport var GithubSwatch = function GithubSwatch(_ref) {\n var hover = _ref.hover,\n color = _ref.color,\n onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover;\n\n var hoverSwatch = {\n position: 'relative',\n zIndex: '2',\n outline: '2px solid #fff',\n boxShadow: '0 0 5px 2px rgba(0,0,0,0.25)'\n };\n\n var styles = reactCSS({\n 'default': {\n swatch: {\n width: '25px',\n height: '25px',\n fontSize: '0'\n }\n },\n 'hover': {\n swatch: hoverSwatch\n }\n }, { hover: hover });\n\n return React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(Swatch, {\n color: color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: hoverSwatch\n })\n );\n};\n\nexport default handleHover(GithubSwatch);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap } from '../common';\nimport GithubSwatch from './GithubSwatch';\n\nexport var Github = function Github(_ref) {\n var width = _ref.width,\n colors = _ref.colors,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n triangle = _ref.triangle,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n card: {\n width: width,\n background: '#fff',\n border: '1px solid rgba(0,0,0,0.2)',\n boxShadow: '0 3px 12px rgba(0,0,0,0.15)',\n borderRadius: '4px',\n position: 'relative',\n padding: '5px',\n display: 'flex',\n flexWrap: 'wrap'\n },\n triangle: {\n position: 'absolute',\n border: '7px solid transparent',\n borderBottomColor: '#fff'\n },\n triangleShadow: {\n position: 'absolute',\n border: '8px solid transparent',\n borderBottomColor: 'rgba(0,0,0,0.15)'\n }\n },\n 'hide-triangle': {\n triangle: {\n display: 'none'\n },\n triangleShadow: {\n display: 'none'\n }\n },\n 'top-left-triangle': {\n triangle: {\n top: '-14px',\n left: '10px'\n },\n triangleShadow: {\n top: '-16px',\n left: '9px'\n }\n },\n 'top-right-triangle': {\n triangle: {\n top: '-14px',\n right: '10px'\n },\n triangleShadow: {\n top: '-16px',\n right: '9px'\n }\n },\n 'bottom-left-triangle': {\n triangle: {\n top: '35px',\n left: '10px',\n transform: 'rotate(180deg)'\n },\n triangleShadow: {\n top: '37px',\n left: '9px',\n transform: 'rotate(180deg)'\n }\n },\n 'bottom-right-triangle': {\n triangle: {\n top: '35px',\n right: '10px',\n transform: 'rotate(180deg)'\n },\n triangleShadow: {\n top: '37px',\n right: '9px',\n transform: 'rotate(180deg)'\n }\n }\n }, passedStyles), {\n 'hide-triangle': triangle === 'hide',\n 'top-left-triangle': triangle === 'top-left',\n 'top-right-triangle': triangle === 'top-right',\n 'bottom-left-triangle': triangle === 'bottom-left',\n 'bottom-right-triangle': triangle === 'bottom-right'\n });\n\n var handleChange = function handleChange(hex, e) {\n return onChange({ hex: hex, source: 'hex' }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.card, className: 'github-picker ' + className },\n React.createElement('div', { style: styles.triangleShadow }),\n React.createElement('div', { style: styles.triangle }),\n map(colors, function (c) {\n return React.createElement(GithubSwatch, {\n color: c,\n key: c,\n onClick: handleChange,\n onSwatchHover: onSwatchHover\n });\n })\n );\n};\n\nGithub.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n colors: PropTypes.arrayOf(PropTypes.string),\n triangle: PropTypes.oneOf(['hide', 'top-left', 'top-right', 'bottom-left', 'bottom-right']),\n styles: PropTypes.object\n};\n\nGithub.defaultProps = {\n width: 200,\n colors: ['#B80000', '#DB3E00', '#FCCB00', '#008B02', '#006B76', '#1273DE', '#004DCF', '#5300EB', '#EB9694', '#FAD0C3', '#FEF3BD', '#C1E1C5', '#BEDADC', '#C4DEF6', '#BED3F3', '#D4C4FB'],\n triangle: 'top-left',\n styles: {}\n};\n\nexport default ColorWrap(Github);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var SliderPointer = function SliderPointer(_ref) {\n var direction = _ref.direction;\n\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '18px',\n height: '18px',\n borderRadius: '50%',\n transform: 'translate(-9px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n },\n 'vertical': {\n picker: {\n transform: 'translate(-3px, -9px)'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default SliderPointer;","var _extends = Object.assign || 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; };\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Hue } from '../common';\nimport HuePointer from './HuePointer';\n\nexport var HuePicker = function HuePicker(_ref) {\n var width = _ref.width,\n height = _ref.height,\n onChange = _ref.onChange,\n hsl = _ref.hsl,\n direction = _ref.direction,\n pointer = _ref.pointer,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n position: 'relative',\n width: width,\n height: height\n },\n hue: {\n radius: '2px'\n }\n }\n }, passedStyles));\n\n // Overwrite to provide pure hue color\n var handleChange = function handleChange(data) {\n return onChange({ a: 1, h: data.h, l: 0.5, s: 1 });\n };\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'hue-picker ' + className },\n React.createElement(Hue, _extends({}, styles.hue, {\n hsl: hsl,\n pointer: pointer,\n onChange: handleChange,\n direction: direction\n }))\n );\n};\n\nHuePicker.propTypes = {\n styles: PropTypes.object\n};\nHuePicker.defaultProps = {\n width: '316px',\n height: '16px',\n direction: 'horizontal',\n pointer: HuePointer,\n styles: {}\n};\n\nexport default ColorWrap(HuePicker);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, EditableInput, Raised } from '../common';\n\nexport var Material = function Material(_ref) {\n var onChange = _ref.onChange,\n hex = _ref.hex,\n rgb = _ref.rgb,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n material: {\n width: '98px',\n height: '98px',\n padding: '16px',\n fontFamily: 'Roboto'\n },\n HEXwrap: {\n position: 'relative'\n },\n HEXinput: {\n width: '100%',\n marginTop: '12px',\n fontSize: '15px',\n color: '#333',\n padding: '0px',\n border: '0px',\n borderBottom: '2px solid ' + hex,\n outline: 'none',\n height: '30px'\n },\n HEXlabel: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n fontSize: '11px',\n color: '#999999',\n textTransform: 'capitalize'\n },\n Hex: {\n style: {}\n },\n RGBwrap: {\n position: 'relative'\n },\n RGBinput: {\n width: '100%',\n marginTop: '12px',\n fontSize: '15px',\n color: '#333',\n padding: '0px',\n border: '0px',\n borderBottom: '1px solid #eee',\n outline: 'none',\n height: '30px'\n },\n RGBlabel: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n fontSize: '11px',\n color: '#999999',\n textTransform: 'capitalize'\n },\n split: {\n display: 'flex',\n marginRight: '-10px',\n paddingTop: '11px'\n },\n third: {\n flex: '1',\n paddingRight: '10px'\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n source: 'rgb'\n }, e);\n }\n };\n\n return React.createElement(\n Raised,\n { styles: passedStyles },\n React.createElement(\n 'div',\n { style: styles.material, className: 'material-picker ' + className },\n React.createElement(EditableInput, {\n style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n label: 'hex',\n value: hex,\n onChange: handleChange\n }),\n React.createElement(\n 'div',\n { style: styles.split, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.third },\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'r', value: rgb.r,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.third },\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'g',\n value: rgb.g,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.third },\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'b',\n value: rgb.b,\n onChange: handleChange\n })\n )\n )\n )\n );\n};\n\nexport default ColorWrap(Material);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\n\nimport { EditableInput } from '../common';\n\nexport var PhotoshopPicker = function PhotoshopPicker(_ref) {\n var onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsv = _ref.hsv,\n hex = _ref.hex;\n\n var styles = reactCSS({\n 'default': {\n fields: {\n paddingTop: '5px',\n paddingBottom: '9px',\n width: '80px',\n position: 'relative'\n },\n divider: {\n height: '5px'\n },\n RGBwrap: {\n position: 'relative'\n },\n RGBinput: {\n marginLeft: '40%',\n width: '40%',\n height: '18px',\n border: '1px solid #888888',\n boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC',\n marginBottom: '5px',\n fontSize: '13px',\n paddingLeft: '3px',\n marginRight: '10px'\n },\n RGBlabel: {\n left: '0px',\n top: '0px',\n width: '34px',\n textTransform: 'uppercase',\n fontSize: '13px',\n height: '18px',\n lineHeight: '22px',\n position: 'absolute'\n },\n HEXwrap: {\n position: 'relative'\n },\n HEXinput: {\n marginLeft: '20%',\n width: '80%',\n height: '18px',\n border: '1px solid #888888',\n boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC',\n marginBottom: '6px',\n fontSize: '13px',\n paddingLeft: '3px'\n },\n HEXlabel: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n width: '14px',\n textTransform: 'uppercase',\n fontSize: '13px',\n height: '18px',\n lineHeight: '22px'\n },\n fieldSymbols: {\n position: 'absolute',\n top: '5px',\n right: '-7px',\n fontSize: '13px'\n },\n symbol: {\n height: '20px',\n lineHeight: '22px',\n paddingBottom: '7px'\n }\n }\n });\n\n var handleChange = function handleChange(data, e) {\n if (data['#']) {\n color.isValidHex(data['#']) && onChange({\n hex: data['#'],\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n source: 'rgb'\n }, e);\n } else if (data.h || data.s || data.v) {\n onChange({\n h: data.h || hsv.h,\n s: data.s || hsv.s,\n v: data.v || hsv.v,\n source: 'hsv'\n }, e);\n }\n };\n\n return React.createElement(\n 'div',\n { style: styles.fields },\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'h',\n value: Math.round(hsv.h),\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 's',\n value: Math.round(hsv.s * 100),\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'v',\n value: Math.round(hsv.v * 100),\n onChange: handleChange\n }),\n React.createElement('div', { style: styles.divider }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'r',\n value: rgb.r,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'g',\n value: rgb.g,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'b',\n value: rgb.b,\n onChange: handleChange\n }),\n React.createElement('div', { style: styles.divider }),\n React.createElement(EditableInput, {\n style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n label: '#',\n value: hex.replace('#', ''),\n onChange: handleChange\n }),\n React.createElement(\n 'div',\n { style: styles.fieldSymbols },\n React.createElement(\n 'div',\n { style: styles.symbol },\n '\\xB0'\n ),\n React.createElement(\n 'div',\n { style: styles.symbol },\n '%'\n ),\n React.createElement(\n 'div',\n { style: styles.symbol },\n '%'\n )\n )\n );\n};\n\nexport default PhotoshopPicker;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopPointerCircle = function PhotoshopPointerCircle(_ref) {\n var hsl = _ref.hsl;\n\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '12px',\n height: '12px',\n borderRadius: '6px',\n boxShadow: 'inset 0 0 0 1px #fff',\n transform: 'translate(-6px, -6px)'\n }\n },\n 'black-outline': {\n picker: {\n boxShadow: 'inset 0 0 0 1px #000'\n }\n }\n }, { 'black-outline': hsl.l > 0.5 });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default PhotoshopPointerCircle;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopPointerCircle = function PhotoshopPointerCircle() {\n var styles = reactCSS({\n 'default': {\n triangle: {\n width: 0,\n height: 0,\n borderStyle: 'solid',\n borderWidth: '4px 0 4px 6px',\n borderColor: 'transparent transparent transparent #fff',\n position: 'absolute',\n top: '1px',\n left: '1px'\n },\n triangleBorder: {\n width: 0,\n height: 0,\n borderStyle: 'solid',\n borderWidth: '5px 0 5px 8px',\n borderColor: 'transparent transparent transparent #555'\n },\n\n left: {\n Extend: 'triangleBorder',\n transform: 'translate(-13px, -4px)'\n },\n leftInside: {\n Extend: 'triangle',\n transform: 'translate(-8px, -5px)'\n },\n\n right: {\n Extend: 'triangleBorder',\n transform: 'translate(20px, -14px) rotate(180deg)'\n },\n rightInside: {\n Extend: 'triangle',\n transform: 'translate(-8px, -5px)'\n }\n }\n });\n\n return React.createElement(\n 'div',\n { style: styles.pointer },\n React.createElement(\n 'div',\n { style: styles.left },\n React.createElement('div', { style: styles.leftInside })\n ),\n React.createElement(\n 'div',\n { style: styles.right },\n React.createElement('div', { style: styles.rightInside })\n )\n );\n};\n\nexport default PhotoshopPointerCircle;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopButton = function PhotoshopButton(_ref) {\n var onClick = _ref.onClick,\n label = _ref.label,\n children = _ref.children,\n active = _ref.active;\n\n var styles = reactCSS({\n 'default': {\n button: {\n backgroundImage: 'linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)',\n border: '1px solid #878787',\n borderRadius: '2px',\n height: '20px',\n boxShadow: '0 1px 0 0 #EAEAEA',\n fontSize: '14px',\n color: '#000',\n lineHeight: '20px',\n textAlign: 'center',\n marginBottom: '10px',\n cursor: 'pointer'\n }\n },\n 'active': {\n button: {\n boxShadow: '0 0 0 1px #878787'\n }\n }\n }, { active: active });\n\n return React.createElement(\n 'div',\n { style: styles.button, onClick: onClick },\n label || children\n );\n};\n\nexport default PhotoshopButton;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopPreviews = function PhotoshopPreviews(_ref) {\n var rgb = _ref.rgb,\n currentColor = _ref.currentColor;\n\n var styles = reactCSS({\n 'default': {\n swatches: {\n border: '1px solid #B3B3B3',\n borderBottom: '1px solid #F0F0F0',\n marginBottom: '2px',\n marginTop: '1px'\n },\n new: {\n height: '34px',\n background: 'rgb(' + rgb.r + ',' + rgb.g + ', ' + rgb.b + ')',\n boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000'\n },\n current: {\n height: '34px',\n background: currentColor,\n boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000'\n },\n label: {\n fontSize: '14px',\n color: '#000',\n textAlign: 'center'\n }\n }\n });\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { style: styles.label },\n 'new'\n ),\n React.createElement(\n 'div',\n { style: styles.swatches },\n React.createElement('div', { style: styles.new }),\n React.createElement('div', { style: styles.current })\n ),\n React.createElement(\n 'div',\n { style: styles.label },\n 'current'\n )\n );\n};\n\nexport default PhotoshopPreviews;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue } from '../common';\nimport PhotoshopFields from './PhotoshopFields';\nimport PhotoshopPointerCircle from './PhotoshopPointerCircle';\nimport PhotoshopPointer from './PhotoshopPointer';\nimport PhotoshopButton from './PhotoshopButton';\nimport PhotoshopPreviews from './PhotoshopPreviews';\n\nexport var Photoshop = function (_React$Component) {\n _inherits(Photoshop, _React$Component);\n\n function Photoshop(props) {\n _classCallCheck(this, Photoshop);\n\n var _this = _possibleConstructorReturn(this, (Photoshop.__proto__ || Object.getPrototypeOf(Photoshop)).call(this));\n\n _this.state = {\n currentColor: props.hex\n };\n return _this;\n }\n\n _createClass(Photoshop, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n _props$styles = _props.styles,\n passedStyles = _props$styles === undefined ? {} : _props$styles,\n _props$className = _props.className,\n className = _props$className === undefined ? '' : _props$className;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n background: '#DCDCDC',\n borderRadius: '4px',\n boxShadow: '0 0 0 1px rgba(0,0,0,.25), 0 8px 16px rgba(0,0,0,.15)',\n boxSizing: 'initial',\n width: '513px'\n },\n head: {\n backgroundImage: 'linear-gradient(-180deg, #F0F0F0 0%, #D4D4D4 100%)',\n borderBottom: '1px solid #B1B1B1',\n boxShadow: 'inset 0 1px 0 0 rgba(255,255,255,.2), inset 0 -1px 0 0 rgba(0,0,0,.02)',\n height: '23px',\n lineHeight: '24px',\n borderRadius: '4px 4px 0 0',\n fontSize: '13px',\n color: '#4D4D4D',\n textAlign: 'center'\n },\n body: {\n padding: '15px 15px 0',\n display: 'flex'\n },\n saturation: {\n width: '256px',\n height: '256px',\n position: 'relative',\n border: '2px solid #B3B3B3',\n borderBottom: '2px solid #F0F0F0',\n overflow: 'hidden'\n },\n hue: {\n position: 'relative',\n height: '256px',\n width: '19px',\n marginLeft: '10px',\n border: '2px solid #B3B3B3',\n borderBottom: '2px solid #F0F0F0'\n },\n controls: {\n width: '180px',\n marginLeft: '10px'\n },\n top: {\n display: 'flex'\n },\n previews: {\n width: '60px'\n },\n actions: {\n flex: '1',\n marginLeft: '20px'\n }\n }\n }, passedStyles));\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'photoshop-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.head },\n this.props.header\n ),\n React.createElement(\n 'div',\n { style: styles.body, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.saturation },\n React.createElement(Saturation, {\n hsl: this.props.hsl,\n hsv: this.props.hsv,\n pointer: PhotoshopPointerCircle,\n onChange: this.props.onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n direction: 'vertical',\n hsl: this.props.hsl,\n pointer: PhotoshopPointer,\n onChange: this.props.onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.controls },\n React.createElement(\n 'div',\n { style: styles.top, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.previews },\n React.createElement(PhotoshopPreviews, {\n rgb: this.props.rgb,\n currentColor: this.state.currentColor\n })\n ),\n React.createElement(\n 'div',\n { style: styles.actions },\n React.createElement(PhotoshopButton, { label: 'OK', onClick: this.props.onAccept, active: true }),\n React.createElement(PhotoshopButton, { label: 'Cancel', onClick: this.props.onCancel }),\n React.createElement(PhotoshopFields, {\n onChange: this.props.onChange,\n rgb: this.props.rgb,\n hsv: this.props.hsv,\n hex: this.props.hex\n })\n )\n )\n )\n )\n );\n }\n }]);\n\n return Photoshop;\n}(React.Component);\n\nPhotoshop.propTypes = {\n header: PropTypes.string,\n styles: PropTypes.object\n};\n\nPhotoshop.defaultProps = {\n header: 'Color Picker',\n styles: {}\n};\n\nexport default ColorWrap(Photoshop);","/* eslint-disable no-param-reassign */\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\n\nimport { EditableInput } from '../common';\n\nexport var SketchFields = function SketchFields(_ref) {\n var onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hex = _ref.hex,\n disableAlpha = _ref.disableAlpha;\n\n var styles = reactCSS({\n 'default': {\n fields: {\n display: 'flex',\n paddingTop: '4px'\n },\n single: {\n flex: '1',\n paddingLeft: '6px'\n },\n alpha: {\n flex: '1',\n paddingLeft: '6px'\n },\n double: {\n flex: '2'\n },\n input: {\n width: '80%',\n padding: '4px 10% 3px',\n border: 'none',\n boxShadow: 'inset 0 0 0 1px #ccc',\n fontSize: '11px'\n },\n label: {\n display: 'block',\n textAlign: 'center',\n fontSize: '11px',\n color: '#222',\n paddingTop: '3px',\n paddingBottom: '4px',\n textTransform: 'capitalize'\n }\n },\n 'disableAlpha': {\n alpha: {\n display: 'none'\n }\n }\n }, { disableAlpha: disableAlpha });\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n a: rgb.a,\n source: 'rgb'\n }, e);\n } else if (data.a) {\n if (data.a < 0) {\n data.a = 0;\n } else if (data.a > 100) {\n data.a = 100;\n }\n\n data.a /= 100;\n onChange({\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: data.a,\n source: 'rgb'\n }, e);\n }\n };\n\n return React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.double },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'hex',\n value: hex.replace('#', ''),\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'r',\n value: rgb.r,\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '255'\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'g',\n value: rgb.g,\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '255'\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'b',\n value: rgb.b,\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '255'\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'a',\n value: Math.round(rgb.a * 100),\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '100'\n })\n )\n );\n};\n\nexport default SketchFields;","var _extends = Object.assign || 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; };\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\n\nimport { Swatch } from '../common';\n\nexport var SketchPresetColors = function SketchPresetColors(_ref) {\n var colors = _ref.colors,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onSwatchHover = _ref.onSwatchHover;\n\n var styles = reactCSS({\n 'default': {\n colors: {\n margin: '0 -10px',\n padding: '10px 0 0 10px',\n borderTop: '1px solid #eee',\n display: 'flex',\n flexWrap: 'wrap',\n position: 'relative'\n },\n swatchWrap: {\n width: '16px',\n height: '16px',\n margin: '0 10px 10px 0'\n },\n swatch: {\n borderRadius: '3px',\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15)'\n }\n },\n 'no-presets': {\n colors: {\n display: 'none'\n }\n }\n }, {\n 'no-presets': !colors || !colors.length\n });\n\n var handleClick = function handleClick(hex, e) {\n onClick({\n hex: hex,\n source: 'hex'\n }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.colors, className: 'flexbox-fix' },\n colors.map(function (colorObjOrString) {\n var c = typeof colorObjOrString === 'string' ? { color: colorObjOrString } : colorObjOrString;\n var key = '' + c.color + (c.title || '');\n return React.createElement(\n 'div',\n { key: key, style: styles.swatchWrap },\n React.createElement(Swatch, _extends({}, c, {\n style: styles.swatch,\n onClick: handleClick,\n onHover: onSwatchHover,\n focusStyle: {\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), 0 0 4px ' + c.color\n }\n }))\n );\n })\n );\n};\n\nSketchPresetColors.propTypes = {\n colors: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n color: PropTypes.string,\n title: PropTypes.string\n })])).isRequired\n};\n\nexport default SketchPresetColors;","var _extends = Object.assign || 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; };\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue, Alpha, Checkboard } from '../common';\nimport SketchFields from './SketchFields';\nimport SketchPresetColors from './SketchPresetColors';\n\nexport var Sketch = function Sketch(_ref) {\n var width = _ref.width,\n rgb = _ref.rgb,\n hex = _ref.hex,\n hsv = _ref.hsv,\n hsl = _ref.hsl,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n disableAlpha = _ref.disableAlpha,\n presetColors = _ref.presetColors,\n renderers = _ref.renderers,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': _extends({\n picker: {\n width: width,\n padding: '10px 10px 0',\n boxSizing: 'initial',\n background: '#fff',\n borderRadius: '4px',\n boxShadow: '0 0 0 1px rgba(0,0,0,.15), 0 8px 16px rgba(0,0,0,.15)'\n },\n saturation: {\n width: '100%',\n paddingBottom: '75%',\n position: 'relative',\n overflow: 'hidden'\n },\n Saturation: {\n radius: '3px',\n shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n },\n controls: {\n display: 'flex'\n },\n sliders: {\n padding: '4px 0',\n flex: '1'\n },\n color: {\n width: '24px',\n height: '24px',\n position: 'relative',\n marginTop: '4px',\n marginLeft: '4px',\n borderRadius: '3px'\n },\n activeColor: {\n absolute: '0px 0px 0px 0px',\n borderRadius: '2px',\n background: 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + rgb.a + ')',\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n },\n hue: {\n position: 'relative',\n height: '10px',\n overflow: 'hidden'\n },\n Hue: {\n radius: '2px',\n shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n },\n\n alpha: {\n position: 'relative',\n height: '10px',\n marginTop: '4px',\n overflow: 'hidden'\n },\n Alpha: {\n radius: '2px',\n shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n }\n }, passedStyles),\n 'disableAlpha': {\n color: {\n height: '10px'\n },\n hue: {\n height: '10px'\n },\n alpha: {\n display: 'none'\n }\n }\n }, passedStyles), { disableAlpha: disableAlpha });\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'sketch-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.saturation },\n React.createElement(Saturation, {\n style: styles.Saturation,\n hsl: hsl,\n hsv: hsv,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.controls, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.sliders },\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n style: styles.Hue,\n hsl: hsl,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(Alpha, {\n style: styles.Alpha,\n rgb: rgb,\n hsl: hsl,\n renderers: renderers,\n onChange: onChange\n })\n )\n ),\n React.createElement(\n 'div',\n { style: styles.color },\n React.createElement(Checkboard, null),\n React.createElement('div', { style: styles.activeColor })\n )\n ),\n React.createElement(SketchFields, {\n rgb: rgb,\n hsl: hsl,\n hex: hex,\n onChange: onChange,\n disableAlpha: disableAlpha\n }),\n React.createElement(SketchPresetColors, {\n colors: presetColors,\n onClick: onChange,\n onSwatchHover: onSwatchHover\n })\n );\n};\n\nSketch.propTypes = {\n disableAlpha: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n styles: PropTypes.object\n};\n\nSketch.defaultProps = {\n disableAlpha: false,\n width: 200,\n styles: {},\n presetColors: ['#D0021B', '#F5A623', '#F8E71C', '#8B572A', '#7ED321', '#417505', '#BD10E0', '#9013FE', '#4A90E2', '#50E3C2', '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF']\n};\n\nexport default ColorWrap(Sketch);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var SliderSwatch = function SliderSwatch(_ref) {\n var hsl = _ref.hsl,\n offset = _ref.offset,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n active = _ref.active,\n first = _ref.first,\n last = _ref.last;\n\n var styles = reactCSS({\n 'default': {\n swatch: {\n height: '12px',\n background: 'hsl(' + hsl.h + ', 50%, ' + offset * 100 + '%)',\n cursor: 'pointer'\n }\n },\n 'first': {\n swatch: {\n borderRadius: '2px 0 0 2px'\n }\n },\n 'last': {\n swatch: {\n borderRadius: '0 2px 2px 0'\n }\n },\n 'active': {\n swatch: {\n transform: 'scaleY(1.8)',\n borderRadius: '3.6px/2px'\n }\n }\n }, { active: active, first: first, last: last });\n\n var handleClick = function handleClick(e) {\n return onClick({\n h: hsl.h,\n s: 0.5,\n l: offset,\n source: 'hsl'\n }, e);\n };\n\n return React.createElement('div', { style: styles.swatch, onClick: handleClick });\n};\n\nexport default SliderSwatch;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nimport SliderSwatch from './SliderSwatch';\n\nexport var SliderSwatches = function SliderSwatches(_ref) {\n var onClick = _ref.onClick,\n hsl = _ref.hsl;\n\n var styles = reactCSS({\n 'default': {\n swatches: {\n marginTop: '20px'\n },\n swatch: {\n boxSizing: 'border-box',\n width: '20%',\n paddingRight: '1px',\n float: 'left'\n },\n clear: {\n clear: 'both'\n }\n }\n });\n\n // Acceptible difference in floating point equality\n var epsilon = 0.1;\n\n return React.createElement(\n 'div',\n { style: styles.swatches },\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.80',\n active: Math.abs(hsl.l - 0.80) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick,\n first: true\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.65',\n active: Math.abs(hsl.l - 0.65) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.50',\n active: Math.abs(hsl.l - 0.50) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.35',\n active: Math.abs(hsl.l - 0.35) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.20',\n active: Math.abs(hsl.l - 0.20) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick,\n last: true\n })\n ),\n React.createElement('div', { style: styles.clear })\n );\n};\n\nexport default SliderSwatches;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var SliderPointer = function SliderPointer() {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '14px',\n height: '14px',\n borderRadius: '6px',\n transform: 'translate(-7px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default SliderPointer;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Hue } from '../common';\nimport SliderSwatches from './SliderSwatches';\nimport SliderPointer from './SliderPointer';\n\nexport var Slider = function Slider(_ref) {\n var hsl = _ref.hsl,\n onChange = _ref.onChange,\n pointer = _ref.pointer,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n hue: {\n height: '12px',\n position: 'relative'\n },\n Hue: {\n radius: '2px'\n }\n }\n }, passedStyles));\n\n return React.createElement(\n 'div',\n { style: styles.wrap || {}, className: 'slider-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n style: styles.Hue,\n hsl: hsl,\n pointer: pointer,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatches },\n React.createElement(SliderSwatches, { hsl: hsl, onClick: onChange })\n )\n );\n};\n\nSlider.propTypes = {\n styles: PropTypes.object\n};\nSlider.defaultProps = {\n pointer: SliderPointer,\n styles: {}\n};\n\nexport default ColorWrap(Slider);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as colorUtils from '../../helpers/color';\n\nimport { Swatch } from '../common';\nimport CheckIcon from '@icons/material/CheckIcon';\n\nexport var SwatchesColor = function SwatchesColor(_ref) {\n var color = _ref.color,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onSwatchHover = _ref.onSwatchHover,\n first = _ref.first,\n last = _ref.last,\n active = _ref.active;\n\n var styles = reactCSS({\n 'default': {\n color: {\n width: '40px',\n height: '24px',\n cursor: 'pointer',\n background: color,\n marginBottom: '1px'\n },\n check: {\n color: colorUtils.getContrastingColor(color),\n marginLeft: '8px',\n display: 'none'\n }\n },\n 'first': {\n color: {\n overflow: 'hidden',\n borderRadius: '2px 2px 0 0'\n }\n },\n 'last': {\n color: {\n overflow: 'hidden',\n borderRadius: '0 0 2px 2px'\n }\n },\n 'active': {\n check: {\n display: 'block'\n }\n },\n 'color-#FFFFFF': {\n color: {\n boxShadow: 'inset 0 0 0 1px #ddd'\n },\n check: {\n color: '#333'\n }\n },\n 'transparent': {\n check: {\n color: '#333'\n }\n }\n }, {\n first: first,\n last: last,\n active: active,\n 'color-#FFFFFF': color === '#FFFFFF',\n 'transparent': color === 'transparent'\n });\n\n return React.createElement(\n Swatch,\n {\n color: color,\n style: styles.color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: { boxShadow: '0 0 4px ' + color }\n },\n React.createElement(\n 'div',\n { style: styles.check },\n React.createElement(CheckIcon, null)\n )\n );\n};\n\nexport default SwatchesColor;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\n\nimport SwatchesColor from './SwatchesColor';\n\nexport var SwatchesGroup = function SwatchesGroup(_ref) {\n var onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover,\n group = _ref.group,\n active = _ref.active;\n\n var styles = reactCSS({\n 'default': {\n group: {\n paddingBottom: '10px',\n width: '40px',\n float: 'left',\n marginRight: '10px'\n }\n }\n });\n\n return React.createElement(\n 'div',\n { style: styles.group },\n map(group, function (color, i) {\n return React.createElement(SwatchesColor, {\n key: color,\n color: color,\n active: color.toLowerCase() === active,\n first: i === 0,\n last: i === group.length - 1,\n onClick: onClick,\n onSwatchHover: onSwatchHover\n });\n })\n );\n};\n\nexport default SwatchesGroup;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as material from 'material-colors';\n\nimport { ColorWrap, Raised } from '../common';\nimport SwatchesGroup from './SwatchesGroup';\n\nexport var Swatches = function Swatches(_ref) {\n var width = _ref.width,\n height = _ref.height,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n colors = _ref.colors,\n hex = _ref.hex,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n width: width,\n height: height\n },\n overflow: {\n height: height,\n overflowY: 'scroll'\n },\n body: {\n padding: '16px 0 6px 16px'\n },\n clear: {\n clear: 'both'\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(data, e) {\n return onChange({ hex: data, source: 'hex' }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'swatches-picker ' + className },\n React.createElement(\n Raised,\n null,\n React.createElement(\n 'div',\n { style: styles.overflow },\n React.createElement(\n 'div',\n { style: styles.body },\n map(colors, function (group) {\n return React.createElement(SwatchesGroup, {\n key: group.toString(),\n group: group,\n active: hex,\n onClick: handleChange,\n onSwatchHover: onSwatchHover\n });\n }),\n React.createElement('div', { style: styles.clear })\n )\n )\n )\n );\n};\n\nSwatches.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n colors: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),\n styles: PropTypes.object\n\n /* eslint-disable max-len */\n};Swatches.defaultProps = {\n width: 320,\n height: 240,\n colors: [[material.red['900'], material.red['700'], material.red['500'], material.red['300'], material.red['100']], [material.pink['900'], material.pink['700'], material.pink['500'], material.pink['300'], material.pink['100']], [material.purple['900'], material.purple['700'], material.purple['500'], material.purple['300'], material.purple['100']], [material.deepPurple['900'], material.deepPurple['700'], material.deepPurple['500'], material.deepPurple['300'], material.deepPurple['100']], [material.indigo['900'], material.indigo['700'], material.indigo['500'], material.indigo['300'], material.indigo['100']], [material.blue['900'], material.blue['700'], material.blue['500'], material.blue['300'], material.blue['100']], [material.lightBlue['900'], material.lightBlue['700'], material.lightBlue['500'], material.lightBlue['300'], material.lightBlue['100']], [material.cyan['900'], material.cyan['700'], material.cyan['500'], material.cyan['300'], material.cyan['100']], [material.teal['900'], material.teal['700'], material.teal['500'], material.teal['300'], material.teal['100']], ['#194D33', material.green['700'], material.green['500'], material.green['300'], material.green['100']], [material.lightGreen['900'], material.lightGreen['700'], material.lightGreen['500'], material.lightGreen['300'], material.lightGreen['100']], [material.lime['900'], material.lime['700'], material.lime['500'], material.lime['300'], material.lime['100']], [material.yellow['900'], material.yellow['700'], material.yellow['500'], material.yellow['300'], material.yellow['100']], [material.amber['900'], material.amber['700'], material.amber['500'], material.amber['300'], material.amber['100']], [material.orange['900'], material.orange['700'], material.orange['500'], material.orange['300'], material.orange['100']], [material.deepOrange['900'], material.deepOrange['700'], material.deepOrange['500'], material.deepOrange['300'], material.deepOrange['100']], [material.brown['900'], material.brown['700'], material.brown['500'], material.brown['300'], material.brown['100']], [material.blueGrey['900'], material.blueGrey['700'], material.blueGrey['500'], material.blueGrey['300'], material.blueGrey['100']], ['#000000', '#525252', '#969696', '#D9D9D9', '#FFFFFF']],\n styles: {}\n};\n\nexport default ColorWrap(Swatches);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, EditableInput, Swatch } from '../common';\n\nexport var Twitter = function Twitter(_ref) {\n var onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n hex = _ref.hex,\n colors = _ref.colors,\n width = _ref.width,\n triangle = _ref.triangle,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n card: {\n width: width,\n background: '#fff',\n border: '0 solid rgba(0,0,0,0.25)',\n boxShadow: '0 1px 4px rgba(0,0,0,0.25)',\n borderRadius: '4px',\n position: 'relative'\n },\n body: {\n padding: '15px 9px 9px 15px'\n },\n label: {\n fontSize: '18px',\n color: '#fff'\n },\n triangle: {\n width: '0px',\n height: '0px',\n borderStyle: 'solid',\n borderWidth: '0 9px 10px 9px',\n borderColor: 'transparent transparent #fff transparent',\n position: 'absolute'\n },\n triangleShadow: {\n width: '0px',\n height: '0px',\n borderStyle: 'solid',\n borderWidth: '0 9px 10px 9px',\n borderColor: 'transparent transparent rgba(0,0,0,.1) transparent',\n position: 'absolute'\n },\n hash: {\n background: '#F0F0F0',\n height: '30px',\n width: '30px',\n borderRadius: '4px 0 0 4px',\n float: 'left',\n color: '#98A1A4',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n input: {\n width: '100px',\n fontSize: '14px',\n color: '#666',\n border: '0px',\n outline: 'none',\n height: '28px',\n boxShadow: 'inset 0 0 0 1px #F0F0F0',\n boxSizing: 'content-box',\n borderRadius: '0 4px 4px 0',\n float: 'left',\n paddingLeft: '8px'\n },\n swatch: {\n width: '30px',\n height: '30px',\n float: 'left',\n borderRadius: '4px',\n margin: '0 6px 6px 0'\n },\n clear: {\n clear: 'both'\n }\n },\n 'hide-triangle': {\n triangle: {\n display: 'none'\n },\n triangleShadow: {\n display: 'none'\n }\n },\n 'top-left-triangle': {\n triangle: {\n top: '-10px',\n left: '12px'\n },\n triangleShadow: {\n top: '-11px',\n left: '12px'\n }\n },\n 'top-right-triangle': {\n triangle: {\n top: '-10px',\n right: '12px'\n },\n triangleShadow: {\n top: '-11px',\n right: '12px'\n }\n }\n }, passedStyles), {\n 'hide-triangle': triangle === 'hide',\n 'top-left-triangle': triangle === 'top-left',\n 'top-right-triangle': triangle === 'top-right'\n });\n\n var handleChange = function handleChange(hexcode, e) {\n color.isValidHex(hexcode) && onChange({\n hex: hexcode,\n source: 'hex'\n }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.card, className: 'twitter-picker ' + className },\n React.createElement('div', { style: styles.triangleShadow }),\n React.createElement('div', { style: styles.triangle }),\n React.createElement(\n 'div',\n { style: styles.body },\n map(colors, function (c, i) {\n return React.createElement(Swatch, {\n key: i,\n color: c,\n hex: c,\n style: styles.swatch,\n onClick: handleChange,\n onHover: onSwatchHover,\n focusStyle: {\n boxShadow: '0 0 4px ' + c\n }\n });\n }),\n React.createElement(\n 'div',\n { style: styles.hash },\n '#'\n ),\n React.createElement(EditableInput, {\n label: null,\n style: { input: styles.input },\n value: hex.replace('#', ''),\n onChange: handleChange\n }),\n React.createElement('div', { style: styles.clear })\n )\n );\n};\n\nTwitter.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n triangle: PropTypes.oneOf(['hide', 'top-left', 'top-right']),\n colors: PropTypes.arrayOf(PropTypes.string),\n styles: PropTypes.object\n};\n\nTwitter.defaultProps = {\n width: 276,\n colors: ['#FF6900', '#FCB900', '#7BDCB5', '#00D084', '#8ED1FC', '#0693E3', '#ABB8C3', '#EB144C', '#F78DA7', '#9900EF'],\n triangle: 'top-left',\n styles: {}\n};\n\nexport default ColorWrap(Twitter);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport PropTypes from 'prop-types';\n\nexport var GooglePointerCircle = function GooglePointerCircle(props) {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '20px',\n height: '20px',\n borderRadius: '22px',\n border: '2px #fff solid',\n transform: 'translate(-12px, -13px)',\n background: 'hsl(' + Math.round(props.hsl.h) + ', ' + Math.round(props.hsl.s * 100) + '%, ' + Math.round(props.hsl.l * 100) + '%)'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nGooglePointerCircle.propTypes = {\n hsl: PropTypes.shape({\n h: PropTypes.number,\n s: PropTypes.number,\n l: PropTypes.number,\n a: PropTypes.number\n })\n};\n\nGooglePointerCircle.defaultProps = {\n hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 }\n};\n\nexport default GooglePointerCircle;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport PropTypes from 'prop-types';\n\nexport var GooglePointer = function GooglePointer(props) {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '20px',\n height: '20px',\n borderRadius: '22px',\n transform: 'translate(-10px, -7px)',\n background: 'hsl(' + Math.round(props.hsl.h) + ', 100%, 50%)',\n border: '2px white solid'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nGooglePointer.propTypes = {\n hsl: PropTypes.shape({\n h: PropTypes.number,\n s: PropTypes.number,\n l: PropTypes.number,\n a: PropTypes.number\n })\n};\n\nGooglePointer.defaultProps = {\n hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 }\n};\n\nexport default GooglePointer;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\nimport { EditableInput } from '../common';\n\nexport var GoogleFields = function GoogleFields(_ref) {\n var onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hex = _ref.hex,\n hsv = _ref.hsv;\n\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.rgb) {\n var values = data.rgb.split(',');\n color.isvalidColorString(data.rgb, 'rgb') && onChange({\n r: values[0],\n g: values[1],\n b: values[2],\n a: 1,\n source: 'rgb'\n }, e);\n } else if (data.hsv) {\n var _values = data.hsv.split(',');\n if (color.isvalidColorString(data.hsv, 'hsv')) {\n _values[2] = _values[2].replace('%', '');\n _values[1] = _values[1].replace('%', '');\n _values[0] = _values[0].replace('°', '');\n if (_values[1] == 1) {\n _values[1] = 0.01;\n } else if (_values[2] == 1) {\n _values[2] = 0.01;\n }\n onChange({\n h: Number(_values[0]),\n s: Number(_values[1]),\n v: Number(_values[2]),\n source: 'hsv'\n }, e);\n }\n } else if (data.hsl) {\n var _values2 = data.hsl.split(',');\n if (color.isvalidColorString(data.hsl, 'hsl')) {\n _values2[2] = _values2[2].replace('%', '');\n _values2[1] = _values2[1].replace('%', '');\n _values2[0] = _values2[0].replace('°', '');\n if (hsvValue[1] == 1) {\n hsvValue[1] = 0.01;\n } else if (hsvValue[2] == 1) {\n hsvValue[2] = 0.01;\n }\n onChange({\n h: Number(_values2[0]),\n s: Number(_values2[1]),\n v: Number(_values2[2]),\n source: 'hsl'\n }, e);\n }\n }\n };\n\n var styles = reactCSS({\n 'default': {\n wrap: {\n display: 'flex',\n height: '100px',\n marginTop: '4px'\n },\n fields: {\n width: '100%'\n },\n column: {\n paddingTop: '10px',\n display: 'flex',\n justifyContent: 'space-between'\n },\n double: {\n padding: '0px 4.4px',\n boxSizing: 'border-box'\n },\n input: {\n width: '100%',\n height: '38px',\n boxSizing: 'border-box',\n padding: '4px 10% 3px',\n textAlign: 'center',\n border: '1px solid #dadce0',\n fontSize: '11px',\n textTransform: 'lowercase',\n borderRadius: '5px',\n outline: 'none',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n input2: {\n height: '38px',\n width: '100%',\n border: '1px solid #dadce0',\n boxSizing: 'border-box',\n fontSize: '11px',\n textTransform: 'lowercase',\n borderRadius: '5px',\n outline: 'none',\n paddingLeft: '10px',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n label: {\n textAlign: 'center',\n fontSize: '12px',\n background: '#fff',\n position: 'absolute',\n textTransform: 'uppercase',\n color: '#3c4043',\n width: '35px',\n top: '-6px',\n left: '0',\n right: '0',\n marginLeft: 'auto',\n marginRight: 'auto',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n label2: {\n left: '10px',\n textAlign: 'center',\n fontSize: '12px',\n background: '#fff',\n position: 'absolute',\n textTransform: 'uppercase',\n color: '#3c4043',\n width: '32px',\n top: '-6px',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n single: {\n flexGrow: '1',\n margin: '0px 4.4px'\n }\n }\n });\n\n var rgbValue = rgb.r + ', ' + rgb.g + ', ' + rgb.b;\n var hslValue = Math.round(hsl.h) + '\\xB0, ' + Math.round(hsl.s * 100) + '%, ' + Math.round(hsl.l * 100) + '%';\n var hsvValue = Math.round(hsv.h) + '\\xB0, ' + Math.round(hsv.s * 100) + '%, ' + Math.round(hsv.v * 100) + '%';\n\n return React.createElement(\n 'div',\n { style: styles.wrap, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.fields },\n React.createElement(\n 'div',\n { style: styles.double },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'hex',\n value: hex,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.column },\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input2, label: styles.label2 },\n label: 'rgb',\n value: rgbValue,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input2, label: styles.label2 },\n label: 'hsv',\n value: hsvValue,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input2, label: styles.label2 },\n label: 'hsl',\n value: hslValue,\n onChange: handleChange\n })\n )\n )\n )\n );\n};\n\nexport default GoogleFields;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue } from '../common';\nimport GooglePointerCircle from './GooglePointerCircle';\nimport GooglePointer from './GooglePointer';\nimport GoogleFields from './GoogleFields';\n\nexport var Google = function Google(_ref) {\n var width = _ref.width,\n onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hsv = _ref.hsv,\n hex = _ref.hex,\n header = _ref.header,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n width: width,\n background: '#fff',\n border: '1px solid #dfe1e5',\n boxSizing: 'initial',\n display: 'flex',\n flexWrap: 'wrap',\n borderRadius: '8px 8px 0px 0px'\n },\n head: {\n height: '57px',\n width: '100%',\n paddingTop: '16px',\n paddingBottom: '16px',\n paddingLeft: '16px',\n fontSize: '20px',\n boxSizing: 'border-box',\n fontFamily: 'Roboto-Regular,HelveticaNeue,Arial,sans-serif'\n },\n saturation: {\n width: '70%',\n padding: '0px',\n position: 'relative',\n overflow: 'hidden'\n },\n swatch: {\n width: '30%',\n height: '228px',\n padding: '0px',\n background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', 1)',\n position: 'relative',\n overflow: 'hidden'\n },\n body: {\n margin: 'auto',\n width: '95%'\n },\n controls: {\n display: 'flex',\n boxSizing: 'border-box',\n height: '52px',\n paddingTop: '22px'\n },\n color: {\n width: '32px'\n },\n hue: {\n height: '8px',\n position: 'relative',\n margin: '0px 16px 0px 16px',\n width: '100%'\n },\n Hue: {\n radius: '2px'\n }\n }\n }, passedStyles));\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'google-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.head },\n header\n ),\n React.createElement('div', { style: styles.swatch }),\n React.createElement(\n 'div',\n { style: styles.saturation },\n React.createElement(Saturation, {\n hsl: hsl,\n hsv: hsv,\n pointer: GooglePointerCircle,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.body },\n React.createElement(\n 'div',\n { style: styles.controls, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n style: styles.Hue,\n hsl: hsl,\n radius: '4px',\n pointer: GooglePointer,\n onChange: onChange\n })\n )\n ),\n React.createElement(GoogleFields, {\n rgb: rgb,\n hsl: hsl,\n hex: hex,\n hsv: hsv,\n onChange: onChange\n })\n )\n );\n};\n\nGoogle.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n styles: PropTypes.object,\n header: PropTypes.string\n\n};\n\nGoogle.defaultProps = {\n width: 652,\n styles: {},\n header: 'Color picker'\n};\n\nexport default ColorWrap(Google);","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"style-module_n9QCJ\",\"disabled\":\"style-module_QGJrg\",\"hue\":\"style-module_3kjZy\",\"pointer\":\"style-module_2gD7I\",\"colors\":\"style-module_2KK1Y\",\"colorsItem\":\"style-module_WuGPi\",\"text\":\"style-module_UNHOp\",\"textHidden\":\"style-module_1jhlc\",\"colorPicker\":\"style-module_3k10j\",\"colorBackground\":\"style-module_2e2MM\",\"transparent\":\"style-module_yYeJb\"};","import React, { useEffect, useRef, useLayoutEffect } from 'react';\nimport { SketchPicker, ChromePicker, CustomPicker } from 'react-color';\nimport OutSideClickHandler from 'react-outside-click-handler';\nimport cl from 'classnames';\nimport { Hue, EditableInput } from 'react-color/lib/components/common';\nimport style from './style.module.styl';\n\n\nconst TRANSPARENT_COLOR = 'transparent';\nconst defaultColors = [\n\t'#FFC266',\n\t'#9566FF',\n\t'#66FF69',\n\t'#FF6690',\n\t'#EE83A9',\n\t'#E9FF66',\n\t'#E866FF',\n\t'#66FFBB',\n\t'#FF8F66',\n\t'#666AFF',\n\t'#97FF66',\n\t'#FF66C3',\n\t'#66F0FF',\n\t'#FFE166',\n\tTRANSPARENT_COLOR,\n];\n\nconst Pointer = () =>
;\n\n\nconst ColorPicker = (props) => {\n\tconst {\n\t\tonChange, disabled, className, color, opened, toggle, onClose, hex, rgb, hsl, usedColors, availableColors,\n\t} = props;\n\tconst pickerRef = useRef(null);\n\tconst toggleRef = useRef(null);\n\n\tuseEffect(() => {\n\t\tif (pickerRef.current && toggleRef.current) {\n\t\t\tlet coords;\n\n\t\t\tconst toggleRect = toggleRef.current.children[0].getBoundingClientRect();\n\t\t\tconst pickerRect = pickerRef.current.getBoundingClientRect();\n\n\t\t\tconst pageY = toggleRect.top;\n\t\t\tconst pageX = toggleRect.left;\n\n\t\t\tconst spaceAtTheBottom = document.documentElement.clientHeight - pageY - pickerRect.height - 25;\n\t\t\tconst spaceAtTheTop = pageY - pickerRect.height;\n\t\t\tconst upward = spaceAtTheBottom < 0;\n\n\t\t\tif (upward) {\n\t\t\t\tcoords = { top: `${pageY - pickerRect.height + toggleRect.height - spaceAtTheTop + 25}px`, left: `${pageX + toggleRect.width + 5}px` };\n\t\t\t} else {\n\t\t\t\tcoords = { top: `${pageY + 5}px`, left: `${pageX + toggleRect.width + 5}px` };\n\t\t\t}\n\n\t\t\tpickerRef.current.style.top = coords.top;\n\t\t\tpickerRef.current.style.left = coords.left;\n\t\t\tpickerRef.current.style.opacity = 1;\n\t\t}\n\t});\n\n\treturn (\n\t\t
\n\t\t\t
{toggle}
\n\t\t\t{opened && (\n\t\t\t\t\n\t\t\t\t\t
\n\n\t\t\t\t\t\t onChange(clr.rgb)}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t(availableColors || defaultColors).map((availableColor) => (\n\t\t\t\t\t\t\t\t\t onChange(availableColor)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t{ usedColors && (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t

Used colours

\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tusedColors.map((availableColor) => (\n\t\t\t\t\t\t\t\t\t\t onChange(availableColor)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t)}\n\t\t
\n\t);\n};\n\nexport default CustomPicker(ColorPicker);\n","import React, { useState, useEffect, useRef } from 'react';\nimport cl from 'classnames';\n\nimport style from './style.module.styl';\n\nconst Dropdown = ({\n\tchildren,\n\tclassName,\n\tclassNameToggle,\n\tposition = 'bottom center',\n\topened,\n\tonToggle,\n\tcloseOnSelect = true,\n\tdataTs,\n\tdataTsButton,\n}) => {\n\tconst [first, ...positions] = position.split(' ');\n\tconst [upward, setUpward] = useState(false);\n\tconst capitalizedPoses = positions.map((p) => p.charAt(0).toUpperCase() + p.slice(1));\n\n\tconst positionClass = [first].concat(capitalizedPoses).join('');\n\tconst upwardPositionClass = first === 'bottom' ? ['top'].concat(capitalizedPoses).join('') : ['bottom'].concat(capitalizedPoses).join('');\n\n\tconst _onToggle = (toggle) => {\n\t\tif (onToggle) {\n\t\t\tonToggle(toggle);\n\t\t}\n\t\tif (!toggle) setUpward(false);\n\t};\n\n\tconst useOutsideHandler = (ref, toggler) => {\n\t\tconst handleClickOutside = (event) => {\n\t\t\tif (toggler.current && toggler.current.contains(event.target)) return;\n\t\t\tif (!ref.current.contains(event.target)) {\n\t\t\t\t_onToggle(false);\n\t\t\t}\n\t\t};\n\n\t\tuseEffect(() => {\n\t\t\tif (ref.current) {\n\t\t\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('mousedown', handleClickOutside);\n\t\t\t};\n\t\t});\n\t};\n\n\tconst menuRef = useRef(null);\n\tconst toggleRef = useRef(null);\n\n\tuseEffect(() => {\n\t\tif (menuRef.current && toggleRef.current) {\n\t\t\tconst toggleRect = toggleRef.current.children[0].getBoundingClientRect();\n\t\t\tconst menuRect = menuRef.current.getBoundingClientRect();\n\n\t\t\tconst pageY = toggleRect.top;\n\n\t\t\tconst spaceAtTheBottom = document.documentElement.clientHeight - pageY - menuRect.height - 25;\n\t\t\tif (spaceAtTheBottom < 0 && first === 'bottom') setUpward(true);\n\t\t}\n\t});\n\n\tuseOutsideHandler(menuRef, toggleRef);\n\n\treturn children\n\t\t? (\n\t\t\t
\n\t\t\t\t _onToggle(!opened)}\n\t\t\t\t\tclassName={cl(style.toggleContainer, classNameToggle)}\n\t\t\t\t\tdata-ts={dataTsButton}\n\t\t\t\t>\n\t\t\t\t\t{children[0]}\n\t\t\t\t\n\t\t\t\t{opened && (\n\t\t\t\t\t
    \n\t\t\t\t\t\t{React.Children.map(children[1].props.children, (child, i) => (\n\t\t\t\t\t\t\tchild && (\n\t\t\t\t\t\t\t\t closeOnSelect && _onToggle(false)}\n\t\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{React.cloneElement(child)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t))}\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t
\n\t\t)\n\t\t: null;\n};\n\nexport default React.memo(Dropdown);\n","// extracted by mini-css-extract-plugin\nexport default {\"radio\":\"style-module_1DUci\",\"icon\":\"style-module_3DSnE\",\"algorithmItem\":\"style-module_3GACy\",\"checked\":\"style-module_oaUS8\",\"forEditor\":\"style-module_3-VxW\",\"disabled\":\"style-module_3xVCV\",\"noLabel\":\"style-module_23nEE\",\"visuallyHidden\":\"style-module_2iu5a\",\"editorRadiobutton\":\"style-module_O0GE4\",\"myArtecRadiobutton\":\"style-module_2D-TO\"};","import React from 'react';\nimport cl from 'classnames';\n\nimport style from './style.module.styl';\n\nconst Radiobutton = ({\n\tlabel,\n\tchecked,\n\tdisabled,\n\tclassName,\n\ttheme,\n\tname,\n\tid,\n\tonClick,\n\tonClickCapture = () => { },\n\tonChange,\n\tvalue,\n\talgorithmItem = false,\n\tforeditor = false,\n}) => (\n\t<>\n\t\t {\n\t\t\t\te.stopPropagation();\n\t\t\t}}\n\t\t>\n\t\t\t\n\t\t\t
\n\t\t\t{label}\n\t\t\n\t\n);\n\nexport default Radiobutton;\n","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _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}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _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\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _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\n return obj;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nexport var keys = function keys(obj) {\n return obj === Object(obj) ? Object.keys(obj) : [];\n};\nexport var values = function values(obj) {\n return obj === Object(obj) ? Object.values(obj) : [];\n};\n\nfunction mergeDeep(target, source) {\n var output = Object.assign({}, target);\n\n if (isPlainObject(target) && isPlainObject(source)) {\n keys(source).forEach(function (key) {\n if (isPlainObject(source[key])) {\n if (!(key in target)) Object.assign(output, _defineProperty({}, key, source[key]));else output[key] = mergeDeep(target[key], source[key]);\n } else {\n Object.assign(output, _defineProperty({}, key, source[key]));\n }\n });\n }\n\n return output;\n}\n\nexport var merge = function merge(target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n return sources.reduce(function (t, s) {\n return mergeDeep(t, s);\n }, target);\n};\nexport var identity = function identity(value) {\n return value;\n};\nexport var omit = function omit(obj, keys) {\n var other = Object.assign({}, obj);\n\n if (keys) {\n for (var i = 0; i < keys.length; i++) {\n delete other[keys[i]];\n }\n }\n\n return other;\n};\nexport var isPlainObject = function isPlainObject(obj) {\n return obj === Object(obj) && !(obj instanceof Date) && !Array.isArray(obj);\n};\nexport var compact = function compact(arr) {\n return (arr || []).filter(Boolean);\n};","export var isModifier = function isModifier(key) {\n return key[0] === '&';\n};\nexport var isElement = function isElement(key) {\n return !isModifier(key);\n};","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport { keys, merge, omit, values } from './utils';\nimport { isModifier } from './filterKeys';\n\nvar camelize = function camelize(key) {\n return key.replace(/-(\\w)/g, function (m, c) {\n return c.toUpperCase();\n });\n};\n\nexport var pickDirectStyles = function pickDirectStyles(style) {\n var objectPropertiesWhitelist = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var styleKeys = keys(style);\n var result = {};\n\n for (var i = 0, l = styleKeys.length; i < l; i += 1) {\n var key = styleKeys[i];\n var isDirect = Object.prototype.toString.call(style[key]) !== '[object Object]' || // style defs\n key[0] === ':' || // pseudo selectors\n key[0] === '@' || // @media / @keyframes / @supports / @font-face\n objectPropertiesWhitelist.indexOf(key) >= 0; // whitelisted object-type properties\n\n if (isDirect) {\n result[key] = style[key];\n }\n }\n\n return result;\n};\nexport var pickNestedStyles = function pickNestedStyles(style, keysToPick) {\n var camelizedKeysToPick = keysToPick.map(camelize);\n var styleKeys = keys(style);\n var result = {};\n\n for (var i = 0, l = styleKeys.length; i < l; i += 1) {\n var key = styleKeys[i];\n\n if (keysToPick.indexOf(key) >= 0 || camelizedKeysToPick.indexOf(camelize(key)) >= 0) {\n result[key] = style[key];\n }\n }\n\n return result;\n}; // breadth-first hoisting of selected modifier style subtrees\n// does not traverse into element, :pseudo-selector or @directive subtrees\n\nexport var hoistModifierStylesRecursive = function hoistModifierStylesRecursive(style, modifierKeysToPick) {\n // hoist styles for selected modifiers on current level\n var result = merge.apply(void 0, [{}, omit(style, modifierKeysToPick)].concat(_toConsumableArray(values(pickNestedStyles(style, modifierKeysToPick))))); // traverse nested styled for ALL modifiers\n\n var modifierKeys = keys(result).filter(isModifier);\n\n for (var i = 0, l = modifierKeys.length; i < l; i += 1) {\n var key = modifierKeys[i];\n var subresult = hoistModifierStylesRecursive(result[key], modifierKeysToPick);\n\n if (modifierKeysToPick.indexOf(key) >= 0) {\n // selected modifier: hoist subresult\n delete result[key];\n result = merge({}, result, subresult);\n } else {\n // non-selected modifier: replace with subresult\n result[key] = subresult;\n }\n }\n\n return result;\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { pickDirectStyles } from './pickStyles';\n// many css-in-js libs process keyframes objects as the value for `animationName`\nvar defaultObjectPropsWhitelist = ['animationName'];\n\nvar defaultPropsDecorator = function defaultPropsDecorator(_ref) {\n var style = _ref.style,\n className = _ref.className;\n return _objectSpread(_objectSpread({}, style ? {\n style: pickDirectStyles(style, defaultObjectPropsWhitelist)\n } : {}), className ? {\n className: className\n } : {});\n};\n\nexport default defaultPropsDecorator;","import { createContext } from 'react';\nimport defaultPropsDecorator from './defaultPropsDecorator';\nexport var PropsDecoratorContext = /*#__PURE__*/createContext(defaultPropsDecorator);\nexport default PropsDecoratorContext.Provider;","import { keys } from './utils';\n\nvar coerceSelection = function coerceSelection(select) {\n if (!select) {\n return [];\n } else if (typeof select === 'string') {\n return [select];\n } else if (!Array.isArray(select)) {\n var objSelect = select; // workaround for https://github.com/facebook/flow/issues/5781\n\n return keys(select).reduce(function (acc, key) {\n return acc.concat(objSelect[key] ? [key] : []);\n }, []);\n }\n\n return select;\n};\n\nexport default coerceSelection;","import coerceSelection from './coerceSelection';\nvar EMPTY = {};\n\nvar memoize = function memoize(substyle) {\n return function (select, defaultStyle) {\n var cacheKey = defaultStyle || EMPTY;\n substyle.memoize = substyle.memoize || new WeakMap();\n var mapEntry;\n\n if (!substyle.memoize.has(cacheKey)) {\n mapEntry = {};\n substyle.memoize.set(cacheKey, mapEntry);\n } else {\n mapEntry = substyle.memoize.get(cacheKey);\n }\n\n var selectHash = coerceSelection(select).join(' ');\n return selectHash in mapEntry ? mapEntry[selectHash] : mapEntry[selectHash] = substyle(select || [], defaultStyle);\n };\n};\n\nexport default memoize;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport invariant from 'invariant';\nimport coerceSelection from './coerceSelection';\nimport defaultPropsDecorator from './defaultPropsDecorator';\nimport { isElement, isModifier } from './filterKeys';\nimport memoize from './memoize';\nimport { hoistModifierStylesRecursive, pickNestedStyles } from './pickStyles';\nimport { compact, isPlainObject, keys, merge, values } from './utils';\n\nvar guessBaseClassName = function guessBaseClassName(classNames) {\n // all class names must start with the same prefix: the component's base class name\n // which will finally go to the container element\n var firstKey = classNames && keys(classNames)[0];\n return firstKey && firstKey.split('__')[0].split('--')[0];\n};\n\nvar deriveClassNames = function deriveClassNames(className, elementKeys, modifierKeys) {\n // do not derive class names, if the user did not specify any class name\n if (!className) {\n return undefined;\n } // derive class names based using the passed modifier/element keys\n\n\n var firstClassName = className.split(' ')[0];\n var derivedClassNames = [].concat(_toConsumableArray(elementKeys.length === 0 ? modifierKeys.map(function (key) {\n return \"\".concat(firstClassName, \"--\").concat(key.substring(1));\n }) : []), _toConsumableArray(elementKeys.map(function (key) {\n return \"\".concat(firstClassName, \"__\").concat(key);\n }))); // also use the provided `className` if there is no sub-element selection\n\n return elementKeys.length === 0 ? [className].concat(_toConsumableArray(derivedClassNames)) : derivedClassNames;\n};\n\nfunction createSubstyle(_ref) {\n var style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames;\n var propsDecorator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultPropsDecorator;\n var baseClassName = className || guessBaseClassName(classNames) || (style === null || style === void 0 ? void 0 : style.className);\n var substyle = typeof style === 'function' ? style : memoize(function (select, defaultStyle) {\n var selectedKeys = coerceSelection(select);\n invariant(Array.isArray(selectedKeys), 'First parameter must be a string, an array of strings, ' + 'a plain object with boolean values, or a falsy value.');\n invariant(!defaultStyle || isPlainObject(defaultStyle), 'Optional second parameter must be a plain object.');\n var modifierKeys = selectedKeys.filter(isModifier);\n var elementKeys = selectedKeys.filter(isElement);\n var collectElementStyles = elementKeys.length > 0 ? function (fromStyle) {\n return values(pickNestedStyles(fromStyle, elementKeys));\n } : function (fromStyle) {\n return [fromStyle];\n };\n\n var collectSelectedStyles = function collectSelectedStyles() {\n var fromStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return collectElementStyles(hoistModifierStylesRecursive(fromStyle, modifierKeys));\n };\n\n var derivedClassNames = deriveClassNames(baseClassName, elementKeys, modifierKeys);\n return createSubstyle(_objectSpread(_objectSpread(_objectSpread({}, (style || defaultStyle) && {\n style: merge.apply(void 0, [{}].concat(_toConsumableArray(collectSelectedStyles(defaultStyle)), _toConsumableArray(collectSelectedStyles(style))))\n }), derivedClassNames && {\n className: derivedClassNames.join(' ')\n }), classNames && {\n classNames: classNames\n }), propsDecorator);\n });\n\n var styleProps = _objectSpread({}, typeof style === 'function' ? style : {\n style: style\n });\n\n var classNameSplit = _toConsumableArray(new Set([].concat(_toConsumableArray(styleProps.className ? styleProps.className.split(' ') : []), _toConsumableArray(baseClassName ? baseClassName.split(' ') : []))));\n\n var mappedClassNames = classNames ? compact(classNameSplit.map(function (singleClassName) {\n return classNames[singleClassName];\n })) : classNameSplit;\n var propsForSpread = propsDecorator(_objectSpread(_objectSpread({}, styleProps), mappedClassNames.length > 0 ? {\n className: mappedClassNames.join(' ')\n } : {})); // assign `style`, `className`, and/or any props added by the decorator to the return function object\n\n Object.assign(substyle, propsForSpread);\n return substyle;\n}\n\nexport default createSubstyle;","import { useContext, useMemo } from 'react';\nimport { PropsDecoratorContext } from './PropsDecoratorProvider';\nimport createSubstyle from './createSubstyle';\n\nvar useStyles = function useStyles(defaultStyle, _ref, modifiers) {\n var style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames;\n var propsDecorator = useContext(PropsDecoratorContext);\n var substyle = useMemo(function () {\n return createSubstyle({\n style: style,\n className: className,\n classNames: classNames\n }, propsDecorator);\n }, [style, className, classNames, propsDecorator]);\n return substyle(modifiers, defaultStyle);\n};\n\nexport default useStyles;","import PropsDecoratorProvider, { PropsDecoratorContext } from './PropsDecoratorProvider';\nimport createSubstyle from './createSubstyle';\nimport defaultPropsDecorator from './defaultPropsDecorator';\nimport inline from './inline';\nimport useStyles from './useStyles';\nexport { createSubstyle, PropsDecoratorProvider, PropsDecoratorContext, defaultPropsDecorator, inline };\nexport default useStyles;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar inline = function inline() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return args.reduce(function (result, arg) {\n return _objectSpread(_objectSpread(_objectSpread({}, result), typeof arg === 'function' ? arg : {}), {}, {\n style: _objectSpread(_objectSpread({}, result.style), typeof arg === 'function' ? arg.style : arg)\n });\n }, {});\n};\n\nexport default inline;","import _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Children, Component } from 'react';\nimport invariant from 'invariant';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport useStyles, { inline } from 'substyle';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\n\n// escape RegExp special characters https://stackoverflow.com/a/9310752/5142490\nvar escapeRegex = function escapeRegex(str) {\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n};\n\nvar PLACEHOLDERS = {\n id: '__id__',\n display: '__display__'\n};\n\nvar findPositionOfCapturingGroup = function findPositionOfCapturingGroup(markup, parameterName) {\n invariant(parameterName === 'id' || parameterName === 'display', \"Second arg must be either \\\"id\\\" or \\\"display\\\", got: \\\"\".concat(parameterName, \"\\\"\")); // find positions of placeholders in the markup\n\n var indexDisplay = markup.indexOf(PLACEHOLDERS.display);\n var indexId = markup.indexOf(PLACEHOLDERS.id); // set indices to null if not found\n\n if (indexDisplay < 0) indexDisplay = null;\n if (indexId < 0) indexId = null; // markup must contain one of the mandatory placeholders\n\n invariant(indexDisplay !== null || indexId !== null, \"The markup '\".concat(markup, \"' does not contain either of the placeholders '__id__' or '__display__'\"));\n\n if (indexDisplay !== null && indexId !== null) {\n // both placeholders are used, return 0 or 1 depending on the position of the requested parameter\n return parameterName === 'id' && indexId <= indexDisplay || parameterName === 'display' && indexDisplay <= indexId ? 0 : 1;\n } // just one placeholder is being used, we'll use the captured string for both parameters\n\n\n return 0;\n};\n\nvar combineRegExps = function combineRegExps(regExps) {\n var serializedRegexParser = /^\\/(.+)\\/(\\w+)?$/;\n return new RegExp(regExps.map(function (regex) {\n var _serializedRegexParse = serializedRegexParser.exec(regex.toString()),\n _serializedRegexParse2 = _slicedToArray(_serializedRegexParse, 3),\n regexString = _serializedRegexParse2[1],\n regexFlags = _serializedRegexParse2[2];\n\n invariant(!regexFlags, \"RegExp flags are not supported. Change /\".concat(regexString, \"/\").concat(regexFlags, \" into /\").concat(regexString, \"/\"));\n return \"(\".concat(regexString, \")\");\n }).join('|'), 'g');\n};\n\nvar countPlaceholders = function countPlaceholders(markup) {\n var count = 0;\n if (markup.indexOf('__id__') >= 0) count++;\n if (markup.indexOf('__display__') >= 0) count++;\n return count;\n};\n\nvar emptyFn = function emptyFn() {}; // Finds all occurrences of the markup in the value and calls the `markupIteratee` callback for each of them.\n// The optional `textIteratee` callback is called for each plain text ranges in between these markup occurrences.\n\n\nvar iterateMentionsMarkup = function iterateMentionsMarkup(value, config, markupIteratee) {\n var textIteratee = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : emptyFn;\n var regex = combineRegExps(config.map(function (c) {\n return c.regex;\n }));\n var accOffset = 2; // first is whole match, second is the for the capturing group of first regexp component\n\n var captureGroupOffsets = config.map(function (_ref) {\n var markup = _ref.markup;\n var result = accOffset; // + 1 is for the capturing group we add around each regexp component in combineRegExps\n\n accOffset += countPlaceholders(markup) + 1;\n return result;\n });\n var match;\n var start = 0;\n var currentPlainTextIndex = 0; // detect all mention markup occurrences in the value and iterate the matches\n\n while ((match = regex.exec(value)) !== null) {\n var offset = captureGroupOffsets.find(function (o) {\n return !!match[o];\n }); // eslint-disable-line no-loop-func\n\n var mentionChildIndex = captureGroupOffsets.indexOf(offset);\n var _config$mentionChildI = config[mentionChildIndex],\n markup = _config$mentionChildI.markup,\n displayTransform = _config$mentionChildI.displayTransform;\n var idPos = offset + findPositionOfCapturingGroup(markup, 'id');\n var displayPos = offset + findPositionOfCapturingGroup(markup, 'display');\n var id = match[idPos];\n var display = displayTransform(id, match[displayPos]);\n var substr = value.substring(start, match.index);\n textIteratee(substr, start, currentPlainTextIndex);\n currentPlainTextIndex += substr.length;\n markupIteratee(match[0], match.index, currentPlainTextIndex, id, display, mentionChildIndex, start);\n currentPlainTextIndex += display.length;\n start = regex.lastIndex;\n }\n\n if (start < value.length) {\n textIteratee(value.substring(start), start, currentPlainTextIndex);\n }\n};\n\nvar getPlainText = function getPlainText(value, config) {\n var result = '';\n iterateMentionsMarkup(value, config, function (match, index, plainTextIndex, id, display) {\n result += display;\n }, function (plainText) {\n result += plainText;\n });\n return result;\n};\n\n// in the marked up value string.\n// If the passed character index lies inside a mention, the value of `inMarkupCorrection` defines the\n// correction to apply:\n// - 'START' to return the index of the mention markup's first char (default)\n// - 'END' to return the index after its last char\n// - 'NULL' to return null\n\nvar mapPlainTextIndex = function mapPlainTextIndex(value, config, indexInPlainText) {\n var inMarkupCorrection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'START';\n\n if (typeof indexInPlainText !== 'number') {\n return indexInPlainText;\n }\n\n var result;\n\n var textIteratee = function textIteratee(substr, index, substrPlainTextIndex) {\n if (result !== undefined) return;\n\n if (substrPlainTextIndex + substr.length >= indexInPlainText) {\n // found the corresponding position in the current plain text range\n result = index + indexInPlainText - substrPlainTextIndex;\n }\n };\n\n var markupIteratee = function markupIteratee(markup, index, mentionPlainTextIndex, id, display, childIndex, lastMentionEndIndex) {\n if (result !== undefined) return;\n\n if (mentionPlainTextIndex + display.length > indexInPlainText) {\n // found the corresponding position inside current match,\n // return the index of the first or after the last char of the matching markup\n // depending on whether the `inMarkupCorrection`\n if (inMarkupCorrection === 'NULL') {\n result = null;\n } else {\n result = index + (inMarkupCorrection === 'END' ? markup.length : 0);\n }\n }\n };\n\n iterateMentionsMarkup(value, config, markupIteratee, textIteratee); // when a mention is at the end of the value and we want to get the caret position\n // at the end of the string, result is undefined\n\n return result === undefined ? value.length : result;\n};\n\nvar spliceString = function spliceString(str, start, end, insert) {\n return str.substring(0, start) + insert + str.substring(end);\n};\n\n// guided by the textarea text selection ranges before and after the change\n\nvar applyChangeToValue = function applyChangeToValue(value, plainTextValue, _ref, config) {\n var selectionStartBefore = _ref.selectionStartBefore,\n selectionEndBefore = _ref.selectionEndBefore,\n selectionEndAfter = _ref.selectionEndAfter;\n var oldPlainTextValue = getPlainText(value, config);\n var lengthDelta = oldPlainTextValue.length - plainTextValue.length;\n\n if (selectionStartBefore === 'undefined') {\n selectionStartBefore = selectionEndAfter + lengthDelta;\n }\n\n if (selectionEndBefore === 'undefined') {\n selectionEndBefore = selectionStartBefore;\n } // Fixes an issue with replacing combined characters for complex input. Eg like acented letters on OSX\n\n\n if (selectionStartBefore === selectionEndBefore && selectionEndBefore === selectionEndAfter && oldPlainTextValue.length === plainTextValue.length) {\n selectionStartBefore = selectionStartBefore - 1;\n } // extract the insertion from the new plain text value\n\n\n var insert = plainTextValue.slice(selectionStartBefore, selectionEndAfter); // handling for Backspace key with no range selection\n\n var spliceStart = Math.min(selectionStartBefore, selectionEndAfter);\n var spliceEnd = selectionEndBefore;\n\n if (selectionStartBefore === selectionEndAfter) {\n // handling for Delete key with no range selection\n spliceEnd = Math.max(selectionEndBefore, selectionStartBefore + lengthDelta);\n }\n\n var mappedSpliceStart = mapPlainTextIndex(value, config, spliceStart, 'START');\n var mappedSpliceEnd = mapPlainTextIndex(value, config, spliceEnd, 'END');\n var controlSpliceStart = mapPlainTextIndex(value, config, spliceStart, 'NULL');\n var controlSpliceEnd = mapPlainTextIndex(value, config, spliceEnd, 'NULL');\n var willRemoveMention = controlSpliceStart === null || controlSpliceEnd === null;\n var newValue = spliceString(value, mappedSpliceStart, mappedSpliceEnd, insert);\n\n if (!willRemoveMention) {\n // test for auto-completion changes\n var controlPlainTextValue = getPlainText(newValue, config);\n\n if (controlPlainTextValue !== plainTextValue) {\n // some auto-correction is going on\n // find start of diff\n spliceStart = 0;\n\n while (plainTextValue[spliceStart] === controlPlainTextValue[spliceStart]) {\n spliceStart++;\n } // extract auto-corrected insertion\n\n\n insert = plainTextValue.slice(spliceStart, selectionEndAfter); // find index of the unchanged remainder\n\n spliceEnd = oldPlainTextValue.lastIndexOf(plainTextValue.substring(selectionEndAfter)); // re-map the corrected indices\n\n mappedSpliceStart = mapPlainTextIndex(value, config, spliceStart, 'START');\n mappedSpliceEnd = mapPlainTextIndex(value, config, spliceEnd, 'END');\n newValue = spliceString(value, mappedSpliceStart, mappedSpliceEnd, insert);\n }\n }\n\n return newValue;\n};\n\n// returns a the index of of the first char of the mention in the plain text.\n// If indexInPlainText does not lie inside a mention, returns indexInPlainText.\n\nvar findStartOfMentionInPlainText = function findStartOfMentionInPlainText(value, config, indexInPlainText) {\n var result = indexInPlainText;\n var foundMention = false;\n\n var markupIteratee = function markupIteratee(markup, index, mentionPlainTextIndex, id, display, childIndex, lastMentionEndIndex) {\n if (mentionPlainTextIndex <= indexInPlainText && mentionPlainTextIndex + display.length > indexInPlainText) {\n result = mentionPlainTextIndex;\n foundMention = true;\n }\n };\n\n iterateMentionsMarkup(value, config, markupIteratee);\n\n if (foundMention) {\n return result;\n }\n};\n\nvar getMentions = function getMentions(value, config) {\n var mentions = [];\n iterateMentionsMarkup(value, config, function (match, index, plainTextIndex, id, display, childIndex, start) {\n mentions.push({\n id: id,\n display: display,\n childIndex: childIndex,\n index: index,\n plainTextIndex: plainTextIndex\n });\n });\n return mentions;\n};\n\nvar getSuggestionHtmlId = function getSuggestionHtmlId(prefix, id) {\n return \"\".concat(prefix, \"-\").concat(id);\n};\n\nvar countSuggestions = function countSuggestions(suggestions) {\n return Object.values(suggestions).reduce(function (acc, _ref) {\n var results = _ref.results;\n return acc + results.length;\n }, 0);\n};\n\nvar getEndOfLastMention = function getEndOfLastMention(value, config) {\n var mentions = getMentions(value, config);\n var lastMention = mentions[mentions.length - 1];\n return lastMention ? lastMention.plainTextIndex + lastMention.display.length : 0;\n};\n\nvar markupToRegex = function markupToRegex(markup) {\n var escapedMarkup = escapeRegex(markup);\n var charAfterDisplay = markup[markup.indexOf(PLACEHOLDERS.display) + PLACEHOLDERS.display.length];\n var charAfterId = markup[markup.indexOf(PLACEHOLDERS.id) + PLACEHOLDERS.id.length];\n return new RegExp(escapedMarkup.replace(PLACEHOLDERS.display, \"([^\".concat(escapeRegex(charAfterDisplay || ''), \"]+?)\")).replace(PLACEHOLDERS.id, \"([^\".concat(escapeRegex(charAfterId || ''), \"]+?)\")));\n};\n\nvar readConfigFromChildren = function readConfigFromChildren(children) {\n return Children.toArray(children).map(function (_ref) {\n var _ref$props = _ref.props,\n markup = _ref$props.markup,\n regex = _ref$props.regex,\n displayTransform = _ref$props.displayTransform;\n return {\n markup: markup,\n regex: regex ? coerceCapturingGroups(regex, markup) : markupToRegex(markup),\n displayTransform: displayTransform || function (id, display) {\n return display || id;\n }\n };\n });\n}; // make sure that the custom regex defines the correct number of capturing groups\n\n\nvar coerceCapturingGroups = function coerceCapturingGroups(regex, markup) {\n var numberOfGroups = new RegExp(regex.toString() + '|').exec('').length - 1;\n var numberOfPlaceholders = countPlaceholders(markup);\n invariant(numberOfGroups === numberOfPlaceholders, \"Number of capturing groups in RegExp \".concat(regex.toString(), \" (\").concat(numberOfGroups, \") does not match the number of placeholders in the markup '\").concat(markup, \"' (\").concat(numberOfPlaceholders, \")\"));\n return regex;\n};\n\nvar makeMentionsMarkup = function makeMentionsMarkup(markup, id, display) {\n return markup.replace(PLACEHOLDERS.id, id).replace(PLACEHOLDERS.display, display);\n};\n\n// This contains all the latin letters and the regex that match these letters with diacritics\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\nvar lettersDiacritics = [{\n base: 'A',\n letters: /(A|Ⓐ|A|À|Á|Â|Ầ|Ấ|Ẫ|Ẩ|Ã|Ā|Ă|Ằ|Ắ|Ẵ|Ẳ|Ȧ|Ǡ|Ä|Ǟ|Ả|Å|Ǻ|Ǎ|Ȁ|Ȃ|Ạ|Ậ|Ặ|Ḁ|Ą|Ⱥ|Ɐ|[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F])/g\n}, {\n base: 'AA',\n letters: /(Ꜳ|[\\uA732])/g\n}, {\n base: 'AE',\n letters: /(Æ|Ǽ|Ǣ|[\\u00C6\\u01FC\\u01E2])/g\n}, {\n base: 'AO',\n letters: /(Ꜵ|[\\uA734])/g\n}, {\n base: 'AU',\n letters: /(Ꜷ|[\\uA736])/g\n}, {\n base: 'AV',\n letters: /(Ꜹ|Ꜻ|[\\uA738\\uA73A])/g\n}, {\n base: 'AY',\n letters: /(Ꜽ|[\\uA73C])/g\n}, {\n base: 'B',\n letters: /(B|Ⓑ|B|Ḃ|Ḅ|Ḇ|Ƀ|Ƃ|Ɓ|[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181])/g\n}, {\n base: 'C',\n letters: /(C|Ⓒ|C|Ć|Ĉ|Ċ|Č|Ç|Ḉ|Ƈ|Ȼ|Ꜿ|[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E])/g\n}, {\n base: 'D',\n letters: /(D|Ⓓ|D|Ḋ|Ď|Ḍ|Ḑ|Ḓ|Ḏ|Đ|Ƌ|Ɗ|Ɖ|Ꝺ|Ð|[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\u00D0])/g\n}, {\n base: 'DZ',\n letters: /(DZ|DŽ|[\\u01F1\\u01C4])/g\n}, {\n base: 'Dz',\n letters: /(Dz|Dž|[\\u01F2\\u01C5])/g\n}, {\n base: 'E',\n letters: /(E|Ⓔ|E|È|É|Ê|Ề|Ế|Ễ|Ể|Ẽ|Ē|Ḕ|Ḗ|Ĕ|Ė|Ë|Ẻ|Ě|Ȅ|Ȇ|Ẹ|Ệ|Ȩ|Ḝ|Ę|Ḙ|Ḛ|Ɛ|Ǝ|[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E])/g\n}, {\n base: 'F',\n letters: /(F|Ⓕ|F|Ḟ|Ƒ|Ꝼ|[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B])/g\n}, {\n base: 'G',\n letters: /(G|Ⓖ|G|Ǵ|Ĝ|Ḡ|Ğ|Ġ|Ǧ|Ģ|Ǥ|Ɠ|Ꞡ|Ᵹ|Ꝿ|[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E])/g\n}, {\n base: 'H',\n letters: /(H|Ⓗ|H|Ĥ|Ḣ|Ḧ|Ȟ|Ḥ|Ḩ|Ḫ|Ħ|Ⱨ|Ⱶ|Ɥ|[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D])/g\n}, {\n base: 'I',\n letters: /(I|Ⓘ|I|Ì|Í|Î|Ĩ|Ī|Ĭ|İ|Ï|Ḯ|Ỉ|Ǐ|Ȉ|Ȋ|Ị|Į|Ḭ|Ɨ|[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197])/g\n}, {\n base: 'J',\n letters: /(J|Ⓙ|J|Ĵ|Ɉ|[\\u004A\\u24BF\\uFF2A\\u0134\\u0248])/g\n}, {\n base: 'K',\n letters: /(K|Ⓚ|K|Ḱ|Ǩ|Ḳ|Ķ|Ḵ|Ƙ|Ⱪ|Ꝁ|Ꝃ|Ꝅ|Ꞣ|[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2])/g\n}, {\n base: 'L',\n letters: /(L|Ⓛ|L|Ŀ|Ĺ|Ľ|Ḷ|Ḹ|Ļ|Ḽ|Ḻ|Ł|Ƚ|Ɫ|Ⱡ|Ꝉ|Ꝇ|Ꞁ|[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780])/g\n}, {\n base: 'LJ',\n letters: /(LJ|[\\u01C7])/g\n}, {\n base: 'Lj',\n letters: /(Lj|[\\u01C8])/g\n}, {\n base: 'M',\n letters: /(M|Ⓜ|M|Ḿ|Ṁ|Ṃ|Ɱ|Ɯ|[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C])/g\n}, {\n base: 'N',\n letters: /(N|Ⓝ|N|Ǹ|Ń|Ñ|Ṅ|Ň|Ṇ|Ņ|Ṋ|Ṉ|Ƞ|Ɲ|Ꞑ|Ꞥ|Ŋ|[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\\u014A])/g\n}, {\n base: 'NJ',\n letters: /(NJ|[\\u01CA])/g\n}, {\n base: 'Nj',\n letters: /(Nj|[\\u01CB])/g\n}, {\n base: 'O',\n letters: /(O|Ⓞ|O|Ò|Ó|Ô|Ồ|Ố|Ỗ|Ổ|Õ|Ṍ|Ȭ|Ṏ|Ō|Ṑ|Ṓ|Ŏ|Ȯ|Ȱ|Ö|Ȫ|Ỏ|Ő|Ǒ|Ȍ|Ȏ|Ơ|Ờ|Ớ|Ỡ|Ở|Ợ|Ọ|Ộ|Ǫ|Ǭ|Ø|Ǿ|Ɔ|Ɵ|Ꝋ|Ꝍ|[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C])/g\n}, {\n base: 'OE',\n letters: /(Œ|[\\u0152])/g\n}, {\n base: 'OI',\n letters: /(Ƣ|[\\u01A2])/g\n}, {\n base: 'OO',\n letters: /(Ꝏ|[\\uA74E])/g\n}, {\n base: 'OU',\n letters: /(Ȣ|[\\u0222])/g\n}, {\n base: 'P',\n letters: /(P|Ⓟ|P|Ṕ|Ṗ|Ƥ|Ᵽ|Ꝑ|Ꝓ|Ꝕ|[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754])/g\n}, {\n base: 'Q',\n letters: /(Q|Ⓠ|Q|Ꝗ|Ꝙ|Ɋ|[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A])/g\n}, {\n base: 'R',\n letters: /(R|Ⓡ|R|Ŕ|Ṙ|Ř|Ȑ|Ȓ|Ṛ|Ṝ|Ŗ|Ṟ|Ɍ|Ɽ|Ꝛ|Ꞧ|Ꞃ|[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782])/g\n}, {\n base: 'S',\n letters: /(S|Ⓢ|S|ẞ|Ś|Ṥ|Ŝ|Ṡ|Š|Ṧ|Ṣ|Ṩ|Ș|Ş|Ȿ|Ꞩ|Ꞅ|[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784])/g\n}, {\n base: 'T',\n letters: /(T|Ⓣ|T|Ṫ|Ť|Ṭ|Ț|Ţ|Ṱ|Ṯ|Ŧ|Ƭ|Ʈ|Ⱦ|Ꞇ|[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786])/g\n}, {\n base: 'TH',\n letters: /(Þ|[\\u00DE])/g\n}, {\n base: 'TZ',\n letters: /(Ꜩ|[\\uA728])/g\n}, {\n base: 'U',\n letters: /(U|Ⓤ|U|Ù|Ú|Û|Ũ|Ṹ|Ū|Ṻ|Ŭ|Ü|Ǜ|Ǘ|Ǖ|Ǚ|Ủ|Ů|Ű|Ǔ|Ȕ|Ȗ|Ư|Ừ|Ứ|Ữ|Ử|Ự|Ụ|Ṳ|Ų|Ṷ|Ṵ|Ʉ|[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244])/g\n}, {\n base: 'V',\n letters: /(V|Ⓥ|V|Ṽ|Ṿ|Ʋ|Ꝟ|Ʌ|[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245])/g\n}, {\n base: 'VY',\n letters: /(Ꝡ|[\\uA760])/g\n}, {\n base: 'W',\n letters: /(W|Ⓦ|W|Ẁ|Ẃ|Ŵ|Ẇ|Ẅ|Ẉ|Ⱳ|[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72])/g\n}, {\n base: 'X',\n letters: /(X|Ⓧ|X|Ẋ|Ẍ|[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C])/g\n}, {\n base: 'Y',\n letters: /(Y|Ⓨ|Y|Ỳ|Ý|Ŷ|Ỹ|Ȳ|Ẏ|Ÿ|Ỷ|Ỵ|Ƴ|Ɏ|Ỿ|[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE])/g\n}, {\n base: 'Z',\n letters: /(Z|Ⓩ|Z|Ź|Ẑ|Ż|Ž|Ẓ|Ẕ|Ƶ|Ȥ|Ɀ|Ⱬ|Ꝣ|[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762])/g\n}, {\n base: 'a',\n letters: /(a|ⓐ|a|ẚ|à|á|â|ầ|ấ|ẫ|ẩ|ã|ā|ă|ằ|ắ|ẵ|ẳ|ȧ|ǡ|ä|ǟ|ả|å|ǻ|ǎ|ȁ|ȃ|ạ|ậ|ặ|ḁ|ą|ⱥ|ɐ|[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250])/g\n}, {\n base: 'aa',\n letters: /(ꜳ|[\\uA733])/g\n}, {\n base: 'ae',\n letters: /(æ|ǽ|ǣ|[\\u00E6\\u01FD\\u01E3])/g\n}, {\n base: 'ao',\n letters: /(ꜵ|[\\uA735])/g\n}, {\n base: 'au',\n letters: /(ꜷ|[\\uA737])/g\n}, {\n base: 'av',\n letters: /(ꜹ|ꜻ|[\\uA739\\uA73B])/g\n}, {\n base: 'ay',\n letters: /(ꜽ|[\\uA73D])/g\n}, {\n base: 'b',\n letters: /(b|ⓑ|b|ḃ|ḅ|ḇ|ƀ|ƃ|ɓ|[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253])/g\n}, {\n base: 'c',\n letters: /(c|ⓒ|c|ć|ĉ|ċ|č|ç|ḉ|ƈ|ȼ|ꜿ|ↄ|[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184])/g\n}, {\n base: 'd',\n letters: /(d|ⓓ|d|ḋ|ď|ḍ|ḑ|ḓ|ḏ|đ|ƌ|ɖ|ɗ|ꝺ|ð|[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\\u00F0])/g\n}, {\n base: 'dz',\n letters: /(dz|dž|[\\u01F3\\u01C6])/g\n}, {\n base: 'e',\n letters: /(e|ⓔ|e|è|é|ê|ề|ế|ễ|ể|ẽ|ē|ḕ|ḗ|ĕ|ė|ë|ẻ|ě|ȅ|ȇ|ẹ|ệ|ȩ|ḝ|ę|ḙ|ḛ|ɇ|ɛ|ǝ|[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD])/g\n}, {\n base: 'f',\n letters: /(f|ⓕ|f|ḟ|ƒ|ꝼ|[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C])/g\n}, {\n base: 'g',\n letters: /(g|ⓖ|g|ǵ|ĝ|ḡ|ğ|ġ|ǧ|ģ|ǥ|ɠ|ꞡ|ᵹ|ꝿ|[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F])/g\n}, {\n base: 'h',\n letters: /(h|ⓗ|h|ĥ|ḣ|ḧ|ȟ|ḥ|ḩ|ḫ|ẖ|ħ|ⱨ|ⱶ|ɥ|[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265])/g\n}, {\n base: 'hv',\n letters: /(ƕ|[\\u0195])/g\n}, {\n base: 'i',\n letters: /(i|ⓘ|i|ì|í|î|ĩ|ī|ĭ|ï|ḯ|ỉ|ǐ|ȉ|ȋ|ị|į|ḭ|ɨ|ı|[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131])/g\n}, {\n base: 'ij',\n letters: /(ij|[\\u0133])/g\n}, {\n base: 'j',\n letters: /(j|ⓙ|j|ĵ|ǰ|ɉ|[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249])/g\n}, {\n base: 'k',\n letters: /(k|ⓚ|k|ḱ|ǩ|ḳ|ķ|ḵ|ƙ|ⱪ|ꝁ|ꝃ|ꝅ|ꞣ|[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3])/g\n}, {\n base: 'l',\n letters: /(l|ⓛ|l|ŀ|ĺ|ľ|ḷ|ḹ|ļ|ḽ|ḻ|ł|ƚ|ɫ|ⱡ|ꝉ|ꞁ|ꝇ|[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747])/g\n}, {\n base: 'lj',\n letters: /(lj|[\\u01C9])/g\n}, {\n base: 'm',\n letters: /(m|ⓜ|m|ḿ|ṁ|ṃ|ɱ|ɯ|[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F])/g\n}, {\n base: 'n',\n letters: /(n|ⓝ|n|ǹ|ń|ñ|ṅ|ň|ṇ|ņ|ṋ|ṉ|ƞ|ɲ|ʼn|ꞑ|ꞥ|ŋ|[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\\u014B])/g\n}, {\n base: 'nj',\n letters: /(nj|[\\u01CC])/g\n}, {\n base: 'o',\n letters: /(o|ⓞ|o|ò|ó|ô|ồ|ố|ỗ|ổ|õ|ṍ|ȭ|ṏ|ō|ṑ|ṓ|ŏ|ȯ|ȱ|ö|ȫ|ỏ|ő|ǒ|ȍ|ȏ|ơ|ờ|ớ|ỡ|ở|ợ|ọ|ộ|ǫ|ǭ|ø|ǿ|ɔ|ꝋ|ꝍ|ɵ|[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275])/g\n}, {\n base: 'oe',\n letters: /(œ|[\\u0153])/g\n}, {\n base: 'oi',\n letters: /(ƣ|[\\u01A3])/g\n}, {\n base: 'ou',\n letters: /(ȣ|[\\u0223])/g\n}, {\n base: 'oo',\n letters: /(ꝏ|[\\uA74F])/g\n}, {\n base: 'p',\n letters: /(p|ⓟ|p|ṕ|ṗ|ƥ|ᵽ|ꝑ|ꝓ|ꝕ|[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755])/g\n}, {\n base: 'q',\n letters: /(q|ⓠ|q|ɋ|ꝗ|ꝙ|[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759])/g\n}, {\n base: 'r',\n letters: /(r|ⓡ|r|ŕ|ṙ|ř|ȑ|ȓ|ṛ|ṝ|ŗ|ṟ|ɍ|ɽ|ꝛ|ꞧ|ꞃ|[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783])/g\n}, {\n base: 's',\n letters: /(s|ⓢ|s|ś|ṥ|ŝ|ṡ|š|ṧ|ṣ|ṩ|ș|ş|ȿ|ꞩ|ꞅ|ẛ|ſ|[\\u0073\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\\u017F])/g\n}, {\n base: 'ss',\n letters: /(ß|[\\u00DF])/g\n}, {\n base: 't',\n letters: /(t|ⓣ|t|ṫ|ẗ|ť|ṭ|ț|ţ|ṱ|ṯ|ŧ|ƭ|ʈ|ⱦ|ꞇ|[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787])/g\n}, {\n base: 'th',\n letters: /(þ|[\\u00FE])/g\n}, {\n base: 'tz',\n letters: /(ꜩ|[\\uA729])/g\n}, {\n base: 'u',\n letters: /(u|ⓤ|u|ù|ú|û|ũ|ṹ|ū|ṻ|ŭ|ü|ǜ|ǘ|ǖ|ǚ|ủ|ů|ű|ǔ|ȕ|ȗ|ư|ừ|ứ|ữ|ử|ự|ụ|ṳ|ų|ṷ|ṵ|ʉ|[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289])/g\n}, {\n base: 'v',\n letters: /(v|ⓥ|v|ṽ|ṿ|ʋ|ꝟ|ʌ|[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C])/g\n}, {\n base: 'vy',\n letters: /(ꝡ|[\\uA761])/g\n}, {\n base: 'w',\n letters: /(w|ⓦ|w|ẁ|ẃ|ŵ|ẇ|ẅ|ẘ|ẉ|ⱳ|[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73])/g\n}, {\n base: 'x',\n letters: /(x|ⓧ|x|ẋ|ẍ|[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D])/g\n}, {\n base: 'y',\n letters: /(y|ⓨ|y|ỳ|ý|ŷ|ỹ|ȳ|ẏ|ÿ|ỷ|ẙ|ỵ|ƴ|ɏ|ỿ|[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF])/g\n}, {\n base: 'z',\n letters: /(z|ⓩ|z|ź|ẑ|ż|ž|ẓ|ẕ|ƶ|ȥ|ɀ|ⱬ|ꝣ|[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763])/g\n}];\n\nvar removeAccents = function removeAccents(str) {\n var formattedStr = str;\n lettersDiacritics.forEach(function (letterDiacritics) {\n formattedStr = formattedStr.replace(letterDiacritics.letters, letterDiacritics.base);\n });\n return formattedStr;\n};\n\nvar normalizeString = function normalizeString(str) {\n return removeAccents(str).toLowerCase();\n};\n\nvar getSubstringIndex = function getSubstringIndex(str, substr, ignoreAccents) {\n if (!ignoreAccents) {\n return str.toLowerCase().indexOf(substr.toLowerCase());\n }\n\n return normalizeString(str).indexOf(normalizeString(substr));\n};\n\nvar isNumber = function isNumber(val) {\n return typeof val === 'number';\n};\n\nvar keys = function keys(obj) {\n return obj === Object(obj) ? Object.keys(obj) : [];\n};\n\nvar omit = function omit(obj) {\n var _ref;\n\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n var keys = (_ref = []).concat.apply(_ref, rest);\n\n return Object.keys(obj).reduce(function (acc, k) {\n if (obj.hasOwnProperty(k) && !keys.includes(k) && obj[k] !== undefined) {\n acc[k] = obj[k];\n }\n\n return acc;\n }, {});\n};\n\nfunction createDefaultStyle(defaultStyle, getModifiers) {\n var enhance = function enhance(ComponentToWrap) {\n var DefaultStyleEnhancer = function DefaultStyleEnhancer(_ref) {\n var style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames,\n rest = _objectWithoutProperties(_ref, [\"style\", \"className\", \"classNames\"]);\n\n var modifiers = getModifiers ? getModifiers(rest) : undefined;\n var styles = useStyles(defaultStyle, {\n style: style,\n className: className,\n classNames: classNames\n }, modifiers);\n return React.createElement(ComponentToWrap, _extends({}, rest, {\n style: styles\n }));\n };\n\n var displayName = ComponentToWrap.displayName || ComponentToWrap.name || 'Component';\n DefaultStyleEnhancer.displayName = \"defaultStyle(\".concat(displayName, \")\");\n return DefaultStyleEnhancer;\n };\n\n return enhance;\n}\n\nvar _generateComponentKey = function _generateComponentKey(usedKeys, id) {\n if (!usedKeys.hasOwnProperty(id)) {\n usedKeys[id] = 0;\n } else {\n usedKeys[id]++;\n }\n\n return id + '_' + usedKeys[id];\n};\n\nvar Highlighter =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Highlighter, _Component);\n\n function Highlighter() {\n var _this;\n\n _classCallCheck(this, Highlighter);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Highlighter).apply(this, arguments));\n\n _defineProperty(_assertThisInitialized(_this), \"setCaretElement\", function (el) {\n _this.caretElement = el;\n });\n\n _this.state = {\n left: undefined,\n top: undefined\n };\n return _this;\n }\n\n _createClass(Highlighter, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.notifyCaretPosition();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.notifyCaretPosition();\n }\n }, {\n key: \"notifyCaretPosition\",\n value: function notifyCaretPosition() {\n if (!this.caretElement) {\n return;\n }\n\n var _this$caretElement = this.caretElement,\n offsetLeft = _this$caretElement.offsetLeft,\n offsetTop = _this$caretElement.offsetTop;\n\n if (this.state.left === offsetLeft && this.state.top === offsetTop) {\n return;\n }\n\n var newPosition = {\n left: offsetLeft,\n top: offsetTop\n };\n this.setState(newPosition);\n this.props.onCaretPositionChange(newPosition);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n selectionStart = _this$props.selectionStart,\n selectionEnd = _this$props.selectionEnd,\n value = _this$props.value,\n style = _this$props.style,\n children = _this$props.children,\n containerRef = _this$props.containerRef;\n var config = readConfigFromChildren(children); // If there's a caret (i.e. no range selection), map the caret position into the marked up value\n\n var caretPositionInMarkup;\n\n if (selectionStart === selectionEnd) {\n caretPositionInMarkup = mapPlainTextIndex(value, config, selectionStart, 'START');\n }\n\n var resultComponents = [];\n var componentKeys = {}; // start by appending directly to the resultComponents\n\n var components = resultComponents;\n var substringComponentKey = 0;\n\n var textIteratee = function textIteratee(substr, index, indexInPlainText) {\n // check whether the caret element has to be inserted inside the current plain substring\n if (isNumber(caretPositionInMarkup) && caretPositionInMarkup >= index && caretPositionInMarkup <= index + substr.length) {\n // if yes, split substr at the caret position and insert the caret component\n var splitIndex = caretPositionInMarkup - index;\n components.push(_this2.renderSubstring(substr.substring(0, splitIndex), substringComponentKey)); // add all following substrings and mention components as children of the caret component\n\n components = [_this2.renderSubstring(substr.substring(splitIndex), substringComponentKey)];\n } else {\n // otherwise just push the plain text substring\n components.push(_this2.renderSubstring(substr, substringComponentKey));\n }\n\n substringComponentKey++;\n };\n\n var mentionIteratee = function mentionIteratee(markup, index, indexInPlainText, id, display, mentionChildIndex, lastMentionEndIndex) {\n // generate a component key based on the id\n var key = _generateComponentKey(componentKeys, id);\n\n components.push(_this2.getMentionComponentForMatch(id, display, mentionChildIndex, key));\n };\n\n iterateMentionsMarkup(value, config, mentionIteratee, textIteratee); // append a span containing a space, to ensure the last text line has the correct height\n\n components.push(' ');\n\n if (components !== resultComponents) {\n // if a caret component is to be rendered, add all components that followed as its children\n resultComponents.push(this.renderHighlighterCaret(components));\n }\n\n return React.createElement(\"div\", _extends({}, style, {\n ref: containerRef\n }), resultComponents);\n }\n }, {\n key: \"renderSubstring\",\n value: function renderSubstring(string, key) {\n // set substring span to hidden, so that Emojis are not shown double in Mobile Safari\n return React.createElement(\"span\", _extends({}, this.props.style('substring'), {\n key: key\n }), string);\n } // Returns a clone of the Mention child applicable for the specified type to be rendered inside the highlighter\n\n }, {\n key: \"getMentionComponentForMatch\",\n value: function getMentionComponentForMatch(id, display, mentionChildIndex, key) {\n var props = {\n id: id,\n display: display,\n key: key\n };\n var child = Children.toArray(this.props.children)[mentionChildIndex];\n return React.cloneElement(child, props);\n } // Renders an component to be inserted in the highlighter at the current caret position\n\n }, {\n key: \"renderHighlighterCaret\",\n value: function renderHighlighterCaret(children) {\n return React.createElement(\"span\", _extends({}, this.props.style('caret'), {\n ref: this.setCaretElement,\n key: \"caret\"\n }), children);\n }\n }]);\n\n return Highlighter;\n}(Component);\n\n_defineProperty(Highlighter, \"propTypes\", {\n selectionStart: PropTypes.number,\n selectionEnd: PropTypes.number,\n value: PropTypes.string.isRequired,\n onCaretPositionChange: PropTypes.func.isRequired,\n containerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n })]),\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired\n});\n\n_defineProperty(Highlighter, \"defaultProps\", {\n value: ''\n});\n\nvar styled = createDefaultStyle({\n position: 'relative',\n boxSizing: 'border-box',\n width: '100%',\n color: 'transparent',\n overflow: 'hidden',\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n border: '1px solid transparent',\n textAlign: 'start',\n '&singleLine': {\n whiteSpace: 'pre',\n wordWrap: null\n },\n substring: {\n visibility: 'hidden'\n }\n}, function (props) {\n return {\n '&singleLine': props.singleLine\n };\n});\nvar Highlighter$1 = styled(Highlighter);\n\nvar Suggestion =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Suggestion, _Component);\n\n function Suggestion() {\n _classCallCheck(this, Suggestion);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Suggestion).apply(this, arguments));\n }\n\n _createClass(Suggestion, [{\n key: \"render\",\n value: function render() {\n var rest = omit(this.props, ['style', 'classNames', 'className'], // substyle props\n keys(Suggestion.propTypes));\n return React.createElement(\"li\", _extends({\n id: this.props.id,\n role: \"option\",\n \"aria-selected\": this.props.focused\n }, rest, this.props.style), this.renderContent());\n }\n }, {\n key: \"renderContent\",\n value: function renderContent() {\n var _this$props = this.props,\n query = _this$props.query,\n renderSuggestion = _this$props.renderSuggestion,\n suggestion = _this$props.suggestion,\n index = _this$props.index,\n focused = _this$props.focused;\n var display = this.getDisplay();\n var highlightedDisplay = this.renderHighlightedDisplay(display, query);\n\n if (renderSuggestion) {\n return renderSuggestion(suggestion, query, highlightedDisplay, index, focused);\n }\n\n return highlightedDisplay;\n }\n }, {\n key: \"getDisplay\",\n value: function getDisplay() {\n var suggestion = this.props.suggestion;\n\n if (typeof suggestion === 'string') {\n return suggestion;\n }\n\n var id = suggestion.id,\n display = suggestion.display;\n\n if (id === undefined || !display) {\n return id;\n }\n\n return display;\n }\n }, {\n key: \"renderHighlightedDisplay\",\n value: function renderHighlightedDisplay(display) {\n var _this$props2 = this.props,\n ignoreAccents = _this$props2.ignoreAccents,\n query = _this$props2.query,\n style = _this$props2.style;\n var i = getSubstringIndex(display, query, ignoreAccents);\n\n if (i === -1) {\n return React.createElement(\"span\", style('display'), display);\n }\n\n return React.createElement(\"span\", style('display'), display.substring(0, i), React.createElement(\"b\", style('highlight'), display.substring(i, i + query.length)), display.substring(i + query.length));\n }\n }]);\n\n return Suggestion;\n}(Component);\n\n_defineProperty(Suggestion, \"propTypes\", {\n id: PropTypes.string.isRequired,\n query: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n ignoreAccents: PropTypes.bool,\n suggestion: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n display: PropTypes.string\n })]).isRequired,\n renderSuggestion: PropTypes.func,\n focused: PropTypes.bool\n});\n\nvar styled$1 = createDefaultStyle({\n cursor: 'pointer'\n}, function (props) {\n return {\n '&focused': props.focused\n };\n});\nvar Suggestion$1 = styled$1(Suggestion);\n\nfunction LoadingIndicator() {\n var styles = useStyles();\n var spinnerStyles = styles('spinner');\n return React.createElement(\"div\", styles, React.createElement(\"div\", spinnerStyles, React.createElement(\"div\", spinnerStyles(['element', 'element1'])), React.createElement(\"div\", spinnerStyles(['element', 'element2'])), React.createElement(\"div\", spinnerStyles(['element', 'element3'])), React.createElement(\"div\", spinnerStyles(['element', 'element4'])), React.createElement(\"div\", spinnerStyles(['element', 'element5']))));\n}\n\nvar SuggestionsOverlay =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SuggestionsOverlay, _Component);\n\n function SuggestionsOverlay() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, SuggestionsOverlay);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SuggestionsOverlay)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"handleMouseEnter\", function (index, ev) {\n if (_this.props.onMouseEnter) {\n _this.props.onMouseEnter(index);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"select\", function (suggestion, queryInfo) {\n _this.props.onSelect(suggestion, queryInfo);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setUlElement\", function (el) {\n _this.ulElement = el;\n });\n\n return _this;\n }\n\n _createClass(SuggestionsOverlay, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (!this.ulElement || this.ulElement.offsetHeight >= this.ulElement.scrollHeight || !this.props.scrollFocusedIntoView) {\n return;\n }\n\n var scrollTop = this.ulElement.scrollTop;\n\n var _this$ulElement$child = this.ulElement.children[this.props.focusIndex].getBoundingClientRect(),\n top = _this$ulElement$child.top,\n bottom = _this$ulElement$child.bottom;\n\n var _this$ulElement$getBo = this.ulElement.getBoundingClientRect(),\n topContainer = _this$ulElement$getBo.top;\n\n top = top - topContainer + scrollTop;\n bottom = bottom - topContainer + scrollTop;\n\n if (top < scrollTop) {\n this.ulElement.scrollTop = top;\n } else if (bottom > this.ulElement.offsetHeight) {\n this.ulElement.scrollTop = bottom - this.ulElement.offsetHeight;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n id = _this$props.id,\n a11ySuggestionsListLabel = _this$props.a11ySuggestionsListLabel,\n isOpened = _this$props.isOpened,\n style = _this$props.style,\n onMouseDown = _this$props.onMouseDown,\n containerRef = _this$props.containerRef,\n position = _this$props.position,\n left = _this$props.left,\n top = _this$props.top; // do not show suggestions until there is some data\n\n if (!isOpened) {\n return null;\n }\n\n return React.createElement(\"div\", _extends({}, inline({\n position: position || 'absolute',\n left: left,\n top: top\n }, style), {\n onMouseDown: onMouseDown,\n ref: containerRef\n }), React.createElement(\"ul\", _extends({\n ref: this.setUlElement,\n id: id,\n role: \"listbox\",\n \"aria-label\": a11ySuggestionsListLabel\n }, style('list')), this.renderSuggestions()), this.renderLoadingIndicator());\n }\n }, {\n key: \"renderSuggestions\",\n value: function renderSuggestions() {\n var _this2 = this;\n\n return Object.values(this.props.suggestions).reduce(function (accResults, _ref) {\n var results = _ref.results,\n queryInfo = _ref.queryInfo;\n return [].concat(_toConsumableArray(accResults), _toConsumableArray(results.map(function (result, index) {\n return _this2.renderSuggestion(result, queryInfo, accResults.length + index);\n })));\n }, []);\n }\n }, {\n key: \"renderSuggestion\",\n value: function renderSuggestion(result, queryInfo, index) {\n var _this3 = this;\n\n var isFocused = index === this.props.focusIndex;\n var childIndex = queryInfo.childIndex,\n query = queryInfo.query;\n var renderSuggestion = Children.toArray(this.props.children)[childIndex].props.renderSuggestion;\n var ignoreAccents = this.props.ignoreAccents;\n return React.createElement(Suggestion$1, {\n style: this.props.style('item'),\n key: \"\".concat(childIndex, \"-\").concat(getID(result)),\n id: getSuggestionHtmlId(this.props.id, index),\n query: query,\n index: index,\n ignoreAccents: ignoreAccents,\n renderSuggestion: renderSuggestion,\n suggestion: result,\n focused: isFocused,\n onClick: function onClick() {\n return _this3.select(result, queryInfo);\n },\n onMouseEnter: function onMouseEnter() {\n return _this3.handleMouseEnter(index);\n }\n });\n }\n }, {\n key: \"renderLoadingIndicator\",\n value: function renderLoadingIndicator() {\n if (!this.props.isLoading) {\n return;\n }\n\n return React.createElement(LoadingIndicator, {\n style: this.props.style('loadingIndicator')\n });\n }\n }]);\n\n return SuggestionsOverlay;\n}(Component);\n\n_defineProperty(SuggestionsOverlay, \"propTypes\", {\n id: PropTypes.string.isRequired,\n suggestions: PropTypes.object.isRequired,\n a11ySuggestionsListLabel: PropTypes.string,\n focusIndex: PropTypes.number,\n position: PropTypes.string,\n left: PropTypes.number,\n top: PropTypes.number,\n scrollFocusedIntoView: PropTypes.bool,\n isLoading: PropTypes.bool,\n isOpened: PropTypes.bool.isRequired,\n onSelect: PropTypes.func,\n ignoreAccents: PropTypes.bool,\n containerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n })]),\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired\n});\n\n_defineProperty(SuggestionsOverlay, \"defaultProps\", {\n suggestions: {},\n onSelect: function onSelect() {\n return null;\n }\n});\n\nvar getID = function getID(suggestion) {\n if (typeof suggestion === 'string') {\n return suggestion;\n }\n\n return suggestion.id;\n};\n\nvar styled$2 = createDefaultStyle({\n zIndex: 1,\n backgroundColor: 'white',\n marginTop: 14,\n minWidth: 100,\n list: {\n margin: 0,\n padding: 0,\n listStyleType: 'none'\n }\n});\nvar SuggestionsOverlay$1 = styled$2(SuggestionsOverlay);\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar makeTriggerRegex = function makeTriggerRegex(trigger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (trigger instanceof RegExp) {\n return trigger;\n } else {\n var allowSpaceInQuery = options.allowSpaceInQuery;\n var escapedTriggerChar = escapeRegex(trigger); // first capture group is the part to be replaced on completion\n // second capture group is for extracting the search query\n\n return new RegExp(\"(?:^|\\\\s)(\".concat(escapedTriggerChar, \"([^\").concat(allowSpaceInQuery ? '' : '\\\\s').concat(escapedTriggerChar, \"]*))$\"));\n }\n};\n\nvar getDataProvider = function getDataProvider(data, ignoreAccents) {\n if (data instanceof Array) {\n // if data is an array, create a function to query that\n return function (query, callback) {\n var results = [];\n\n for (var i = 0, l = data.length; i < l; ++i) {\n var display = data[i].display || data[i].id;\n\n if (getSubstringIndex(display, query, ignoreAccents) >= 0) {\n results.push(data[i]);\n }\n }\n\n return results;\n };\n } else {\n // expect data to be a query function\n return data;\n }\n};\n\nvar KEY = {\n TAB: 9,\n RETURN: 13,\n ESC: 27,\n UP: 38,\n DOWN: 40\n};\nvar isComposing = false;\nvar propTypes = {\n /**\n * If set to `true` a regular text input element will be rendered\n * instead of a textarea\n */\n singleLine: PropTypes.bool,\n allowSpaceInQuery: PropTypes.bool,\n allowSuggestionsAboveCursor: PropTypes.bool,\n ignoreAccents: PropTypes.bool,\n a11ySuggestionsListLabel: PropTypes.string,\n value: PropTypes.string,\n onKeyDown: PropTypes.func,\n onSelect: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n suggestionsPortalHost: typeof Element === 'undefined' ? PropTypes.any : PropTypes.PropTypes.instanceOf(Element),\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n })]),\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired\n};\n\nvar MentionsInput =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(MentionsInput, _React$Component);\n\n function MentionsInput(_props) {\n var _this;\n\n _classCallCheck(this, MentionsInput);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MentionsInput).call(this, _props));\n\n _defineProperty(_assertThisInitialized(_this), \"setContainerElement\", function (el) {\n _this.containerElement = el;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getInputProps\", function () {\n var _this$props = _this.props,\n readOnly = _this$props.readOnly,\n disabled = _this$props.disabled,\n style = _this$props.style; // pass all props that neither we, nor substyle, consume through to the input control\n\n var props = omit(_this.props, ['style', 'classNames', 'className'], // substyle props\n keys(propTypes));\n return _objectSpread({}, props, {}, style('input'), {\n value: _this.getPlainText()\n }, !readOnly && !disabled && {\n onChange: _this.handleChange,\n onSelect: _this.handleSelect,\n onKeyDown: _this.handleKeyDown,\n onBlur: _this.handleBlur,\n onCompositionStart: _this.handleCompositionStart,\n onCompositionEnd: _this.handleCompositionEnd,\n onScroll: _this.updateHighlighterScroll\n }, {}, _this.isOpened() && {\n role: 'combobox',\n 'aria-controls': _this.uuidSuggestionsOverlay,\n 'aria-expanded': true,\n 'aria-autocomplete': 'list',\n 'aria-haspopup': 'listbox',\n 'aria-activedescendant': getSuggestionHtmlId(_this.uuidSuggestionsOverlay, _this.state.focusIndex)\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderControl\", function () {\n var _this$props2 = _this.props,\n singleLine = _this$props2.singleLine,\n style = _this$props2.style;\n\n var inputProps = _this.getInputProps();\n\n return React.createElement(\"div\", style('control'), _this.renderHighlighter(), singleLine ? _this.renderInput(inputProps) : _this.renderTextarea(inputProps));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderInput\", function (props) {\n return React.createElement(\"input\", _extends({\n type: \"text\",\n ref: _this.setInputRef\n }, props));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderTextarea\", function (props) {\n return React.createElement(\"textarea\", _extends({\n ref: _this.setInputRef\n }, props));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setInputRef\", function (el) {\n _this.inputElement = el;\n var inputRef = _this.props.inputRef;\n\n if (typeof inputRef === 'function') {\n inputRef(el);\n } else if (inputRef) {\n inputRef.current = el;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setSuggestionsElement\", function (el) {\n _this.suggestionsElement = el;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderSuggestionsOverlay\", function () {\n if (!isNumber(_this.state.selectionStart)) {\n // do not show suggestions when the input does not have the focus\n return null;\n }\n\n var _this$state$suggestio = _this.state.suggestionsPosition,\n position = _this$state$suggestio.position,\n left = _this$state$suggestio.left,\n top = _this$state$suggestio.top;\n var suggestionsNode = React.createElement(SuggestionsOverlay$1, {\n id: _this.uuidSuggestionsOverlay,\n style: _this.props.style('suggestions'),\n position: position,\n left: left,\n top: top,\n focusIndex: _this.state.focusIndex,\n scrollFocusedIntoView: _this.state.scrollFocusedIntoView,\n containerRef: _this.setSuggestionsElement,\n suggestions: _this.state.suggestions,\n onSelect: _this.addMention,\n onMouseDown: _this.handleSuggestionsMouseDown,\n onMouseEnter: _this.handleSuggestionsMouseEnter,\n isLoading: _this.isLoading(),\n isOpened: _this.isOpened(),\n ignoreAccents: _this.props.ignoreAccents,\n a11ySuggestionsListLabel: _this.props.a11ySuggestionsListLabel\n }, _this.props.children);\n\n if (_this.props.suggestionsPortalHost) {\n return ReactDOM.createPortal(suggestionsNode, _this.props.suggestionsPortalHost);\n } else {\n return suggestionsNode;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderHighlighter\", function () {\n var _this$state = _this.state,\n selectionStart = _this$state.selectionStart,\n selectionEnd = _this$state.selectionEnd;\n var _this$props3 = _this.props,\n singleLine = _this$props3.singleLine,\n children = _this$props3.children,\n value = _this$props3.value,\n style = _this$props3.style;\n return React.createElement(Highlighter$1, {\n containerRef: _this.setHighlighterElement,\n style: style('highlighter'),\n value: value,\n singleLine: singleLine,\n selectionStart: selectionStart,\n selectionEnd: selectionEnd,\n onCaretPositionChange: _this.handleCaretPositionChange\n }, children);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setHighlighterElement\", function (el) {\n _this.highlighterElement = el;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleCaretPositionChange\", function (position) {\n _this.setState({\n caretPosition: position\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getPlainText\", function () {\n return getPlainText(_this.props.value || '', readConfigFromChildren(_this.props.children));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"executeOnChange\", function (event) {\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\n if (_this.props.onChange) {\n var _this$props4;\n\n return (_this$props4 = _this.props).onChange.apply(_this$props4, [event].concat(args));\n }\n\n if (_this.props.valueLink) {\n var _this$props$valueLink;\n\n return (_this$props$valueLink = _this.props.valueLink).requestChange.apply(_this$props$valueLink, [event.target.value].concat(args));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleChange\", function (ev) {\n isComposing = false; // if we are inside iframe, we need to find activeElement within its contentDocument\n\n var currentDocument = document.activeElement && document.activeElement.contentDocument || document;\n\n if (currentDocument.activeElement !== ev.target) {\n // fix an IE bug (blur from empty input element with placeholder attribute trigger \"input\" event)\n return;\n }\n\n var value = _this.props.value || '';\n var config = readConfigFromChildren(_this.props.children);\n var newPlainTextValue = ev.target.value; // Derive the new value to set by applying the local change in the textarea's plain text\n\n var newValue = applyChangeToValue(value, newPlainTextValue, {\n selectionStartBefore: _this.state.selectionStart,\n selectionEndBefore: _this.state.selectionEnd,\n selectionEndAfter: ev.target.selectionEnd\n }, config); // In case a mention is deleted, also adjust the new plain text value\n\n newPlainTextValue = getPlainText(newValue, config); // Save current selection after change to be able to restore caret position after rerendering\n\n var selectionStart = ev.target.selectionStart;\n var selectionEnd = ev.target.selectionEnd;\n var setSelectionAfterMentionChange = false; // Adjust selection range in case a mention will be deleted by the characters outside of the\n // selection range that are automatically deleted\n\n var startOfMention = findStartOfMentionInPlainText(value, config, selectionStart);\n\n if (startOfMention !== undefined && _this.state.selectionEnd > startOfMention) {\n // only if a deletion has taken place\n selectionStart = startOfMention;\n selectionEnd = selectionStart;\n setSelectionAfterMentionChange = true;\n }\n\n _this.setState({\n selectionStart: selectionStart,\n selectionEnd: selectionEnd,\n setSelectionAfterMentionChange: setSelectionAfterMentionChange\n });\n\n var mentions = getMentions(newValue, config); // Propagate change\n // let handleChange = this.getOnChange(this.props) || emptyFunction;\n\n var eventMock = {\n target: {\n value: newValue\n }\n }; // this.props.onChange.call(this, eventMock, newValue, newPlainTextValue, mentions);\n\n _this.executeOnChange(eventMock, newValue, newPlainTextValue, mentions);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleSelect\", function (ev) {\n // keep track of selection range / caret position\n _this.setState({\n selectionStart: ev.target.selectionStart,\n selectionEnd: ev.target.selectionEnd\n }); // do nothing while a IME composition session is active\n\n\n if (isComposing) return; // refresh suggestions queries\n\n var el = _this.inputElement;\n\n if (ev.target.selectionStart === ev.target.selectionEnd) {\n _this.updateMentionsQueries(el.value, ev.target.selectionStart);\n } else {\n _this.clearSuggestions();\n } // sync highlighters scroll position\n\n\n _this.updateHighlighterScroll();\n\n _this.props.onSelect(ev);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleKeyDown\", function (ev) {\n // do not intercept key events if the suggestions overlay is not shown\n var suggestionsCount = countSuggestions(_this.state.suggestions);\n\n if (suggestionsCount === 0 || !_this.suggestionsElement) {\n _this.props.onKeyDown(ev);\n\n return;\n }\n\n if (Object.values(KEY).indexOf(ev.keyCode) >= 0) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n switch (ev.keyCode) {\n case KEY.ESC:\n {\n _this.clearSuggestions();\n\n return;\n }\n\n case KEY.DOWN:\n {\n _this.shiftFocus(+1);\n\n return;\n }\n\n case KEY.UP:\n {\n _this.shiftFocus(-1);\n\n return;\n }\n\n case KEY.RETURN:\n {\n _this.selectFocused();\n\n return;\n }\n\n case KEY.TAB:\n {\n _this.selectFocused();\n\n return;\n }\n\n default:\n {\n return;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"shiftFocus\", function (delta) {\n var suggestionsCount = countSuggestions(_this.state.suggestions);\n\n _this.setState({\n focusIndex: (suggestionsCount + _this.state.focusIndex + delta) % suggestionsCount,\n scrollFocusedIntoView: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectFocused\", function () {\n var _this$state2 = _this.state,\n suggestions = _this$state2.suggestions,\n focusIndex = _this$state2.focusIndex;\n var _Object$values$reduce = Object.values(suggestions).reduce(function (acc, _ref) {\n var results = _ref.results,\n queryInfo = _ref.queryInfo;\n return [].concat(_toConsumableArray(acc), _toConsumableArray(results.map(function (result) {\n return {\n result: result,\n queryInfo: queryInfo\n };\n })));\n }, [])[focusIndex],\n result = _Object$values$reduce.result,\n queryInfo = _Object$values$reduce.queryInfo;\n\n _this.addMention(result, queryInfo);\n\n _this.setState({\n focusIndex: 0\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleBlur\", function (ev) {\n var clickedSuggestion = _this._suggestionsMouseDown;\n _this._suggestionsMouseDown = false; // only reset selection if the mousedown happened on an element\n // other than the suggestions overlay\n\n if (!clickedSuggestion) {\n _this.setState({\n selectionStart: null,\n selectionEnd: null\n });\n }\n\n window.setTimeout(function () {\n _this.updateHighlighterScroll();\n }, 1);\n\n _this.props.onBlur(ev, clickedSuggestion);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleSuggestionsMouseDown\", function (ev) {\n _this._suggestionsMouseDown = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleSuggestionsMouseEnter\", function (focusIndex) {\n _this.setState({\n focusIndex: focusIndex,\n scrollFocusedIntoView: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateSuggestionsPosition\", function () {\n var caretPosition = _this.state.caretPosition;\n var _this$props5 = _this.props,\n suggestionsPortalHost = _this$props5.suggestionsPortalHost,\n allowSuggestionsAboveCursor = _this$props5.allowSuggestionsAboveCursor;\n\n if (!caretPosition || !_this.suggestionsElement) {\n return;\n }\n\n var suggestions = _this.suggestionsElement;\n var highlighter = _this.highlighterElement; // first get viewport-relative position (highlighter is offsetParent of caret):\n\n var caretOffsetParentRect = highlighter.getBoundingClientRect();\n var caretHeight = getComputedStyleLengthProp(highlighter, 'font-size');\n var viewportRelative = {\n left: caretOffsetParentRect.left + caretPosition.left,\n top: caretOffsetParentRect.top + caretPosition.top + caretHeight\n };\n var viewportHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\n if (!suggestions) {\n return;\n }\n\n var position = {}; // if suggestions menu is in a portal, update position to be releative to its portal node\n\n if (suggestionsPortalHost) {\n position.position = 'fixed';\n var left = viewportRelative.left;\n var top = viewportRelative.top; // absolute/fixed positioned elements are positioned according to their entire box including margins; so we remove margins here:\n\n left -= getComputedStyleLengthProp(suggestions, 'margin-left');\n top -= getComputedStyleLengthProp(suggestions, 'margin-top'); // take into account highlighter/textinput scrolling:\n\n left -= highlighter.scrollLeft;\n top -= highlighter.scrollTop; // guard for mentions suggestions list clipped by right edge of window\n\n var viewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n\n if (left + suggestions.offsetWidth > viewportWidth) {\n position.left = Math.max(0, viewportWidth - suggestions.offsetWidth);\n } else {\n position.left = left;\n } // guard for mentions suggestions list clipped by bottom edge of window if allowSuggestionsAboveCursor set to true.\n // Move the list up above the caret if it's getting cut off by the bottom of the window, provided that the list height\n // is small enough to NOT cover up the caret\n\n\n if (allowSuggestionsAboveCursor && top + suggestions.offsetHeight > viewportHeight && suggestions.offsetHeight < top - caretHeight) {\n position.top = Math.max(0, top - suggestions.offsetHeight - caretHeight);\n } else {\n position.top = top;\n }\n } else {\n var _left = caretPosition.left - highlighter.scrollLeft;\n\n var _top = caretPosition.top - highlighter.scrollTop; // guard for mentions suggestions list clipped by right edge of window\n\n\n if (_left + suggestions.offsetWidth > _this.containerElement.offsetWidth) {\n position.right = 0;\n } else {\n position.left = _left;\n } // guard for mentions suggestions list clipped by bottom edge of window if allowSuggestionsAboveCursor set to true.\n // move the list up above the caret if it's getting cut off by the bottom of the window, provided that the list height\n // is small enough to NOT cover up the caret\n\n\n if (allowSuggestionsAboveCursor && viewportRelative.top - highlighter.scrollTop + suggestions.offsetHeight > viewportHeight && suggestions.offsetHeight < caretOffsetParentRect.top - caretHeight - highlighter.scrollTop) {\n position.top = _top - suggestions.offsetHeight - caretHeight;\n } else {\n position.top = _top;\n }\n }\n\n if (position.left === _this.state.suggestionsPosition.left && position.top === _this.state.suggestionsPosition.top && position.position === _this.state.suggestionsPosition.position) {\n return;\n }\n\n _this.setState({\n suggestionsPosition: position\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateHighlighterScroll\", function () {\n var input = _this.inputElement;\n var highlighter = _this.highlighterElement;\n\n if (!input || !highlighter) {\n // since the invocation of this function is deferred,\n // the whole component may have been unmounted in the meanwhile\n return;\n }\n\n highlighter.scrollLeft = input.scrollLeft;\n highlighter.scrollTop = input.scrollTop;\n highlighter.height = input.height;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleCompositionStart\", function () {\n isComposing = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleCompositionEnd\", function () {\n isComposing = false;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setSelection\", function (selectionStart, selectionEnd) {\n if (selectionStart === null || selectionEnd === null) return;\n var el = _this.inputElement;\n\n if (el.setSelectionRange) {\n el.setSelectionRange(selectionStart, selectionEnd);\n } else if (el.createTextRange) {\n var range = el.createTextRange();\n range.collapse(true);\n range.moveEnd('character', selectionEnd);\n range.moveStart('character', selectionStart);\n range.select();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateMentionsQueries\", function (plainTextValue, caretPosition) {\n // Invalidate previous queries. Async results for previous queries will be neglected.\n _this._queryId++;\n _this.suggestions = {};\n\n _this.setState({\n suggestions: {}\n });\n\n var value = _this.props.value || '';\n var children = _this.props.children;\n var config = readConfigFromChildren(children);\n var positionInValue = mapPlainTextIndex(value, config, caretPosition, 'NULL'); // If caret is inside of mention, do not query\n\n if (positionInValue === null) {\n return;\n } // Extract substring in between the end of the previous mention and the caret\n\n\n var substringStartIndex = getEndOfLastMention(value.substring(0, positionInValue), config);\n var substring = plainTextValue.substring(substringStartIndex, caretPosition); // Check if suggestions have to be shown:\n // Match the trigger patterns of all Mention children on the extracted substring\n\n React.Children.forEach(children, function (child, childIndex) {\n if (!child) {\n return;\n }\n\n var regex = makeTriggerRegex(child.props.trigger, _this.props);\n var match = substring.match(regex);\n\n if (match) {\n var querySequenceStart = substringStartIndex + substring.indexOf(match[1], match.index);\n\n _this.queryData(match[2], childIndex, querySequenceStart, querySequenceStart + match[1].length, plainTextValue);\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clearSuggestions\", function () {\n // Invalidate previous queries. Async results for previous queries will be neglected.\n _this._queryId++;\n _this.suggestions = {};\n\n _this.setState({\n suggestions: {},\n focusIndex: 0\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"queryData\", function (query, childIndex, querySequenceStart, querySequenceEnd, plainTextValue) {\n var _this$props6 = _this.props,\n children = _this$props6.children,\n ignoreAccents = _this$props6.ignoreAccents;\n var mentionChild = Children.toArray(children)[childIndex];\n var provideData = getDataProvider(mentionChild.props.data, ignoreAccents);\n var syncResult = provideData(query, _this.updateSuggestions.bind(null, _this._queryId, childIndex, query, querySequenceStart, querySequenceEnd, plainTextValue));\n\n if (syncResult instanceof Array) {\n _this.updateSuggestions(_this._queryId, childIndex, query, querySequenceStart, querySequenceEnd, plainTextValue, syncResult);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateSuggestions\", function (queryId, childIndex, query, querySequenceStart, querySequenceEnd, plainTextValue, results) {\n // neglect async results from previous queries\n if (queryId !== _this._queryId) return; // save in property so that multiple sync state updates from different mentions sources\n // won't overwrite each other\n\n _this.suggestions = _objectSpread({}, _this.suggestions, _defineProperty({}, childIndex, {\n queryInfo: {\n childIndex: childIndex,\n query: query,\n querySequenceStart: querySequenceStart,\n querySequenceEnd: querySequenceEnd,\n plainTextValue: plainTextValue\n },\n results: results\n }));\n var focusIndex = _this.state.focusIndex;\n var suggestionsCount = countSuggestions(_this.suggestions);\n\n _this.setState({\n suggestions: _this.suggestions,\n focusIndex: focusIndex >= suggestionsCount ? Math.max(suggestionsCount - 1, 0) : focusIndex\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"addMention\", function (_ref2, _ref3) {\n var id = _ref2.id,\n display = _ref2.display;\n var childIndex = _ref3.childIndex,\n querySequenceStart = _ref3.querySequenceStart,\n querySequenceEnd = _ref3.querySequenceEnd,\n plainTextValue = _ref3.plainTextValue;\n // Insert mention in the marked up value at the correct position\n var value = _this.props.value || '';\n var config = readConfigFromChildren(_this.props.children);\n var mentionsChild = Children.toArray(_this.props.children)[childIndex];\n var _mentionsChild$props = mentionsChild.props,\n markup = _mentionsChild$props.markup,\n displayTransform = _mentionsChild$props.displayTransform,\n appendSpaceOnAdd = _mentionsChild$props.appendSpaceOnAdd,\n onAdd = _mentionsChild$props.onAdd;\n var start = mapPlainTextIndex(value, config, querySequenceStart, 'START');\n var end = start + querySequenceEnd - querySequenceStart;\n var insert = makeMentionsMarkup(markup, id, display);\n\n if (appendSpaceOnAdd) {\n insert += ' ';\n }\n\n var newValue = spliceString(value, start, end, insert); // Refocus input and set caret position to end of mention\n\n _this.inputElement.focus();\n\n var displayValue = displayTransform(id, display);\n\n if (appendSpaceOnAdd) {\n displayValue += ' ';\n }\n\n var newCaretPosition = querySequenceStart + displayValue.length;\n\n _this.setState({\n selectionStart: newCaretPosition,\n selectionEnd: newCaretPosition,\n setSelectionAfterMentionChange: true\n }); // Propagate change\n\n\n var eventMock = {\n target: {\n value: newValue\n }\n };\n var mentions = getMentions(newValue, config);\n var newPlainTextValue = spliceString(plainTextValue, querySequenceStart, querySequenceEnd, displayValue);\n\n _this.executeOnChange(eventMock, newValue, newPlainTextValue, mentions);\n\n if (onAdd) {\n onAdd(id, display);\n } // Make sure the suggestions overlay is closed\n\n\n _this.clearSuggestions();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"isLoading\", function () {\n var isLoading = false;\n React.Children.forEach(_this.props.children, function (child) {\n isLoading = isLoading || child && child.props.isLoading;\n });\n return isLoading;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"isOpened\", function () {\n return isNumber(_this.state.selectionStart) && (countSuggestions(_this.state.suggestions) !== 0 || _this.isLoading());\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_queryId\", 0);\n\n _this.suggestions = {};\n _this.uuidSuggestionsOverlay = Math.random().toString(16).substring(2);\n _this.handleCopy = _this.handleCopy.bind(_assertThisInitialized(_this));\n _this.handleCut = _this.handleCut.bind(_assertThisInitialized(_this));\n _this.handlePaste = _this.handlePaste.bind(_assertThisInitialized(_this));\n _this.state = {\n focusIndex: 0,\n selectionStart: null,\n selectionEnd: null,\n suggestions: {},\n caretPosition: null,\n suggestionsPosition: {}\n };\n return _this;\n }\n\n _createClass(MentionsInput, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('copy', this.handleCopy);\n document.addEventListener('cut', this.handleCut);\n document.addEventListener('paste', this.handlePaste);\n this.updateSuggestionsPosition();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n // Update position of suggestions unless this componentDidUpdate was\n // triggered by an update to suggestionsPosition.\n if (prevState.suggestionsPosition === this.state.suggestionsPosition) {\n this.updateSuggestionsPosition();\n } // maintain selection in case a mention is added/removed causing\n // the cursor to jump to the end\n\n\n if (this.state.setSelectionAfterMentionChange) {\n this.setState({\n setSelectionAfterMentionChange: false\n });\n this.setSelection(this.state.selectionStart, this.state.selectionEnd);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('copy', this.handleCopy);\n document.removeEventListener('cut', this.handleCut);\n document.removeEventListener('paste', this.handlePaste);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", _extends({\n ref: this.setContainerElement\n }, this.props.style), this.renderControl(), this.renderSuggestionsOverlay());\n }\n }, {\n key: \"handlePaste\",\n value: function handlePaste(event) {\n if (event.target !== this.inputElement) {\n return;\n }\n\n if (!this.supportsClipboardActions(event)) {\n return;\n }\n\n event.preventDefault();\n var _this$state3 = this.state,\n selectionStart = _this$state3.selectionStart,\n selectionEnd = _this$state3.selectionEnd;\n var _this$props7 = this.props,\n value = _this$props7.value,\n children = _this$props7.children;\n var config = readConfigFromChildren(children);\n var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');\n var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');\n var pastedMentions = event.clipboardData.getData('text/react-mentions');\n var pastedData = event.clipboardData.getData('text/plain');\n var newValue = spliceString(value, markupStartIndex, markupEndIndex, pastedMentions || pastedData).replace(/\\r/g, '');\n var newPlainTextValue = getPlainText(newValue, config);\n var eventMock = {\n target: _objectSpread({}, event.target, {\n value: newValue\n })\n };\n this.executeOnChange(eventMock, newValue, newPlainTextValue, getMentions(newValue, config));\n }\n }, {\n key: \"saveSelectionToClipboard\",\n value: function saveSelectionToClipboard(event) {\n var _this$state4 = this.state,\n selectionStart = _this$state4.selectionStart,\n selectionEnd = _this$state4.selectionEnd;\n var _this$props8 = this.props,\n children = _this$props8.children,\n value = _this$props8.value;\n var config = readConfigFromChildren(children);\n var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');\n var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');\n event.clipboardData.setData('text/plain', event.target.value.slice(selectionStart, selectionEnd));\n event.clipboardData.setData('text/react-mentions', value.slice(markupStartIndex, markupEndIndex));\n }\n }, {\n key: \"supportsClipboardActions\",\n value: function supportsClipboardActions(event) {\n return !!event.clipboardData;\n }\n }, {\n key: \"handleCopy\",\n value: function handleCopy(event) {\n if (event.target !== this.inputElement) {\n return;\n }\n\n if (!this.supportsClipboardActions(event)) {\n return;\n }\n\n event.preventDefault();\n this.saveSelectionToClipboard(event);\n }\n }, {\n key: \"handleCut\",\n value: function handleCut(event) {\n if (event.target !== this.inputElement) {\n return;\n }\n\n if (!this.supportsClipboardActions(event)) {\n return;\n }\n\n event.preventDefault();\n this.saveSelectionToClipboard(event);\n var _this$state5 = this.state,\n selectionStart = _this$state5.selectionStart,\n selectionEnd = _this$state5.selectionEnd;\n var _this$props9 = this.props,\n children = _this$props9.children,\n value = _this$props9.value;\n var config = readConfigFromChildren(children);\n var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');\n var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');\n var newValue = [value.slice(0, markupStartIndex), value.slice(markupEndIndex)].join('');\n var newPlainTextValue = getPlainText(newValue, config);\n var eventMock = {\n target: _objectSpread({}, event.target, {\n value: newPlainTextValue\n })\n };\n this.executeOnChange(eventMock, newValue, newPlainTextValue, getMentions(value, config));\n } // Handle input element's change event\n\n }]);\n\n return MentionsInput;\n}(React.Component);\n/**\n * Returns the computed length property value for the provided element.\n * Note: According to spec and testing, can count on length values coming back in pixels. See https://developer.mozilla.org/en-US/docs/Web/CSS/used_value#Difference_from_computed_value\n */\n\n\n_defineProperty(MentionsInput, \"propTypes\", propTypes);\n\n_defineProperty(MentionsInput, \"defaultProps\", {\n ignoreAccents: false,\n singleLine: false,\n allowSuggestionsAboveCursor: false,\n onKeyDown: function onKeyDown() {\n return null;\n },\n onSelect: function onSelect() {\n return null;\n },\n onBlur: function onBlur() {\n return null;\n }\n});\n\nvar getComputedStyleLengthProp = function getComputedStyleLengthProp(forElement, propertyName) {\n var length = parseFloat(window.getComputedStyle(forElement, null).getPropertyValue(propertyName));\n return isFinite(length) ? length : 0;\n};\n\nvar isMobileSafari = typeof navigator !== 'undefined' && /iPhone|iPad|iPod/i.test(navigator.userAgent);\nvar styled$3 = createDefaultStyle({\n position: 'relative',\n overflowY: 'visible',\n input: {\n display: 'block',\n width: '100%',\n position: 'absolute',\n margin: 0,\n top: 0,\n left: 0,\n boxSizing: 'border-box',\n backgroundColor: 'transparent',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n letterSpacing: 'inherit'\n },\n '&multiLine': {\n input: _objectSpread({\n height: '100%',\n bottom: 0,\n overflow: 'hidden',\n resize: 'none'\n }, isMobileSafari ? {\n marginTop: 1,\n marginLeft: -3\n } : null)\n }\n}, function (_ref4) {\n var singleLine = _ref4.singleLine;\n return {\n '&singleLine': singleLine,\n '&multiLine': !singleLine\n };\n});\nvar MentionsInput$1 = styled$3(MentionsInput);\n\nvar defaultStyle = {\n fontWeight: 'inherit'\n};\n\nvar Mention = function Mention(_ref) {\n var display = _ref.display,\n style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames;\n var styles = useStyles(defaultStyle, {\n style: style,\n className: className,\n classNames: classNames\n });\n return React.createElement(\"strong\", styles, display);\n};\n\nMention.propTypes = {\n /**\n * Called when a new mention is added in the input\n *\n * Example:\n *\n * ```js\n * function(id, display) {\n * console.log(\"user \" + display + \" was mentioned!\");\n * }\n * ```\n */\n onAdd: PropTypes.func,\n onRemove: PropTypes.func,\n renderSuggestion: PropTypes.func,\n trigger: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)]),\n markup: PropTypes.string,\n displayTransform: PropTypes.func,\n\n /**\n * If set to `true` spaces will not interrupt matching suggestions\n */\n allowSpaceInQuery: PropTypes.bool,\n isLoading: PropTypes.bool\n};\nMention.defaultProps = {\n trigger: '@',\n markup: '@[__display__](__id__)',\n displayTransform: function displayTransform(id, display) {\n return display || id;\n },\n onAdd: function onAdd() {\n return null;\n },\n onRemove: function onRemove() {\n return null;\n },\n renderSuggestion: null,\n isLoading: false,\n appendSpaceOnAdd: false\n};\n\nexport { Mention, MentionsInput$1 as MentionsInput };\n","// extracted by mini-css-extract-plugin\nexport default {\"suggestion\":\"style-module_2_Hz3\",\"avatar\":\"style-module_20094\"};","import React, { useRef } from 'react';\nimport cl from 'classnames';\nimport { MentionsInput, Mention } from 'react-mentions';\nimport style from './style.module.styl';\nimport UserPic from '../UserPic';\n\nconst COLOR_PICKER_PALLETTE = [\n\t'#C85A48',\n\t'#AFB079',\n\t'#C2A87A',\n\t'#63ADF2',\n\t'#62BFC7',\n\t'#DE8F6E',\n\t'#F6BD60',\n\t'#8B85C1',\n\t'#ECBAB2',\n\t'#A55D8C',\n];\n\nconst getBackColor = (str) => COLOR_PICKER_PALLETTE[\n\tstr\n\t\t.split('')\n\t\t.map((i) => i.charCodeAt(0))\n\t\t.reduce((summ, cur) => (summ += cur)) % 10\n];\n\n\nconst Option = ({ user }) => {\n\tconst {\n\t\temail, avatar, short_name, full_name, id,\n\t} = user;\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t{full_name || email.replace(/@.*$/, '')}\n\t\t\t{' '}\n-\n\t\t\t{' '}\n\t\t\t{email}\n\t\t
\n\t);\n};\n\n\nconst Mentions = ({\n\tlabel,\n\toptions,\n\tclassName,\n\tonChange,\n\tvalue,\n\terror,\n\tdisabled,\n\talgorithmItem = false,\n\tplaceholder,\n\tcontainer,\n\tonAdd = () => { },\n\tinputEl = null,\n}) => {\n\tconst data = options.map((user) => ({\n\t\t...user,\n\t\tdisplay: user.full_name || (user.email || '').replace(/@.*$/, ''),\n\t}));\n\n\tconst _elem = useRef();\n\n\treturn (\n\t\t
\n\t\t\t{label && }\n\t\t\t\n\t\t\t\t
\n\t);\n};\n\nexport default Mentions;\n","export default function _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}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _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}","import React from 'react';\nimport { isFragment } from 'react-is';\nexport default function toArray(children) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var ret = [];\n React.Children.forEach(children, function (child) {\n if ((child === undefined || child === null) && !option.keepEmpty) {\n return;\n }\n if (Array.isArray(child)) {\n ret = ret.concat(toArray(child));\n } else if (isFragment(child) && child.props) {\n ret = ret.concat(toArray(child.props.children, option));\n } else {\n ret.push(child);\n }\n });\n return ret;\n}","import ReactDOM from 'react-dom';\n/**\n * Return if a node is a DOM node. Else will return by `findDOMNode`\n */\nexport default function findDOMNode(node) {\n if (node instanceof HTMLElement) {\n return node;\n }\n return ReactDOM.findDOMNode(node);\n}","import * as React from 'react';\nexport default function useMemo(getValue, condition, shouldUpdate) {\n var cacheRef = React.useRef({});\n if (!('value' in cacheRef.current) || shouldUpdate(cacheRef.current.condition, condition)) {\n cacheRef.current.value = getValue();\n cacheRef.current.condition = condition;\n }\n return cacheRef.current.value;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { isMemo } from 'react-is';\nimport useMemo from './hooks/useMemo';\nexport function fillRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (_typeof(ref) === 'object' && ref && 'current' in ref) {\n ref.current = node;\n }\n}\n/**\n * Merge refs into one ref function to support ref passing.\n */\nexport function composeRef() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n var refList = refs.filter(function (ref) {\n return ref;\n });\n if (refList.length <= 1) {\n return refList[0];\n }\n return function (node) {\n refs.forEach(function (ref) {\n fillRef(ref, node);\n });\n };\n}\nexport function useComposeRef() {\n for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n refs[_key2] = arguments[_key2];\n }\n return useMemo(function () {\n return composeRef.apply(void 0, refs);\n }, refs, function (prev, next) {\n return prev.length === next.length && prev.every(function (ref, i) {\n return ref === next[i];\n });\n });\n}\nexport function supportRef(nodeOrComponent) {\n var _type$prototype, _nodeOrComponent$prot;\n var type = isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;\n // Function component node\n if (typeof type === 'function' && !((_type$prototype = type.prototype) === null || _type$prototype === void 0 ? void 0 : _type$prototype.render)) {\n return false;\n }\n // Class component\n if (typeof nodeOrComponent === 'function' && !((_nodeOrComponent$prot = nodeOrComponent.prototype) === null || _nodeOrComponent$prot === void 0 ? void 0 : _nodeOrComponent$prot.render)) {\n return false;\n }\n return true;\n}\n/* eslint-enable */","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport canUseDOM from \"rc-util/es/Dom/canUseDom\"; // ================= Transition =================\n// Event wrapper. Copy from react source code\n\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\".concat(styleProp)] = \"webkit\".concat(eventName);\n prefixes[\"Moz\".concat(styleProp)] = \"moz\".concat(eventName);\n prefixes[\"ms\".concat(styleProp)] = \"MS\".concat(eventName);\n prefixes[\"O\".concat(styleProp)] = \"o\".concat(eventName.toLowerCase());\n return prefixes;\n}\n\nexport function getVendorPrefixes(domSupport, win) {\n var prefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n };\n\n if (domSupport) {\n if (!('AnimationEvent' in win)) {\n delete prefixes.animationend.animation;\n }\n\n if (!('TransitionEvent' in win)) {\n delete prefixes.transitionend.transition;\n }\n }\n\n return prefixes;\n}\nvar vendorPrefixes = getVendorPrefixes(canUseDOM(), typeof window !== 'undefined' ? window : {});\nvar style = {};\n\nif (canUseDOM()) {\n var _document$createEleme = document.createElement('div');\n\n style = _document$createEleme.style;\n}\n\nvar prefixedEventNames = {};\nexport function getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n if (prefixMap) {\n var stylePropList = Object.keys(prefixMap);\n var len = stylePropList.length;\n\n for (var i = 0; i < len; i += 1) {\n var styleProp = stylePropList[i];\n\n if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) {\n prefixedEventNames[eventName] = prefixMap[styleProp];\n return prefixedEventNames[eventName];\n }\n }\n }\n\n return '';\n}\nvar internalAnimationEndName = getVendorPrefixedEventName('animationend');\nvar internalTransitionEndName = getVendorPrefixedEventName('transitionend');\nexport var supportTransition = !!(internalAnimationEndName && internalTransitionEndName);\nexport var animationEndName = internalAnimationEndName || 'animationend';\nexport var transitionEndName = internalTransitionEndName || 'transitionend';\nexport function getTransitionName(transitionName, transitionType) {\n if (!transitionName) return null;\n\n if (_typeof(transitionName) === 'object') {\n var type = transitionType.replace(/-\\w/g, function (match) {\n return match[1].toUpperCase();\n });\n return transitionName[type];\n }\n\n return \"\".concat(transitionName, \"-\").concat(transitionType);\n}","export var STATUS_NONE = 'none';\nexport var STATUS_APPEAR = 'appear';\nexport var STATUS_ENTER = 'enter';\nexport var STATUS_LEAVE = 'leave';\nexport var STEP_NONE = 'none';\nexport var STEP_PREPARE = 'prepare';\nexport var STEP_START = 'start';\nexport var STEP_ACTIVE = 'active';\nexport var STEP_ACTIVATED = 'end';","var raf = function raf(callback) {\n return +setTimeout(callback, 16);\n};\nvar caf = function caf(num) {\n return clearTimeout(num);\n};\nif (typeof window !== 'undefined' && 'requestAnimationFrame' in window) {\n raf = function raf(callback) {\n return window.requestAnimationFrame(callback);\n };\n caf = function caf(handle) {\n return window.cancelAnimationFrame(handle);\n };\n}\nvar rafUUID = 0;\nvar rafIds = new Map();\nfunction cleanup(id) {\n rafIds.delete(id);\n}\nvar wrapperRaf = function wrapperRaf(callback) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n rafUUID += 1;\n var id = rafUUID;\n function callRef(leftTimes) {\n if (leftTimes === 0) {\n // Clean up\n cleanup(id);\n // Trigger\n callback();\n } else {\n // Next raf\n var realId = raf(function () {\n callRef(leftTimes - 1);\n });\n // Bind real raf id\n rafIds.set(id, realId);\n }\n }\n callRef(times);\n return id;\n};\nwrapperRaf.cancel = function (id) {\n var realId = rafIds.get(id);\n cleanup(realId);\n return caf(realId);\n};\nexport default wrapperRaf;","import * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nexport default (function () {\n var nextFrameRef = React.useRef(null);\n\n function cancelNextFrame() {\n raf.cancel(nextFrameRef.current);\n }\n\n function nextFrame(callback) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n cancelNextFrame();\n var nextFrameId = raf(function () {\n if (delay <= 1) {\n callback({\n isCanceled: function isCanceled() {\n return nextFrameId !== nextFrameRef.current;\n }\n });\n } else {\n nextFrame(callback, delay - 1);\n }\n });\n nextFrameRef.current = nextFrameId;\n }\n\n React.useEffect(function () {\n return function () {\n cancelNextFrame();\n };\n }, []);\n return [nextFrame, cancelNextFrame];\n});","import { useEffect, useLayoutEffect } from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\"; // It's safe to use `useLayoutEffect` but the warning is annoying\n\nvar useIsomorphicLayoutEffect = canUseDom() ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useState from \"rc-util/es/hooks/useState\";\nimport { STEP_PREPARE, STEP_ACTIVE, STEP_START, STEP_ACTIVATED, STEP_NONE } from '../interface';\nimport useNextFrame from './useNextFrame';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nvar STEP_QUEUE = [STEP_PREPARE, STEP_START, STEP_ACTIVE, STEP_ACTIVATED];\n/** Skip current step */\n\nexport var SkipStep = false;\n/** Current step should be update in */\n\nexport var DoStep = true;\nexport function isActive(step) {\n return step === STEP_ACTIVE || step === STEP_ACTIVATED;\n}\nexport default (function (status, callback) {\n var _useState = useState(STEP_NONE),\n _useState2 = _slicedToArray(_useState, 2),\n step = _useState2[0],\n setStep = _useState2[1];\n\n var _useNextFrame = useNextFrame(),\n _useNextFrame2 = _slicedToArray(_useNextFrame, 2),\n nextFrame = _useNextFrame2[0],\n cancelNextFrame = _useNextFrame2[1];\n\n function startQueue() {\n setStep(STEP_PREPARE, true);\n }\n\n useIsomorphicLayoutEffect(function () {\n if (step !== STEP_NONE && step !== STEP_ACTIVATED) {\n var index = STEP_QUEUE.indexOf(step);\n var nextStep = STEP_QUEUE[index + 1];\n var result = callback(step);\n\n if (result === SkipStep) {\n // Skip when no needed\n setStep(nextStep, true);\n } else {\n // Do as frame for step update\n nextFrame(function (info) {\n function doNext() {\n // Skip since current queue is ood\n if (info.isCanceled()) return;\n setStep(nextStep, true);\n }\n\n if (result === true) {\n doNext();\n } else {\n // Only promise should be async\n Promise.resolve(result).then(doNext);\n }\n });\n }\n }\n }, [status, step]);\n React.useEffect(function () {\n return function () {\n cancelNextFrame();\n };\n }, []);\n return [startQueue, step];\n});","import * as React from 'react';\nimport { useRef } from 'react';\nimport { animationEndName, transitionEndName } from '../util/motion';\nexport default (function (callback) {\n var cacheElementRef = useRef(); // Cache callback\n\n var callbackRef = useRef(callback);\n callbackRef.current = callback; // Internal motion event handler\n\n var onInternalMotionEnd = React.useCallback(function (event) {\n callbackRef.current(event);\n }, []); // Remove events\n\n function removeMotionEvents(element) {\n if (element) {\n element.removeEventListener(transitionEndName, onInternalMotionEnd);\n element.removeEventListener(animationEndName, onInternalMotionEnd);\n }\n } // Patch events\n\n\n function patchMotionEvents(element) {\n if (cacheElementRef.current && cacheElementRef.current !== element) {\n removeMotionEvents(cacheElementRef.current);\n }\n\n if (element && element !== cacheElementRef.current) {\n element.addEventListener(transitionEndName, onInternalMotionEnd);\n element.addEventListener(animationEndName, onInternalMotionEnd); // Save as cache in case dom removed trigger by `motionDeadline`\n\n cacheElementRef.current = element;\n }\n } // Clean up when removed\n\n\n React.useEffect(function () {\n return function () {\n removeMotionEvents(cacheElementRef.current);\n };\n }, []);\n return [patchMotionEvents, removeMotionEvents];\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useEffect } from 'react';\nimport useState from \"rc-util/es/hooks/useState\";\nimport { STATUS_APPEAR, STATUS_NONE, STATUS_LEAVE, STATUS_ENTER, STEP_PREPARE, STEP_START, STEP_ACTIVE } from '../interface';\nimport useStepQueue, { DoStep, SkipStep, isActive } from './useStepQueue';\nimport useDomMotionEvents from './useDomMotionEvents';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nexport default function useStatus(supportMotion, visible, getElement, _ref) {\n var _ref$motionEnter = _ref.motionEnter,\n motionEnter = _ref$motionEnter === void 0 ? true : _ref$motionEnter,\n _ref$motionAppear = _ref.motionAppear,\n motionAppear = _ref$motionAppear === void 0 ? true : _ref$motionAppear,\n _ref$motionLeave = _ref.motionLeave,\n motionLeave = _ref$motionLeave === void 0 ? true : _ref$motionLeave,\n motionDeadline = _ref.motionDeadline,\n motionLeaveImmediately = _ref.motionLeaveImmediately,\n onAppearPrepare = _ref.onAppearPrepare,\n onEnterPrepare = _ref.onEnterPrepare,\n onLeavePrepare = _ref.onLeavePrepare,\n onAppearStart = _ref.onAppearStart,\n onEnterStart = _ref.onEnterStart,\n onLeaveStart = _ref.onLeaveStart,\n onAppearActive = _ref.onAppearActive,\n onEnterActive = _ref.onEnterActive,\n onLeaveActive = _ref.onLeaveActive,\n onAppearEnd = _ref.onAppearEnd,\n onEnterEnd = _ref.onEnterEnd,\n onLeaveEnd = _ref.onLeaveEnd,\n onVisibleChanged = _ref.onVisibleChanged;\n\n // Used for outer render usage to avoid `visible: false & status: none` to render nothing\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n asyncVisible = _useState2[0],\n setAsyncVisible = _useState2[1];\n\n var _useState3 = useState(STATUS_NONE),\n _useState4 = _slicedToArray(_useState3, 2),\n status = _useState4[0],\n setStatus = _useState4[1];\n\n var _useState5 = useState(null),\n _useState6 = _slicedToArray(_useState5, 2),\n style = _useState6[0],\n setStyle = _useState6[1];\n\n var mountedRef = useRef(false);\n var deadlineRef = useRef(null); // =========================== Dom Node ===========================\n\n function getDomElement() {\n return getElement();\n } // ========================== Motion End ==========================\n\n\n var activeRef = useRef(false);\n\n function onInternalMotionEnd(event) {\n var element = getDomElement();\n\n if (event && !event.deadline && event.target !== element) {\n // event exists\n // not initiated by deadline\n // transitionEnd not fired by inner elements\n return;\n }\n\n var currentActive = activeRef.current;\n var canEnd;\n\n if (status === STATUS_APPEAR && currentActive) {\n canEnd = onAppearEnd === null || onAppearEnd === void 0 ? void 0 : onAppearEnd(element, event);\n } else if (status === STATUS_ENTER && currentActive) {\n canEnd = onEnterEnd === null || onEnterEnd === void 0 ? void 0 : onEnterEnd(element, event);\n } else if (status === STATUS_LEAVE && currentActive) {\n canEnd = onLeaveEnd === null || onLeaveEnd === void 0 ? void 0 : onLeaveEnd(element, event);\n } // Only update status when `canEnd` and not destroyed\n\n\n if (status !== STATUS_NONE && currentActive && canEnd !== false) {\n setStatus(STATUS_NONE, true);\n setStyle(null, true);\n }\n }\n\n var _useDomMotionEvents = useDomMotionEvents(onInternalMotionEnd),\n _useDomMotionEvents2 = _slicedToArray(_useDomMotionEvents, 1),\n patchMotionEvents = _useDomMotionEvents2[0]; // ============================= Step =============================\n\n\n var eventHandlers = React.useMemo(function () {\n var _ref2, _ref3, _ref4;\n\n switch (status) {\n case STATUS_APPEAR:\n return _ref2 = {}, _defineProperty(_ref2, STEP_PREPARE, onAppearPrepare), _defineProperty(_ref2, STEP_START, onAppearStart), _defineProperty(_ref2, STEP_ACTIVE, onAppearActive), _ref2;\n\n case STATUS_ENTER:\n return _ref3 = {}, _defineProperty(_ref3, STEP_PREPARE, onEnterPrepare), _defineProperty(_ref3, STEP_START, onEnterStart), _defineProperty(_ref3, STEP_ACTIVE, onEnterActive), _ref3;\n\n case STATUS_LEAVE:\n return _ref4 = {}, _defineProperty(_ref4, STEP_PREPARE, onLeavePrepare), _defineProperty(_ref4, STEP_START, onLeaveStart), _defineProperty(_ref4, STEP_ACTIVE, onLeaveActive), _ref4;\n\n default:\n return {};\n }\n }, [status]);\n\n var _useStepQueue = useStepQueue(status, function (newStep) {\n // Only prepare step can be skip\n if (newStep === STEP_PREPARE) {\n var onPrepare = eventHandlers[STEP_PREPARE];\n\n if (!onPrepare) {\n return SkipStep;\n }\n\n return onPrepare(getDomElement());\n } // Rest step is sync update\n\n\n // Rest step is sync update\n if (step in eventHandlers) {\n var _eventHandlers$step;\n\n setStyle(((_eventHandlers$step = eventHandlers[step]) === null || _eventHandlers$step === void 0 ? void 0 : _eventHandlers$step.call(eventHandlers, getDomElement(), null)) || null);\n }\n\n if (step === STEP_ACTIVE) {\n // Patch events when motion needed\n patchMotionEvents(getDomElement());\n\n if (motionDeadline > 0) {\n clearTimeout(deadlineRef.current);\n deadlineRef.current = setTimeout(function () {\n onInternalMotionEnd({\n deadline: true\n });\n }, motionDeadline);\n }\n }\n\n return DoStep;\n }),\n _useStepQueue2 = _slicedToArray(_useStepQueue, 2),\n startStep = _useStepQueue2[0],\n step = _useStepQueue2[1];\n\n var active = isActive(step);\n activeRef.current = active; // ============================ Status ============================\n // Update with new status\n\n useIsomorphicLayoutEffect(function () {\n setAsyncVisible(visible);\n var isMounted = mountedRef.current;\n mountedRef.current = true;\n\n if (!supportMotion) {\n return;\n }\n\n var nextStatus; // Appear\n\n if (!isMounted && visible && motionAppear) {\n nextStatus = STATUS_APPEAR;\n } // Enter\n\n\n if (isMounted && visible && motionEnter) {\n nextStatus = STATUS_ENTER;\n } // Leave\n\n\n if (isMounted && !visible && motionLeave || !isMounted && motionLeaveImmediately && !visible && motionLeave) {\n nextStatus = STATUS_LEAVE;\n } // Update to next status\n\n\n if (nextStatus) {\n setStatus(nextStatus);\n startStep();\n }\n }, [visible]); // ============================ Effect ============================\n // Reset when motion changed\n\n useEffect(function () {\n if ( // Cancel appear\n status === STATUS_APPEAR && !motionAppear || // Cancel enter\n status === STATUS_ENTER && !motionEnter || // Cancel leave\n status === STATUS_LEAVE && !motionLeave) {\n setStatus(STATUS_NONE);\n }\n }, [motionAppear, motionEnter, motionLeave]);\n useEffect(function () {\n return function () {\n mountedRef.current = false;\n clearTimeout(deadlineRef.current);\n };\n }, []); // Trigger `onVisibleChanged`\n\n var firstMountChangeRef = React.useRef(false);\n useEffect(function () {\n // [visible & motion not end] => [!visible & motion end] still need trigger onVisibleChanged\n if (asyncVisible) {\n firstMountChangeRef.current = true;\n }\n\n if (asyncVisible !== undefined && status === STATUS_NONE) {\n // Skip first render is invisible since it's nothing changed\n if (firstMountChangeRef.current || asyncVisible) {\n onVisibleChanged === null || onVisibleChanged === void 0 ? void 0 : onVisibleChanged(asyncVisible);\n }\n\n firstMountChangeRef.current = true;\n }\n }, [asyncVisible, status]); // ============================ Styles ============================\n\n var mergedStyle = style;\n\n if (eventHandlers[STEP_PREPARE] && step === STEP_START) {\n mergedStyle = _objectSpread({\n transition: 'none'\n }, mergedStyle);\n }\n\n return [status, step, mergedStyle, asyncVisible !== null && asyncVisible !== void 0 ? asyncVisible : visible];\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\n\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DomWrapper, _React$Component);\n\n var _super = _createSuper(DomWrapper);\n\n function DomWrapper() {\n _classCallCheck(this, DomWrapper);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DomWrapper, [{\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n\n return DomWrapper;\n}(React.Component);\n\nexport default DomWrapper;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/* eslint-disable react/default-props-match-prop-types, react/no-multi-comp, react/prop-types */\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { fillRef, supportRef } from \"rc-util/es/ref\";\nimport classNames from 'classnames';\nimport { getTransitionName, supportTransition } from './util/motion';\nimport { STATUS_NONE, STEP_PREPARE, STEP_START } from './interface';\nimport useStatus from './hooks/useStatus';\nimport DomWrapper from './DomWrapper';\nimport { isActive } from './hooks/useStepQueue';\n/**\n * `transitionSupport` is used for none transition test case.\n * Default we use browser transition event support check.\n */\n\nexport function genCSSMotion(config) {\n var transitionSupport = config;\n\n if (_typeof(config) === 'object') {\n transitionSupport = config.transitionSupport;\n }\n\n function isSupportTransition(props) {\n return !!(props.motionName && transitionSupport);\n }\n\n var CSSMotion = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$visible = props.visible,\n visible = _props$visible === void 0 ? true : _props$visible,\n _props$removeOnLeave = props.removeOnLeave,\n removeOnLeave = _props$removeOnLeave === void 0 ? true : _props$removeOnLeave,\n forceRender = props.forceRender,\n children = props.children,\n motionName = props.motionName,\n leavedClassName = props.leavedClassName,\n eventProps = props.eventProps;\n var supportMotion = isSupportTransition(props); // Ref to the react node, it may be a HTMLElement\n\n var nodeRef = useRef(); // Ref to the dom wrapper in case ref can not pass to HTMLElement\n\n var wrapperNodeRef = useRef();\n\n function getDomElement() {\n try {\n // Here we're avoiding call for findDOMNode since it's deprecated\n // in strict mode. We're calling it only when node ref is not\n // an instance of DOM HTMLElement. Otherwise use\n // findDOMNode as a final resort\n return nodeRef.current instanceof HTMLElement ? nodeRef.current : findDOMNode(wrapperNodeRef.current);\n } catch (e) {\n // Only happen when `motionDeadline` trigger but element removed.\n return null;\n }\n }\n\n var _useStatus = useStatus(supportMotion, visible, getDomElement, props),\n _useStatus2 = _slicedToArray(_useStatus, 4),\n status = _useStatus2[0],\n statusStep = _useStatus2[1],\n statusStyle = _useStatus2[2],\n mergedVisible = _useStatus2[3]; // Record whether content has rendered\n // Will return null for un-rendered even when `removeOnLeave={false}`\n\n\n var renderedRef = React.useRef(mergedVisible);\n\n if (mergedVisible) {\n renderedRef.current = true;\n } // ====================== Refs ======================\n\n\n var setNodeRef = React.useCallback(function (node) {\n nodeRef.current = node;\n fillRef(ref, node);\n }, [ref]); // ===================== Render =====================\n\n var motionChildren;\n\n var mergedProps = _objectSpread(_objectSpread({}, eventProps), {}, {\n visible: visible\n });\n\n if (!children) {\n // No children\n motionChildren = null;\n } else if (status === STATUS_NONE || !isSupportTransition(props)) {\n // Stable children\n if (mergedVisible) {\n motionChildren = children(_objectSpread({}, mergedProps), setNodeRef);\n } else if (!removeOnLeave && renderedRef.current) {\n motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n className: leavedClassName\n }), setNodeRef);\n } else if (forceRender) {\n motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n style: {\n display: 'none'\n }\n }), setNodeRef);\n } else {\n motionChildren = null;\n }\n } else {\n var _classNames;\n\n // In motion\n var statusSuffix;\n\n if (statusStep === STEP_PREPARE) {\n statusSuffix = 'prepare';\n } else if (isActive(statusStep)) {\n statusSuffix = 'active';\n } else if (statusStep === STEP_START) {\n statusSuffix = 'start';\n }\n\n motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n className: classNames(getTransitionName(motionName, status), (_classNames = {}, _defineProperty(_classNames, getTransitionName(motionName, \"\".concat(status, \"-\").concat(statusSuffix)), statusSuffix), _defineProperty(_classNames, motionName, typeof motionName === 'string'), _classNames)),\n style: statusStyle\n }), setNodeRef);\n } // Auto inject ref if child node not have `ref` props\n\n\n if ( /*#__PURE__*/React.isValidElement(motionChildren) && supportRef(motionChildren)) {\n var _motionChildren = motionChildren,\n originNodeRef = _motionChildren.ref;\n\n if (!originNodeRef) {\n motionChildren = /*#__PURE__*/React.cloneElement(motionChildren, {\n ref: setNodeRef\n });\n }\n }\n\n return /*#__PURE__*/React.createElement(DomWrapper, {\n ref: wrapperNodeRef\n }, motionChildren);\n });\n CSSMotion.displayName = 'CSSMotion';\n return CSSMotion;\n}\nexport default genCSSMotion(supportTransition);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport var STATUS_ADD = 'add';\nexport var STATUS_KEEP = 'keep';\nexport var STATUS_REMOVE = 'remove';\nexport var STATUS_REMOVED = 'removed';\nexport function wrapKeyToObject(key) {\n var keyObj;\n\n if (key && _typeof(key) === 'object' && 'key' in key) {\n keyObj = key;\n } else {\n keyObj = {\n key: key\n };\n }\n\n return _objectSpread(_objectSpread({}, keyObj), {}, {\n key: String(keyObj.key)\n });\n}\nexport function parseKeys() {\n var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return keys.map(wrapKeyToObject);\n}\nexport function diffKeys() {\n var prevKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var currentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var list = [];\n var currentIndex = 0;\n var currentLen = currentKeys.length;\n var prevKeyObjects = parseKeys(prevKeys);\n var currentKeyObjects = parseKeys(currentKeys); // Check prev keys to insert or keep\n\n prevKeyObjects.forEach(function (keyObj) {\n var hit = false;\n\n for (var i = currentIndex; i < currentLen; i += 1) {\n var currentKeyObj = currentKeyObjects[i];\n\n if (currentKeyObj.key === keyObj.key) {\n // New added keys should add before current key\n if (currentIndex < i) {\n list = list.concat(currentKeyObjects.slice(currentIndex, i).map(function (obj) {\n return _objectSpread(_objectSpread({}, obj), {}, {\n status: STATUS_ADD\n });\n }));\n currentIndex = i;\n }\n\n list.push(_objectSpread(_objectSpread({}, currentKeyObj), {}, {\n status: STATUS_KEEP\n }));\n currentIndex += 1;\n hit = true;\n break;\n }\n } // If not hit, it means key is removed\n\n\n if (!hit) {\n list.push(_objectSpread(_objectSpread({}, keyObj), {}, {\n status: STATUS_REMOVE\n }));\n }\n }); // Add rest to the list\n\n if (currentIndex < currentLen) {\n list = list.concat(currentKeyObjects.slice(currentIndex).map(function (obj) {\n return _objectSpread(_objectSpread({}, obj), {}, {\n status: STATUS_ADD\n });\n }));\n }\n /**\n * Merge same key when it remove and add again:\n * [1 - add, 2 - keep, 1 - remove] -> [1 - keep, 2 - keep]\n */\n\n\n var keys = {};\n list.forEach(function (_ref) {\n var key = _ref.key;\n keys[key] = (keys[key] || 0) + 1;\n });\n var duplicatedKeys = Object.keys(keys).filter(function (key) {\n return keys[key] > 1;\n });\n duplicatedKeys.forEach(function (matchKey) {\n // Remove `STATUS_REMOVE` node.\n list = list.filter(function (_ref2) {\n var key = _ref2.key,\n status = _ref2.status;\n return key !== matchKey || status !== STATUS_REMOVE;\n }); // Update `STATUS_ADD` to `STATUS_KEEP`\n\n list.forEach(function (node) {\n if (node.key === matchKey) {\n // eslint-disable-next-line no-param-reassign\n node.status = STATUS_KEEP;\n }\n });\n });\n return list;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"component\", \"children\", \"onVisibleChanged\", \"onAllRemoved\"],\n _excluded2 = [\"status\"];\n\n/* eslint react/prop-types: 0 */\nimport * as React from 'react';\nimport OriginCSSMotion from './CSSMotion';\nimport { supportTransition } from './util/motion';\nimport { STATUS_ADD, STATUS_KEEP, STATUS_REMOVE, STATUS_REMOVED, diffKeys, parseKeys } from './util/diff';\nvar MOTION_PROP_NAMES = ['eventProps', 'visible', 'children', 'motionName', 'motionAppear', 'motionEnter', 'motionLeave', 'motionLeaveImmediately', 'motionDeadline', 'removeOnLeave', 'leavedClassName', 'onAppearStart', 'onAppearActive', 'onAppearEnd', 'onEnterStart', 'onEnterActive', 'onEnterEnd', 'onLeaveStart', 'onLeaveActive', 'onLeaveEnd'];\n/**\n * Generate a CSSMotionList component with config\n * @param transitionSupport No need since CSSMotionList no longer depends on transition support\n * @param CSSMotion CSSMotion component\n */\n\nexport function genCSSMotionList(transitionSupport) {\n var CSSMotion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : OriginCSSMotion;\n\n var CSSMotionList = /*#__PURE__*/function (_React$Component) {\n _inherits(CSSMotionList, _React$Component);\n\n var _super = _createSuper(CSSMotionList);\n\n function CSSMotionList() {\n var _this;\n\n _classCallCheck(this, CSSMotionList);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n keyEntities: []\n };\n\n _this.removeKey = function (removeKey) {\n var keyEntities = _this.state.keyEntities;\n var nextKeyEntities = keyEntities.map(function (entity) {\n if (entity.key !== removeKey) return entity;\n return _objectSpread(_objectSpread({}, entity), {}, {\n status: STATUS_REMOVED\n });\n });\n\n _this.setState({\n keyEntities: nextKeyEntities\n });\n\n return nextKeyEntities.filter(function (_ref) {\n var status = _ref.status;\n return status !== STATUS_REMOVED;\n }).length;\n };\n\n return _this;\n }\n\n _createClass(CSSMotionList, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var keyEntities = this.state.keyEntities;\n\n var _this$props = this.props,\n component = _this$props.component,\n children = _this$props.children,\n _onVisibleChanged = _this$props.onVisibleChanged,\n onAllRemoved = _this$props.onAllRemoved,\n restProps = _objectWithoutProperties(_this$props, _excluded);\n\n var Component = component || React.Fragment;\n var motionProps = {};\n MOTION_PROP_NAMES.forEach(function (prop) {\n motionProps[prop] = restProps[prop];\n delete restProps[prop];\n });\n delete restProps.keys;\n return /*#__PURE__*/React.createElement(Component, restProps, keyEntities.map(function (_ref2) {\n var status = _ref2.status,\n eventProps = _objectWithoutProperties(_ref2, _excluded2);\n\n var visible = status === STATUS_ADD || status === STATUS_KEEP;\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motionProps, {\n key: eventProps.key,\n visible: visible,\n eventProps: eventProps,\n onVisibleChanged: function onVisibleChanged(changedVisible) {\n _onVisibleChanged === null || _onVisibleChanged === void 0 ? void 0 : _onVisibleChanged(changedVisible, {\n key: eventProps.key\n });\n\n if (!changedVisible) {\n var restKeysCount = _this2.removeKey(eventProps.key);\n\n if (restKeysCount === 0 && onAllRemoved) {\n onAllRemoved();\n }\n }\n }\n }), children);\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref3, _ref4) {\n var keys = _ref3.keys;\n var keyEntities = _ref4.keyEntities;\n var parsedKeyObjects = parseKeys(keys);\n var mixedKeyEntities = diffKeys(keyEntities, parsedKeyObjects);\n return {\n keyEntities: mixedKeyEntities.filter(function (entity) {\n var prevEntity = keyEntities.find(function (_ref5) {\n var key = _ref5.key;\n return entity.key === key;\n }); // Remove if already mark as removed\n\n if (prevEntity && prevEntity.status === STATUS_REMOVED && entity.status === STATUS_REMOVE) {\n return false;\n }\n\n return true;\n })\n };\n } // ZombieJ: Return the count of rest keys. It's safe to refactor if need more info.\n\n }]);\n\n return CSSMotionList;\n }(React.Component);\n\n CSSMotionList.defaultProps = {\n component: 'div'\n };\n return CSSMotionList;\n}\nexport default genCSSMotionList(supportTransition);","import CSSMotion from './CSSMotion';\nimport CSSMotionList from './CSSMotionList';\nexport { CSSMotionList };\nexport default CSSMotion;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\n/* eslint-disable no-underscore-dangle */\n\n/* eslint-disable react/prop-types */\nimport * as React from 'react';\nimport classnames from 'classnames';\nvar PanelContent = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classnames;\n\n var prefixCls = props.prefixCls,\n forceRender = props.forceRender,\n className = props.className,\n style = props.style,\n children = props.children,\n isActive = props.isActive,\n role = props.role;\n\n var _React$useState = React.useState(isActive || forceRender),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n rendered = _React$useState2[0],\n setRendered = _React$useState2[1];\n\n React.useEffect(function () {\n if (forceRender || isActive) {\n setRendered(true);\n }\n }, [forceRender, isActive]);\n\n if (!rendered) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n className: classnames(\"\".concat(prefixCls, \"-content\"), (_classnames = {}, _defineProperty(_classnames, \"\".concat(prefixCls, \"-content-active\"), isActive), _defineProperty(_classnames, \"\".concat(prefixCls, \"-content-inactive\"), !isActive), _classnames), className),\n style: style,\n role: role\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content-box\")\n }, children));\n});\nPanelContent.displayName = 'PanelContent';\nexport default PanelContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint-disable react/prop-types */\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport shallowEqual from 'shallowequal';\nimport PanelContent from './PanelContent';\n\nvar CollapsePanel = /*#__PURE__*/function (_React$Component) {\n _inherits(CollapsePanel, _React$Component);\n\n var _super = _createSuper(CollapsePanel);\n\n function CollapsePanel() {\n var _this;\n\n _classCallCheck(this, CollapsePanel);\n\n _this = _super.apply(this, arguments);\n\n _this.handleItemClick = function () {\n var _this$props = _this.props,\n onItemClick = _this$props.onItemClick,\n panelKey = _this$props.panelKey;\n\n if (typeof onItemClick === 'function') {\n onItemClick(panelKey);\n }\n };\n\n _this.handleKeyPress = function (e) {\n if (e.key === 'Enter' || e.keyCode === 13 || e.which === 13) {\n _this.handleItemClick();\n }\n };\n\n return _this;\n }\n\n _createClass(CollapsePanel, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return !shallowEqual(this.props, nextProps);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames,\n _classNames2,\n _this2 = this;\n\n var _this$props2 = this.props,\n className = _this$props2.className,\n id = _this$props2.id,\n style = _this$props2.style,\n prefixCls = _this$props2.prefixCls,\n header = _this$props2.header,\n headerClass = _this$props2.headerClass,\n children = _this$props2.children,\n isActive = _this$props2.isActive,\n showArrow = _this$props2.showArrow,\n destroyInactivePanel = _this$props2.destroyInactivePanel,\n accordion = _this$props2.accordion,\n forceRender = _this$props2.forceRender,\n openMotion = _this$props2.openMotion,\n expandIcon = _this$props2.expandIcon,\n extra = _this$props2.extra,\n collapsible = _this$props2.collapsible;\n var disabled = collapsible === 'disabled';\n var headerCls = classNames(\"\".concat(prefixCls, \"-header\"), (_classNames = {}, _defineProperty(_classNames, headerClass, headerClass), _defineProperty(_classNames, \"\".concat(prefixCls, \"-header-collapsible-only\"), collapsible === 'header'), _classNames));\n var itemCls = classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-item\"), true), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-item-active\"), isActive), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-item-disabled\"), disabled), _classNames2), className);\n var icon = /*#__PURE__*/React.createElement(\"i\", {\n className: \"arrow\"\n });\n\n if (showArrow && typeof expandIcon === 'function') {\n icon = expandIcon(this.props);\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: itemCls,\n style: style,\n id: id\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: headerCls,\n onClick: function onClick() {\n return collapsible !== 'header' && _this2.handleItemClick();\n },\n role: accordion ? 'tab' : 'button',\n tabIndex: disabled ? -1 : 0,\n \"aria-expanded\": isActive,\n onKeyPress: this.handleKeyPress\n }, showArrow && icon, collapsible === 'header' ? /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.handleItemClick,\n className: \"\".concat(prefixCls, \"-header-text\")\n }, header) : header, extra && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-extra\")\n }, extra)), /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: isActive,\n leavedClassName: \"\".concat(prefixCls, \"-content-hidden\")\n }, openMotion, {\n forceRender: forceRender,\n removeOnLeave: destroyInactivePanel\n }), function (_ref, ref) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(PanelContent, {\n ref: ref,\n prefixCls: prefixCls,\n className: motionClassName,\n style: motionStyle,\n isActive: isActive,\n forceRender: forceRender,\n role: accordion ? 'tabpanel' : null\n }, children);\n }));\n }\n }]);\n\n return CollapsePanel;\n}(React.Component);\n\nCollapsePanel.defaultProps = {\n showArrow: true,\n isActive: false,\n onItemClick: function onItemClick() {},\n headerClass: '',\n forceRender: false\n};\nexport default CollapsePanel;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/* eslint-disable react/prop-types */\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport shallowEqual from 'shallowequal';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport CollapsePanel from './Panel';\n\nfunction getActiveKeysArray(activeKey) {\n var currentActiveKey = activeKey;\n\n if (!Array.isArray(currentActiveKey)) {\n var activeKeyType = _typeof(currentActiveKey);\n\n currentActiveKey = activeKeyType === 'number' || activeKeyType === 'string' ? [currentActiveKey] : [];\n }\n\n return currentActiveKey.map(function (key) {\n return String(key);\n });\n}\n\nvar Collapse = /*#__PURE__*/function (_React$Component) {\n _inherits(Collapse, _React$Component);\n\n var _super = _createSuper(Collapse);\n\n function Collapse(props) {\n var _this;\n\n _classCallCheck(this, Collapse);\n\n _this = _super.call(this, props);\n\n _this.onClickItem = function (key) {\n var activeKey = _this.state.activeKey;\n\n if (_this.props.accordion) {\n activeKey = activeKey[0] === key ? [] : [key];\n } else {\n activeKey = _toConsumableArray(activeKey);\n var index = activeKey.indexOf(key);\n var isActive = index > -1;\n\n if (isActive) {\n // remove active state\n activeKey.splice(index, 1);\n } else {\n activeKey.push(key);\n }\n }\n\n _this.setActiveKey(activeKey);\n };\n\n _this.getNewChild = function (child, index) {\n if (!child) return null;\n var activeKey = _this.state.activeKey;\n var _this$props = _this.props,\n prefixCls = _this$props.prefixCls,\n openMotion = _this$props.openMotion,\n accordion = _this$props.accordion,\n rootDestroyInactivePanel = _this$props.destroyInactivePanel,\n expandIcon = _this$props.expandIcon,\n collapsible = _this$props.collapsible; // If there is no key provide, use the panel order as default key\n\n var key = child.key || String(index);\n var _child$props = child.props,\n header = _child$props.header,\n headerClass = _child$props.headerClass,\n destroyInactivePanel = _child$props.destroyInactivePanel,\n childCollapsible = _child$props.collapsible;\n var isActive = false;\n\n if (accordion) {\n isActive = activeKey[0] === key;\n } else {\n isActive = activeKey.indexOf(key) > -1;\n }\n\n var mergeCollapsible = childCollapsible !== null && childCollapsible !== void 0 ? childCollapsible : collapsible;\n var props = {\n key: key,\n panelKey: key,\n header: header,\n headerClass: headerClass,\n isActive: isActive,\n prefixCls: prefixCls,\n destroyInactivePanel: destroyInactivePanel !== null && destroyInactivePanel !== void 0 ? destroyInactivePanel : rootDestroyInactivePanel,\n openMotion: openMotion,\n accordion: accordion,\n children: child.props.children,\n onItemClick: mergeCollapsible === 'disabled' ? null : _this.onClickItem,\n expandIcon: expandIcon,\n collapsible: mergeCollapsible\n }; // https://github.com/ant-design/ant-design/issues/20479\n\n if (typeof child.type === 'string') {\n return child;\n }\n\n return /*#__PURE__*/React.cloneElement(child, props);\n };\n\n _this.getItems = function () {\n var children = _this.props.children;\n return toArray(children).map(_this.getNewChild);\n };\n\n _this.setActiveKey = function (activeKey) {\n if (!('activeKey' in _this.props)) {\n _this.setState({\n activeKey: activeKey\n });\n }\n\n _this.props.onChange(_this.props.accordion ? activeKey[0] : activeKey);\n };\n\n var activeKey = props.activeKey,\n defaultActiveKey = props.defaultActiveKey;\n var currentActiveKey = defaultActiveKey;\n\n if ('activeKey' in props) {\n currentActiveKey = activeKey;\n }\n\n _this.state = {\n activeKey: getActiveKeysArray(currentActiveKey)\n };\n return _this;\n }\n\n _createClass(Collapse, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state, nextState);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n\n var _this$props2 = this.props,\n prefixCls = _this$props2.prefixCls,\n className = _this$props2.className,\n style = _this$props2.style,\n accordion = _this$props2.accordion;\n var collapseClassName = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls, true), _defineProperty(_classNames, className, !!className), _classNames));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: collapseClassName,\n style: style,\n role: accordion ? 'tablist' : null\n }, this.getItems());\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps) {\n var newState = {};\n\n if ('activeKey' in nextProps) {\n newState.activeKey = getActiveKeysArray(nextProps.activeKey);\n }\n\n return newState;\n }\n }]);\n\n return Collapse;\n}(React.Component);\n\nCollapse.defaultProps = {\n prefixCls: 'rc-collapse',\n onChange: function onChange() {},\n accordion: false,\n destroyInactivePanel: false\n};\nCollapse.Panel = CollapsePanel;\nexport default Collapse;","import Collapse from './Collapse';\nexport default Collapse;\nvar Panel = Collapse.Panel;\nexport { Panel };","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"style-module_1rHJY\",\"label\":\"style-module_1v_Jx\"};","const getCollapsedHeight = () => ({ height: 0, opacity: 0 });\nconst getRealHeight = (node) => ({ height: node.scrollHeight, opacity: 1 });\nconst getCurrentHeight = (node) => ({ height: node.offsetHeight });\nconst skipOpacityTransition = (_, event) => (event).propertyName === 'height';\n\nconst collapseMotion = {\n\tmotionName: 'rc-collapse-motion',\n\tonEnterStart: getCollapsedHeight,\n\tonEnterActive: getRealHeight,\n\tonLeaveStart: getCurrentHeight,\n\tonLeaveActive: getCollapsedHeight,\n\tonEnterEnd: skipOpacityTransition,\n\tonLeaveEnd: skipOpacityTransition,\n\tmotionDeadline: 500,\n\tleavedClassName: 'rc-collapse-content-hidden',\n};\n\nexport default collapseMotion;\n","import React, { useState, Children } from 'react';\nimport cl from 'classnames';\nimport Collapse from 'rc-collapse';\nimport style from './style.module.styl';\nimport motion from './motion';\n\nconst expandIcon = ({ isActive }) => (\n\t\n\t\t\n\t\n);\n\nconst Accrdion = ({\n\tclassName,\n\tchildren,\n}) => {\n\tconst [passwordVisible, setPasswordVisible] = useState(false);\n\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t{children}\n\t\t\t\n\t\t
\n\t);\n};\n\nexport const { Panel } = Collapse;\nexport default Accrdion;\n","// extracted by mini-css-extract-plugin\nexport default {\"menu\":\"style-module_3Wc7t\",\"menuRight\":\"style-module_1vgoB\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"item-module_2vstH\",\"opened\":\"item-module_3IreO\",\"left\":\"item-module_2iLm6\",\"withSubmenu\":\"item-module_2OOKL\"};","import React, { useRef, useState, useMemo } from 'react';\nimport cl from 'classnames';\nimport style from './item.module.styl';\n\nconst Item = ({\n\tchildren,\n\tonClick = () => { },\n\tisActive,\n\tclassName,\n}) => {\n\tconst itemRef = useRef();\n\tconst [opened, setOpened] = useState(false);\n\tconst [shouldLeft, setShouldLeft] = useState(false);\n\tconst hasSubmenu = useMemo(() => React.Children.toArray(children).some((_) => _.type?.componentName === 'Submenu'));\n\n\tconst _onEnter = (e) => {\n\t\te.stopPropagation();\n\t\tif (hasSubmenu) {\n\t\t\tconst { right, width } = itemRef?.current.getBoundingClientRect();\n\t\t\tconst _shouldLeft = (right + width + 5) > window.innerWidth;\n\n\t\t\tsetShouldLeft(_shouldLeft);\n\t\t\tsetOpened(true);\n\t\t}\n\t};\n\n\tconst _onLeave = (e) => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tif (hasSubmenu) {\n\t\t\tsetOpened(false);\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t);\n};\n\nexport default Item;\n","// extracted by mini-css-extract-plugin\nexport default {\"submenu\":\"submenu-module_SqYRs\",\"submenuLeft\":\"submenu-module_16hcQ\"};","import React from 'react';\nimport classes from 'classnames';\nimport style from './submenu.module.styl';\n\nconst Submenu = ({\n\tchildren, position, className,\n}) => (\n\t
\n\t\t
    \n\t\t\t{children}\n\t\t
\n\t
\n);\n\nSubmenu.componentName = 'Submenu';\n\nexport default Submenu;\n","// extracted by mini-css-extract-plugin\nexport default {\"divider\":\"divider-module_3Dshr\"};","import React from 'react';\nimport cl from 'classnames';\nimport style from './divider.module.styl';\n\nconst Divider = ({\n\tclassName,\n}) => (\n\t\n);\n\nexport default Divider;\n","import React from 'react';\nimport cl from 'classnames';\nimport style from './style.module.styl';\nimport Item from './Item';\nimport Submenu from './Submenu';\nimport Divider from './Divider';\n\nconst Dropdown = ({\n\tchildren,\n\tposition,\n\tmenuClassName,\n}) => (\n\t
\n\t\t
    \n\t\t\t{children}\n\t\t
\n\t
\n);\n\nDropdown.Item = Item;\nDropdown.Submenu = Submenu;\nDropdown.Divider = Divider;\n\nexport default Dropdown;\n","// extracted by mini-css-extract-plugin\nexport default {\"tooltip\":\"style-module_1LDgC\",\"overToolTip\":\"style-module_2HA-Y\"};","import React, { useState, useEffect, useRef } from 'react';\nimport cl from 'classnames';\nimport Tooltip from '../Tooltip';\nimport style from './style.module.styl';\n\nconst OverTooltip = ({\n\tchildren,\n\ttooltipClassName,\n\ttooltipContainerClassName,\n\tshow,\n\torientation,\n\ttimeout,\n\tdirection,\n\thideTimeout,\n\tshowTimeout,\n\tdataTs,\n}) => {\n\tconst ref = useRef(null);\n\tconst [isOverflown, setIsOverflown] = useState(false);\n\tuseEffect(() => {\n\t\tconst element = ref.current;\n\t\tsetIsOverflown(element.scrollWidth > element.clientWidth);\n\t}, []);\n\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t{children}\n\t\t\t
\n\t\t\n\t);\n};\n\nexport default OverTooltip;\n","/*\nCorto\nCopyright (c) 2017-2018, Visual Computing Lab, ISTI - CNR\nAll rights reserved.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see .\n*/\n\nconst BitStream = function(array) {\n var t = this;\n t.a = array;\n t.current = array[0];\n t.position = 0; //position in the buffer\n t.pending = 32; //bits still to read\n};\n\nBitStream.prototype = { \n read: function(bits) {\n var t = this;\n if(bits > t.pending) {\n t.pending = bits - t.pending;\n var result = (t.current << t.pending)>>>0; //looks the same.\n t.pending = 32 - t.pending;\n\n t.current = t.a[++t.position];\n result |= (t.current >>> t.pending);\n t.current = (t.current & ((1<>>0; //slighting faster than mask.\n return result;\n } else { //splitting result in branch seems faster.\n t.pending -= bits;\n var result = (t.current >>> t.pending);\n t.current = (t.current & ((1<>>0; //slighting faster than mask, \n return result;\n }\n }\n};\n\nconst Stream = function(buffer, byteOffset, byteLength) {\n var t = this;\n t.data = buffer;\n t.buffer = new Uint8Array(buffer);\n t.pos = byteOffset?byteOffset:0;\n t.view = new DataView(buffer);\n};\n\nStream.prototype = {\n logs: new Uint8Array(16768),\n\n readChar: function() {\n var c = this.buffer[this.pos++];\n if(c > 127) c -= 256;\n return c;\n },\n\n readUChar: function() {\n return this.buffer[this.pos++];\n },\n\n readShort: function() {\n this.pos += 2;\n return this.view.getInt16(this.pos-2, true);\n },\n\n readFloat: function() {\n this.pos += 4;\n return this.view.getFloat32(this.pos-4, true);\n },\n\n readInt: function() {\n this.pos += 4;\n return this.view.getInt32(this.pos-4, true);\n },\n\n readArray: function(n) {\n var a = this.buffer.subarray(this.pos, this.pos+n);\n this.pos += n;\n return a;\n },\n\n readString: function() {\n var n = this.readShort();\n var s = String.fromCharCode.apply(null, this.readArray(n-1));\n this.pos++; //null terminator of string.\n return s;\n },\n\n readBitStream:function() {\n var n = this.readInt();\n var pad = this.pos & 0x3;\n if(pad != 0)\n this.pos += 4 - pad;\n var b = new BitStream(new Uint32Array(this.data, this.pos, n));\n this.pos += n*4;\n return b;\n },\n\n //make decodearray2,3 later //TODO faster to create values here or passing them?\n decodeArray: function(N, values) {\n var t = this;\n var bitstream = t.readBitStream();\n\n var tunstall = new Tunstall;\n while(t.logs.length < values.length)\n t.logs = new Uint8Array(values.length);\n\n tunstall.decompress(this, t.logs);\n\n for(var i = 0; i < t.logs.readed; i++) {\n var diff = t.logs[i];\n if(diff == 0) {\n for(var c = 0; c < N; c++)\n values[i*N + c] = 0;\n continue;\n }\n var max = (1<>>1;\n for(var c = 0; c < N; c++)\n values[i*N + c] = bitstream.read(diff) - max;\n }\n return t.logs.readed;\n },\n\n //assumes values alread allocated\n decodeValues: function(N, values) {\n var t = this;\n var bitstream = t.readBitStream();\n var tunstall = new Tunstall;\n var size = values.length/N;\n while(t.logs.length < size)\n t.logs = new Uint8Array(size);\n\n for(var c = 0; c < N; c++) {\n tunstall.decompress(this, t.logs);\n\n for(var i = 0; i < t.logs.readed; i++) {\n var diff = t.logs[i];\n if(diff == 0) {\n values[i*N + c] = 0;\n continue;\n }\n\n var val = bitstream.read(diff);\n var middle = (1<<(diff-1))>>>0;\n if(val < middle)\n val = -val -middle;\n values[i*N + c] = val;\n }\n }\n return t.logs.readed;\n },\n\n //assumes values alread allocated\n decodeDiffs: function(values) {\n var t = this;\n var bitstream = t.readBitStream();\n var tunstall = new Tunstall;\n var size = values.length;\n while(t.logs.length < size)\n t.logs = new Uint8Array(size);\n\n tunstall.decompress(this, t.logs);\n\n for(var i = 0; i < t.logs.readed; i++) {\n var diff = t.logs[i];\n if(diff == 0) {\n values[i] = 0;\n continue;\n }\n var max = (1<>>1;\n values[i] = bitstream.read(diff) - max;\n }\n return t.logs.readed;\n },\n\n //assumes values alread allocated\n decodeIndices: function(values) {\n var t = this;\n var bitstream = t.readBitStream();\n\n var tunstall = new Tunstall;\n var size = values.length;\n while(t.logs.length < size)\n t.logs = new Uint8Array(size);\n\n tunstall.decompress(this, t.logs);\n\n for(var i = 0; i < t.logs.readed; i++) {\n var ret = t.logs[i];\n if(ret == 0) {\n values[i] = 0;\n continue;\n }\n values[i] = (1< 100000000) throw(\"TOO LARGE!\");\n if(!data)\n data = new Uint8Array(size);\n if(data.length < size)\n throw \"Array for results too small\";\n data.readed = size;\n\n var compressed_size = stream.readInt();\n if(size > 100000000) throw(\"TOO LARGE!\");\n var compressed_data = stream.readArray(compressed_size);\n if(size)\n this._decompress(compressed_data, compressed_size, data, size);\n return data;\n },\n\n createDecodingTables: function() {\n var t = this;\n var n_symbols = t.probs.length/2;\n if(n_symbols <= 1) return;\n\n var queue = Tunstall.prototype.queue;\n\n var end = 0; //keep track of queue end\n var pos = 0; //keep track of buffer first free space\n var n_words = 0;\n\n //Here probs will range from 0 to 0xffff for better precision\n for(var i = 0; i < n_symbols; i++)\n queue[i] = t.probs[2*i+1] << 8;\n\n var max_repeat = Math.floor((t.dictionary_size - 1)/(n_symbols - 1));\n var repeat = 2;\n var p0 = queue[0];\n var p1 = queue[1];\n var prob = (p0*p0)>>>16;\n while(prob > p1 && repeat < max_repeat) {\n prob = (prob*p0)>>> 16;\n repeat++;\n }\n\n if(repeat >= 16) { //Very low entropy results in large tables > 8K.\n t.table[pos++] = t.probs[0];\n for(var k = 1; k < n_symbols; k++) {\n for(var i = 0; i < repeat-1; i++)\n t.table[pos++] = t.probs[0];\n t.table[pos++] = t.probs[2*k];\n }\n t.starts[0] = (repeat-1)*n_symbols;\n for(var k = 1; k < n_symbols; k++)\n t.starts[k] = k;\n\n for(var col = 0; col < repeat; col++) {\n for(var row = 1; row < n_symbols; row++) {\n var off = (row + col*n_symbols);\n if(col > 0)\n queue[off] = (prob * queue[row]) >> 16;\n t.index[off] = row*repeat - col;\n t.lengths[off] = col+1;\n }\n if(col == 0)\n prob = p0;\n else\n prob = (prob*p0) >>> 16;\n }\n var first = ((repeat-1)*n_symbols);\n queue[first] = prob;\n t.index[first] = 0;\n t.lengths[first] = repeat;\n\n n_words = 1 + repeat*(n_symbols - 1);\n end = repeat*n_symbols;\n } else {\n //initialize adding all symbols to queues\n for(var i = 0; i < n_symbols; i++) {\n queue[i] = t.probs[i*2+1]<<8;\n t.index[i] = i;\n t.lengths[i] = 1;\n \n t.starts[i] = i;\n t.table[i] = t.probs[i*2];\n }\n pos = n_symbols;\n end = n_symbols;\n n_words = n_symbols;\n }\n\n //at each step we grow all queues using the most probable sequence\n while(n_words < t.dictionary_size) {\n //find highest probability word\n var best = 0;\n var max_prob = 0;\n for(var i = 0; i < n_symbols; i++) {\n var p = queue[t.starts[i]]; //front of queue probability.\n if(p > max_prob) {\n best = i;\n max_prob = p;\n }\n }\n var start = t.starts[best];\n var offset = t.index[start];\n var len = t.lengths[start];\n\n for(var i = 0; i < n_symbols; i++) {\n queue[end] = (queue[i] * queue[start])>>>16;\n t.index[end] = pos;\n t.lengths[end] = len + 1;\n end++;\n\n for(var k = 0; k < len; k++)\n t.table[pos + k] = t.table[offset + k]; //copy sequence of symbols\n pos += len;\n t.table[pos++] = t.probs[i*2]; //append symbol\n if(i + n_words == t.dictionary_size - 1)\n break;\n }\n if(i == n_symbols)\n t.starts[best] += n_symbols; //move one column\n n_words += n_symbols -1;\n }\n\n var word = 0;\n for(i = 0, row = 0; i < end; i ++, row++) {\n if(row >= n_symbols)\n row = 0;\n if(t.starts[row] > i) continue; //skip deleted words\n\n t.index[word] = t.index[i];\n t.lengths[word] = t.lengths[i];\n word++;\n }\n },\n\n _decompress: function(input, input_size, output, output_size) {\n //TODO optimize using buffer arrays\n var input_pos = 0;\n var output_pos = 0;\n if(this.probs.length == 2) {\n var symbol = this.probs[0];\n for(var i = 0; i < output_size; i++)\n output[i] = symbol;\n return;\n }\n\n while(input_pos < input_size-1) {\n var symbol = input[input_pos++];\n var start = this.index[symbol];\n var end = start + this.lengths[symbol];\n for(var i = start; i < end; i++) \n output[output_pos++] = this.table[i];\n }\n\n //last symbol might override so we check.\n var symbol = input[input_pos];\n var start = this.index[symbol];\n var end = start + output_size - output_pos;\n var length = output_size - output_pos;\n for(var i = start; i < end; i++)\n output[output_pos++] = this.table[i];\n\n return output;\n }\n};\n\nfunction Attribute(name, q, components, type, strategy) {\n var t = this;\n t.name = name;\n t.q = q; //float\n t.components = components; //integer\n t.type = type;\n t.strategy = strategy;\n};\n\nAttribute.prototype = {\n Type: { UINT32:0, INT32:1, UINT16:2, INT16:3, UINT8:4, INT8:5, FLOAT:6, DOUBLE:7 },\n\n Strategy: { PARALLEL:1, CORRELATED:2 },\n\n init: function(nvert, nface) {\n var t = this;\n var n = nvert*t.components;\n t.values = new Int32Array(n); //local workspace \n\n //init output buffers\n switch(t.type) {\n case t.Type.UINT32:\n case t.Type.INT32: t.values = t.buffer = new Int32Array(n); break; //no point replicating.\n case t.Type.UINT16:\n case t.Type.INT16: t.buffer = new Int16Array(n); break;\n case t.Type.UINT8: t.buffer = new Uint8Array(n); break;\n case t.Type.INT8: t.buffer = new Int8Array(n); break;\n case t.Type.FLOAT:\n case t.Type.DOUBLE: t.buffer = new Float32Array(n); break;\n default: throw \"Error if reading\";\n }\n },\n\n decode: function(nvert, stream) {\n var t = this;\n if(t.strategy & t.Strategy.CORRELATED) //correlated\n stream.decodeArray(t.components, t.values);\n else\n stream.decodeValues(t.components, t.values);\n },\n\n deltaDecode: function(nvert, context) {\n var t = this;\n var values = t.values;\n var N = t.components;\n\n if(t.strategy & t.Strategy.PARALLEL) { //parallel\n var n = context.length/3;\n for(var i = 1; i < n; i++) {\n for(var c = 0; c < N; c++) {\n values[i*N + c] += values[context[i*3]*N + c] + values[context[i*3+1]*N + c] - values[context[i*3+2]*N + c];\n }\n }\n } else if(context) {\n var n = context.length/3;\n for(var i = 1; i < n; i++)\n for(var c = 0; c < N; c++)\n values[i*N + c] += values[context[i*3]*N + c];\n } else {\n for(var i = N; i < nvert*N; i++)\n values[i] += values[i - N];\n }\n },\n\n postDelta: function() {},\n\n dequantize: function(nvert) {\n var t= this;\n var n = t.components*nvert;\n switch(t.type) {\n case t.Type.UINT32:\n case t.Type.INT32: break;\n case t.Type.UINT16:\n case t.Type.INT16: \n case t.Type.UINT8: \n case t.Type.INT8: \n for(var i = 0; i < n; i++)\n t.buffer[i] = t.values[i]*t.q;\n break;\n case t.Type.FLOAT:\n case t.Type.DOUBLE: \n for(var i = 0; i < n; i++)\n t.buffer[i] = t.values[i]*t.q;\n break;\n }\n }\n};\n\n/* COLOR ATTRIBUTE */\n\nfunction ColorAttr(name, q, components, type, strategy) {\n Attribute.call(this, name, q, components, type, strategy);\n this.qc = [];\n this.outcomponents = 3;\n};\n\nColorAttr.prototype = Object.create(Attribute.prototype);\n\nColorAttr.prototype.decode = function(nvert, stream) {\n for(var c = 0; c < 4; c++)\n this.qc[c] = stream.readUChar();\n Attribute.prototype.decode.call(this, nvert, stream);\n};\n\nColorAttr.prototype.dequantize = function(nvert) {\n var t = this;\n for(var i = 0; i < nvert; i++) {\n var offset = i*4;\n var rgboff = i*t.outcomponents;\n\n var e0 = t.values[offset + 0];\n var e1 = t.values[offset + 1];\n var e2 = t.values[offset + 2];\n\n t.buffer[rgboff + 0] = ((e2 + e0)* t.qc[0])&0xff;\n t.buffer[rgboff + 1] = e0* t.qc[1];\n t.buffer[rgboff + 2] = ((e1 + e0)* t.qc[2])&0xff;\n// t.buffer[offset + 3] = t.values[offset + 3] * t.qc[3];\n }\n};\n\n/* NORMAL ATTRIBUTE */\n\nfunction NormalAttr(name, q, components, type, strategy) {\n Attribute.call(this, name, q, components, type, strategy);\n};\n\nNormalAttr.prototype = Object.create(Attribute.prototype);\n\nNormalAttr.prototype.Prediction = { DIFF: 0, ESTIMATED: 1, BORDER: 2 };\n\nNormalAttr.prototype.init = function(nvert, nface) {\n var t = this;\n var n = nvert*t.components;\n t.values = new Int32Array(2*nvert); //local workspace \n\n //init output buffers\n switch(t.type) {\n case t.Type.INT16: t.buffer = new Int16Array(n); break;\n case t.Type.FLOAT:\n case t.Type.DOUBLE: t.buffer = new Float32Array(n); break;\n default: throw \"Error if reading\";\n }\n};\n\nNormalAttr.prototype.decode = function(nvert, stream) {\n var t = this;\n t.prediction = stream.readUChar();\n\n stream.decodeArray(2, t.values);\n};\n\nNormalAttr.prototype.deltaDecode = function(nvert, context) {\n var t = this;\n if(t.prediction != t.Prediction.DIFF)\n return;\n\n if(context) {\n for(var i = 1; i < nvert; i++) {\n for(var c = 0; c < 2; c++) {\n var d = t.values[i*2 + c];\n t.values[i*2 + c] += t.values[context[i*3]*2 + c];\n }\n }\n } else { //point clouds assuming values are already sorted by proximity.\n for(var i = 2; i < nvert*2; i++) {\n var d = t.values[i];\n t.values[i] += t.values[i-2];\n }\n }\n};\n\nNormalAttr.prototype.postDelta = function(nvert, nface, attrs, index) {\n var t = this;\n //for border and estimate we need the position already deltadecoded but before dequantized\n if(t.prediction == t.Prediction.DIFF)\n return;\n\n if(!attrs.position)\n throw \"No position attribute found. Use DIFF normal strategy instead.\";\n\n var coord = attrs.position;\n\n t.estimated = new Float32Array(nvert*3);\n t.estimateNormals(nvert, coord.values, nface, index.faces);\n\n if(t.prediction == t.Prediction.BORDER) {\n t.boundary = new Uint32Array(nvert);\n t.markBoundary(nvert, nface, index.faces, t.boundary);\n }\n\n t.computeNormals(nvert);\n};\n\nNormalAttr.prototype.dequantize = function(nvert) {\n var t = this;\n if(t.prediction != t.Prediction.DIFF)\n return;\n\n for(var i = 0; i < nvert; i++)\n t.toSphere(i, t.values, i, t.buffer, t.q)\n};\n\nNormalAttr.prototype.computeNormals = function(nvert) {\n var t = this;\n var norm = t.estimated;\n\n if(t.prediction == t.Prediction.ESTIMATED) {\n for(var i = 0; i < nvert; i++) {\n t.toOcta(i, norm, i, t.values, t.q);\n t.toSphere(i, t.values, i, t.buffer, t.q);\n }\n\n } else { //BORDER\n var count = 0; //here for the border.\n for(var i = 0, k = 0; i < nvert; i++, k+=3) {\n if(t.boundary[i] != 0) {\n t.toOcta(i, norm, count, t.values, t.q);\n t.toSphere(count, t.values, i, t.buffer, t.q);\n count++;\n\n } else { //no correction\n var len = 1/Math.sqrt(norm[k]*norm[k] + norm[k+1]*norm[k+1] + norm[k+2]*norm[k+2]);\n if(t.type == t.Type.INT16)\n len *= 32767;\n\n t.buffer[k] = norm[k]*len;\n t.buffer[k+1] = norm[k+1]*len;\n t.buffer[k+2] = norm[k+2]*len; \n }\n }\n }\n};\n\nNormalAttr.prototype.markBoundary = function( nvert, nface, index, boundary) {\n for(var f = 0; f < nface*3; f += 3) {\n boundary[index[f+0]] ^= index[f+1] ^ index[f+2];\n boundary[index[f+1]] ^= index[f+2] ^ index[f+0];\n boundary[index[f+2]] ^= index[f+0] ^ index[f+1];\n }\n};\n\n\nNormalAttr.prototype.estimateNormals = function(nvert, coords, nface, index) {\n var t = this;\n for(var f = 0; f < nface*3; f += 3) {\n var a = 3*index[f + 0];\n var b = 3*index[f + 1];\n var c = 3*index[f + 2];\n\n var ba0 = coords[b+0] - coords[a+0];\n var ba1 = coords[b+1] - coords[a+1];\n var ba2 = coords[b+2] - coords[a+2];\n\n var ca0 = coords[c+0] - coords[a+0];\n var ca1 = coords[c+1] - coords[a+1];\n var ca2 = coords[c+2] - coords[a+2];\n\n var n0 = ba1*ca2 - ba2*ca1;\n var n1 = ba2*ca0 - ba0*ca2;\n var n2 = ba0*ca1 - ba1*ca0;\n\n t.estimated[a + 0] += n0;\n t.estimated[a + 1] += n1;\n t.estimated[a + 2] += n2;\n t.estimated[b + 0] += n0;\n t.estimated[b + 1] += n1;\n t.estimated[b + 2] += n2;\n t.estimated[c + 0] += n0;\n t.estimated[c + 1] += n1;\n t.estimated[c + 2] += n2;\n }\n};\n\n//taks input in ingress at i offset, adds out at c offset\nNormalAttr.prototype.toSphere = function(i, input, o, out, unit) {\n\n var t = this;\n var j = i*2;\n var k = o*3;\n var av0 = input[j] > 0? input[j]:-input[j];\n var av1 = input[j+1] > 0? input[j+1]:-input[j+1];\n out[k] = input[j];\n out[k+1] = input[j+1];\n out[k+2] = unit - av0 - av1;\n if (out[k+2] < 0) {\n out[k] = (input[j] > 0)? unit - av1 : av1 - unit;\n out[k+1] = (input[j+1] > 0)? unit - av0: av0 - unit;\n }\n var len = 1/Math.sqrt(out[k]*out[k] + out[k+1]*out[k+1] + out[k+2]*out[k+2]);\n if(t.type == t.Type.INT16)\n len *= 32767;\n\n out[k] *= len;\n out[k+1] *= len;\n out[k+2] *= len;\n};\n\nNormalAttr.prototype.toOcta = function(i, input, o, output, unit) {\n var k = o*2;\n var j = i*3; //input\n\n var av0 = input[j] > 0? input[j]:-input[j];\n var av1 = input[j+1] > 0? input[j+1]:-input[j+1];\n var av2 = input[j+2] > 0? input[j+2]:-input[j+2];\n var len = av0 + av1 + av2;\n var p0 = input[j]/len;\n var p1 = input[j+1]/len;\n\n var ap0 = p0 > 0? p0: -p0;\n var ap1 = p1 > 0? p1: -p1;\n\n if(input[j+2] < 0) {\n p0 = (input[j] >= 0)? 1.0 - ap1 : ap1 - 1;\n p1 = (input[j+1] >= 0)? 1.0 - ap0 : ap0 - 1;\n }\n output[k] += p0*unit;\n output[k+1] += p1*unit;\n/*\n Point2f p(v[0], v[1]);\n p /= (fabs(v[0]) + fabs(v[1]) + fabs(v[2]));\n\n if(v[2] < 0) {\n p = Point2f(1.0f - fabs(p[1]), 1.0f - fabs(p[0]));\n if(v[0] < 0) p[0] = -p[0];\n if(v[1] < 0) p[1] = -p[1];\n }\n return Point2i(p[0]*unit, p[1]*unit);\n*/\n};\n\n/* INDEX ATTRIBUTE */\n\nfunction IndexAttr(nvert, nface, type) {\n var t = this;\n if((!type && nface < (1<<8)) || type == 0) //uint8\n t.faces = new Uint8Array(nface*3);\n else if((!type && nface < (1<<16)) || type == 1) //uint16\n t.faces = new Uint16Array(nface*3);\n else if(!type || type == 2) //uint32 \n t.faces = new Uint32Array(nface*3);\n else\n throw \"Unsupported type\";\n\n t.prediction = new Uint32Array(nvert*3);\n};\n\nIndexAttr.prototype = {\n decode: function(stream) {\n var t = this;\n\n var max_front = stream.readInt();\n t.front = new Int32Array(max_front*5);\n\n var tunstall = new Tunstall;\n t.clers = tunstall.decompress(stream);\n t.bitstream = stream.readBitStream();\n },\n\n decodeGroups: function(stream) {\n var t = this;\n var n = stream.readInt();\n t.groups = new Array(n);\n for(var i = 0; i < n; i++) {\n var end = stream.readInt();\n var np = stream.readUChar();\n var g = { end: end, properties: {} };\n for(var k = 0; k < np; k++) {\n var key = stream.readString();\n g.properties[key] = stream.readString();\n }\n t.groups[i] = g;\n }\n }\n};\n\nfunction CortoDecoder(data, byteOffset, byteLength) {\n if(byteOffset & 0x3)\n throw \"Memory aligned on 4 bytes is mandatory\";\n\n var t = this;\n var stream = t.stream = new Stream(data, byteOffset, byteLength);\n\n var magic = stream.readInt();\n if(magic != 2021286656) return;\n\n var version = stream.readInt();\n t.entropy = stream.readUChar();\n //exif\n t.geometry = {};\n var n = stream.readInt();\n for(var i = 0; i < n; i++) {\n var key = stream.readString();\n t.geometry[key] = stream.readString();\n }\n\n //attributes\n var n = stream.readInt();\n\n t.attributes = {};\n for(var i = 0; i < n; i++) {\n var a = {};\n var name = stream.readString();\n var codec = stream.readInt();\n var q = stream.readFloat();\n var components = stream.readUChar(); //internal number of components\n var type = stream.readUChar(); //default type (same as it was in input), can be overridden\n var strategy = stream.readUChar();\n var attr;\n switch(codec) {\n case 2: attr = NormalAttr; break;\n case 3: attr = ColorAttr; break;\n case 1: //generic codec\n default: attr = Attribute; break;\n }\n t.attributes[name] = new attr(name, q, components, type, strategy);\n }\n\n//TODO move this vars into an array.\n t.geometry.nvert = t.nvert = t.stream.readInt();\n t.geometry.nface = t.nface = t.stream.readInt();\n};\n\nCortoDecoder.prototype = {\n decode: function() {\n var t = this;\n\n t.last = new Uint32Array(t.nvert*3); //for parallelogram prediction\n t.last_count = 0;\n\n for(var i in t.attributes)\n t.attributes[i].init(t.nvert, t.nface);\n\n if(t.nface == 0)\n t.decodePointCloud();\n else\n t.decodeMesh();\n\n return t.geometry;\n },\n\n decodePointCloud: function() {\n var t = this;\n t.index = new IndexAttr(t.nvert, t.nface, 1);\n t.index.decodeGroups(t.stream);\n t.geometry.groups = t.index.groups;\n for(var i in t.attributes) {\n var a = t.attributes[i];\n a.decode(t.nvert, t.stream);\n a.deltaDecode(t.nvert);\n a.dequantize(t.nvert);\n t.geometry[a.name] = a.buffer;\n }\n },\n\n decodeMesh: function() {\n var t = this;\n t.index = new IndexAttr(t.nvert, t.nface);\n t.index.decodeGroups(t.stream);\n t.index.decode(t.stream);\n\n t.vertex_count = 0;\n var start = 0;\n t.cler = 0;\n for(var p = 0; p < t.index.groups.length; p++) {\n var end = t.index.groups[p].end;\n this.decodeFaces(start *3, end *3);\n start = end;\n }\n t.geometry['index'] = t.index.faces;\n t.geometry.groups = t.index.groups;\n for(var i in t.attributes) \n t.attributes[i].decode(t.nvert, t.stream);\n for(var i in t.attributes) \n t.attributes[i].deltaDecode(t.nvert, t.index.prediction);\n for(var i in t.attributes) \n t.attributes[i].postDelta(t.nvert, t.nface, t.attributes, t.index);\n for(var i in t.attributes) { \n var a = t.attributes[i];\n a.dequantize(t.nvert);\n t.geometry[a.name] = a.buffer;\n }\n },\n\n /*\n An edge is: uint16_t face, uint16_t side, uint32_t prev, next, bool deleted\n I do not want to create millions of small objects, I will use aUint32Array.\n Problem is how long, sqrt(nface) we will over blow using nface.\n */\n\n ilog2: function(p) {\n var k = 0;\n while ( p>>=1 ) { ++k; }\n return k;\n },\n\n decodeFaces: function(start, end) {\n\n var t = this;\n var clers = t.index.clers;\n var bitstream = t.index.bitstream;\n\n var front = t.index.front;\n var front_count = 0; //count each integer so it's front_back*5\n\n function addFront(_v0, _v1, _v2, _prev, _next) {\n front[front_count] = _v0;\n front[front_count+1] = _v1;\n front[front_count+2] = _v2;\n front[front_count+3] = _prev;\n front[front_count+4] = _next;\n front_count += 5;\n }\n\n var faceorder = new Uint32Array((end - start));\n var order_front = 0;\n var order_back = 0;\n\n var delayed = [];\n\n var splitbits = t.ilog2(t.nvert) + 1;\n\n var new_edge = -1;\n\n var prediction = t.index.prediction;\n\n while(start < end) {\n\n if(new_edge == -1 && order_front >= order_back && !delayed.length) {\n\n var last_index = t.vertex_count-1;\n var vindex = [];\n\n var split = 0;\n if(clers[t.cler++] == 6) { //split look ahead\n split = bitstream.read(3);\n }\n\n for(var k = 0; k < 3; k++) {\n var v;\n if(split & (1<= t.nvert || v0 >= t.nvert || opposite >= t.nvert)\n throw \"Topological error\";\n t.index.faces[start] = v1;\n t.index.faces[start+1] = v0;\n t.index.faces[start+2] = opposite;\n start += 3;\n }\n },\n\n};\n\nexport default CortoDecoder;\n","import output from \"_src/engine/output\";\nimport { Geometry, GeometryBuffer } from \"_src/engine/geometry.js\";\nimport workerManager from \"_src/engine/worker_manager.js\";\nimport { messageType } from \"_src/engine/ipc.js\";\nimport CortoDecoder from \"_src/libs/corto/corto.js\";\nimport { bufferType } from \"_src/engine/constants\";\nimport workerPool from \"_src/engine/worker_pool\";\nimport arrayTools from \"_src/engine/utility/arrays\";\nimport config from \"_src/config\";\n\nexport default class CortoLoader {\n\n constructor(verbose) {\n\n this._verbose = verbose;\n\n }\n\n _checkVerbosity() {\n return this._verbose;\n }\n\n loadMain(blob) {\n return new Promise((resolve, reject) => {\n\n const decoder = new CortoDecoder(blob);\n\n const messages = [];\n\n let startTime;\n if (typeof performance !== \"undefined\") {\n startTime = performance.now();\n }\n\n decoder.decode().then((result) => {\n\n if (typeof performance !== \"undefined\") {\n const decodeEnd = performance.now();\n messages.push(\"Corto: decoding time: \" + ((decodeEnd - startTime) / 1000).toPrecision(3) + \" sec.\");\n }\n\n result.messages = messages;\n\n const geometry = this.prepareGeometry(result);\n\n if (this._checkVerbosity()) {\n\n for (let i = 0; i < result.messages.length; ++i) {\n output.log(result.messages[i], output.INDIGO);\n }\n\n }\n\n resolve(geometry);\n\n }).catch((error) => {\n reject(error);\n });\n });\n }\n\n loadWorker(bufferSource, tid) {\n\n return new Promise((resolve, reject) => {\n\n const message = {\n type: messageType.PARSE_CORTO,\n file: bufferSource\n };\n\n const transfer = [bufferSource];\n\n workerManager.sendMessage(message, transfer, tid).then(({data}) => {\n\n const geometry = this.prepareGeometry(data);\n\n resolve(geometry);\n\n }).catch((error) => {\n reject(error);\n });\n\n });\n\n }\n\n prepareGeometry(data) {\n\n const layout = {};\n\n if (data.position) {\n\n const posBuffer = data.position.buffer;\n const positionItem = new GeometryBuffer({ buffer : posBuffer, type : bufferType.F32_3 });\n\n layout[\"a_position\"] = positionItem;\n\n }\n\n if (data.normal) {\n\n const normBuffer = data.normal.buffer;\n const normalItem = new GeometryBuffer({ buffer : normBuffer, type : bufferType.F32_3 });\n\n layout[\"a_normal\"] = normalItem;\n\n }\n\n if (data.uv) {\n\n const uvBuffer = data.uv.buffer;\n const uvItem = new GeometryBuffer({ buffer : uvBuffer, type : bufferType.F32_2 });\n if (config.viewOnlyMode) {\n uvItem.scheduleUnload();\n }\n\n layout[\"a_uv\"] = uvItem;\n\n }\n\n if (data.colors) {\n\n const colorBuffer = data.colors.buffer;\n const colorItem = new GeometryBuffer({ buffer : colorBuffer, type : bufferType.F32_3 });\n if (config.viewOnlyMode) {\n colorItem.scheduleUnload();\n }\n\n layout[\"a_color\"] = colorItem;\n\n }\n\n if (data.index) {\n\n const indicesBuffer = data.index.buffer;\n const indicesType = arrayTools.uintArrayType(data.index, 3);\n const indicesItem = new GeometryBuffer({ buffer : indicesBuffer, type : indicesType });\n\n layout[\"indices\"] = indicesItem;\n\n }\n\n const geometry = new Geometry({\n bbox : data.bbox,\n layout : layout,\n });\n\n return geometry;\n\n }\n\n stopLoading() {\n workerManager.terminateByType(messageType.PARSE_CORTO);\n }\n\n cleanup() {\n workerPool.cleanup(messageType.PARSE_CORTO);\n return Promise.resolve();\n }\n\n}\n\n","import LoaderBase from \"_src/engine/loaders/loader_base\";\nimport {readChunk} from \"_src/engine/loaders/utils\"\n\nexport default class PlnLoader extends LoaderBase{\n loadMain(buffer) {\n const chunkData = readChunk(buffer);\n const geometry = this.prepareGeometry(chunkData);\n return geometry;\n }\n}\n","import containersCache from \"_src/engine/packers/containers_cache\";\nimport {arrayDataToNumber, readDDs} from \"_src/utils\";\n\nexport default class Image2D {\n\n constructor() {\n\n this.image = new Image();\n this.buffer = null;\n\n this.width = 0;\n this.height = 0;\n\n }\n\n loadSliced(path, id, controller, progressCallback = null, releaseAfterUse = true) {\n\n return new Promise((resolve, reject) => {\n\n let imageUrl;\n\n this.image.onload = () => {\n this.width = this.image.width;\n this.height = this.image.height;\n resolve(this);\n if (releaseAfterUse) URL.revokeObjectURL(imageUrl);\n };\n\n this.image.onerror = (error) => {\n reject(error);\n URL.revokeObjectURL(imageUrl);\n };\n\n containersCache.getBuffer(path, id, controller, progressCallback).then((buffer) => {\n if (readDDs(buffer, this)) resolve(this);\n if (this.readRawImage(buffer)) resolve(this);\n\n const blob = new Blob([buffer]);\n imageUrl = URL.createObjectURL(blob);\n this.image.src = imageUrl;\n }).then(undefined, (error) => reject(error));\n\n });\n\n }\n\n getBuffer() {\n return this.buffer;\n }\n\n getImage() {\n return this.image;\n }\n\n readRawImage(buffer) {\n const HEADER_SIZE = 17;\n if (buffer.byteLength < HEADER_SIZE) return false;\n\n const width = arrayDataToNumber(buffer, 1, 4);\n const height = arrayDataToNumber(buffer, 5, 4);\n const channels = arrayDataToNumber(buffer, 9, 4);\n\n const valueSize = 4;\n const expectedDataSize = width*height*channels*valueSize;\n const realDataSize = buffer.byteLength - HEADER_SIZE;\n if (expectedDataSize !== realDataSize) return false;\n\n this.width = width;\n this.height = height;\n this.buffer = new Float32Array(buffer.slice(HEADER_SIZE));\n\n return true;\n }\n\n}\n","export default window.AbortController;","import arrayTools from \"_src/engine/utility/arrays\";\nimport {Geometry, GeometryBuffer} from \"_src/engine/geometry\";\nimport {bufferType} from \"_src/engine/constants\";\nimport downloader from \"_src/engine/loaders/downloader\";\n\nexport const LoaderDataType = {\n TEXT: 0,\n BINARY: 1,\n STREAM: 2,\n}\n\nexport class ObjectData {\n constructor(geometry, material) {\n this.geometry = geometry;\n this.material = material;\n }\n}\n\nexport class GeometryRawData {\n constructor(positions) {\n this.positions = positions;\n this.indices = null;\n this.normals = null;\n this.uvs = null;\n }\n}\n\nexport class Material {\n constructor() {\n this.flipTexture = true;\n this.baseTexture = null;\n this.metallicRoughnessTexture = null;\n }\n}\n\nexport default class ExternalLoader {\n constructor() {\n this._basePath = \"\";\n this._dataType = LoaderDataType.BINARY;\n }\n\n async load(path, controller, useWorkers = false, progress = null) {\n this._basePath = path.substring(0, path.lastIndexOf(\"/\")) + \"/\";\n\n const loadingProgress = progress ? (progressVal) => progress.emit(progress.LOADING, progressVal / 2) : null;\n const dataType = _loaderTypeToDownloaderType(this._dataType);\n const data = await downloader.download(path, controller, dataType, loadingProgress);\n const objectsRawData = await this._parse(data, progress, useWorkers);\n const objectsData = _createGeometry(objectsRawData);\n\n return objectsData;\n }\n\n async _parse() {\n throw new Error(\"ExternalLoader is an abstract class. Reimplement parsing function\");\n }\n}\n\nfunction _loaderTypeToDownloaderType(loaderType) {\n switch (loaderType) {\n case LoaderDataType.TEXT:\n return downloader.TEXT;\n case LoaderDataType.BINARY:\n return downloader.BINARY;\n case LoaderDataType.STREAM:\n return downloader.READER;\n }\n}\n\nfunction _getTypedArray(array, constructor) {\n let typedArray;\n if (array.buffer instanceof ArrayBuffer) {\n typedArray = array;\n } else {\n typedArray = new constructor(array.length);\n typedArray.set(array);\n }\n\n return typedArray;\n}\n\nfunction _createGeometry(objectsRawData) {\n const objectsData = [];\n for (const objectRawData of objectsRawData) {\n const rawGeometry = objectRawData.geometry;\n const positions = rawGeometry.positions;\n const normals = rawGeometry.normals;\n const uvs = rawGeometry.uvs;\n const indices = rawGeometry.indices && rawGeometry.indices.length > 0 ? rawGeometry.indices : _generateDefaultIndices(positions.length / 3);\n const bbox = _getBbox(positions);\n\n const layout = {};\n\n const maxValue = positions.length / 3 - 1;\n const indicesArrayConstructor = arrayTools.uintArrayTypeByMaxValue(maxValue);\n const indicesTypedArray = _getTypedArray(indices, indicesArrayConstructor);\n const indType = arrayTools.uintArrayType(indicesTypedArray, 3);\n const indicesItem = new GeometryBuffer({buffer: indicesTypedArray.buffer, type: indType});\n layout[\"indices\"] = indicesItem;\n\n if (positions && positions.length) {\n const posTypedArray = _getTypedArray(positions, Float32Array);\n const positionItem = new GeometryBuffer({buffer: posTypedArray.buffer, type: bufferType.F32_3});\n layout[\"a_position\"] = positionItem;\n }\n\n if (normals && normals.length) {\n const normTypedArray = _getTypedArray(normals, Float32Array);\n const normalItem = new GeometryBuffer({buffer: normTypedArray.buffer, type: bufferType.F32_3});\n layout[\"a_normal\"] = normalItem;\n }\n\n if (uvs && uvs.length) {\n const uvTypedArray = _getTypedArray(uvs, Float32Array);\n const uvItem = new GeometryBuffer({buffer: uvTypedArray.buffer, type: bufferType.F32_2});\n layout[\"a_uv\"] = uvItem;\n }\n\n const geometry = new Geometry({layout, bbox});\n const objectData = new ObjectData(geometry, objectRawData.material);\n\n objectsData.push(objectData);\n }\n\n return objectsData;\n}\n\nfunction _generateDefaultIndices(count) {\n const res = new Uint32Array(count);\n for (let i=0; i 0 ) {\n\n const vertexParts = vertex.split( \"/\" );\n faceVertices.push( vertexParts );\n\n }\n\n }\n\n // Draw an edge between the first vertex and all subsequent vertices to form an n-gon\n const v1 = faceVertices[ 0 ];\n\n for ( let j = 1, jl = faceVertices.length - 1; j < jl; j ++ ) {\n const v2 = faceVertices[ j ];\n const v3 = faceVertices[ j + 1 ];\n const v1p = _parseAndFixIndex(v1[0], INDICES_ID, verticesSizes);\n const v2p = _parseAndFixIndex(v2[0], INDICES_ID, verticesSizes);\n const v3p = _parseAndFixIndex(v3[0], INDICES_ID, verticesSizes);\n const v1t = v1[1] ? _parseAndFixIndex(v1[1], UVS_INDICES_ID, verticesSizes) : null;\n const v2t = v2[1] ? _parseAndFixIndex(v2[1], UVS_INDICES_ID, verticesSizes) : null;\n const v3t = v3[1] ? _parseAndFixIndex(v3[1], UVS_INDICES_ID, verticesSizes) : null;\n const v1n = v1[2] ? _parseAndFixIndex(v1[2], NORMALS_INDICES_ID, verticesSizes) : null;\n const v2n = v2[2] ? _parseAndFixIndex(v2[2], NORMALS_INDICES_ID, verticesSizes) : null;\n const v3n = v3[2] ? _parseAndFixIndex(v3[2], NORMALS_INDICES_ID, verticesSizes) : null;\n\n if (!parserState.uvsIndicesEnabled && (v1t !== null && v2t !== null && v3t !== null) && (v1p !== v1t || v2p !== v2t || v3p !== v3t)) {\n if (indicesBuffer.storage[indicesBuffer.INDICES]) {\n indicesBuffer.storage[indicesBuffer.UVS_INDICES] = indicesBuffer.storage[indicesBuffer.INDICES].slice();\n indicesBuffer.pointers[indicesBuffer.UVS_INDICES] = indicesBuffer.pointers[indicesBuffer.INDICES];\n }\n parserState.uvsIndicesEnabled = true;\n }\n if (!parserState.normalsIndicesEnabled && (v1n !== null && v2n !== null && v3n !== null) && (v1p !== v1n || v2p !== v2n || v3p !== v3n)) {\n if (indicesBuffer.storage[indicesBuffer.INDICES]) {\n indicesBuffer.storage[indicesBuffer.NORMALS_INDICES] = indicesBuffer.storage[indicesBuffer.INDICES].slice();\n indicesBuffer.pointers[indicesBuffer.NORMALS_INDICES] = indicesBuffer.pointers[indicesBuffer.INDICES];\n }\n parserState.normalsIndicesEnabled = true;\n }\n\n pushToBuffer(indicesBuffer, indicesBuffer.INDICES, v1p);\n pushToBuffer(indicesBuffer, indicesBuffer.INDICES, v2p);\n pushToBuffer(indicesBuffer, indicesBuffer.INDICES, v3p);\n if (parserState.uvsIndicesEnabled) {\n pushToBuffer(indicesBuffer, indicesBuffer.UVS_INDICES, v1t);\n pushToBuffer(indicesBuffer, indicesBuffer.UVS_INDICES, v2t);\n pushToBuffer(indicesBuffer, indicesBuffer.UVS_INDICES, v3t);\n }\n if (parserState.normalsIndicesEnabled) {\n pushToBuffer(indicesBuffer, indicesBuffer.NORMALS_INDICES, v1n);\n pushToBuffer(indicesBuffer, indicesBuffer.NORMALS_INDICES, v2n);\n pushToBuffer(indicesBuffer, indicesBuffer.NORMALS_INDICES, v3n);\n }\n }\n\n } else if ( lineFirstChar === \"l\" ) {\n\n continue;\n\n } else if ( lineFirstChar === \"p\" ) {\n\n continue;\n\n } else if ( ( regexpResult = _object_pattern.exec( line ) ) !== null ) {\n\n // o object_name\n // or\n // g group_name\n\n // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869\n // let name = result[ 0 ].slice( 1 ).trim();\n const name = ( \" \" + regexpResult[ 0 ].slice( 1 ).trim() ).slice( 1 );\n state.updateUnnamed(name);\n\n parserState.currentObjectName = name;\n parserState.normalsIndicesEnabled = false;\n parserState.uvsIndicesEnabled = false;\n\n } else if ( _material_use_pattern.test( line ) ) {\n\n continue;\n\n } else if ( _material_library_pattern.test( line ) ) {\n\n state.materialLibraries.push( line.substring( 7 ).trim() );\n\n } else if ( _map_use_pattern.test( line ) ) {\n\n // the line is parsed but ignored since the loader assumes textures are defined MTL files\n // (according to https://www.okino.com/conv/imp_wave.htm, \"usemap\" is the old-style Wavefront texture reference method)\n\n output.warn( \"ExternalLoader.OBJLoader: Rendering identifier 'usemap' not supported. Textures must be defined in MTL files.\" );\n\n } else if ( lineFirstChar === \"s\" ) {\n\n continue;\n\n } else {\n\n // Handle null terminated files without exception\n if ( line === \"\\0\" ) continue;\n\n output.warn( \"ExternalLoader.OBJLoader: Unexpected line: \" + line);\n\n }\n\n }\n },\n\n shrinkBufferToFit(bufferContainer) {\n for (const bufferId of [POSITIONS_ID, NORMALS_ID, UVS_ID, INDICES_ID, UVS_INDICES_ID, NORMALS_INDICES_ID]) {\n const buffer = bufferContainer.storage[bufferId];\n if (!buffer) continue;\n\n bufferContainer.storage[bufferId] = bufferContainer.storage[bufferId].subarray(0, bufferContainer.pointers[bufferId]);\n }\n },\n\n pushToBuffer,\n}\n\nfunction pushToBuffer(bufferContainter, bufferType, data) {\n if (data === undefined) return;\n const bufferSizeLimit = 1850000000 / 4; //1.8gb / 4bytes per float ot uint\n\n const length = ArrayBuffer.isView(data) ? data.length : 1;\n if (!bufferContainter.storage[bufferType]) {\n bufferContainter.storage[bufferType] = new (_bufferConstructorById(bufferType))(length);\n bufferContainter.pointers[bufferType] = 0;\n }\n\n if (bufferContainter.storage[bufferType].length < bufferContainter.pointers[bufferType] + length) {\n const oldBuffer = bufferContainter.storage[bufferType];\n const sizeRequest = bufferContainter.pointers[bufferType] + length;\n if (sizeRequest > bufferSizeLimit) {\n throw new Error( \"ExternalLoader.ObjLoader: model is too big\");\n }\n const newSize = Math.min(bufferSizeLimit, sizeRequest * 2);\n bufferContainter.storage[bufferType] = new (_bufferConstructorById(bufferType))(newSize);\n bufferContainter.storage[bufferType].set(oldBuffer);\n }\n\n if (ArrayBuffer.isView(data)) {\n bufferContainter.storage[bufferType].set(data, bufferContainter.pointers[bufferType]);\n bufferContainter.pointers[bufferType] += data.length;\n } else {\n bufferContainter.storage[bufferType][bufferContainter.pointers[bufferType]++] = data;\n }\n}\n\nfunction _parseAndFixIndex(stringVal, bufferId, verticesSizes) {\n let bufferLength;\n switch (bufferId) {\n case INDICES_ID:\n bufferLength = verticesSizes[POSITIONS_ID];\n break\n case NORMALS_INDICES_ID:\n bufferLength = verticesSizes[NORMALS_ID];\n break;\n case UVS_INDICES_ID:\n bufferLength = verticesSizes[UVS_ID];\n break;\n }\n\n let index = parseInt(stringVal, 10);\n if (index < 0) index = bufferLength + index + 1;\n\n index--;\n return index;\n}\n\nconst POSITIONS_ID = 0;\nconst NORMALS_ID = 1;\nconst UVS_ID = 2;\nconst INDICES_ID = 3;\nconst UVS_INDICES_ID = 4;\nconst NORMALS_INDICES_ID = 5;\nclass ReallocatingArrayBuffer {\n constructor() {\n this.POSITIONS = POSITIONS_ID;\n this.NORMALS = NORMALS_ID;\n this.UVS = UVS_ID;\n this.INDICES = INDICES_ID;\n this.UVS_INDICES = UVS_INDICES_ID;\n this.NORMALS_INDICES = NORMALS_INDICES_ID;\n\n this.storage = [];\n this.pointers = [];\n }\n}\n\nfunction _bufferConstructorById(id) {\n switch (id) {\n case POSITIONS_ID:\n case NORMALS_ID:\n case UVS_ID:\n return Float32Array;\n case INDICES_ID:\n case NORMALS_INDICES_ID:\n case UVS_INDICES_ID:\n return Uint32Array;\n default:\n return null;\n }\n}\n\nexport class State {\n constructor() {\n this.vertices = new ReallocatingArrayBuffer();\n this.objects = {};\n this.unnamedObject = null;\n this.materialLibraries = [];\n }\n\n getVerticesSizes() {\n const sizes = [];\n sizes[POSITIONS_ID] = this.vertices.pointers[POSITIONS_ID] ? this.vertices.pointers[POSITIONS_ID] / 3 : 0;\n sizes[NORMALS_ID] = this.vertices.pointers[NORMALS_ID] ? this.vertices.pointers[NORMALS_ID] / 3 : 0;\n sizes[UVS_ID] = this.vertices.pointers[UVS_ID] ? this.vertices.pointers[UVS_ID] / 2 : 0;\n\n return sizes;\n }\n\n getIndicesBuffer(objectName) {\n if (objectName) {\n if (!this.objects[objectName]) {\n this.objects[objectName] = new ReallocatingArrayBuffer();\n }\n\n return this.objects[objectName];\n } else {\n if (!this.unnamedObject) {\n this.unnamedObject = new ReallocatingArrayBuffer();\n }\n\n return this.unnamedObject;\n }\n }\n\n updateUnnamed(name) {\n if (this.unnamedObject) {\n this.objects[name] = this.unnamedObject;\n this.unnamedObject = null;\n }\n }\n}\n","export class StreamProxy {\n constructor(stream, progress = null) {\n this._stream = stream;\n this._queue = [];\n this._done = true;\n this._fetchPromise = null;\n this._maxGetSize = 50000000; //50MB\n this._bytesRead = 0;\n this._progress = progress;\n }\n\n async start() {\n this._done = false;\n while (!this._done) {\n this._fetchPromise = this._stream.read();\n const {done, value} = await this._fetchPromise;\n this._done = done;\n if (!done) this._queue.push(value);\n }\n }\n\n //merge and pop queue head into chunk (withUnion==true) or pop first chunk (withUnion==false)\n async getChunk(withUnion = true) {\n if (this._queue.length === 0 && !this._done) await this._fetchPromise;\n if (this._queue.length === 0) return null;\n\n const unionSize = withUnion ? this._queue.length : 1;\n return this._popChunkUnion(unionSize);\n }\n\n //merge and pop queue head without last element into chunk and return last element\n async getTwoChunks() {\n while (this._queue.length < 2 && !this._done) {\n await this._fetchPromise;\n }\n if (this._queue.length === 0) return [null, null];\n if (this._queue.length === 1) return [this._queue.shift(), null];\n\n let firstChunk = this._popChunkUnion(this._queue.length-1);\n let secondChunk = this._queue[0];\n return [firstChunk, secondChunk];\n }\n\n _popChunkUnion(count) {\n let totalSize = this._queue[0].byteLength;\n let chunksCount = 1;\n for (;chunksCount this._maxGetSize) break;\n\n totalSize+=chunk.byteLength;\n }\n\n let union;\n if (chunksCount === 1) {\n union = this._queue.shift();\n } else {\n union = new Uint8Array(totalSize);\n let unionPtr = 0;\n for (let i=0; i Boolean(buffer) && Boolean(buffer.storage[buffer.INDICES]));\n for (const indicesBuffer of indicesBuffers) {\n objCommon.shrinkBufferToFit(indicesBuffer);\n\n let positions, indices, normals, uvs;\n const needToCopyVertices = indicesBuffers.length > 1 || indicesBuffer.storage[indicesBuffer.UVS_INDICES] || indicesBuffer.storage[indicesBuffer.NORMALS_INDICES]\n if (needToCopyVertices) {\n if (indicesBuffer.storage[indicesBuffer.INDICES].length * 3 > bufferSizeLimit) {\n throw new Error( \"ExternalLoader.ObjLoader: model is too big\");\n }\n positions = new Float32Array(indicesBuffer.storage[indicesBuffer.INDICES].length * 3);\n normals = verticesBuffer.storage[verticesBuffer.NORMALS] ? new Float32Array(indicesBuffer.storage[indicesBuffer.INDICES].length * 3) : null;\n uvs = verticesBuffer.storage[verticesBuffer.UVS] ? new Float32Array(indicesBuffer.storage[indicesBuffer.INDICES].length * 2) : null;\n indices = new Uint32Array(indicesBuffer.storage[indicesBuffer.INDICES].length);\n const positionsIndices = indicesBuffer.storage[indicesBuffer.INDICES];\n const uVsIndices = indicesBuffer.storage[indicesBuffer.UVS_INDICES] ? indicesBuffer.storage[indicesBuffer.UVS_INDICES] : positionsIndices;\n const normalsIndices = indicesBuffer.storage[indicesBuffer.NORMALS_INDICES] ? indicesBuffer.storage[indicesBuffer.NORMALS_INDICES] : positionsIndices;\n for (let i=0; i textures.add(basePath + texturePath));\n }\n const texturesArray = Array.from(textures);\n for (let i=0; i= 0 ) ? line.substring( 0, pos ) : line;\n key = key.toLowerCase();\n\n let value = ( pos >= 0 ) ? line.substring( pos + 1 ) : \"\";\n value = value.trim();\n\n if ( key === \"map_kd\") {\n texturePaths.push(value);\n }\n }\n\n return texturePaths;\n }\n }\n}\n","let _decoder;\nlet _facesCount;\nlet _facesRead;\nlet _overReadLength;\nlet _unparsedTail;\n\nexport default {\n init(facesCount = null) {\n _decoder = new TextDecoder();\n _facesCount = facesCount;\n _facesRead = 0;\n _overReadLength = 0;\n _unparsedTail = \"\";\n },\n\n decodeASCII(dataChunk, buffer) {\n const textChunk = _unparsedTail + _decoder.decode(dataChunk, {stream: true});\n const patternFace = /facet([\\s\\S]*?)endfacet/g;\n\n const patternFloat = /[\\s]+([+-]?(?:\\d*)(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/.source;\n const patternVertex = new RegExp( \"vertex\" + patternFloat + patternFloat + patternFloat, \"g\" );\n const patternNormal = new RegExp( \"normal\" + patternFloat + patternFloat + patternFloat, \"g\" );\n\n let normalX = 0;\n let normalY = 0;\n let normalZ = 0;\n\n let result;\n let unreadPosition = 0;\n while ( ( result = patternFace.exec( textChunk ) ) !== null) {\n unreadPosition = patternFace.lastIndex;\n\n let vertexCountPerFace = 0;\n let normalCountPerFace = 0;\n\n const text = result[ 0 ];\n while ( ( result = patternNormal.exec( text ) ) !== null ) {\n\n normalX = parseFloat( result[ 1 ] );\n normalY = parseFloat( result[ 2 ] );\n normalZ = parseFloat( result[ 3 ] );\n normalCountPerFace ++;\n\n }\n\n while ( ( result = patternVertex.exec( text ) ) !== null ) {\n const vertexX = parseFloat( result[ 1 ]);\n const vertexY = parseFloat( result[ 2 ]);\n const vertexZ = parseFloat( result[ 3 ]);\n\n buffer.push(buffer.VERTICES, vertexX);\n buffer.push(buffer.VERTICES, vertexY);\n buffer.push(buffer.VERTICES, vertexZ);\n\n buffer.push(buffer.NORMALS, normalX);\n buffer.push(buffer.NORMALS, normalY);\n buffer.push(buffer.NORMALS, normalZ);\n\n vertexCountPerFace ++;\n }\n\n // every face have to own ONE valid normal\n if ( normalCountPerFace !== 1 ) {\n throw new Error( \"ExternalLoader.StlLoader: Something isn't right with the normal of face number \" + _facesRead);\n }\n\n // each face have to own THREE valid vertices\n\n if ( vertexCountPerFace !== 3 ) {\n throw new Error (\"ExternalLoader.StlLoader: Something isn't right with the vertices of face number \" + _facesRead);\n }\n\n _facesRead++;\n }\n _unparsedTail = textChunk.slice(unreadPosition);\n },\n\n decodeBinary(dataChunk, dataSize, buffer) {\n const faceLength = 12 * 4 + 2;\n const view = new DataView(dataChunk.buffer);\n\n let pos = _overReadLength\n while (pos < dataSize && _facesRead < _facesCount) {\n const normalX = view.getFloat32( pos, true );\n const normalY = view.getFloat32( pos + 4, true );\n const normalZ = view.getFloat32( pos + 8, true );\n\n for ( let i = 1; i <= 3; i ++ ) {\n const vertexstart = pos + i * 12;\n const vertexX = view.getFloat32( vertexstart, true );\n const vertexY = view.getFloat32( vertexstart + 4, true );\n const vertexZ = view.getFloat32( vertexstart + 8, true );\n\n buffer.push(buffer.VERTICES, vertexX);\n buffer.push(buffer.VERTICES, vertexY);\n buffer.push(buffer.VERTICES, vertexZ);\n\n buffer.push(buffer.NORMALS, normalX);\n buffer.push(buffer.NORMALS, normalY);\n buffer.push(buffer.NORMALS, normalZ);\n }\n\n pos += faceLength;\n _facesRead++;\n }\n\n _overReadLength = pos - dataSize;\n },\n}\n\nexport class Buffer {\n constructor() {\n this.VERTICES = 0;\n this.NORMALS = 1;\n\n this.store = [];\n }\n\n push(bufferType, value) {\n throw new Error(\"Buffer is an abstract class. Reimplement push function.\" + bufferType + value);\n }\n}\n","// mostly copied from https://github.com/mrdoob/three.js/blob/dev/examples/jsm/loaders/STLLoader.js\nimport ExternalLoader, {\n GeometryRawData,\n LoaderDataType,\n Material,\n ObjectData\n} from \"_src/engine/loaders/external/external_loader\";\nimport config from \"_src/config\";\nimport {messageType} from \"_src/engine/ipc\";\nimport workerManager from \"_src/engine/worker_manager\";\nimport stlCommon, {Buffer} from \"_src/engine/loaders/external/stl/stl_common\";\nimport output from \"_src/engine/output\";\nimport {StreamProxy} from \"_src/engine/loaders/external/utils\";\n\nconst bufferSizeLimit = 1850000000 / 4; //1.8gb / 4bytes per float ot uint\nexport default class StlLoader extends ExternalLoader {\n constructor() {\n super();\n this._dataType = LoaderDataType.STREAM;\n\n this._headerTailDataChunk = null;\n this._isBinary = false;\n this._facesCount = null;\n }\n\n async _parse(reader, progress = null) {\n async function parseHeader() {\n const headerLength = 84;\n let dataChunk = await streamProxy.getChunk(false);\n if (!dataChunk) {\n throw new Error( \"ExternalLoader.StlLoader: Stl file is empty\");\n }\n\n while (dataChunk.byteLength < headerLength) {\n const nextChunk = await streamProxy.getChunk(false);\n if (!nextChunk) {\n throw new Error( \"ExternalLoader.StlLoader: header is truncated\");\n }\n\n const totalLength = dataChunk.byteLength + nextChunk.byteLength;\n const mergedChunk = new Uint8Array(totalLength);\n mergedChunk.set(dataChunk, 0);\n mergedChunk.set(nextChunk, dataChunk.byteLength);\n dataChunk = mergedChunk;\n }\n\n scope._isBinary = _isBinary(dataChunk);\n scope._facesCount = scope._isBinary ? (new DataView(dataChunk.buffer)).getUint32(80, true) : null;\n\n if (scope._isBinary) {\n scope._headerTailDataChunk = dataChunk.byteLength > headerLength ? dataChunk.subarray(headerLength) : null;\n } else {\n scope._headerTailDataChunk = dataChunk;\n }\n }\n\n async function parseBinary() {\n class FixedSizeBuffer extends Buffer {\n constructor(facesCount) {\n super();\n\n if (3 * 3 * facesCount > bufferSizeLimit) {\n throw new Error( \"ExternalLoader.StlLoader: model is too big\");\n }\n this.store[this.VERTICES] = new Float32Array(3 * 3 * facesCount);\n this.store[this.NORMALS] = new Float32Array(3 * 3 * facesCount);\n this.pointers = [0, 0];\n }\n\n push(bufferType, data) {\n if (ArrayBuffer.isView(data)) {\n this.store[bufferType].set(data, this.pointers[bufferType]);\n this.pointers[bufferType] += data.length;\n } else {\n this.store[bufferType][this.pointers[bufferType]++] = data;\n }\n }\n }\n const buffer = new FixedSizeBuffer(scope._facesCount);\n\n let currentChunk;\n let nextChunk;\n let dataView;\n let dataSize;\n\n const buildDataView = () => {\n let mergedChunk = null;\n if (currentChunk && nextChunk) {\n const totalLength = currentChunk.byteLength + nextChunk.byteLength;\n mergedChunk = new Uint8Array(totalLength);\n mergedChunk.set(currentChunk, 0);\n mergedChunk.set(nextChunk, currentChunk.byteLength);\n } else if (currentChunk) {\n mergedChunk = currentChunk;\n }\n dataView = mergedChunk ? new DataView(mergedChunk.buffer) : null;\n dataSize = currentChunk ? currentChunk.byteLength : 0;\n }\n const advanceChunks = async () => {\n [currentChunk, nextChunk] = await streamProxy.getTwoChunks();\n }\n\n await advanceChunks();\n if (scope._headerTailDataChunk) {\n if (currentChunk) {\n const mergedChunk = new Uint8Array(scope._headerTailDataChunk.length + currentChunk.length);\n mergedChunk.set(scope._headerTailDataChunk);\n mergedChunk.set(currentChunk, scope._headerTailDataChunk.byteLength);\n currentChunk = mergedChunk;\n } else {\n currentChunk = scope._headerTailDataChunk;\n }\n }\n buildDataView();\n\n if (!dataView) {\n throw new Error( \"ExternalLoader.StlLoader: No data after header\");\n }\n for (;;) {\n const parsePromise = parseChunk(dataView, dataSize, buffer);\n const loadPromise = advanceChunks();\n\n await Promise.all([loadPromise, parsePromise]);\n buildDataView();\n if (!dataView) break;\n }\n if (buffer.pointers[buffer.VERTICES] !== buffer.store[buffer.VERTICES].length) {\n output.warn( \"ExternalLoader.StlLoader: File contains less faces than described in the header\");\n }\n\n return postProcess( buffer );\n }\n\n async function parseASCII() {\n class ReallocatingBuffer extends Buffer {\n constructor() {\n super();\n\n this.store[this.VERTICES] = new Float32Array(1);\n this.store[this.NORMALS] = new Float32Array(1);\n this.pointers = [0, 0];\n }\n\n push(bufferType, data) {\n const length = ArrayBuffer.isView(data) ? data.length : 1;\n if (this.store[bufferType].length < this.pointers[bufferType] + length) {\n const oldBuffer = this.store[bufferType];\n const sizeRequest = this.pointers[bufferType] + length;\n if (sizeRequest > bufferSizeLimit) {\n throw new Error( \"ExternalLoader.ObjLoader: model is too big\");\n }\n const newSize = Math.min(bufferSizeLimit, sizeRequest * 2);\n this.store[bufferType] = new Float32Array(newSize);\n this.store[bufferType].set(oldBuffer);\n }\n\n if (ArrayBuffer.isView(data)) {\n this.store[bufferType].set(data, this.pointers[bufferType]);\n this.pointers[bufferType] += data.length;\n } else {\n this.store[bufferType][this.pointers[bufferType]++] = data;\n }\n }\n\n shrinkToFit() {\n this.store[this.VERTICES] = this.store[this.VERTICES].subarray(0, this.pointers[this.VERTICES]);\n this.store[this.NORMALS] = this.store[this.NORMALS].subarray(0, this.pointers[this.NORMALS]);\n }\n }\n const buffer = new ReallocatingBuffer();\n\n let dataChunk = scope._headerTailDataChunk ? scope._headerTailDataChunk : await streamProxy.getChunk();\n if (!dataChunk) {\n throw new Error( \"ExternalLoader.StlLoader: No data after header\");\n }\n\n for (;;) {\n const parsePromise = parseChunk(dataChunk, 0, buffer);\n const loadPromise = streamProxy.getChunk();\n\n dataChunk = (await Promise.all([loadPromise, parsePromise]))[0];\n if (!dataChunk) break;\n }\n\n buffer.shrinkToFit();\n\n return postProcess( buffer );\n }\n\n function postProcess( buffer ) {\n const geometryData = new GeometryRawData(buffer.store[buffer.VERTICES]);\n geometryData.normals = buffer.store[buffer.NORMALS];\n const materialData = new Material();\n const objectData = new ObjectData(geometryData, materialData);\n\n return objectData;\n }\n\n async function initParser() {\n config.useWorkers ? await initParserWorker() : await initParserMain();\n }\n\n async function initParserWorker() {\n const message = {\n type : messageType.INIT_STL,\n facesCount : scope._facesCount,\n };\n const tid = workerManager.generateUniqueID();\n await workerManager.sendMessage(message, [], tid);\n }\n\n async function initParserMain() {\n stlCommon.init(scope._facesCount);\n }\n\n async function parseChunk(dataChunk, dataSize, buffer) {\n config.useWorkers ? await parseChunkWorker(dataChunk, dataSize, buffer) : await parseChunkMain(dataChunk, dataSize, buffer);\n }\n\n async function parseChunkMain(dataChunk, dataSize, buffer) {\n scope._isBinary ? stlCommon.decodeBinary(dataChunk, dataSize, buffer) : stlCommon.decodeASCII(dataChunk, buffer);\n }\n\n async function parseChunkWorker(dataChunk, dataSize, buffer) {\n const message = {\n type : messageType.PARSE_STL,\n dataChunk : dataChunk,\n dataSize : dataSize,\n isBinary : scope._isBinary,\n };\n const tid = workerManager.generateUniqueID();\n const transfer = [dataChunk.buffer];\n\n const workerData = (await workerManager.sendMessage(message, transfer, tid)).data;\n buffer.push(buffer.VERTICES, workerData.vertices);\n buffer.push(buffer.NORMALS, workerData.normals);\n }\n\n const scope = this;\n const streamProxy = new StreamProxy(reader, progress);\n streamProxy.start();\n await parseHeader();\n await initParser();\n\n const objectData = scope._isBinary ? await parseBinary() : await parseASCII();\n\n if (progress) progress.emit(progress.LOADING, 1);\n return [objectData];\n }\n}\n\nfunction _isBinary( data ) {\n function matchDataViewAt( query, view, offset ) {\n // Check if each byte in query matches the corresponding byte from the current offset\n for ( let i = 0, il = query.length; i < il; i ++ ) {\n if ( query[ i ] !== view.getUint8( offset + i ) ) return false;\n }\n return true;\n }\n\n const view = new DataView(data.buffer);\n // An ASCII STL data must begin with 'solid ' as the first six bytes.\n // However, ASCII STLs lacking the SPACE after the 'd' are known to be\n // plentiful. So, check the first 5 bytes for 'solid'.\n\n // Several encodings, such as UTF-8, precede the text with up to 5 bytes:\n // https://en.wikipedia.org/wiki/Byte_order_mark#Byte_order_marks_by_encoding\n // Search for \"solid\" to start anywhere after those prefixes.\n\n // US-ASCII ordinal values for 's', 'o', 'l', 'i', 'd'\n const solid = [ 115, 111, 108, 105, 100 ];\n for ( let off = 0; off < 5; off ++ ) {\n // If \"solid\" text is matched to the current offset, declare it to be an ASCII STL.\n if ( matchDataViewAt( solid, view, off ) ) return false;\n }\n\n // Couldn't find \"solid\" text at the beginning; it is binary STL.\n return true;\n}\n\n","let _decoder;\nlet _truncatedLine;\nlet _overReadLength;\nlet _header;\nlet _currentElement;\nlet _currentElementCount;\n\nexport default {\n init(header) {\n _decoder = new TextDecoder();\n _truncatedLine = \"\";\n _overReadLength = 0;\n _header = header;\n _currentElement = 0;\n _currentElementCount = 0;\n },\n\n decodeASCII(dataChunk, buffer) {\n const textChunk = _decoder.decode(dataChunk, {stream: true});\n\n const lines = textChunk.split(/\\r\\n|\\r|\\n/);\n lines[0] = _truncatedLine + lines[0];\n const lastLine = lines[lines.length - 1];\n const isLastLineFull = lastLine.endsWith(\"\\r\\n\") || lastLine.endsWith(\"\\r\") || lastLine.endsWith(\"\\n\");\n const tailDrop = isLastLineFull ? 0 : 1;\n _truncatedLine = isLastLineFull ? \"\" : lastLine;\n\n for (let i = 0; i < lines.length - tailDrop; i++) {\n let line = lines[i];\n line = line.trim();\n if (line === \"\") {\n continue;\n }\n\n if (_currentElementCount >= _header.elements[_currentElement].count) {\n _currentElement++;\n _currentElementCount = 0;\n }\n\n const element = _parseASCIIElement(_header.elements[_currentElement].properties, line);\n\n _handleElement(buffer, _header.elements[_currentElement].name, element);\n\n _currentElementCount++;\n }\n },\n\n decodeBinary(dataChunk, dataSize, buffer) {\n const little_endian = ( _header.format === \"binary_little_endian\" );\n\n let loc = _overReadLength;\n while (loc < dataSize) {\n if (_currentElementCount >= _header.elements[_currentElement].count) {\n _currentElement++;\n _currentElementCount = 0;\n }\n\n const elemAndSize = _binaryReadElement( dataChunk, loc, _header.elements[ _currentElement ].properties, little_endian );\n const element = elemAndSize[ 0 ];\n loc += elemAndSize[ 1 ];\n _handleElement(buffer, _header.elements[_currentElement].name, element);\n\n _currentElementCount++;\n }\n\n _overReadLength = loc - dataSize;\n },\n\n arrayConstructorByType(type) {\n switch ( type ) {\n // Note: currently webstudio doesn't support signed integers as indices\n case \"int8\":\t\tcase \"char\": case \"uint8\":\t\tcase \"uchar\":\t return Uint8Array;\n case \"int16\":\t\tcase \"short\": case \"uint16\":\tcase \"ushort\": return Uint16Array;\n case \"int32\":\t\tcase \"int\":\t case \"uint32\":\tcase \"uint\":\t return Uint32Array;\n case \"float32\": case \"float\":\t return Float32Array;\n case \"float64\": case \"double\": return Float64Array;\n }\n },\n}\n\nexport class Buffer {\n constructor() {\n this.VERTICES = 0;\n this.INDICES = 1;\n this.NORMALS = 2;\n this.UVS = 3;\n\n this.elementsByFace = 0;\n }\n\n push(bufferType, value) {\n throw new Error(\"Buffer is an abstract class. Reimplement push function.\" + bufferType + value);\n }\n\n updateElementsByFace(newCount) {\n this.elementsByFace = Math.max(this.elementsByFace, newCount);\n }\n\n checkOrInitIndices() {}\n}\n\nfunction _parseASCIIElement( properties, line ) {\n\n const values = line.split( /\\s+/ );\n\n const element = {};\n\n for ( let i = 0; i < properties.length; i ++ ) {\n\n if ( properties[ i ].type === \"list\" ) {\n\n const list = [];\n const n = _parseASCIINumber( values.shift(), properties[ i ].countType );\n\n for ( let j = 0; j < n; j ++ ) {\n\n list.push( _parseASCIINumber( values.shift(), properties[ i ].itemType ) );\n\n }\n\n element[ properties[ i ].name ] = list;\n\n } else {\n\n element[ properties[ i ].name ] = _parseASCIINumber( values.shift(), properties[ i ].type );\n\n }\n\n }\n\n return element;\n\n}\n\nfunction _parseASCIINumber( n, type ) {\n\n switch ( type ) {\n\n case \"char\": case \"uchar\": case \"short\": case \"ushort\": case \"int\": case \"uint\":\n case \"int8\": case \"uint8\": case \"int16\": case \"uint16\": case \"int32\": case \"uint32\":\n\n return parseInt( n );\n\n case \"float\": case \"double\": case \"float32\": case \"float64\":\n\n return parseFloat( n );\n\n }\n\n}\n\nfunction _binaryReadElement( dataview, at, properties, little_endian ) {\n\n const element = {};\n let result, read = 0;\n\n for ( let i = 0; i < properties.length; i ++ ) {\n\n if ( properties[ i ].type === \"list\" ) {\n\n const list = [];\n\n result = _binaryRead( dataview, at + read, properties[ i ].countType, little_endian );\n const n = result[ 0 ];\n read += result[ 1 ];\n\n for ( let j = 0; j < n; j ++ ) {\n\n result = _binaryRead( dataview, at + read, properties[ i ].itemType, little_endian );\n list.push( result[ 0 ] );\n read += result[ 1 ];\n\n }\n\n element[ properties[ i ].name ] = list;\n\n } else {\n\n result = _binaryRead( dataview, at + read, properties[ i ].type, little_endian );\n element[ properties[ i ].name ] = result[ 0 ];\n read += result[ 1 ];\n\n }\n\n }\n\n return [ element, read ];\n\n}\n\nfunction _binaryRead( dataview, at, type, little_endian ) {\n\n switch ( type ) {\n\n // corespondences for non-specific length types here match rply:\n case \"int8\":\t\tcase \"char\":\t return [ dataview.getInt8( at ), 1 ];\n case \"uint8\":\t\tcase \"uchar\":\t return [ dataview.getUint8( at ), 1 ];\n case \"int16\":\t\tcase \"short\":\t return [ dataview.getInt16( at, little_endian ), 2 ];\n case \"uint16\":\tcase \"ushort\": return [ dataview.getUint16( at, little_endian ), 2 ];\n case \"int32\":\t\tcase \"int\":\t\t return [ dataview.getInt32( at, little_endian ), 4 ];\n case \"uint32\":\tcase \"uint\":\t return [ dataview.getUint32( at, little_endian ), 4 ];\n case \"float32\": case \"float\":\t return [ dataview.getFloat32( at, little_endian ), 4 ];\n case \"float64\": case \"double\": return [ dataview.getFloat64( at, little_endian ), 8 ];\n\n }\n\n}\n\nfunction _handleElement( buffer, elementName, element ) {\n\n function findAttrName( names ) {\n\n for ( let i = 0, l = names.length; i < l; i ++ ) {\n\n const name = names[ i ];\n\n if ( name in element ) return name;\n\n }\n\n return null;\n\n }\n\n const attrX = findAttrName( [ \"x\", \"px\", \"posx\" ] ) || \"x\";\n const attrY = findAttrName( [ \"y\", \"py\", \"posy\" ] ) || \"y\";\n const attrZ = findAttrName( [ \"z\", \"pz\", \"posz\" ] ) || \"z\";\n const attrNX = findAttrName( [ \"nx\", \"normalx\" ] );\n const attrNY = findAttrName( [ \"ny\", \"normaly\" ] );\n const attrNZ = findAttrName( [ \"nz\", \"normalz\" ] );\n const attrS = findAttrName( [ \"s\", \"u\", \"texture_u\", \"tx\" ] );\n const attrT = findAttrName( [ \"t\", \"v\", \"texture_v\", \"ty\" ] );\n\n if ( elementName === \"vertex\" ) {\n buffer.push(buffer.VERTICES, element[ attrX ]);\n buffer.push(buffer.VERTICES, element[ attrY ]);\n buffer.push(buffer.VERTICES, element[ attrZ ]);\n\n if ( attrNX !== null && attrNY !== null && attrNZ !== null ) {\n buffer.push(buffer.NORMALS, element[ attrNX ]);\n buffer.push(buffer.NORMALS, element[ attrNY ]);\n buffer.push(buffer.NORMALS, element[ attrNZ ]);\n }\n\n if ( attrS !== null && attrT !== null ) {\n buffer.push(buffer.UVS, element[ attrS ]);\n buffer.push(buffer.UVS, element[ attrT ]);\n }\n\n } else if ( elementName === \"face\" ) {\n\n const vertex_indices = element.vertex_indices || element.vertex_index; // issue #9338\n if ( vertex_indices.length === 3 ) {\n buffer.updateElementsByFace(3);\n buffer.checkOrInitIndices();\n buffer.push(buffer.INDICES, vertex_indices[0]);\n buffer.push(buffer.INDICES, vertex_indices[1]);\n buffer.push(buffer.INDICES, vertex_indices[2]);\n } else if ( vertex_indices.length === 4 ) {\n buffer.updateElementsByFace(6);\n buffer.checkOrInitIndices();\n buffer.push(buffer.INDICES, vertex_indices[0]);\n buffer.push(buffer.INDICES, vertex_indices[1]);\n buffer.push(buffer.INDICES, vertex_indices[3]);\n buffer.push(buffer.INDICES, vertex_indices[1]);\n buffer.push(buffer.INDICES, vertex_indices[2]);\n buffer.push(buffer.INDICES, vertex_indices[3]);\n }\n\n }\n\n}\n\n","// mostly copied from https://github.com/mrdoob/three.js/blob/dev/examples/jsm/loaders/PLYLoader.js\nimport ExternalLoader, {\n GeometryRawData,\n LoaderDataType, Material,\n ObjectData\n} from \"_src/engine/loaders/external/external_loader\";\nimport output from \"_src/engine/output\";\nimport config from \"_src/config\";\nimport {messageType} from \"_src/engine/ipc\";\nimport workerManager from \"_src/engine/worker_manager\";\nimport plyCommon, {Buffer} from \"_src/engine/loaders/external/ply/ply_common\";\nimport {StreamProxy} from \"_src/engine/loaders/external/utils\";\n\nconst bufferSizeLimit = 1850000000 / 4; //1.8gb / 4bytes per float ot uint\nexport default class PlyLoader extends ExternalLoader {\n constructor() {\n super();\n this._dataType = LoaderDataType.STREAM;\n\n this.propertyNameMapping = {};\n this.header = null;\n this.headerTailDataChunk = null;\n }\n\n async _parse(reader, progress = null) {\n async function parseHeader() {\n const decoder = new TextDecoder();\n let currentDataChunk = await streamProxy.getChunk(false);\n if (!currentDataChunk) {\n throw new Error( \"ExternalLoader.PlyLoader: Ply file is empty\");\n }\n\n let currentTextChunk = decoder.decode(currentDataChunk, {stream: true});\n if (!currentTextChunk.startsWith(\"ply\")) {\n throw new Error( \"ExternalLoader.PlyLoader: Ply file doesn't start with ply keyword\");\n }\n\n const header = {\n comments: [],\n elements: [],\n objInfo: \"\"\n };\n let currentElement;\n\n function make_ply_element_property( propertValues, propertyNameMapping ) {\n\n const property = { type: propertValues[ 0 ] };\n\n if ( property.type === \"list\" ) {\n\n property.name = propertValues[ 3 ];\n property.countType = propertValues[ 1 ];\n property.itemType = propertValues[ 2 ];\n\n } else {\n\n property.name = propertValues[ 1 ];\n\n }\n\n if ( property.name in propertyNameMapping ) {\n\n property.name = propertyNameMapping[ property.name ];\n\n }\n\n return property;\n\n }\n\n let truncatedLine = \"\";\n for (;;) {\n const lines = currentTextChunk.split( /\\r\\n|\\r|\\n/ );\n lines[0] = truncatedLine + lines[0];\n const lastLine = lines[lines.length - 1];\n const isLastLineFull = lastLine.endsWith(\"\\r\\n\") || lastLine.endsWith(\"\\r\") || lastLine.endsWith(\"\\n\");\n const tailDrop = isLastLineFull ? 0 : 1;\n truncatedLine = isLastLineFull ? \"\" : lastLine;\n\n let foundEndHeader = false;\n for ( let i = 0; i < lines.length - tailDrop; i ++ ) {\n\n let line = lines[ i ];\n line = line.trim();\n\n if ( line === \"\" ) continue;\n\n const lineValues = line.split( /\\s+/ );\n const lineType = lineValues.shift();\n line = lineValues.join( \" \" );\n\n switch ( lineType ) {\n\n case \"format\":\n\n header.format = lineValues[ 0 ];\n header.version = lineValues[ 1 ];\n\n break;\n\n case \"comment\":\n\n header.comments.push( line );\n\n break;\n\n case \"element\":\n\n if ( currentElement !== undefined ) {\n\n header.elements.push( currentElement );\n\n }\n\n currentElement = {};\n currentElement.name = lineValues[ 0 ];\n currentElement.count = parseInt( lineValues[ 1 ] );\n currentElement.properties = [];\n\n break;\n\n case \"property\":\n\n currentElement.properties.push( make_ply_element_property( lineValues, scope.propertyNameMapping ) );\n\n break;\n\n case \"obj_info\":\n\n header.objInfo = line;\n\n break;\n\n case \"end_header\":\n foundEndHeader = true;\n break;\n\n case \"ply\":\n break;\n\n default:\n\n output.warn( \"ExternalLoader.PLYLoader: unhandled\", lineType, lineValues );\n\n }\n\n if (foundEndHeader) break;\n }\n\n if (foundEndHeader) {\n const patternHeader = /^([\\s\\S]*)end_header(\\r\\n|\\r|\\n)/;\n const result = patternHeader.exec(currentTextChunk);\n const droppedDataChunk = currentDataChunk.slice(result[0].length);\n if (droppedDataChunk.byteLength) {\n scope.headerTailDataChunk = droppedDataChunk;\n }\n\n break;\n }\n\n currentDataChunk = await streamProxy.getChunk(false);\n if (!currentDataChunk) {\n throw new Error( \"ExternalLoader.PlyLoader: Ply header doesn't end\");\n }\n currentTextChunk = decoder.decode(currentDataChunk, {stream: true});\n }\n\n if ( currentElement !== undefined ) {\n header.elements.push( currentElement );\n }\n\n return header;\n }\n\n class TypedArrayBuffer extends Buffer {\n constructor(header) {\n super();\n\n const verticesDesc = header.elements.find(desc => desc.name === \"vertex\");\n const verticesTypeDesc = verticesDesc.properties.find(component => component.name === \"x\");\n\n const normalsDesc = header.elements.find(desc => desc.name === \"vertex\");\n const normalsTypeDesc = normalsDesc.properties.find(component => component.name === \"nx\");\n\n const uvsDesc = header.elements.find(desc => desc.name === \"vertex\");\n const uvsTypeDesc = uvsDesc.properties.find(component => component.name === \"s\");\n\n if (Math.max(verticesDesc.count * 3, normalsDesc.count * 3, uvsDesc.count * 2) > bufferSizeLimit) {\n throw new Error( \"ExternalLoader.PlyLoader: Model is too big\");\n }\n\n const verticesBuffer = verticesDesc && verticesTypeDesc ? new (plyCommon.arrayConstructorByType(verticesTypeDesc.type))(verticesDesc.count * 3) : null;\n const normalsBuffer = normalsDesc && normalsTypeDesc ? new (plyCommon.arrayConstructorByType(normalsTypeDesc.type))(normalsDesc.count * 3) : null;\n const uvsBuffer = uvsDesc && uvsTypeDesc ? new (plyCommon.arrayConstructorByType(uvsTypeDesc.type))(uvsDesc.count * 2) : null;\n this.store = [];\n this.store[this.VERTICES] = verticesBuffer;\n this.store[this.INDICES] = null;\n this.store[this.NORMALS] = normalsBuffer;\n this.store[this.UVS] = uvsBuffer;\n\n this.pointers = [];\n this.pointers[this.VERTICES] = 0;\n this.pointers[this.INDICES] = 0;\n this.pointers[this.NORMALS] = 0;\n this.pointers[this.UVS] = 0;\n\n this.header = header;\n this.currentElementsByFaceInitialized = 0;\n }\n\n checkOrInitIndices() {\n if (this.store[this.INDICES] && this.currentElementsByFaceInitialized === this.elementsByFace) return;\n\n const indicesDesc = this.header.elements.find(desc => desc.name === \"face\");\n const indicesTypeDesc = indicesDesc.properties.find(component => component.name === \"vertex_indices\");\n\n if (indicesDesc.count * this.elementsByFace > bufferSizeLimit) {\n throw new Error( \"ExternalLoader.PlyLoader: Model is too big\");\n }\n const indicesBuffer = indicesDesc && indicesTypeDesc ? new (plyCommon.arrayConstructorByType(indicesTypeDesc.itemType))(indicesDesc.count * this.elementsByFace) : null;\n\n if (this.store[this.INDICES]) {\n indicesBuffer.set(this.store[this.INDICES]);\n }\n this.store[this.INDICES] = indicesBuffer;\n this.currentElementsByFaceInitialized = this.elementsByFace;\n }\n\n push(bufferType, value) {\n this.store[bufferType][this.pointers[bufferType]++] = value;\n }\n }\n\n async function parseASCII(buffer) {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n let dataChunk = scope.headerTailDataChunk ? scope.headerTailDataChunk : await streamProxy.getChunk();\n if (!dataChunk) {\n throw new Error( \"ExternalLoader.PlyLoader: No data after header\");\n }\n\n for (;;) {\n const parsePromise = parseChunk(dataChunk, 0, false, buffer);\n const loadPromise = streamProxy.getChunk();\n\n dataChunk = (await Promise.all([loadPromise, parsePromise]))[0];\n if (!dataChunk) break;\n }\n\n return postProcess( buffer );\n }\n\n async function parseBinary(buffer) {\n let currentChunk;\n let nextChunk;\n let dataView;\n let dataSize;\n\n const buildDataView = () => {\n let mergedChunk = null;\n if (currentChunk && nextChunk) {\n const totalLength = currentChunk.byteLength + nextChunk.byteLength;\n mergedChunk = new Uint8Array(totalLength);\n mergedChunk.set(currentChunk, 0);\n mergedChunk.set(nextChunk, currentChunk.byteLength);\n } else if (currentChunk) {\n mergedChunk = currentChunk;\n }\n dataView = mergedChunk ? new DataView(mergedChunk.buffer) : null;\n dataSize = currentChunk ? currentChunk.byteLength : 0;\n }\n const advanceChunks = async () => {\n [currentChunk, nextChunk] = await streamProxy.getTwoChunks();\n }\n\n await advanceChunks();\n if (scope.headerTailDataChunk) {\n if (currentChunk) {\n const mergedChunk = new Uint8Array(scope.headerTailDataChunk.length + currentChunk.length);\n mergedChunk.set(scope.headerTailDataChunk);\n mergedChunk.set(currentChunk, scope.headerTailDataChunk.byteLength);\n currentChunk = mergedChunk;\n } else {\n currentChunk = scope.headerTailDataChunk;\n }\n }\n buildDataView();\n\n if (!dataView) {\n throw new Error( \"ExternalLoader.PlyLoader: No data after header\");\n }\n for (;;) {\n const parsePromise = parseChunk(dataView, dataSize, true, buffer);\n const loadPromise = advanceChunks();\n\n await Promise.all([loadPromise, parsePromise]);\n buildDataView();\n if (!dataView) break;\n }\n\n return postProcess( buffer );\n\n }\n\n function postProcess( buffer ) {\n const geometryData = new GeometryRawData(buffer.store[buffer.VERTICES]);\n geometryData.indices = buffer.store[buffer.INDICES];\n geometryData.normals = buffer.store[buffer.NORMALS];\n geometryData.uvs = buffer.store[buffer.UVS];\n const materialData = new Material();\n const objectData = new ObjectData(geometryData, materialData);\n\n return objectData;\n }\n\n async function initParser() {\n config.useWorkers ? await initParserWorker() : await initParserMain();\n }\n\n async function initParserWorker() {\n const message = {\n type : messageType.INIT_PLY,\n header : scope.header,\n };\n const tid = workerManager.generateUniqueID();\n await workerManager.sendMessage(message, [], tid);\n }\n\n async function initParserMain() {\n plyCommon.init(scope.header);\n }\n\n async function parseChunk(dataChunk, dataSize, isBinary, buffer) {\n config.useWorkers ? await parseChunkWorker(dataChunk, dataSize, isBinary, buffer) : await parseChunkMain(dataChunk, dataSize, isBinary, buffer);\n }\n\n async function parseChunkMain(dataChunk, dataSize, isBinary, buffer) {\n isBinary ? plyCommon.decodeBinary(dataChunk, dataSize, buffer) : plyCommon.decodeASCII(dataChunk, buffer);\n }\n\n async function parseChunkWorker(dataChunk, dataSize, isBinary, buffer) {\n const message = {\n type : messageType.PARSE_PLY,\n dataChunk : dataChunk,\n dataSize : dataSize,\n isBinary : isBinary,\n };\n const tid = workerManager.generateUniqueID();\n const transfer = [dataChunk.buffer];\n\n const workerData = (await workerManager.sendMessage(message, transfer, tid)).data;\n if (workerData.vertices) {\n buffer.store[buffer.VERTICES].set(workerData.vertices, buffer.pointers[buffer.VERTICES]);\n buffer.pointers[buffer.VERTICES] += workerData.vertices.length;\n }\n\n if (workerData.indices) {\n buffer.updateElementsByFace(workerData.elementsByFace);\n buffer.checkOrInitIndices();\n buffer.store[buffer.INDICES].set(workerData.indices, buffer.pointers[buffer.INDICES]);\n buffer.pointers[buffer.INDICES] += workerData.indices.length;\n }\n\n if (workerData.normals) {\n buffer.store[buffer.NORMALS].set(workerData.normals, buffer.pointers[buffer.NORMALS]);\n buffer.pointers[buffer.NORMALS] += workerData.normals.length;\n }\n\n if (workerData.uvs) {\n buffer.store[buffer.UVS].set(workerData.uvs, buffer.pointers[buffer.UVS]);\n buffer.pointers[buffer.UVS] += workerData.uvs.length;\n }\n\n }\n\n //\n\n const scope = this;\n const streamProxy = new StreamProxy(reader, progress);\n streamProxy.start();\n scope.header = await parseHeader();\n await initParser();\n const buffer = new TypedArrayBuffer(scope.header);\n\n const objectData = scope.header.format === \"ascii\" ? await parseASCII(buffer) : await parseBinary(buffer);\n\n if (progress) progress.emit(progress.LOADING, 1);\n return [objectData];\n }\n}\n","// mostly copied from https://github.com/mrdoob/three.js/blob/dev/examples/jsm/loaders/VRMLLoader.js\nimport ExternalLoader, {\n GeometryRawData,\n LoaderDataType,\n Material,\n ObjectData\n} from \"_src/engine/loaders/external/external_loader\";\nimport output from \"_src/engine/output\";\nimport {CstParser, createToken, Lexer} from \"chevrotain\";\n\nexport default class VrmlLoader extends ExternalLoader {\n constructor() {\n super();\n this._dataType = LoaderDataType.TEXT;\n }\n\n _parse(data, progress = null) {\n const nodeMap = {};\n\n function generateVRMLTree( data ) {\n\n // create lexer, parser and visitor\n\n const tokenData = createTokens();\n\n const lexer = new VRMLLexer( tokenData.tokens );\n const parser = new VRMLParser( tokenData.tokenVocabulary );\n const visitor = createVisitor( parser.getBaseCstVisitorConstructor() );\n\n // lexing\n\n const lexingResult = lexer.lex( data );\n parser.input = lexingResult.tokens;\n\n // parsing\n\n const cstOutput = parser.vrml();\n\n if ( parser.errors.length > 0 ) {\n\n throw Error( \"ExternalLoader.VRMLLoader: Parsing errors detected\" );\n\n }\n\n // actions\n\n const ast = visitor.visit( cstOutput );\n\n return ast;\n\n }\n\n function createTokens() {\n\n // from http://gun.teipir.gr/VRML-amgem/spec/part1/concepts.html#SyntaxBasics\n\n const RouteIdentifier = createToken( { name: \"RouteIdentifier\", pattern: /[^\\x30-\\x39\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d][^\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d]*[.][^\\x30-\\x39\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d][^\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d]*/ } );\n const Identifier = createToken( { name: \"Identifier\", pattern: /[^\\x30-\\x39\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d][^\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d]*/, longer_alt: RouteIdentifier } );\n\n // from http://gun.teipir.gr/VRML-amgem/spec/part1/nodesRef.html\n\n const nodeTypes = [\n \"Anchor\", \"Billboard\", \"Collision\", \"Group\", \"Transform\", // grouping nodes\n \"Inline\", \"LOD\", \"Switch\", // special groups\n \"AudioClip\", \"DirectionalLight\", \"PointLight\", \"Script\", \"Shape\", \"Sound\", \"SpotLight\", \"WorldInfo\", // common nodes\n \"CylinderSensor\", \"PlaneSensor\", \"ProximitySensor\", \"SphereSensor\", \"TimeSensor\", \"TouchSensor\", \"VisibilitySensor\", // sensors\n \"Box\", \"Cone\", \"Cylinder\", \"ElevationGrid\", \"Extrusion\", \"IndexedFaceSet\", \"IndexedLineSet\", \"PointSet\", \"Sphere\", // geometries\n \"Color\", \"Coordinate\", \"Normal\", \"TextureCoordinate\", // geometric properties\n \"Appearance\", \"FontStyle\", \"ImageTexture\", \"Material\", \"MovieTexture\", \"PixelTexture\", \"TextureTransform\", // appearance\n \"ColorInterpolator\", \"CoordinateInterpolator\", \"NormalInterpolator\", \"OrientationInterpolator\", \"PositionInterpolator\", \"ScalarInterpolator\", // interpolators\n \"Background\", \"Fog\", \"NavigationInfo\", \"Viewpoint\", // bindable nodes\n \"Text\" // Text must be placed at the end of the regex so there are no matches for TextureTransform and TextureCoordinate\n ];\n\n //\n\n const Version = createToken( {\n name: \"Version\",\n pattern: /#VRML.*/,\n longer_alt: Identifier\n } );\n\n const NodeName = createToken( {\n name: \"NodeName\",\n pattern: new RegExp( nodeTypes.join( \"|\" ) ),\n longer_alt: Identifier\n } );\n\n const DEF = createToken( {\n name: \"DEF\",\n pattern: /DEF/,\n longer_alt: Identifier\n } );\n\n const USE = createToken( {\n name: \"USE\",\n pattern: /USE/,\n longer_alt: Identifier\n } );\n\n const ROUTE = createToken( {\n name: \"ROUTE\",\n pattern: /ROUTE/,\n longer_alt: Identifier\n } );\n\n const TO = createToken( {\n name: \"TO\",\n pattern: /TO/,\n longer_alt: Identifier\n } );\n\n //\n\n const StringLiteral = createToken( { name: \"StringLiteral\", pattern: /\"(?:[^\\\\\"\\n\\r]|\\\\[bfnrtv\"\\\\/]|\\\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])*\"/ } );\n const HexLiteral = createToken( { name: \"HexLiteral\", pattern: /0[xX][0-9a-fA-F]+/ } );\n const NumberLiteral = createToken( { name: \"NumberLiteral\", pattern: /[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?/ } );\n const TrueLiteral = createToken( { name: \"TrueLiteral\", pattern: /TRUE/ } );\n const FalseLiteral = createToken( { name: \"FalseLiteral\", pattern: /FALSE/ } );\n const NullLiteral = createToken( { name: \"NullLiteral\", pattern: /NULL/ } );\n const LSquare = createToken( { name: \"LSquare\", pattern: /\\[/ } );\n const RSquare = createToken( { name: \"RSquare\", pattern: /]/ } );\n const LCurly = createToken( { name: \"LCurly\", pattern: /{/ } );\n const RCurly = createToken( { name: \"RCurly\", pattern: /}/ } );\n const Comment = createToken( {\n name: \"Comment\",\n pattern: /#.*/,\n group: Lexer.SKIPPED\n } );\n\n // commas, blanks, tabs, newlines and carriage returns are whitespace characters wherever they appear outside of string fields\n\n const WhiteSpace = createToken( {\n name: \"WhiteSpace\",\n pattern: /[ ,\\s]/,\n group: Lexer.SKIPPED\n } );\n\n const tokens = [\n WhiteSpace,\n // keywords appear before the Identifier\n NodeName,\n DEF,\n USE,\n ROUTE,\n TO,\n TrueLiteral,\n FalseLiteral,\n NullLiteral,\n // the Identifier must appear after the keywords because all keywords are valid identifiers\n Version,\n Identifier,\n RouteIdentifier,\n StringLiteral,\n HexLiteral,\n NumberLiteral,\n LSquare,\n RSquare,\n LCurly,\n RCurly,\n Comment\n ];\n\n const tokenVocabulary = {};\n\n for ( let i = 0, l = tokens.length; i < l; i ++ ) {\n\n const token = tokens[ i ];\n\n tokenVocabulary[ token.name ] = token;\n\n }\n\n return { tokens: tokens, tokenVocabulary: tokenVocabulary };\n\n }\n\n\n function createVisitor( BaseVRMLVisitor ) {\n\n // the visitor is created dynamically based on the given base class\n\n class VRMLToASTVisitor extends BaseVRMLVisitor {\n\n constructor() {\n\n super();\n\n this.validateVisitor();\n\n }\n\n vrml( ctx ) {\n\n const data = {\n version: this.visit( ctx.version ),\n nodes: [],\n routes: []\n };\n\n for ( let i = 0, l = ctx.node.length; i < l; i ++ ) {\n\n const node = ctx.node[ i ];\n\n data.nodes.push( this.visit( node ) );\n\n }\n\n if ( ctx.route ) {\n\n for ( let i = 0, l = ctx.route.length; i < l; i ++ ) {\n\n const route = ctx.route[ i ];\n\n data.routes.push( this.visit( route ) );\n\n }\n\n }\n\n return data;\n\n }\n\n version( ctx ) {\n\n return ctx.Version[ 0 ].image;\n\n }\n\n node( ctx ) {\n\n const data = {\n name: ctx.NodeName[ 0 ].image,\n fields: []\n };\n\n if ( ctx.field ) {\n\n for ( let i = 0, l = ctx.field.length; i < l; i ++ ) {\n\n const field = ctx.field[ i ];\n\n data.fields.push( this.visit( field ) );\n\n }\n\n }\n\n // DEF\n\n if ( ctx.def ) {\n\n data.DEF = this.visit( ctx.def[ 0 ] );\n\n }\n\n return data;\n\n }\n\n field( ctx ) {\n\n const data = {\n name: ctx.Identifier[ 0 ].image,\n type: null,\n values: null\n };\n\n let result;\n\n // SFValue\n\n if ( ctx.singleFieldValue ) {\n\n result = this.visit( ctx.singleFieldValue[ 0 ] );\n\n }\n\n // MFValue\n\n if ( ctx.multiFieldValue ) {\n\n result = this.visit( ctx.multiFieldValue[ 0 ] );\n\n }\n\n data.type = result.type;\n data.values = result.values;\n\n return data;\n\n }\n\n def( ctx ) {\n\n return ( ctx.Identifier || ctx.NodeName )[ 0 ].image;\n\n }\n\n use( ctx ) {\n\n return { USE: ( ctx.Identifier || ctx.NodeName )[ 0 ].image };\n\n }\n\n singleFieldValue( ctx ) {\n\n return processField( this, ctx );\n\n }\n\n multiFieldValue( ctx ) {\n\n return processField( this, ctx );\n\n }\n\n route( ctx ) {\n\n const data = {\n FROM: ctx.RouteIdentifier[ 0 ].image,\n TO: ctx.RouteIdentifier[ 1 ].image\n };\n\n return data;\n\n }\n\n }\n\n function processField( scope, ctx ) {\n\n const field = {\n type: null,\n values: []\n };\n\n if ( ctx.node ) {\n\n field.type = \"node\";\n\n for ( let i = 0, l = ctx.node.length; i < l; i ++ ) {\n\n const node = ctx.node[ i ];\n\n field.values.push( scope.visit( node ) );\n\n }\n\n }\n\n if ( ctx.use ) {\n\n field.type = \"use\";\n\n for ( let i = 0, l = ctx.use.length; i < l; i ++ ) {\n\n const use = ctx.use[ i ];\n\n field.values.push( scope.visit( use ) );\n\n }\n\n }\n\n if ( ctx.StringLiteral ) {\n\n field.type = \"string\";\n\n for ( let i = 0, l = ctx.StringLiteral.length; i < l; i ++ ) {\n\n const stringLiteral = ctx.StringLiteral[ i ];\n\n field.values.push( stringLiteral.image.replace( /'|\"/g, \"\" ) );\n\n }\n\n }\n\n if ( ctx.NumberLiteral ) {\n\n field.type = \"number\";\n\n for ( let i = 0, l = ctx.NumberLiteral.length; i < l; i ++ ) {\n\n const numberLiteral = ctx.NumberLiteral[ i ];\n\n field.values.push( parseFloat( numberLiteral.image ) );\n\n }\n\n }\n\n if ( ctx.HexLiteral ) {\n\n field.type = \"hex\";\n\n for ( let i = 0, l = ctx.HexLiteral.length; i < l; i ++ ) {\n\n const hexLiteral = ctx.HexLiteral[ i ];\n\n field.values.push( hexLiteral.image );\n\n }\n\n }\n\n if ( ctx.TrueLiteral ) {\n\n field.type = \"boolean\";\n\n for ( let i = 0, l = ctx.TrueLiteral.length; i < l; i ++ ) {\n\n const trueLiteral = ctx.TrueLiteral[ i ];\n\n if ( trueLiteral.image === \"TRUE\" ) field.values.push( true );\n\n }\n\n }\n\n if ( ctx.FalseLiteral ) {\n\n field.type = \"boolean\";\n\n for ( let i = 0, l = ctx.FalseLiteral.length; i < l; i ++ ) {\n\n const falseLiteral = ctx.FalseLiteral[ i ];\n\n if ( falseLiteral.image === \"FALSE\" ) field.values.push( false );\n\n }\n\n }\n\n if ( ctx.NullLiteral ) {\n\n field.type = \"null\";\n\n ctx.NullLiteral.forEach( function () {\n\n field.values.push( null );\n\n } );\n\n }\n\n return field;\n\n }\n\n return new VRMLToASTVisitor();\n\n }\n\n function parseTree( tree ) {\n\n const nodes = tree.nodes;\n\n for ( let i = 0, l = nodes.length; i < l; i ++ ) {\n\n const node = nodes[ i ];\n\n buildNodeMap( node );\n\n }\n\n for ( let i = 0, l = nodes.length; i < l; i ++ ) {\n const node = nodes[ i ];\n getNode( node );\n }\n\n const objectsData = [];\n for (const node of nodes) {\n parseObject(node.build, objectsData);\n }\n\n return objectsData;\n }\n\n const parseObject = (object, objectsData) => {\n if (object instanceof Group) {\n for (const elem of object.elements) {\n parseObject(elem, objectsData);\n }\n } else if (object instanceof Mesh) {\n if (object.geometry.positions && object.geometry.positions.length) {\n const geometryData = new GeometryRawData(object.geometry.positions);\n geometryData.indices = object.geometry.indices;\n geometryData.normals = object.geometry.normals;\n geometryData.uvs = object.geometry.uvs;\n\n const materialData = new Material();\n if (object.texture) materialData.baseTexture = this._basePath + object.texture.url;\n\n const objectData = new ObjectData(geometryData, materialData);\n objectsData.push(objectData);\n }\n }\n }\n\n function buildNodeMap( node ) {\n\n if ( node.DEF ) {\n\n nodeMap[ node.DEF ] = node;\n\n }\n\n const fields = node.fields;\n\n for ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n const field = fields[ i ];\n\n if ( field.type === \"node\" ) {\n\n const fieldValues = field.values;\n\n for ( let j = 0, jl = fieldValues.length; j < jl; j ++ ) {\n\n buildNodeMap( fieldValues[ j ] );\n\n }\n\n }\n\n\n }\n\n }\n\n\n function getNode( node ) {\n\n // handle case where a node refers to a different one\n\n if ( node.USE ) {\n\n return resolveUSE( node.USE );\n\n }\n\n if ( node.build !== undefined ) return node.build;\n\n node.build = buildNode( node );\n\n return node.build;\n\n }\n\n // node builder\n\n function buildNode( node ) {\n\n const nodeName = node.name;\n let build;\n\n switch ( nodeName ) {\n\n case \"Anchor\":\n case \"Group\":\n case \"Transform\":\n case \"Collision\":\n build = buildGroupingNode( node );\n break;\n\n case \"Shape\":\n build = buildShapeNode( node );\n break;\n\n case \"Appearance\":\n build = buildAppearanceNode( node );\n break;\n\n case \"ImageTexture\":\n build = buildImageTextureNode( node );\n break;\n\n case \"IndexedFaceSet\":\n build = buildIndexedFaceSetNode( node );\n break;\n\n case \"Color\":\n case \"Coordinate\":\n case \"Normal\":\n case \"TextureCoordinate\":\n build = buildGeometricNode( node );\n break;\n\n case \"Material\":\n case \"PixelTexture\":\n case \"TextureTransform\":\n case \"IndexedLineSet\":\n case \"PointSet\":\n case \"Box\":\n case \"Cone\":\n case \"Cylinder\":\n case \"Sphere\":\n case \"ElevationGrid\":\n case \"Extrusion\":\n case \"WorldInfo\":\n case \"Background\":\n case \"Billboard\":\n case \"Inline\":\n case \"LOD\":\n case \"Switch\":\n case \"AudioClip\":\n case \"DirectionalLight\":\n case \"PointLight\":\n case \"Script\":\n case \"Sound\":\n case \"SpotLight\":\n case \"CylinderSensor\":\n case \"PlaneSensor\":\n case \"ProximitySensor\":\n case \"SphereSensor\":\n case \"TimeSensor\":\n case \"TouchSensor\":\n case \"VisibilitySensor\":\n case \"Text\":\n case \"FontStyle\":\n case \"MovieTexture\":\n case \"ColorInterpolator\":\n case \"CoordinateInterpolator\":\n case \"NormalInterpolator\":\n case \"OrientationInterpolator\":\n case \"PositionInterpolator\":\n case \"ScalarInterpolator\":\n case \"Fog\":\n case \"NavigationInfo\":\n case \"Viewpoint\":\n // node is not supported yet\n break;\n\n default:\n output.warn( \"ExternalLoader.VRMLLoader: Unknown node: \" + nodeName );\n break;\n\n }\n\n if ( build !== undefined && node.DEF !== undefined && build.hasOwnProperty( \"name\" ) === true ) {\n\n build.name = node.DEF;\n\n }\n\n return build;\n\n }\n\n function buildGroupingNode( node ) {\n\n const group = new Group();\n\n //\n\n const fields = node.fields;\n\n for ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n const field = fields[ i ];\n const fieldName = field.name;\n const fieldValues = field.values;\n\n switch ( fieldName ) {\n case \"children\":\n parseFieldChildren( fieldValues, group );\n break;\n\n case \"bboxCenter\":\n case \"bboxSize\":\n case \"center\":\n case \"description\":\n case \"collide\":\n case \"parameter\":\n case \"rotation\":\n case \"scale\":\n case \"scaleOrientation\":\n case \"translation\":\n case \"proxy\":\n case \"url\":\n // field not supported\n break;\n\n default:\n output.warn( \"ExternalLoader.VRMLLoader: Unknown field: \" + fieldName );\n break;\n\n }\n\n }\n\n return group;\n }\n\n function buildShapeNode( node ) {\n\n const fields = node.fields;\n\n // if the appearance field is NULL or unspecified, lighting is off and the unlit object color is (0, 0, 0)\n\n let texture;\n let geometry;\n\n for ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n const field = fields[ i ];\n const fieldName = field.name;\n const fieldValues = field.values;\n\n switch ( fieldName ) {\n\n case \"appearance\":\n if ( fieldValues[ 0 ] !== null ) {\n\n texture = getNode( fieldValues[ 0 ] );\n\n }\n\n break;\n\n case \"geometry\":\n if ( fieldValues[ 0 ] !== null ) {\n\n geometry = getNode( fieldValues[ 0 ] );\n\n }\n\n break;\n\n default:\n output.warn( \"ExternalLoader.VRMLLoader: Unknown field:\" + fieldName );\n break;\n\n }\n\n }\n\n // build 3D object\n\n let object = null;\n if ( geometry && geometry.positions ) {\n object = new Mesh();\n object.geometry = geometry;\n if ( texture && texture.url ) {\n object.texture = texture;\n }\n }\n\n return object;\n\n }\n\n function buildAppearanceNode( node ) {\n\n let material;\n const fields = node.fields;\n\n for ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n const field = fields[ i ];\n const fieldName = field.name;\n const fieldValues = field.values;\n\n switch ( fieldName ) {\n case \"texture\": {\n const textureNode = fieldValues[0];\n if (textureNode !== null) {\n\n if (textureNode.name === \"ImageTexture\") {\n\n material = getNode(textureNode);\n } else {\n // Other types are not supported yet\n }\n }\n break;\n }\n case \"material\":\n case \"textureTransform\":\n //not supported\n break;\n\n default:\n output.warn( \"ExternalLoader.VRMLLoader: Unknown field: \" + fieldName );\n break;\n\n }\n\n }\n\n return material;\n\n }\n\n function buildImageTextureNode( node ) {\n\n let texture;\n\n const fields = node.fields;\n\n for ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n const field = fields[ i ];\n const fieldName = field.name;\n const fieldValues = field.values;\n\n switch ( fieldName ) {\n\n case \"url\": {\n const url = fieldValues[0];\n if (url) {\n texture = new Texture();\n texture.url = url;\n }\n break;\n }\n\n case \"repeatS\":\n case \"repeatT\":\n //not supported\n break;\n\n default:\n output.warn( \"ExternalLoader.VRMLLoader: Unknown field: \" + fieldName );\n break;\n\n }\n\n }\n\n return texture;\n\n }\n\n function buildGeometricNode( node ) {\n\n return node.fields[ 0 ].values;\n\n }\n\n function buildIndexedFaceSetNode( node ) {\n\n let color, coord, normal, texCoord;\n let ccw = true;\n let colorIndex, coordIndex, normalIndex, texCoordIndex;\n let colorPerVertex = true, normalPerVertex = true;\n\n const fields = node.fields;\n\n for ( let i = 0, l = fields.length; i < l; i ++ ) {\n\n const field = fields[ i ];\n const fieldName = field.name;\n const fieldValues = field.values;\n\n switch ( fieldName ) {\n\n case \"color\": {\n const colorNode = fieldValues[0];\n\n if (colorNode !== null) {\n\n color = getNode(colorNode);\n\n }\n\n break;\n }\n case \"coord\": {\n const coordNode = fieldValues[0];\n\n if (coordNode !== null) {\n\n coord = getNode(coordNode);\n\n }\n\n break;\n }\n case \"normal\": {\n const normalNode = fieldValues[0];\n\n if (normalNode !== null) {\n\n normal = getNode(normalNode);\n\n }\n\n break;\n }\n case \"texCoord\": {\n const texCoordNode = fieldValues[0];\n\n if (texCoordNode !== null) {\n\n texCoord = getNode(texCoordNode);\n\n }\n\n break;\n }\n case \"ccw\":\n ccw = fieldValues[ 0 ];\n break;\n\n case \"colorIndex\":\n colorIndex = fieldValues;\n break;\n\n case \"colorPerVertex\":\n colorPerVertex = fieldValues[ 0 ];\n break;\n\n case \"coordIndex\":\n coordIndex = fieldValues;\n break;\n\n case \"normalIndex\":\n normalIndex = fieldValues;\n break;\n\n case \"normalPerVertex\":\n normalPerVertex = fieldValues[ 0 ];\n break;\n\n case \"texCoordIndex\":\n texCoordIndex = fieldValues;\n break;\n\n case \"convex\":\n case \"creaseAngle\":\n case \"solid\":\n // field is not supported\n break;\n\n\n default:\n output.warn( \"ExternalLoader.VRMLLoader: Unknown field: \" + fieldName );\n break;\n\n }\n\n }\n\n if ( coordIndex === undefined ) {\n\n output.warn( \"ExternalLoader.VRMLLoader: Missing coordIndex\" );\n\n return new Geometry(); // handle VRML files with incomplete geometry definition\n\n }\n\n const triangulatedCoordIndex = triangulateFaceIndex( coordIndex, ccw );\n\n let colorAttribute;\n let normalAttribute;\n let uvAttribute;\n\n if ( color ) {\n\n if ( colorPerVertex === true ) {\n\n if ( colorIndex && colorIndex.length > 0 ) {\n\n // if the colorIndex field is not empty, then it is used to choose colors for each vertex of the IndexedFaceSet.\n\n const triangulatedColorIndex = triangulateFaceIndex( colorIndex, ccw );\n colorAttribute = computeAttributeFromIndexedData( triangulatedCoordIndex, triangulatedColorIndex, color, 3 );\n\n } else {\n\n // if the colorIndex field is empty, then the coordIndex field is used to choose colors from the Color node\n\n colorAttribute = toNonIndexedAttribute( triangulatedCoordIndex, color, 3 );\n\n }\n\n } else {\n\n if ( colorIndex && colorIndex.length > 0 ) {\n\n // if the colorIndex field is not empty, then they are used to choose one color for each face of the IndexedFaceSet\n\n const flattenFaceColors = flattenData( color, colorIndex );\n const triangulatedFaceColors = triangulateFaceData( flattenFaceColors, coordIndex );\n colorAttribute = computeAttributeFromFaceData( triangulatedCoordIndex, triangulatedFaceColors );\n\n } else {\n\n // if the colorIndex field is empty, then the color are applied to each face of the IndexedFaceSet in order\n\n const triangulatedFaceColors = triangulateFaceData( color, coordIndex );\n colorAttribute = computeAttributeFromFaceData( triangulatedCoordIndex, triangulatedFaceColors );\n\n\n }\n\n }\n\n }\n\n if ( normal ) {\n\n if ( normalPerVertex === true ) {\n\n // consider vertex normals\n\n if ( normalIndex && normalIndex.length > 0 ) {\n\n // if the normalIndex field is not empty, then it is used to choose normals for each vertex of the IndexedFaceSet.\n\n const triangulatedNormalIndex = triangulateFaceIndex( normalIndex, ccw );\n normalAttribute = computeAttributeFromIndexedData( triangulatedCoordIndex, triangulatedNormalIndex, normal, 3 );\n\n } else {\n\n // if the normalIndex field is empty, then the coordIndex field is used to choose normals from the Normal node\n\n normalAttribute = toNonIndexedAttribute( triangulatedCoordIndex, normal, 3 );\n\n }\n\n } else {\n\n // consider face normals\n\n if ( normalIndex && normalIndex.length > 0 ) {\n\n // if the normalIndex field is not empty, then they are used to choose one normal for each face of the IndexedFaceSet\n\n const flattenFaceNormals = flattenData( normal, normalIndex );\n const triangulatedFaceNormals = triangulateFaceData( flattenFaceNormals, coordIndex );\n normalAttribute = computeAttributeFromFaceData( triangulatedCoordIndex, triangulatedFaceNormals );\n\n } else {\n\n // if the normalIndex field is empty, then the normals are applied to each face of the IndexedFaceSet in order\n\n const triangulatedFaceNormals = triangulateFaceData( normal, coordIndex );\n normalAttribute = computeAttributeFromFaceData( triangulatedCoordIndex, triangulatedFaceNormals );\n\n }\n\n }\n\n }\n\n if ( texCoord ) {\n\n // texture coordinates are always defined on vertex level\n\n if ( texCoordIndex && texCoordIndex.length > 0 ) {\n\n // if the texCoordIndex field is not empty, then it is used to choose texture coordinates for each vertex of the IndexedFaceSet.\n\n const triangulatedTexCoordIndex = triangulateFaceIndex( texCoordIndex, ccw );\n uvAttribute = computeAttributeFromIndexedData( triangulatedCoordIndex, triangulatedTexCoordIndex, texCoord, 2 );\n\n\n } else {\n\n // if the texCoordIndex field is empty, then the coordIndex array is used to choose texture coordinates from the TextureCoordinate node\n\n uvAttribute = toNonIndexedAttribute( triangulatedCoordIndex, texCoord, 2);\n\n }\n\n }\n\n const geometry = new Geometry();\n const positionAttribute = toNonIndexedAttribute( triangulatedCoordIndex, coord, 3 );\n geometry.positions = positionAttribute;\n if (normalAttribute) geometry.normals = normalAttribute;\n if ( uvAttribute ) geometry.uvs = uvAttribute;\n if ( colorAttribute ) geometry.colors = colorAttribute;\n\n return geometry;\n\n }\n\n // helper functions\n\n function resolveUSE( identifier ) {\n\n const node = nodeMap[ identifier ];\n const build = getNode( node );\n\n return build;\n\n }\n\n function parseFieldChildren( children, group ) {\n\n for ( let i = 0, l = children.length; i < l; i ++ ) {\n\n const object = getNode( children[ i ] );\n\n if ( object instanceof Object3d ) group.elements.push( object );\n\n }\n\n }\n\n function triangulateFaceIndex( index, ccw ) {\n\n const indices = [];\n\n // since face defintions can have more than three vertices, it's necessary to\n // perform a simple triangulation\n\n let start = 0;\n\n for ( let i = 0, l = index.length; i < l; i ++ ) {\n\n const i1 = index[ start ];\n const i2 = index[ i + ( ccw ? 1 : 2 ) ];\n const i3 = index[ i + ( ccw ? 2 : 1 ) ];\n\n indices.push( i1, i2, i3 );\n\n // an index of -1 indicates that the current face has ended and the next one begins\n\n if ( index[ i + 3 ] === - 1 || i + 3 >= l ) {\n\n i += 3;\n start = i + 1;\n\n }\n\n }\n\n return indices;\n\n }\n\n function triangulateFaceData( data, index ) {\n\n const triangulatedData = [];\n\n let start = 0;\n\n for ( let i = 0, l = index.length; i < l; i ++ ) {\n\n const stride = start * 3;\n\n const x = data[ stride ];\n const y = data[ stride + 1 ];\n const z = data[ stride + 2 ];\n\n triangulatedData.push( x, y, z );\n\n // an index of -1 indicates that the current face has ended and the next one begins\n\n if ( index[ i + 3 ] === - 1 || i + 3 >= l ) {\n\n i += 3;\n start ++;\n\n }\n\n }\n\n return triangulatedData;\n\n }\n\n function flattenData( data, index ) {\n\n const flattenData = [];\n\n for ( let i = 0, l = index.length; i < l; i ++ ) {\n\n const i1 = index[ i ];\n\n const stride = i1 * 3;\n\n const x = data[ stride ];\n const y = data[ stride + 1 ];\n const z = data[ stride + 2 ];\n\n flattenData.push( x, y, z );\n\n }\n\n return flattenData;\n\n }\n\n function computeAttributeFromIndexedData( coordIndex, index, data, itemSize ) {\n\n const array = [];\n\n // we use the coordIndex.length as delimiter since normalIndex must contain at least as many indices\n\n for ( let i = 0, l = coordIndex.length; i < l; i += 3 ) {\n\n const a = index[ i ];\n const b = index[ i + 1 ];\n const c = index[ i + 2 ];\n\n if ( itemSize === 2 ) {\n\n array.push( data[a*itemSize], data[a*itemSize + 1] );\n array.push( data[b*itemSize], data[b*itemSize + 1] );\n array.push( data[c*itemSize], data[c*itemSize + 1] );\n\n } else {\n\n array.push( data[a*itemSize], data[a*itemSize + 1], data[a*itemSize + 2] );\n array.push( data[b*itemSize], data[b*itemSize + 1], data[b*itemSize + 2] );\n array.push( data[c*itemSize], data[c*itemSize + 1], data[c*itemSize + 2] );\n\n }\n\n }\n\n return array;\n\n }\n\n function computeAttributeFromFaceData( index, faceData ) {\n\n const array = [];\n\n for ( let i = 0, j = 0, l = index.length; i < l; i += 3, j ++ ) {\n\n array.push( faceData[j*3], faceData[j*3 + 1], faceData[j*3 + 2] );\n array.push( faceData[j*3], faceData[j*3 + 1], faceData[j*3 + 2] );\n array.push( faceData[j*3], faceData[j*3 + 1], faceData[j*3 + 2] );\n\n }\n\n return array;\n\n }\n\n function toNonIndexedAttribute( indices, array, itemSize ) {\n\n const array2 = new array.constructor( indices.length * itemSize );\n\n let index = 0, index2 = 0;\n\n for ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n index = indices[ i ] * itemSize;\n\n for ( let j = 0; j < itemSize; j ++ ) {\n\n array2[ index2 ++ ] = array[ index ++ ];\n\n }\n\n }\n\n return array2;\n\n }\n\n //\n\n // check version (only 2.0 is supported)\n\n if ( data.indexOf( \"#VRML V2.0\" ) === - 1 ) {\n\n throw Error( \"ExternalLoader.VRMLLoader: Version of VRML asset not supported\" );\n\n }\n\n // create JSON representing the tree structure of the VRML asset\n\n const tree = generateVRMLTree( data );\n\n // parse the tree structure to a three.js scene\n\n const objectsData = parseTree( tree );\n\n if (progress) progress.emit(progress.LOADING, 1);\n\n return objectsData;\n\n }\n}\n\nclass VRMLLexer {\n\n constructor( tokens ) {\n\n this.lexer = new Lexer( tokens );\n\n }\n\n lex( inputText ) {\n\n const lexingResult = this.lexer.tokenize( inputText );\n\n if ( lexingResult.errors.length > 0 ) {\n\n throw Error( \"ExternalLoader.VRMLLoader: Lexing errors detected.\" );\n\n }\n\n return lexingResult;\n\n }\n\n}\n\nclass VRMLParser extends CstParser {\n\n constructor( tokenVocabulary ) {\n\n super( tokenVocabulary );\n\n const $ = this;\n\n const Version = tokenVocabulary[ \"Version\" ];\n const LCurly = tokenVocabulary[ \"LCurly\" ];\n const RCurly = tokenVocabulary[ \"RCurly\" ];\n const LSquare = tokenVocabulary[ \"LSquare\" ];\n const RSquare = tokenVocabulary[ \"RSquare\" ];\n const Identifier = tokenVocabulary[ \"Identifier\" ];\n const RouteIdentifier = tokenVocabulary[ \"RouteIdentifier\" ];\n const StringLiteral = tokenVocabulary[ \"StringLiteral\" ];\n const HexLiteral = tokenVocabulary[ \"HexLiteral\" ];\n const NumberLiteral = tokenVocabulary[ \"NumberLiteral\" ];\n const TrueLiteral = tokenVocabulary[ \"TrueLiteral\" ];\n const FalseLiteral = tokenVocabulary[ \"FalseLiteral\" ];\n const NullLiteral = tokenVocabulary[ \"NullLiteral\" ];\n const DEF = tokenVocabulary[ \"DEF\" ];\n const USE = tokenVocabulary[ \"USE\" ];\n const ROUTE = tokenVocabulary[ \"ROUTE\" ];\n const TO = tokenVocabulary[ \"TO\" ];\n const NodeName = tokenVocabulary[ \"NodeName\" ];\n\n $.RULE( \"vrml\", function () {\n\n $.SUBRULE( $.version );\n $.AT_LEAST_ONE( function () {\n\n $.SUBRULE( $.node );\n\n } );\n $.MANY( function () {\n\n $.SUBRULE( $.route );\n\n } );\n\n } );\n\n $.RULE( \"version\", function () {\n\n $.CONSUME( Version );\n\n } );\n\n $.RULE( \"node\", function () {\n\n $.OPTION( function () {\n\n $.SUBRULE( $.def );\n\n } );\n\n $.CONSUME( NodeName );\n $.CONSUME( LCurly );\n $.MANY( function () {\n\n $.SUBRULE( $.field );\n\n } );\n $.CONSUME( RCurly );\n\n } );\n\n $.RULE( \"field\", function () {\n\n $.CONSUME( Identifier );\n\n $.OR2( [\n { ALT: function () {\n\n $.SUBRULE( $.singleFieldValue );\n\n } },\n { ALT: function () {\n\n $.SUBRULE( $.multiFieldValue );\n\n } }\n ] );\n\n } );\n\n $.RULE( \"def\", function () {\n\n $.CONSUME( DEF );\n $.OR( [\n { ALT: function () {\n\n $.CONSUME( Identifier );\n\n } },\n { ALT: function () {\n\n $.CONSUME( NodeName );\n\n } }\n ] );\n\n } );\n\n $.RULE( \"use\", function () {\n\n $.CONSUME( USE );\n $.OR( [\n { ALT: function () {\n\n $.CONSUME( Identifier );\n\n } },\n { ALT: function () {\n\n $.CONSUME( NodeName );\n\n } }\n ] );\n\n } );\n\n $.RULE( \"singleFieldValue\", function () {\n\n $.AT_LEAST_ONE( function () {\n\n $.OR( [\n { ALT: function () {\n\n $.SUBRULE( $.node );\n\n } },\n { ALT: function () {\n\n $.SUBRULE( $.use );\n\n } },\n { ALT: function () {\n\n $.CONSUME( StringLiteral );\n\n } },\n { ALT: function () {\n\n $.CONSUME( HexLiteral );\n\n } },\n { ALT: function () {\n\n $.CONSUME( NumberLiteral );\n\n } },\n { ALT: function () {\n\n $.CONSUME( TrueLiteral );\n\n } },\n { ALT: function () {\n\n $.CONSUME( FalseLiteral );\n\n } },\n { ALT: function () {\n\n $.CONSUME( NullLiteral );\n\n } }\n ] );\n\n\n } );\n\n } );\n\n $.RULE( \"multiFieldValue\", function () {\n\n $.CONSUME( LSquare );\n $.MANY( function () {\n\n $.OR( [\n { ALT: function () {\n\n $.SUBRULE( $.node );\n\n } },\n { ALT: function () {\n\n $.SUBRULE( $.use );\n\n } },\n { ALT: function () {\n\n $.CONSUME( StringLiteral );\n\n } },\n { ALT: function () {\n\n $.CONSUME( HexLiteral );\n\n } },\n { ALT: function () {\n\n $.CONSUME( NumberLiteral );\n\n } },\n { ALT: function () {\n\n $.CONSUME( NullLiteral );\n\n } }\n ] );\n\n } );\n $.CONSUME( RSquare );\n\n } );\n\n $.RULE( \"route\", function () {\n\n $.CONSUME( ROUTE );\n $.CONSUME( RouteIdentifier );\n $.CONSUME( TO );\n $.CONSUME2( RouteIdentifier );\n\n } );\n\n this.performSelfAnalysis();\n\n }\n\n}\n\nclass Object3d {}\nclass Group extends Object3d {\n constructor() {\n super();\n this.elements = [];\n }\n}\nclass Mesh extends Object3d {\n constructor() {\n super();\n this.geometry = null;\n this.texture = null;\n }\n}\nclass Geometry {\n constructor() {\n this.positions = [];\n this.normals = [];\n this.uvs = [];\n this.indices = [];\n this.colors = [];\n }\n}\nclass Texture {\n constructor() {\n this.url = \"\";\n }\n}\n","let _id = 0;\nconst _storage = new Map();\n\nexport default {\n registerData(buffer) {\n const uri = `blob:${_id++}`;\n _storage.set(uri, buffer);\n\n return uri;\n },\n\n getData(uri) {\n return _storage.get(uri);\n },\n};\n","// mostly copied from https://github.com/mrdoob/three.js/blob/dev/examples/jsm/loaders/GLTFLoader.js\nimport ExternalLoader, {\n GeometryRawData,\n LoaderDataType,\n Material,\n ObjectData\n} from \"_src/engine/loaders/external/external_loader\";\nimport fakeBlob from \"_src/engine/fake_blob\";\nimport fetch from \"_fetch\";\nimport {decodeText} from \"_src/utils\";\n\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\n\nconst BINARY_EXTENSION_HEADER_MAGIC = \"glTF\";\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\nconst BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\nconst EXTENSIONS = {\n KHR_BINARY_GLTF: \"KHR_binary_glTF\",\n KHR_DRACO_MESH_COMPRESSION: \"KHR_draco_mesh_compression\",\n KHR_LIGHTS_PUNCTUAL: \"KHR_lights_punctual\",\n KHR_MATERIALS_CLEARCOAT: \"KHR_materials_clearcoat\",\n KHR_MATERIALS_IOR: \"KHR_materials_ior\",\n KHR_MATERIALS_SHEEN: \"KHR_materials_sheen\",\n KHR_MATERIALS_SPECULAR: \"KHR_materials_specular\",\n KHR_MATERIALS_TRANSMISSION: \"KHR_materials_transmission\",\n KHR_MATERIALS_IRIDESCENCE: \"KHR_materials_iridescence\",\n KHR_MATERIALS_UNLIT: \"KHR_materials_unlit\",\n KHR_MATERIALS_VOLUME: \"KHR_materials_volume\",\n KHR_TEXTURE_BASISU: \"KHR_texture_basisu\",\n KHR_TEXTURE_TRANSFORM: \"KHR_texture_transform\",\n KHR_MESH_QUANTIZATION: \"KHR_mesh_quantization\",\n KHR_MATERIALS_EMISSIVE_STRENGTH: \"KHR_materials_emissive_strength\",\n EXT_TEXTURE_WEBP: \"EXT_texture_webp\",\n EXT_MESHOPT_COMPRESSION: \"EXT_meshopt_compression\",\n EXT_MESH_GPU_INSTANCING: \"EXT_mesh_gpu_instancing\"\n};\n\nconst WEBGL_TYPE_SIZES = {\n \"SCALAR\": 1,\n \"VEC2\": 2,\n \"VEC3\": 3,\n \"VEC4\": 4,\n \"MAT2\": 4,\n \"MAT3\": 9,\n \"MAT4\": 16\n};\n\nconst WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n};\n\nconst ATTRIBUTES = {\n POSITION: \"positions\",\n NORMAL: \"normals\",\n TEXCOORD_0: \"uvs\",\n COLOR_0: \"colors\",\n};\n\nconst WEBGL_CONSTANTS = {\n FLOAT: 5126,\n //FLOAT_MAT2: 35674,\n FLOAT_MAT3: 35675,\n FLOAT_MAT4: 35676,\n FLOAT_VEC2: 35664,\n FLOAT_VEC3: 35665,\n FLOAT_VEC4: 35666,\n LINEAR: 9729,\n REPEAT: 10497,\n SAMPLER_2D: 35678,\n POINTS: 0,\n LINES: 1,\n LINE_LOOP: 2,\n LINE_STRIP: 3,\n TRIANGLES: 4,\n TRIANGLE_STRIP: 5,\n TRIANGLE_FAN: 6,\n UNSIGNED_BYTE: 5121,\n UNSIGNED_SHORT: 5123\n};\n\nexport default class GltfLoader extends ExternalLoader {\n constructor(isBinary) {\n super();\n this._dataType = isBinary ? LoaderDataType.BINARY : LoaderDataType.TEXT;\n }\n\n async _parse(data, progress = null) {\n let json;\n const extensions = {};\n\n if ( this._dataType === LoaderDataType.BINARY ) {\n\n const magic = decodeText( new Uint8Array( data, 0, 4 ) );\n\n if ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n extensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n json = JSON.parse( extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content );\n\n } else {\n\n json = JSON.parse( decodeText( data ) );\n\n }\n\n } else {\n\n json = JSON.parse( data );\n\n }\n\n if ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n throw new Error( \"ExternalLoader.GLTFLoader: Unsupported asset. glTF versions < 2.0 are supported.\" );\n }\n\n const parser = new GLTFParser( json, this._basePath );\n parser.setExtensions( extensions );\n\n const treeData = await parser.parse();\n\n const objectsData = [];\n parseTreeData(treeData.scenes, objectsData);\n\n if (progress) progress.emit(progress.LOADING, 1);\n\n return objectsData;\n }\n}\n\nfunction parseTreeData(object, objectsData) {\n if (Array.isArray(object)) {\n for (const elem of object) {\n parseTreeData(elem, objectsData);\n }\n } else {\n const material = new Material();\n material.flipTexture = false;\n if (object.texture && object.texture.map) material.baseTexture = object.texture.map;\n if (object.texture && object.texture.metalnessRoughnessMap) material.metallicRoughnessTexture = object.texture.metalnessRoughnessMap;\n\n const objectData = new ObjectData(object.geometry, material);\n objectsData.push(objectData);\n }\n}\n\nclass GLTFParser {\n\n constructor( json = {}, basePath ) {\n\n this.basePath = basePath;\n this.json = json;\n this.extensions = {};\n this.plugins = {};\n\n // loader object cache\n this.cache = new GLTFRegistry();\n\n // associations between Three.js objects and glTF elements\n this.associations = new Map();\n\n // BufferGeometry caching\n this.primitiveCache = {};\n\n // Object3D instance caches\n this.meshCache = { refs: {}, uses: {} };\n\n this.sourceCache = {};\n this.textureCache = {};\n }\n\n setExtensions( extensions ) {\n this.extensions = extensions;\n }\n\n async parse() {\n\n const parser = this;\n const json = this.json;\n\n // Clear the loader cache\n this.cache.removeAll();\n\n // Mark the special nodes/meshes in json for efficient parse\n this._invokeAll( function ( ext ) {\n\n return ext._markDefs && ext._markDefs();\n\n } );\n\n const dependencies = await Promise.all( [\n parser.getDependencies( \"scene\" ),\n ] );\n\n const result = {\n scene: dependencies[ 0 ][ json.scene || 0 ],\n scenes: dependencies[ 0 ],\n asset: json.asset,\n parser: parser,\n userData: {}\n };\n\n return result;\n }\n\n /**\n * Marks the special nodes/meshes in json for efficient parse.\n */\n _markDefs() {\n\n const nodeDefs = this.json.nodes || [];\n\n // Iterate over all nodes, marking references to shared resources,\n // as well as skeleton joints.\n for ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n const nodeDef = nodeDefs[ nodeIndex ];\n\n if ( nodeDef.mesh !== undefined ) {\n this._addNodeRef( this.meshCache, nodeDef.mesh );\n }\n\n }\n\n }\n\n /**\n * Counts references to shared node / Object3D resources. These resources\n * can be reused, or \"instantiated\", at multiple nodes in the scene\n * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n * be marked. Non-scenegraph resources (like Materials, Geometries, and\n * Textures) can be reused directly and are not marked here.\n *\n * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n */\n _addNodeRef( cache, index ) {\n\n if ( index === undefined ) return;\n\n if ( cache.refs[ index ] === undefined ) {\n\n cache.refs[ index ] = cache.uses[ index ] = 0;\n\n }\n\n cache.refs[ index ] ++;\n\n }\n\n /** Returns a reference to a shared resource, cloning it if necessary. */\n _getNodeRef( cache, index, object ) {\n\n if ( cache.refs[ index ] <= 1 ) return object;\n\n const ref = object.slice();\n\n // Propagates mappings to the cloned object, prevents mappings on the\n // original object from being lost.\n const updateMappings = ( original, clone ) => {\n if (!Array.isArray(original)) {\n const mappings = this.associations.get( original );\n if ( mappings != null ) {\n this.associations.set( clone, mappings );\n }\n } else {\n for (const [i, child] of original.entries()) {\n updateMappings(child, clone[i]);\n }\n }\n };\n\n updateMappings( object, ref );\n\n return ref;\n\n }\n\n _invokeOne( func ) {\n\n const extensions = Object.values( this.plugins );\n extensions.push( this );\n\n for ( let i = 0; i < extensions.length; i ++ ) {\n\n const result = func( extensions[ i ] );\n\n if ( result ) return result;\n\n }\n\n return null;\n\n }\n\n _invokeAll( func ) {\n\n const extensions = Object.values( this.plugins );\n extensions.unshift( this );\n\n const pending = [];\n\n for ( let i = 0; i < extensions.length; i ++ ) {\n\n const result = func( extensions[ i ] );\n\n if ( result ) pending.push( result );\n\n }\n\n return pending;\n\n }\n\n getDependency( type, index ) {\n\n const cacheKey = type + \":\" + index;\n let dependency = this.cache.get( cacheKey );\n\n if ( ! dependency ) {\n\n switch ( type ) {\n\n case \"scene\":\n dependency = this.loadScene( index );\n break;\n\n case \"node\":\n dependency = this._invokeOne( function ( ext ) {\n\n return ext.loadNode && ext.loadNode( index );\n\n } );\n break;\n\n case \"mesh\":\n dependency = this._invokeOne( function ( ext ) {\n\n return ext.loadMesh && ext.loadMesh( index );\n\n } );\n break;\n\n case \"accessor\":\n dependency = this.loadAccessor( index );\n break;\n\n case \"bufferView\":\n dependency = this._invokeOne( function ( ext ) {\n\n return ext.loadBufferView && ext.loadBufferView( index );\n\n } );\n break;\n\n case \"buffer\":\n dependency = this.loadBuffer( index );\n break;\n\n case \"material\":\n dependency = this._invokeOne( function ( ext ) {\n\n return ext.loadMaterial && ext.loadMaterial( index );\n\n } );\n break;\n\n case \"texture\":\n dependency = this._invokeOne( function ( ext ) {\n\n return ext.loadTexture && ext.loadTexture( index );\n\n } );\n break;\n\n case \"skin\":\n case \"animation\":\n case \"camera\":\n //not implemented\n break;\n\n default:\n dependency = this._invokeOne( function ( ext ) {\n\n return ext != this && ext.getDependency && ext.getDependency( type, index );\n\n } );\n\n if ( ! dependency ) {\n\n throw new Error( \"ExternalLoader.GLTFLoader: Unknown dependency type: \" + type );\n\n }\n\n break;\n\n }\n\n this.cache.add( cacheKey, dependency );\n\n }\n\n return dependency;\n\n }\n\n getDependencies( type ) {\n\n let dependencies = this.cache.get( type );\n\n if ( ! dependencies ) {\n\n const parser = this;\n const defs = this.json[ type + ( type === \"mesh\" ? \"es\" : \"s\" ) ] || [];\n\n dependencies = Promise.all( defs.map( function ( def, index ) {\n\n return parser.getDependency( type, index );\n\n } ) );\n\n this.cache.add( type, dependencies );\n\n }\n\n return dependencies;\n\n }\n\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n */\n async loadBuffer( bufferIndex ) {\n\n const bufferDef = this.json.buffers[ bufferIndex ];\n\n if ( bufferDef.type && bufferDef.type !== \"arraybuffer\" ) {\n throw new Error( \"ExternalLoader.GLTFLoader: \" + bufferDef.type + \" buffer type is not supported.\" );\n }\n\n // If present, GLB container is required to be the first buffer.\n if ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n return this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body;\n }\n\n const fullPath = this.resolvePath(bufferDef.uri);\n const response = await fetch(fullPath);\n if (!response.ok) {\n throw new Error(\"ExternalLoader.GLTFLoader: buffer was not loaded from \" + fullPath);\n }\n\n const data = await response.arrayBuffer();\n return data;\n }\n\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n */\n loadBufferView( bufferViewIndex ) {\n\n const bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n return this.getDependency( \"buffer\", bufferViewDef.buffer ).then( function ( buffer ) {\n\n const byteLength = bufferViewDef.byteLength || 0;\n const byteOffset = bufferViewDef.byteOffset || 0;\n return buffer.slice( byteOffset, byteOffset + byteLength );\n\n } );\n\n }\n\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n */\n loadAccessor( accessorIndex ) {\n const json = this.json;\n\n const accessorDef = this.json.accessors[ accessorIndex ];\n\n if ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n const itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n const TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n const array = new TypedArray( accessorDef.count * itemSize );\n return Promise.resolve( array );\n\n }\n\n const pendingBufferViews = [];\n\n if ( accessorDef.bufferView !== undefined ) {\n\n pendingBufferViews.push( this.getDependency( \"bufferView\", accessorDef.bufferView ) );\n\n } else {\n\n pendingBufferViews.push( null );\n\n }\n\n if ( accessorDef.sparse !== undefined ) {\n\n pendingBufferViews.push( this.getDependency( \"bufferView\", accessorDef.sparse.indices.bufferView ) );\n pendingBufferViews.push( this.getDependency( \"bufferView\", accessorDef.sparse.values.bufferView ) );\n\n }\n\n return Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n const bufferView = bufferViews[ 0 ];\n\n const itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n const TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n const elementBytes = TypedArray.BYTES_PER_ELEMENT;\n const itemBytes = elementBytes * itemSize;\n const byteOffset = accessorDef.byteOffset || 0;\n const byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n let array;\n\n // The buffer is not interleaved if the stride is the item size in bytes.\n if ( byteStride && byteStride !== itemBytes ) {\n throw new Error( \"ExternalLoader.GLTFLoader: interleaved buffer is not supported\" );\n } else {\n\n if ( bufferView === null ) {\n\n array = new TypedArray( accessorDef.count * itemSize );\n\n } else {\n\n array = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n }\n\n }\n\n // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n if ( accessorDef.sparse !== undefined ) {\n\n const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n const TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n const sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n const sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n if ( bufferView !== null ) {\n\n // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n array = array.slice();\n\n }\n\n for ( let i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n const index = sparseIndices[ i ];\n\n array[index*itemSize] = sparseValues[ i * itemSize ];\n if ( itemSize >= 2 ) array[index*itemSize + 1] = sparseValues[ i * itemSize + 1 ];\n if ( itemSize >= 3 ) array[index*itemSize + 2] = sparseValues[ i * itemSize + 2 ];\n if ( itemSize >= 4 ) array[index*itemSize + 3] = sparseValues[ i * itemSize + 3 ];\n if ( itemSize >= 5 ) throw new Error( \"ExternalLoader.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.\" );\n\n }\n\n }\n\n return array;\n\n } );\n\n }\n\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n */\n loadTexture( textureIndex ) {\n\n const json = this.json;\n const textureDef = json.textures[ textureIndex ];\n const sourceIndex = textureDef.source;\n\n return this.loadTextureImage( textureIndex, sourceIndex );\n\n }\n\n loadTextureImage( textureIndex, sourceIndex ) {\n\n const parser = this;\n const json = this.json;\n\n const textureDef = json.textures[ textureIndex ];\n const sourceDef = json.images[ sourceIndex ];\n\n const cacheKey = ( sourceDef.uri || sourceDef.bufferView ) + \":\" + textureDef.sampler;\n\n if ( this.textureCache[ cacheKey ] ) {\n\n // See https://github.com/mrdoob/three.js/issues/21559.\n return this.textureCache[ cacheKey ];\n\n }\n\n const promise = this.loadImageSource( sourceIndex ).then( function ( texture ) {\n\n parser.associations.set( texture, { textures: textureIndex } );\n\n return texture;\n\n } ).catch( function () {\n\n return null;\n\n } );\n\n this.textureCache[ cacheKey ] = promise;\n\n return promise;\n\n }\n\n loadImageSource( sourceIndex ) {\n\n const parser = this;\n const json = this.json;\n\n if ( this.sourceCache[ sourceIndex ] !== undefined ) {\n\n return this.sourceCache[ sourceIndex ].then( ( texture ) => texture.clone() );\n\n }\n\n const sourceDef = json.images[ sourceIndex ];\n\n let sourceURI;\n\n if ( sourceDef.bufferView !== undefined ) {\n\n sourceURI = parser.getDependency( \"bufferView\", sourceDef.bufferView ).then( function ( bufferView ) {\n\n if ( typeof Blob !== \"undefined\" ) {\n const blob = new Blob( [ bufferView ], { type: sourceDef.mimeType } );\n sourceURI = URL.createObjectURL( blob );\n } else {\n sourceURI = fakeBlob.registerData(bufferView);\n }\n\n return sourceURI;\n\n } );\n\n } else if ( sourceDef.uri === undefined ) {\n\n throw new Error( \"ExternalLoader.GLTFLoader: Image \" + sourceIndex + \" is missing URI and bufferView\" );\n\n } else {\n sourceURI = this.resolvePath(sourceDef.uri || \"\");\n }\n\n const promise = Promise.resolve(sourceURI);\n this.sourceCache[ sourceIndex ] = promise;\n return promise;\n }\n\n resolvePath(uri) {\n if ( /^data:.*,.*$/i.test( uri ) ) return uri;\n else return this.basePath + uri;\n }\n\n assignTexture( materialParams, mapName, mapDef ) {\n\n return this.getDependency( \"texture\", mapDef.index ).then( function ( texture ) {\n\n if ( ! texture ) return null;\n\n materialParams[ mapName ] = texture;\n\n return texture;\n\n } );\n\n }\n\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n */\n loadMaterial( materialIndex ) {\n\n const parser = this;\n const json = this.json;\n const materialDef = json.materials[ materialIndex ];\n\n const materialParams = {};\n const materialExtensions = materialDef.extensions || {};\n\n const pending = [];\n\n if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n // not implemented\n\n } else {\n\n // Specification:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n const metallicRoughness = materialDef.pbrMetallicRoughness || {};\n if ( metallicRoughness.baseColorTexture !== undefined ) {\n pending.push( parser.assignTexture( materialParams, \"map\", metallicRoughness.baseColorTexture ) );\n }\n\n if ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n pending.push( parser.assignTexture( materialParams, \"metalnessRoughnessMap\", metallicRoughness.metallicRoughnessTexture ) );\n }\n }\n\n return Promise.all( pending ).then( function () {\n\n const material = materialParams;\n\n parser.associations.set( material, { materials: materialIndex } );\n\n return material;\n\n } );\n\n }\n\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n */\n loadGeometries( primitives ) {\n\n const parser = this;\n const cache = this.primitiveCache;\n\n const pending = [];\n\n for ( let i = 0, il = primitives.length; i < il; i ++ ) {\n\n const primitive = primitives[ i ];\n const cacheKey = createPrimitiveKey( primitive );\n\n // See if we've already created this geometry\n const cached = cache[ cacheKey ];\n\n if ( cached ) {\n\n // Use the cached geometry if it exists\n pending.push( cached.promise );\n\n } else {\n\n let geometryPromise;\n\n if ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n throw new Error( \"ExternalLoader.GLTFLoader: Draco compression is not supported.\" );\n } else {\n\n // Otherwise create a new geometry\n geometryPromise = addPrimitiveAttributes( primitive, parser );\n\n }\n\n // Cache this geometry\n cache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n pending.push( geometryPromise );\n\n }\n\n }\n\n return Promise.all( pending );\n\n }\n\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n */\n loadMesh( meshIndex ) {\n\n const parser = this;\n const json = this.json;\n\n const meshDef = json.meshes[ meshIndex ];\n const primitives = meshDef.primitives;\n\n const pending = [];\n\n for ( let i = 0, il = primitives.length; i < il; i ++ ) {\n\n const material = primitives[ i ].material === undefined\n ? null\n : this.getDependency( \"material\", primitives[ i ].material );\n\n pending.push( material );\n\n }\n\n pending.push( parser.loadGeometries( primitives ) );\n\n return Promise.all( pending ).then( function ( results ) {\n\n const materials = results.slice( 0, results.length - 1 );\n const geometries = results[ results.length - 1 ];\n\n const meshes = [];\n\n for ( let i = 0, il = geometries.length; i < il; i ++ ) {\n\n const geometry = geometries[ i ];\n const primitive = primitives[ i ];\n\n // 1. create Mesh\n\n let mesh;\n\n const material = materials[ i ];\n\n if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n primitive.mode === undefined ) {\n\n // .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n if (meshDef.isSkinnedMesh) {\n //not supported\n continue;\n }\n mesh = {\n geometry: geometry,\n texture: material,\n };\n\n if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n mesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n } else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n mesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n }\n\n } else if ( primitive.mode === WEBGL_CONSTANTS.LINES || primitive.mode === WEBGL_CONSTANTS.LINE_STRIP || primitive.mode === WEBGL_CONSTANTS.LINE_LOOP || primitive.mode === WEBGL_CONSTANTS.POINTS) {\n //not supported\n continue;\n } else {\n throw new Error( \"ExternalLoader.GLTFLoader: Primitive mode unsupported: \" + primitive.mode );\n }\n\n meshes.push( mesh );\n\n }\n\n for ( let i = 0, il = meshes.length; i < il; i ++ ) {\n\n parser.associations.set( meshes[ i ], {\n meshes: meshIndex,\n primitives: i\n } );\n\n }\n\n parser.associations.set( meshes, { meshes: meshIndex } );\n\n return meshes;\n\n } );\n\n }\n\n createNodeMesh( nodeIndex ) {\n\n const json = this.json;\n const parser = this;\n const nodeDef = json.nodes[ nodeIndex ];\n\n if ( nodeDef.mesh === undefined ) return null;\n\n return parser.getDependency( \"mesh\", nodeDef.mesh ).then( function ( mesh ) {\n\n const node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh );\n return node;\n\n } );\n\n }\n\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n */\n loadNode( nodeIndex ) {\n\n const json = this.json;\n const parser = this;\n\n const nodeDef = json.nodes[ nodeIndex ];\n\n return ( function () {\n\n const objectPending = [];\n\n const meshPromise = parser._invokeOne( function ( ext ) {\n\n return ext.createNodeMesh && ext.createNodeMesh( nodeIndex );\n\n } );\n\n if ( meshPromise ) {\n\n objectPending.push( meshPromise );\n\n }\n\n const childPending = [];\n const childrenDef = nodeDef.children || [];\n\n for ( let i = 0, il = childrenDef.length; i < il; i ++ ) {\n\n childPending.push( parser.getDependency( \"node\", childrenDef[ i ] ) );\n\n }\n\n return Promise.all( [\n Promise.all( objectPending ),\n Promise.all( childPending )\n ] );\n\n }() ).then( function ( results ) {\n\n const objects = results[ 0 ];\n const children = results[ 1 ];\n\n let node = objects;\n if ( ! parser.associations.has( node ) ) {\n parser.associations.set( node, {} );\n }\n parser.associations.get( node ).nodes = nodeIndex;\n\n for ( let i = 0, il = children.length; i < il; i ++ ) {\n\n node.push( children[ i ] );\n\n }\n\n return node;\n\n } );\n\n }\n\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n */\n loadScene( sceneIndex ) {\n const sceneDef = this.json.scenes[ sceneIndex ];\n const parser = this;\n\n // Loader returns Group, not Scene.\n // See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n let scene;\n const nodeIds = sceneDef.nodes || [];\n\n const pending = [];\n\n for ( let i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n pending.push( parser.getDependency( \"node\", nodeIds[ i ] ) );\n\n }\n\n return Promise.all( pending ).then( function ( nodes ) {\n scene = nodes;\n return scene;\n } );\n\n }\n\n}\n\nfunction GLTFRegistry() {\n\n let objects = {};\n\n return\t{\n\n get: function ( key ) {\n\n return objects[ key ];\n\n },\n\n add: function ( key, object ) {\n\n objects[ key ] = object;\n\n },\n\n remove: function ( key ) {\n\n delete objects[ key ];\n\n },\n\n removeAll: function () {\n\n objects = {};\n\n }\n\n };\n\n}\n\nfunction createPrimitiveKey( primitiveDef ) {\n\n const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n let geometryKey;\n\n if ( dracoExtension ) {\n\n geometryKey = \"draco:\" + dracoExtension.bufferView\n + \":\" + dracoExtension.indices\n + \":\" + createAttributesKey( dracoExtension.attributes );\n\n } else {\n\n geometryKey = primitiveDef.indices + \":\" + createAttributesKey( primitiveDef.attributes ) + \":\" + primitiveDef.mode;\n\n }\n\n return geometryKey;\n\n}\n\nfunction createAttributesKey( attributes ) {\n\n let attributesKey = \"\";\n\n const keys = Object.keys( attributes ).sort();\n\n for ( let i = 0, il = keys.length; i < il; i ++ ) {\n\n attributesKey += keys[ i ] + \":\" + attributes[ keys[ i ] ] + \";\";\n\n }\n\n return attributesKey;\n\n}\n\nfunction addPrimitiveAttributes( primitiveDef, parser ) {\n const geometry = {};\n\n const attributes = primitiveDef.attributes;\n\n const pending = [];\n\n function assignAttributeAccessor( accessorIndex, attributeName ) {\n\n return parser.getDependency( \"accessor\", accessorIndex )\n .then( function ( accessor ) {\n geometry[attributeName] = accessor;\n } );\n\n }\n\n for ( const gltfAttributeName in attributes ) {\n\n const geometryAttributeName = ATTRIBUTES[ gltfAttributeName ];\n\n // Skip attributes already provided by e.g. Draco extension.\n if ( !geometryAttributeName || geometryAttributeName in geometry ) continue;\n\n pending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], geometryAttributeName ) );\n\n }\n\n if ( primitiveDef.indices !== undefined && ! geometry.indices ) {\n\n const accessor = parser.getDependency( \"accessor\", primitiveDef.indices ).then( function ( accessor ) {\n\n geometry.indices = accessor;\n\n } );\n\n pending.push( accessor );\n\n }\n\n return Promise.all( pending ).then( function () {\n return geometry;\n } );\n\n}\n\nfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n if ( drawMode === TrianglesDrawMode ) {\n return geometry;\n }\n\n if ( drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode ) {\n\n let index = geometry.indices;\n\n // generate index if not present\n\n if ( index === null ) {\n\n const indices = [];\n\n const position = geometry.positions;\n\n if ( position !== undefined ) {\n\n for ( let i = 0; i < position.count; i ++ ) {\n\n indices.push( i );\n\n }\n\n geometry.indices = indices;\n index = geometry.indices;\n\n } else {\n\n throw new Error( \"ExternalLoader.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.\" );\n\n }\n\n }\n\n //\n\n const numberOfTriangles = index.count - 2;\n const newIndices = [];\n\n if ( drawMode === TriangleFanDrawMode ) {\n\n // gl.TRIANGLE_FAN\n\n for ( let i = 1; i <= numberOfTriangles; i ++ ) {\n\n newIndices.push( index[ 0 ] );\n newIndices.push( index[ i ] );\n newIndices.push( index[ i + 1 ] );\n\n }\n\n } else {\n\n // gl.TRIANGLE_STRIP\n\n for ( let i = 0; i < numberOfTriangles; i ++ ) {\n\n if ( i % 2 === 0 ) {\n\n newIndices.push( index[ i ] );\n newIndices.push( index[ i + 1 ] );\n newIndices.push( index[ i + 2 ] );\n\n } else {\n\n newIndices.push( index[ i + 2 ] );\n newIndices.push( index[ i + 1 ] );\n newIndices.push( index[ i ] );\n\n }\n\n }\n\n }\n\n if ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n throw new Error( \"ExternalLoader.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.\" );\n\n }\n\n // build final geometry\n\n const newGeometry = new GeometryRawData(geometry.positions);\n newGeometry.indices = newIndices;\n newGeometry.uvs = geometry.uvs;\n newGeometry.normals = geometry.normals;\n\n return newGeometry;\n\n } else {\n\n throw new Error( \"ExternalLoader.GLTFLoader.toTrianglesDrawMode(): Unknown draw mode:\", drawMode );\n\n }\n\n}\n\nclass GLTFBinaryExtension {\n\n constructor( data ) {\n\n this.name = EXTENSIONS.KHR_BINARY_GLTF;\n this.content = null;\n this.body = null;\n\n const headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n this.header = {\n magic: decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\n version: headerView.getUint32( 4, true ),\n length: headerView.getUint32( 8, true )\n };\n\n if ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n throw new Error( \"ExternalLoader.GLTFLoader: Unsupported glTF-Binary header.\" );\n\n } else if ( this.header.version < 2.0 ) {\n\n throw new Error( \"ExternalLoader.GLTFLoader: Legacy binary file detected.\" );\n\n }\n\n const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n const chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n let chunkIndex = 0;\n\n while ( chunkIndex < chunkContentsLength ) {\n\n const chunkLength = chunkView.getUint32( chunkIndex, true );\n chunkIndex += 4;\n\n const chunkType = chunkView.getUint32( chunkIndex, true );\n chunkIndex += 4;\n\n if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n const contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n this.content = decodeText( contentArray );\n\n } else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n this.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n }\n\n // Clients must ignore chunks with unknown types.\n\n chunkIndex += chunkLength;\n\n }\n\n if ( this.content === null ) {\n\n throw new Error( \"ExternalLoader.GLTFLoader: JSON content not found.\" );\n\n }\n\n }\n\n}\n","import ExternalLoader, {GeometryRawData, Material, ObjectData} from \"_src/engine/loaders/external/external_loader\";\nimport fakeBlob from \"_src/engine/fake_blob\";\nimport {unzipSync} from \"fflate\";\nimport {isDataZipped} from \"_src/utils\";\nimport downloader from \"_src/engine/loaders/downloader\";\nimport {messageType} from \"_src/engine/ipc\";\nimport workerManager from \"_src/engine/worker_manager\";\n\nexport default class UsdLoader extends ExternalLoader {\n async _parse(data, progress = null) {\n const typedData = new Uint8Array(data);\n const isZip = isDataZipped(typedData);\n\n const [textureFiles, masterFile] = isZip ? _parseAssets(unzipSync(typedData)) : [[], typedData];\n if (!masterFile) throw new Error( \"ExternalLoader.UsdLoader: No master file\");\n\n await _initParser();\n const objectsRawData = (await _parseData(masterFile)).data.objects;\n const objectsData = _postProcess(objectsRawData);\n _fixTexturesPaths(objectsData, isZip, textureFiles, this._basePath);\n\n if (progress) progress.emit(progress.LOADING, 1);\n return objectsData;\n }\n}\n\nfunction _fixTexturesPaths(objectsData, isZip, texturesMap, basePath) {\n for (const objectData of objectsData) {\n if (!objectData.material.baseTexture) continue;\n\n if (isZip) {\n objectData.material.baseTexture = texturesMap.get(objectData.material.baseTexture);\n } else {\n objectData.material.baseTexture = basePath + objectData.material.baseTexture;\n }\n }\n}\n\nfunction _postProcess(objectsRawData) {\n const objectsData = [];\n\n for (const objectRawData of objectsRawData) {\n if (!objectRawData.points && objectRawData.points.length) continue;\n \n const geometryData = new GeometryRawData(objectRawData.points);\n if (objectRawData.normals && objectRawData.normals.length) geometryData.normals = objectRawData.normals;\n if (objectRawData.uvs && objectRawData.uvs.length) geometryData.uvs = objectRawData.uvs;\n \n const materialData = new Material();\n if (objectRawData.texture) materialData.baseTexture = objectRawData.texture;\n \n const objectData = new ObjectData(geometryData, materialData);\n objectsData.push(objectData);\n }\n\n return objectsData;\n}\n\nfunction _parseAssets( zip ) {\n\n const textures = new Map();\n let masterFile = null;\n\n for ( const filename in zip ) {\n\n if ( filename.endsWith( \"png\" ) || filename.endsWith(\"jpg\") || filename.endsWith(\"jpeg\") ) {\n const imageType = filename.endsWith( \"png\" ) ? \"image/png\" : \"image/jpg\";\n\n if ( typeof Blob !== \"undefined\" ) {\n const blob = new Blob( [ zip[ filename ] ], { type: { type: imageType } } );\n textures.set(filename, URL.createObjectURL(blob));\n } else {\n textures.set(filename, URL.createObjectURL(fakeBlob.registerData(zip[ filename ])));\n }\n\n }\n\n if ( filename.endsWith( \"usd\" ) || filename.endsWith( \"usda\" ) || filename.endsWith( \"usdc\" )) {\n masterFile = zip[filename];\n }\n\n }\n\n return [textures, masterFile];\n}\n\nasync function _initParser() {\n const srcPrefix = \"assets/usdConfig/\";\n const dstPrefix = \"/\";\n const files = [\n \"usd/plugInfo.json\",\n \"usd/usd/resources/plugInfo.json\",\n \"usd/usdGeom/resources/plugInfo.json\",\n \"usd/usdShade/resources/plugInfo.json\",\n ];\n const configs = new Map();\n const transfer = [];\n\n for (const file of files) {\n const srcFullPath = srcPrefix + file;\n const data = await downloader.download(srcFullPath, {}, downloader.BINARY);\n const dataTyped = new Uint8Array(data);\n configs.set(dstPrefix + file, dataTyped);\n transfer.push(dataTyped.buffer);\n }\n\n const message = {\n type : messageType.INIT_USD,\n configs: configs,\n };\n\n const tid = workerManager.generateUniqueID();\n await workerManager.sendMessage(message, transfer, tid);\n}\n\nasync function _parseData(data) {\n const message = {\n type : messageType.PARSE_USD,\n data: data,\n };\n\n const transfer = [data.buffer];\n const tid = workerManager.generateUniqueID();\n const objectsData = await workerManager.sendMessage(message, transfer, tid);\n\n return objectsData;\n}\n","import CortoLoader from \"_src/engine/loaders/corto/corto_loader\";\nimport ZStdLoader from \"_src/engine/loaders/zstd/zstd_loader\";\nimport PlnLoader from \"_src/engine/loaders/pln/pln_loader\";\nimport events from \"_src/engine/events\";\nimport workerManager from \"_src/engine/worker_manager.js\";\nimport { networkStatus } from \"_src/engine/constants\";\nimport Image2D from \"_image\";\nimport AbortController from \"_abort_controller\";\nimport config from \"_src/config\";\nimport containersCache from \"_src/engine/packers/containers_cache\";\nimport ObjLoader from \"_src/engine/loaders/external/obj/obj_loader\";\nimport StlLoader from \"_src/engine/loaders/external/stl/stl_loader\";\nimport PlyLoader from \"_src/engine/loaders/external/ply/ply_loader\";\nimport VrmlLoader from \"_src/engine/loaders/external/vrml_loader\";\nimport GltfLoader from \"_src/engine/loaders/external/gltf_loader\";\nimport UsdLoader from \"_src/engine/loaders/external/usd/usd_loader\";\nimport downloader from \"_src/engine/loaders/downloader\";\n\nlet cortoLoader = null;\nlet zstdLoader = null;\nlet plnLoader = null;\n\nconst abortControllers = [];\n\nconst MAX_LOADING_THREADS = 6;\n\nconst ABORT_ERROR = \"AbortError\";\nconst ABORT_EVERYTHING = \"0\";\nconst ABORT_BY_TYPE = \"1\";\nconst ABORT_BY_PATH = \"2\";\n\nconst _activeAssetGroups = [];\nlet _isStoped = false;\nlet _isWarmedUp = false;\nconst _assetGroupQueue = [];\n\nexport default {\n\n JSON : 0,\n EXTERNAL : 1,\n IMAGE : 2,\n GEOMETRY : 3,\n\n abort() {\n\n this.stopLoading();\n this.cleanup();\n\n },\n\n abortByType(type) {\n\n this._stop();\n\n this._abortAssetGroupByCondition((assetGroup) => {\n return assetGroup.type === type;\n }, ABORT_BY_TYPE);\n\n this._continue();\n\n },\n\n abortByPath(path) {\n\n this._stop();\n\n this._abortAssetGroupByCondition((assetGroup) => {\n return assetGroup.path === path;\n }, ABORT_BY_PATH);\n\n this._continue();\n\n },\n\n abortByPathAndId(path, id) {\n for (const assetGroup of _assetGroupQueue){\n if (assetGroup.path !== path) {\n continue;\n }\n\n for (const asset of assetGroup.assets.slice()) {\n const bufferId = asset.payload && asset.payload.id !== undefined ? asset.payload.id : 0;\n if (bufferId !== id) {\n continue;\n }\n\n asset.reject(ABORT_BY_PATH);\n assetGroup.assets = assetGroup.assets.filter(a => a !== asset);\n }\n }\n\n for (const activeAssetGroup of _activeAssetGroups) {\n if (activeAssetGroup.path !== path) {\n continue;\n }\n for (const asset of activeAssetGroup.assets.slice()) {\n const bufferId = asset.payload && asset.payload.id !== undefined ? asset.payload.id : 0;\n if (bufferId !== id) {\n continue;\n }\n\n if (asset.loadingReject) {\n asset.loadingReject(ABORT_BY_PATH);\n } else {\n asset.reject(ABORT_BY_PATH);\n }\n if (asset.abortController) asset.abortController.abort();\n\n activeAssetGroup.assets = activeAssetGroup.assets.filter(a => a !== asset);\n }\n }\n },\n\n cleanup() {\n\n this._abortAssetGroupByCondition(() => {\n return true;\n }, ABORT_EVERYTHING);\n\n _assetGroupQueue.length = 0;\n _activeAssetGroups.length = 0;\n _isWarmedUp = false;\n\n },\n\n load(path, type, payload = null) {\n\n const pushPromise = this._push(path, type, payload);\n this._pop();\n\n return pushPromise;\n\n },\n\n _stop() {\n _isStoped = true;\n },\n\n _continue() {\n\n _isStoped = false;\n this._pop();\n\n },\n\n _push(path, type, payload) {\n\n const promise = new Promise((resolve, reject) => {\n\n const resolveHandler = (loadedData) => {\n resolve(loadedData);\n };\n\n const rejectHandler = (error) => {\n reject(error);\n };\n\n const asset = {\n resolve : resolveHandler,\n reject : rejectHandler,\n loadingReject : null,\n abortController: null,\n payload : payload,\n tid : workerManager.generateUniqueID()\n };\n\n let assetGroup = _assetGroupQueue.find(group => group.path === path);\n\n if (!assetGroup) {\n assetGroup = _activeAssetGroups.find(group => group.path === path);\n }\n\n if (!assetGroup) {\n assetGroup = {\n path: path,\n type: type,\n priority: Infinity,\n assets: []\n };\n _assetGroupQueue.push(assetGroup);\n }\n\n assetGroup.assets.push(asset);\n\n });\n\n return promise;\n\n },\n\n async _pop() {\n\n if (_isStoped) {\n return null;\n }\n\n if (_activeAssetGroups.length >= MAX_LOADING_THREADS) {\n return null;\n }\n\n events.emit(\"shift_loading_queue\", _assetGroupQueue);\n\n _assetGroupQueue.sort((a, b) => {\n return a.priority - b.priority;\n });\n\n const assetGroup = _assetGroupQueue.shift();\n\n if (assetGroup) {\n _activeAssetGroups.push(assetGroup);\n\n const path = assetGroup.path;\n const type = assetGroup.type;\n\n let assetsProcessed = 0;\n\n while (assetsProcessed < assetGroup.assets.length) {\n\n const promises = [];\n\n for (let i = assetsProcessed; i {\n asset.loadingReject = reject;\n asset.abortController = new AbortController();\n abortControllers.push(asset.abortController);\n\n let promise;\n switch (type) {\n case this.JSON:\n promise = this._loadJSON(path, asset.abortController);\n break;\n case this.IMAGE:\n promise = this._loadImage(path, asset.abortController, bufferId, progress, releaseAfterUse);\n break;\n case this.EXTERNAL:\n promise = this._loadExternal(path, asset.abortController, useWorkers, progress);\n break;\n case this.GEOMETRY:\n promise = this._loadGeometry(path, asset.abortController, bufferId, asset.tid);\n break;\n default:\n throw \"Unknown loading request type.\";\n }\n\n promise.then((result) => {\n\n resolve(result);\n\n //NOTE: we assume that at this moment loading system is fully initialized\n if (!_isWarmedUp && type === this.GEOMETRY) {\n events.emit(\"loader_has_been_warmed_up\");\n _isWarmedUp = true;\n }\n\n }).catch((error) => {\n\n const errorCode = error.name === ABORT_ERROR ? ABORT_ERROR : error;\n reject(errorCode);\n\n }).finally(() => {\n const ind = abortControllers.indexOf(asset.abortController);\n if (ind !== -1) {\n abortControllers.splice(ind, 1);\n }\n });\n\n }).then((result) => {\n asset.resolve(result);\n }).catch((errorCode) => {\n asset.reject(errorCode);\n });\n\n promises.push(loadingPromise);\n }\n\n assetsProcessed = assetGroup.assets.length;\n\n await Promise.allSettled(promises);\n }\n\n _activeAssetGroups.splice(_activeAssetGroups.indexOf(assetGroup), 1);\n\n setTimeout(() => {this._pop()}, 0);\n }\n\n },\n\n _loadJSON(path, controller) {\n return downloader.download(path, controller, downloader.JSON);\n },\n\n _loadImage(path, controller, id, progressCallback = null, releaseAfterUse = true) {\n const image = new Image2D();\n return image.loadSliced(path, id, controller, progressCallback, releaseAfterUse);\n },\n\n _loadExternal: (function () {\n let objLoader, stlLoader, plyLoader, vrmlLoader, gltfLoader, glbLoader, usdLoader;\n return function(path, controller, useWorkers = false, progress = null) {\n const re = /(?:\\.([^.]+))?$/;\n const ext = re.exec(path)[1].toLowerCase();\n let loader;\n switch (ext) {\n case \"obj\": {\n if (!objLoader) objLoader = new ObjLoader();\n loader = objLoader;\n break;\n }\n case \"stl\": {\n if (!stlLoader) stlLoader = new StlLoader();\n loader = stlLoader;\n break;\n }\n case \"ply\": {\n if (!plyLoader) plyLoader = new PlyLoader();\n loader = plyLoader;\n break;\n }\n case \"wrl\": {\n if (!vrmlLoader) vrmlLoader = new VrmlLoader();\n loader = vrmlLoader;\n break;\n }\n case \"gltf\": {\n if (!gltfLoader) gltfLoader = new GltfLoader(false);\n loader = gltfLoader;\n break;\n }\n case \"glb\": {\n if (!glbLoader) glbLoader = new GltfLoader(true);\n loader = glbLoader;\n break;\n }\n case \"usdz\":\n case \"usda\":\n case \"usdc\":\n case \"usd\": {\n if (!usdLoader) usdLoader = new UsdLoader();\n loader = usdLoader;\n break;\n }\n\n default: {\n throw new Error(\"Unknown file extension for external loader: \" + path);\n }\n }\n\n return loader.load(path, controller, useWorkers, progress);\n }\n })(),\n\n async _loadGeometry(path, controller, id, tid) {\n const buffer = await containersCache.getBuffer(path, id, controller);\n const loader = determineLoader(buffer);\n\n let geometry = null;\n if (config.useWorkers && loader.loadWorker) {\n geometry = await loader.loadWorker(buffer, tid);\n } else {\n geometry = await loader.loadMain(buffer);\n }\n\n return geometry;\n },\n\n _abortAssetGroupByCondition(condition, errorCode) {\n\n let j = 0;\n while(j !== _assetGroupQueue.length) {\n\n const assetGroup = _assetGroupQueue[j];\n\n if (condition(assetGroup)) {\n _assetGroupQueue.splice(j, 1);\n\n for (const asset of assetGroup.assets) {\n asset.reject(errorCode);\n }\n\n } else {\n ++j;\n }\n\n }\n\n for (const activeAssetGroup of _activeAssetGroups) {\n\n if (condition(activeAssetGroup)) {\n\n for (const asset of activeAssetGroup.assets) {\n if (asset.loadingReject) {\n asset.loadingReject(errorCode);\n } else {\n asset.reject(errorCode);\n }\n if (asset.abortController) asset.abortController.abort();\n }\n activeAssetGroup.assets.length = 0;\n\n }\n\n }\n\n },\n\n stopLoading() {\n\n if (cortoLoader) {\n cortoLoader.stopLoading();\n }\n\n if (zstdLoader) {\n zstdLoader.stopLoading();\n }\n\n containersCache.cleanup();\n\n for (let abortController of abortControllers) {\n abortController.abort();\n }\n abortControllers.length = 0;\n\n },\n\n isNetworkError(code) {\n return code === networkStatus.ERROR;\n },\n\n isLegalError(code) {\n return code === ABORT_EVERYTHING || code === ABORT_BY_PATH ||\n code === ABORT_BY_TYPE || code === ABORT_ERROR || code === networkStatus.ERROR;\n },\n\n isDecimationError(code) {\n return code === ABORT_BY_PATH || code === ABORT_BY_TYPE ||\n code === ABORT_ERROR;\n },\n\n isTotalAborted(code) {\n return code === ABORT_EVERYTHING;\n }\n\n};\n\nfunction determineLoader(data) {\n const compression = containersCache.getBufferType(data);\n switch (compression) {\n case \"zstd\":\n if (!zstdLoader) {\n zstdLoader = new ZStdLoader(false);\n }\n return zstdLoader;\n case \"crt \":\n if (!cortoLoader) {\n cortoLoader = new CortoLoader(false);\n }\n return cortoLoader;\n case \"pln \":\n if (!plnLoader) {\n plnLoader = new PlnLoader();\n }\n return plnLoader;\n default:\n return null;\n }\n}\n","import {primitiveType, bufferType} from \"_src/engine/constants\";\nimport { Geometry, GeometryBuffer } from \"_src/engine/geometry.js\";\nimport arrayTools from \"_src/engine/utility/arrays\";\n\n// factory\nexport default {\n\n create(type, params = {}) {\n switch (type) {\n case primitiveType.PLANE:\n return createPlane(params);\n case primitiveType.TEXT_PLANE:\n return createTextPlane(params);\n case primitiveType.SPHERE:\n return createSphere(params);\n case primitiveType.AABOX:\n return createAABox(params);\n case primitiveType.SCREEN_QUAD:\n return createScreenTriangle();\n case primitiveType.CIRCLE:\n return createCircle(params);\n case primitiveType.LINE:\n return createLine(params);\n case primitiveType.GRID:\n return createGrid(params);\n case primitiveType.LINE_ARRAY:\n return createLines(params);\n case primitiveType.ARROW:\n return createArrow(params);\n }\n }\n\n}\n\nfunction createPlane( {width = 1, height = 1, xSegments = 1, ySegments = 1} ) {\n\n const stepX = width / xSegments;\n const stepY = height / ySegments;\n\n const seg1X = xSegments + 1;\n const seg1Y = ySegments + 1;\n\n const width_half = width / 2;\n const height_half = height / 2;\n\n const numVertices = seg1Y * seg1X;\n\n const posNormByteLength = 3 * numVertices * Float32Array.BYTES_PER_ELEMENT;\n const uvByteLength = 2 * numVertices * Float32Array.BYTES_PER_ELEMENT;\n\n const posBuffer = new ArrayBuffer(posNormByteLength);\n const normBuffer = new ArrayBuffer(posNormByteLength);\n const uvBuffer = new ArrayBuffer(uvByteLength);\n\n const positionsItem = new GeometryBuffer({ buffer : posBuffer, type : bufferType.F32_3 });\n const normalItem = new GeometryBuffer({ buffer : normBuffer, type : bufferType.F32_3 });\n const uvItem = new GeometryBuffer({ buffer : uvBuffer, type : bufferType.F32_2 });\n\n const positions = positionsItem.getBuffer();\n const normals = normalItem.getBuffer();\n const uvs = uvItem.getBuffer();\n\n const indicesData = [];\n\n for ( let iy = 0; iy < seg1Y; ++iy ) {\n const y = iy * stepY - height_half;\n for ( let ix = 0; ix < seg1X; ++ix ) {\n\n const offset = iy * seg1X + ix;\n\n const posNormOffset = 3 * offset;\n const uvOffset = 2 * offset;\n\n const x = ix * stepX - width_half;\n\n positions[posNormOffset] = x;\n positions[posNormOffset + 1] = y;\n positions[posNormOffset + 2] = 0;\n\n normals[posNormOffset] = 0;\n normals[posNormOffset + 1] = 0;\n normals[posNormOffset + 2] = 1;\n\n uvs[uvOffset] = ix / xSegments;\n uvs[uvOffset + 1] = 1 - (iy / ySegments);\n\n }\n\n }\n\n for ( var iy = 0; iy < ySegments; iy ++ ) {\n for ( var ix = 0; ix < xSegments; ix ++ ) {\n\n const i1 = ix + seg1X * iy;\n const i2 = ix + seg1X * ( iy + 1 );\n const i3 = ( ix + 1 ) + seg1X * ( iy + 1 );\n const i4 = ( ix + 1 ) + seg1X * iy;\n\n indicesData.push( i1, i4, i2 );\n indicesData.push( i2, i4, i3 );\n }\n }\n\n const indices = generateIndBuf(indicesData, positions);\n const indicesType = arrayTools.uintArrayType(indices, 3);\n const indicesItem = new GeometryBuffer({ buffer : indices.buffer, type : indicesType });\n\n const bbox = [-0.5 * width, -0.5 * height, 0,\n 0.5 * width, 0.5 * height, 0 ];\n\n const layout = {\n \"indices\" : indicesItem,\n \"a_position\" : positionsItem,\n \"a_normal\" : normalItem,\n \"a_uv\" : uvItem\n };\n\n return new Geometry( { layout, bbox } );\n\n}\n\nfunction getCharDescriptor(char, fontDescriptor) {\n const charCode = char.charCodeAt(0);\n let charDescriptor = fontDescriptor.find(cd => cd[\"unicode\"] === charCode);\n if (!charDescriptor) {\n charDescriptor = fontDescriptor[0];\n }\n\n return charDescriptor;\n}\n\nfunction createTextPlane( {text, fontDescriptor, textureWidth, xStart, yStart} ) {\n const charsCount = text.length;\n let width = 0;\n for (const char of text) {\n const charDescriptor = getCharDescriptor(char, fontDescriptor);\n const charAdvance = charDescriptor[\"advance\"];\n\n width += charAdvance;\n }\n\n if (xStart === undefined) {\n xStart = -width/2;\n }\n\n if (yStart === undefined) {\n yStart = -0.5;\n }\n\n const numVertices = charsCount * 4;\n\n const posNormByteLength = 3 * numVertices * Float32Array.BYTES_PER_ELEMENT;\n const uvByteLength = 2 * numVertices * Float32Array.BYTES_PER_ELEMENT;\n\n const posBuffer = new ArrayBuffer(posNormByteLength);\n const normBuffer = new ArrayBuffer(posNormByteLength);\n const uvBuffer = new ArrayBuffer(uvByteLength);\n\n const positionsItem = new GeometryBuffer({ buffer : posBuffer, type : bufferType.F32_3 });\n const normalItem = new GeometryBuffer({ buffer : normBuffer, type : bufferType.F32_3 });\n const uvItem = new GeometryBuffer({ buffer : uvBuffer, type : bufferType.F32_2 });\n\n const positions = positionsItem.getBuffer();\n const normals = normalItem.getBuffer();\n const uvs = uvItem.getBuffer();\n const indicesData = [];\n\n let currentX = xStart;\n for (let i=0; i 0 ) {\n indices[idx++] = a;\n indices[idx++] = b;\n indices[idx++] = d;\n }\n\n if (iy !== heightSegments - 1 || thetaEnd < Math.PI) {\n indices[idx++] = b;\n indices[idx++] = c;\n indices[idx++] = d;\n }\n\n }\n\n }\n\n const bbox = minmax;\n\n const layout = {\n \"indices\" : indicesItem,\n \"a_position\" : positionsItem,\n \"a_normal\" : normalItem\n };\n\n return new Geometry( { layout, bbox } );\n\n}\n\nfunction createAABox({ halfX = 1, halfY = 1, halfZ = 1 }) {\n\n const numVertices = 64 + 36;\n const numIndices = 6 * numVertices / 4;\n\n const posByteLength = 3 * numVertices * Float32Array.BYTES_PER_ELEMENT;\n const uvByteLength = numVertices * Float32Array.BYTES_PER_ELEMENT;\n const indByteLength = numVertices * Uint8Array.BYTES_PER_ELEMENT;\n\n const indices = arrayTools.createUintArrayByValueLength(numVertices - 1,\n numIndices);\n const indicesType = arrayTools.uintArrayType(indices, 3);\n const indicesItem = new GeometryBuffer({ buffer : indices.buffer, type : indicesType });\n\n const posBuffer = new ArrayBuffer(posByteLength);\n const positionsItem = new GeometryBuffer({ buffer : posBuffer, type : bufferType.F32_3 });\n const positions = positionsItem.getBuffer();\n\n const uvBuffer = new ArrayBuffer(uvByteLength);\n const uvItem = new GeometryBuffer({ buffer : uvBuffer, type : bufferType.F32_1 });\n const uvs = uvItem.getBuffer();\n\n const posNextBuffer = new ArrayBuffer(posByteLength);\n const positionsNextItem = new GeometryBuffer({ buffer : posNextBuffer, type : bufferType.F32_3 });\n const positionsNext = positionsNextItem.getBuffer();\n\n const vertIdBuffer = new ArrayBuffer(indByteLength);\n const vertexIdItem = new GeometryBuffer({ buffer : vertIdBuffer, type : bufferType.UI8_1 });\n const vertexIds = vertexIdItem.getBuffer();\n\n const x = halfX;\n const y = halfY;\n const z = halfZ;\n\n const positionsData = [x,-y,z, x,-y,-z, x,-y,-z, -x,-y,-z, -x,-y,-z, -x,-y,z, -x,-y,z, x,-y,z,\n x,y,z, x,y,-z, x,y,-z, -x,y,-z, -x,y,-z, -x,y,z, -x,y,z, x,y,z];\n\n for (let i = 0; i < 16; i += 2) {\n\n const ind = 3 * i;\n const indNext = 3 * (i + 1);\n\n const x0 = positionsData[ind];\n const y0 = positionsData[ind + 1];\n const z0 = positionsData[ind + 2];\n\n const x1 = positionsData[indNext];\n const y1 = positionsData[indNext + 1];\n const z1 = positionsData[indNext + 2];\n\n const posOffset = 0.5 * 3 * i * 4;\n const uvOffset = 0.5 * i * 4;\n const indOffset = 0.5 * 6 * i;\n\n addLineToBuffer(x0, y0, z0, x1, y1, z1, 0, 0, positions, positionsNext, vertexIds, uvs, null, indices,\n posOffset, indOffset, uvOffset);\n\n }\n\n const posOffset = 12 * 8;\n const indOffset = 6 * 8;\n const uvOffset = 4 * 8;\n\n addLineToBuffer(x,-y,z,x,y,z,0,0, positions, positionsNext, vertexIds, uvs, null, indices,\n posOffset, indOffset, uvOffset);\n addLineToBuffer(x,-y,-z,x,y,-z,0,0, positions, positionsNext, vertexIds, uvs, null, indices,\n posOffset + 12, indOffset + 6, uvOffset + 4);\n addLineToBuffer(-x,-y,-z,-x,y,-z,0,0,positions, positionsNext, vertexIds, uvs, null, indices,\n posOffset + 24, indOffset + 12, uvOffset + 8);\n addLineToBuffer(-x,-y,z,-x,y,z,0,0, positions, positionsNext, vertexIds, uvs, null, indices,\n posOffset + 36, indOffset + 18, uvOffset + 12);\n\n const layout = {\n \"indices\" : indicesItem,\n \"a_position\" : positionsItem,\n \"a_position_next\" : positionsNextItem,\n \"a_vertex_id\" : vertexIdItem,\n \"a_uv\" : uvItem\n };\n\n return new Geometry( { layout} );\n\n}\n\nfunction createCircle({ numPoints = 5, radius = 1}) {\n\n const positionsData = [];\n const indicesData = [];\n\n let x = radius;\n let y = 0.0;\n let z = 0.0;\n\n const deltaAngle = 2.0 * Math.PI / numPoints;\n\n const cosa = Math.cos(deltaAngle);\n const sina = Math.sin(deltaAngle);\n\n positionsData.push(x, y, z);\n\n for (let i = 1; i < numPoints; ++i) {\n\n const X = x;\n const Z = z;\n\n x = cosa * X - sina * Z;\n z = sina * X + cosa * Z;\n\n positionsData.push(x, y, z);\n indicesData.push(i - 1, i);\n\n }\n\n indicesData.push(numPoints - 1, 0);\n\n const posByteLength = 3 * numPoints * Float32Array.BYTES_PER_ELEMENT;\n\n const posBuffer = new ArrayBuffer(posByteLength);\n\n const positionsItem = new GeometryBuffer({ buffer : posBuffer, type : bufferType.F32_3 });\n const positions = positionsItem.getBuffer();\n\n positions.set(positionsData);\n const indices = generateIndBuf(indicesData, positionsData);\n const indicesType = arrayTools.uintArrayType(indices, 3);\n const indicesItem = new GeometryBuffer({ buffer : indices.buffer, type : indicesType });\n\n const layout = {\n \"indices\" : indicesItem,\n \"a_position\" : positionsItem\n };\n\n return new Geometry( { layout} );\n\n}\n\nfunction createLine({ x0 = 0, y0 = 0, z0 = 0, x1 = 0, y1 = 0, z1 = 0 }) {\n\n const numVertices = 4;\n const numIndices = 6;\n\n const posByteLength = 3 * numVertices * Float32Array.BYTES_PER_ELEMENT;\n const uvByteLength = numVertices * Float32Array.BYTES_PER_ELEMENT;\n const indByteLength = numVertices * Uint8Array.BYTES_PER_ELEMENT;\n\n const posBuffer = new ArrayBuffer(posByteLength);\n const nextPosBuffer = new ArrayBuffer(posByteLength);\n const vertIdBuffer = new ArrayBuffer(indByteLength);\n const uvBuffer = new ArrayBuffer(uvByteLength);\n\n const positionsItem = new GeometryBuffer({ buffer : posBuffer, type : bufferType.F32_3 });\n const positionsNextItem = new GeometryBuffer({ buffer : nextPosBuffer, type : bufferType.F32_3 });\n const vertexIdItem = new GeometryBuffer({ buffer : vertIdBuffer, type : bufferType.UI8_1 });\n const uvItem = new GeometryBuffer({ buffer : uvBuffer, type : bufferType.F32_1 });\n\n const positions = positionsItem.getBuffer();\n const positionsNext = positionsNextItem.getBuffer();\n const vertexIds = vertexIdItem.getBuffer();\n const uvs = uvItem.getBuffer();\n\n const indices = arrayTools.createUintArrayByValueLength(numVertices - 1,\n numIndices);\n const indicesType = arrayTools.uintArrayType(indices, 3);\n const indicesItem = new GeometryBuffer({ buffer : indices.buffer, type : indicesType });\n\n addLineToBuffer(x0,y0,z0, x1,y1,z1, 0,0, positions, positionsNext, vertexIds, uvs, null, indices,\n 0, 0, 0);\n\n const layout = {\n \"indices\" : indicesItem,\n \"a_position\" : positionsItem,\n \"a_position_next\" : positionsNextItem,\n \"a_vertex_id\" : vertexIdItem,\n \"a_uv\" : uvItem\n };\n\n return new Geometry( { layout} );\n\n}\n\nfunction createGrid({ xLines = 5, yLines = 5, xStep = 1, yStep = 1 }) {\n\n const numIndices = 2 * 6 * xLines + 2 * 6 * (yLines + 1);\n const numVertices = 2 * 4 * xLines + 2 * 4 * (yLines + 1);\n\n const posByteLength = 3 * numVertices * Float32Array.BYTES_PER_ELEMENT;\n const indByteLength = numVertices * Uint8Array.BYTES_PER_ELEMENT;\n const uvByteLength = numVertices * Float32Array.BYTES_PER_ELEMENT;\n\n const posBuffer = new ArrayBuffer(posByteLength);\n const nextPosBuffer = new ArrayBuffer(posByteLength);\n const vertIdBuffer = new ArrayBuffer(indByteLength);\n const uvBuffer = new ArrayBuffer(uvByteLength);\n\n const positionsItem = new GeometryBuffer({ buffer : posBuffer, type : bufferType.F32_3 });\n const positionsNextItem = new GeometryBuffer({ buffer : nextPosBuffer, type : bufferType.F32_3 });\n const vertexIdItem = new GeometryBuffer({ buffer : vertIdBuffer, type : bufferType.UI8_1 });\n const uvItem = new GeometryBuffer({ buffer : uvBuffer, type : bufferType.F32_1 });\n\n const positions = positionsItem.getBuffer();\n const positionsNext = positionsNextItem.getBuffer();\n const vertexIds = vertexIdItem.getBuffer();\n const uvs = uvItem.getBuffer();\n\n const indices = arrayTools.createUintArrayByValueLength(numVertices - 1,\n numIndices);\n const indicesType = arrayTools.uintArrayType(indices, 3);\n const indicesItem = new GeometryBuffer({ buffer : indices.buffer, type : indicesType });\n\n const halfWidth = -yLines * yStep;\n const halfHeight = -xLines * xStep;\n\n let posOffset = 0;\n let indOffset = 0;\n let uvOffset = 0;\n\n for (let i = -xLines; i <= xLines; ++i) {\n\n const x0 = i * xStep;\n\n const y0 = halfWidth;\n const y1 = -halfWidth;\n\n addLineToBuffer(x0, y0, 0, x0, y1, 0, 0, 0, positions, positionsNext, vertexIds, uvs, null, indices,\n posOffset, indOffset, uvOffset);\n\n indOffset += 6;\n posOffset += 12;\n uvOffset += 4;\n\n }\n\n for (let i = -yLines; i <= yLines; ++i) {\n\n const y0 = i * yStep;\n\n const x0 = halfHeight;\n const x1 = -halfHeight;\n\n addLineToBuffer(x0, y0, 0, x1, y0, 0, 0, 0, positions, positionsNext, vertexIds, uvs, null, indices,\n posOffset, indOffset, uvOffset);\n\n indOffset += 6;\n posOffset += 12;\n uvOffset += 4;\n\n }\n\n const layout = {\n \"indices\" : indicesItem,\n \"a_position\" : positionsItem,\n \"a_position_next\" : positionsNextItem,\n \"a_vertex_id\" : vertexIdItem,\n \"a_uv\" : uvItem\n };\n\n return new Geometry( { layout } );\n\n}\n\nfunction createLines({ points, primitives, attribute, aspect = 1 }) {\n\n const numLines = primitives.length / 2;\n const numIndices = 6 * numLines;\n const numVertices = 4 * numLines;\n\n const posByteLength = 3 * numVertices * Float32Array.BYTES_PER_ELEMENT;\n const indByteLength = numVertices * Uint8Array.BYTES_PER_ELEMENT;\n const uvByteLength = numVertices * Float32Array.BYTES_PER_ELEMENT;\n const attrByteLength = numVertices * Float32Array.BYTES_PER_ELEMENT;\n\n const posBuffer = new ArrayBuffer(posByteLength);\n const nextPosBuffer = new ArrayBuffer(posByteLength);\n const vertIdBuffer = new ArrayBuffer(indByteLength);\n const uvBuffer = !attribute ? new ArrayBuffer(uvByteLength) : null;\n const attrBuffer = attribute ? new ArrayBuffer(attrByteLength): null;\n\n const positionsItem = new GeometryBuffer({ buffer : posBuffer, type : bufferType.F32_3 });\n const positionsNextItem = new GeometryBuffer({ buffer : nextPosBuffer, type : bufferType.F32_3 });\n const vertexIdItem = new GeometryBuffer({ buffer : vertIdBuffer, type : bufferType.UI8_1 });\n const uvItem = uvBuffer ? new GeometryBuffer({ buffer : uvBuffer, type : bufferType.F32_1 }) : null;\n const attrItem = attrBuffer ? new GeometryBuffer({ buffer : attrBuffer, type : bufferType.F32_1 }) : null;\n\n const posTypedBuffer = positionsItem.getBuffer();\n const nextPosTypedBuffer = positionsNextItem.getBuffer();\n const vertIdTypedBuffer = vertexIdItem.getBuffer();\n const uvTypedBuffer = uvItem ? uvItem.getBuffer() : null;\n const attrTypedBuffer = attrItem ? attrItem.getBuffer() : null;\n\n const indices = arrayTools.createUintArrayByValueLength(numVertices - 1,\n numIndices);\n const indicesType = arrayTools.uintArrayType(indices, 3);\n const indicesItem = new GeometryBuffer({ buffer : indices.buffer, type : indicesType });\n\n let posOffset = 0;\n let indOffset = 0;\n let uvOffset = 0;\n let uvLength = 0.0;\n\n for (let i = 0; i < primitives.length; i += 2) {\n\n const v0 = primitives[i];\n const v1 = primitives[i + 1];\n\n const x0 = points[v0 * 3];\n const y0 = points[v0 * 3 + 1];\n const z0 = points[v0 * 3 + 2];\n\n const x1 = points[v1 * 3];\n const y1 = points[v1 * 3 + 1];\n const z1 = points[v1 * 3 + 2];\n\n let [a0, a1] = [0,0];\n if (attribute) {\n a0 = attribute[v0];\n a1 = attribute[v1];\n }\n\n addLineToBuffer(x0, y0, z0, x1, y1, z1, a0, a1, posTypedBuffer, nextPosTypedBuffer, vertIdTypedBuffer, uvTypedBuffer, attrTypedBuffer, indices,\n posOffset, indOffset, uvOffset, uvLength, aspect);\n\n indOffset += 6;\n posOffset += 12;\n uvOffset += 4;\n\n uvLength += Math.sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0) / aspect / aspect);\n\n }\n\n const layout = {\n \"indices\" : indicesItem,\n \"a_position\" : positionsItem,\n \"a_position_next\" : positionsNextItem,\n \"a_vertex_id\" : vertexIdItem,\n };\n if (uvItem) layout[\"a_uv\"] = uvItem;\n if (attrItem) layout[\"a_custom\"] = attrItem;\n\n return new Geometry( { layout } );\n\n}\n\nfunction createScreenTriangle() {\n\n const numVertices = 4;\n const posByteLength = 3 * numVertices * Float32Array.BYTES_PER_ELEMENT;\n const uvByteLength = 2 * numVertices * Float32Array.BYTES_PER_ELEMENT;\n\n const posBuffer = new ArrayBuffer(posByteLength);\n const positionsItem = new GeometryBuffer({ buffer : posBuffer, type : bufferType.F32_3 });\n const positions = positionsItem.getBuffer();\n\n const uvBuffer = new ArrayBuffer(uvByteLength);\n const uvItem = new GeometryBuffer({ buffer : uvBuffer, type : bufferType.F32_2 });\n const uv = uvItem.getBuffer();\n\n positions.set([-1,-1,0, 1,-1,0, -1,1,0, 1,1,0]);\n uv.set([-1,-1, 1,-1, -1,1, 1,1]);\n\n const indices = generateIndBuf([0,1,2, 1,3,2], positions);\n const indicesType = arrayTools.uintArrayType(indices, 3);\n const indicesItem = new GeometryBuffer({ buffer : indices.buffer, type : indicesType });\n\n const layout = {\n \"indices\" : indicesItem,\n \"a_position\" : positionsItem,\n \"a_uv\" : uvItem,\n };\n\n return new Geometry( { layout} );\n}\n\nfunction generateIndBuf(indicesData, positions) {\n const maxValue = positions.length / 3 - 1;\n return arrayTools.createUintArrayByValueData(maxValue, indicesData);\n}\n\nfunction addLineToBuffer(x0, y0, z0, x1, y1, z1, a0, a1, positions, positionsNext, vertexIds, uvs, attribute,\n indices, posOffset, indOffset, uvOffset, uvStartValue = 0, aspect = 1) {\n\n const vertOffset = 4 * indOffset / 6;\n\n indices[indOffset] = 0 + vertOffset;\n indices[indOffset + 1] = 1 + vertOffset;\n indices[indOffset + 2] = 2 + vertOffset;\n\n indices[indOffset + 3] = 0 + vertOffset;\n indices[indOffset + 4] = 3 + vertOffset;\n indices[indOffset + 5] = 1 + vertOffset;\n\n const uvValue = Math.sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0) / aspect / aspect + (z1 - z0) * (z1 - z0));\n\n // 0\n\n let offset = posOffset;\n let vertexIdOffset = posOffset / 3;\n\n positions[offset] = x0;\n positions[offset + 1] = y0;\n positions[offset + 2] = z0;\n\n if (uvs) uvs[uvOffset] = uvStartValue;\n if (attribute) attribute[offset / 3] = a0;\n\n positionsNext[offset] = x1;\n positionsNext[offset + 1] = y1;\n positionsNext[offset + 2] = z1;\n\n vertexIds[vertexIdOffset++] = 0;\n\n // 1\n offset += 3;\n\n positions[offset] = x1;\n positions[offset + 1] = y1;\n positions[offset + 2] = z1;\n\n if (uvs) uvs[uvOffset + 1] = uvStartValue + uvValue;\n if (attribute) attribute[offset / 3] = a1;\n\n positionsNext[offset] = x0;\n positionsNext[offset + 1] = y0;\n positionsNext[offset + 2] = z0;\n\n vertexIds[vertexIdOffset++] = 1;\n\n // 2\n\n offset += 3;\n\n positions[offset] = x0;\n positions[offset + 1] = y0;\n positions[offset + 2] = z0;\n\n if (uvs) uvs[uvOffset + 2] = uvStartValue;\n if (attribute) attribute[offset / 3] = a0;\n\n positionsNext[offset] = x1;\n positionsNext[offset + 1] = y1;\n positionsNext[offset + 2] = z1;\n\n vertexIds[vertexIdOffset++] = 2;\n\n // 3\n\n offset += 3;\n\n positions[offset] = x1;\n positions[offset + 1] = y1;\n positions[offset + 2] = z1;\n\n if (uvs) uvs[uvOffset + 3] = uvStartValue + uvValue;\n if (attribute) attribute[offset / 3] = a1;\n\n positionsNext[offset] = x0;\n positionsNext[offset + 1] = y0;\n positionsNext[offset + 2] = z0;\n\n vertexIds[vertexIdOffset++] = 3;\n\n}\n\nfunction createArrow() {\n const numVertices = 3;\n const posByteLength = 3 * numVertices * Float32Array.BYTES_PER_ELEMENT;\n\n const posBuffer = new ArrayBuffer(posByteLength);\n const positionsItem = new GeometryBuffer({ buffer : posBuffer, type : bufferType.F32_3 });\n const positions = positionsItem.getBuffer();\n\n positions.set([0,0,0, -1,4,0, 1,4,0]);\n\n const indices = generateIndBuf([0,1,2], positions);\n const indicesType = arrayTools.uintArrayType(indices, 3);\n const indicesItem = new GeometryBuffer({ buffer : indices.buffer, type : indicesType });\n\n const layout = {\n \"indices\" : indicesItem,\n \"a_position\" : positionsItem,\n };\n\n return new Geometry( { layout} );\n}\n","import config from \"_src/config\";\nimport {vec2, vec3} from \"_src/libs/gl-matrix\";\n\nexport const screenUtils = {\n\n toScreen(globalViewport, localViewport, clientX, clientY) {\n\n const localX = clientX - globalViewport[0];\n const localY = clientY - globalViewport[1];\n\n const viewportX = localViewport[2];\n const viewportY = localViewport[3];\n const leftBottomX = localViewport[0];\n const leftBottomY = localViewport[1];\n\n const x = (localX - leftBottomX) / viewportX * 2 - 1;\n const y = (localY - leftBottomY) / viewportY * 2 - 1;\n\n return {x, y};\n },\n\n fromScreen(globalViewport, localViewport, screenX, screenY) {\n\n const viewportX = localViewport[2];\n const viewportY = localViewport[3];\n const leftBottomX = localViewport[0];\n const leftBottomY = localViewport[1];\n\n const x = (screenX + 1) / 2 * viewportX + leftBottomX + globalViewport[0];\n const y = (screenY + 1) / 2 * viewportY + leftBottomY + globalViewport[1];\n\n return {x, y};\n },\n\n getCanvasPhisycalSize(canvas) {\n\n const pixelRatio = this.getPixelRatio();\n\n const width = Math.max(pixelRatio * canvas.offsetWidth, 1);\n const height = Math.max(pixelRatio * canvas.offsetHeight, 1);\n\n return { width, height };\n\n },\n\n viewportToPhisycalSize(viewport, dest) {\n\n const pixelRatio = this.getPixelRatio();\n\n dest[0] = viewport[0] * pixelRatio;\n dest[1] = viewport[1] * pixelRatio;\n dest[2] = viewport[2] * pixelRatio;\n dest[3] = viewport[3] * pixelRatio;\n\n return dest;\n\n },\n\n virtualPointToPhysical(physicalPoint, virtualPoint) {\n const pixelRatio = this.getPixelRatio();\n\n physicalPoint[0] = virtualPoint[0] * pixelRatio;\n physicalPoint[1] = virtualPoint[1] * pixelRatio;\n\n return physicalPoint;\n },\n\n physicalPointToVirtual(virtualPoint, physicalPoint) {\n const pixelRatio = this.getPixelRatio();\n\n virtualPoint[0] = physicalPoint[0] / pixelRatio;\n virtualPoint[1] = physicalPoint[1] / pixelRatio;\n\n return virtualPoint;\n },\n\n clientToScreen(globalViewport, localViewport, clientX, clientY) {\n\n const pixelRatio = this.getPixelRatio();\n const physicalX = clientX * pixelRatio;\n const physicalY = clientY * pixelRatio;\n\n let {x, y} = this.toScreen(globalViewport, localViewport, physicalX, physicalY);\n y *= -1.0;\n\n return {x, y};\n },\n\n getPixelRatio() {\n return Math.min(window.devicePixelRatio || 1, config.maxPixelRatio);\n },\n\n calculateObjectScale: (function() {\n const _vec2Tmp = vec2.create();\n const _vec3Tmp1 = vec3.create();\n const _vec3Tmp2 = vec3.create();\n const _vec3Tmp3 = vec3.create();\n const _vec3Tmp4 = vec3.create();\n\n return function(virtualScreenSize, objectBoundingCircleDiameter, objectPosition, camera) {\n const pixelRatio = this.getPixelRatio();\n const physicalScreenSize = virtualScreenSize * pixelRatio;\n\n const zeroViewportPosition = vec2.set(_vec2Tmp,0,0);\n const localCameraXDirection = vec3.set(_vec3Tmp1, 1, 0, 0);\n const worldCameraXDirection = vec3.transformQuat(localCameraXDirection, localCameraXDirection, camera.quat);\n vec3.scale(worldCameraXDirection, worldCameraXDirection, objectBoundingCircleDiameter / 2);\n\n const spherePoint = vec3.add(_vec3Tmp2, objectPosition, worldCameraXDirection);\n const screenSpherePointRaw = camera.toScreenSpace(spherePoint, _vec3Tmp3);\n const screenSpherePoint = this.fromScreen(zeroViewportPosition, camera.viewport, screenSpherePointRaw[0], screenSpherePointRaw[1]);\n const screenSphereCenterRaw = camera.toScreenSpace(objectPosition, _vec3Tmp4);\n const screenSphereCenter = this.fromScreen(zeroViewportPosition, camera.viewport, screenSphereCenterRaw[0], screenSphereCenterRaw[1]);\n\n const screenSize = Math.abs(screenSphereCenter.x - screenSpherePoint.x) * 2;\n return physicalScreenSize / screenSize;\n }\n })(),\n\n calculateSegmentLinePeriod: (function() {\n const _vec2Tmp = vec2.create();\n const vec3Tmp1 = vec3.create();\n const vec3Tmp2 = vec3.create();\n\n return function(pos1, pos2, segmentScreenLength, camera) {\n const zeroViewportPosition = vec2.set(_vec2Tmp,0,0);\n\n const screenPosRaw1 = camera.toScreenSpace(pos1, vec3Tmp1);\n const screenPosRaw2 = camera.toScreenSpace(pos2, vec3Tmp2);\n const screenPos1 = screenUtils.fromScreen(zeroViewportPosition, camera.viewport, screenPosRaw1[0], screenPosRaw1[1]);\n const screenPos2 = screenUtils.fromScreen(zeroViewportPosition, camera.viewport, screenPosRaw2[0], screenPosRaw2[1]);\n\n const screenLength = Math.sqrt((screenPos2.x - screenPos1.x) * (screenPos2.x - screenPos1.x) + (screenPos2.y - screenPos1.y) * (screenPos2.y - screenPos1.y));\n const periodsCount = screenLength / segmentScreenLength;\n const worldLength = vec3.distance(pos1, pos2);\n\n return worldLength / periodsCount;\n }\n })(),\n\n};\n\nexport const mouseUtils = {\n isLeftButtonPressed(e) {\n return Boolean(e.buttons & 0b001);\n },\n\n isRightButtonPressed(e) {\n return Boolean(e.buttons & 0b010);\n },\n\n isMiddleButtonPressed(e) {\n return Boolean(e.buttons & 0b100);\n },\n\n isAnyButtonPressed(e) {\n return this.isLeftButtonPressed(e) || this.isRightButtonPressed(e) || this.isMiddleButtonPressed(e);\n },\n};\n\nexport function getPngImageFromPixels(pixels, width, height) {\n\n const canvas = document.createElement(\"canvas\");\n const clampedPixels = new Uint8ClampedArray(pixels);\n const iData = new ImageData(clampedPixels, width, height);\n\n const ctx = canvas.getContext(\"2d\");\n ctx.canvas.width = width;\n ctx.canvas.height = height;\n ctx.putImageData(iData, 0, 0);\n\n const dataURL = canvas.toDataURL(\"image/png\").replace(\"image/png\", \"image/octet-stream\");\n\n window.location.href=dataURL;\n\n}\n","import output from \"_src/engine/output.js\";\n\nexport default {\n\n _is_webgl2 : false,\n\n getContext(canvas = null, params) {\n \n let gl = null;\n\n gl = canvas.getContext(\"webgl2\", params);\n\n if (!gl) {\n\n gl = canvas.getContext(\"webgl\", params)\n || canvas.getContext(\"experimental-webgl\", params);\n\n if (!gl) {\n return null;\n }\n\n output.log(\"WebGL 1.0 initialized\", output.BLUE);\n\n } else {\n\n this._is_webgl2 = true;\n\n output.log(\"WebGL 2.0 initialized\", output.BLUE);\n\n }\n\n return gl;\n\n },\n\n checkWebGL2() {\n return this._is_webgl2;\n }\n\n}\n","import { uniformType, drawMode, bufferType } from \"_src/engine/constants\";\nimport context from \"_context\";\n\nlet _gl = null;\n\nexport default {\n\n getContext(canvas, params = { alpha : false,\n antialias : false,\n stencil : true }) {\n\n if (_gl) {\n return _gl;\n }\n\n if (!canvas) {\n return null;\n }\n\n let gl = context.getContext(canvas, params);\n\n _gl = gl;\n\n return gl;\n\n },\n\n loseContext() {\n _gl.getExtension(\"WEBGL_lose_context\").loseContext();\n },\n\n checkWebGL2() {\n return context.checkWebGL2();\n },\n\n setUniform1f(loc, value) {\n _gl.uniform1f(loc, value);\n },\n\n setUniform1fv(loc, value) {\n _gl.uniform1fv(loc, value);\n },\n\n setUniform1i(loc, value) {\n _gl.uniform1i(loc, value);\n },\n\n setUniform1iv(loc, value) {\n _gl.uniform1iv(loc, value);\n },\n\n setUniform2f(loc, value) {\n _gl.uniform2f(loc, value[0], value[1]);\n },\n\n setUniform2fv(loc, value) {\n _gl.uniform2fv(loc, value);\n },\n\n setUniform2i(loc, value) {\n _gl.uniform2i(loc, value[0], value[1]);\n },\n\n setUniform2iv(loc, value) {\n _gl.uniform2iv(loc, value);\n },\n\n setUniform3f(loc, value) {\n _gl.uniform3f(loc, value[0], value[1], value[2]);\n },\n\n setUniform3fv(loc, value) {\n _gl.uniform3fv(loc, value);\n },\n\n setUniform3i(loc, value) {\n _gl.uniform3i(loc, value[0], value[1], value[2]);\n },\n\n setUniform3iv(loc, value) {\n _gl.uniform3iv(loc, value);\n },\n\n setUniform4f(loc, value) {\n _gl.uniform4f(loc, value[0], value[1], value[2], value[3]);\n },\n\n setUniform4fv(loc, value) {\n _gl.uniform4fv(loc, value);\n },\n\n setUniform4i(loc, value) {\n _gl.uniform4i(loc, value[0], value[1], value[2], value[3]);\n },\n\n setUniform4iv(loc, value) {\n _gl.uniform4iv(loc, value);\n },\n\n setUniformMatrix2fv(loc, value) {\n _gl.uniformMatrix2fv(loc, false, value);\n },\n\n setUniformMatrix3fv(loc, value) {\n _gl.uniformMatrix3fv(loc, false, value);\n },\n\n setUniformMatrix4fv(loc, value) {\n _gl.uniformMatrix4fv(loc, false, value);\n },\n\n getUniformSetter(type) {\n switch (type) {\n\n case uniformType.FLOAT1:\n return this.setUniform1f;\n case uniformType.FLOAT1V:\n return this.setUniform1fv;\n case uniformType.FLOAT2:\n return this.setUniform2f;\n case uniformType.FLOAT2V:\n return this.setUniform2fv;\n case uniformType.FLOAT3:\n return this.setUniform3f;\n case uniformType.FLOAT3V:\n return this.setUniform3fv;\n case uniformType.FLOAT4:\n return this.setUniform4f;\n case uniformType.FLOAT4V:\n return this.setUniform4fv;\n\n case uniformType.INT1:\n return this.setUniform1i;\n case uniformType.INT1V:\n return this.setUniform1iv;\n case uniformType.INT2:\n return this.setUniform2i;\n case uniformType.INT2V:\n return this.setUniform2iv;\n case uniformType.INT3:\n return this.setUniform3i;\n case uniformType.INT3V:\n return this.setUniform3iv;\n case uniformType.INT4:\n return this.setUniform4i;\n case uniformType.INT4V:\n return this.setUniform4iv;\n\n case uniformType.MAT2:\n return this.setUniformMatrix2fv;\n case uniformType.MAT3:\n return this.setUniformMatrix3fv;\n case uniformType.MAT4:\n return this.setUniformMatrix4fv;\n\n }\n },\n\n getGLDrawMode(mode) {\n\n if (!_gl) {\n return null;\n }\n\n switch(mode) {\n case drawMode.LINES:\n return _gl.LINES;\n case drawMode.TRIANGLE_STRIP:\n return _gl.TRIANGLE_STRIP;\n case drawMode.TRIANGLE_FAN:\n return _gl.TRIANGLE_FAN;\n case drawMode.POINTS:\n return _gl.POINTS;\n default:\n return _gl.TRIANGLES;\n }\n },\n\n getGLBufferType(type) {\n\n if (!_gl) {\n return null;\n }\n\n switch (type) {\n case bufferType.F32_1:\n case bufferType.F32_2:\n case bufferType.F32_3:\n case bufferType.F32_4:\n return _gl.FLOAT;\n case bufferType.UI8_1:\n case bufferType.UI8_2:\n case bufferType.UI8_3:\n case bufferType.UI8_4:\n return _gl.UNSIGNED_BYTE;\n case bufferType.UI16_1:\n case bufferType.UI16_2:\n case bufferType.UI16_3:\n return _gl.UNSIGNED_SHORT;\n case bufferType.I8_1:\n case bufferType.I8_2:\n case bufferType.I8_3:\n return _gl.BYTE;\n case bufferType.I16_1:\n case bufferType.I16_2:\n case bufferType.I16_3:\n return _gl.SHORT;\n case bufferType.UI32_1:\n case bufferType.UI32_2:\n case bufferType.UI32_3:\n case bufferType.I32_1:\n case bufferType.I32_2:\n case bufferType.I32_3:\n // Such attributes are not allowed in webgl\n // They are used for consistency\n return null;\n default:\n throw \"Unsupported buffer type.\";\n }\n },\n\n setupTextures(textures) {\n\n for (let i = 0; i < textures.length; ++i) {\n\n _gl.activeTexture(_gl.TEXTURE0 + i);\n _gl.bindTexture(textures[i].target, textures[i].pixelBuffer);\n\n }\n\n },\n\n readPixelsSync(framebuffer, x, y, width, height, storage) {\n\n _gl.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer.fbo);\n // Only two format/type parameter pairs are accepted. GL_RGBA/GL_UNSIGNED_BYTE is always\n // accepted on default readbuffer. The other acceptable pair can be discovered by querying\n // GL_IMPLEMENTATION_COLOR_READ_FORMAT and GL_IMPLEMENTATION_COLOR_READ_TYPE.\n // _gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_FORMAT)\n // _gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_TYPE)\n _gl.readPixels(x, y, width, height, _gl.RGBA, _gl.UNSIGNED_BYTE, storage);\n _gl.bindFramebuffer(_gl.FRAMEBUFFER, null);\n\n return storage;\n\n },\n\n async readPixelsAsync(framebuffer, x, y, width, height, storage) {\n\n const buf = _gl.createBuffer();\n _gl.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer.fbo);\n _gl.bindBuffer(_gl.PIXEL_PACK_BUFFER, buf);\n _gl.bufferData(_gl.PIXEL_PACK_BUFFER, storage.byteLength, _gl.STREAM_READ);\n _gl.readPixels(x, y, width, height, _gl.RGBA, _gl.UNSIGNED_BYTE, 0);\n _gl.bindBuffer(_gl.PIXEL_PACK_BUFFER, null);\n _gl.bindFramebuffer(_gl.FRAMEBUFFER, null);\n\n await getBufferSubDataAsync(_gl, _gl.PIXEL_PACK_BUFFER, buf, 0, storage);\n\n _gl.deleteBuffer(buf);\n return storage;\n },\n\n getMaxRenderBufferSize() {\n return _gl ? _gl.getParameter(_gl.MAX_RENDERBUFFER_SIZE): 0;\n },\n\n cleanup() {\n _gl = null;\n }\n\n}\n\nfunction clientWaitAsync(gl, sync, interval_ms) {\n return new Promise((resolve) => {\n function test() {\n const status = gl.getSyncParameter(sync, gl.SYNC_STATUS);\n\n if (status === gl.SIGNALED) {\n resolve();\n } else {\n setTimeout(test, interval_ms);\n }\n }\n test();\n });\n}\n\nasync function getBufferSubDataAsync(gl, target, buffer, srcByteOffset, dstBuffer,\n /* optional */ dstOffset, /* optional */ length) {\n const sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);\n gl.flush();\n\n await clientWaitAsync(gl, sync, 10);\n gl.deleteSync(sync);\n\n gl.bindBuffer(target, buffer);\n gl.getBufferSubData(target, srcByteOffset, dstBuffer, dstOffset, length);\n gl.bindBuffer(target, null);\n\n return dstBuffer;\n}\n","import {\n CadType,\n ContourDescriptor,\n IBaseCadItem,\n IBaseItem,\n IBaseMeasureItem,\n ICadCone,\n ICadCylinder,\n ICadFreeform,\n ICadModel,\n ICadPlane,\n ICadSphere,\n ICadTorus,\n ICadTruncatedCone,\n ICadUndefined,\n IDistanceMapMeasure,\n IDistanceMeasure,\n IGroupableItem,\n IGroupItem,\n IMeasureItem,\n IModelItem,\n IObjectItem,\n IOrderingItem,\n IPhotoSetItem,\n IPointCloudScanItem,\n IProjectContent,\n IScanItem,\n ISectionGroupMeasure,\n ISimpleScanItem,\n MeasureItemType,\n ObjectItemType,\n PhotoDescriptor,\n PhotoState,\n SectionDescriptor\n} from \"_src/client/project_content_types\";\n\nimport {cadType, objectType, photoState, scanMode} from \"_src/constants\";\nimport appState from \"_src/app_state\";\nimport events from \"_src/engine/events\";\n\nclass BaseItem implements IBaseItem {\n id: string;\n uuid: string;\n name: string;\n visible: boolean;\n\n constructor(property: any) {\n this.id = property.getValue(\"id\");\n this.uuid = property.getValue(\"uuid\");\n this.name = property.getValue(\"name\");\n this.visible = property.getValue(\"visible\");\n }\n}\n\nclass GroupableItem extends BaseItem implements IGroupableItem {\n groupID?: string;\n\n constructor(property: any) {\n super(property);\n\n if (property.getValue(\"groupID\").length > 0) this.groupID = property.getValue(\"groupID\");\n }\n}\n\nclass GroupItem extends GroupableItem implements IGroupItem {\n type: ObjectItemType.Group;\n color: string;\n\n constructor(property: any) {\n super(property);\n this.type = ObjectItemType.Group;\n this.color = property.getValue(\"color\");\n }\n}\n\nclass ModelItem extends GroupableItem implements IModelItem {\n type: ObjectItemType.Model;\n\n color: string;\n polygons: number;\n vertices: number;\n scanner?: string;\n size: number;\n isHD: boolean;\n textured: boolean;\n\n constructor(property: any) {\n super(property);\n this.type = ObjectItemType.Model;\n\n this.color = property.getValue(\"color\");\n this.polygons = property.getValue(\"numPolygons\");\n this.vertices = property.getValue(\"numVertices\");\n this.size = property.getValue(\"datasize\");\n this.isHD = property.getValue(\"isHD\");\n this.textured = Boolean(property.getValue(\"numTexturedFrames\") > 0);\n\n if (property.getValue(\"scannertype\").length > 0 && property.getValue(\"scannertype\").toLowerCase() !== \"unknown\") this.scanner = property.getValue(\"scannertype\");\n }\n}\n\nclass ScanItem extends GroupableItem implements IScanItem {\n color: string;\n\n polygons: number;\n vertices: number;\n scanner?: string;\n frames: number;\n texturedFrames: number;\n size: number;\n\n isHD: boolean;\n hasrawgeometry: boolean;\n targetRawScan?: string;\n\n globalapplied: boolean;\n maxError?: number;\n\n constructor(property: any) {\n super(property);\n\n this.color = property.getValue(\"color\");\n this.polygons = appState.getStateValue(\"scanMode\") === scanMode.TRIANGLES ? property.getValue(\"numPolygons\") : property.getValue(\"numSurfels\");\n this.vertices = appState.getStateValue(\"scanMode\") === scanMode.TRIANGLES ? property.getValue(\"numVertices\") : property.getValue(\"numSurfels\");\n this.size = property.getValue(\"datasize\");\n\n this.frames = property.getValue(\"numFrames\");\n this.texturedFrames = property.getValue(\"numTexturedFrames\");\n this.isHD = property.getValue(\"isHD\");\n this.globalapplied = property.getValue(\"globalapplied\");\n this.hasrawgeometry = property.getValue(\"hasrawgeometry\");\n if (this.hasrawgeometry) this.targetRawScan = property.getValue(\"targetRawScan\");\n\n if (property.getValue(\"scannertype\").length > 0 && property.getValue(\"scannertype\").toLowerCase() !== \"unknown\") this.scanner = property.getValue(\"scannertype\");\n if (this.globalapplied) this.maxError = property.getValue(\"maxError\");\n }\n}\n\nclass SimpleScanItem extends ScanItem implements ISimpleScanItem {\n type: ObjectItemType.Scan;\n constructor(property: any) {\n super(property);\n this.type = ObjectItemType.Scan;\n }\n}\n\nclass PointCloudScanItem extends ScanItem implements IPointCloudScanItem {\n type: ObjectItemType.PointCloud;\n constructor(property: any) {\n super(property);\n this.type = ObjectItemType.PointCloud;\n }\n}\n\nclass BaseCadItem extends GroupableItem implements IBaseCadItem {\n type: ObjectItemType.Cad;\n\n color: string;\n\n polygons: number;\n vertices: number;\n size: number;\n\n constructor(property: any) {\n super(property);\n this.type = ObjectItemType.Cad;\n\n this.color = property.getValue(\"color\");\n this.polygons = property.getValue(\"numPolygons\");\n this.vertices = property.getValue(\"numVertices\");\n this.size = property.getValue(\"datasize\");\n }\n}\n\nclass CadModel extends BaseCadItem implements ICadModel {\n cadType: CadType.Model;\n facesCount: number;\n\n constructor(property: any) {\n super(property);\n this.cadType = CadType.Model;\n this.facesCount = property.getValue(\"cadProperties\")[\"numfaces\"];\n }\n}\n\nclass CadCylinder extends BaseCadItem implements ICadCylinder {\n cadType: CadType.Cylinder;\n radius: number;\n height: number;\n\n constructor(property: any) {\n super(property);\n this.cadType = CadType.Cylinder;\n this.radius = property.getValue(\"cadProperties\")[\"radius\"];\n this.height = property.getValue(\"cadProperties\")[\"height\"];\n }\n}\n\nclass CadCone extends BaseCadItem implements ICadCone {\n cadType: CadType.Cone;\n radius: number;\n height: number;\n angle: number;\n\n constructor(property: any) {\n super(property);\n this.cadType = CadType.Cone;\n this.radius = property.getValue(\"cadProperties\")[\"radius\"];\n this.height = property.getValue(\"cadProperties\")[\"height\"];\n this.angle = property.getValue(\"cadProperties\")[\"angle\"];\n }\n}\n\nclass CadTruncatedCone extends BaseCadItem implements ICadTruncatedCone {\n cadType: CadType.TruncatedCone;\n smallRadius: number;\n largeRadius: number;\n height: number;\n angle: number;\n\n constructor(property: any) {\n super(property);\n this.cadType = CadType.TruncatedCone;\n this.smallRadius = property.getValue(\"cadProperties\")[\"small-radius\"];\n this.largeRadius = property.getValue(\"cadProperties\")[\"large-radius\"];\n this.height = property.getValue(\"cadProperties\")[\"height\"];\n this.angle = property.getValue(\"cadProperties\")[\"angle\"];\n }\n}\n\nclass CadSphere extends BaseCadItem implements ICadSphere {\n cadType: CadType.Sphere;\n radius: number;\n\n constructor(property: any) {\n super(property);\n this.cadType = CadType.Sphere;\n this.radius = property.getValue(\"cadProperties\")[\"radius\"];\n }\n}\n\nclass CadPlane extends BaseCadItem implements ICadPlane {\n cadType: CadType.Plane;\n constructor(property: any) {\n super(property);\n this.cadType = CadType.Plane;\n }\n}\n\nclass CadTorus extends BaseCadItem implements ICadTorus {\n cadType: CadType.Torus;\n majorRadius: number;\n minorRadius: number;\n\n constructor(property: any) {\n super(property);\n this.cadType = CadType.Torus;\n this.majorRadius = property.getValue(\"cadProperties\")[\"major-radius\"];\n this.minorRadius = property.getValue(\"cadProperties\")[\"minor-radius\"];\n }\n}\n\nclass CadFreeform extends BaseCadItem implements ICadFreeform {\n cadType: CadType.Freeform;\n uOrder: number;\n vOrder: number;\n uPointsCount: number;\n vPointsCount: number;\n\n constructor(property: any) {\n super(property);\n this.cadType = CadType.Freeform;\n this.uOrder = property.getValue(\"cadProperties\")[\"u-order\"];\n this.vOrder = property.getValue(\"cadProperties\")[\"v-order\"];\n this.uPointsCount = property.getValue(\"cadProperties\")[\"u-numpoints\"];\n this.vPointsCount = property.getValue(\"cadProperties\")[\"v-numpoints\"];\n }\n}\n\nclass CadUndefined extends BaseCadItem implements ICadUndefined {\n cadType: CadType.Undefined;\n constructor(property: any) {\n super(property);\n this.cadType = CadType.Undefined;\n }\n}\n\nclass PhotoSetItem extends GroupableItem implements IPhotoSetItem {\n type: ObjectItemType.PhotoSet;\n\n registered: boolean;\n registrationTarget?: string;\n maxError?: number;\n failedPhotos?: number;\n\n totalPhotos: number;\n totalSize: number;\n camera?: string;\n focalLength?: number\n\n photos?: PhotoDescriptor[];\n\n constructor(property: any, parentableProperties: any[]) {\n super(property);\n this.type = ObjectItemType.PhotoSet;\n\n const extra = property.getValue(\"properties\");\n this.registered = property.getValue(\"registered\");\n if (this.registered) {\n this.maxError = extra[\"maxregerror\"] ? extra[\"maxregerror\"] : -1;\n this.failedPhotos = extra[\"numfailedphotos\"] ? extra[\"numfailedphotos\"] : 0;\n const parentObjectProp = parentableProperties.find(prop => prop.getValue(\"uuid\") === extra[\"target-fusion-uuid\"]);\n if (parentObjectProp) this.registrationTarget = parentObjectProp.getValue(\"id\");\n }\n\n this.totalPhotos = extra[\"numphotos\"] ? extra[\"numphotos\"] : 0;\n this.totalSize = extra[\"datasize\"] ? extra[\"datasize\"] : 0;\n if (extra[\"camera-model\"] && extra[\"camera-model\"].toLowerCase() !== \"unknown\") this.camera = extra[\"camera-model\"];\n if (extra[\"focal-length\"] && typeof(extra[\"focal-length\"]) === \"number\") this.focalLength = extra[\"focal-length\"];\n\n const photosData = property.getValue(\"photos\");\n if (photosData) {\n this.photos = [];\n for (const photoData of photosData) {\n const photoDesc: PhotoDescriptor = {\n id: photoData[\"id\"],\n name: photoData[\"name\"],\n state: _photoStateToExternal(photoData[\"state\"]),\n registered: photoData[\"properties\"][\"regerror\"] !== undefined && photoData[\"properties\"][\"regerror\"] >= 0,\n size: photoData[\"properties\"][\"datasize\"] ? photoData[\"properties\"][\"datasize\"] : 0,\n };\n if (photoDesc.registered) photoDesc.regError = photoData[\"properties\"][\"regerror\"];\n if (photoData[\"properties\"][\"camera-model\"]) photoDesc.camera = photoData[\"properties\"][\"camera-model\"];\n if (photoData[\"properties\"][\"focal-length-mm\"]) photoDesc.focalLength = photoData[\"properties\"][\"focal-length-mm\"];\n\n this.photos.push(photoDesc);\n }\n }\n }\n}\n\nclass BaseMeasureItem extends BaseItem implements IBaseMeasureItem {\n affiliation?: string[];\n\n constructor(property: any, parentableProperties: any[]) {\n super(property);\n\n const affiliation = [];\n for (const measuredObject of property.getValue(\"measuredObjects\") || []) {\n const measuredObjectUUID = measuredObject[\"object-uuid\"];\n const parentObjectProp = parentableProperties.find(prop => prop.getValue(\"uuid\") === measuredObjectUUID);\n if (parentObjectProp) affiliation.push(parentObjectProp.getValue(\"id\"));\n }\n if (affiliation.length) this.affiliation = affiliation;\n }\n}\n\nclass DistanceMeasure extends BaseMeasureItem implements IDistanceMeasure {\n type: MeasureItemType.Distance;\n\n selected: boolean;\n value?: number;\n constructor(property: any, parentableProperties: any[]) {\n super(property, parentableProperties);\n this.type = MeasureItemType.Distance;\n\n this.selected = property.getValue(\"selected\");\n const distance = property.getValue(\"properties\")[\"value\"];\n if (distance !== undefined) this.value = distance;\n }\n}\n\nclass SectionGroupMeasure extends BaseMeasureItem implements ISectionGroupMeasure {\n type: MeasureItemType.SectionGroup;\n\n selected: boolean;\n planes: number;\n distance: number;\n direction: string;\n sections: SectionDescriptor[];\n\n constructor(property: any, parentableProperties: any[]) {\n super(property, parentableProperties);\n this.type = MeasureItemType.SectionGroup;\n\n this.selected = property.getValue(\"selected\");\n this.planes = property.getValue(\"properties\")[\"planes\"];\n this.distance = property.getValue(\"properties\")[\"distance\"];\n this.direction = property.getValue(\"properties\")[\"direction\"];\n this.sections = [];\n\n for (const sectionProperty of property.getValue(\"geometries\") || []) {\n const sectionDesc: SectionDescriptor = {\n visible: sectionProperty[\"visible\"],\n selected: sectionProperty[\"selected\"],\n contours: [],\n }\n if (sectionProperty[\"properties\"][\"volume\"] !== undefined) sectionDesc.volume = sectionProperty[\"properties\"][\"volume\"];\n if (sectionProperty[\"properties\"][\"surfaceArea\"] !== undefined) sectionDesc.surfaceArea = sectionProperty[\"properties\"][\"surfaceArea\"];\n this.sections.push(sectionDesc);\n\n for (const contourProperty of sectionProperty[\"contours\"] || []) {\n const contourDesc: ContourDescriptor = {\n visible: contourProperty[\"visible\"],\n selected: contourProperty[\"selected\"],\n }\n if (contourProperty[\"properties\"][\"area\"] !== undefined) contourDesc.area = contourProperty[\"properties\"][\"area\"];\n if (contourProperty[\"properties\"][\"perimeter\"] !== undefined) contourDesc.perimeter = contourProperty[\"properties\"][\"perimeter\"];\n sectionDesc.contours.push(contourDesc);\n }\n }\n }\n}\n\nclass DistanceMapMeasure extends BaseMeasureItem implements IDistanceMapMeasure {\n type: MeasureItemType.DistanceMap;\n\n reference?: string;\n searchDistance: number;\n RMSD: number;\n expRange: number;\n expValue: number;\n meanAbsDeviation: number;\n meanAbsDistance: number;\n constructor(property: any, parentableProperties: any[]) {\n super(property, parentableProperties);\n this.type = MeasureItemType.DistanceMap;\n\n const measuredObjects = property.getValue(\"measuredObjects\");\n if (measuredObjects.length > 1) {\n const parentObjectProp = parentableProperties.find(prop => prop.getValue(\"uuid\") === measuredObjects[1][\"object-uuid\"]);\n if (parentObjectProp) this.reference = parentObjectProp.getValue(\"id\");\n }\n if (this.affiliation) this.affiliation.length = 1;\n\n this.searchDistance = property.getValue(\"searchDistance\");\n this.RMSD = property.getValue(\"properties\")[\"root-mean-square\"];\n this.expRange = this.RMSD * 3;\n this.expValue = property.getValue(\"properties\")[\"mean-signed-distance\"];\n this.meanAbsDeviation = property.getValue(\"properties\")[\"mean-abs-deviation\"];\n this.meanAbsDistance = property.getValue(\"properties\")[\"mean-abs-distance\"];\n }\n}\n\nclass ProjectContent implements IProjectContent {\n objects: IObjectItem[];\n measures: IMeasureItem[];\n ordering: IOrderingItem[];\n\n constructor() {\n this.objects = [];\n this.measures = [];\n this.ordering = [];\n }\n\n clone(): IProjectContent {\n return JSON.parse(JSON.stringify(this));\n }\n\n sync(projectTree: any) {\n this.objects.length = 0;\n this.measures.length = 0;\n this.ordering.length = 0;\n\n const groupProperties = projectTree.getPropertiesByType(objectType.GROUP);\n const modelProperties = projectTree.getPropertiesByType(objectType.FUSION);\n const scanProperties = projectTree.getPropertiesByType(objectType.SCAN);\n const pointCloudProperties = projectTree.getPropertiesByType(objectType.POINTCLOUD);\n const cadProperties = projectTree.getPropertiesByType(objectType.CAD);\n const photoGroupProperties = projectTree.getPropertiesByType(objectType.PHOTO_GROUP);\n const distanceMeasureProperties = projectTree.getPropertiesByType(objectType.LINEAR_MEASURE).concat(projectTree.getPropertiesByType(objectType.GEODESIC_MEASURE));\n const sectionGroupProperties = projectTree.getPropertiesByType(objectType.SECTION);\n const distanceMapProperties = projectTree.getPropertiesByType(objectType.DISTANCE_MAP);\n const ordering = projectTree.getOrdering();\n\n const parentableProperties = modelProperties.concat(scanProperties).concat(pointCloudProperties).concat(cadProperties);\n\n groupProperties.forEach((property: any) => this.objects.push(new GroupItem(property)));\n modelProperties.forEach((property: any) => this.objects.push(new ModelItem(property)));\n scanProperties.forEach((property: any) => this.objects.push(new SimpleScanItem(property)));\n pointCloudProperties.forEach((property: any) => this.objects.push(new PointCloudScanItem(property)));\n cadProperties.forEach((property: any) => this.objects.push(new (_getConstructorByCadType(property.getValue(\"cadType\")))(property)));\n photoGroupProperties.forEach((property: any) => this.objects.push(new PhotoSetItem(property, parentableProperties)));\n distanceMeasureProperties.forEach((property: any) => this.measures.push(new DistanceMeasure(property, parentableProperties)));\n sectionGroupProperties.forEach((property: any) => this.measures.push(new SectionGroupMeasure(property, parentableProperties)));\n distanceMapProperties.forEach((property: any) => this.measures.push(new DistanceMapMeasure(property, parentableProperties)));\n ordering.forEach((orderingItem: any) => this.ordering.push({id: orderingItem.id}));\n }\n}\n\nfunction _getConstructorByCadType(internalType: any) {\n switch (internalType) {\n case cadType.MODEL:\n return CadModel;\n case cadType.CYLINDER:\n return CadCylinder;\n case cadType.CONE:\n return CadCone;\n case cadType.TRUNCATED_CONE:\n return CadTruncatedCone;\n case cadType.SPHERE:\n return CadSphere;\n case cadType.PLANE:\n return CadPlane;\n case cadType.TORUS:\n return CadTorus;\n case cadType.FREEFORM:\n return CadFreeform;\n default:\n return CadUndefined;\n }\n}\n\nfunction _photoStateToExternal(state: any): PhotoState {\n switch (state) {\n case photoState.DEFAULT:\n return PhotoState.Default;\n case photoState.HOVERED:\n return PhotoState.Hovered;\n case photoState.ACTIVE:\n return PhotoState.Active;\n }\n}\n\nconst _projectContent = new ProjectContent();\nexport function syncProjectContent(projectTree: any): void {\n _projectContent.sync(projectTree);\n events.emit(\"projectContent\", _projectContent);\n}\n","import {objectType, propertyInitStatus} from \"_src/constants\";\nimport {syncProjectContent} from \"_src/client/project_content\";\nimport reformer from \"_src/reformer/reformer\";\n\nconst _properties = new Map();\nconst _ordering = [];\nlet _updated = false;\nexport default {\n version: \"\",\n\n addProperty(property) {\n _properties.set(property.getValue(\"id\"), property);\n _updated = true;\n },\n\n //designed to be used in friend classes: reformer, wrapper\n _getProperty(id) {\n return _properties.get(id);\n },\n\n removeObject(objectID) {\n _properties.delete(objectID);\n _ordering.splice(0, _ordering.length,..._ordering.filter(item => item[\"id\"] !== objectID));\n _updated = true;\n },\n\n setPropertyValue(id, propertyName, value) {\n _properties.get(id).insertValue(propertyName, value);\n _updated = true;\n },\n\n syncPrimitivesCount(object) {\n const property = _properties.get(object.getID());\n if (property.getValue(\"initStatus\") !== propertyInitStatus.COMPLETE) return;\n\n let numPolygons = 0;\n let numVertices = 0;\n for (const frameProperty of property.getValue(\"frames\")) {\n const frame = object.frames.find(frame => frame.getID() === frameProperty.getValue(\"id\"));\n if (!frame) {\n continue;\n }\n\n frameProperty.insertValue(\"numPolygons\", frame.numPolygons);\n frameProperty.insertValue(\"numVertices\", frame.numVertices);\n\n numPolygons += frame.numPolygons;\n numVertices += frame.numVertices;\n }\n\n if (object.type === objectType.SURFELS) {\n property.insertValue(\"numSurfels\", numVertices);\n } else {\n property.insertValue(\"numPolygons\", numPolygons);\n property.insertValue(\"numVertices\", numVertices);\n }\n\n _updated = true;\n },\n\n async combineObjectStructure(objectID) {\n const objectProperty = _properties.get(objectID);\n if (objectProperty.getValue(\"initStatus\") !== propertyInitStatus.INCOMPLETE) return;\n\n objectProperty.setValue(\"initStatus\", propertyInitStatus.INITIALIZING);\n if (this.version >= 6) await reformer.combineObjectStructure(objectProperty);\n objectProperty.setValue(\"initStatus\", propertyInitStatus.COMPLETE);\n _updated = true;\n },\n\n setPhotoState(photoGroupID, photoID, state) {\n const photoGroupProperty = _properties.get(photoGroupID);\n if (!photoGroupProperty) return;\n const photo = photoGroupProperty.getValue(\"photos\").find(prop => prop[\"id\"] === photoID);\n if (!photo) return;\n photo[\"state\"] = state;\n\n _updated = true;\n },\n\n setSubSectionProperty(measureID, sectionIDx, contourIDx, propName, value) {\n const sectionGroupProperty = _properties.get(measureID);\n const sectionProperty = sectionGroupProperty.getValue(\"geometries\")[sectionIDx];\n const targetProperty = contourIDx !== undefined ? sectionProperty[\"contours\"][contourIDx] : sectionProperty;\n targetProperty[propName] = value;\n\n _updated = true;\n },\n\n getPropertiesByType(type) {\n return Array.from(_properties.values()).filter(data => data.getValue(\"type\") === type);\n },\n\n setOrdering(ordering) {\n _ordering.length = 0;\n _ordering.push(...ordering);\n\n _updated = true;\n },\n\n getOrdering() {\n return _ordering.slice();\n },\n\n checkForUpdates() {\n if (!_updated) return;\n syncProjectContent(this);\n _updated = false;\n },\n\n _cleanup() {\n _properties.clear();\n _ordering.length = 0;\n _updated = false;\n },\n}\n","const messageType = {\n\n ERROR_CODE : 0,\n UPDATE_STATE : 1,\n BUILD_LBVH : 5,\n BUILD_OCTREE : 6,\n GET_OCTREE : 7,\n BUILD_HALF_EDGES : 8,\n GET_HALF_EDGES : 9,\n PARSE_CORTO : 10,\n GET_GEOMETRY_CORTO : 11,\n INIT_ZSTD : 12,\n PARSE_ZSTD : 13,\n GET_GEOMETRY_ZSTD : 14,\n ENCODE_ZSTD : 15,\n BUILD_NORMALS : 16,\n BUILD_BORDER : 17,\n BUILD_NORMALS_AND_BORDER : 18,\n GET_NORMALS : 19,\n RECALCULATE_BOUNDINGS : 20,\n GET_MINMAX : 21,\n TERMINATE : 22,\n INVERT_NORMALS : 23,\n GET_INVERTED_NORMALS : 24,\n INIT_WASM : 25,\n HORN_ALIGN : 26,\n ICP_ALIGN : 27,\n BAKE_DM : 28,\n INIT_PLY : 29,\n PARSE_PLY : 30,\n START_OBJ : 31,\n PARSE_OBJ : 32,\n FINISH_OBJ : 33,\n INIT_STL : 34,\n PARSE_STL : 35,\n INIT_USD : 36,\n PARSE_USD : 37,\n};\n\nconst resultStatus = {\n\n ALL_OK : 0,\n UNKNOWN_MESSAGE_TYPE : 1,\n PARSING_ERROR : 2,\n OCTREE_BUILDING_ERROR : 3,\n HALF_EDGES_BUILDING_ERROR : 4,\n TERMINATED : 5,\n MODULE_UNINITIALIZED : 6,\n\n};\n\nconst workerTypes = {\n\n CORTO_PARSER : 1,\n ZSTD_PARSER : 2,\n GEOMETRY_PROCESSOR : 3,\n WASM_PROCESSOR : 4,\n PLY_PARSER : 5,\n OBJ_PARSER : 6,\n STL_PARSER : 7,\n USD_PARSER : 8,\n\n};\n\nfunction getWorkerType(type) {\n\n switch(type) {\n case messageType.PARSE_CORTO:\n case messageType.GET_GEOMETRY_CORTO:\n return workerTypes.CORTO_PARSER;\n case messageType.INIT_ZSTD:\n case messageType.PARSE_ZSTD:\n case messageType.ENCODE_ZSTD:\n case messageType.GET_GEOMETRY_ZSTD:\n return workerTypes.ZSTD_PARSER;\n case messageType.BUILD_OCTREE:\n case messageType.GET_OCTREE:\n case messageType.BUILD_HALF_EDGES:\n case messageType.GET_HALF_EDGES:\n case messageType.BUILD_LBVH:\n case messageType.BUILD_NORMALS:\n case messageType.BUILD_BORDER:\n case messageType.BUILD_NORMALS_AND_BORDER:\n case messageType.INVERT_NORMALS:\n case messageType.RECALCULATE_BOUNDINGS:\n case messageType.GET_MINMAX:\n return workerTypes.GEOMETRY_PROCESSOR;\n case messageType.INIT_WASM:\n case messageType.HORN_ALIGN:\n case messageType.ICP_ALIGN:\n case messageType.BAKE_DM:\n return workerTypes.WASM_PROCESSOR;\n case messageType.INIT_PLY:\n case messageType.PARSE_PLY:\n return workerTypes.PLY_PARSER;\n case messageType.START_OBJ:\n case messageType.PARSE_OBJ:\n case messageType.FINISH_OBJ:\n return workerTypes.OBJ_PARSER;\n case messageType.INIT_STL:\n case messageType.PARSE_STL:\n return workerTypes.STL_PARSER;\n case messageType.INIT_USD:\n case messageType.PARSE_USD:\n return workerTypes.USD_PARSER;\n default:\n throw \"Unsupported task type: \" + type;\n }\n\n}\n\nexport { messageType, resultStatus, workerTypes, getWorkerType };\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()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\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.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import output from \"_src/engine/output\";\nimport intersectEvaluator from \"_src/engine/intersect_evaluator\";\n\nimport { vec3, vec4, mat4 } from \"_src/libs/gl-matrix\";\n\nimport config from \"_src/config\";\nimport {v1 as uuidv1} from \"uuid\";\nimport dxt from \"dxt-js\"\nimport {CompressedTextureFormat} from \"_src/engine/constants\";\n\nexport const colorUtils = {\n\n hexToRgb(hex) {\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\n return result ? {\n r: parseInt(result[1], 16) / 255,\n g: parseInt(result[2], 16) / 255,\n b: parseInt(result[3], 16) / 255\n } : null;\n\n },\n\n rgbToHex(r, g, b) {\n return \"#\" + componentToHex(r) + componentToHex(g) + componentToHex(b);\n },\n\n linToSRGB(color, dest) {\n\n const exp = 1.0 / 2.2;\n\n dest[0] = Math.pow(color[0], exp);\n dest[1] = Math.pow(color[1], exp);\n dest[2] = Math.pow(color[2], exp);\n\n return dest;\n\n },\n\n srgbToLin(color, dest) {\n\n const exp = 2.2;\n\n dest[0] = Math.pow(color[0], exp);\n dest[1] = Math.pow(color[1], exp);\n dest[2] = Math.pow(color[2], exp);\n\n return dest;\n\n },\n\n generateHexColor() {\n\n const letters = \"0123456789ABCDEF\";\n\n let color = \"#\";\n for (let i = 0; i < 6; ++i) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n\n return color;\n\n },\n\n flipImageBufferVertically(buffer, width, height) {\n\n const bytesPerRow = width * 4;\n const temp = new Uint8Array(bytesPerRow);\n\n for (let y = 0; y < height / 2; ++y) {\n\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n\n temp.set(buffer.subarray(topOffset, topOffset + bytesPerRow));\n\n buffer.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n\n buffer.set(temp, bottomOffset);\n\n }\n\n },\n\n floatToByte(channel) {\n return Math.round(255 * channel);\n },\n\n getErrorColor(error, scanner, dest) {\n let greenThresh, yellowThresh, orangeThresh;\n\n switch (scanner) {\n case \"Eva\":\n greenThresh = 0.3;\n yellowThresh = 0.6;\n orangeThresh = 0.9;\n break;\n case \"Spider\":\n greenThresh = 0.1;\n yellowThresh = 0.2;\n orangeThresh = 0.3;\n break;\n case \"Leo\":\n greenThresh = 0.5;\n yellowThresh = 0.9;\n orangeThresh = 1.3;\n break;\n case \"Ray\":\n greenThresh = 0.9;\n yellowThresh = 1.9;\n orangeThresh = 2.9;\n break;\n case \"Micro\":\n greenThresh = 0.0;\n yellowThresh = 0.0;\n orangeThresh = 0.1;\n break;\n default:\n greenThresh = 0.3;\n yellowThresh = 0.6;\n orangeThresh = 0.9;\n break;\n }\n\n let originalColor;\n if (error === -2.0) {\n originalColor = config.darkRedErrorColor;\n } else if (error < greenThresh) {\n originalColor = config.greenErrorColor;\n } else if (error < yellowThresh) {\n originalColor = config.yellowErrorColor;\n } else if (error < orangeThresh) {\n originalColor = config.orangeErrorColor;\n } else {\n originalColor = config.redErrorColor;\n }\n\n //this matrix was calculated as an alignment between 5 pairs of hsl colors\n const correctionMatrix = mat4.fromValues(\n 0.9874383520783551, -0.12860785277408343, -0.09179063704769921, 0,\n 0.07208146412025583, 0.8836199441521241, -0.4626230180469598, 0,\n 0.1406049905766614, 0.4501953070628759, 0.8817904638424597, 0,\n -14.590084244855852, -41.98817902010454, 61.52424687443911, 1);\n\n const originalColorHSL = this.rgbToHsl({r:originalColor[0], g: originalColor[1], b: originalColor[2]});\n const originalColorVector = vec3.fromValues(originalColorHSL.h, originalColorHSL.s, originalColorHSL.l);\n vec3.mul(originalColorVector, originalColorVector, [360, 100, 100]);\n const colorCorrectedVector = vec3.transformMat4(vec3.create(), originalColorVector, correctionMatrix);\n vec3.div(colorCorrectedVector, colorCorrectedVector, [360, 100, 100]);\n const colorCorrectedRgb = this.hslToRgb({h: colorCorrectedVector[0], s: colorCorrectedVector[1], l: colorCorrectedVector[2]});\n vec3.copy(dest, colorCorrectedRgb);\n\n return dest;\n\n },\n\n hueTorgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n },\n\n hslToRgb ({ h, s, l }) {\n let r; let g; let b;\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = this.hueTorgb(p, q, h + 1 / 3);\n g = this.hueTorgb(p, q, h);\n b = this.hueTorgb(p, q, h - 1 / 3);\n }\n return [r, g, b];\n },\n\n rgbToHsl({r, g, b}) {\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h = (max + min) / 2, s = h, l = h;\n\n if(max == min){\n h = s = 0; // achromatic\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max){\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n\n return { h, s, l };\n },\n\n generateColorInSequence(iteration, initialHue = 0, s = 0.5, l = 0.5) {\n const goldenRatioConjugate = 0.618033988749895;\n const currentColor = (initialHue + goldenRatioConjugate * iteration) % 1;\n const color = this.hslToRgb({ h: currentColor, s, l });\n return color;\n },\n\n getPaletteColorInSequence(iteration) {\n const index = Math.min(Math.round(halton(2, iteration) * paletteFull.length), paletteFull.length - 1);\n return paletteFull[index];\n },\n\n getPaletteColorUnique(colorList) {\n const availableColors = paletteFull.filter((color) => colorList.indexOf(color) === -1);\n if (availableColors.length) {\n return availableColors[Math.floor(Math.random() * availableColors.length)];\n } else {\n return paletteFull[Math.floor(Math.random() * paletteFull.length)];\n }\n },\n\n getPaletteColorRandom() {\n return paletteFull[Math.floor(Math.random() * paletteFull.length)];\n },\n\n};\n\nexport const pathUtils = {\n\n getFileNameFromPath(path) {\n const parts = path.split(\"/\");\n return parts[parts.length - 1];\n },\n\n getProjectNameFromPath(path) {\n const parts = path.split(\"/\");\n return parts[parts.length - 2];\n },\n\n join(path1, path2) {\n return path1 + \"/\" + path2;\n }\n\n}\n\nexport const idGenerator = {\n\n _IDs: new Set(),\n\n getNext() {\n\n const idBase = \"n\";\n let newID = \"n00\";\n let i = 0;\n\n while (this._IDs.has(newID)) {\n newID = idBase + ((i < 10) ? \"0\" + i: i);\n ++i;\n }\n\n this._IDs.add(newID);\n\n return newID;\n\n },\n\n initialize(json) {\n\n this._IDs.clear();\n\n const fusions = json[\"fusions\"] || [];\n const scans = json[\"scans\"] || [];\n const cads = json[\"cad-objects\"] || [];\n const pointClouds = json[\"point-clouds\"] || [];\n const groups = json[\"groups\"] || [];\n\n for (const object of fusions.concat(scans).concat(cads).concat(pointClouds).concat(groups)) {\n const id = object[\"id\"];\n if (id) {\n this._IDs.add(id);\n }\n }\n },\n\n generateUUID() {\n return uuidv1();\n },\n\n};\n\nexport function decodeText(array) {\n if ( typeof TextDecoder !== \"undefined\" ) {\n return new TextDecoder().decode( array );\n }\n\n // Avoid the String.fromCharCode.apply(null, array) shortcut, which\n // throws a \"maximum call stack size exceeded\" error for large arrays.\n\n let s = \"\";\n for ( let i = 0, il = array.length; i < il; i ++ ) {\n // Implicitly assumes little-endian.\n s += String.fromCharCode( array[ i ] );\n }\n\n try {\n // merges multi-byte utf-8 characters.\n return decodeURIComponent( escape( s ) );\n } catch ( e ) { // see #16358\n return s;\n }\n}\n\nexport function arrayToString(array) {\n let result = \"\";\n for (const number of array) {\n if (number === 0) {\n break;\n }\n result += String.fromCharCode(number);\n }\n return result;\n}\n\nexport function uint32ToUint8Array(uint32) {\n const tmp = new Uint32Array(1);\n tmp[0] = uint32;\n return new Uint8Array(tmp.buffer);\n}\n\nexport function arrayDataToNumber(array, offset, count) {\n const arrayBuffer = new Uint8Array(array.slice(offset, offset + count)).buffer;\n let typedBuffer;\n switch (count) {\n case 2:\n typedBuffer = new Uint16Array(arrayBuffer);\n break;\n case 4:\n typedBuffer = new Uint32Array(arrayBuffer);\n break;\n default:\n output.error(output.DEVELOPERS_ERROR, \"Unsupported arrayDataToNumber request\");\n return 0;\n }\n\n return typedBuffer[0];\n}\n\nexport function isDataZipped(array) {\n const signature = arrayDataToNumber(array, 0, 4);\n return signature === 67324752 //0x80 0x75 0x3 0x4 - zip signature\n}\n\nexport function getTimeStamp() {\n const dateObj = new Date();\n\n let hours = dateObj.getHours();\n if (hours < 10) { hours = \"0\" + hours; }\n\n let minutes = dateObj.getMinutes();\n if (minutes < 10) { minutes = \"0\" + minutes; }\n\n let seconds = dateObj.getSeconds();\n if (seconds < 10) { seconds = \"0\" + seconds; }\n\n return hours + \":\" + minutes + \":\" + seconds;\n}\n\nfunction componentToHex (channel) {\n\n const channelByte = Math.round(channel * 255);\n let hex = Number(channelByte).toString(16);\n if (hex.length < 2) {\n hex = \"0\" + hex;\n }\n\n return hex.toUpperCase();\n\n}\n\nexport const getPositionByMinmax = (function() {\n\n const rayNW = vec3.create();\n const rayNE = vec3.create();\n const raySW = vec3.create();\n const raySE = vec3.create();\n\n const normalTop = vec4.create();\n const normalBottom = vec4.create();\n const normalLeft = vec4.create();\n const normalRight = vec4.create();\n\n const vec4Tmp = vec4.create();\n const vec4Tmp2 = vec4.create();\n\n const vec3Tmp = vec3.create();\n const vec3Tmp2 = vec3.create();\n\n return function(rotation, fov, aspect, minmax, rect, target, out) {\n\n calculateRayPersp(rect.minx, rect.maxy, fov, aspect, rotation, rayNW);\n calculateRayPersp(rect.maxx, rect.maxy, fov, aspect, rotation, rayNE);\n calculateRayPersp(rect.minx, rect.miny, fov, aspect, rotation, raySW);\n calculateRayPersp(rect.maxx, rect.miny, fov, aspect, rotation, raySE);\n\n vec3.cross(normalBottom, raySE, raySW);\n vec3.cross(normalTop, rayNW, rayNE);\n vec3.cross(normalRight, rayNE, raySE);\n vec3.cross(normalLeft, raySW, rayNW);\n\n calculateRayPersp(0.5 * (rect.minx + rect.maxx), rect.maxy, fov, aspect, rotation, vec3Tmp);\n calculateRayPersp(0.5 * (rect.minx + rect.maxx), rect.miny, fov, aspect, rotation, vec3Tmp2);\n const planeMiddleVert = vec3.cross(vec4Tmp, vec3Tmp, vec3Tmp2);\n planeMiddleVert[3] = -vec3.dot(planeMiddleVert, target);\n\n calculateRayPersp(rect.minx, 0.5 * (rect.maxy + rect.miny), fov, aspect, rotation, vec3Tmp);\n calculateRayPersp(rect.maxx, 0.5 * (rect.maxy + rect.miny), fov, aspect, rotation, vec3Tmp2);\n const planeMiddleHor = vec3.cross(vec4Tmp2, vec3Tmp, vec3Tmp2);\n planeMiddleHor[3] = -vec3.dot(planeMiddleHor, target);\n\n const planeLeft = calcBoundingPlane(normalLeft, minmax, normalLeft);\n const planeRight = calcBoundingPlane(normalRight, minmax, normalRight);\n const planeTop = calcBoundingPlane(normalTop, minmax, normalTop);\n const planeBottom = calcBoundingPlane(normalBottom, minmax, normalBottom);\n\n const point1 = intersectEvaluator.calcThreePlanesIntersection(planeMiddleHor, planeLeft, planeRight, vec3Tmp);\n const point2 = intersectEvaluator.calcThreePlanesIntersection(planeMiddleVert, planeTop, planeBottom, vec3Tmp2);\n\n return vec3.dist(target, point1) > vec3.dist(target, point2) ? vec3.copy(out, point1) : vec3.copy(out, point2);\n\n }\n\n})();\n\nconst calcBoundingPlane = (function() {\n\n const vec3Tmp = vec3.create();\n const vec3Tmp2 = vec3.create();\n\n return function(normal, minmax, out) {\n\n for (let i = 0; i < 8; ++i) {\n\n const x = minmax[ 3 * ((i & 0b100) >> 2)];\n const y = minmax[1 + 3 * ((i & 0b010) >> 1)];\n const z = minmax[2 + 3 * ((i & 0b001))];\n\n const vertex = vec3.set(vec3Tmp, x, y, z);\n let positiveDistVerticesCounter = 0;\n\n for (let j = 0; j < 8; ++j) {\n\n if (i == j) {\n continue;\n }\n\n const x = minmax[ 3 * ((j & 0b100) >> 2)];\n const y = minmax[1 + 3 * ((j & 0b010) >> 1)];\n const z = minmax[2 + 3 * ((j & 0b001))];\n\n const point = vec3.set(vec3Tmp2, x, y, z);\n\n const distToPlane = vec3.dot(point, normal) - vec3.dot(vertex, normal);\n\n if (distToPlane >= 0) {\n ++positiveDistVerticesCounter;\n }\n\n }\n\n if (positiveDistVerticesCounter == 7) {\n vec3.copy(out, normal);\n out[3] = -vec3.dot(normal, vertex);\n return out;\n }\n\n }\n\n return null;\n\n }\n\n})();\n\nexport const calcOrthoCameraFrustum = (function() {\n\n const vec4Tmp = vec4.create();\n const vec4Tmp2 = vec4.create();\n const vec4Tmp3 = vec4.create();\n const vec4Tmp4 = vec4.create();\n\n return function(rotation, minmax, rect) {\n\n const rightNormal = vec3.set(vec4Tmp, -1, 0, 0);\n const leftNormal = vec3.set(vec4Tmp2, 1, 0, 0);\n const topNormal = vec3.set(vec4Tmp3, 0, -1, 0);\n const bottomNormal = vec3.set(vec4Tmp4, 0, 1, 0);\n\n vec3.transformQuat(rightNormal, rightNormal, rotation);\n vec3.transformQuat(leftNormal, leftNormal, rotation);\n vec3.transformQuat(topNormal, topNormal, rotation);\n vec3.transformQuat(bottomNormal, bottomNormal, rotation);\n\n const planeRight = calcBoundingPlane(rightNormal, minmax, rightNormal);\n const planeLeft = calcBoundingPlane(leftNormal, minmax, leftNormal);\n const planeTop = calcBoundingPlane(topNormal, minmax, topNormal);\n const planeBottom = calcBoundingPlane(bottomNormal, minmax, bottomNormal);\n\n vec4.scale(planeLeft, planeLeft, -1);\n vec4.scale(planeBottom, planeBottom, -1);\n\n let height = 0.5 * Math.abs(planeTop[3] - planeBottom[3]);\n let width = 0.5 * Math.abs(planeRight[3] - planeLeft[3]);\n\n height += height * (1.0 - Math.min(Math.abs(rect.maxy), Math.abs(rect.miny)));\n width += width * (1.0 - Math.min(Math.abs(rect.maxx), Math.abs(rect.minx)));\n\n return { height, width };\n\n }\n\n})();\n\nconst calculateRayPersp = (function() {\n\n const vec3Tmp = vec3.create();\n\n return function(x, y, fov, aspect, rotation, dest) {\n\n const tanFOV = Math.tan(fov * 0.5);\n\n const locX = x * tanFOV * aspect;\n const locY = y * tanFOV;\n\n const ray = vec3.set(vec3Tmp, locX, locY, -1);\n vec3.transformQuat(ray, ray, rotation);\n\n return vec3.normalize(dest, ray);\n\n }\n\n})();\n\nexport const calcOrthoCameraProjection = (function() {\n\n const vec3Tmp = vec4.create();\n\n return function(camera, target) {\n\n const view = vec3.set(vec3Tmp, 0, 0, -1);\n vec3.transformQuat(view, view, camera.quat);\n\n const dist = Math.abs(vec3.dot(view, camera.trans) - vec3.dot(target, view));\n\n const height = Math.tan(0.5 * camera.fov) * dist;\n const width = height * camera.aspect;\n\n return { height, width };\n\n }\n\n})();\n\nfunction halton(b, j) {\n let r = 0.0;\n let f = 1.0;\n let i = j;\n while (i > 0) {\n f = f / b;\n r = r + f * (i % b);\n i = Math.floor(i / b);\n }\n return r;\n}\n\nexport function readDDs(bufferIn, imageOut) {\n const HEADER_SIZE = 31 * 4;\n\n const OFF_MAGIC = 0 * 4;\n const OFF_SIZE = 1 * 4;\n const OFF_HEIGHT = 3 * 4;\n const OFF_WIDTH = 4 * 4;\n const OFF_FOURCC = 21 * 4;\n\n const DDS_MAGIC = 0x20534444;\n const FOURCC_DXT1 = 827611204;\n const FOURCC_DXT3 = 861165636;\n const FOURCC_DXT5 = 894720068;\n\n if (bufferIn.byteLength < HEADER_SIZE) return false;\n\n const dataView = new DataView(bufferIn);\n if (dataView.getInt32(OFF_MAGIC, true) !== DDS_MAGIC) return false;\n\n const fourCC = dataView.getInt32(OFF_FOURCC, true);\n let blockSize;\n switch (fourCC) {\n case FOURCC_DXT1:\n blockSize = 8;\n break\n case FOURCC_DXT3:\n blockSize = 16;\n break\n case FOURCC_DXT5:\n blockSize = 16;\n break\n default:\n return false;\n }\n\n const width = dataView.getInt32(OFF_WIDTH, true);\n const height = dataView.getInt32(OFF_HEIGHT, true);\n imageOut.width = width;\n imageOut.height = height;\n\n const dataOffset = dataView.getInt32(OFF_SIZE, true) + 4;\n const dataLength = Math.max( 4, width ) / 4 * Math.max( 4, height ) / 4 * blockSize;\n imageOut.buffer = new Uint8Array(bufferIn, dataOffset, dataLength);\n\n return true;\n}\n\nexport function unCompressDxt(buffer, width, height, format) {\n let libInternalFormat;\n switch (format) {\n case CompressedTextureFormat.DXT1:\n libInternalFormat = dxt.flags.DXT1;\n break;\n case CompressedTextureFormat.DXT3:\n libInternalFormat = dxt.flags.DXT3;\n break;\n case CompressedTextureFormat.DXT5:\n libInternalFormat = dxt.flags.DXT5;\n break;\n }\n\n const uncompressed = dxt.decompress(buffer, width, height, libInternalFormat);\n return uncompressed;\n}\n\nconst paletteFull = [\n\"#999A67\",\n\"#9A9922\",\n\"#5022F3\",\n\"#2522B3\",\n\"#FF6622\",\n\"#CD6621\",\n\"#2667B3\",\n\"#4F66F3\",\n\"#9ACC3F\",\n\"#44CD3E\",\n\"#670001\",\n\"#673334\",\n\"#FF2367\",\n\"#E66767\",\n\"#FFFFFF\",\n\"#CCCCCD\",\n\"#CD9967\",\n\"#CD9922\",\n\"#CD2367\",\n\"#9A2367\",\n\"#343334\",\n\"#FFFF5B\",\n\"#CEFF5B\",\n\"#672267\",\n\"#81239A\",\n\"#FFFFCD\",\n\"#CDCC9A\",\n\"#CDFFFF\",\n\"#61FFFF\",\n\"#CD239A\",\n\"#CD2320\",\n\"#FF9A67\",\n\"#FF9922\",\n\"#9A2334\",\n\"#E79AFF\",\n\"#E69ACD\",\n\"#220067\",\n\"#9A67E6\",\n\"#B523E6\",\n\"#419A66\",\n\"#419A22\",\n\"#CDFFCD\",\n\"#62FFB3\",\n\"#CDCCFF\",\n\"#FFCDFF\",\n\"#670034\",\n\"#013301\",\n\"#333400\",\n\"#FFCCCD\",\n\"#E69A9A\",\n\"#60CDCC\",\n\"#61FF40\",\n\"#673301\",\n\"#9A2301\",\n\"#CDCC3F\",\n\"#67669A\",\n\"#9A669A\",\n\"#5FCD99\",\n\"#FFCD99\",\n\"#FFCC3F\",\n\"#F34E9A\",\n\"#233467\",\n\"#003434\",\n\"#236766\",\n\"#676620\",\n\"#246720\",\n\"#F44EE6\",\n\"#449AE6\",\n\"#60CDFF\",\n\"#9A9AE6\",\n\"#676767\",\n\"#996767\",\n\"#999A9A\",\n\"#429A99\",\n\"#9A6621\"\n];\n","import { vec3 } from \"_src/libs/gl-matrix\";\nimport intersectEvaluator from \"_src/engine/intersect_evaluator\";\nimport minmaxUtils from \"_src/engine/utility/minmax\";\n\nconst MAX_DEPTH = 8;\nconst MAX_FACE_NUM = 50;\n\nconst _vec3Tmp = vec3.create();\nconst _vec3Tmp2 = vec3.create();\n\nconst _stack = [];\n\nexport default class Octant {\n\n constructor(parent) {\n\n this._AABB = [Infinity, Infinity, Infinity, -Infinity, -Infinity, -Infinity];\n\n this._offset = 0;\n this._length = 0;\n\n this._children = [];\n\n this._parent = parent;\n\n }\n\n buildFromBuffer(bboxBuffer, sizeBuffer) {\n\n _stack.push(this);\n const indStack = [0];\n const levels = [0];\n\n let currIndex = 0;\n\n const oneThird = 1 / 3;\n\n while (_stack.length) {\n\n const cell = _stack.pop();\n const cellInd = indStack.pop();\n const cellDepth = levels.pop();\n\n cell._offset = sizeBuffer[cellInd * 2];\n cell._length = sizeBuffer[cellInd * 2 + 1];\n\n cell.setAABBFromBuffer(cellInd, bboxBuffer);\n\n const facesNum = cell._length * oneThird;\n\n if (facesNum > MAX_FACE_NUM && cellDepth < MAX_DEPTH) {\n\n cell.createChildren();\n\n _stack.push.apply(_stack, cell._children);\n\n indStack.push(currIndex + 1, currIndex + 2, currIndex + 3, currIndex + 4,\n currIndex + 5, currIndex + 6, currIndex + 7, currIndex + 8);\n\n const nextLevelDepth = cellDepth + 1;\n levels.push(nextLevelDepth, nextLevelDepth, nextLevelDepth, nextLevelDepth,\n nextLevelDepth, nextLevelDepth, nextLevelDepth, nextLevelDepth);\n\n currIndex += 8;\n\n }\n\n }\n\n }\n\n createChildren() {\n\n for (let i = 0; i < 8; ++i) {\n\n const child = new Octant(this);\n this._children.push(child);\n\n }\n\n }\n\n setAABBFromBuffer(selfInd, bboxBuffer) {\n\n const bb = this._AABB;\n\n const offset = 6 * selfInd;\n\n bb[0] = bboxBuffer[offset];\n bb[1] = bboxBuffer[offset + 1];\n bb[2] = bboxBuffer[offset + 2];\n bb[3] = bboxBuffer[offset + 3];\n bb[4] = bboxBuffer[offset + 4];\n bb[5] = bboxBuffer[offset + 5];\n\n }\n\n castRay(from, to, intersector, dest) {\n\n const distances = _vec3Tmp;\n const toInv = vec3.inverse(_vec3Tmp2, to);\n\n const result = Octant.intersection;\n const nodes = [];\n\n if (this._checkRayIntersect(from, toInv, distances)) {\n _stack.push(this);\n }\n\n while (_stack.length) {\n\n const cell = _stack.pop();\n\n if (cell._children.length) {\n\n nodes.length = 0;\n\n for (let i = 0; i < cell._children.length; ++i) {\n\n const child = cell._children[i];\n\n distances[0] = Infinity;\n\n if (child._checkRayIntersect(from, toInv, distances)) {\n\n nodes.push({\n dist : distances[0],\n node : child\n });\n\n }\n\n }\n\n nodes.sort((a, b) => {\n return b.dist - a.dist;\n });\n\n for (let i = 0; i < nodes.length; ++i) {\n _stack.push(nodes[i].node);\n }\n\n } else if (cell._length) {\n\n const hit = intersector(from, to, cell._offset, cell._length, result);\n\n if (hit) {\n\n _stack.length = 0;\n\n vec3.copy(dest, result.point);\n\n return result.distance;\n\n }\n\n }\n\n }\n\n return -1;\n\n }\n\n intersectRay(from, to, indices, positions, tlim, dest) {\n\n const distances = _vec3Tmp;\n const toInv = vec3.inverse(_vec3Tmp2, to);\n\n const result = Octant.intersection;\n const nodes = [];\n\n if (this._checkLineIntersect(from, toInv, tlim, distances)) {\n _stack.push(this);\n }\n\n while (_stack.length) {\n\n const cell = _stack.pop();\n\n if (cell._children.length) {\n\n nodes.length = 0;\n\n for (let i = 0; i < cell._children.length; ++i) {\n\n const child = cell._children[i];\n if (child._checkLineIntersect(from, toInv, tlim, distances)) {\n nodes.push({\n dist : Math.min(Math.abs(distances[0]), Math.abs(distances[1])),\n node : child\n });\n }\n\n }\n\n nodes.sort((a, b) => {\n return b.dist - a.dist;\n });\n\n for (let i = 0; i < nodes.length; ++i) {\n _stack.push(nodes[i].node);\n }\n\n } else if (cell._length) {\n\n if (intersectEvaluator.triangleLineIntersection(from, to, indices,\n cell._offset, cell._length, positions, tlim, result)) {\n\n _stack.length = 0;\n\n vec3.copy(dest, result.point);\n dest[3] = result.distance;\n\n return true;\n\n }\n\n }\n\n }\n\n return false;\n\n }\n\n sphereIntersect(center, radius, indices, positions, vertsMask, scale) {\n\n _stack.push(this);\n const leaves = [];\n const inside = [];\n const squaredRadius = radius * radius;\n\n while (_stack.length) {\n\n const cell = _stack.pop();\n\n if (cell._length == 0) {\n continue;\n }\n\n const bb = cell._AABB;\n\n const intersection = intersectEvaluator.AABBSphereIntersect(center, squaredRadius, bb, scale);\n\n if (intersection == intersectEvaluator.INSIDE) {\n inside.push(cell);\n } else if (intersection == intersectEvaluator.INTERSECTION) {\n\n if (cell._children.length) {\n _stack.push.apply(_stack, cell._children);\n } else {\n leaves.push(cell);\n }\n\n }\n\n }\n\n let numSelected = 0;\n\n for (let i = 0; i < leaves.length; ++i) {\n\n const leaf = leaves[i];\n const offset = leaf._offset;\n const length = leaf._length;\n\n numSelected += intersectEvaluator.markVerticesInsideSphere(center, squaredRadius,\n indices, offset, length, positions, vertsMask, scale);\n\n }\n\n for (let i = 0; i < inside.length; ++i) {\n\n const offset = inside[i]._offset;\n const length = inside[i]._length;\n\n numSelected += addAll(indices, offset, length, vertsMask);\n\n // inside[i].getLeaves(leaves);\n\n }\n\n return numSelected;\n\n }\n\n recalculateBoundings(indices, positions) {\n\n const leaves = [];\n\n _stack.push(this);\n\n while (_stack.length) {\n\n const cell = _stack.pop();\n\n if (cell._length == 0) {\n continue;\n }\n\n if (cell._children.length) {\n _stack.push.apply(_stack, cell._children);\n cell.initBoundings();\n } else {\n leaves.push(cell);\n }\n\n }\n\n leaves.sort((a, b) => {\n return a._offset - b._offset;\n });\n\n for (let i = 0; i < leaves.length; ++i) {\n\n const leaf = leaves[i];\n\n leaf._recalculateBoundings(indices, positions);\n leaf.expandAABBLoose();\n\n }\n\n }\n\n _checkRayIntersect(from, toInv, dest) {\n\n const fromX = from[0];\n const fromY = from[1];\n const fromZ = from[2];\n\n const dirX = toInv[0];\n const dirY = toInv[1];\n const dirZ = toInv[2];\n\n const bb = this._AABB;\n\n const t1 = (bb[0] - fromX) * dirX;\n const t3 = (bb[1] - fromY) * dirY;\n const t5 = (bb[2] - fromZ) * dirZ;\n const t2 = (bb[3] - fromX) * dirX;\n const t4 = (bb[4] - fromY) * dirY;\n const t6 = (bb[5] - fromZ) * dirZ;\n\n const tmin = Math.max(Math.min(t1, t2), Math.min(t3, t4), Math.min(t5, t6));\n const tmax = Math.min(Math.max(t1, t2), Math.max(t3, t4), Math.max(t5, t6));\n\n dest[0] = tmin;\n dest[1] = tmax;\n\n return tmax >= 0 && tmin <= tmax;\n\n }\n\n _checkLineIntersect(from, toInv, tlim, dest) {\n\n const fromX = from[0];\n const fromY = from[1];\n const fromZ = from[2];\n\n const dirX = toInv[0];\n const dirY = toInv[1];\n const dirZ = toInv[2];\n\n const bb = this._AABB;\n\n const t1 = (bb[0] - fromX) * dirX;\n const t3 = (bb[1] - fromY) * dirY;\n const t5 = (bb[2] - fromZ) * dirZ;\n const t2 = (bb[3] - fromX) * dirX;\n const t4 = (bb[4] - fromY) * dirY;\n const t6 = (bb[5] - fromZ) * dirZ;\n\n const tmin = Math.max(Math.min(t1, t2), Math.min(t3, t4), Math.min(t5, t6));\n const tmax = Math.min(Math.max(t1, t2), Math.max(t3, t4), Math.max(t5, t6));\n\n dest[0] = tmin;\n dest[1] = tmax;\n\n const inside = tmin * tmax < 0;\n const inlim = Math.min(tmin * tmin, tmax * tmax) <= tlim * tlim;\n\n return tmin <= tmax && (inlim || inside);\n\n }\n\n maskIntersect(indices, positions, vertsMask, maskPixels, depthPixels, width, height, bounding, mvp, near, far, linearDepth) {\n\n _stack.push(this);\n\n const leaves = [];\n const inside = [];\n\n while (_stack.length) {\n\n const cell = _stack.pop();\n\n if (cell._length == 0) {\n continue;\n }\n\n const minmax = cell._AABB;\n\n const res = intersectEvaluator.maskAABBTest(maskPixels, width, height, bounding, minmax, mvp);\n\n if (res == intersectEvaluator.INSIDE) {\n\n inside.push(cell);\n\n } else if (res == intersectEvaluator.INTERSECTION) {\n\n if (cell._children.length) {\n\n _stack.push.apply(_stack, cell._children);\n\n } else {\n\n leaves.push(cell);\n\n }\n\n }\n\n }\n\n let numSelected = 0;\n\n for (let i = 0; i < leaves.length; ++i) {\n\n const leaf = leaves[i];\n const offset = leaf._offset;\n const length = leaf._length;\n\n numSelected += intersectEvaluator.markVerticesInsideMask(maskPixels, depthPixels,\n width, height, indices, offset, length, positions, vertsMask, mvp, near, far, linearDepth);\n\n }\n\n for (let i = 0; i < inside.length; ++i) {\n\n const offset = inside[i]._offset;\n const length = inside[i]._length;\n\n if (depthPixels) {\n numSelected += intersectEvaluator.markVerticesInsideMask(maskPixels, depthPixels,\n width, height, indices, offset, length, positions, vertsMask, mvp, near, far, linearDepth);\n } else {\n numSelected += addAll(indices, offset, length, vertsMask);\n }\n\n // inside[i].getLeaves(leaves);\n\n }\n\n return numSelected;\n\n }\n\n planeIntersect(indices, positions, vertsMask, plane) {\n\n _stack.length = 0;\n _stack.push(this);\n\n const leaves = [];\n const inside = [];\n\n while (_stack.length) {\n\n const cell = _stack.pop();\n\n if (cell._length == 0) {\n continue;\n }\n\n const minmax = cell._AABB;\n\n const res = intersectEvaluator.planeAABBTest(plane, minmax);\n\n if (res == intersectEvaluator.INSIDE) {\n\n inside.push(cell);\n\n } else if (res == intersectEvaluator.INTERSECTION) {\n\n if (cell._children.length) {\n\n _stack.push.apply(_stack, cell._children);\n\n } else {\n\n leaves.push(cell);\n\n }\n\n }\n\n }\n\n let numSelected = 0;\n\n for (let i = 0; i < leaves.length; ++i) {\n\n const leaf = leaves[i];\n const offset = leaf._offset;\n const length = leaf._length;\n\n numSelected += intersectEvaluator.markVerticesBehindPlane(plane,\n indices, offset, length, positions, vertsMask);\n\n }\n\n for (let i = 0; i < inside.length; ++i) {\n\n const offset = inside[i]._offset;\n const length = inside[i]._length;\n\n numSelected += addAll(indices, offset, length, vertsMask);\n\n }\n\n return numSelected;\n\n }\n\n getLeaves(leaves = []) {\n\n _stack.push(this);\n\n while (_stack.length) {\n\n const cell = _stack.pop();\n\n if (cell._children.length) {\n _stack.push.apply(_stack, cell._children);\n } else {\n leaves.push(cell);\n }\n\n }\n\n return leaves;\n\n }\n\n initBoundings() {\n minmaxUtils.reset(this._AABB);\n }\n\n _hasSelection(mask) {\n\n const first = this._offset;\n const last = first + this._length;\n\n for (let i = first; i < last; ++i) {\n if (mask[i]) {\n return true;\n }\n }\n\n return false;\n\n }\n\n _recalculateBoundings(indices, positions) {\n\n const first = this._offset;\n const last = first + this._length;\n\n this.initBoundings();\n\n const bbox = this._AABB;\n let minx = bbox[0];\n let miny = bbox[1];\n let minz = bbox[2];\n let maxx = bbox[3];\n let maxy = bbox[4];\n let maxz = bbox[5];\n\n for (let i = first; i < last; ++i) {\n\n const v = indices[i];\n\n const offset = v * 3;\n\n const x = positions[offset];\n const y = positions[offset + 1];\n const z = positions[offset + 2];\n\n if (x < minx) { minx = x; }\n else if (x > maxx) { maxx = x; }\n\n if (y < miny) { miny = y; }\n else if (y > maxy) { maxy = y; }\n\n if (z < minz) { minz = z; }\n else if (z > maxz) { maxz = z; }\n\n }\n\n bbox[0] = minx;\n bbox[1] = miny;\n bbox[2] = minz;\n bbox[3] = maxx;\n bbox[4] = maxy;\n bbox[5] = maxz;\n\n }\n\n expandAABBLoose() {\n\n const bb = this._AABB;\n const minx = bb[0];\n const miny = bb[1];\n const minz = bb[2];\n const maxx = bb[3];\n const maxy = bb[4];\n const maxz = bb[5];\n\n let parent = this._parent;\n\n while (parent) {\n\n const bb = parent._AABB;\n\n let updated = false;\n\n if (minx < bb[0]) {\n\n bb[0] = minx;\n updated = true;\n\n }\n\n if (miny < bb[1]) {\n\n bb[1] = miny;\n updated = true;\n\n }\n\n if (minz < bb[2]) {\n\n bb[2] = minz;\n updated = true;\n\n }\n\n if (bb[3] < maxx) {\n\n bb[3] = maxx;\n updated = true;\n\n }\n\n if (bb[4] < maxy) {\n\n bb[4] = maxy;\n updated = true;\n\n }\n\n if (bb[5] < maxz) {\n\n bb[5] = maxz;\n updated = true;\n\n }\n\n parent = updated ? parent._parent : null;\n\n }\n\n }\n\n}\n\nfunction addAll(indices, offset, length, vertsMask) {\n\n const startInd = offset;\n const finalInd = startInd + length;\n let numSelected = 0;\n\n for (let i = startInd; i < finalInd; ++i) {\n\n const ind = indices[i];\n\n if (vertsMask[ind] === 1) {\n continue;\n }\n\n vertsMask[ind] = 1;\n ++numSelected;\n\n }\n\n return numSelected;\n\n}\n\nOctant.intersection = {\n\n point : vec3.create(),\n distance : Infinity\n\n}\n","import arrayTools from \"_src/engine/utility/arrays\";\n\nexport default function buildHalfEdge(indices, numVertices) {\n\n let startTime;\n\n if (typeof performance !== \"undefined\") {\n startTime = performance.now();\n }\n\n const UintArray = arrayTools.uintArrayTypeByMaxValue(indices.length, 3);\n\n const V2e = new UintArray( numVertices );\n const E2e = new UintArray( indices.length );\n const mask = new Int8Array( indices.length );\n\n const HalfEdgesMap = {};\n\n for (let j = 0; j < indices.length; ++j ) {\n\n const currentVertLocalInd = j % 3;\n\n const vIndCurr = indices[j];\n const vIndNext = currentVertLocalInd < 2 ? indices[j+1]: indices[j-2];\n\n if (!(vIndCurr in HalfEdgesMap)) {\n HalfEdgesMap[vIndCurr] = new Array(0);\n }\n\n HalfEdgesMap[vIndCurr].push(j);\n\n if (vIndNext in HalfEdgesMap) {\n\n const nextVHalfEdges = HalfEdgesMap[vIndNext];\n\n for (let i = 0; i < nextVHalfEdges.length; ++i) {\n\n const ind = nextVHalfEdges[i];\n\n const vIndCollCurr = indices[ind];\n const vIndCollNext = ind % 3 < 2 ? indices[ind + 1]\n : indices[ind - 2];\n\n if (vIndCollCurr === vIndNext && vIndCollNext === vIndCurr) {\n\n // collision with a twin half-edge\n\n E2e[j] = ind;\n E2e[ind] = j;\n\n mask[j] = 1;\n mask[ind] = 1;\n\n break;\n\n }\n\n }\n\n }\n\n V2e[vIndCurr] = j;\n\n }\n\n for (let j = 0; j < indices.length; ++j) {\n\n const hasTwin = mask[j] === 1;\n\n if (hasTwin) {\n continue;\n }\n\n const currentVertLocalInd = j % 3;\n const vIndNext = currentVertLocalInd < 2 ? indices[j+1]: indices[j-2];\n\n E2e[j] = j;\n V2e[vIndNext] = j;\n mask[j] = -1;\n\n }\n\n const messages = [];\n if (typeof performance !== \"undefined\") {\n messages.push(\"Half Edges: building time: \" +\n ((performance.now() - startTime) / 1000).toPrecision(3) + \" sec.\");\n }\n\n return {E2e, V2e, mask, indices, messages};\n\n}\n","const MAX_DEPTH = 8;\nconst MAX_ITEMS_NUM = 50;\n\nexport default function buildOctree(indices, positions, bbox, isPointCloud) {\n\n const stack = [0];\n const levels = [0];\n const leaves = [];\n\n // minx, maxx, miny, maxy, minz, maxz\n const bboxArray = [];\n // offset, length\n const sizeArray = [];\n // parent index\n const linkArray = [];\n\n const oneThird = 1 / 3;\n\n let currIndex = 0;\n\n sizeArray.push(0, indices.length);\n linkArray.push(-1);\n bboxArray.push.apply(bboxArray, bbox);\n\n let buildStartTime;\n\n if (typeof performance !== \"undefined\") {\n buildStartTime = performance.now();\n }\n\n while (stack.length) {\n\n const cellInd = stack.pop();\n const cellDepth = levels.pop();\n\n const cellLength = sizeArray[cellInd * 2 + 1];\n const itemsNum = cellLength * oneThird;\n\n if (itemsNum > MAX_ITEMS_NUM && cellDepth < MAX_DEPTH) {\n\n addChildren(cellInd, indices, positions, bboxArray, sizeArray, isPointCloud);\n\n stack.push(currIndex + 1, currIndex + 2, currIndex + 3, currIndex + 4,\n currIndex + 5, currIndex + 6, currIndex + 7, currIndex + 8);\n\n const nextLevelDepth = cellDepth + 1;\n levels.push(nextLevelDepth, nextLevelDepth, nextLevelDepth, nextLevelDepth,\n nextLevelDepth, nextLevelDepth, nextLevelDepth, nextLevelDepth);\n\n linkArray.push(cellInd, cellInd, cellInd, cellInd,\n cellInd, cellInd, cellInd, cellInd);\n\n currIndex += 8;\n\n } else {\n\n leaves.push(cellInd);\n\n }\n\n }\n\n for (let i = 0; i < leaves.length; ++i) {\n const leafInd = leaves[i];\n const leafLength = sizeArray[leafInd * 2 + 1];\n if (leafLength) {\n createLeaf(leafInd, indices, positions, bboxArray, sizeArray, linkArray);\n }\n }\n\n const bboxBuffer = new Float32Array(bboxArray);\n const sizeBuffer = new Uint32Array(sizeArray);\n\n const messages = [];\n if (typeof performance !== \"undefined\") {\n messages.push(\"Octree: building time: \" +\n ((performance.now() - buildStartTime) / 1000).toPrecision(3) + \" sec.\");\n }\n return {indices, positions, bboxBuffer, sizeBuffer, messages};\n}\n\nfunction addChildren(parentInd, indices, positions, bboxArray, sizeArray, isPointCloud) {\n\n const parentBBOfset = parentInd * 6;\n\n const pminx = bboxArray[parentBBOfset];\n const pminy = bboxArray[parentBBOfset + 1];\n const pminz = bboxArray[parentBBOfset + 2];\n\n const pmaxx = bboxArray[parentBBOfset + 3];\n const pmaxy = bboxArray[parentBBOfset + 4];\n const pmaxz = bboxArray[parentBBOfset + 5];\n\n const cenX = 0.5 * (pminx + pmaxx);\n const cenY = 0.5 * (pminy + pmaxy);\n const cenZ = 0.5 * (pminz + pmaxz);\n\n const halfX = 0.25 * (pmaxx - pminx);\n const halfY = 0.25 * (pmaxy - pminy);\n const halfZ = 0.25 * (pmaxz - pminz);\n\n const mx = cenX - halfX;\n const px = cenX + halfX;\n\n const my = cenY - halfY;\n const py = cenY + halfY;\n\n const mz = cenZ - halfZ;\n const pz = cenZ + halfZ;\n\n bboxArray.push(mx - halfX, my - halfY, mz - halfZ, mx + halfX, my + halfY, mz + halfZ);\n bboxArray.push(mx - halfX, my - halfY, pz - halfZ, mx + halfX, my + halfY, pz + halfZ);\n bboxArray.push(px - halfX, my - halfY, mz - halfZ, px + halfX, my + halfY, mz + halfZ);\n bboxArray.push(px - halfX, my - halfY, pz - halfZ, px + halfX, my + halfY, pz + halfZ);\n\n bboxArray.push(mx - halfX, py - halfY, mz - halfZ, mx + halfX, py + halfY, mz + halfZ);\n bboxArray.push(mx - halfX, py - halfY, pz - halfZ, mx + halfX, py + halfY, pz + halfZ);\n bboxArray.push(px - halfX, py - halfY, mz - halfZ, px + halfX, py + halfY, mz + halfZ);\n bboxArray.push(px - halfX, py - halfY, pz - halfZ, px + halfX, py + halfY, pz + halfZ);\n\n const childrenIndicesList = [];\n\n for (let i = 0; i < 8; ++i) {\n childrenIndicesList.push([]);\n }\n\n const indices0 = childrenIndicesList[0];\n const indices1 = childrenIndicesList[1];\n const indices2 = childrenIndicesList[2];\n const indices3 = childrenIndicesList[3];\n const indices4 = childrenIndicesList[4];\n const indices5 = childrenIndicesList[5];\n const indices6 = childrenIndicesList[6];\n const indices7 = childrenIndicesList[7];\n\n const oneThird = 1 / 3;\n\n const startInd = sizeArray[parentInd * 2];\n const finalInd = startInd + sizeArray[parentInd * 2 + 1];\n\n let x, y, z;\n\n const primitive = isPointCloud ? new Array(1) : new Array(3);\n const stride = isPointCloud ? 1 : 3;\n for (let i = startInd; i < finalInd; i += stride) {\n\n if (isPointCloud) {\n\n const v = indices[i];\n const offset = v * 3;\n\n x = positions[offset];\n y = positions[offset + 1];\n z = positions[offset + 2];\n\n primitive[0] = v;\n\n } else {\n\n const v1 = indices[i];\n const v2 = indices[i + 1];\n const v3 = indices[i + 2];\n\n const offset1 = v1 * 3;\n const offset2 = v2 * 3;\n const offset3 = v3 * 3;\n\n x = (positions[offset1] + positions[offset2] + positions[offset3]) * oneThird;\n y = (positions[offset1 + 1] + positions[offset2 + 1] + positions[offset3 + 1]) * oneThird;\n z = (positions[offset1 + 2] + positions[offset2 + 2] + positions[offset3 + 2]) * oneThird;\n\n primitive[0] = v1;\n primitive[1] = v2;\n primitive[2] = v3;\n\n }\n\n if (y < cenY) {\n if (x < cenX) {\n if (z < cenZ) {indices0.push.apply(indices0, primitive); }\n else { indices1.push.apply(indices1, primitive); }\n } else { // x\n if (z < cenZ) { indices2.push.apply(indices2, primitive); } // z\n else { indices3.push.apply(indices3, primitive); } // z\n } // x\n } else { // y\n if (x < cenX) {\n if (z < cenZ) { indices4.push.apply(indices4, primitive); } // z\n else { indices5.push.apply(indices5, primitive); } // z\n } else { // x\n if (z < cenZ) { indices6.push.apply(indices6, primitive); } // z\n else { indices7.push.apply(indices7, primitive); } // z\n } // x\n } // y\n\n }\n\n let offset = sizeArray[parentInd * 2];\n\n for (let i = 0; i < childrenIndicesList.length; ++i) {\n\n const cellIndices = childrenIndicesList[i];\n\n indices.set(cellIndices, offset);\n\n sizeArray.push(offset, cellIndices.length);\n\n offset += cellIndices.length;\n\n }\n\n}\n\nfunction createLeaf(leafInd, indices, positions, bboxArray, sizeArray, linkArray) {\n\n let maxx = -Infinity;\n let minx = Infinity;\n let maxy = -Infinity;\n let miny = Infinity;\n let maxz = -Infinity;\n let minz = Infinity;\n\n const startInd = sizeArray[leafInd * 2];\n const finalInd = startInd + sizeArray[leafInd * 2 + 1];\n\n for (let i = startInd; i < finalInd; i++) {\n\n const offset = indices[i] * 3;\n\n const x = positions[offset];\n const y = positions[offset + 1];\n const z = positions[offset + 2];\n\n maxx = Math.max(maxx, x);\n minx = Math.min(minx, x);\n maxy = Math.max(maxy, y);\n miny = Math.min(miny, y);\n maxz = Math.max(maxz, z);\n minz = Math.min(minz, z);\n\n }\n\n expandAABBLoose(leafInd, linkArray, bboxArray, minx, maxx, miny, maxy, minz, maxz);\n\n}\n\nfunction expandAABBLoose(leafInd, linkArray, bboxArray, minx, maxx, miny, maxy, minz, maxz) {\n\n let parentInd = leafInd;\n\n while (parentInd > 0) {\n\n const offset = parentInd * 6;\n let updated = false;\n\n if (bboxArray[offset] > minx) {\n\n bboxArray[offset] = minx;\n updated = true;\n\n }\n\n if (bboxArray[offset + 1] > miny) {\n\n bboxArray[offset + 1] = miny;\n updated = true;\n\n }\n\n if (bboxArray[offset + 2] > minz) {\n\n bboxArray[offset + 2] = minz;\n updated = true;\n\n }\n\n if (bboxArray[offset + 3] < maxx) {\n\n bboxArray[offset + 3] = maxx;\n updated = true;\n\n }\n\n if (bboxArray[offset + 4] < maxy) {\n\n bboxArray[offset + 4] = maxy;\n updated = true;\n\n }\n\n if (bboxArray[offset + 5] < maxz) {\n\n bboxArray[offset + 5] = maxz;\n updated = true;\n\n }\n\n parentInd = updated ? linkArray[parentInd] : -1;\n\n }\n\n}\n","export function buildBordersMask(indices, borderMask) {\n const edgesSet = new Set();\n const maxIndex = borderMask ? borderMask.length : 0;\n\n for (let i = 0; i < indices.length; i += 3) {\n const ind0 = indices[i];\n const ind1 = indices[i + 1];\n const ind2 = indices[i + 2];\n\n const hash1 = Math.max(ind0, ind1) * maxIndex + Math.min(ind0, ind1);\n const hash2 = Math.max(ind1, ind2) * maxIndex + Math.min(ind1, ind2);\n const hash3 = Math.max(ind2, ind0) * maxIndex + Math.min(ind2, ind0);\n\n if (edgesSet.has(hash1)) {\n edgesSet.delete(hash1);\n } else {\n edgesSet.add(hash1);\n }\n\n if (edgesSet.has(hash2)) {\n edgesSet.delete(hash2);\n } else {\n edgesSet.add(hash2);\n }\n\n if (edgesSet.has(hash3)) {\n edgesSet.delete(hash3);\n } else {\n edgesSet.add(hash3);\n }\n }\n\n for (const hash of edgesSet) {\n const i1 = Math.floor(hash / maxIndex);\n const i2 = hash % maxIndex;\n\n borderMask[i1] = 1;\n borderMask[i2] = 1;\n }\n\n return borderMask;\n}","import { messageType, resultStatus } from \"_src/engine/ipc.js\";\nimport {memoryType, bufferType, attributeId} from \"_src/engine/constants\";\nimport workerManager from \"_src/engine/worker_manager.js\";\nimport arrayTools from \"_src/engine/utility/arrays\";\nimport Octant from \"_src/engine/octree/octree_combiner\";\nimport intersectEvaluator from \"_src/engine/intersect_evaluator\";\nimport memoryProfiler from \"_src/engine/memory_profiler\";\nimport minmaxUtils from \"_src/engine/utility/minmax\";\nimport config from \"_src/config\";\n\nimport events from \"_src/engine/events\";\nimport { vec3 } from \"_src/libs/gl-matrix\";\n\nimport {DEFAULT_ATTRIBUTES, getTypeByID, getTypedArrayByID} from \"_src/engine/utility/attributes\";\n\nimport buildHalfEdgeData from \"_src/engine/data_builders/half_edges.js\";\nimport buildOctreeData from \"_src/engine/data_builders/octree_builder.js\";\nimport {\n invertVerticesNormals,\n buildNormals\n} from \"_src/engine/data_builders/normals_builder\";\nimport {buildBordersMask} from \"_src/engine/data_builders/border_builder\";\n\nimport output from \"_src/engine/output\";\n\nconst _INTERSECTION = {\n point : vec3.create(),\n distance : Infinity,\n primitive : 0\n};\n\nconst DEPENDENT_BUFFER_NAMES = [\"indices\", \"a_position\"];\n\nclass Geometry {\n\n constructor({ layout = {}, bbox = [0,0,0,0,0,0]}) {\n\n this._layout = layout;\n\n this._hasMarkedVertices = false; // true if \"active_selection_mask\" attribute has non-zero elements\n this._hasSelectedVertices = false; // true if \"selection_mask\" attribute has non-zero elements\n\n this._tid = workerManager.INVALID_ID;\n\n this.isPointCloud = !(\"indices\" in layout);\n\n this.bbox = bbox;\n\n this.octree = null;\n\n }\n\n getLayoutItem(attrName) {\n\n const attrBuffer = this._layout[attrName];\n\n return attrBuffer ? attrBuffer : null;\n\n }\n\n hasLayoutItem(attrName) {\n\n const attrBuffer = this._layout[attrName];\n\n return attrBuffer ? true : false;\n\n }\n\n setLayoutItem(attrName, attribute) {\n\n const itemBuffer = this.getItemBuffer(attrName);\n if (itemBuffer) {\n memoryProfiler.markMemoryReleased(itemBuffer.buffer);\n }\n\n this._layout[attrName] = attribute;\n }\n\n deleteLayoutItem(attrName) {\n delete this._layout[attrName];\n }\n\n getLayout() {\n return this._layout;\n }\n\n getItemBuffer(attrName) {\n\n const attrBuffer = this._layout[attrName];\n\n return attrBuffer ? attrBuffer.getBuffer() : null;\n\n }\n\n getVerticesCount() {\n\n const positions = this.getItemBuffer(\"a_position\");\n\n return positions ? positions.length / 3 : 0;\n\n }\n\n getTrianglesCount() {\n\n const indices = this.getItemBuffer(\"indices\");\n\n return indices && !this.isPointCloud ? indices.length / 3 : 0;\n\n }\n\n initSelectionBuffers() {\n\n const length = this.getVerticesCount();\n const maskBuffer = new Uint8Array(length).buffer;\n const maskItem = new GeometryBuffer({ buffer : maskBuffer, type : bufferType.UI8_1 });\n this.setLayoutItem(\"a_selection_mask\", maskItem);\n\n this.initAuxiliarySelectionBuffers(length);\n\n }\n\n initAuxiliarySelectionBuffers(verticesNum) {\n\n const activeSelectionMaskBuffer = new Uint8Array(verticesNum).buffer;\n const activeSelectionMaskItem = new GeometryBuffer({ buffer : activeSelectionMaskBuffer, type : bufferType.UI8_1 });\n this.setLayoutItem(\"active_selection_mask\", activeSelectionMaskItem);\n\n }\n\n removeSelectionBuffers() {\n delete this._layout[\"a_selection_mask\"];\n delete this._layout[\"active_selection_mask\"];\n if (this.isPointCloud) {\n this.deletePointCloudIndices();\n }\n }\n\n initEmptyBuffer(name, number, type) {\n const bstride = arrayTools.getNumElements(type) * arrayTools.getBytesPerElement(type);\n const rowData = new ArrayBuffer(number * bstride);\n const data = arrayTools.castBuffer(rowData, type);\n const item = new GeometryBuffer({ buffer : data.buffer, type : type });\n this.setLayoutItem(name, item);\n }\n\n repairSelectionBuffers() {\n\n const mask = this.getItemBuffer(\"a_selection_mask\");\n\n if (mask) {\n const activeMask = this.getItemBuffer(\"active_selection_mask\");\n if (!activeMask || activeMask.length != mask.length) {\n this.initAuxiliarySelectionBuffers(mask.length);\n }\n }\n }\n\n removeHalfEdges() {\n delete this._layout[\"edges2edges\"];\n delete this._layout[\"verts2edges\"];\n delete this._layout[\"border_mask\"];\n }\n\n removeOctree() {\n this.octree = null;\n }\n\n buildOctree(useWorker) {\n\n if (this.isPointCloud) {\n this._initPointCloudIndices();\n }\n\n const positionItem = this.getLayoutItem(\"a_position\");\n if (positionItem.isDetached()) {\n return Promise.reject(\"Can't build octree. Positions buffer is detached.\");\n }\n const indicesItem = this.getLayoutItem(\"indices\");\n\n this.octree = null;\n\n const positions = positionItem.getBuffer();\n const indices = indicesItem.getBuffer();\n\n if (useWorker) {\n\n const message = {\n indices : indices,\n positions : positions,\n type : messageType.BUILD_OCTREE,\n bbox : this.bbox,\n tid : workerManager.generateUniqueID(),\n isPointCloud : this.isPointCloud\n };\n\n const transfer = [message.indices.buffer, message.positions.buffer];\n\n positionItem.setIsDetached(true);\n indicesItem.setIsDetached(true);\n\n for (let i = 0; i < transfer.length; ++i) {\n memoryProfiler.markMemoryReleased(transfer[i]);\n }\n\n this._tid = message.tid;\n\n return workerManager.sendMessage(message, transfer, message.tid).then(({ data }) => {\n\n if (data.status === resultStatus.ALL_OK) {\n this._constructOctree(data, positionItem, indicesItem);\n }\n }).catch((error) => {\n if (error.code != resultStatus.TERMINATED) {\n output.error(output.DEVELOPERS_ERROR, \"Can't build octree. \" + error.message);\n }\n });\n\n } else {\n\n return new Promise((resolve) => {\n const data = buildOctreeData(indices, positions, this.bbox, this.isPointCloud);\n this._constructOctree(data, positionItem, indicesItem);\n resolve();\n }).catch((error) => {output.error(output.DEVELOPERS_ERROR, \"Can't build octree. \" + error)});\n\n }\n\n }\n\n buildNormalsAndBorder(useWorker, withNormals, withBorder) {\n const positionsItem = this.getLayoutItem(\"a_position\");\n const indicesItem = this.getLayoutItem(\"indices\");\n\n if (positionsItem.isDetached() || indicesItem.isDetached()) {\n return Promise.reject(\"Can't build normals. Some buffers are detached.\");\n }\n\n const positions = positionsItem.getBuffer();\n const indices = indicesItem.getBuffer();\n\n let taskType;\n if (withNormals && withBorder) {\n taskType = messageType.BUILD_NORMALS_AND_BORDER\n } else if (withNormals) {\n taskType = messageType.BUILD_NORMALS;\n } else if (withBorder) {\n taskType = messageType.BUILD_BORDER;\n } else {\n return Promise.resolve();\n }\n\n if (useWorker) {\n\n positionsItem.setIsDetached(true);\n indicesItem.setIsDetached(true);\n\n const message = {\n indices,\n positions,\n type : taskType,\n tid : workerManager.generateUniqueID(),\n normalize : false\n };\n\n const transfer = [\n indices.buffer,\n positions.buffer,\n ];\n\n for (let i = 0; i < transfer.length; ++i) {\n memoryProfiler.markMemoryReleased(transfer[i]);\n }\n\n this._tid = message.tid;\n\n return workerManager.sendMessage(message, transfer, message.tid).then(({data}) => {\n\n if (data.status === resultStatus.ALL_OK) {\n indicesItem.setBuffer(data.indices.buffer);\n positionsItem.setBuffer(data.positions.buffer);\n\n if (data.normals) {\n const verticesNormalsItem = new GeometryBuffer({ buffer : data.normals.buffer, type : bufferType.F32_3 });\n this.setLayoutItem(\"a_normal\", verticesNormalsItem);\n\n if (config.viewOnlyMode) {\n verticesNormalsItem.scheduleUnload();\n }\n }\n\n if (data.mask) {\n const borderMaskItem = new GeometryBuffer({buffer: data.mask.buffer, type: bufferType.UI8_1});\n this.setLayoutItem(\"vertices_border_mask\", borderMaskItem);\n }\n\n if (config.viewOnlyMode) {\n indicesItem.scheduleUnload();\n positionsItem.scheduleUnload();\n }\n }\n }).catch((error) => {\n if (error.code !== resultStatus.TERMINATED) {\n output.error(output.DEVELOPERS_ERROR, \"Can't build normals. \" + error.message);\n }\n });\n\n } else {\n\n return new Promise((resolve) => {\n let verticesNormals = null;\n let verticesBorder = null;\n\n if (taskType === messageType.BUILD_NORMALS || taskType === messageType.BUILD_NORMALS_AND_BORDER) {\n verticesNormals = new Float32Array(positions.length);\n }\n\n if (taskType === messageType.BUILD_BORDER || taskType === messageType.BUILD_NORMALS_AND_BORDER) {\n verticesBorder = new Uint8Array(positions.length / 3);\n }\n\n buildNormals(indices, positions, verticesNormals);\n buildBordersMask(indices, verticesBorder);\n\n if (verticesNormals) {\n const verticesNormalsItem = new GeometryBuffer({ buffer : verticesNormals.buffer, type : bufferType.F32_3 });\n this.setLayoutItem(\"a_normal\", verticesNormalsItem);\n\n if (config.viewOnlyMode) {\n verticesNormalsItem.scheduleUnload();\n }\n }\n\n if (verticesBorder) {\n const borderMaskItem = new GeometryBuffer({buffer: verticesBorder.buffer, type: bufferType.UI8_1});\n this.setLayoutItem(\"vertices_border_mask\", borderMaskItem);\n }\n\n if (config.viewOnlyMode) {\n indicesItem.scheduleUnload();\n positionsItem.scheduleUnload();\n }\n resolve();\n }).catch((error) => {\n output.error(output.DEVELOPERS_ERROR, \"Can't build normals. \" + error);\n });\n\n }\n\n }\n\n invertNormals(useWorker) {\n\n const indicesItem = this.isPointCloud ? null : this.getLayoutItem(\"indices\");\n const verticesNormalsItem = this.getLayoutItem(\"a_normal\");\n\n if (indicesItem && indicesItem.isDetached() || verticesNormalsItem && verticesNormalsItem.isDetached()) {\n return Promise.reject(\"Can't invert normals. Geometry has detached buffers\");\n }\n\n const indices = indicesItem ? indicesItem.getBuffer() : null;\n const verticesNormals = verticesNormalsItem ? verticesNormalsItem.getBuffer() : null;\n\n if (useWorker) {\n\n if (indicesItem) {\n indicesItem.setIsDetached(true);\n }\n if (verticesNormalsItem) {\n verticesNormalsItem.setIsDetached(true);\n }\n\n const message = {\n indices,\n verticesNormals,\n type : messageType.INVERT_NORMALS,\n tid : workerManager.generateUniqueID()\n };\n\n const transfer = [];\n if (indices) {\n transfer.push(indices.buffer);\n }\n if (verticesNormals) {\n transfer.push(verticesNormals.buffer);\n }\n\n for (const buffer of transfer) {\n memoryProfiler.markMemoryReleased(buffer);\n }\n\n this._tid = message.tid;\n\n return workerManager.sendMessage(message, transfer, message.tid).then(({data}) => {\n\n if (data.status === resultStatus.ALL_OK) {\n if (data.indices && indicesItem) {\n indicesItem.setBuffer(data.indices.buffer);\n }\n if (data.verticesNormals && verticesNormalsItem) {\n verticesNormalsItem.setBuffer(data.verticesNormals.buffer);\n }\n }\n }).catch((error) => {\n if (error.code !== resultStatus.TERMINATED) {\n output.error(output.DEVELOPERS_ERROR, \"Can't invert normals. \" + error.message);\n }\n });\n\n } else {\n\n return new Promise((resolve) => {\n invertVerticesNormals(verticesNormals, indices);\n resolve();\n }).catch((error) => {\n output.error(output.DEVELOPERS_ERROR, \"Can't invert normals. \" + error);\n });\n\n }\n\n }\n\n _constructOctree(data, positionItem, indicesItem) {\n\n indicesItem.setBuffer(data.indices.buffer);\n positionItem.setBuffer(data.positions.buffer);\n\n this.octree = new Octant(null);\n this.octree.buildFromBuffer(data.bboxBuffer, data.sizeBuffer, this.isPointCloud);\n }\n\n castRay(localOrigin, localDirection, dest) {\n\n const positions = this.getItemBuffer(\"a_position\");\n\n if (!positions) {\n return -1;\n }\n\n const indices = this.getItemBuffer(\"indices\");\n const sizes = this.getItemBuffer(\"a_size\");\n let intersector;\n if (sizes) {\n intersector = (from, to, offset, length, result) => {\n return intersectEvaluator.sphereRayIntersection(from, to, indices, offset, length, positions, sizes, result);\n };\n } else {\n intersector = (from, to, offset, length, result) => {\n return intersectEvaluator.triangleRayIntersection(from, to, indices, offset, length, positions, result);\n };\n }\n\n if (this.octree) {\n return this.octree.castRay(localOrigin, localDirection, intersector, dest);\n } else {\n const length = indices ? indices.length : positions.length / 3;\n return this.bruteCastRay(localOrigin, localDirection, intersector, length, dest);\n }\n\n }\n\n getOctreeLeaves() {\n return this.octree.getLeaves();\n }\n\n checkHasMarkedVertices() {\n return this._hasMarkedVertices;\n }\n\n setHasMarkedVertices(has) {\n this._hasMarkedVertices = has;\n }\n\n checkHasSelectedVertices() {\n return this._hasSelectedVertices;\n }\n\n setHasSelectedVertices(has) {\n this._hasSelectedVertices = has;\n events.emit(\"geometry_selection_changed\", {geometry: this, isSelected: has});\n }\n\n dropSelection() {\n\n const selectionMask = this.getItemBuffer(\"a_selection_mask\");\n\n for (let i = 0; i < selectionMask.length; ++i) {\n selectionMask[i] = 0;\n }\n\n this.setHasSelectedVertices(false);\n\n }\n\n invertSelection() {\n\n const selectionMask = this.getItemBuffer(\"a_selection_mask\");\n\n this.setHasSelectedVertices(false);\n for (let i = 0; i < selectionMask.length; ++i) {\n selectionMask[i] ^= 1;\n if (selectionMask[i]) {\n this.setHasSelectedVertices(true);\n }\n }\n }\n\n buildHalfEdge(useWorker) {\n\n const positionItem = this.getLayoutItem(\"a_position\");\n const indicesItem = this.getLayoutItem(\"indices\");\n\n if (positionItem.isDetached()) {\n return Promise.reject(\"Can't build Half Edges. Positions buffer is detached.\");\n }\n\n const positions = positionItem.getBuffer();\n const indices = indicesItem.getBuffer();\n\n const verticesBorder = new Uint8Array(positions.length / 3);\n\n const numVertices = positions.length / 3;\n indicesItem.setIsDetached(true);\n\n if (useWorker) {\n\n const message = {\n indices : indices,\n vertMask : verticesBorder,\n numVertices : numVertices,\n type : messageType.BUILD_HALF_EDGES,\n tid : workerManager.generateUniqueID()\n };\n\n const transfer = [message.indices.buffer, message.vertMask.buffer];\n\n for (let i = 0; i < transfer.length; ++i) {\n memoryProfiler.markMemoryReleased(transfer[i]);\n }\n\n this._tid = message.tid;\n\n return workerManager.sendMessage(message, transfer, message.tid).then(({ data }) => {\n\n if (data.status === resultStatus.ALL_OK) {\n this._constructHalfEdges(data, indicesItem);\n }\n }).catch((error) => {\n if (error.code != resultStatus.TERMINATED) {\n output.error(output.DEVELOPERS_ERROR, \"Can't build half edges. \" + error.message);\n }\n });\n\n } else {\n\n return new Promise((resolve) => {\n const data = buildHalfEdgeData(indices, numVertices);\n data.vertMask = buildBordersMask(indices, verticesBorder);\n this._constructHalfEdges(data, indicesItem);\n resolve();\n }).catch((error) => {output.error(output.DEVELOPERS_ERROR, \"Can't build half edges. \" + error)});\n\n }\n\n }\n\n _constructHalfEdges(data, indicesItem) {\n\n const e2eType = arrayTools.uintArrayType(data.E2e);\n const edges2EdgesItem = new GeometryBuffer({ buffer : data.E2e.buffer, type : e2eType });\n this.setLayoutItem(\"edges2edges\", edges2EdgesItem);\n\n const v2eType = arrayTools.uintArrayType(data.V2e);\n const verts2EdgesItem = new GeometryBuffer({ buffer : data.V2e.buffer, type : v2eType });\n this.setLayoutItem(\"verts2edges\", verts2EdgesItem);\n\n const borderMaskItem = new GeometryBuffer({ buffer : data.mask.buffer, type : bufferType.I8_1 });\n this.setLayoutItem(\"border_mask\", borderMaskItem);\n\n const vertexBorderMaskItem = new GeometryBuffer({buffer: data.vertMask.buffer, type: bufferType.UI8_1});\n this.setLayoutItem(\"vertices_border_mask\", vertexBorderMaskItem);\n\n indicesItem.setBuffer(data.indices.buffer);\n\n }\n\n bruteCastRay(from, to, intersector, length, dest, meta = {}) {\n\n if (intersectEvaluator.AABBRayIntersect(from, to, this.bbox)) {\n\n const result = _INTERSECTION;\n\n const hit = intersector(from, to, 0, length, result);\n\n if (hit) {\n\n vec3.copy(dest, result.point);\n\n meta.primitive = result.primitive;\n\n return vec3.distance(result.point, from);\n\n }\n\n }\n\n return -1;\n\n }\n\n initVertexID(verticesCount) {\n const byteLength = verticesCount * arrayTools.getBytesPerElement(bufferType.F32_1);\n const vertexIDBuffer = new ArrayBuffer(byteLength);\n const vertexIDItem = new GeometryBuffer({ buffer : vertexIDBuffer, type : bufferType.F32_1 });\n\n this.setLayoutItem(\"a_vertex_id\", vertexIDItem);\n\n const ids = this.getItemBuffer(\"a_vertex_id\");\n for (let i = 0; i < ids.length; ++i) {\n ids[i] = i / ids.length;\n }\n\n arrayTools.shuffle(ids);\n }\n\n initOldIndices(vertRemoveMask) {\n const length = this.getVerticesCount();\n const typedArray = getTypedArrayByID(attributeId.OLD_INDICES);\n const array = new typedArray(length);\n\n let ptr = 0;\n for (let i=0; i> 2)];\n vertex[1] = minmax[1 + 3 * ((i & 0b010) >> 1)];\n vertex[2] = minmax[2 + 3 * ((i & 0b001))];\n\n const dist = vec3.dot(nearPlane, vertex) + vec4Tmp[3];\n\n near = Math.min(dist, near);\n far = Math.max(dist, far);\n\n }\n\n if (camera.isPerspective()) {\n const minPerspectiveNear = far > 1000 ? 0.1 : 0.1 * Math.sqrt(Math.abs(far) / 1000);\n near = Math.max(near, minPerspectiveNear);\n }\n if (far <= near) far = near + 0.001;\n\n return [near, far];\n };\n\n })(),\n\n isValid(minmax) {\n return minmax[0] <= minmax[3] && minmax[1] <= minmax[4] && minmax[2] <= minmax[5];\n },\n\n getDefaultValue() {\n return [-10, -10, -10, 10, 10, 10];\n },\n\n setDefaultValue(dest) {\n dest[0] = -10;\n dest[1] = -10;\n dest[2] = -10;\n dest[3] = 10;\n dest[4] = 10;\n dest[5] = 10;\n\n return dest;\n },\n\n setMinmaxBuffer(chunk, minmax) {\n\n const geometry = chunk.geometry;\n\n const positions = geometry.getItemBuffer(\"a_position\");\n const positionsNext = geometry.getItemBuffer(\"a_position_next\");\n\n const xmin = minmax[0];\n const ymin = minmax[1];\n const zmin = minmax[2];\n const xmax = minmax[3];\n const ymax = minmax[4];\n const zmax = minmax[5];\n\n setLine(positions, positionsNext, 0, xmax, ymin, zmax, xmax, ymin, zmin);\n setLine(positions, positionsNext, 1, xmax, ymin, zmin, xmin, ymin, zmin);\n setLine(positions, positionsNext, 2, xmin, ymin, zmin, xmin, ymin, zmax);\n setLine(positions, positionsNext, 3, xmin, ymin, zmax, xmax, ymin, zmax);\n\n setLine(positions, positionsNext, 4, xmax, ymax, zmax, xmax, ymax, zmin);\n setLine(positions, positionsNext, 5, xmax, ymax, zmin, xmin, ymax, zmin);\n setLine(positions, positionsNext, 6, xmin, ymax, zmin, xmin, ymax, zmax);\n setLine(positions, positionsNext, 7, xmin, ymax, zmax, xmax, ymax, zmax);\n\n setLine(positions, positionsNext, 8, xmax, ymin, zmax, xmax, ymax, zmax);\n setLine(positions, positionsNext, 9, xmax, ymin, zmin, xmax, ymax, zmin);\n setLine(positions, positionsNext, 10, xmin, ymin, zmin, xmin, ymax, zmin);\n setLine(positions, positionsNext, 11, xmin, ymin, zmax, xmin, ymax, zmax);\n\n chunk.markAttributeDirty(\"a_position\");\n chunk.markAttributeDirty(\"a_position_next\");\n\n },\n\n recomputedFromTransform(dest, minmax, transform) {\n\n let xmin = Infinity;\n let ymin = Infinity;\n let zmin = Infinity;\n let xmax = -Infinity;\n let ymax = -Infinity;\n let zmax = -Infinity;\n\n for (let i = 0; i < 8; ++i) {\n\n const x = minmax[ 3 * ((i & 0b100) >> 2)];\n const y = minmax[1 + 3 * ((i & 0b010) >> 1)];\n const z = minmax[2 + 3 * ((i & 0b001))];\n\n const point = vec3.set(_vec3Tmp, x, y, z);\n\n vec3.transformMat4(point, point, transform);\n\n xmin = Math.min(xmin, point[0]);\n ymin = Math.min(ymin, point[1]);\n zmin = Math.min(zmin, point[2]);\n xmax = Math.max(xmax, point[0]);\n ymax = Math.max(ymax, point[1]);\n zmax = Math.max(zmax, point[2]);\n\n }\n\n dest[0] = xmin;\n dest[1] = ymin;\n dest[2] = zmin;\n dest[3] = xmax;\n dest[4] = ymax;\n dest[5] = zmax;\n\n return dest;\n },\n\n recomputedFromRotated(dest, minmax, matrix) {\n\n for (let i = 0; i < 3; ++i) {\n\n dest[i] = matrix[12 + i];\n dest[3 + i] = matrix[12 + i];\n\n for (let j = 0; j < 3; ++j) {\n\n const offset = j * 4;\n\n const e = matrix[i + offset] * minmax[j];\n const f = matrix[i + offset] * minmax[3 + j];\n\n if (e < f) {\n\n dest[i] += e;\n dest[3 + i] += f;\n\n } else {\n\n dest[i] += f;\n dest[3 + i] += e;\n\n }\n\n }\n\n }\n\n return dest;\n\n },\n\n getDiagonal(minmax) {\n\n const diffx = minmax[3] - minmax[0];\n const diffy = minmax[4] - minmax[1];\n const diffz = minmax[5] - minmax[2];\n\n return Math.sqrt(diffx * diffx + diffy * diffy + diffz * diffz);\n\n }\n\n}\n\nfunction setLine(positions, positionsNext, index, x0, y0, z0, x1, y1, z1) {\n\n let offset = 4 * 3 * index;\n\n // 0\n positions[offset + 0] = x0;\n positions[offset + 1] = y0;\n positions[offset + 2] = z0;\n\n positionsNext[offset + 0] = x1;\n positionsNext[offset + 1] = y1;\n positionsNext[offset + 2] = z1;\n\n offset += 3;\n // 1\n positions[offset + 0] = x1;\n positions[offset + 1] = y1;\n positions[offset + 2] = z1;\n\n positionsNext[offset + 0] = x0;\n positionsNext[offset + 1] = y0;\n positionsNext[offset + 2] = z0;\n\n offset += 3;\n // 2\n positions[offset + 0] = x0;\n positions[offset + 1] = y0;\n positions[offset + 2] = z0;\n\n positionsNext[offset + 0] = x1;\n positionsNext[offset + 1] = y1;\n positionsNext[offset + 2] = z1;\n\n offset += 3;\n // 3\n positions[offset + 0] = x1;\n positions[offset + 1] = y1;\n positions[offset + 2] = z1;\n\n positionsNext[offset + 0] = x0;\n positionsNext[offset + 1] = y0;\n positionsNext[offset + 2] = z0;\n\n}\n","import GL from \"_src/engine/gl\";\nimport compat from \"_src/engine/compat\";\nimport {memoryType, RBIntFormat} from \"_src/engine/constants\";\nimport extensions from \"_src/engine/extensions\";\nimport output from \"_src/engine/output\";\nimport resourceManager from \"_src/render_graph/resource_manager\";\nimport memoryProfiler from \"_src/engine/memory_profiler\";\n\nexport default class FrameBuffer {\n\n constructor(colorAttachments, depthAttachment, stencilAttachment) {\n\n this.fbo = null;\n\n this.colorAttachments = colorAttachments;\n this.depthAttachment = depthAttachment;\n\n const renderToScreen = !colorAttachments;\n if (!renderToScreen) {\n\n if (colorAttachments.length > compat.maxColorAttachments) {\n output.error(output.INITIALIZATION_ERROR, \"Unsupported number of color attachments for current platform. \" +\n \"Max number is \" + compat.maxColorAttachments + \", but \" + colorAttachments.length + \" given.\");\n }\n\n this._createFramebuffer();\n this._bindAttachments(colorAttachments, depthAttachment, stencilAttachment);\n\n for (const attachment of colorAttachments) {\n resourceManager.incBufferLinkCount(attachment);\n }\n\n if (depthAttachment) {\n resourceManager.incBufferLinkCount(depthAttachment);\n }\n\n this.reportMemoryUsage();\n }\n\n }\n\n bind(gl) {\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.fbo);\n }\n\n unbind(gl) {\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n\n _createFramebuffer() {\n\n const gl = GL.getContext();\n\n this.fbo = gl.createFramebuffer();\n\n }\n\n _bindAttachments(colorAttachments, depthAttachment, stencilAttachment) {\n\n const gl = GL.getContext();\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.fbo);\n\n const mrtUsed = compat.mrtEnabled && colorAttachments.length > 1;\n const mrt = compat.mrtEnabled ? extensions.get(\"WEBGL_draw_buffers\") : null;\n\n const targets = [];\n\n const attachmentsCount = mrt ? colorAttachments.length : 1;\n\n // color\n for (let i = 0; i < attachmentsCount; ++i) {\n\n const target = mrtUsed ? mrt.COLOR_ATTACHMENT0 + i : gl.COLOR_ATTACHMENT0;\n const colorAttachment = colorAttachments[i];\n\n if (colorAttachment.isTexture) {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, target, gl.TEXTURE_2D,\n colorAttachment.pixelBuffer, 0);\n\n } else {\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, target,\n gl.RENDERBUFFER, colorAttachment.pixelBuffer);\n }\n\n targets.push(target);\n\n }\n\n if (mrtUsed) {\n mrt.drawBuffers(targets);\n }\n\n // depth\n if (depthAttachment) {\n\n if (depthAttachment.isTexture) {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.TEXTURE_2D,\n depthAttachment.pixelBuffer, 0);\n } else if (checkRenderBufferUseStencil(depthAttachment.format)) {\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT,\n gl.RENDERBUFFER, depthAttachment.pixelBuffer);\n } else {\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER, depthAttachment.pixelBuffer);\n }\n\n if (stencilAttachment) {\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT,\n gl.RENDERBUFFER, stencilAttachment.pixelBuffer);\n }\n\n }\n\n const framebufferStatus = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n\n switch(framebufferStatus) {\n case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n output.error(output.DEVELOPERS_ERROR, \"Wrong framebuffer: FRAMEBUFFER_INCOMPLETE_ATTACHMENT\");\n break;\n case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n output.error(output.DEVELOPERS_ERROR, \"Wrong framebuffer: FRAMEBUFFER_INCOMPLETE_DIMENSIONS\");\n break;\n case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n output.error(output.DEVELOPERS_ERROR, \"Wrong framebuffer: FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\");\n break;\n case gl.FRAMEBUFFER_UNSUPPORTED:\n output.error(output.INITIALIZATION_ERROR, \"Wrong framebuffer: FRAMEBUFFER_UNSUPPORTED\");\n break;\n case gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:\n output.error(output.DEVELOPERS_ERROR, \"Wrong framebuffer: FRAMEBUFFER_INCOMPLETE_MULTISAMPLE\");\n break;\n case gl.RENDERBUFFER_SAMPLES:\n output.error(output.DEVELOPERS_ERROR, \"Wrong framebuffer: RENDERBUFFER_SAMPLES\");\n break;\n default:\n // Assuming it is gl.FRAMEBUFFER_COMPLETE:\n }\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n }\n\n resize(width, height) {\n\n if (this.colorAttachments) {\n for (let colorAttachment of this.colorAttachments) {\n if (colorAttachment.width != width || colorAttachment.width != height) {\n colorAttachment.resize(width, height);\n }\n }\n }\n\n if (this.depthAttachment) {\n if (this.depthAttachment.width != width || this.depthAttachment.width != height) {\n this.depthAttachment.resize(width, height);\n }\n }\n\n this.reportMemoryUsage();\n\n }\n\n reportMemoryUsage(sceneOwner) {\n if (this.colorAttachments) {\n for (const colorAttachment of this.colorAttachments) {\n memoryProfiler.markMemoryAllocated(colorAttachment.pixelBuffer, memoryType.GPU_FRAMEBUFFERS, colorAttachment.width * colorAttachment.height * 4, sceneOwner);\n }\n }\n\n if (this.depthAttachment) {\n memoryProfiler.markMemoryAllocated(this.depthAttachment.pixelBuffer, memoryType.GPU_FRAMEBUFFERS, this.depthAttachment.width * this.depthAttachment.height * 4, sceneOwner);\n }\n }\n\n reportMemoryRelease(sceneOwner) {\n if (this.colorAttachments) {\n for (const colorAttachment of this.colorAttachments) {\n memoryProfiler.markMemoryReleased(colorAttachment.pixelBuffer, sceneOwner);\n }\n }\n\n if (this.depthAttachment) {\n memoryProfiler.markMemoryReleased(this.depthAttachment.pixelBuffer, sceneOwner);\n }\n }\n\n size() {\n let attachment = null;\n let width = 0, height = 0;\n if (this.colorAttachments.length > 0){\n attachment = this.colorAttachments[0];\n } else if (this.depthAttachment) {\n attachment = this.depthAttachment\n }\n if (attachment) {\n width = attachment.width;\n height = attachment.height;\n }\n return [width, height];\n }\n\n cleanup() {\n\n const colorAttachments = this.colorAttachments;\n const depthAttachment = this.depthAttachment;\n\n if (colorAttachments) {\n for (let i = 0; i < colorAttachments.length; ++i) {\n\n const attachment = colorAttachments[i];\n\n resourceManager.decBufferLinkCount(attachment);\n\n const linkCount = resourceManager.getBufferCount(attachment);\n\n if (linkCount == 0) {\n memoryProfiler.markMemoryReleased(attachment.pixelBuffer);\n attachment.cleanup();\n }\n }\n this.colorAttachments.length = 0;\n }\n\n if (depthAttachment) {\n resourceManager.decBufferLinkCount(depthAttachment);\n\n const linkCount = resourceManager.getBufferCount(depthAttachment);\n\n if (linkCount == 0) {\n memoryProfiler.markMemoryReleased(depthAttachment.pixelBuffer);\n depthAttachment.cleanup();\n }\n }\n this.depthAttachment = null;\n }\n\n}\n\nfunction checkRenderBufferUseStencil(format) {\n return format == RBIntFormat.DS || format == RBIntFormat.D24S8;\n}\n","import bufferFactory from \"_src/engine/factories/pixel_buffer\";\n\nexport default {\n\n _map : new WeakMap(),\n\n initBuffer(type, params) {\n\n const buffer = bufferFactory.create(type, params);\n\n this._map.set(buffer, 0);\n\n return buffer;\n\n },\n\n incBufferLinkCount(buffer) {\n\n let count = this._map.get(buffer);\n ++count;\n\n this._map.set(buffer, count);\n\n },\n\n decBufferLinkCount(buffer) {\n\n let count = this._map.get(buffer);\n --count;\n\n this._map.set(buffer, count);\n\n },\n\n getBufferCount(buffer) {\n return this._map.get(buffer);\n },\n\n}","import Shader from \"_src/engine/shader\";\nimport Uniform from \"_src/engine/uniform\";\nimport { uniformType, uniformSource } from \"_src/engine/constants\";\n\nimport vertText from \"_src/shaders/surfels_normalization/surfels_normalization.glslv\";\nimport fragText from \"_src/shaders/surfels_normalization/surfels_normalization.glslf\";\n\nexport default class SurfelsNormalizationShader extends Shader {\n\n constructor(params = {}) {\n\n super(params);\n\n this.attachUniforms();\n this.depthTest = false;\n\n }\n\n compile() {\n super.compile(vertText, fragText);\n }\n\n attachUniforms() {\n this.uniforms[\"u_text_diffuse\"] = new Uniform(uniformType.INT1, 0, uniformSource.OBJECT);\n }\n\n}\n","import GL from \"_src/engine/gl\";\nimport FrameBuffer from \"_src/engine/framebuffer\";\n\nimport {attachmentId, blendFactor, pixelBufferType, primitiveType, RBIntFormat} from \"_src/engine/constants\";\n\nimport Pass from \"_src/render_graph/pass\";\nimport resourceManager from \"_src/render_graph/resource_manager\";\nimport Camera from \"_src/engine/camera\";\nimport SurfelsNormalizationShader from \"_src/shaders/surfels_normalization/surfels_normalization\"\nimport objFactory from \"_src/engine/factories/object\";\nimport primitiveFactory from \"_src/engine/factories/primitive\";\nimport CopyShader from \"_src/shaders/copy/copy\";\nimport compat from \"_src/engine/compat\";\nimport config from \"_src/config\";\n\nexport default class MainPass extends Pass {\n\n constructor(attachmentsStorage, camera) {\n\n super(attachmentsStorage);\n this.enableColorTexture = false;\n this.enableTriangleIDTexture = false;\n this.enableObjectIDTexture = true;\n this.enableGeneralPurposeTexture = false;\n this.init(camera);\n\n }\n\n init(camera) {\n const screenCamera = new Camera();\n\n //clear scenes\n this._addScene(camera);\n this._addScene(camera);\n\n const workspaceScene = this._addScene(camera);\n const surfelsDepthScene = this._addScene(camera);\n const surfelsAdditiveScene = this._addScene(camera);\n const surfelsNormalizationScene = this._addScene(screenCamera);\n const postBlendingScene = this._addScene(camera);\n const postBlendingCopyScene = this._addScene(screenCamera);\n const cadsAdditionalScene = this._addScene(camera);\n\n const objectIDScene = this._addScene(camera);\n const generalPurposeScene = this._addScene(camera);\n\n workspaceScene.clearedColor = false;\n\n objectIDScene.clearedColor = false;\n objectIDScene.clearedStencil = false;\n\n generalPurposeScene.clearedColor = false;\n generalPurposeScene.clearedStencil = false;\n\n surfelsDepthScene.clearedColor = false;\n surfelsDepthScene.clearedDepth = false;\n surfelsDepthScene.clearedStencil = false;\n surfelsDepthScene.isDepthPrepass = true;\n\n surfelsAdditiveScene.clearedColor = false;\n surfelsAdditiveScene.clearedDepth = false;\n surfelsAdditiveScene.clearedStencil = false;\n\n surfelsNormalizationScene.clearedColor = false;\n const surfelsNormalizationShader = new SurfelsNormalizationShader({transparent : true});\n surfelsNormalizationShader.setSourceBlendFactor(blendFactor.ONE);\n const normalizationScreenPlane = objFactory.createDrawable(surfelsNormalizationShader);\n normalizationScreenPlane.addGeometryChunk(primitiveFactory.create(primitiveType.SCREEN_QUAD));\n surfelsNormalizationScene.add(normalizationScreenPlane);\n\n postBlendingScene.clearedColor = false;\n postBlendingScene.clearedDepth = false;\n postBlendingScene.clearedStencil = false;\n postBlendingScene.isPostBlending = true;\n\n postBlendingCopyScene.clearedColor = false;\n const copyShader = new CopyShader({transparent : true});\n copyShader.setSourceBlendFactor(blendFactor.SRC_ALPHA);\n copyShader.setDestBlendFactor(blendFactor.ONE_MINUS_SRC_ALPHA);\n const copyScreenPlane = objFactory.createDrawable(copyShader);\n copyScreenPlane.addGeometryChunk(primitiveFactory.create(primitiveType.SCREEN_QUAD));\n postBlendingCopyScene.add(copyScreenPlane);\n\n cadsAdditionalScene.clearedColor = false;\n cadsAdditionalScene.isObjectIDPass = true;\n }\n\n update() {\n\n const clearScene1 = this.getScenes()[0];\n const clearScene2 = this.getScenes()[1];\n const workspaceScene = this.getScenes()[2];\n const surfelsDepthScene = this.getScenes()[3];\n const surfelsAdditiveScene = this.getScenes()[4];\n const surfelsNormalizationScene = this.getScenes()[5];\n const postBlendingScene = this.getScenes()[6];\n const postBlendingCopyScene = this.getScenes()[7];\n const cadsAdditionalScene = this.getScenes()[8];\n const objectIDScene = this.getScenes()[9];\n const generalPurposeScene = this.getScenes()[10];\n\n const width = workspaceScene.camera.viewport[2];\n const height = workspaceScene.camera.viewport[3];\n\n const { clearFrameBuffer1, clearFrameBuffer2, workspaceFrameBuffer, objectIDFrameBuffer, generalPurposeFrameBuffer,\n surfelsDepthFrameBuffer, postBlendingFrameBuffer, resolveFrameBuffer, surfelsAdditiveFrameBuffer,\n cadsAdditionalFrameBuffer } = this.initFramebuffer(width, height);\n\n clearScene1.setFramebuffer(clearFrameBuffer1);\n clearScene2.setFramebuffer(clearFrameBuffer2);\n workspaceScene.setFramebuffer(workspaceFrameBuffer);\n objectIDScene.setFramebuffer(objectIDFrameBuffer);\n generalPurposeScene.setFramebuffer(generalPurposeFrameBuffer);\n surfelsDepthScene.setFramebuffer(surfelsDepthFrameBuffer);\n surfelsAdditiveScene.setFramebuffer(surfelsAdditiveFrameBuffer);\n surfelsNormalizationScene.setFramebuffer(resolveFrameBuffer);\n postBlendingScene.setFramebuffer(postBlendingFrameBuffer);\n postBlendingCopyScene.setFramebuffer(resolveFrameBuffer);\n cadsAdditionalScene.setFramebuffer(cadsAdditionalFrameBuffer);\n\n const normalizationScreenPlane = surfelsNormalizationScene.getChildren()[0];\n const additiveTexture = surfelsAdditiveScene.getFramebuffer().colorAttachments[0];\n normalizationScreenPlane.setTexture(additiveTexture, 0);\n\n const copyScreenPlane = postBlendingCopyScene.getChildren()[0];\n const blendingTexture = postBlendingScene.getFramebuffer().colorAttachments[0];\n copyScreenPlane.setTexture(blendingTexture, 0);\n }\n\n initFramebuffer(width, height) {\n const blendTexturesType = compat.floatingTexturesRenderingEnabled ? pixelBufferType.T_RGBA16F : pixelBufferType.T_RGBA;\n\n const commonTextures = [];\n const clearSet1 = [];\n const clearSet2 = [];\n let depthBuffer = null;\n\n let mainColorTexture = null;\n let surfelsColorTexture = null;\n let blendingTexture = null;\n if (this.enableColorTexture) {\n const usedTexture = this.attachmentsStorage[attachmentId.BASE_COLOR_TEXTURE];\n const texture = usedTexture ? usedTexture : resourceManager.initBuffer(pixelBufferType.T_RGBA,\n {width, height});\n this.attachmentsStorage[attachmentId.BASE_COLOR_TEXTURE] = texture;\n\n mainColorTexture = texture;\n surfelsColorTexture = resourceManager.initBuffer(blendTexturesType,\n {width, height});\n blendingTexture = resourceManager.initBuffer(pixelBufferType.T_RGBA,\n {width, height});\n\n clearSet2.push(surfelsColorTexture);\n clearSet1.push(blendingTexture);\n }\n\n if (this.enableTriangleIDTexture) {\n const usedTexture = this.attachmentsStorage[attachmentId.TRIANGLE_ID_TEXTURE];\n const texture = usedTexture ? usedTexture : resourceManager.initBuffer(pixelBufferType.T_RGBA,\n {width, height});\n commonTextures.push(texture);\n this.attachmentsStorage[attachmentId.TRIANGLE_ID_TEXTURE] = texture;\n clearSet1.push(texture);\n }\n\n let objectIDTexture = null;\n if (this.enableObjectIDTexture) {\n const usedTexture = this.attachmentsStorage[attachmentId.OBJECT_ID_TEXTURE];\n objectIDTexture = usedTexture ? usedTexture : resourceManager.initBuffer(pixelBufferType.T_RGBA,\n {width, height});\n this.attachmentsStorage[attachmentId.OBJECT_ID_TEXTURE] = objectIDTexture;\n commonTextures.push(objectIDTexture);\n clearSet1.push(objectIDTexture);\n }\n\n let generalPurposeTexture = null;\n if (this.enableGeneralPurposeTexture) {\n generalPurposeTexture = resourceManager.initBuffer(pixelBufferType.T_RGBA,\n {width, height});\n commonTextures.push(generalPurposeTexture);\n clearSet1.push(generalPurposeTexture);\n }\n\n const areAnyColorAttachments = this.enableColorTexture || this.enableTriangleIDTexture || this.enableObjectIDTexture;\n if (areAnyColorAttachments) {\n const usedBuffer = this.attachmentsStorage[attachmentId.WORKSPACE_DEPTH_STENCIL];\n const format = GL.checkWebGL2() ? RBIntFormat.D24S8 : RBIntFormat.DS;\n const bufferType = config.recalculateInterfaceDepth ? pixelBufferType.T_DEPTH : pixelBufferType.RB_DEPTH;\n depthBuffer = usedBuffer ? usedBuffer : resourceManager.initBuffer(bufferType,\n { width, height, format });\n this.attachmentsStorage[attachmentId.WORKSPACE_DEPTH_STENCIL] = depthBuffer;\n if (!config.recalculateInterfaceDepth) {\n this.attachmentsStorage[attachmentId.INTERFACE_DEPTH] = depthBuffer;\n }\n\n }\n const dummyColorTexture = resourceManager.initBuffer(pixelBufferType.T_RGBA,{ width, height });\n const dummyCommonTextures = [];\n for (let i=0; i 0) return true;\n }\n\n return false;\n}\n","import Pass from \"_src/render_graph/pass\";\nimport resourceManager from \"_src/render_graph/resource_manager\";\n\nimport objFactory from \"_src/engine/factories/object\";\nimport FrameBuffer from \"_src/engine/framebuffer\";\nimport primitiveFactory from \"_src/engine/factories/primitive\";\nimport {primitiveType, pixelBufferType, attachmentId} from \"_src/engine/constants\";\n\nimport CopyShader from \"_src/shaders/copy/copy\";\nimport Camera from \"_src/engine/camera\";\nexport default class CompareMixPass extends Pass {\n\n constructor(attachmentsStorage) {\n\n super(attachmentsStorage);\n\n this.init();\n\n }\n\n init() {\n const camera = new Camera();\n const scene = this._addScene(camera);\n scene.clearedColor = false;\n\n const screenChunk = primitiveFactory.create(primitiveType.SCREEN_QUAD);\n\n const leftModelShader = new CopyShader({transparent: true});\n leftModelShader.enableScissorTest();\n const leftModelScreenPlane = objFactory.createDrawable(leftModelShader);\n leftModelScreenPlane.addGeometryChunk(screenChunk);\n\n const rightModelShader = new CopyShader({transparent: true});\n rightModelShader.enableScissorTest();\n const rightModelScreenPlane = objFactory.createDrawable(rightModelShader);\n rightModelScreenPlane.addGeometryChunk(screenChunk);\n\n scene.add(leftModelScreenPlane);\n scene.add(rightModelScreenPlane);\n }\n\n update() {\n const scene = this.getMainScene();\n\n const width = scene.camera.viewport[2];\n const height = scene.camera.viewport[3];\n\n const frameBuffer = this.initFramebuffer(width, height);\n scene.setFramebuffer(frameBuffer);\n\n const leftModelScreenPlane = scene.getChildren()[0];\n const rightModelScreenPlane = scene.getChildren()[1];\n\n leftModelScreenPlane.setTexture(this.attachmentsStorage[attachmentId.COMPARE_LEFT_TEXTURE], 0);\n rightModelScreenPlane.setTexture(this.attachmentsStorage[attachmentId.COMPARE_RIGHT_TEXTURE], 0);\n }\n\n initFramebuffer(width, height) {\n const usedTexture = this.attachmentsStorage[attachmentId.OUTPUT_COLOR_TEXTURE];\n const texture = usedTexture ? usedTexture : resourceManager.initBuffer(pixelBufferType.T_RGBA, { width, height });\n this.attachmentsStorage[attachmentId.OUTPUT_COLOR_TEXTURE] = texture;\n\n const frameBuffer = new FrameBuffer([texture], null);\n return frameBuffer;\n }\n\n setSplitPosition(x) {\n const scene = this.getMainScene();\n const vp = scene.camera.viewport;\n const leftModelScreenPlane = scene.getChildren()[0];\n const rightModelScreenPlane = scene.getChildren()[1];\n\n leftModelScreenPlane.shader.setScissor([vp[0], vp[1], x-vp[0], vp[3]]);\n rightModelScreenPlane.shader.setScissor([x, vp[1], vp[2] - (x-vp[0]), vp[3]]);\n }\n}\n","import {\n attachmentId,\n pixelBufferType,\n primitiveType,\n stencilFunc,\n stencilValue\n} from \"_src/engine/constants\";\n\nimport Pass from \"_src/render_graph/pass\";\nimport FrameBuffer from \"_src/engine/framebuffer\";\nimport Camera from \"_src/engine/camera\";\nimport objFactory from \"_src/engine/factories/object\";\nimport primitiveFactory from \"_src/engine/factories/primitive\";\nimport resourceManager from \"_src/render_graph/resource_manager\";\nimport ScreenShader from \"_src/shaders/screen/screen\";\nimport {screenUtils} from \"_src/client/utils\";\nimport OutlineShader from \"_src/shaders/outline/outline\";\n\nconst BORDER_COLOR = [1, 1, 1];\nconst BORDER_DEFAULT_TRANSPARENCY = 0.6;\nconst BORDER_SELECTED_TRANSPARENCY = 1.0;\nconst BORDER_DEFAULT_LINE_WIDTH = 1;\nconst BORDER_ACTIVE_LINE_WIDTH = 2;\n\nexport default class PhotosPass extends Pass {\n\n constructor(attachmentsStorage, camera) {\n\n super(attachmentsStorage);\n\n this.init(camera);\n\n }\n\n init(camera) {\n const screenCamera = new Camera();\n\n const drawScene = this._addScene(camera);\n const defaultMaskScene = this._addScene(screenCamera);\n const hoveredMaskScene = this._addScene(screenCamera);\n const activeMaskScene = this._addScene(screenCamera);\n const outlineScene = this._addScene(screenCamera);\n\n drawScene.clearedColor = false;\n drawScene.clearedDepth = false;\n drawScene.clearedStencil = false;\n\n defaultMaskScene.clearedColor = true;\n defaultMaskScene.clearedStencil = false;\n defaultMaskScene.clearedDepth = false;\n\n hoveredMaskScene.clearedColor = true;\n hoveredMaskScene.clearedStencil = false;\n hoveredMaskScene.clearedDepth = false;\n\n activeMaskScene.clearedColor = true;\n activeMaskScene.clearedStencil = false;\n activeMaskScene.clearedDepth = false;\n\n outlineScene.clearedColor = false;\n outlineScene.clearedDepth = false;\n outlineScene.clearedStencil = false;\n\n const screenChunk = primitiveFactory.create(primitiveType.SCREEN_QUAD);\n\n const defaultMaskShader = new ScreenShader({transparent : true, depthTest: false});\n defaultMaskShader.enableStencilTest();\n defaultMaskShader.setStencilFunction(stencilFunc.EQUAL);\n defaultMaskShader.setStencilReferenceValue(stencilValue.DEFAULT_BORDER);\n const defaultMaskScreenPlane = objFactory.createDrawable(defaultMaskShader);\n defaultMaskScreenPlane.addGeometryChunk(screenChunk);\n defaultMaskScreenPlane.setDiffuseColor(1.0, 1.0, 1.0);\n defaultMaskScene.add(defaultMaskScreenPlane);\n\n const hoveredMaskShader = new ScreenShader({transparent : true, depthTest: false});\n hoveredMaskShader.enableStencilTest();\n hoveredMaskShader.setStencilFunction(stencilFunc.EQUAL);\n hoveredMaskShader.setStencilReferenceValue(stencilValue.HOVERED_BORDER);\n const hoveredMaskScreenPlane = objFactory.createDrawable(hoveredMaskShader);\n hoveredMaskScreenPlane.addGeometryChunk(screenChunk);\n hoveredMaskScreenPlane.setDiffuseColor(1.0, 1.0, 1.0);\n hoveredMaskScene.add(hoveredMaskScreenPlane);\n\n const activeMaskShader = new ScreenShader({transparent : true, depthTest: false});\n activeMaskShader.enableStencilTest();\n activeMaskShader.setStencilFunction(stencilFunc.EQUAL);\n activeMaskShader.setStencilReferenceValue(stencilValue.ACTIVE_BORDER);\n const activeMaskScreenPlane = objFactory.createDrawable(activeMaskShader);\n activeMaskScreenPlane.addGeometryChunk(screenChunk);\n activeMaskScreenPlane.setDiffuseColor(1.0, 1.0, 1.0);\n activeMaskScene.add(activeMaskScreenPlane);\n\n const defaultWidth = BORDER_DEFAULT_LINE_WIDTH * screenUtils.getPixelRatio();\n const defaultOutlineShader = new OutlineShader({transparent : true,\n width: defaultWidth,\n depthTest: false,\n outlineOnly: true});\n\n const defaultOutlineScreenPlane = objFactory.createDrawable(defaultOutlineShader);\n defaultOutlineScreenPlane.addGeometryChunk(screenChunk);\n defaultOutlineScreenPlane.setDiffuseColor(...BORDER_COLOR);\n defaultOutlineScreenPlane.setOpacity(BORDER_DEFAULT_TRANSPARENCY);\n outlineScene.add(defaultOutlineScreenPlane);\n\n const hoveredOutlineShader = new OutlineShader({transparent : true,\n width: defaultWidth,\n depthTest: false,\n outlineOnly: true});\n const hoveredOutlineScreenPlane = objFactory.createDrawable(hoveredOutlineShader);\n hoveredOutlineScreenPlane.addGeometryChunk(screenChunk);\n hoveredOutlineScreenPlane.setDiffuseColor(...BORDER_COLOR);\n hoveredOutlineScreenPlane.setOpacity(BORDER_SELECTED_TRANSPARENCY);\n outlineScene.add(hoveredOutlineScreenPlane);\n\n const activeWidth = BORDER_ACTIVE_LINE_WIDTH * screenUtils.getPixelRatio();\n const activeOutlineShader = new OutlineShader({transparent : true,\n width: activeWidth,\n depthTest: false,\n outlineOnly: true});\n\n const activeOutlineScreenPlane = objFactory.createDrawable(activeOutlineShader);\n activeOutlineScreenPlane.addGeometryChunk(screenChunk);\n activeOutlineScreenPlane.setDiffuseColor(...BORDER_COLOR);\n activeOutlineScreenPlane.setOpacity(BORDER_SELECTED_TRANSPARENCY);\n outlineScene.add(activeOutlineScreenPlane);\n }\n\n update() {\n const drawScene = this.getScenes()[0];\n const defaultMaskScene = this.getScenes()[1];\n const hoveredMaskScene = this.getScenes()[2];\n const activeMaskScene = this.getScenes()[3];\n const outlineScene = this.getScenes()[4];\n\n const width = drawScene.camera.viewport[2];\n const height = drawScene.camera.viewport[3];\n\n const {drawFB, defaultMaskFB, hoveredMaskFB, activeMaskFB, outlineFB} = this.initFramebuffer(width, height);\n drawScene.setFramebuffer(drawFB);\n defaultMaskScene.setFramebuffer(defaultMaskFB);\n hoveredMaskScene.setFramebuffer(hoveredMaskFB);\n activeMaskScene.setFramebuffer(activeMaskFB);\n outlineScene.setFramebuffer(outlineFB);\n\n const defaultOutlineScreenPlane = outlineScene.getChildren()[0];\n const defaultMaskTexture = defaultMaskScene.getFramebuffer().colorAttachments[0];\n defaultOutlineScreenPlane.setTexture(defaultMaskTexture, 0);\n const hoveredOutlineScreenPlane = outlineScene.getChildren()[1];\n const hoveredMaskTexture = hoveredMaskScene.getFramebuffer().colorAttachments[0];\n hoveredOutlineScreenPlane.setTexture(hoveredMaskTexture, 0);\n const activeOutlineScreenPlane = outlineScene.getChildren()[2];\n const activeMaskTexture = activeMaskScene.getFramebuffer().colorAttachments[0];\n activeOutlineScreenPlane.setTexture(activeMaskTexture, 0);\n }\n\n initFramebuffer(width, height) {\n const colorTexture = this.attachmentsStorage[attachmentId.BASE_COLOR_TEXTURE];\n const depthStencil = this.attachmentsStorage[attachmentId.WORKSPACE_DEPTH_STENCIL];\n\n const defaultMaskTexture = resourceManager.initBuffer(pixelBufferType.T_RGBA,\n {width, height});\n const hoveredMaskTexture = resourceManager.initBuffer(pixelBufferType.T_RGBA,\n {width, height});\n const activeMaskTexture = resourceManager.initBuffer(pixelBufferType.T_RGBA,\n {width, height});\n\n const drawFB = new FrameBuffer([colorTexture], depthStencil);\n const defaultMaskFB = new FrameBuffer([defaultMaskTexture], depthStencil);\n const hoveredMaskFB = new FrameBuffer([hoveredMaskTexture], depthStencil);\n const activeMaskFB = new FrameBuffer([activeMaskTexture], depthStencil);\n const outlineFB = new FrameBuffer([colorTexture], null);\n\n return {drawFB, defaultMaskFB, hoveredMaskFB, activeMaskFB, outlineFB};\n }\n\n}\n","import Camera from \"_src/engine/camera\";\nimport renderer from \"_src/engine/renderer\";\nimport extensions from \"_src/engine/extensions\";\n\nimport MainPass from \"_src/render_graph/passes/main_pass\";\nimport InterfacePass from \"_src/render_graph/passes/interface_pass\";\nimport GridPass from \"_src/render_graph/passes/grid_pass\";\nimport MirrorPass from \"_src/render_graph/passes/mirror_pass\";\nimport ReadColorPass from \"_src/render_graph/passes/read_color_pass\";\nimport WireframePass from \"_src/render_graph/passes/wireframe_pass\";\nimport TransformPass from \"_src/render_graph/passes/transform_pass\";\nimport ViewCubePass from \"_src/render_graph/passes/viewcube_pass\";\nimport HighlightPass from \"_src/render_graph/passes/highlight_pass\";\nimport SelectionPass from \"_src/render_graph/passes/selection_pass\";\nimport AntialiasingPass from \"_src/render_graph/passes/antialiasing_pass\";\nimport LassoPass from \"_src/render_graph/passes/lasso_pass\";\nimport PostEffectPass from \"_src/render_graph/passes/post_effect_pass\";\nimport CopyPass from \"_src/render_graph/passes/copy_pass\";\n\nimport {attachmentId} from \"_src/engine/constants\";\nimport memoryProfiler from \"_src/engine/memory_profiler\";\nimport config from \"_src/config\";\nimport BackgroundPass from \"_src/render_graph/passes/background_pass\";\nimport MeasureLinesPass from \"_src/render_graph/passes/measure_lines_pass\";\nimport CompareDrawPass from \"_src/render_graph/passes/compare_draw_pass\";\nimport CompareMixPass from \"_src/render_graph/passes/compare_mix_pass\";\nimport PhotosPass from \"_src/render_graph/passes/photos_pass\";\nimport monitoring from \"_src/monitoring\";\n\nconst NULL_LINK = -1;\n\nconst BACKGROUND = 0;\nconst MAIN = 1;\nconst COMPARE_DRAW = 2;\nconst GRID = 3;\nconst WIREFRAME = 4;\nconst OUTLINE = 5;\nconst INTERFACE = 6;\nconst PHOTOS = 7;\nconst MEASURE_LINES = 8;\nconst MIRROR = 9;\nconst COPY = 10;\nconst COMPARE_MIX = 11;\nconst LASSO = 12;\nconst ANTIALIASING = 13;\nconst SELECTION = 14;\nconst READ_COLOR = 15;\nconst TRANSFORM = 16;\nconst POSTEFFECT = 17;\nconst VIEWCUBE = 18;\n\nexport class RenderGraph {\n\n constructor(isMain, cameraType) {\n\n this._isMain = isMain;\n this._nodes = [];\n this._attachmentsStorage = [];\n this._frameRequested = true;\n this._fullUpdate = false;\n\n const workspaceCamera = new Camera(cameraType);\n const gridCamera = isMain && config.recalculateInterfaceDepth ? new Camera() : workspaceCamera;\n const screenQuadCamera = new Camera();\n const workspaceCopyCamera = new Camera();\n const previewCamera = new Camera();\n\n const backgroundPass = new BackgroundPass(this._attachmentsStorage);\n const mainPass = new MainPass(this._attachmentsStorage, workspaceCamera);\n const compareDrawPass = new CompareDrawPass(this._attachmentsStorage, workspaceCamera);\n const gridPass = new GridPass(this._attachmentsStorage, gridCamera, workspaceCopyCamera);\n const wireframePass = new WireframePass(this._attachmentsStorage, screenQuadCamera);\n const outlinePass = new HighlightPass(this._attachmentsStorage, screenQuadCamera);\n const interfacePass = new InterfacePass(this._attachmentsStorage, gridCamera);\n const photosPass = new PhotosPass(this._attachmentsStorage, workspaceCamera);\n const measureLinesPass = new MeasureLinesPass(this._attachmentsStorage, gridCamera);\n const mirrorPass = new MirrorPass(this._attachmentsStorage, gridCamera);\n const copyPass = new CopyPass(this._attachmentsStorage);\n const compareMixPass = new CompareMixPass(this._attachmentsStorage);\n const selectionPass = new SelectionPass(this._attachmentsStorage, screenQuadCamera);\n const lassoPass = new LassoPass(this._attachmentsStorage, screenQuadCamera);\n const AAPass = new AntialiasingPass(this._attachmentsStorage, screenQuadCamera);\n const readColorPass = new ReadColorPass(this._attachmentsStorage, previewCamera);\n const transformPass = new TransformPass(this._attachmentsStorage, gridCamera, screenQuadCamera);\n const postEffectPass = new PostEffectPass(this._attachmentsStorage);\n const viewcubePass = new ViewCubePass(this._attachmentsStorage);\n\n this._nodes.push(backgroundPass, mainPass, compareDrawPass, gridPass, wireframePass, outlinePass, interfacePass, photosPass,\n measureLinesPass, mirrorPass, copyPass, compareMixPass, lassoPass, AAPass, selectionPass, readColorPass, transformPass,\n postEffectPass, viewcubePass);\n this._registerScenes();\n\n this._start();\n\n this.getWorkspaceScene().updateLights(config.lights);\n this.getSurfelsAdditiveScene().updateLights(config.lights);\n this.getInterfaceScene().updateLights(config.widgetsLights);\n }\n\n requestFrame(fullUpdate = true) {\n this._frameRequested = true;\n this._fullUpdate = this._fullUpdate || fullUpdate;\n }\n\n isFrameRequested() {\n return this._frameRequested;\n }\n\n render(dt = 0) {\n if (this._fullUpdate) monitoring.reportFrameTime(dt);\n\n const firstPass = this._fullUpdate ? BACKGROUND : COPY;\n for (let i = firstPass; i < this._nodes.length; ++i) {\n\n const pass = this._nodes[i];\n\n if (pass.enabled) {\n pass.render(!this._isMain);\n }\n\n }\n\n this._frameRequested = false;\n this._fullUpdate = false;\n }\n\n getPass(index) {\n return this._nodes[index];\n }\n\n getNodes() {\n return this._nodes;\n }\n\n setEnabled(passID, enabled) {\n\n const pass = this.getPass(passID);\n\n if (pass.enabled === enabled) {\n return;\n }\n\n const mainPass = this.getPass(MAIN);\n const compareDrawPass = this.getPass(COMPARE_DRAW);\n\n switch(passID) {\n case WIREFRAME:\n mainPass.enableTriangleIDTexture = enabled;\n this._refreshPass(MAIN);\n compareDrawPass.enableTriangleIDTexture = enabled;\n this._refreshPass(COMPARE_DRAW);\n break;\n }\n\n if (enabled) {\n this._enablePass(passID);\n } else {\n this._disablePass(passID);\n }\n\n switch(passID) {\n case COMPARE_DRAW:\n this._refreshPass(WIREFRAME);\n break;\n case GRID:\n this._refreshPass(INTERFACE);\n break;\n }\n\n }\n\n checkEnabled(passID) {\n\n const pass = this.getPass(passID);\n return pass.enabled;\n\n }\n\n getInterfaceScene() {\n return this._nodes[INTERFACE].getSecondScene();\n }\n\n getPostBlendingInterfaceScene() {\n return this._nodes[INTERFACE].getScenes()[2];\n }\n\n getWorkspaceScene() {\n return this._nodes[MAIN].getMainScene();\n }\n\n getPhotosScene() {\n return this._nodes[PHOTOS].getMainScene();\n }\n\n getCadsAdditionalScene() {\n return this._nodes[MAIN].getScenes()[8];\n }\n\n getSurfelsDepthScene() {\n return this._nodes[MAIN].getScenes()[3];\n }\n\n getSurfelsAdditiveScene() {\n return this._nodes[MAIN].getScenes()[4];\n }\n\n getPostBlendingScene() {\n return this._nodes[MAIN].getPostBlendingScene();\n }\n\n setSurfelsBlendingEnabled(enabled) {\n this._nodes[MAIN].getScenes()[3].setEnabled(enabled);\n this._nodes[MAIN].getScenes()[4].setEnabled(enabled);\n this._nodes[MAIN].getScenes()[5].setEnabled(enabled);\n }\n\n setPostBlendingEnabled(enabled) {\n this._nodes[MAIN].getScenes()[6].setEnabled(enabled);\n this._nodes[MAIN].getScenes()[7].setEnabled(enabled);\n }\n\n getTransformScene() {\n return this._nodes[TRANSFORM].getSecondScene();\n }\n\n getOutputTexture() {\n return this._attachmentsStorage[attachmentId.OUTPUT_COLOR_TEXTURE];\n }\n\n resize(width, height) {\n for (let attachment of this._attachmentsStorage) {\n if (attachment) {\n attachment.resize(width, height);\n }\n }\n for (let node of this._nodes) {\n node.resize(width, height);\n }\n }\n\n getObjectIDBuffer(viewport) {\n const stage = 9; // number of the scene\n const pass = this.getPass(MAIN);\n return this._getBuffer(pass, stage, viewport);\n }\n\n getGeneralPurposeBuffer(viewport) {\n const stage = 10; // number of the scene\n const pass = this.getPass(MAIN);\n return this._getBuffer(pass, stage, viewport);\n }\n\n getSectionAnalysisBuffer(viewport) {\n const stage = 0; // number of the scene\n const pass = this.getPass(INTERFACE);\n return this._getBuffer(pass, stage, viewport);\n }\n\n _getBuffer(pass, stage, viewport) {\n this.requestFrame();\n return pass.readPixels(stage, viewport);\n }\n\n _start() {\n\n const mainPass = this.getPass(MAIN);\n\n mainPass.enableColorTexture = true;\n\n this._enablePass(BACKGROUND);\n this._enablePass(MAIN);\n this._enablePass(INTERFACE);\n this._enablePass(COPY);\n\n if (config.enableAntialiasing) {\n this._enablePass(ANTIALIASING);\n }\n\n }\n\n _registerScenes() {\n for (let i=0; i= 0; --i) {\n\n const node = this._nodes[i];\n\n if (node.enabled) {\n return i;\n }\n\n }\n\n return NULL_LINK;\n\n }\n\n _refreshPass(passID) {\n\n let pass = this.getPass(passID);\n pass.update();\n\n }\n\n _enablePass(passID) {\n\n const pass = this.getPass(passID);\n pass.enable();\n pass.update();\n\n }\n\n _disablePass(passID) {\n\n const pass = this.getPass(passID);\n pass.disable();\n\n }\n\n cleanup() {\n\n for (let i = 0; i < this._nodes.length; ++i) {\n this._nodes[i].disable();\n this._nodes[i].destroy();\n }\n\n this._nodes.length = 0;\n this._attachmentsStorage.length = 0;\n\n }\n\n}\n\nexport default {\n // these ids have to correspond with passes' positions in the \"nodes\" storage\n BACKGROUND,\n MAIN,\n COMPARE_DRAW,\n GRID,\n OUTLINE,\n WIREFRAME,\n INTERFACE,\n PHOTOS,\n MEASURE_LINES,\n MIRROR,\n COPY,\n COMPARE_MIX,\n READ_COLOR,\n TRANSFORM,\n SELECTION,\n LASSO,\n VIEWCUBE,\n ANTIALIASING,\n POSTEFFECT,\n\n cleanup() {\n renderer.cleanup();\n extensions.cleanup();\n },\n\n getPassName(passID) {\n\n switch(passID) {\n case this.MAIN:\n return \"MAIN\";\n case this.COMPARE_DRAW:\n return \"COMPARE_DRAW\";\n case this.GRID:\n return \"GRID\";\n case this.OUTLINE:\n return \"OUTLINE\";\n case this.WIREFRAME:\n return \"WIREFRAME\";\n case this.INTERFACE:\n return \"INTERFACE\";\n case this.PHOTOS:\n return \"PHOTOS\";\n case this.MEASURE_LINES:\n return this.MEASURE_LINES;\n case this.MIRROR:\n return \"MIRROR\";\n case this.COPY:\n return \"COPY\";\n case this.COMPARE_MIX:\n return \"COMPARE_MIX\";\n case this.READ_COLOR:\n return \"READ_COLOR\";\n case this.TRANSFORM:\n return \"TRANSFORM\";\n case this.SELECTION:\n return \"SELECTION\";\n case this.LASSO:\n return \"LASSO\";\n case this.VIEWCUBE:\n return \"VIEWCUBE\";\n case this.ANTIALIASING:\n return \"ANTIALIASING\";\n case this.POSTEFFECT:\n return \"POSTEFFECT\";\n }\n\n}\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ReactCSS = exports.loop = exports.handleActive = exports.handleHover = exports.hover = undefined;\n\nvar _flattenNames = require('./flattenNames');\n\nvar _flattenNames2 = _interopRequireDefault(_flattenNames);\n\nvar _mergeClasses = require('./mergeClasses');\n\nvar _mergeClasses2 = _interopRequireDefault(_mergeClasses);\n\nvar _autoprefix = require('./autoprefix');\n\nvar _autoprefix2 = _interopRequireDefault(_autoprefix);\n\nvar _hover2 = require('./components/hover');\n\nvar _hover3 = _interopRequireDefault(_hover2);\n\nvar _active = require('./components/active');\n\nvar _active2 = _interopRequireDefault(_active);\n\nvar _loop2 = require('./loop');\n\nvar _loop3 = _interopRequireDefault(_loop2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.hover = _hover3.default;\nexports.handleHover = _hover3.default;\nexports.handleActive = _active2.default;\nexports.loop = _loop3.default;\nvar ReactCSS = exports.ReactCSS = function ReactCSS(classes) {\n for (var _len = arguments.length, activations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n activations[_key - 1] = arguments[_key];\n }\n\n var activeNames = (0, _flattenNames2.default)(activations);\n var merged = (0, _mergeClasses2.default)(classes, activeNames);\n return (0, _autoprefix2.default)(merged);\n};\n\nexports.default = ReactCSS;","/**\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","//synchronized with backend type OBJECT_TYPES: https://github.com/ArtecGroup/artec_cloud/blob/master/app/models/version.rb\nexport enum ObjectItemType {\n Scan = 1,\n Model = 2,\n Group = 4,\n Cad = 6,\n PointCloud = 7,\n PhotoSet = 8,\n}\nexport enum MeasureItemType {\n Distance,\n SectionGroup,\n DistanceMap,\n}\n//synchronized with backend type CAD_OBJECT_TYPES: https://github.com/ArtecGroup/artec_cloud/blob/master/app/models/version.rb\nexport enum CadType {\n Model = 1,\n Cylinder = 2,\n Cone = 3,\n TruncatedCone = 4,\n Sphere = 5,\n Plane = 6,\n Torus = 7,\n Freeform = 8,\n Undefined = 9,\n}\nexport enum PhotoState {\n Default,\n Hovered,\n Active,\n}\n\nexport interface IBaseItem {\n id: string;\n uuid: string;\n name: string;\n visible: boolean;\n}\nexport interface IGroupableItem extends IBaseItem {\n groupID?: string; //missing groupID means than item is not grouped\n}\nexport interface IGroupItem extends IGroupableItem {\n type: ObjectItemType.Group;\n color: string;\n}\nexport interface IModelItem extends IGroupableItem {\n type: ObjectItemType.Model;\n\n color: string;\n\n polygons: number;\n vertices: number;\n scanner?: string; //scanner could be unknown\n size: number;\n isHD: boolean;\n textured: boolean;\n}\nexport interface IScanItem extends IGroupableItem {\n color: string;\n\n polygons: number;\n vertices: number;\n scanner?: string; //scanner could be unknown\n frames: number;\n texturedFrames: number;\n size: number;\n\n isHD: boolean;\n hasrawgeometry: boolean;\n targetRawScan?: string; //only if has raw geometry\n\n globalapplied: boolean;\n maxError?: number; //registration error is absent if globalapplied: false\n}\nexport interface ISimpleScanItem extends IScanItem {\n type: ObjectItemType.Scan;\n}\nexport interface IPointCloudScanItem extends IScanItem {\n type: ObjectItemType.PointCloud;\n}\nexport interface IBaseCadItem extends IGroupableItem {\n type: ObjectItemType.Cad;\n\n color: string;\n\n polygons: number;\n vertices: number;\n size: number;\n}\nexport interface ICadModel extends IBaseCadItem {\n cadType: CadType.Model;\n\n facesCount: number;\n}\nexport interface ICadCylinder extends IBaseCadItem {\n cadType: CadType.Cylinder;\n\n radius: number;\n height: number;\n}\nexport interface ICadCone extends IBaseCadItem {\n cadType: CadType.Cone;\n\n radius: number;\n height: number;\n angle: number;\n}\nexport interface ICadTruncatedCone extends IBaseCadItem {\n cadType: CadType.TruncatedCone;\n\n smallRadius: number;\n largeRadius: number;\n height: number;\n angle: number;\n}\nexport interface ICadSphere extends IBaseCadItem {\n cadType: CadType.Sphere;\n\n radius: number;\n}\nexport interface ICadPlane extends IBaseCadItem {\n cadType: CadType.Plane;\n}\nexport interface ICadTorus extends IBaseCadItem {\n cadType: CadType.Torus;\n\n majorRadius: number;\n minorRadius: number;\n}\nexport interface ICadFreeform extends IBaseCadItem {\n cadType: CadType.Freeform;\n\n uOrder: number;\n vOrder: number;\n uPointsCount: number;\n vPointsCount: number;\n}\nexport interface ICadUndefined extends IBaseCadItem {\n cadType: CadType.Undefined;\n}\n\nexport type PhotoDescriptor = {\n id: string,\n name: string,\n state: PhotoState;\n size: number;\n camera?: string; //could be unknown\n focalLength?: number; //could be unknown\n\n registered: boolean;\n regError?: number; //field is present only for registered photo\n}\nexport interface IPhotoSetItem extends IGroupableItem {\n type: ObjectItemType.PhotoSet;\n\n registered: boolean;\n //fields are present only for registered photoSets\n registrationTarget?: string; //target can be absent without the reason even for registered photoSet\n maxError?: number;\n failedPhotos?: number;\n\n totalPhotos: number;\n totalSize: number;\n camera?: string; //could be unknown\n focalLength?: number //could be unknown\n\n photos?: PhotoDescriptor[]; //this field will be uninitialized until photoSet becomes visible\n}\nexport interface IBaseMeasureItem extends IBaseItem {\n affiliation?: string[]; //affiliation objects can be removed from project\n}\nexport interface IDistanceMeasure extends IBaseMeasureItem {\n type: MeasureItemType.Distance;\n\n selected: boolean;\n value?: number; //this field could be uninitialized until measure becomes visible (only for old projects)\n}\n\nexport type ContourDescriptor = {\n visible: boolean;\n selected: boolean;\n\n //these fields could be uninitialized until section group becomes visible (only for old projects)\n area?: number;\n perimeter?: number;\n}\nexport type SectionDescriptor = {\n visible: boolean;\n selected: boolean;\n contours: ContourDescriptor[];\n\n //these fields could be uninitialized until section group becomes visible (only for old projects)\n volume?: number;\n surfaceArea?: number;\n}\nexport interface ISectionGroupMeasure extends IBaseMeasureItem {\n type: MeasureItemType.SectionGroup;\n\n selected: boolean;\n planes: number;\n distance: number;\n direction: string;\n sections: SectionDescriptor[];\n}\n\nexport interface IDistanceMapMeasure extends IBaseMeasureItem {\n type: MeasureItemType.DistanceMap;\n\n reference?: string; //referenced object can be removed from project\n searchDistance: number;\n RMSD: number;\n expRange: number;\n expValue: number;\n meanAbsDeviation: number;\n meanAbsDistance: number;\n}\n\nexport type ICadItem = ICadModel | ICadCylinder | ICadCone | ICadTruncatedCone | ICadSphere | ICadPlane | ICadTorus | ICadFreeform | ICadUndefined;\nexport type IObjectItem = IGroupItem | IModelItem | ISimpleScanItem | IPointCloudScanItem | ICadItem | IPhotoSetItem;\nexport type IMeasureItem = IDistanceMeasure | ISectionGroupMeasure | IDistanceMapMeasure;\nexport type IOrderingItem = {\n id: string;\n}\n\nexport interface IProjectContent {\n objects: IObjectItem[];\n measures: IMeasureItem[];\n ordering: IOrderingItem[];\n\n clone(): IProjectContent;\n}\n","export default function _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}","/**\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","import output from \"_src/engine/output\";\nimport workerPool from \"_src/engine/worker_pool\";\nimport { messageType, getWorkerType, resultStatus } from \"_src/engine/ipc.js\";\nimport { Transfer } from \"threads\"\n\nconst _workersTaskBoard = {};\n\nlet _uniqueID = 0;\n\nexport default {\n\n INVALID_ID : -1,\n\n _queue : {},\n _verbose : false,\n\n _pop : async function(type) {\n\n const workerType = getWorkerType(type);\n\n const queue = this._queue[workerType];\n\n if (queue.length === 0) {\n return;\n }\n\n const availableWorker = workerPool.getWorker(type);\n if (!availableWorker) {\n setTimeout(() => {this._pop(type)}, 1000);\n return;\n }\n\n const worker = await availableWorker.spawnPromise;\n if (!worker) {\n setTimeout(() => {this._pop(type)}, 1000);\n return;\n }\n\n if (queue.length === 0) {\n return;\n }\n\n const task = queue.pop();\n\n const message = task.message;\n const transfer = task.transfer;\n\n const resolve = task.resolve;\n const reject = task.reject;\n\n this._setWorkerTask(worker, task);\n\n const result = await worker.processMessage(Transfer(message, transfer));\n\n this._onMessage(availableWorker, message.type, result, resolve, reject, task.tid);\n\n },\n\n _push : function(task) {\n\n const type = task.message.type;\n const workerType = getWorkerType(type);\n\n if (!this._queue[workerType]) {\n this._queue[workerType] = [];\n }\n\n this._queue[workerType].push(task);\n\n },\n\n _setWorkerTask : function(worker, task) {\n _workersTaskBoard[task.tid] = { worker, task };\n },\n\n _cleanupWorkerTask : function(tid) {\n delete _workersTaskBoard[tid];\n },\n\n _onMessage : function(workerWrapper, originType, data, resolve, reject, tid) {\n\n const type = data.type;\n\n if (type == messageType.ERROR_CODE || type == messageType.TERMINATE) {\n\n if (reject) {\n reject({ code : data.status, message : data.message });\n }\n\n } else {\n\n if (this._verbose) {\n output.log(data.message, output.INDIGO);\n }\n\n if (resolve) {\n resolve({ type, data });\n }\n\n }\n\n workerPool.returnWorker(originType, workerWrapper);\n\n this._cleanupWorkerTask(tid);\n\n this._pop(originType);\n\n },\n\n sendMessage : function(message, transfer = [], tid) {\n\n return new Promise((resolve, reject) => {\n\n const task = {\n message : message,\n transfer : transfer,\n resolve : resolve,\n reject : reject,\n tid : tid\n };\n\n const type = message.type;\n\n this._push(task);\n this._pop(type);\n\n });\n\n },\n\n terminateByType(workerType) {\n\n const queue = this._queue[workerType]\n if (queue) {\n for (const task of queue) {\n this.terminateByID(task.tid);\n }\n }\n\n },\n\n terminateByID(tid) {\n for (const type in this._queue) {\n const queue = this._queue[type];\n for (let i = 0; i < queue.length; ++i) {\n if (queue[i].tid === tid) {\n queue[i].reject({ code : resultStatus.TERMINATED, message : \"Terminated\" });\n queue.splice(i, 1);\n return;\n }\n }\n }\n const work = _workersTaskBoard[tid];\n if (!work) {\n return;\n }\n work.task.reject({ code : resultStatus.TERMINATED, message : \"Terminated\" });\n const message = {\n type : messageType.TERMINATE\n };\n work.worker.processMessage(Transfer(message, []));\n this._cleanupWorkerTask(tid);\n },\n\n checkWorkersSupport() {\n if (typeof window !== \"undefined\") {\n return typeof window.Worker !== \"undefined\"\n }\n // NOTE: we consider worker-threads to be supported in nodejs. Node >= v10.5.0 is required\n return true;\n },\n\n generateUniqueID() {\n return ++_uniqueID;\n }\n\n}\n","import GL from \"_src/engine/gl\";\nimport {pixelBufferType, RBIntFormat} from \"_src/engine/constants\";\nimport resourceManager from \"_src/render_graph/resource_manager\";\nimport glTypes from \"_src/engine/gl_types\";\n\nlet _cache = {};\nlet _webgl1Dictionary = {};\nlet _webgl2Dictionary = {};\n\nlet _maxSamples;\nlet _multisamplingSupported;\n\nfunction webgl1Get(name) {\n\n const gl = GL.getContext();\n\n switch(name) {\n case \"OES_vertex_array_object\":\n return getVertexArrayObject(gl);\n case \"WEBGL_draw_buffers\":\n return getMultipleRenderTargets(gl);\n case \"ANGLE_instanced_arrays\":\n return getInstancedArrays(gl);\n case \"EXT_texture_filter_anisotropic\":\n return getTextureFilterAnisotropic(gl);\n case \"EXT_blend_minmax\":\n return getMinMaxBlending(gl);\n default:\n if (name in _webgl1Dictionary) {\n const originalName = _webgl1Dictionary[name];\n return gl.getExtension(originalName);\n } else {\n return gl.getExtension(name);\n }\n }\n\n}\n\nfunction webgl2Get(name) {\n\n const gl = GL.getContext();\n\n switch(name) {\n case \"OES_vertex_array_object\":\n case \"OES_element_index_uint\":\n case \"OES_standard_derivatives\":\n case \"WEBGL_draw_buffers\":\n case \"ANGLE_instanced_arrays\":\n case \"EXT_blend_minmax\":\n case \"EXT_frag_depth\":\n return gl;\n case \"EXT_texture_filter_anisotropic\":\n return getTextureFilterAnisotropic(gl);\n default:\n if (name in _webgl2Dictionary) {\n const originalName = _webgl2Dictionary[name];\n return gl.getExtension(originalName);\n } else {\n return gl.getExtension(name);\n }\n }\n\n}\n\nfunction getVertexArrayObject(gl) {\n\n const ext = gl.getExtension(\"OES_vertex_array_object\");\n\n if (ext == null) {\n return ext;\n }\n\n const extWrapper = {\n bindVertexArray: function(vao) {\n ext.bindVertexArrayOES(vao);\n },\n createVertexArray: function() {\n return ext.createVertexArrayOES();\n },\n deleteVertexArray: function(vao) {\n ext.deleteVertexArrayOES(vao);\n },\n isVertexArray: function(vao) {\n return ext.isVertexArrayOES(vao);\n }\n };\n\n return extWrapper;\n}\n\nfunction getMultipleRenderTargets(gl) {\n\n const ext = gl.getExtension(\"WEBGL_draw_buffers\");\n\n if (ext == null) {\n return ext;\n }\n\n const extWrapper = {\n drawBuffers: function(targets) {\n ext.drawBuffersWEBGL(targets);\n },\n COLOR_ATTACHMENT0 : ext.COLOR_ATTACHMENT0_WEBGL,\n COLOR_ATTACHMENT1 : ext.COLOR_ATTACHMENT1_WEBGL,\n COLOR_ATTACHMENT2 : ext.COLOR_ATTACHMENT2_WEBGL,\n COLOR_ATTACHMENT3 : ext.COLOR_ATTACHMENT3_WEBGL,\n MAX_DRAW_BUFFERS_WEBGL : ext.MAX_DRAW_BUFFERS_WEBGL,\n };\n\n return extWrapper;\n\n}\n\nfunction getInstancedArrays(gl) {\n\n const ext = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n if (ext == null) {\n return ext;\n }\n\n const extWrapper = {\n drawElementsInstanced: function(mode, count, type, offset, primCount) {\n ext.drawElementsInstancedANGLE(mode, count, type, offset, primCount);\n },\n vertexAttribDivisor: function(loc, div) {\n ext.vertexAttribDivisorANGLE(loc, div);\n },\n drawArraysInstanced: function(mode, first, count, primCount) {\n ext.drawArraysInstancedANGLE(mode, first, count, primCount);\n }\n };\n\n return extWrapper;\n\n}\n\nfunction getTextureFilterAnisotropic(gl) {\n return gl.getExtension(\"EXT_texture_filter_anisotropic\") ||\n gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\") ||\n gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\");\n}\n\nfunction getMinMaxBlending(gl) {\n\n const ext = gl.getExtension(\"EXT_blend_minmax\");\n\n if (ext == null) {\n return ext;\n }\n\n const extWrapper = {\n MIN : ext.MIN_EXT,\n MAX : ext.MAX_EXT\n };\n\n return extWrapper;\n\n}\n\nexport default {\n\n get(name) {\n\n if (name in _cache) {\n return _cache[name];\n }\n\n let ext = null;\n\n if (GL.checkWebGL2()) {\n ext = webgl2Get(name);\n } else {\n ext = webgl1Get(name);\n }\n\n _cache[name] = ext;\n\n return ext;\n\n },\n\n checkDepthWrite() {\n return GL.checkWebGL2() || Boolean(_cache[\"EXT_frag_depth\"]) || this.get(\"EXT_frag_depth\") !== null;\n },\n\n checkDepthRecalc() {\n return GL.checkWebGL2() || Boolean(_cache[\"WEBGL_depth_texture\"]) ||\n this.checkDepthWrite() && this.get(\"WEBGL_depth_texture\") != null;\n },\n\n maxSamplesCount() {\n if (_maxSamples === undefined) {\n const gl = GL.getContext();\n const samplesReturned = GL.checkWebGL2() ? gl.getParameter(gl.MAX_SAMPLES) : 1;\n _maxSamples = samplesReturned ? samplesReturned : 1;\n }\n return _maxSamples;\n },\n\n isMultisamplingSupported() {\n if (_multisamplingSupported === undefined) {\n const gl = GL.getContext();\n const samplesCount = this.maxSamplesCount();\n\n if (GL.checkWebGL2() && samplesCount > 1) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const mSamplingTexture = resourceManager.initBuffer(pixelBufferType.RB_RGBA, {\n width: 1,\n height: 1,\n format: RBIntFormat.R8G8B8A8,\n samples: samplesCount\n });\n gl.bindRenderbuffer(gl.RENDERBUFFER, mSamplingTexture.pixelBuffer);\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, samplesCount, glTypes.getRBInternalFormat(RBIntFormat.R8G8B8A8), 1, 1);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, mSamplingTexture.pixelBuffer);\n\n const mSamplingDepthBuffer = resourceManager.initBuffer(pixelBufferType.RB_DEPTH,\n {width: 1, height: 1, format: RBIntFormat.D16U, samples: samplesCount});\n gl.bindRenderbuffer(gl.RENDERBUFFER, mSamplingDepthBuffer.pixelBuffer);\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, samplesCount, glTypes.getRBInternalFormat(RBIntFormat.D16U), 1, 1);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, mSamplingDepthBuffer.pixelBuffer);\n\n const framebufferStatus = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n mSamplingTexture.cleanup();\n mSamplingDepthBuffer.cleanup();\n gl.deleteFramebuffer(fbo);\n\n _multisamplingSupported = framebufferStatus === gl.FRAMEBUFFER_COMPLETE;\n } else {\n _multisamplingSupported = false;\n }\n }\n\n return _multisamplingSupported;\n },\n\n cleanup() {\n\n _cache = {};\n _webgl1Dictionary = {};\n _webgl2Dictionary = {};\n\n }\n\n}\n","import {MAX_UINT8_ELEMS, MAX_UINT16_ELEMS, MAX_UINT32_ELEMS, bufferType} from \"_src/engine/constants\";\n\nconst arrayPool = [];\n\nexport default {\n\n maxUintArrayValue(typedArray) {\n\n if (typedArray instanceof Uint32Array) {\n return MAX_UINT32_ELEMS;\n\n } else if (typedArray instanceof Uint16Array) {\n return MAX_UINT16_ELEMS;\n\n } else if (typedArray instanceof Uint8Array) {\n return MAX_UINT8_ELEMS;\n }\n\n return 0;\n\n },\n\n uintArrayType(typedArray, elements=1) {\n\n if (typedArray instanceof Uint32Array) {\n\n switch (elements) {\n case 3:\n return bufferType.UI32_3;\n case 2:\n return bufferType.UI32_2;\n default:\n return bufferType.UI32_1;\n }\n\n } else if (typedArray instanceof Uint16Array) {\n\n switch (elements) {\n case 3:\n return bufferType.UI16_3;\n case 2:\n return bufferType.UI16_2;\n default:\n return bufferType.UI16_1;\n }\n\n } else if (typedArray instanceof Uint8Array) {\n\n switch (elements) {\n case 3:\n return bufferType.UI8_3;\n case 2:\n return bufferType.UI8_2;\n default:\n return bufferType.UI8_1;\n }\n\n }\n\n return null;\n\n },\n\n uintArrayTypeByMaxValue(maxValue) {\n\n if (maxValue <= MAX_UINT8_ELEMS) {\n return Uint8Array;\n\n } else if (maxValue <= MAX_UINT16_ELEMS) {\n return Uint16Array;\n\n } else {\n return Uint32Array;\n }\n\n },\n\n createUintArrayByValueLength(maxValue, length) {\n\n if (maxValue <= MAX_UINT8_ELEMS) {\n return new Uint8Array(length);\n\n } else if (maxValue <= MAX_UINT16_ELEMS) {\n return new Uint16Array(length);\n\n } else {\n return new Uint32Array(length);\n }\n\n },\n\n createUintArrayByValueData(maxValue, data) {\n\n if (maxValue <= MAX_UINT8_ELEMS) {\n return new Uint8Array(data);\n\n } else if (maxValue <= MAX_UINT16_ELEMS) {\n return new Uint16Array(data);\n\n } else {\n return new Uint32Array(data);\n }\n\n },\n\n getArrayBuffer(nbBytes) {\n\n for (let i = 0; i < arrayPool.length; ++i) {\n\n if (arrayPool[i].byteLength === nbBytes) {\n return arrayPool.splice(i, 1)[0];\n }\n\n }\n\n return new ArrayBuffer(nbBytes);\n\n },\n\n returnArrayBuffer(buffer) {\n arrayPool.push(buffer);\n },\n\n castBuffer : function (buffer, type) {\n\n switch (type) {\n case bufferType.F32_1:\n case bufferType.F32_2:\n case bufferType.F32_3:\n case bufferType.F32_4:\n return new Float32Array(buffer);\n case bufferType.UI8_1:\n case bufferType.UI8_2:\n case bufferType.UI8_3:\n case bufferType.UI8_4:\n return new Uint8Array(buffer);\n case bufferType.UI16_1:\n case bufferType.UI16_2:\n case bufferType.UI16_3:\n return new Uint16Array(buffer);\n case bufferType.UI32_1:\n case bufferType.UI32_2:\n case bufferType.UI32_3:\n return new Uint32Array(buffer);\n case bufferType.I8_1:\n case bufferType.I8_2:\n case bufferType.I8_3:\n return new Int8Array(buffer);\n case bufferType.I16_1:\n case bufferType.I16_2:\n case bufferType.I16_3:\n return new Int16Array(buffer);\n case bufferType.I32_1:\n case bufferType.I32_2:\n case bufferType.I32_3:\n return new Int32Array(buffer);\n default:\n throw \"Unsupported buffer type.\";\n }\n\n },\n\n getBytesPerElement : function (type) {\n\n switch (type) {\n case bufferType.F32_1:\n case bufferType.F32_2:\n case bufferType.F32_3:\n case bufferType.F32_4:\n return Float32Array.BYTES_PER_ELEMENT;\n case bufferType.UI8_1:\n case bufferType.UI8_2:\n case bufferType.UI8_3:\n case bufferType.UI8_4:\n return Uint8Array.BYTES_PER_ELEMENT;\n case bufferType.UI16_1:\n case bufferType.UI16_2:\n case bufferType.UI16_3:\n return Uint16Array.BYTES_PER_ELEMENT;\n case bufferType.UI32_1:\n case bufferType.UI32_2:\n case bufferType.UI32_3:\n return Uint32Array.BYTES_PER_ELEMENT;\n case bufferType.I8_1:\n case bufferType.I8_2:\n case bufferType.I8_3:\n return Int8Array.BYTES_PER_ELEMENT;\n case bufferType.I16_1:\n case bufferType.I16_2:\n case bufferType.I16_3:\n return Int16Array.BYTES_PER_ELEMENT;\n case bufferType.I32_1:\n case bufferType.I32_2:\n case bufferType.I32_3:\n return Int32Array.BYTES_PER_ELEMENT;\n default:\n throw \"Unsupported buffer type.\";\n }\n\n },\n\n getNumElements : function (type) {\n\n switch (type) {\n case bufferType.F32_1:\n case bufferType.UI8_1:\n case bufferType.I8_1:\n case bufferType.UI16_1:\n case bufferType.I16_1:\n case bufferType.UI32_1:\n case bufferType.I32_1:\n return 1;\n case bufferType.F32_2:\n case bufferType.UI8_2:\n case bufferType.I8_2:\n case bufferType.UI16_2:\n case bufferType.I16_2:\n case bufferType.UI32_2:\n case bufferType.I32_2:\n return 2;\n case bufferType.F32_3:\n case bufferType.UI8_3:\n case bufferType.I8_3:\n case bufferType.UI16_3:\n case bufferType.I16_3:\n case bufferType.UI32_3:\n case bufferType.I32_3:\n return 3;\n case bufferType.F32_4:\n case bufferType.UI8_4:\n return 4;\n default:\n throw \"Unsupported buffer type.\";\n }\n\n },\n\n arrayToBitArray(array) {\n const bitArray = new Uint8Array(Math.ceil(array.length/8));\n\n for (let i = 0; i 0) {\n bitArray[i/8|0] |= 1 << i % 8;\n }\n }\n\n return bitArray;\n },\n\n bitArrayToArray(bitArray) {\n const array = new Uint8Array(bitArray.length * 8);\n\n for (let i=0; i 0) {\n array[i] = 1;\n }\n }\n\n return array;\n },\n\n shuffle(array) {\n for (let i = array.length - 1; i > 0; --i) {\n const j = Math.floor(Math.random() * (i + 1));\n const x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n }\n\n}\n","import { memoryType } from \"_src/engine/constants\";\nimport output from \"_src/engine/output\";\nimport app_state from \"_src/app_state\";\nimport renderGraph from \"_src/render_graph/render_graph\";\nimport events from \"_src/engine/events\";\n\nclass Statistic {\n constructor() {\n this.gpu = {\n geometry: {count: 0, size: 0},\n textures: {count: 0, size: 0},\n fbo: {count: 0, size: 0},\n };\n\n this.cpu = {\n geometry: {count: 0, size: 0},\n };\n\n this.registeredObjects = new WeakMap();\n }\n\n getReport() {\n\n let total = this.cpu.geometry.count + this.gpu.geometry.count + this.gpu.textures.count + this.gpu.fbo.count;\n\n if (total == 0) {\n return null;\n }\n\n let report = {};\n\n report[\"Cpu geometry count\"] = {\n count : this.cpu.geometry.count,\n memory : getReadableMemoryStr(this.cpu.geometry.size)\n };\n\n report[\"Gpu geometry count\"] = {\n count : this.gpu.geometry.count,\n memory : getReadableMemoryStr(this.gpu.geometry.size)\n };\n\n report[\"Gpu textures count\"] = {\n count : this.gpu.textures.count,\n memory : getReadableMemoryStr(this.gpu.textures.size)\n };\n\n report[\"Gpu framebuffers attachments count\"] = {\n count : this.gpu.fbo.count,\n memory : getReadableMemoryStr(this.gpu.fbo.size)\n };\n\n report[\"Gpu objects count\"] = {\n count : this.gpu.geometry.count + this.gpu.textures.count + this.gpu.fbo.count,\n memory : getReadableMemoryStr(this.gpu.geometry.size + this.gpu.textures.size + this.gpu.fbo.size)\n };\n\n return report;\n }\n}\n\nconst REPORT_INTERVAL = 0.25;\n\nlet _lastReportTime = 0;\nlet _currentRenderGraphId = 0;\n\nconst _renderGraphsId = new WeakMap();\nconst _scenes = new WeakMap();\nconst _textureIsAttachment = new WeakSet();\nconst _objectToStatistics = new WeakMap();\n\nconst _reportMemUsage = true;\nconst _reportBandwidth = false;\n\nconst _globalStat = new Statistic();\nconst _detailedStat = [];\n\nexport default {\n\n registerScene(scene, renderGraph, passId) {\n let renderGraphId = _renderGraphsId.get(renderGraph);\n if (renderGraphId === undefined) {\n renderGraphId = _currentRenderGraphId++;\n _renderGraphsId.set(renderGraph, renderGraphId);\n }\n\n _scenes.set(scene, {renderGraphId, passId});\n\n let renderGraphStat = _detailedStat[renderGraphId];\n if (renderGraphStat === undefined) {\n renderGraphStat = [];\n _detailedStat[renderGraphId] = renderGraphStat;\n }\n\n let passStat = renderGraphStat[passId];\n if (passStat === undefined) {\n passStat = new Statistic();\n renderGraphStat[passId] = passStat;\n }\n },\n\n markMemoryAllocated(object, type, size, scene) {\n const sceneEntry = _scenes.get(scene);\n const newStatistic = sceneEntry !== undefined ? _detailedStat[sceneEntry.renderGraphId][sceneEntry.passId] : _globalStat;\n\n //process changes of this object in other statistics\n let objectStatisticsSet = _objectToStatistics.get(object);\n if (!objectStatisticsSet) {\n objectStatisticsSet = new Set();\n _objectToStatistics.set(object, objectStatisticsSet);\n }\n objectStatisticsSet.add(newStatistic);\n\n //texture can turn into fbo attachment but not in opposite way\n if (type === memoryType.GPU_TEXTURES && _textureIsAttachment.has(object)) {\n type = memoryType.GPU_FRAMEBUFFERS;\n } else if (type === memoryType.GPU_FRAMEBUFFERS) {\n _textureIsAttachment.add(object);\n }\n\n for (const statistic of objectStatisticsSet) {\n const previousAllocation = statistic.registeredObjects.get(object);\n if (previousAllocation) {\n if (previousAllocation.type === type && previousAllocation.size === size) {\n continue;\n }\n\n this._markMemoryAllocation(previousAllocation.type, -previousAllocation.size, statistic);\n }\n\n statistic.registeredObjects.set(object, {type, size});\n\n this._markMemoryAllocation(type, size, statistic);\n if (_reportMemUsage) {\n let allocationString;\n if (sceneEntry) {\n allocationString = constructAllocationString(true, size, type, sceneEntry.renderGraphId, sceneEntry.passId);\n } else {\n allocationString = constructAllocationString(true, size, type);\n }\n const usageInfo = constructUsageTable();\n events.emit(\"memory_report\", { memory : allocationString, passes : usageInfo });\n }\n\n }\n },\n\n markMemoryReleased(object, scene) {\n const sceneEntry = _scenes.get(scene);\n const statistic = sceneEntry !== undefined ? _detailedStat[sceneEntry.renderGraphId][sceneEntry.passId] : _globalStat;\n\n const allocation = statistic.registeredObjects.get(object);\n if (!allocation) {\n return;\n }\n\n statistic.registeredObjects.delete(object);\n const objectStatisticsSet = _objectToStatistics.get(object);\n if (!objectStatisticsSet) {\n output.error(output.DEVELOPERS_ERROR, \"No object's statistic when deleting it\");\n return;\n }\n objectStatisticsSet.delete(statistic);\n\n this._markMemoryAllocation(allocation.type, -allocation.size, statistic);\n if (_reportMemUsage) {\n let releaseString;\n if (sceneEntry) {\n releaseString = constructAllocationString(false, allocation.size, allocation.type, sceneEntry.renderGraphId, sceneEntry.passId);\n } else {\n releaseString = constructAllocationString(false, allocation.size, allocation.type);\n }\n const usageString = constructUsageTable();\n events.emit(\"memory_report\", { memory : releaseString, passes : usageString });\n }\n },\n\n update(time) {\n\n const memoryUsage = _globalStat.cpu.geometry.size;\n const dt = time - _lastReportTime;\n const lastReportedMemory = app_state.getStateValue(\"memoryUsage\");\n\n if (dt > REPORT_INTERVAL && lastReportedMemory !== memoryUsage) {\n\n if (_reportBandwidth) {\n const bandwidth = (memoryUsage - lastReportedMemory) / dt ;\n\n output.log(\"Bandwidth:\" + getReadableMemoryStr(bandwidth) + \"/s\");\n\n }\n\n _lastReportTime = time;\n\n app_state.setStateValue(\"memoryUsage\", memoryUsage);\n\n }\n\n },\n\n _markMemoryAllocation(type, size, statistic) {\n\n switch(type) {\n case memoryType.CPU_GEOMETRY:\n statistic.cpu.geometry.size += size;\n statistic.cpu.geometry.count += Math.sign(size);\n break;\n case memoryType.GPU_GEOMETRY:\n statistic.gpu.geometry.size += size;\n statistic.gpu.geometry.count += Math.sign(size);\n break;\n case memoryType.GPU_TEXTURES:\n statistic.gpu.textures.size += size;\n statistic.gpu.textures.count += Math.sign(size);\n break;\n case memoryType.GPU_FRAMEBUFFERS:\n statistic.gpu.fbo.size += size;\n statistic.gpu.fbo.count += Math.sign(size);\n break;\n }\n\n },\n\n getReadableMemoryStr\n\n}\n\nfunction constructAllocationString(isAllocation, size, type, graphId, passId) {\n let allocationString = isAllocation ? \"Allocated \" : \"Released \";\n allocationString += size + \" bytes for \";\n switch (type) {\n case memoryType.CPU_GEOMETRY:\n allocationString += \"cpu geometry\";\n break;\n case memoryType.GPU_GEOMETRY:\n allocationString += \"gpu geometry\";\n break;\n case memoryType.GPU_TEXTURES:\n allocationString += \"gpu textures\";\n break;\n case memoryType.GPU_FRAMEBUFFERS:\n allocationString += \"gpu framebuffers\";\n break;\n }\n if (graphId !== undefined && passId !== undefined) {\n allocationString += \" in renderGraph \" + graphId + \", pass \" + passId;\n }\n allocationString += \".\\n\";\n\n return allocationString;\n}\n\nfunction constructUsageTable() {\n let usageInfo = {\n renderGraphs : [],\n total : \"\"\n };\n for (let i = 0; i < _detailedStat.length; i++){\n let renderGraphInfo = null;\n for (let j = 0; j < _detailedStat[i].length; j++){\n const passInfo = _detailedStat[i][j].getReport();\n if (passInfo) {\n if (!renderGraphInfo) {\n renderGraphInfo = {};\n }\n renderGraphInfo[renderGraph.getPassName(j)] = passInfo;\n }\n }\n if (renderGraphInfo) { \n usageInfo.renderGraphs.push(renderGraphInfo);\n }\n }\n\n usageInfo.total = _globalStat;\n\n return usageInfo;\n}\n\nfunction getReadableMemoryStr(memInBytes) {\n return memInBytes > 1000000000 ? (memInBytes / 1000000000).toFixed(1) + \" Gb\" :\n memInBytes > 1000000 ? (memInBytes / 1000000).toFixed(1) + \" Mb\" :\n memInBytes > 1000 ? (memInBytes / 1000).toFixed(1) + \" Kb\":\n memInBytes + \" B\";\n}\n","export default window.FormData;\n","import { ObjectItemType } from 'webstudio/src/client/project_content_types';\nimport { BASE_API_URL, ELicenceCodes, PROJECT_STATUS } from '_data/constants';\nimport FormData from '_formdata';\nimport { isNonNullable } from '_helpers/nullable';\nimport SelectedProjectMap from './SelectedStorageItemsSet';\n\nexport const shallowCompare = (obj1, obj2) =>\n Object.keys(obj1).length === Object.keys(obj2).length &&\n Object.keys(obj1).every(key => isNonNullable(obj2[key]) && obj1[key] === obj2[key]);\n\nexport const removeEmpty = obj =>\n Object.entries(obj).reduce(\n (acc, [key, value]) => ({ ...acc, ...(isNonNullable(value) ? { [key]: value } : undefined) }),\n {}\n );\n\nexport const getElementBy = (arr, field) => {\n const key = Object.keys(field)[0];\n return field ? arr.find(item => item[key] === field[key]) : undefined;\n};\n\nexport const debounce = (f, ms = 300) => {\n let timer = null;\n return (...args) => {\n const onComplete = () => {\n f.apply(this, args);\n timer = null;\n };\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(onComplete, ms);\n };\n};\n\nexport const isEmpty = value => {\n if (!value) {\n return true;\n }\n if (Array.isArray(value) || typeof value === 'string') {\n return !value.length;\n }\n\n if (typeof value === 'object') {\n return Object.keys(value).every(key => isEmpty(value[key]));\n }\n\n return false;\n};\n\nexport const buildFormData = (formData, data, parentKey) => {\n if (\n data &&\n typeof data === 'object' &&\n !(data instanceof Date) &&\n !(data instanceof File) &&\n !(data instanceof Blob) &&\n !(data instanceof ArrayBuffer)\n ) {\n Object.keys(data).forEach(key => {\n buildFormData(formData, data[key], parentKey ? `${parentKey}[${key}]` : key);\n });\n } else {\n const value = data == null ? '' : data;\n formData.append(parentKey, value);\n }\n};\n\nexport const jsonToFormData = data => {\n const formData = new FormData();\n buildFormData(formData, data);\n return formData;\n};\n\nexport const getShortName = name =>\n name\n ? (name.indexOf(' ') !== -1\n ? name\n .split(' ')\n .map(a => a.charAt(0))\n .join('')\n : name\n )\n .substr(0, 2)\n .toUpperCase()\n : '';\n\nexport const buf2hex = buffer =>\n Array.prototype.map.call(new Uint8Array(buffer), x => `00${x.toString(16)}`.slice(-2)).join('');\n\nexport const getTimeLeftString = (miliseconds, reason, suffix = '', shortHours = false) => {\n if (miliseconds === null) {\n return reason;\n }\n const seconds = Math.floor(miliseconds / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n let hoursString;\n\n if (shortHours) {\n hoursString = 'h';\n } else {\n hoursString = hours > 1 ? 'hours' : 'hour';\n }\n\n return hours > 0\n ? `${hours}${hoursString} ${minutes - hours * 60}min ${suffix}`\n : minutes > 0\n ? `${minutes} min ${suffix}`\n : seconds >= 0\n ? `${seconds}s ${suffix}`\n : reason;\n};\n\nexport const getExponent = (x, y) => (y === 0 ? 0 : Math.floor(Math.log(y) / Math.log(x)));\n\nconst DIMENSIONS = ['', ' KB', ' MB', ' GB', ' TB', ' PB'];\n\nexport const getFileSizeString = (bytes, noDimension) => {\n const exponent = getExponent(1024, bytes);\n const dimension = noDimension ? '' : DIMENSIONS[exponent] || '';\n const size = (bytes / 1024 ** exponent).toFixed(2) / 1;\n\n return `${size}${dimension}`;\n};\n\nexport const multipleSelect = (changeStateFunc, selected, item, all, isSwitchMode) => (_, e, add, __, noSwitch) => {\n // switchMode true allow multiselect only with shift\n let _selected;\n\n if (isSwitchMode) {\n _selected = new SelectedProjectMap();\n } else {\n _selected = new SelectedProjectMap(__ || selected);\n }\n\n if (add || e.nativeEvent.metaKey || e.targetTouches) {\n if (selected.has(item) && !noSwitch) {\n _selected.delete(item);\n } else {\n _selected.add(item);\n }\n } else if (e.nativeEvent.shiftKey && selected.size > 0) {\n let last = item;\n // eslint-disable-next-line no-restricted-syntax\n for (last of selected);\n\n const index = all.indexOf(item);\n let lastIndex = all.indexOf(last);\n\n const diff = index - lastIndex;\n if (!diff) {\n return;\n }\n const _add = diff / Math.abs(diff);\n\n if (isSwitchMode) _selected.add(last);\n\n do {\n lastIndex += _add;\n _selected.add(all[lastIndex - _add]);\n } while (lastIndex !== index);\n\n if (!_selected.delete(item)) {\n _selected.add(item);\n }\n } else if (e.nativeEvent.ctrlKey) {\n if (!_selected.delete(item)) {\n _selected.add(item);\n }\n } else {\n _selected = new SelectedProjectMap([item]);\n }\n\n changeStateFunc(_selected);\n};\n\nexport const formatPropertyValue = (value, suffix = '', toFixedNumber = 2) =>\n typeof value !== 'number' && Number.isNaN(Number(value))\n ? value\n : (Number(value) || 0).toFixed(toFixedNumber).replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1 ') + suffix;\n\n/**\n * Find all items in group\n * @param {object} group\n * @param {Set} items\n * @param {number} groupType\n */\nexport const findInGroup = (group, items, groupType, predicate) => {\n if (group.items && group.items.length > 0) {\n group.items.forEach(item => {\n if (typeof predicate === 'function') {\n if (predicate(item)) {\n items.add(item.id);\n }\n } else {\n items.add(item.id);\n }\n if (item.type === groupType) {\n items = new Set([...items, ...findInGroup(item, items, groupType, predicate)]);\n }\n });\n }\n return items;\n};\n\nexport const forEachInGroupPlain = (group, allPlain, predicate) => {\n predicate(group);\n allPlain\n .filter(_ => _.groupID === group.id)\n .forEach(__ => {\n forEachInGroupPlain(__, allPlain, predicate);\n });\n};\n\nexport const findInGroupPlain = (group, allPlain) => {\n const items = allPlain.filter(_ => _.groupID === group.id);\n return items.concat(items.map(_ => findInGroupPlain(_, allPlain)).flat());\n};\n\nexport const makeGroupsOfObjects = (list, params) => {\n const { excludePredicate, parentPropName, parentColorPropName, notAlignedGroupId } = params;\n\n const _objectsSorted = list\n .filter(item => !excludePredicate(item))\n .sort((a, b) => {\n if (typeof a[parentPropName] === 'undefined') {\n return 1;\n }\n if (typeof b[parentPropName] === 'undefined') {\n return -1;\n }\n return a[parentPropName] > b[parentPropName] ? 1 : a[parentPropName] < b[parentPropName] ? -1 : 0;\n });\n\n const _res = _objectsSorted.reduce((acc, cur, index, arr) => {\n if (index === 0 || arr[index - 1][parentPropName] !== cur[parentPropName]) {\n acc.push({\n id: cur[parentPropName] || notAlignedGroupId,\n color: cur[parentColorPropName] || 'none',\n type: ObjectItemType.Group,\n items: [cur],\n });\n } else {\n acc[acc.length - 1].items.push(cur);\n }\n return acc;\n }, []);\n return _res;\n};\n\nexport const makeGroups = (list, params, excludePredicate) => {\n const { groupPropName, groupPropValue, parentPropName, parentColorPropName, notAlignedGroupName, notAlignedGroupId } =\n params;\n\n const alignGroups = makeGroupsOfObjects(list, {\n excludePredicate,\n parentPropName,\n parentColorPropName,\n notAlignedGroupId,\n });\n\n const ungroupedItems = {\n name: notAlignedGroupName,\n id: notAlignedGroupId,\n color: 'none',\n type: ObjectItemType.Group,\n };\n\n const _list = [...alignGroups, ungroupedItems, ...list];\n\n const _mappedList = _list.reduce((acc, item) => {\n if (item[groupPropName] === groupPropValue) {\n acc.set(item.id, {\n ...item,\n items: [],\n });\n } else {\n acc.has(item[parentPropName])\n ? acc.get(item[parentPropName]).items.push(item)\n : acc.get(notAlignedGroupId).items.push(item);\n }\n return acc;\n }, new Map());\n return Array.from(_mappedList.values());\n};\n\nexport const normalizeRGB = ({ r, g, b }) => ({\n r: Math.round(255 * r),\n g: Math.round(255 * g),\n b: Math.round(255 * b),\n});\n\nexport const rgbStringToRgbObject = rgbString => {\n const [r, g, b, a] = rgbString.replace(/[^\\d,]/g, '').split(',');\n\n return {\n r: parseInt(r, 10),\n g: parseInt(g, 10),\n b: parseInt(b, 10),\n ...(isNonNullable(a) ? { a: parseInt(a, 10) } : undefined),\n };\n};\n\nexport const hexToRgb = hex => {\n if (!hex) return [1, 1, 1];\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? [parseInt(result[1], 16) / 255, parseInt(result[2], 16) / 255, parseInt(result[3], 16) / 255]\n : [1, 1, 1];\n};\n\nexport const denormalizeRGB = p => {\n const { r, g, b } = p;\n\n return {\n r: Math.floor((r * 100) / 255) / 100,\n g: Math.floor((g * 100) / 255) / 100,\n b: Math.floor((b * 100) / 255) / 100,\n };\n};\n\nexport const getRandomColor = () => ({\n r: Math.floor(Math.random() * (255 + 1)),\n g: Math.floor(Math.random() * (255 + 1)),\n b: Math.floor(Math.random() * (255 + 1)),\n});\n\nconst rgbToHsl = ({ r, g, b }) => {\n (r /= 255), (g /= 255), (b /= 255);\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h;\n let s;\n const l = (max + min) / 2;\n\n if (max === min) {\n // eslint-disable-next-line no-multi-assign\n h = s = 0; // achromatic\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n // eslint-disable-next-line default-case\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n\n h /= 6;\n }\n\n return { h, s, l };\n};\n\nconst hslToRgb = ({ h, s, l }) => {\n let r;\n let g;\n let b;\n\n if (s === 0) {\n // eslint-disable-next-line no-multi-assign\n r = g = b = l; // achromatic\n } else {\n const hue2rgb = (p, q, t) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255) };\n};\n\nexport const generateShades = (color, shadesCount) => {\n const { h, s, l } = rgbToHsl(color);\n const newCount = shadesCount + 1;\n const step = (1 - l) / newCount;\n\n const shadesIterator = (iterations, result) => {\n if (iterations > 0) {\n return shadesIterator(iterations - 1, [...result, hslToRgb({ h, s, l: l + step * iterations })]);\n }\n return result.slice(1).reverse();\n };\n\n return shadesIterator(newCount, []);\n};\n\nexport const generateColorInSequence = (iteration, initialHue = 0, s = 0.5, l = 0.5) => {\n const goldenRatioConjugate = 0.618033988749895;\n const currentColor = (initialHue + goldenRatioConjugate * iteration) % 1;\n return hslToRgb({ h: currentColor, s, l });\n};\n\nexport const getCookie = name => {\n const matches = document.cookie.match(\n new RegExp(`(?:^|; )${name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1')}=([^;]*)`) // eslint-disable-line\n );\n return matches ? decodeURIComponent(matches[1]) : undefined;\n};\n\nexport const setCookie = (name, value, options = {}) => {\n const _options = {\n path: '/',\n ...options,\n };\n\n if (_options.expires && _options.expires.toUTCString) {\n _options.expires = _options.expires.toUTCString();\n }\n\n let updatedCookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;\n\n Object.keys(_options).forEach(optionKey => {\n updatedCookie += `; ${optionKey}`;\n const optionValue = _options[optionKey];\n if (optionValue !== true) {\n updatedCookie += `=${optionValue}`;\n }\n });\n\n document.cookie = updatedCookie;\n};\n\nexport const objToSelectOptions = obj => Object.entries(obj).map(([key, value]) => ({ label: key, value }));\n\nexport const jsonFormat = obj => {\n const text = JSON.stringify(obj);\n return text ? text.replace(/\\\\/g, '') : '';\n};\n\nconst componentToHex = c => {\n const hex = c.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n};\n\nexport const rgbToHex = ({ r, g, b }) => `#${componentToHex(r)}${componentToHex(g)}${componentToHex(b)}`;\n\nexport const groupsToOptions = groups =>\n groups.map(group => {\n if (group.id === 'NOT ALIGNED' && group.items.length > 0) {\n return {\n label: group.id,\n options: group.items.map(item => ({\n label: item.name,\n value: [item.id],\n })),\n };\n }\n return {\n label: group.id,\n color: group.color,\n value: group.items.map(item => item.id),\n };\n });\n\nexport const isInSubFolder = (folders, folderId, forldersIds) => {\n const parent = folders.find(item => item.id === folderId);\n if (!parent) {\n return false;\n }\n if (forldersIds.indexOf(parent.id) !== -1) {\n return true;\n }\n return isInSubFolder(folders, parent.folder_id, forldersIds);\n};\n\nexport const getShortScanLabel = _label => (_label.length <= 60 ? _label : `${_label.slice(0, 57)}...`);\n\nexport const getKeyFromValue = (obj, val) => {\n const prop = Object.entries(obj).find(_ => _[1] === val);\n return prop ? prop[0] : '';\n};\n\nconst getPairs = (obj, keys = []) =>\n Object.entries(obj).reduce((pairs, [key, value]) => {\n if (value === null) {\n return pairs;\n }\n if (typeof value === 'object') {\n pairs.push(...getPairs(value, [...keys, key]));\n } else {\n pairs.push([[...keys, key], value]);\n }\n return pairs;\n }, []);\n\nexport const jsonToQuery = obj =>\n Object.keys(obj).length\n ? `?${getPairs(obj)\n .map(\n ([[key0, ...keysRest], value]) =>\n `${key0}${keysRest.map(a => `[${a}]`).join('')}=${encodeURIComponent(value)}`\n )\n .join('&')}`\n : '';\n\nexport const hexToBinaryString = hex => {\n const bytes = [];\n const { length } = hex;\n let x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n // eslint-disable-next-line prefer-spread\n return String.fromCharCode.apply(String, bytes);\n};\n\nexport const formatSelected = (items, selectedItems, groupType) =>\n items.reduce((acc, cur) => {\n if (cur.type !== groupType) {\n if (selectedItems.indexOf(cur.id) !== -1) {\n acc.push(cur);\n }\n } else {\n const itemsInGroup = [...findInGroup(cur, new Set(), groupType, __ => __.type !== groupType)];\n if (itemsInGroup.length > 0) {\n if (itemsInGroup.every(_ => selectedItems.indexOf(_) !== -1)) {\n acc.push(cur);\n } else {\n const subItems = formatSelected(cur.items, selectedItems, groupType);\n return acc.concat(subItems);\n }\n }\n }\n\n return acc;\n }, []);\n\nexport const uuidv4 = () =>\n 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n\nexport const rndSession = () =>\n 'xxxxxxxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n\nexport const stringWithSpacesToNumber = string => Number(string.replaceAll(/\\s/g, ''));\n\nexport const getObjectsMeta = (items, fields = ['name', 'uuid', 'type']) =>\n items.map(item =>\n fields.reduce((acc, field) => {\n acc[field] = item[field];\n return acc;\n }, {})\n );\n\nexport const getDownloadAttachmentLink = (projectId, annotationId, attachmentId) =>\n `${BASE_API_URL}/projects/${projectId}/annotations/${annotationId}/attachments/${attachmentId}.json`;\n\nexport const getClosest = (needle, haystack) =>\n haystack.reduce((a, b) => {\n const aDiff = Math.abs(a - needle);\n const bDiff = Math.abs(b - needle);\n\n if (aDiff === bDiff) {\n return a > b ? a : b;\n }\n return bDiff < aDiff ? b : a;\n });\n\nexport const intersectArrays = (a, b) => a.filter(_ => b.includes(_));\n\nexport const filterTextInputs = e => !!e.target.getAttribute('nohotkeys');\n\nexport const uploadingStatus = _status => {\n let text = '';\n\n switch (_status) {\n case PROJECT_STATUS.preparing:\n text = 'Preparing';\n break;\n case PROJECT_STATUS.new:\n case PROJECT_STATUS.uploading:\n text = 'Uploading';\n break;\n case PROJECT_STATUS.uploaded:\n text = 'Uploaded';\n break;\n case PROJECT_STATUS.processing:\n text = 'Converting';\n break;\n default:\n break;\n }\n\n return text;\n};\n\nconst licenseNames = new Map([\n [ELicenceCodes.FREE, 'Free plan'],\n [ELicenceCodes.STORAGE_200GB, '200 GB storage'],\n [ELicenceCodes.STORAGE_200GB_MO, '200 GB storage'],\n [ELicenceCodes.STORAGE_1TB, '1 TB storage'],\n [ELicenceCodes.STORAGE_1TB_MO, '1 TB storage'],\n ['ac_qa_unlimited', 'QA unlimited'],\n]);\n\nexport const getLicenseNane = code => licenseNames.get(code) || 'Plan';\n\nexport const arrayIntersection = (arr1, arr2) => arr1.filter(item1 => arr2.some(item2 => item1.id === item2.id));\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import GL from \"_src/engine/gl\";\nimport extensions from \"_src/engine/extensions\";\nimport {\n blendFactor,\n blendEquation,\n stencilAction,\n stencilFunc,\n triangleSide,\n textureWrapper,\n textureMinFilter,\n textureMagFilter,\n RBIntFormat,\n cullingFrontFace,\n CompressedTextureFormat, cubeMapTarget\n} from \"_src/engine/constants\";\n\nexport default {\n\n getBlendFactor(factor) {\n\n const gl = GL.getContext();\n\n if (!gl) {\n return null;\n }\n\n switch(factor) {\n case blendFactor.ZERO:\n return gl.ZERO;\n case blendFactor.ONE:\n return gl.ONE;\n case blendFactor.SRC_ALPHA:\n return gl.SRC_ALPHA;\n case blendFactor.ONE_MINUS_SRC_ALPHA:\n return gl.ONE_MINUS_SRC_ALPHA;\n case blendFactor.DST_ALPHA:\n return gl.DST_ALPHA;\n case blendFactor.ONE_MINUS_DST_ALPHA:\n return gl.ONE_MINUS_DST_ALPHA;\n case blendFactor.CONSTANT_ALPHA:\n return gl.CONSTANT_ALPHA;\n case blendFactor.ONE_MINUS_CONSTANT_ALPHA:\n return gl.ONE_MINUS_CONSTANT_ALPHA;\n case blendFactor.SRC_COLOR:\n return gl.SRC_COLOR;\n case blendFactor.ONE_MINUS_SRC_COLOR:\n return gl.ONE_MINUS_SRC_COLOR;\n case blendFactor.DST_COLOR:\n return gl.DST_COLOR;\n case blendFactor.ONE_MINUS_DST_COLOR:\n return gl.ONE_MINUS_DST_COLOR;\n default:\n return gl.ZERO;\n\n }\n\n },\n\n getBlendEquation(func) {\n\n const gl = GL.getContext();\n\n if (!gl) {\n return null;\n }\n\n let ext = null;\n\n switch(func) {\n case blendEquation.FUNC_ADD:\n return gl.FUNC_ADD;\n case blendEquation.FUNC_SUBTRACT:\n return gl.FUNC_SUBTRACT;\n case blendEquation.FUNC_REVERSE_SUBTRACT:\n return gl.FUNC_REVERSE_SUBTRACT;\n case blendEquation.MIN:\n ext = extensions.get(\"EXT_blend_minmax\");\n return GL.checkWebGL2() ? gl.MIN : (ext ? ext.MIN : gl.FUNC_ADD);\n case blendEquation.MAX:\n ext = extensions.get(\"EXT_blend_minmax\");\n return GL.checkWebGL2() ? gl.MAX : (ext ? ext.MAX : gl.FUNC_ADD);\n default:\n return gl.FUNC_ADD;\n\n }\n\n },\n\n getStencilAction(action) {\n\n const gl = GL.getContext();\n\n if (!gl) {\n return null;\n }\n\n switch(action) {\n case stencilAction.KEEP:\n return gl.KEEP;\n case stencilAction.ZERO:\n return gl.ZERO;\n case stencilAction.REPLACE:\n return gl.REPLACE;\n case stencilAction.INCR:\n return gl.INCR;\n case stencilAction.INCR_WRAP:\n return gl.INCR_WRAP;\n case stencilAction.DECR:\n return gl.DECR;\n case stencilAction.DECR_WRAP:\n return gl.DECR_WRAP;\n case stencilAction.INVERT:\n return gl.INVERT;\n default:\n return gl.KEEP;\n }\n\n },\n\n getStencilFunction(func) {\n\n const gl = GL.getContext();\n\n if (!gl) {\n return null;\n }\n\n switch(func) {\n case stencilFunc.NEVER:\n return gl.NEVER;\n case stencilFunc.LESS:\n return gl.LESS;\n case stencilFunc.EQUAL:\n return gl.EQUAL;\n case stencilFunc.LEQUAL:\n return gl.LEQUAL;\n case stencilFunc.GREATER:\n return gl.GREATER;\n case stencilFunc.NOTEQUAL:\n return gl.NOTEQUAL;\n case stencilFunc.GEQUAL:\n return gl.GEQUAL;\n case stencilFunc.ALWAYS:\n return gl.ALWAYS;\n default:\n return gl.ALWAYS;\n }\n\n },\n\n getTriangleSide(side) {\n\n const gl = GL.getContext();\n\n if (!gl) {\n return null;\n }\n\n switch(side) {\n case triangleSide.FRONT:\n return gl.FRONT;\n case triangleSide.BACK:\n return gl.BACK;\n case triangleSide.FRONT_AND_BACK:\n return gl.FRONT_AND_BACK;\n default:\n return gl.FRONT_AND_BACK;\n }\n\n },\n\n getWrapBehavior(wrapper) {\n\n const gl = GL.getContext();\n\n if (!gl) {\n return null;\n }\n\n switch(wrapper) {\n case textureWrapper.CLAMP:\n return gl.CLAMP_TO_EDGE;\n case textureWrapper.REPEAT:\n return gl.REPEAT;\n case textureWrapper.MIRROR:\n return gl.MIRRORED_REPEAT;\n default:\n return gl.CLAMP;\n }\n\n },\n\n getMagFilter(filter) {\n\n const gl = GL.getContext();\n\n if (!gl) {\n return null;\n }\n\n switch(filter) {\n case textureMagFilter.NEAREST:\n return gl.NEAREST;\n case textureMagFilter.LINEAR:\n return gl.LINEAR;\n default:\n return gl.NEAREST;\n }\n\n },\n\n getMinFilter(filter) {\n\n const gl = GL.getContext();\n\n if (!gl) {\n return null;\n }\n\n switch(filter) {\n case textureMinFilter.NEAREST:\n return gl.NEAREST;\n case textureMinFilter.LINEAR:\n return gl.LINEAR;\n case textureMinFilter.NEAREST_MIPMAP_NEAREST:\n return gl.NEAREST_MIPMAP_NEAREST;\n case textureMinFilter.LINEAR_MIPMAP_NEAREST:\n return gl.LINEAR_MIPMAP_NEAREST;\n case textureMinFilter.NEAREST_MIPMAP_LINEAR:\n return gl.NEAREST_MIPMAP_LINEAR;\n case textureMinFilter.LINEAR_MIPMAP_LINEAR:\n return gl.LINEAR_MIPMAP_LINEAR;\n default:\n return gl.NEAREST;\n }\n\n },\n\n getRBInternalFormat(format) {\n\n const gl = GL.getContext();\n\n if (!gl) {\n return null;\n }\n\n switch(format) {\n case RBIntFormat.R4G4B4A4:\n return gl.RGBA4;\n case RBIntFormat.R5G6B5:\n return gl.RGB565;\n case RBIntFormat.R5G5B5A1:\n return gl.RGB5_A1;\n case RBIntFormat.R8G8B8A8:\n return gl.RGBA8;\n case RBIntFormat.D16U:\n return gl.DEPTH_COMPONENT16;\n case RBIntFormat.D24U:\n return gl.DEPTH_COMPONENT24;\n case RBIntFormat.S8:\n return gl.STENCIL_INDEX8;\n case RBIntFormat.DS:\n return GL.checkWebGL2() ? gl.DEPTH24_STENCIL8 : gl.DEPTH_STENCIL;\n case RBIntFormat.D24S8:\n return gl.DEPTH24_STENCIL8;\n default:\n return gl.RGB565;\n }\n\n },\n\n getRBElementSize(format, samples) {\n switch (format) {\n case RBIntFormat.R4G4B4A4:\n case RBIntFormat.R5G6B5:\n case RBIntFormat.R5G5B5A1:\n return 4;\n case RBIntFormat.DS:\n case RBIntFormat.D24S8:\n return 4 * samples;\n case RBIntFormat.R8G8B8A8:\n return 8;\n case RBIntFormat.D16U:\n return 2 * samples;\n case RBIntFormat.D24U:\n return 3 * samples;\n case RBIntFormat.S8:\n return 1 * samples;\n }\n },\n\n getFrontFace(front) {\n\n const gl = GL.getContext();\n\n if (!gl) {\n return null;\n }\n\n switch(front) {\n case cullingFrontFace.CLOCK_WISE:\n return gl.CW;\n default:\n return gl.CCW;\n }\n\n },\n\n getCompressedTextureInternalFormat(format) {\n const ext =\n extensions.get(\"WEBGL_compressed_texture_s3tc\") ||\n extensions.get(\"MOZ_WEBGL_compressed_texture_s3tc\") ||\n extensions.get(\"WEBKIT_WEBGL_compressed_texture_s3tc\");\n\n switch(format) {\n case CompressedTextureFormat.DXT1:\n return ext.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n case CompressedTextureFormat.DXT3:\n return ext.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n case CompressedTextureFormat.DXT5:\n return ext.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n }\n },\n\n getCubeMapTarget(target) {\n const gl = GL.getContext();\n if (!gl) return null;\n\n switch(target) {\n case cubeMapTarget.POSITIVE_X:\n return gl.TEXTURE_CUBE_MAP_POSITIVE_X;\n case cubeMapTarget.NEGATIVE_X:\n return gl.TEXTURE_CUBE_MAP_NEGATIVE_X;\n case cubeMapTarget.POSITIVE_Y:\n return gl.TEXTURE_CUBE_MAP_POSITIVE_Y;\n case cubeMapTarget.NEGATIVE_Y:\n return gl.TEXTURE_CUBE_MAP_NEGATIVE_Y;\n case cubeMapTarget.POSITIVE_Z:\n return gl.TEXTURE_CUBE_MAP_POSITIVE_Z;\n case cubeMapTarget.NEGATIVE_Z:\n return gl.TEXTURE_CUBE_MAP_NEGATIVE_Z;\n }\n }\n\n}\n","import {vec2, vec3, mat3} from \"_src/libs/gl-matrix\";\nimport {EPSILON} from \"_src/engine/constants\";\n\nconst MISS = 1;\nconst INTERSECTION = 2;\nconst INSIDE = 3;\n\nconst depthScale = vec3.fromValues(65536.0, 256.0, 1.0);\nvec3.scale(depthScale, depthScale, 1.0 / 65793.0);\n\nconst intersectEvaluator = {\n\n MISS : MISS,\n INTERSECTION : INTERSECTION,\n INSIDE : INSIDE,\n\n triangleRayIntersection : (function() {\n\n const edge1 = vec3.create();\n const edge2 = vec3.create();\n\n const vec3Tmp1 = vec3.create();\n const vec3Tmp2 = vec3.create();\n\n return function (from, to, indices, offset, length, positions, result) {\n\n const point = result.point;\n\n const startInd = offset;\n const finalInd = startInd + length;\n\n let distance = Infinity;\n let intersected = false;\n\n for (let i = startInd; i < finalInd; i += 3) {\n\n const i1 = indices[i];\n const i2 = indices[i + 1];\n const i3 = indices[i + 2];\n\n const offset1 = i1 * 3;\n const offset2 = i2 * 3;\n const offset3 = i3 * 3;\n\n const x1 = positions[offset1];\n const x2 = positions[offset2];\n const x3 = positions[offset3];\n\n const y1 = positions[offset1 + 1];\n const y2 = positions[offset2 + 1];\n const y3 = positions[offset3 + 1];\n\n const z1 = positions[offset1 + 2];\n const z2 = positions[offset2 + 2];\n const z3 = positions[offset3 + 2];\n\n const e1 = vec3.set(edge1, x2 - x1, y2 - y1, z2 - z1);\n const e2 = vec3.set(edge2, x3 - x1, y3 - y1, z3 - z1);\n\n const normal = vec3.cross(vec3Tmp1, to, e2);\n const det = vec3.dot(e1, normal);\n\n // ray and tri are parallel\n if (det < EPSILON && det > -EPSILON) {\n continue;\n }\n\n const invDet = 1 / det;\n const tVec = vec3.set(vec3Tmp2, from[0] - x1, from[1] - y1, from[2] - z1);\n\n const u = vec3.dot(tVec, normal) * invDet;\n\n if (u < 0 || u > 1) {\n continue;\n }\n\n const qVec = vec3.cross(vec3Tmp1, tVec, e1);\n const v = vec3.dot(to, qVec) * invDet;\n\n if (v < 0 || u + v > 1) {\n continue;\n }\n\n const currDistance = vec3.dot(e2, qVec) * invDet;\n\n if (currDistance < distance) {\n\n intersected = true;\n\n distance = currDistance;\n\n result.primitive = i;\n\n }\n\n }\n\n if (intersected) {\n vec3.scaleAndAdd(point, from, to, distance);\n }\n\n result.distance = distance;\n\n return intersected;\n }\n\n })(),\n\n triangleLineIntersection : (function() {\n\n const edge1 = vec3.create();\n const edge2 = vec3.create();\n\n const vec3Tmp1 = vec3.create();\n const vec3Tmp2 = vec3.create();\n\n return function (from, to, indices, offset, length, positions, tlim, result) {\n\n const point = result.point;\n\n const startInd = offset;\n const finalInd = startInd + length;\n\n let distance = Infinity;\n let intersected = false;\n\n for (let i = startInd; i < finalInd; i += 3) {\n\n const i1 = indices[i];\n const i2 = indices[i + 1];\n const i3 = indices[i + 2];\n\n const offset1 = i1 * 3;\n const offset2 = i2 * 3;\n const offset3 = i3 * 3;\n\n const x1 = positions[offset1];\n const x2 = positions[offset2];\n const x3 = positions[offset3];\n\n const y1 = positions[offset1 + 1];\n const y2 = positions[offset2 + 1];\n const y3 = positions[offset3 + 1];\n\n const z1 = positions[offset1 + 2];\n const z2 = positions[offset2 + 2];\n const z3 = positions[offset3 + 2];\n\n const e1 = vec3.set(edge1, x2 - x1, y2 - y1, z2 - z1);\n const e2 = vec3.set(edge2, x3 - x1, y3 - y1, z3 - z1);\n\n const normal = vec3.cross(vec3Tmp1, to, e2);\n const det = vec3.dot(e1, normal);\n\n // ray and tri are parallel\n if (det < EPSILON && det > -EPSILON) {\n continue;\n }\n\n const invDet = 1 / det;\n const tVec = vec3.set(vec3Tmp2, from[0] - x1, from[1] - y1, from[2] - z1);\n\n const u = vec3.dot(tVec, normal) * invDet;\n\n if (u < 0 || u > 1) {\n continue;\n }\n\n const qVec = vec3.cross(vec3Tmp1, tVec, e1);\n const v = vec3.dot(to, qVec) * invDet;\n\n if (v < 0 || u + v > 1) {\n continue;\n }\n\n const currDistance = vec3.dot(e2, qVec) * invDet;\n const absDist = Math.abs(currDistance);\n\n if (absDist < distance && absDist <= tlim) {\n\n intersected = true;\n\n distance = absDist;\n\n vec3.scaleAndAdd(point, from, to, currDistance);\n result.primitive = i;\n result.distance = currDistance;\n\n }\n\n }\n\n return intersected;\n }\n\n })(),\n\n sphereRayIntersection : (function() {\n const vec3Tmp1 = vec3.create();\n const vec3Tmp2 = vec3.create();\n\n return function (from, to, indices, offset, length, positions, sizes, result) {\n\n const startInd = offset;\n const finalInd = startInd + length;\n\n let distance = Infinity;\n let intersected = false;\n\n for (let i = startInd; i < finalInd; i++) {\n const idx = indices ? indices[i] : i;\n const x = positions[idx * 3];\n const y = positions[idx * 3 + 1];\n const z = positions[idx * 3 + 2];\n\n const r = Math.abs(sizes[idx]);\n\n const sphereCenter = vec3.set(vec3Tmp1, x, y, z);\n const m = vec3.subtract(vec3Tmp2, from, sphereCenter);\n const b = vec3.dot(m, to);\n const c = vec3.dot(m, m) - r*r;\n\n const det = b * b - c;\n\n if (det < 0.0) {\n continue;\n }\n\n const t = -b + Math.sqrt(det);\n\n if (t < distance) {\n intersected = true;\n distance = t;\n result.primitive = i;\n }\n }\n\n if (intersected) {\n result.point = vec3.scaleAndAdd(result.point, from, to, distance);\n }\n\n result.distance = distance;\n\n return intersected;\n }\n })(),\n\n markVerticesInsideSphere : function (center, squaredRadius, indices, offset,\n length, positions, vertsMask, scale) {\n\n let numSelected = 0;\n const cx = center[0];\n const cy = center[1];\n const cz = center[2];\n\n const startInd = offset;\n const finalInd = startInd + length;\n\n for (let i = startInd; i < finalInd; ++i) {\n\n const ind = indices[i];\n\n if (vertsMask[ind]) {\n continue;\n }\n\n const offset = ind * 3;\n\n const dx = (positions[offset] - cx) * scale[0];\n const dy = (positions[offset + 1] - cy) * scale[1];\n const dz = (positions[offset + 2] - cz) * scale[2];\n\n if ((dx * dx + dy * dy + dz * dz) < squaredRadius) {\n\n vertsMask[ind] = 1;\n ++numSelected;\n\n }\n\n }\n\n return numSelected;\n\n },\n\n maskAABBTest : (function() {\n\n const vertex = vec3.create();\n const pixel = vec2.create();\n const min = vec2.create();\n const max = vec2.create();\n\n return function(maskPixels, width, height, bounding, minmax, mvp) {\n\n let selectedVerticesCounter = 0;\n vec2.set(min, Infinity, Infinity);\n vec2.set(max, -Infinity, -Infinity);\n\n for (let i = 0; i < 8; ++i) {\n\n const x = minmax[ 3 * ((i & 0b100) >> 2)];\n const y = minmax[1 + 3 * ((i & 0b010) >> 1)];\n const z = minmax[2 + 3 * ((i & 0b001))];\n\n vec3.set(vertex, x, y, z);\n vec3.transformMat4(vertex, vertex, mvp);\n\n NDCtoScreen(vertex[0], vertex[1], width, height, pixel);\n\n vec2.min(min, min, pixel);\n vec2.max(max, max, pixel);\n\n const screenX = Math.round(pixel[0]);\n const screenY = Math.round(pixel[1]);\n\n if (inScreen(screenX, screenY, width, height)) {\n if (readValue(maskPixels, screenX, screenY, width)) {\n selectedVerticesCounter++;\n }\n }\n\n }\n\n if (0 < selectedVerticesCounter && selectedVerticesCounter < 8) {\n return INTERSECTION;\n }\n\n let x0 = Math.floor(clamp(0, width, min[0]));\n let y0 = Math.floor(clamp(0, height, min[1]));\n let x1 = Math.floor(clamp(0, width, max[0]));\n let y1 = Math.floor(clamp(0, height, max[1]));\n\n if (bounding[2] < x0 || bounding[0] > x1 ||\n bounding[3] < y0 || bounding[1] > y1) {\n return MISS;\n }\n\n let emptyPixels = 0;\n let intersected = false;\n let overlapped = false;\n\n if (bounding[0] <= x0 && x1 <= bounding[2] &&\n bounding[1] <= y0 && y1 <= bounding[3]) {\n overlapped = true;\n }\n\n x0 = Math.max(x0, bounding[0]);\n y0 = Math.max(y0, bounding[1]);\n x1 = Math.min(x1, bounding[2]);\n y1 = Math.min(y1, bounding[3]);\n\n for (let i = y0; i <= y1; i++) {\n let offset = i * width;\n for (let j = x0; j <= x1; j++) {\n if (maskPixels[offset + j]) {\n intersected = true;\n } else {\n if (intersected) {\n return INTERSECTION;\n }\n emptyPixels++;\n }\n }\n }\n\n if (overlapped && emptyPixels == 0 && intersected) {\n return INSIDE;\n }\n\n if (intersected) {\n return INTERSECTION;\n }\n\n return MISS;\n\n };\n\n })(),\n\n markVerticesInsideMask : (function() {\n\n const vertex = vec3.create();\n const pixel = vec2.create();\n\n return function(maskPixels, depthPixels, width, height, indices, offset, length,\n positions, vertsMask, mvp, near, far, linearDepth) {\n\n const startInd = offset;\n const finalInd = startInd + length;\n let numSelected = 0;\n\n for (let i = startInd; i < finalInd; ++i) {\n\n const ind = indices[i];\n\n if (vertsMask[ind]) {\n continue;\n }\n\n const offset = ind * 3;\n\n vec3.set(vertex, positions[offset], positions[offset + 1], positions[offset + 2]);\n vec3.transformMat4(vertex, vertex, mvp);\n\n const pureZCPU = 0.5 * (vertex[2] + 1);\n\n if (0.0 < pureZCPU && pureZCPU < 1.0) {\n\n NDCtoScreen(vertex[0], vertex[1], width, height, pixel);\n\n if (inScreen(pixel[0], pixel[1], width, height)) {\n\n const screenX = Math.round(pixel[0]);\n const screenY = Math.round(pixel[1]);\n\n const colorOffset = screenY * width + screenX;\n\n if (!maskPixels[colorOffset]) {\n continue;\n }\n\n if (depthPixels) {\n\n const depthOffset = 4 * colorOffset;\n const depth = getDepth(depthOffset, depthPixels);\n\n let linearZGPU, linearZCPU;\n if (linearDepth) {\n linearZGPU = orthoDepthToEye(depth, near, far);\n linearZCPU = orthoDepthToEye(pureZCPU, near, far);\n } else {\n linearZGPU = perspDepthToEye(depth, near, far);\n linearZCPU = perspDepthToEye(pureZCPU, near, far);\n }\n\n const delta = Math.min(0.01 * linearZCPU, 1.0);\n\n if (linearZCPU > linearZGPU + delta) {\n continue;\n }\n\n }\n\n if (maskPixels[colorOffset]) {\n vertsMask[ind] = 1;\n ++numSelected;\n }\n\n }\n\n }\n\n }\n\n return numSelected;\n\n };\n\n })(),\n\n AABBRayIntersect(from, to, bb) {\n\n const fromX = from[0];\n const fromY = from[1];\n const fromZ = from[2];\n\n const dirX = 1.0 / to[0];\n const dirY = 1.0 / to[1];\n const dirZ = 1.0 / to[2];\n\n const t1 = (bb[0] - fromX) * dirX;\n const t3 = (bb[1] - fromY) * dirY;\n const t5 = (bb[2] - fromZ) * dirZ;\n const t2 = (bb[3] - fromX) * dirX;\n const t4 = (bb[4] - fromY) * dirY;\n const t6 = (bb[5] - fromZ) * dirZ;\n\n const tmin = Math.max(Math.min(t1, t2), Math.min(t3, t4), Math.min(t5, t6));\n const tmax = Math.min(Math.max(t1, t2), Math.max(t3, t4), Math.max(t5, t6));\n\n return tmax >= 0 && tmin <= tmax;\n\n },\n\n AABBRayDistance(from, to, bb) {\n\n const fromX = from[0];\n const fromY = from[1];\n const fromZ = from[2];\n\n const dirX = 1.0 / to[0];\n const dirY = 1.0 / to[1];\n const dirZ = 1.0 / to[2];\n\n const t1 = (bb[0] - fromX) * dirX;\n const t3 = (bb[1] - fromY) * dirY;\n const t5 = (bb[2] - fromZ) * dirZ;\n const t2 = (bb[3] - fromX) * dirX;\n const t4 = (bb[4] - fromY) * dirY;\n const t6 = (bb[5] - fromZ) * dirZ;\n\n const tmin = Math.max(Math.min(t1, t2), Math.min(t3, t4), Math.min(t5, t6));\n const tmax = Math.min(Math.max(t1, t2), Math.max(t3, t4), Math.max(t5, t6));\n\n const sign = tmax >= 0 && tmin <= tmax ? 1 : -1;\n\n return sign * tmin;\n\n },\n\n pointInsideAABB(point, bb) {\n return point[0] > bb[0] && point[0] < bb[3] && point[1] > bb[1] && point[1] < bb[4] &&\n point[2] > bb[2] && point[2] < bb[5];\n },\n\n AABBPointDistance(point, bb) {\n const dx = Math.max(bb[0] - point[0], 0, point[0] - bb[3]);\n const dy = Math.max(bb[1] - point[1], 0, point[1] - bb[4]);\n const dz = Math.max(bb[2] - point[2], 0, point[2] - bb[5]);\n return Math.sqrt(dx*dx + dy*dy + dz*dz);\n },\n\n planeAABBTest : (function() {\n\n const vec3Tmp = vec3.create();\n const vec3Tmp2 = vec3.create();\n\n return function(plane, bb) {\n const center = vec3.set(vec3Tmp, 0.5 * (bb[0] + bb[3]),\n 0.5 * (bb[1] + bb[4]),\n 0.5 * (bb[2] + bb[5]));\n const extents = vec3.set(vec3Tmp2, bb[3] - center[0], bb[4] - center[1], bb[5] - center[2]);\n const s = vec3.dot(plane, center) + plane[3];\n const r = extents[0] * Math.abs(plane[0]) + extents[1] * Math.abs(plane[1]) + extents[2] * Math.abs(plane[2]);\n\n if (Math.abs(s) <= r) {\n return INTERSECTION;\n } else {\n return s < 0 ? MISS : INSIDE;\n }\n }\n })(),\n\n markVerticesBehindPlane : function (plane, indices, offset,\n length, positions, vertsMask) {\n\n let numSelected = 0;\n\n const startInd = offset;\n const finalInd = startInd + length;\n\n for (let i = startInd; i < finalInd; ++i) {\n\n const ind = indices[i];\n\n if (vertsMask[ind]) {\n continue;\n }\n\n const offset = ind * 3;\n\n const x = positions[offset];\n const y = positions[offset + 1];\n const z = positions[offset + 2];\n\n if (plane[0] * x + plane[1] * y + plane[2] * z + plane[3] > 0) {\n\n vertsMask[ind] = 1;\n ++numSelected;\n\n }\n\n }\n\n return numSelected;\n\n },\n\n planeSphereTest(plane, center, radius) {\n const dist = Math.abs(vec3.dot(plane, center) + plane[3]);\n return radius >= dist;\n },\n\n AABBAABBTest(bb1, bb2) {\n\n if (bb1[3] < bb2[0] || bb1[0] > bb2[3] ||\n bb1[4] < bb2[1] || bb1[1] > bb2[4] ||\n bb1[5] < bb2[2] || bb1[2] > bb2[5]) {\n return false;\n } else {\n return true;\n }\n\n },\n\n raySphereIntersect : (function() {\n\n const vec3Tmp = vec3.create();\n\n return function(origin, ray, center, radius, dest) {\n\n const toOrigin = vec3.sub(vec3Tmp, origin, center);\n const a = vec3.dot(ray, ray);\n const k = vec3.dot(ray, toOrigin);\n const c = vec3.dot(toOrigin, toOrigin) - radius * radius;\n\n const d = k * k - a * c;\n\n if (d == 0 || a == 0) {\n return false;\n }\n\n dest[0] = (-k - Math.sqrt(d)) / a;\n dest[1] = (-k + Math.sqrt(d)) / a;\n\n return true;\n\n }\n\n })(),\n\n AABBSphereIntersect(center, squaredRadius, bb, scale) {\n\n const cx = center[0];\n const cy = center[1];\n const cz = center[2];\n\n const lowx = bb[0] - cx;\n const lowy = bb[1] - cy;\n const lowz = bb[2] - cz;\n\n const upx = cx - bb[3];\n const upy = cy - bb[4];\n const upz = cz - bb[5];\n\n const outx = Math.max(lowx, upx, 0) * scale[0];\n const outy = Math.max(lowy, upy, 0) * scale[1];\n const outz = Math.max(lowz, upz, 0) * scale[2];\n\n if ((outx * outx + outy * outy + outz * outz) > squaredRadius) {\n return MISS;\n }\n\n const inx = Math.max(-Math.min(lowx, upx), 0) * scale[0];\n const iny = Math.max(-Math.min(lowy, upy), 0) * scale[1];\n const inz = Math.max(-Math.min(lowz, upz), 0) * scale[2];\n\n if ((inx * inx + iny * iny + inz * inz) < squaredRadius) {\n return INSIDE;\n }\n\n return INTERSECTION;\n\n },\n\n linePlaneTest : (function() {\n\n const vec3Tmp = vec3.create();\n\n return function(planeNormal, planePoint, from, to, dest) {\n\n const dotNT = vec3.dot(planeNormal, to);\n\n if (Math.abs(dotNT) < EPSILON) {\n return false;\n }\n\n const w = vec3.sub(vec3Tmp, from, planePoint);\n const t = - vec3.dot(planeNormal, w) / dotNT;\n\n vec3.scaleAndAdd(dest, w, to, t);\n vec3.add(dest, dest, planePoint);\n\n return true;\n\n }\n\n })(),\n\n rayPlaneIntersection : (function() {\n\n return function(plane, from, to, dest) {\n\n const dotPV = vec3.dot(plane, to);\n\n if (Math.abs(dotPV) < EPSILON) {\n return -1;\n }\n\n const t = -(plane[3] + vec3.dot(plane, from)) / dotPV;\n\n vec3.scaleAndAdd(dest, from, to, t);\n\n return t;\n\n }\n\n })(),\n\n calcThreePlanesIntersection : (function() {\n\n const mat3Tmp = mat3.create();\n\n return function(plane1, plane2, plane3, out) {\n\n const matrix = mat3.set(mat3Tmp, plane1[0], plane2[0], plane3[0],\n plane1[1], plane2[1], plane3[1],\n plane1[2], plane2[2], plane3[2]);\n const det = mat3.determinant(matrix);\n\n if (det == 0) {\n return null;\n }\n\n const matrixx = mat3.set(mat3Tmp, -plane1[3], -plane2[3], -plane3[3],\n plane1[1], plane2[1], plane3[1],\n plane1[2], plane2[2], plane3[2]);\n out[0] = mat3.determinant(matrixx) / det;\n\n const matrixy = mat3.set(mat3Tmp, plane1[0], plane2[0], plane3[0],\n -plane1[3], -plane2[3], -plane3[3],\n plane1[2], plane2[2], plane3[2]);\n out[1] = mat3.determinant(matrixy) / det;\n\n const matrixz = mat3.set(mat3Tmp, plane1[0], plane2[0], plane3[0],\n plane1[1], plane2[1], plane3[1],\n -plane1[3], -plane2[3], -plane3[3]);\n out[2] = mat3.determinant(matrixz) / det;\n\n return out;\n\n }\n\n })(),\n\n perspDepthToEye,\n orthoDepthToEye\n\n};\n\nconst scaleFactor = 1.0 / 255.0;\n\nfunction getDepth(offset, pixels) {\n\n const r = pixels[offset] * scaleFactor;\n const g = pixels[offset + 1] * scaleFactor;\n const b = pixels[offset + 2] * scaleFactor;\n\n return unpackDepth(r, g, b);\n\n}\n\nfunction unpackDepth(r, g, b) {\n return r * depthScale[0] + g * depthScale[1] + b * depthScale[2];\n}\n\nfunction NDCtoScreen(x, y, width, height, dest) {\n return vec2.set(dest, 0.5 * width * (x + 1.0), height - 0.5 * height * (1.0 - y));\n}\n\nfunction inScreen(x, y, width, height) {\n return x >= 0 && x < width && y >= 0 && y < height;\n}\n\nfunction readValue(mask, x, y, width) {\n return mask[y * width + x];\n}\n\nfunction clamp(min, max, value) {\n return Math.max(min, Math.min(value, max));\n}\n\nfunction perspDepthToEye(depth, near, far) {\n return 2.0 * near * far / (far + near - (2.0 * depth - 1.0) * (far - near));\n}\n\nfunction orthoDepthToEye(depth, near, far) {\n return depth * (far - near) + near;\n}\n\nexport default intersectEvaluator;\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\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) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\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","\nconst WebGL1VertRules = {\n \"VERT_IN\" : \"attribute\",\n \"VERT_OUT\" : \"varying\",\n};\n\nconst WebGL1FragRules = {\n \"FRAG_IN\" : \"varying\",\n \"FRAG_DEF_OUT[0-9]+\" : \"\",\n \"FRAG_DEF_OUT\" : \"\",\n \"FRAG_OUT[0-9]+\" : \"gl_FragData[X]\",\n \"FRAG_OUT\" : \"gl_FragColor\",\n \"SAMPLER2D\" : \"texture2D\",\n \"SAMPLER_CUBE\" : \"textureCube\",\n \"SAMPLER_LOD_CUBE\" : \"textureCubeLodEXT\",\n \"DEPTH_OUT\" : \"gl_FragDepthEXT\"\n};\n\nconst WebGL2VertRules = {\n \"VERT_IN\" : \"in\",\n \"VERT_OUT\" : \"out\",\n};\n\nconst WebGL2FragRules = {\n \"FRAG_IN\" : \"in\",\n \"FRAG_DEF_OUT[0-9]+\" : \"layout(location=X) out vec4 out_colorX;\\n\",\n \"FRAG_DEF_OUT\" : \"out vec4 out_color;\\n\",\n \"FRAG_OUTX\" : \"out_colorX\",\n \"FRAG_OUT\" : \"out_color\",\n \"SAMPLER2D\" : \"texture\",\n \"SAMPLER_CUBE\" : \"texture\",\n \"SAMPLER_LOD_CUBE\" : \"textureLod\",\n \"DEPTH_OUT\" : \"gl_FragDepth\"\n};\n\nfunction applyRules(shaderText, rules) {\n\n for (let rule in rules) {\n\n const replacement = rules[rule];\n var regex = new RegExp(rule, \"g\");\n\n shaderText = shaderText.replace(regex, (match) => {\n const number = match.match(/\\d+(?=$)/g);\n return number ? replacement.replace(/X/g, number[0]) : replacement;\n });\n\n }\n\n return shaderText;\n\n}\n\n\nexport default {\n\n castVShaderToWebGL1 : function(shaderText) {\n return applyRules(shaderText, WebGL1VertRules);\n },\n\n castFShaderToWebGL1 : function(shaderText) {\n return applyRules(shaderText, WebGL1FragRules);\n },\n\n castVShaderToWebGL2 : function(shaderText) {\n return applyRules(shaderText, WebGL2VertRules);\n },\n\n castFShaderToWebGL2 : function(shaderText) {\n return applyRules(shaderText, WebGL2FragRules);\n },\n\n applyCustomRules: function(shaderText, customRules) {\n return applyRules(shaderText, customRules);\n }\n\n}\n","\nconst hashBufferIn = new Float64Array(1);\nconst hashBufferOut = new Uint32Array(hashBufferIn.buffer);\n\nexport { generateHashCode };\n\nfunction hashCodeNumber(num, initValue) {\n\n let hash = initValue;\n hashBufferIn[0] = num;\n\n hash = (hash << 5) - hash + hashBufferOut[0];\n hash = hash & hash;\n hash = (hash << 5) - hash + hashBufferOut[1];\n hash = hash & hash;\n\n return hash;\n\n}\n\nfunction hashCodeString(str, initValue) {\n\n let hash = initValue;\n\n for (let i = 0; i < str.length; ++i) {\n\n const symbol = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + symbol;\n // convert to 32 bit integer\n hash = hash & hash; \n\n }\n\n return hash;\n\n}\n\nfunction generateHashCode(obj, initValue) {\n\n let hash = initValue;\n\n switch (typeof obj) {\n case \"object\":\n if (obj) {\n switch (obj.constructor) {\n case Object:\n for (let prop in obj) {\n hash = generateHashCode(obj[prop], hash);\n }\n break;\n case Int8Array:\n case Uint8Array:\n case Uint8ClampedArray:\n case Int16Array:\n case Uint16Array:\n case Int32Array:\n case Uint32Array:\n case Float32Array:\n case Float64Array:\n for (let j = 0; j < obj.length; ++j) {\n hash = hashCodeNumber(obj[j], hash);\n }\n break;\n case Array:\n for (let j = 0; j < obj.length; ++j) {\n hash = generateHashCode(obj[j], hash);\n }\n break;\n case WebGLUniformLocation:\n case WebGLProgram:\n case WebGLShader:\n case WebGLFramebuffer:\n case WebGLRenderbuffer:\n case WebGLTexture:\n case WebGLBuffer:\n hash = hashCodeNumber(0, hash);\n break;\n default:\n for (let prop in obj) {\n hash = generateHashCode(obj[prop], hash);\n }\n break;\n }\n } else {\n hash = hashCodeNumber(0, hash);\n }\n break;\n case \"number\":\n hash = hashCodeNumber(obj, hash);\n break;\n case \"boolean\":\n hash = hashCodeNumber(obj | 0, hash);\n break;\n case \"string\":\n hash = hashCodeString(obj, hash);\n break;\n default:\n hash = hashCodeNumber(0, hash);\n break;\n }\n\n return hash;\n\n}","import GL from \"_src/engine/gl\";\nimport shaderPreprocessor from \"_src/engine/shader_preprocessor.js\";\nimport extensions from \"_src/engine/extensions\";\nimport compat from \"_src/engine/compat\";\nimport gl_types from \"_src/engine/gl_types\";\nimport { generateHashCode } from \"_src/engine/hash\";\nimport {uniformSource,\n blendFactor,\n blendEquation,\n stencilAction,\n stencilFunc,\n triangleSide,\n cullingFrontFace,\n uniformType} from \"_src/engine/constants\";\nimport output from \"_src/engine/output\";\n\nimport { vec2, vec3, vec4, mat2, mat3, mat4 } from \"_src/libs/gl-matrix\";\n\nconst WEBGL2_SYSTEM_GENERATED_VALUE = [\"gl_VertexID\", \"gl_InstanceID\"];\nconst WEBGL1_SYSTEM_GENERATED_VALUE = [];\n\nexport default class Shader {\n\n constructor(params) {\n\n this.sceneUniformsSetters = [];\n this.objectUniformsSetters = [];\n this.chunkUniformsSetters = [];\n this.shaderUniformsSetters = [];\n\n this.id = 0;\n\n this.uniforms = {};\n\n this.attributesLocations = {};\n\n //rendering props\n this.backFaceCulling = params.backFaceCulling != undefined ? params.backFaceCulling : true;\n\n this.transparent = params.transparent || false;\n\n this.drawColor = params.drawColor != undefined ? params.drawColor : true;\n\n this.depthTest = params.depthTest != undefined ? params.depthTest : true;\n this.stencilTest = false;\n this.scissorTest = false;\n this.scissor = [0,0,0,0];\n this.polygonOffsetEnabled = false;\n this.polygonOffset = [0,0];\n this.frontFace = gl_types.getTriangleSide(triangleSide.FRONT);\n this.backFace = gl_types.getTriangleSide(triangleSide.BACK);\n // front\n this.stencilFrontFail = gl_types.getStencilAction(stencilAction.KEEP);\n this.stencilFrontZFail = gl_types.getStencilAction(stencilAction.KEEP);\n this.stencilFrontZPass = gl_types.getStencilAction(stencilAction.KEEP);\n // back\n this.stencilBackFail = gl_types.getStencilAction(stencilAction.KEEP);\n this.stencilBackZFail = gl_types.getStencilAction(stencilAction.KEEP);\n this.stencilBackZPass = gl_types.getStencilAction(stencilAction.KEEP);\n\n this.stencilFunc = gl_types.getStencilFunction(stencilFunc.ALWAYS);\n this.stencilReferenceVal = 1;\n this.stencilTestMask = 0xFF;\n this.stencilUpdateMask = 0xFF;\n\n this.sourceBlendFactor = params.sourceBlendFactor !== undefined ?\n gl_types.getBlendFactor(params.sourceBlendFactor) :\n gl_types.getBlendFactor(blendFactor.SRC_ALPHA);\n this.destBlendFactor = params.destBlendFactor !== undefined ?\n gl_types.getBlendFactor(params.destBlendFactor) :\n gl_types.getBlendFactor(blendFactor.ONE_MINUS_SRC_ALPHA);\n\n this.blendEquationRgb = gl_types.getBlendEquation(blendEquation.FUNC_ADD);\n this.blendEquationAlpha = gl_types.getBlendEquation(blendEquation.FUNC_ADD);\n\n this.needsUpdate = true;\n\n // hardware props\n this.mrtEnabled = false;\n this.standardDerivativesEnabled = false;\n this.textureLodSamplingEnabled = false;\n this.writeDepth = false;\n\n this.generalOutputEnabled = false;\n\n this.cullingFrontFace = gl_types.getFrontFace(cullingFrontFace.COUNTER_CLOCK_WISE);\n\n this.instancedMode = params.instancedMode != undefined ? params.instancedMode : false;\n this.instanceDivisor = 0;\n this.instancedAttributesRemapping = {};\n\n this.program = null;\n this._directives = {};\n this._dependentDirectives = new Set();\n this._textures = [];\n this.initDirectives(params);\n\n }\n\n renderCallback() {}\n\n setVectorUniform(name, value, index) {\n\n const uniform = this.uniforms[name];\n\n if (!uniform) {\n output.error(output.DEVELOPERS_ERROR, `Couldn't find uniform ${name}`);\n }\n\n switch(uniform.type) {\n case uniformType.FLOAT1V:\n case uniformType.INT1V:\n uniform.value[index] = value;\n break;\n case uniformType.FLOAT2V:\n case uniformType.INT2V:\n uniform.value[2 * index] = value[0];\n uniform.value[2 * index + 1] = value[1];\n break;\n case uniformType.FLOAT3V:\n case uniformType.INT3V:\n uniform.value[3 * index] = value[0];\n uniform.value[3 * index + 1] = value[1];\n uniform.value[3 * index + 2] = value[2];\n break;\n case uniformType.FLOAT4V:\n case uniformType.INT4V:\n uniform.value[4 * index] = value[0];\n uniform.value[4 * index + 1] = value[1];\n uniform.value[4 * index + 2] = value[2];\n uniform.value[4 * index + 3] = value[3];\n break;\n default:\n output.error(output.DEVELOPERS_ERROR, `Unknown uniform type ${uniform.type}`);\n return;\n }\n\n this.dropID();\n\n }\n\n setUniform(name, value) {\n\n const uniform = this.uniforms[name];\n\n if (!uniform) {\n output.error(output.DEVELOPERS_ERROR, `Couldn't find uniform ${name}`);\n }\n\n switch(uniform.type) {\n case uniformType.FLOAT1:\n case uniformType.INT1:\n uniform.value = value;\n break;\n case uniformType.FLOAT2:\n case uniformType.INT2:\n vec2.copy(uniform.value, value);\n break;\n case uniformType.FLOAT3:\n case uniformType.INT3:\n vec3.copy(uniform.value, value);\n break;\n case uniformType.FLOAT4:\n case uniformType.INT4:\n vec4.copy(uniform.value, value);\n break;\n\n case uniformType.MAT2:\n mat2.copy(uniform.value, value);\n break;\n case uniformType.MAT3:\n mat3.copy(uniform.value, value);\n break;\n case uniformType.MAT4:\n mat4.copy(uniform.value, value);\n break;\n default:\n output.error(output.DEVELOPERS_ERROR, `Unknown uniform type ${uniform.type}`);\n return;\n }\n\n this.dropID();\n\n }\n\n //function for reimplementation\n initDirectives() {}\n\n setDirective(name, value) {\n if (this._dependentDirectives.has(name)) {\n output.error(output.DEVELOPERS_ERROR, \"Directive \" + name + \" can't be set directly. Use shader method.\");\n return;\n }\n\n this._setDirective(name, value);\n }\n\n getDirectiveValue(name) {\n return this._directives[name];\n }\n\n _setDirective(name, value) {\n if (!(name in this._directives)) {\n output.error(output.DEVELOPERS_ERROR, \"Unknown shader directive: \" + name);\n return;\n }\n\n if (this._directives[name] === value) {\n return;\n }\n\n this._directives[name] = value;\n this.needsUpdate = true;\n this.dropID();\n }\n\n dropID() {\n this.id = 0;\n }\n\n generateUniqueID() {\n this.id = generateHashCode(this, 0);\n return this.id;\n }\n\n setupTextures() {\n if (this._textures.length) {\n GL.setupTextures(this._textures);\n }\n }\n\n setSourceBlendFactor(sfactor) {\n this.sourceBlendFactor = gl_types.getBlendFactor(sfactor);\n }\n\n setDestBlendFactor(dfactor) {\n this.destBlendFactor = gl_types.getBlendFactor(dfactor);\n }\n\n setBlendEquation(funcRgb, funcAlpha) {\n this.blendEquationRgb = gl_types.getBlendEquation(funcRgb);\n this.blendEquationAlpha = gl_types.getBlendEquation(funcAlpha);\n this.dropID();\n }\n\n enableStencilTest() {\n this.stencilTest = true;\n this.dropID();\n }\n\n disableStencilTest() {\n this.stencilTest = false;\n this.dropID();\n }\n\n enableDepthTest() {\n this.depthTest = true;\n this.dropID();\n }\n\n disableDepthTest() {\n this.depthTest = false;\n this.dropID();\n }\n\n enableScissorTest() {\n this.scissorTest = true;\n this.dropID();\n }\n\n disableScissorTest() {\n this.scissorTest = false;\n this.dropID();\n }\n\n setScissor(scissor) {\n this.scissor = scissor;\n }\n\n enablePolygonOffset() {\n this.polygonOffsetEnabled = true;\n this.dropID();\n }\n\n disablePolygonOffset() {\n this.polygonOffsetEnabled = false;\n this.dropID();\n }\n\n setPolygonOffset(factor, units) {\n this.polygonOffset = [factor, units];\n }\n\n setStencilFrontFailAction(action) {\n this.stencilFrontFail = gl_types.getStencilAction(action);\n this.dropID();\n }\n\n setStencilFrontZFailAction(action) {\n this.stencilFrontZFail = gl_types.getStencilAction(action);\n this.dropID();\n }\n\n setStencilFrontZPassAction(action) {\n this.stencilFrontZPass = gl_types.getStencilAction(action);\n this.dropID();\n }\n\n setStencilBackFailAction(action) {\n this.stencilBackFail = gl_types.getStencilAction(action);\n this.dropID();\n }\n\n setStencilBackZFailAction(action) {\n this.stencilBackZFail = gl_types.getStencilAction(action);\n this.dropID();\n }\n\n setStencilBackZPassAction(action) {\n this.stencilBackZPass = gl_types.getStencilAction(action);\n this.dropID();\n }\n\n setStencilFunction(func) {\n this.stencilFunc = gl_types.getStencilFunction(func);\n this.dropID();\n }\n\n setStencilReferenceValue(ref) {\n this.stencilReferenceVal = ref;\n this.dropID();\n }\n\n setStencilTestMask(mask) {\n this.stencilTestMask = mask;\n this.dropID();\n }\n\n setStencilUpdateMask(mask) {\n this.stencilUpdateMask = mask;\n this.dropID();\n }\n\n setCullingFrontFace(frontFace) {\n this.cullingFrontFace = gl_types.getFrontFace(frontFace);\n this.dropID();\n }\n\n compile(vertText, fragText, customPreprocessRules = {}) {\n\n if (!vertText || !fragText) {\n throw \"Can't construct a shader. Missing shader texts.\";\n }\n\n let processedVertexText, processedFragmentText;\n\n const directivesText = extractDirectivesText(this);\n\n processedVertexText = directivesText + \"\\n\" + vertText;\n processedFragmentText = directivesText + \"\\n\" + fragText;\n\n if (GL.checkWebGL2()) {\n\n processedVertexText = shaderPreprocessor.castVShaderToWebGL2(processedVertexText);\n processedFragmentText = shaderPreprocessor.castFShaderToWebGL2(processedFragmentText);\n\n } else {\n\n processedVertexText = shaderPreprocessor.castVShaderToWebGL1(processedVertexText);\n processedFragmentText = shaderPreprocessor.castFShaderToWebGL1(processedFragmentText);\n\n }\n\n processedVertexText = shaderPreprocessor.applyCustomRules(processedVertexText,\n customPreprocessRules);\n processedFragmentText = shaderPreprocessor.applyCustomRules(processedFragmentText,\n customPreprocessRules);\n\n const gl = GL.getContext();\n\n const program = gl.createProgram();\n\n const vertShader = compileShader(gl, processedVertexText, gl.VERTEX_SHADER);\n const fragShader = compileShader(gl, processedFragmentText, gl.FRAGMENT_SHADER);\n\n gl.attachShader(program, vertShader);\n gl.attachShader(program, fragShader);\n\n gl.linkProgram(program);\n\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n\n const info = gl.getProgramInfoLog(program);\n output.error(output.DEVELOPERS_ERROR, \"Could not compile shader program. \\n\\n\" + info);\n gl.deleteProgram(program);\n gl.deleteShader(vertShader);\n gl.deleteShader(fragShader);\n\n return;\n\n }\n\n this.program = program;\n this.needsUpdate = false;\n\n this._collectAttributes(gl);\n this._cleanupUniformSetters();\n this._collectUniforms(gl);\n\n }\n\n // these methods should be implemented by derived shaders\n updateSceneUniformValues() { }\n updateObjectUniformValues() { }\n updateChunkUniformValues() { }\n\n updateSceneDirectives() { }\n\n _collectUniforms(gl) {\n\n var uniNumber = gl.getProgramParameter(this.program, gl.ACTIVE_UNIFORMS);\n\n for (let i = 0; i < uniNumber; ++i) {\n\n const uni = gl.getActiveUniform(this.program, i);\n const uniformName = uni.name;\n const uniformLocation = gl.getUniformLocation(this.program, uniformName);\n\n const uniform = this.uniforms[uniformName];\n\n if (!uniform) {\n output.error(output.DEVELOPERS_ERROR, \"Shader program requires the following uniform to be added: \\\"\" + uniformName + \"\\\"\");\n continue;\n }\n\n uniform.location = uniformLocation;\n\n switch (uniform.source) {\n case uniformSource.SCENE:\n this.sceneUniformsSetters.push(uniform);\n break;\n case uniformSource.SHADER:\n this.shaderUniformsSetters.push(uniform);\n break;\n case uniformSource.OBJECT:\n this.objectUniformsSetters.push(uniform);\n break;\n case uniformSource.CHUNK:\n this.chunkUniformsSetters.push(uniform);\n break;\n }\n\n }\n\n }\n\n _cleanupUniformSetters() {\n this.sceneUniformsSetters.length = 0;\n this.objectUniformsSetters.length = 0;\n this.chunkUniformsSetters.length = 0;\n this.shaderUniformsSetters.length = 0;\n }\n\n _collectAttributes(gl) {\n\n this.attributesLocations = {};\n\n const systemGeneratedValue = GL.checkWebGL2() ? WEBGL2_SYSTEM_GENERATED_VALUE : WEBGL1_SYSTEM_GENERATED_VALUE;\n\n var attrNumber = gl.getProgramParameter(this.program, gl.ACTIVE_ATTRIBUTES);\n\n for (let i = 0; i < attrNumber; ++i) {\n\n var attr = gl.getActiveAttrib(this.program, i);\n\n if (systemGeneratedValue.indexOf(attr.name) != -1) {\n continue;\n }\n\n this.attributesLocations[attr.name] = gl.getAttribLocation(this.program, attr.name);\n\n }\n\n }\n\n}\n\nfunction compileShader(gl, text, type) {\n\n const shader = gl.createShader(type);\n\n gl.shaderSource(shader, text);\n gl.compileShader(shader);\n\n const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n if (!success) {\n\n const lines = text.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n lines[i] = (i + 1) + \" \" + lines[i];\n }\n text = lines.join(\"\\n\");\n\n throw \"Could not compile shader:\" + gl.getShaderInfoLog(shader) + \"\\n\" + text;\n }\n\n return shader;\n\n}\n\nfunction extractDirectivesText(shader) {\n\n let combinedDirectives = combineDirectives(shader);\n\n return combinedDirectives.join(\"\\n\");\n\n}\n\nfunction combineDirectives(shader) {\n\n const result = [];\n const shaderDirectives = [];\n const serviceDirectives = [];\n\n const isWebGL2 = GL.checkWebGL2();\n const standardDerivatives = extensions.get(\"OES_standard_derivatives\");\n\n for (const directive in shader._directives) {\n\n const value = shader._directives[directive];\n shaderDirectives.push(\"#define \" + directive + \" \" + toShaderValue(value));\n }\n\n if (isWebGL2) {\n serviceDirectives.push(\"#version 300 es\");\n }\n shaderDirectives.push(\"#define WEBGL2 \" + toShaderValue(isWebGL2));\n\n if (shader.mrtEnabled && compat.mrtEnabled) {\n\n if (!isWebGL2) {\n serviceDirectives.push(\"#extension GL_EXT_draw_buffers : require\");\n }\n\n }\n shaderDirectives.push(\"#define MULTIPLE_RENDER_TARGETS \" + toShaderValue(shader.mrtEnabled && compat.mrtEnabled));\n shaderDirectives.push(\"#define CUSTOM_OUTPUT \" + toShaderValue(shader.generalOutputEnabled));\n\n if (shader.standardDerivativesEnabled && standardDerivatives) {\n\n if (!isWebGL2) {\n serviceDirectives.push(\"#extension GL_OES_standard_derivatives : enable\");\n }\n }\n\n if (shader.textureLodSamplingEnabled && !isWebGL2) {\n extensions.get(\"EXT_shader_texture_lod\");\n serviceDirectives.push(\"#extension GL_EXT_shader_texture_lod : enable\");\n }\n shaderDirectives.push(\"#define STANDARD_DERIVATIVES \" + toShaderValue(shader.standardDerivativesEnabled && Boolean(standardDerivatives)));\n\n if (shader.writeDepth && extensions.checkDepthWrite() && !isWebGL2) {\n serviceDirectives.push(\"#extension GL_EXT_frag_depth:enable\");\n }\n\n result.push.apply(result, serviceDirectives);\n result.push.apply(result, shaderDirectives);\n\n return result;\n\n}\n\nfunction toShaderValue(value) {\n switch (typeof value) {\n case \"number\":\n return parseFloat(value);\n case \"boolean\":\n return value ? 1 : 0;\n default:\n return value ? value: 0;\n }\n}\n\n","type INullable = null | undefined;\n\nexport const isNonNullable = (value: T): value is NonNullable => typeof value !== 'undefined' && value !== null;\n\nexport const isNullable = (value: unknown): value is INullable => value === undefined || value === null;\n","import renderer from \"_src/engine/renderer\";\nimport Scene from \"_src/engine/scene\";\n\nexport default class Pass {\n\n constructor(attachmentsStorage) {\n\n this.attachmentsStorage = attachmentsStorage;\n\n this.scenes = [];\n\n this.enabled = false;\n\n }\n\n init() {}\n\n enable() {\n this.enabled = true;\n }\n\n render(skipChunkTests) {\n\n for (let i = 0; i < this.scenes.length; ++i) {\n\n const scene = this.scenes[i];\n\n if (scene.getEnabled()) {\n renderer.renderScene(scene, skipChunkTests);\n }\n\n }\n\n }\n\n readPixels(sceneNumber, viewport) {\n\n const scene = this.scenes[sceneNumber];\n\n return scene.getBufferPixels(viewport);\n\n }\n\n getColorAttachment(number) {\n\n const scene = this.getMainScene();\n const frameBuffer = scene.getFramebuffer();\n\n if (!frameBuffer) {\n return null;\n }\n\n const colorAttachments = frameBuffer.colorAttachments;\n\n return colorAttachments ? colorAttachments[number] : null;\n\n }\n\n getDepthAttachment() {\n\n const scene = this.getMainScene();\n const frameBuffer = scene.getFramebuffer();\n\n if (!frameBuffer) {\n return null;\n }\n\n return frameBuffer.depthAttachment;\n\n }\n\n getScreenQuad(scene) {\n return scene._children[0];\n }\n\n getScenes() {\n return this.scenes;\n }\n\n getMainScene() {\n return this.scenes[0];\n }\n\n getSecondScene() {\n return this.scenes[1];\n }\n\n getLastScene() {\n return this.scenes[this.scenes.length - 1];\n }\n\n _addScene(camera) {\n\n const scene = new Scene();\n scene.appendCamera(camera);\n this.scenes.push(scene);\n\n return scene;\n\n }\n\n getOutputBody() {\n\n const scene = this.getLastScene();\n return scene.getFramebuffer();\n\n }\n\n resize(width, height) {\n for (let scene of this.scenes) {\n scene.resize(width, height);\n }\n }\n\n disable() {\n\n for (let i = 0; i < this.scenes.length; ++i) {\n\n const scene = this.scenes[i];\n\n const resolveFrameBuffer = scene.getResolvedBuffer();\n const frameBuffer = scene.getFramebuffer();\n\n scene.setFramebuffer(null);\n scene.setResolvedBuffer(null);\n\n if (frameBuffer) {\n frameBuffer.cleanup();\n }\n\n if (resolveFrameBuffer) {\n resolveFrameBuffer.cleanup();\n }\n\n }\n\n this.enabled = false;\n\n }\n\n destroy() {\n\n for (const scene of this.scenes) {\n scene.removeChildren();\n }\n this.scenes.length = 0;\n\n this.attachmentsStorage = null;\n\n }\n\n}\n","import { vec3, vec4, mat3, mat4, quat } from \"_src/libs/gl-matrix\";\n\nconst degree = Math.PI / 180;\n\nexport function isPowerOfTwo(number) {\n return number && !(number & (number - 1));\n}\n\nexport function normalizePlane(plane) {\n const a = plane[0], b = plane[1], c = plane[2], d = plane[3];\n\n const length = Math.sqrt(a * a + b * b + c * c);\n const k = 1 / length;\n\n plane[0] = a * k;\n plane[1] = b * k;\n plane[2] = c * k;\n plane[3] = d * k;\n}\n\nexport function projectPointOnPlane(dest, point, plane) {\n\n const t = (vec3.dot(point, plane) + plane[3]) / vec3.dot(plane, plane);\n\n dest[0] = point[0] - t * plane[0];\n dest[1] = point[1] - t * plane[1];\n dest[2] = point[2] - t * plane[2];\n\n}\n\nexport function getBboxSize(bbox) {\n\n const x = bbox[3] - bbox[0];\n const y = bbox[4] - bbox[1];\n const z = bbox[5] - bbox[2];\n\n return Math.sqrt(x * x + y * y + z * z);\n\n}\n\nexport function getBboxCenter(bbox, dest) {\n\n const x = 0.5 * (bbox[3] + bbox[0]);\n const y = 0.5 * (bbox[4] + bbox[1]);\n const z = 0.5 * (bbox[5] + bbox[2]);\n\n return vec3.set(dest, x, y, z);\n\n}\n\nconst _vec3Tmp = vec3.create();\nconst _vec3Tmp2 = vec3.create();\n\nexport function getPointVectorNearestPoint(pointA, pointB, pointO, dest) {\n\n const AB = vec3.sub(_vec3Tmp, pointB, pointA);\n const OA = vec3.sub(_vec3Tmp2, pointO, pointA);\n\n const t = vec3.dot(AB, OA) / vec3.dot(AB, AB);\n\n vec3.scaleAndAdd(dest, pointA, AB, t);\n\n return t;\n\n}\n\nexport function toRadian(angle) {\n return angle * degree;\n}\n\nexport function toDegree(angle) {\n return angle / degree;\n}\n\nexport function lerpValues(v1, v2, t) {\n return v1 * (1 - t) + v2 * t;\n}\n\nexport const decomposeMat4 = (function() {\n const mat3Tmp = mat3.create();\n const vec3Tmp = vec3.create();\n\n return function(matrix, position, quaternion, scale) {\n let sx = vec3.length(vec3.set(vec3Tmp, matrix[0], matrix[1], matrix[2]));\n let sy = vec3.length(vec3.set(vec3Tmp, matrix[4], matrix[5], matrix[6]));\n let sz = vec3.length(vec3.set(vec3Tmp, matrix[8], matrix[9], matrix[10]));\n\n // if determine is negative, we need to invert one scale\n let det = mat4.determinant(matrix);\n if (det < 0) sx = -sx;\n\n vec3.set(position, matrix[ 12 ], matrix [ 13 ], matrix[ 14 ]);\n\n mat3.fromMat4(mat3Tmp, matrix);\n\n let invSX = 1 / sx;\n let invSY = 1 / sy;\n let invSZ = 1 / sz;\n\n mat3Tmp[0] *= invSX;\n mat3Tmp[1] *= invSX;\n mat3Tmp[2] *= invSX;\n\n mat3Tmp[3] *= invSY;\n mat3Tmp[4] *= invSY;\n mat3Tmp[5] *= invSY;\n\n mat3Tmp[6] *= invSZ;\n mat3Tmp[7] *= invSZ;\n mat3Tmp[8] *= invSZ;\n\n quat.fromMat3(quaternion, mat3Tmp);\n\n vec3.set(scale, sx, sy, sz);\n }\n})();\n\nexport function createMirrorMatrix(outMatrix, plane) {\n let m = outMatrix;\n let a = plane[0];\n let b = plane[1];\n let c = plane[2];\n let d = plane[3];\n\n m[0] = 1-2*a*a;\n m[1] = -2*b*a;\n m[2] = -2*c*a;\n m[3] = 0.0;\n m[4] = -2*a*b;\n m[5] = 1-2*b*b;\n m[6] = -2*c*b;\n m[7] = 0.0;\n m[8] = -2*a*c;\n m[9] = -2*b*c;\n m[10]= 1-2*c*c;\n m[11]= 0.0;\n m[12] = -2*a*d;\n m[13] = -2*b*d;\n m[14]= -2*c*d;\n m[15]= 1.0;\n}\n\nexport function centroid( points, centroid ) {\n vec3.set(centroid, 0, 0, 0);\n for (let point of points) {\n vec3.add(centroid, centroid, point);\n }\n return vec3.scale(centroid, centroid, 1/points.length);\n}\n\nexport function planeODR( points, centroid, direction ) {\n // Find the best plane normal\n const M = [];\n for (let point of points) {\n for (let i=0; i<3; i++){\n M.push(point[i] - centroid[i]);\n }\n }\n\n return directionThroughSVD(points.length, 3, M, direction);\n}\n\nexport function angle2D(a, b){\n const dot = a[0] * b[0] + a[1] * b[1];\n const det = a[0] * b[1] - b[0] * a[1];\n return Math.atan2(det, dot);\n}\n\nexport const transformVecMat4 = (function() {\n\n const vec4Tmp = vec4.create();\n\n return function(dest, vector, matrix) {\n\n vec4.set(vec4Tmp, vector[0], vector[1], vector[2], 0);\n vec4.transformMat4(vec4Tmp, vec4Tmp, matrix);\n\n return vec3.copy(dest, vec4Tmp);\n\n };\n\n})();\n\nexport const orthogonalization = (function () {\n const vec3Tmp = vec3.create();\n\n return function(axis, right, up) {\n let direction = vec3.set(vec3Tmp, 0.0, 0.0, 1.0);\n if (Math.abs(vec3.dot(direction, axis)) === 1.0) {\n direction = vec3.set(vec3Tmp, 0.0, 1.0, 0.0);\n }\n\n vec3.cross(right, axis, direction);\n vec3.normalize(right, right);\n vec3.cross(up, axis, right);\n }\n})();\n\nfunction getShiftedMatrix(m, n, data) {\n let matrix = [];\n matrix[0] = Array(n+1).fill(0);\n for (let i=0; i= 0.0) ? Math.abs(a) : -Math.abs(a);\n}\n\nfunction svdcmp(a, m, n, w, v)\n{\n let i,its,j,jj,k,l;\n let anorm,c,f,g,h,s,scale,x,y,z;\n\n const rv1 = Array(n+1);\n g=scale=anorm=0.0;\n l=0;\n for (let i=1; i<=n; i++){\n l=i+1;\n rv1[i]=scale*g;\n g=s=scale=0.0;\n if (i <= m) {\n for (k=i;k<=m;k++) {\n scale += Math.abs(a[k][i]);\n }\n if (scale) {\n for (k=i;k<=m;k++) {\n a[k][i] /= scale;\n s += a[k][i]*a[k][i];\n }\n f=a[i][i];\n g = -condSign(Math.sqrt(s),f);\n h=f*g-s;\n a[i][i]=f-g;\n for (j=l;j<=n;j++) {\n for (s=0.0,k=i;k<=m;k++) {\n s += a[k][i]*a[k][j];\n }\n f=s/h;\n for (k=i;k<=m;k++) {\n a[k][j] += f*a[k][i];\n }\n }\n for (k=i;k<=m;k++) {\n a[k][i] *= scale;\n }\n }\n }\n w[i]=scale *g;\n g=s=scale=0.0;\n if (i <= m && i != n) {\n for (k=l;k<=n;k++) {\n scale += Math.abs(a[i][k]);\n }\n if (scale) {\n for (k=l;k<=n;k++) {\n a[i][k] /= scale;\n s += a[i][k]*a[i][k];\n }\n f=a[i][l];\n g = -condSign(Math.sqrt(s),f);\n h=f*g-s;\n a[i][l]=f-g;\n for (k=l;k<=n;k++) {\n rv1[k]=a[i][k]/h;\n }\n for (j=l;j<=m;j++) {\n for (s=0.0,k=l;k<=n;k++) {\n s += a[j][k]*a[i][k];\n }\n for (k=l;k<=n;k++) {\n a[j][k] += s*rv1[k];\n }\n }\n for (k=l;k<=n;k++) {\n a[i][k] *= scale;\n }\n }\n }\n anorm=Math.max(anorm,(Math.abs(w[i])+Math.abs(rv1[i])));\n\n }\n\n for (i=n;i>=1;i--) {\n if (i < n) {\n if (g) {\n for (j=l;j<=n;j++) {\n v[j][i] = (a[i][j] / a[i][l]) / g;\n }\n for (j=l;j<=n;j++) {\n for (s=0.0,k=l;k<=n;k++) {\n s += a[i][k]*v[k][j];\n }\n for (k=l;k<=n;k++) {\n v[k][j] += s*v[k][i];\n }\n }\n }\n for (j=l;j<=n;j++) {\n v[i][j]=v[j][i]=0.0;\n }\n }\n v[i][i]=1.0;\n g=rv1[i];\n l=i;\n }\n for (i=Math.min(m,n);i>=1;i--) {\n l=i+1;\n g=w[i];\n for (j=l;j<=n;j++) {\n a[i][j]=0.0;\n }\n if (g) {\n g=1.0/g;\n for (j=l;j<=n;j++) {\n for (s=0.0,k=l;k<=m;k++) {\n s += a[k][i]*a[k][j];\n }\n f=(s/a[i][i])*g;\n for (k=i;k<=m;k++) {\n a[k][j] += f*a[k][i];\n }\n }\n for (j=i;j<=m;j++) {\n a[j][i] *= g;\n }\n } else {\n for (j=i;j<=m;j++) {\n a[j][i]=0.0;\n }\n }\n ++a[i][i];\n }\n\n let flag,nm;\n nm=0;\n for (k=n;k>=1;k--) {\n for (its=1;its<=30;its++) {\n flag=1;\n for (l=k;l>=1;l--) {\n nm=l-1;\n if (Math.abs(rv1[l])+anorm == anorm) {\n flag=0;\n break;\n }\n if (Math.abs(w[nm])+anorm == anorm) {\n break;\n }\n }\n if (flag) {\n c=0.0;\n s=1.0;\n for (i=l;i<=k;i++) {\n f=s*rv1[i];\n rv1[i]=c*rv1[i];\n if (Math.abs(f)+anorm == anorm) {\n break;\n }\n g=w[i];\n h=pythag(f,g);\n w[i]=h;\n h=1.0/h;\n c=g*h;\n s = -f*h;\n for (j=1;j<=m;j++) {\n y=a[j][nm];\n z=a[j][i];\n a[j][nm]=y*c+z*s;\n a[j][i]=z*c-y*s;\n }\n }\n }\n z=w[k];\n if (l == k) {\n if (z < 0.0) {\n w[k] = -z;\n for (j=1;j<=n;j++) {\n v[j][k] = -v[j][k];\n }\n }\n break;\n }\n if (its == 30)\n {\n return false;\n }\n x=w[l];\n nm=k-1;\n y=w[nm];\n g=rv1[nm];\n h=rv1[k];\n f=((y-z)*(y+z)+(g-h)*(g+h))/(2.0*h*y);\n g=pythag(f,1.0);\n f=((x-z)*(x+z)+h*((y/(f+condSign(g,f)))-h))/x;\n c=s=1.0;\n for (j=l;j<=nm;j++) {\n i=j+1;\n g=rv1[i];\n y=w[i];\n h=s*g;\n g=c*g;\n z=pythag(f,h);\n rv1[j]=z;\n c=f/z;\n s=h/z;\n f=x*c+g*s;\n g = g*c-x*s;\n h=y*s;\n y *= c;\n for (jj=1;jj<=n;jj++) {\n x=v[jj][j];\n z=v[jj][i];\n v[jj][j]=x*c+z*s;\n v[jj][i]=z*c-x*s;\n }\n z=pythag(f,h);\n w[j]=z;\n if (z) {\n z=1.0/z;\n c=f*z;\n s=h*z;\n }\n f=c*g+s*y;\n x=c*y-s*g;\n for (jj=1;jj<=m;jj++) {\n y=a[jj][j];\n z=a[jj][i];\n a[jj][j]=y*c+z*s;\n a[jj][i]=z*c-y*s;\n }\n }\n rv1[l]=0.0;\n rv1[k]=f;\n w[k]=x;\n }\n }\n return true;\n}\n\nfunction pythag(a, b) {\n const absa = Math.abs(a);\n const absb = Math.abs(b);\n if (absa > absb) {\n return absa * Math.sqrt(1.0 + (absb / absa) * (absb / absa));\n } else {\n return absb == 0.0 ? 0.0 : absb*Math.sqrt(1.0+(absa/absb)*(absa/absb));\n }\n}\n","import {vec3, quat} from \"_src/libs/gl-matrix\";\nimport {objectType} from \"_src/constants\";\n\nexport default class {\n\n constructor() {\n this.trans = null;\n this.quat = null;\n this.scale = null;\n }\n\n apply(object) {\n if (object.type !== objectType.GROUP) {\n object.model.copyTranslation(this.trans);\n object.model.copyRotation(this.quat);\n object.model.copyScale(this.scale);\n object.model.updateMatrix();\n }\n }\n\n appendData(object) {\n if (object.type !== objectType.GROUP) {\n this.trans = object.model.getTranslation(vec3.create());\n this.scale = object.model.getScale(vec3.create());\n this.quat = object.model.getRotation(quat.create());\n }\n }\n\n}\n","import cache from \"_cacheModule\";\nimport minmaxUtils from \"_src/engine/utility/minmax\";\n\nexport default class {\n\n constructor(cacheID, hasSelected, chunkID = \"\", chunkBbox = []) {\n\n this.cacheID = cacheID;\n this.chunkID = chunkID;\n this.chunkBbox = [];\n minmaxUtils.copy(this.chunkBbox, chunkBbox);\n this.cacheInfo = [];\n this.hasSelected = hasSelected;\n\n }\n\n apply(chunk) {\n\n chunk.geometry.setHasSelectedVertices(this.hasSelected);\n minmaxUtils.copy(chunk.geometry.bbox, this.chunkBbox);\n\n return loadCachedData(chunk, this.cacheInfo);\n\n }\n\n appendData(chunk, buffersNames) {\n\n const geometry = chunk.geometry;\n const layout = geometry.getLayout();\n\n for (let bufferName of buffersNames) {\n if (bufferName in layout) {\n const buffer = layout[bufferName].getBuffer();\n const bufferType = layout[bufferName].type;\n this._putIntoCache( buffer, bufferType, bufferName );\n }\n }\n\n }\n\n clearCache() {\n\n for (let info of this.cacheInfo) {\n const id = info.id;\n cache.delete(id);\n }\n\n }\n\n checkCacheEntry(bufferName) {\n\n for (let info of this.cacheInfo) {\n if (info.name === bufferName) {\n return true;\n }\n }\n\n return false;\n\n }\n\n updateCache(chunk) {\n\n const geometry = chunk.geometry;\n const oldCacheInfo = this.cacheInfo;\n\n this.cacheInfo = [];\n\n const layout = geometry.getLayout();\n\n for (let oldInfo of oldCacheInfo) {\n\n const bufferName = oldInfo.name;\n\n if (bufferName in layout) {\n const buffer = layout[bufferName].getBuffer();\n const bufferType = layout[bufferName].type;\n this._putIntoCache( buffer, bufferType, bufferName );\n }\n\n }\n\n }\n\n _putIntoCache( data, buffType, name ) {\n\n const id = this.cacheID + name;\n\n if (!hasId(this.cacheInfo, id)) {\n this.cacheInfo.push( { id, name, buffType } );\n cache.put(id, data);\n }\n\n }\n\n removeFromCache(buffName) {\n const id = this.cacheID + buffName;\n for (let i=0; i {\n item.setBuffer(buffer, bufferType);\n })\n );\n\n }\n\n return Promise.all(promises).then(() => {\n\n for (let info of cacheInfo) {\n chunk.markAttributeDirty(info.name);\n }\n\n geometry.repairSelectionBuffers();\n\n });\n\n}\n","import {vec3} from \"_src/libs/gl-matrix\";\n\nexport default class {\n\n constructor() {\n this.point = null;\n this.normal = null;\n this.selector = null;\n }\n\n apply() {\n this.selector.applyHistoryToPlane(this.point, this.normal);\n }\n\n appendData(selector, point, normal) {\n this.selector = selector;\n this.point = point ? vec3.clone(point) : null;\n this.normal = normal ? vec3.clone(normal) : null;\n }\n\n}\n","import ObjectState from \"_src/history/object_state\";\nimport ChunkState from \"_src/history/chunk_state\";\nimport PlaneState from \"_src/history/plane_state\";\nimport Chunk from \"_src/engine/chunk\";\nimport workspace from \"_src/workspace\";\nimport cache from \"_cacheModule\";\nimport {colorType, stepType} from \"_src/constants\";\nimport appState from \"_src/app_state\";\n\nimport events from \"_src/engine/events\";\nimport {Geometry, GeometryBuffer} from \"_src/engine/geometry\";\nimport output from \"_src/engine/output\";\nimport bufferFactory from \"_src/engine/factories/pixel_buffer\";\nimport {pixelBufferType} from \"_src/engine/constants\";\nimport {colorUtils, idGenerator} from \"_src/utils\";\nimport { DEFAULT_ATTRIBUTES } from \"_src/engine/utility/attributes\";\n\nconst ERASE_BUFFER_NAMES = [\"indices\", \"a_position\", \"a_normal\", \"a_selection_mask\", \"a_uv\", \"a_color\", \"a_size\"];\nconst DEFEATURE_BUFFER_NAMES = [\"indices\", \"a_position\", \"a_normal\", \"a_selection_mask\", \"indices\", \"a_uv\"];\nconst SELECT_BUFFER_NAMES = [\"a_selection_mask\"];\nconst SMOOTH_BUFFER_NAMES = [\"a_position\", \"a_normal\"];\nconst HEAL_TEXTURE_BUFFER_NAMES = [\"a_selection_mask\"];\n\nlet historyLocked = false;\n\nconst steps = [];\n\nconst modifiedFrames = [];\nconst modifiedObjects = [];\n\nconst WAITING = 0;\nconst PREVIOUS_STEP = 1;\nconst NEXT_STEP = 2;\n\nlet stepToApply = WAITING;\n\nlet currentUndo = 0;\nlet maxUndos = 10;\nlet currentStepID = 0;\nlet enabled = true;\n\nclass StepData {\n\n constructor(stepID, type, payload, uuid) {\n this.id = stepID;\n this.uuid = uuid || idGenerator.generateUUID();\n this.type = type;\n this.objectsState = [];\n this.framesState = [];\n this.planeState = null;\n this.payload = payload;\n this.applicable = true;\n }\n\n async apply() {\n\n historyLocked = true;\n appState.setStateValue(\"isApplyingHistoryStep\", true);\n\n const objectsState = this.objectsState;\n const promises = [];\n\n for (let i = 0; i < objectsState.length; i+=2) {\n const object = objectsState[i];\n const state = objectsState[i+1];\n promises.push(state.apply(object));\n }\n\n for (let frameState of this.framesState) {\n applyTexture(frameState, promises);\n addNewChunks(frameState, promises);\n deleteOldChunks(frameState);\n }\n\n try {\n await Promise.all(promises);\n\n //Note: we need to process update operation after add operation\n const updatePromises = [];\n updateAllExistedChunks(this.framesState, updatePromises);\n\n await Promise.all(updatePromises);\n\n updateDataStructures(this.framesState).then(() => {\n if (this.planeState) {\n this.planeState.apply();\n }\n\n historyLocked = false;\n appState.setStateValue(\"isApplyingHistoryStep\", false);\n events.emit(\"objects_updated\", workspace.getObjects());\n });\n\n return true;\n\n } catch (e) {\n output.error(output.DEVELOPERS_ERROR, \"Can't apply history step: \" + e);\n return false;\n }\n\n }\n\n addObjectState(object) {\n\n let objState = getState(object, this.objectsState);\n\n if (!objState) {\n objState = new ObjectState();\n this.objectsState.push(object, objState);\n }\n\n objState.appendData(object);\n\n }\n\n setSelectionPlaneState(selector, point, normal) {\n this.planeState = new PlaneState();\n this.planeState.appendData(selector, point, normal);\n }\n\n addFrameState(frame, chunksIn, chunksUp, chunksOut, buffersNames) {\n\n let frameState = this.framesState.find(frameState => frameState[\"frame\"] === frame);\n\n if (!frameState) {\n frameState = {\"frame\": frame, \"in\": [], \"up\": [], \"out\": [], \"texture\": null};\n this.framesState.push(frameState);\n }\n\n const frameStateInd = this.framesState.indexOf(frameState);\n\n const frameTextureInfo = frame.textureList[0] ? frame.textureList[0][0] : null;\n if (frameTextureInfo) {\n frameState[\"texture\"] = {};\n frameState[\"texture\"].file = frameTextureInfo.path;\n frameState[\"texture\"].channels = frameTextureInfo.channels;\n frameState[\"texture\"].width = frameTextureInfo.width;\n frameState[\"texture\"].height = frameTextureInfo.height;\n }\n\n for (let chunkUp of chunksUp) {\n const chunk = frame.getChunkByID(chunkUp);\n const buffersToSave = chunk.geometry.isPointCloud ? buffersNames.filter(bufferName => bufferName !== \"indices\") : buffersNames;\n\n let chunkState = frameState[\"up\"].find(chunkState => chunkState.chunkID === chunkUp);\n if (!chunkState) {\n const cacheID = this.id + \"hist\" + frameStateInd + \"up\" + chunk.getID();\n chunkState = new ChunkState(cacheID, chunk.geometry.checkHasSelectedVertices(), chunkUp, chunk.geometry.bbox);\n frameState[\"up\"].push(chunkState);\n }\n chunkState.appendData(chunk, buffersToSave);\n\n //if chunk has modified buffers to save\n if (buffersToSave.filter(value => DEFAULT_ATTRIBUTES.includes(value)).length > 0) {\n workspace.markChunkAsUpdated(chunk);\n }\n }\n\n for (let chunkIn of chunksIn) {\n const chunk = frame.getChunkByID(chunkIn);\n const buffersToSave = chunk.geometry.isPointCloud ? buffersNames.filter(bufferName => bufferName !== \"indices\") : buffersNames;\n\n let chunkState = frameState[\"in\"].find(chunkState => chunkState.chunkID === chunkIn);\n if (!chunkState) {\n const cacheID = this.id + \"hist\" + frameStateInd + \"in\" + chunk.getID();\n chunkState = new ChunkState(cacheID, chunk.geometry.checkHasSelectedVertices(), chunkIn, chunk.geometry.bbox);\n frameState[\"in\"].push(chunkState);\n }\n chunkState.appendData(chunk, buffersToSave);\n\n }\n\n for (let chunkOut of chunksOut) {\n let chunkState = frameState[\"out\"].find(chunkState => chunkState.chunkID === chunkOut);\n if (!chunkState) {\n const cacheID = this.id + \"hist\" + frameStateInd + \"out\" + chunkOut;\n chunkState = new ChunkState(cacheID, false, chunkOut, []);\n frameState[\"out\"].push(chunkState);\n }\n }\n\n }\n\n clearCache() {\n for (let frameState of this.framesState) {\n for (let chunkState of frameState[\"in\"].concat(frameState[\"up\"]).concat(frameState[\"out\"])){\n chunkState.clearCache();\n }\n }\n this.applicable = false;\n }\n\n updateCache(chunk) {\n for (let frameState of this.framesState) {\n for (let chunkState of frameState[\"in\"].concat(frameState[\"up\"]).concat(frameState[\"out\"])){\n chunkState.updateCache(chunk);\n }\n }\n }\n\n}\n\nexport default {\n setEnabled(isEnabled) {\n enabled = isEnabled;\n },\n\n writeFrameToCurrentStep({type, frame, chunksIn=[], chunksUp=[], chunksOut=[]}) {\n if (!enabled) {\n return;\n }\n\n this._addChunksToModifiedFrame(frame, chunksIn, chunksUp, chunksOut);\n\n const numSteps = this._getNumSteps();\n this._writeFrameToStep(type, frame, chunksIn, chunksUp, chunksOut, numSteps - currentUndo - 1);\n },\n\n writeObjectToCurrentStep(object) {\n if (!enabled) {\n return;\n }\n\n if (this._getModifiedObjects().indexOf(object) === -1) {\n this._addModifiedObject(object);\n }\n\n const numSteps = this._getNumSteps();\n this._writeObjectToStep(object, numSteps - currentUndo - 1);\n\n },\n\n writeSelectionPlaneToCurrentStep(selector, point = null, normal = null) {\n if (!enabled) {\n return;\n }\n\n const numSteps = this._getNumSteps();\n this._writeSelectionPlaneToStep(selector, point, normal, numSteps - currentUndo - 1);\n },\n\n addStep(type, payload = null, uuid = \"\") {\n if (!enabled) {\n return;\n }\n\n const isSelectionPlaneStep = type === stepType.SELECT && payload.type === appState.ST_CUT_OFF_PLANE;\n const isCustomStep = type === stepType.CUSTOM;\n\n const modifiedObjects = this._getModifiedObjects();\n\n if (modifiedObjects.length === 0 && modifiedFrames.length === 0 && !isSelectionPlaneStep && !isCustomStep) {\n return;\n }\n\n this._addStep(type, payload, uuid);\n\n const step = this._getNumSteps() - currentUndo - 1;\n if (step === 0) {\n output.error(output.DEVELOPERS_ERROR, \"Can't add history step. History is empty when adding step\");\n return\n }\n\n while (modifiedObjects.length > 0) {\n const obj = modifiedObjects.pop();\n this._writeObjectToStep(obj, step);\n }\n\n while (modifiedFrames.length > 0) {\n const modifyInfo = modifiedFrames.pop();\n\n const checkedUpChunks = [];\n const frame = modifyInfo[\"frame\"];\n for (let chunkUpID of modifyInfo[\"up\"]) {\n const chunkUp = frame.getChunkByID(chunkUpID);\n if (chunkUp.geometry.empty()) {\n //Note: we need to put this chunk to the delete-list\n //we need to insert it to the add-list of the previous step as well\n\n const prevStepData = steps[step-1];\n const prevStepFrameState = prevStepData.framesState.find(frameState => frameState[\"frame\"] === frame);\n if (!prevStepFrameState) {\n output.error(output.DEVELOPERS_ERROR, \"Can't add history step. Modified frame is not present in the previous step\");\n continue;\n }\n\n let prevStepChunkStateIdx;\n for (prevStepChunkStateIdx = 0; prevStepChunkStateIdx < prevStepFrameState[\"up\"].length; prevStepChunkStateIdx++){\n if (prevStepFrameState[\"up\"][prevStepChunkStateIdx].chunkID === chunkUpID) {\n break;\n }\n }\n\n if (prevStepChunkStateIdx === prevStepFrameState[\"up\"].length) {\n output.error(output.DEVELOPERS_ERROR, \"Can't add history step. Modified chunk is not present in the previous step\");\n continue;\n }\n\n const prevStepChunkState = prevStepFrameState[\"up\"].splice(prevStepChunkStateIdx, 1)[0];\n if (!prevStepFrameState[\"in\"].find(chunkState => chunkState.cacheID === prevStepChunkState.cacheID)) {\n prevStepFrameState[\"in\"].push(prevStepChunkState);\n }\n\n modifyInfo[\"in\"].push(chunkUpID);\n } else {\n checkedUpChunks.push(chunkUpID);\n }\n }\n\n //Note: that's not a mistake, \"in\" and \"out\" chunks swap after step applying\n for (let chunkIn of modifyInfo[\"in\"]) {\n const chunk = frame.getChunkByID(chunkIn);\n frame.deleteChunk(chunk);\n }\n modifyInfo[\"out\"].forEach(chunkOut => workspace.markChunkAsNew(frame.getChunkByID(chunkOut)));\n\n this._writeFrameToStep(type, modifyInfo[\"frame\"], modifyInfo[\"out\"], checkedUpChunks, modifyInfo[\"in\"], step);\n }\n\n reportHistoryStack();\n },\n\n schedulePreviousStepApply() {\n\n if (historyLocked) {\n return false;\n }\n\n stepToApply = PREVIOUS_STEP;\n\n return true;\n\n },\n\n scheduleNextStepApply() {\n\n if (historyLocked) {\n return false;\n }\n\n stepToApply = NEXT_STEP;\n\n return true;\n\n },\n\n async apply() {\n if (!cache.isAvailable()) return false;\n\n const step = stepToApply;\n\n if (step == WAITING || historyLocked) {\n return false;\n }\n\n stepToApply = WAITING;\n\n const historyPromise = step === PREVIOUS_STEP ? this._applyPreviousStep() : this._applyNextStep();\n const result = await historyPromise;\n reportHistoryStack();\n\n return result;\n },\n\n async _applyPreviousStep() {\n\n const numSteps = this._getNumSteps();\n\n if (historyLocked || !appState.getStateValue(\"editingAllowed\")) {\n return false;\n }\n\n if (currentUndo >= numSteps - 1 || currentUndo >= maxUndos) {\n events.emit(\"undo\", { ...getHistoryStack(), notApplicable: true });\n return false;\n }\n\n const currStep = numSteps - currentUndo - 1;\n const newStepData = steps[currStep - 1];\n if (!newStepData.applicable) {\n events.emit(\"undo\", { ...getHistoryStack(), notApplicable: true });\n return false;\n }\n\n ++currentUndo;\n\n events.emit(\"undo\", getHistoryStack());\n\n return await newStepData.apply();\n },\n\n async _applyNextStep() {\n\n const numSteps = this._getNumSteps();\n if (historyLocked || !appState.getStateValue(\"editingAllowed\")) {\n return false;\n }\n\n if (currentUndo === 0) {\n events.emit(\"redo\", { ...getHistoryStack(), notApplicable: true });\n return false;\n }\n\n const currStep = numSteps - currentUndo - 1;\n const newStepData = steps[currStep + 1];\n if (!newStepData.applicable) {\n events.emit(\"redo\", { ...getHistoryStack(), notApplicable: true });\n return false;\n }\n\n --currentUndo;\n\n events.emit(\"redo\", getHistoryStack());\n\n return await newStepData.apply();\n },\n\n setMaxUndos(newMaxUndos) {\n maxUndos = newMaxUndos;\n },\n\n restart() {\n\n for (let step of steps) {\n step.clearCache();\n }\n\n currentUndo = 0;\n currentStepID = 0;\n steps.length = 0;\n this._resetModifiedObjects();\n this._resetModifiedFrames();\n\n this._addStep(stepType.NONE, null);\n reportHistoryStack();\n\n },\n\n removeCustomStep(uuid) {\n const stepID = steps.findIndex(step => step.uuid === uuid && step.type === stepType.CUSTOM);\n if (stepID < 0) {\n output.error(output.API_ERROR, \"Can't remove custom step. There no custom step with uuid \" + uuid + \" in history\");\n return;\n }\n\n const currentPos = steps.length - currentUndo;\n if (stepID >= currentPos) {\n currentUndo--;\n }\n\n moveStepState(steps[stepID], steps[stepID-1]);\n steps[stepID].clearCache();\n steps.splice(stepID, 1);\n reportHistoryStack();\n },\n\n removeSelectionSteps() {\n let toStep = null;\n let fromStep = null;\n for (let i=0; i= currentPos) {\n currentUndo--;\n }\n\n steps[i].clearCache();\n steps.splice(i, 1);\n } else {\n for (const frameState of steps[i].framesState) {\n for (const chunkState of frameState[\"in\"].concat(frameState[\"up\"]).concat(frameState[\"out\"])) {\n chunkState.removeFromCache(\"a_selection_mask\");\n }\n }\n steps[i].planeState = null;\n\n i++;\n }\n }\n\n reportHistoryStack();\n },\n\n getLastConsecutiveSelectionSteps() {\n const activeSelectionSteps = [];\n // start from the next-to-last step\n const startStep = steps.length - currentUndo - 2;\n for (let i = startStep; i >= 0; --i) {\n const step = steps[i];\n if (step.type != stepType.SELECT) {\n break;\n }\n activeSelectionSteps.unshift(step.payload);\n }\n return activeSelectionSteps;\n },\n\n _writeFrameToStep(type, frame, chunksIn, chunksUp, chunksOut, step) {\n const stepData = steps[step];\n stepData.addFrameState(frame, chunksIn, chunksUp, chunksOut, getBuffersNamesByStepType(type));\n },\n\n _writeObjectToStep(object, step) {\n const stepData = steps[step];\n stepData.addObjectState(object);\n },\n\n _writeSelectionPlaneToStep(selector, point, normal, step) {\n const stepData = steps[step];\n stepData.setSelectionPlaneState(selector, point, normal);\n },\n\n _addStep(type, payload, uuid) {\n\n const numSteps = this._getNumSteps();\n\n const currStep = numSteps - currentUndo - 1;\n\n const stepData = new StepData(currentStepID++, type, payload, uuid);\n\n if (currentUndo > 0) {\n\n for (let i = currStep + 1; i < numSteps; ++i) {\n const stepToDrop = steps[i];\n stepToDrop.clearCache();\n }\n\n steps.splice(-currentUndo, currentUndo, stepData);\n\n } else {\n\n if (numSteps >= maxUndos + 1) {\n const stepToDrop = steps[numSteps - maxUndos - 1];\n stepToDrop.clearCache();\n }\n\n steps.push(stepData);\n\n }\n\n currentUndo = 0;\n\n },\n\n _getNumSteps() {\n return steps.length;\n },\n\n _getModifiedObjects() {\n return modifiedObjects;\n },\n\n _addModifiedObject(object) {\n modifiedObjects.push(object);\n },\n\n _resetModifiedObjects() {\n modifiedObjects.length = 0;\n },\n\n _addChunksToModifiedFrame(frame, chunksIn, chunksUp, chunksOut) {\n let modifiedFrame = modifiedFrames.find(modifyInfo => modifyInfo.frame === frame);\n if (!modifiedFrame) {\n modifiedFrame = {\"frame\": frame, \"in\": [], \"up\": [], \"out\": []};\n modifiedFrames.push(modifiedFrame);\n }\n\n modifiedFrame[\"in\"] = modifiedFrame[\"in\"].concat(chunksIn);\n modifiedFrame[\"up\"] = modifiedFrame[\"up\"].concat(chunksUp);\n modifiedFrame[\"out\"] = modifiedFrame[\"out\"].concat(chunksOut);\n },\n\n _resetModifiedFrames() {\n modifiedFrames.length = 0;\n },\n\n}\n\nfunction applyTexture(frameState, promises) {\n const frame = frameState[\"frame\"];\n\n const frameTextureInfo = frame.textureList[0] ? frame.textureList[0][0] : null;\n const savedTextureInfo = frameState[\"texture\"];\n\n if (frameTextureInfo) {\n\n if (savedTextureInfo) {\n\n if (frameTextureInfo.path !== savedTextureInfo.file) {\n frameTextureInfo.path = savedTextureInfo.file;\n promises.push(frame.loadTexture());\n }\n\n } else {\n\n frame.dropTextures();\n\n }\n\n } else {\n\n if (savedTextureInfo) {\n\n const textureInfo = {\"levels\": [savedTextureInfo]};\n frame.addTextureInfo(textureInfo);\n\n const texture = bufferFactory.create(pixelBufferType.T_RGBA,\n {width: 1, height: 1, immutable: true});\n\n const textureColor = colorUtils.linToSRGB(frame.model.properties.diffuseColor, new Array(3));\n const textureBuffer = new Uint8Array([0, 0, 0, 255]);\n\n textureBuffer[0] = colorUtils.floatToByte(textureColor[0]);\n textureBuffer[1] = colorUtils.floatToByte(textureColor[1]);\n textureBuffer[2] = colorUtils.floatToByte(textureColor[2]);\n\n texture.initMipMapLevelBuffer(0, textureBuffer);\n\n frame.model.setTexture(texture, 0);\n const shader = frame.model.shader;\n shader.setDirective(\"COLOR_TYPE\", colorType.TEXTURE_UV);\n\n promises.push(frame.loadTexture());\n }\n\n }\n}\n\nfunction addNewChunks(frameState, promises) {\n const frame = frameState[\"frame\"];\n\n for (let chunkState of frameState[\"in\"]) {\n let chunk = frame.getChunkByID(chunkState.chunkID);\n const chunkAlreadyInFrame = Boolean(chunk);\n if (!chunk) {\n chunk = new Chunk(chunkState.chunkID);\n\n const layout = {};\n for (let info of chunkState.cacheInfo) {\n layout[info.name] = new GeometryBuffer({ buffer : new ArrayBuffer(0), type : info.buffType });\n }\n const newGeometry = new Geometry({\n bbox : chunkState.chunkBbox,\n layout : layout,\n });\n chunk.geometry = newGeometry;\n }\n\n promises.push(chunkState.apply(chunk).then(()=> {\n if (appState.getStateValue(\"activeTool\") === appState.TT_ERASER && !chunk.geometry.hasLayoutItem(\"a_selection_mask\")) {\n chunk.geometry.initSelectionBuffers();\n chunk.markAttributeDirty(\"a_selection_mask\");\n }\n\n if (!chunkAlreadyInFrame) {\n frame.addChunk(chunk);\n }\n\n events.emit(\"update_chunk_octree\", chunk);\n events.emit(\"update_chunk_halfedges\", chunk);\n workspace.setNeedsDupliVerticesUpdate(chunk, true);\n\n // TODO: WS-945\n chunk.updateGlBuffers(frame.model.shader);\n\n }));\n }\n}\n\nfunction deleteOldChunks(frameState) {\n const frame = frameState[\"frame\"];\n\n for (let chunkState of frameState[\"out\"]) {\n const chunk = frame.getChunkByID(chunkState.chunkID);\n if (!chunk) {\n continue;\n }\n\n frame.deleteChunk(chunk, false);\n }\n}\n\nfunction updateAllExistedChunks(framesState, promises) {\n for (let frameState of framesState) {\n\n const frame = frameState[\"frame\"];\n\n for (let chunkState of frameState[\"up\"]) {\n const chunk = frame.getChunkByID(chunkState.chunkID);\n if (!chunk) {\n output.error(output.DEVELOPERS_ERROR, \"Can't apply history step. Trying to update chunk which is not in frame\");\n continue;\n }\n\n const needsDataStructsUpdate = chunkState.checkCacheEntry(\"a_position\");\n\n promises.push(chunkState.apply(chunk).then(()=> {\n\n if (needsDataStructsUpdate) {\n\n events.emit(\"update_chunk_octree\", chunk);\n events.emit(\"update_chunk_halfedges\", chunk);\n workspace.setNeedsDupliVerticesUpdate(chunk, true);\n\n // TODO: WS-945\n chunk.updateGlBuffers(frame.model.shader);\n }\n\n }));\n }\n }\n}\n\nasync function updateDataStructures(framesState) {\n for (const frameState of framesState) {\n const frame = frameState[\"frame\"];\n workspace._calculateNeighbourChunks(frame.model.chunks);\n }\n\n const dataStructPromises = [];\n for (const object of workspace.getObjects()) {\n\n object.setState(appState.GS_OCTREE, false);\n object.setState(appState.GS_HALF_EDGE, false);\n\n dataStructPromises.push(workspace.applyState(object));\n\n }\n\n await Promise.all(dataStructPromises);\n}\n\nfunction getState(targetData, states) {\n\n const dataInd = states.indexOf(targetData);\n\n if (dataInd !== -1) {\n return states[dataInd + 1];\n }\n\n return null;\n\n}\n\nfunction moveStepState(stepFrom, stepTo) {\n for (const frameState of stepFrom.framesState) {\n let existedFrameState = stepTo.framesState.find(state => state[\"frame\"] === frameState[\"frame\"]);\n if (!existedFrameState) {\n existedFrameState = {\"frame\": frameState[\"frame\"], \"in\": [], \"up\": [], \"out\": [], \"texture\": frameState[\"texture\"]};\n stepTo.framesState.push(existedFrameState);\n }\n\n existedFrameState[\"in\"] = existedFrameState[\"in\"].concat(frameState[\"in\"]);\n existedFrameState[\"up\"] = existedFrameState[\"up\"].concat(frameState[\"up\"]);\n existedFrameState[\"out\"] = existedFrameState[\"out\"].concat(frameState[\"out\"]);\n }\n stepFrom.framesState.length = 0;\n\n for (const objectState of stepFrom.objectsState) {\n stepTo.objectsState.push(objectState);\n }\n stepFrom.objectsState.length = 0;\n}\n\nfunction getBuffersNamesByStepType(type) {\n switch (type) {\n case stepType.ERASE:\n return ERASE_BUFFER_NAMES;\n case stepType.SELECT:\n return SELECT_BUFFER_NAMES;\n case stepType.SMOOTH:\n return SMOOTH_BUFFER_NAMES;\n case stepType.DEFEATURE:\n return DEFEATURE_BUFFER_NAMES;\n case stepType.HEAL_TEXTURE:\n return HEAL_TEXTURE_BUFFER_NAMES;\n }\n\n return [];\n}\n\nfunction reportHistoryStack() {\n const historyStack = getHistoryStack();\n events.emit(\"history\", historyStack);\n}\n\nfunction getHistoryStack() {\n const stack = [];\n for (const step of steps) {\n if (step.type !== stepType.NONE && step.applicable) {\n stack.push({\"type\": step.type, \"payload\": step.payload, \"uuid\": step.uuid});\n }\n }\n return {\"stack\": stack, \"position\": stack.length - currentUndo};\n}\n","import output from \"_src/engine/output.js\";\n\nexport default {\n\n _chunksVerticesHash: new WeakMap(),\n\n addDupliVerticesToChunk(chunk, dupliList) {\n\n if (!dupliList) {\n return;\n }\n chunk.dupliVertices = dupliList;\n\n for (let vertInd in dupliList) {\n if (chunk.parentVerticesMask[vertInd]) {\n continue;\n }\n\n const chunkDuplis = dupliList[vertInd];\n\n for (let i = 0; i < chunkDuplis.length; i += 2) {\n const dupliChunk = chunkDuplis[i];\n const dupliVertInd = chunkDuplis[i + 1];\n dupliChunk.setHasParentVertex(dupliVertInd, 1);\n }\n }\n\n },\n\n buildDupliVertices(chunks, chunkToDuplis, searchInChunk = true) {\n for (const chunk of chunks) {\n chunkToDuplis.set(chunk, {});\n }\n\n const hashMap = new Map();\n for (const chunk of chunks) {\n const positions = chunk.geometry.getLayoutItem(\"a_position\").getBuffer();\n const verticesBorderMaskItem = chunk.geometry.getLayoutItem(\"vertices_border_mask\");\n\n if (!verticesBorderMaskItem) {\n output.error(output.DEVELOPERS_ERROR, \"Can't build dupli vertices: chunk \" + chunk.getID() + \" doesn't have vertices_border_mask\");\n return;\n }\n\n const verticesBorderMask = verticesBorderMaskItem.getBuffer();\n\n for (let i=0; i+2 {\n setNeedsUpdate(chunk, OS_OCTREE, true);\n });\n events.on(\"update_chunk_halfedges\", (chunk) => {\n setNeedsUpdate(chunk, OS_HALF_EDGE, true);\n });\n },\n\n update(object) {\n\n if (_objectsUpdatePromises.has(object)) {\n return _objectsUpdatePromises.get(object);\n }\n\n if (!object.loaded) {\n output.error(output.DEVELOPERS_ERROR, \"Couldn't update unloaded object \" + object.getID());\n return Promise.reject(\"Object update error.\");\n }\n\n let update = 0b0;\n\n const promise = Promise.resolve().then(() => {\n const hasNormals = object.type === objectType.SURFELS;\n const needs = (appState.getState(appState.GS_NORMALS) || appState.getStateValue(\"renderMode\") === appState.RM_POINTS) && !hasNormals;\n const needsAverage = object.type === objectType.FUSION || object.type === objectType.CAD;\n const searchInChunk = object.type !== objectType.CAD;\n\n update |= OS_NORMAL;\n\n return updateNormals(object, needs, needsAverage, searchInChunk).then(() => { object.setState(OS_NORMAL, object.getState(OS_NORMAL) || needs || hasNormals); });\n }).then(() => {\n if (!object.getState(OS_BOUNDING)) {\n update |= OS_BOUNDING;\n return updateBoundings(object).then(() => { object.setState(OS_BOUNDING, true); });\n }\n return Promise.resolve();\n }).then(() => {\n const needs = appState.getState(appState.GS_OCTREE);\n update |= OS_OCTREE;\n return updateOctree(object, needs).then(() => { object.setState(OS_OCTREE, needs); });\n }).then(() => {\n const needs = appState.getState(appState.GS_HALF_EDGE);\n update |= OS_HALF_EDGE;\n return updateHalfEdges(object, needs).then(() => { object.setState(OS_HALF_EDGE, needs); });\n }).then(() => {\n _objectsUpdatePromises.delete(object);\n //NOTE: it doesn't work for CAD objects\n const isUpToDate = (!appState.getState(appState.GS_NORMALS) || appState.getState(appState.GS_NORMALS) && object.getState(OS_NORMAL)) &&\n (!appState.getState(appState.GS_OCTREE) || appState.getState(appState.GS_OCTREE) && object.getState(OS_OCTREE)) &&\n (!appState.getState(appState.GS_HALF_EDGE) || appState.getState(appState.GS_HALF_EDGE) && object.getState(OS_HALF_EDGE)) &&\n object.getState(OS_BOUNDING);\n finishUpdate(object, update);\n return isUpToDate ? Promise.resolve() : this.update(object);\n });\n\n _objectsUpdatePromises.set(object, promise);\n\n return promise;\n\n },\n\n checkIsUpdating(object) {\n return _objectsUpdatePromises.has(object);\n },\n\n getUpdatePromise(object) {\n return _objectsUpdatePromises.get(object);\n }\n\n}\n\nfunction updateOctree(object, needs) {\n\n const shouldBuild = !object.getState(OS_OCTREE);\n\n const promises = [];\n for (const frame of object.frames) {\n if (!frame.loaded) {\n continue;\n }\n\n for (const chunk of frame.model.chunks) {\n if (!chunk.geometry) {\n // NOTE: this can happen if the chunk is unloaded during update\n continue;\n }\n\n if (!needs) {\n chunk.geometry.removeOctree();\n chunk.updateSelectionMask(false);\n setNeedsUpdate(chunk, OS_OCTREE, true);\n continue;\n }\n\n if (!getNeedsUpdate(chunk, OS_OCTREE) && !shouldBuild) {\n continue;\n }\n\n promises.push(chunk.geometry.buildOctree(config.useWorkers).then(() => {\n setNeedsUpdate(chunk, OS_OCTREE, false);\n return chunk;\n }));\n }\n }\n\n return Promise.all(promises).then((chunks) => {\n for (const chunk of chunks) {\n chunk.updateSelectionMask(true);\n }\n });\n}\n\nfunction updateBoundings(object) {\n return object.recalcWorldMinmax();\n}\n\nfunction updateNormals(object, needs, needsDuplis, searchInChunk) {\n\n const shouldBuild = !object.getState(OS_NORMAL);\n\n const promises = [];\n for (const frame of object.frames) {\n if (!frame.loaded) {\n continue;\n }\n\n const updates = [];\n\n for (const chunk of frame.model.chunks) {\n\n if (!needs) {\n // chunk.removeNormals();\n continue;\n }\n\n if (!getNeedsUpdate(chunk, OS_NORMAL) && !shouldBuild) {\n continue;\n }\n updates.push(chunk.buildNormalsAndBorder(config.useWorkers, true, needsDuplis).then(() => {\n return chunk;\n }));\n }\n\n if (updates.length == 0) {\n continue;\n }\n\n promises.push(Promise.all(updates).then((chunks) => {\n if (needsDuplis) {\n const chunkToDuplis = new Map();\n chunksBuilder.buildDupliVertices(frame.model.chunks, chunkToDuplis, searchInChunk);\n for (const chunk of chunks) {\n chunk.averageNormals(chunkToDuplis.get(chunk));\n setNeedsUpdate(chunk, OS_NORMAL, false);\n }\n }\n }));\n }\n\n return Promise.all(promises);\n}\n\nfunction updateHalfEdges(object, needs) {\n\n const shouldBuild = !object.getState(OS_HALF_EDGE);\n\n const promises = [];\n for (const frame of object.frames) {\n if (!frame.loaded) {\n continue;\n }\n\n const updates = [];\n for (const chunk of frame.model.chunks) {\n if (!chunk.geometry) {\n // NOTE: this can happen if the chunk is unloaded during update\n continue;\n }\n\n if (!needs) {\n chunk.geometry.removeHalfEdges();\n chunk.geometry.deleteVerticesBorderMask();\n chunk.clearParentVerticesMask();\n setNeedsUpdate(chunk, OS_HALF_EDGE, true);\n continue;\n }\n\n if (!getNeedsUpdate(chunk, OS_HALF_EDGE) && !shouldBuild) {\n continue;\n }\n\n chunk.resetDupliVertices();\n chunk.resetParentVerticesMask();\n\n updates.push(chunk.geometry.buildHalfEdge(config.useWorkers).then(() => {\n\n chunk.resetDupliVertices();\n chunk.resetParentVerticesMask();\n\n setNeedsUpdate(chunk, OS_HALF_EDGE, false);\n return chunk;\n }));\n }\n promises.push(Promise.all(updates).then((chunks) => {\n const chunkToDuplis = new Map();\n chunksBuilder.buildDupliVertices(chunks, chunkToDuplis);\n for (const chunk of chunks) {\n chunksBuilder.addDupliVerticesToChunk(chunk, chunkToDuplis.get(chunk));\n }\n }));\n }\n\n return Promise.all(promises);\n}\n\nfunction setNeedsUpdate(chunk, state, needs) {\n const container = getContainer(state);\n if (container) {\n if (needs) {\n container.add(chunk);\n } else {\n container.delete(chunk);\n }\n }\n}\n\nfunction getNeedsUpdate(chunk, state) {\n const container = getContainer(state);\n return container ? container.has(chunk) : false;\n}\n\nfunction getContainer(state) {\n if (state == OS_HALF_EDGE) {\n return _needHalfEdgesUpdate;\n }\n if (state == OS_OCTREE) {\n return _needOctreeUpdate;\n }\n if (state == OS_NORMAL) {\n return _needNormalUpdate;\n }\n return null;\n}\n\n\nfunction finishUpdate(object, state) {\n events.emit(\"object_geometry_updated\", { object, state });\n}\n","/**\n * Web Studio Event Controller namespace\n * @exports src/client/facade\n * @namespace input\n */\n\nimport events from \"_src/engine/events\";\n\nimport renderGraph from \"_src/render_graph/render_graph\";\nimport {screenUtils} from \"_src/client/utils\";\nimport inputCollector from \"_src/client/input\";\nimport windowManager from \"_src/client/window_manager\";\n\nlet zoomTimeout = null;\nlet zoomIsActive = false;\n\nconst input = {\n\n /**\n * Start camera control\n * @memberof input\n * @param {Number} clientX Client X coordinate\n * @param {Number} clientY Client Y coordinate\n * @method controlStart\n */\n controlStart(clientX, clientY) {\n const screenPoint = inputCollector.clientToPhysical(clientX, clientY);\n events.emit(\"control_start\", screenPoint);\n },\n /**\n * Lock cursor by viewcube\n * @memberof input\n * @param {Number} clientX Client X coordinate\n * @param {Number} clientY Client Y coordinate\n * @method viewcubeLockCursor\n */\n viewcubeLockCursor(clientX, clientY) {\n const screenPoint = inputCollector.clientToPhysical(clientX, clientY);\n const mainWindow = windowManager.getWindow(windowManager.MAIN);\n const viewCubePass = mainWindow.renderGraph.getPass(renderGraph.VIEWCUBE);\n const billboardScene = viewCubePass.getScenes()[2];\n const billboardCamera = billboardScene.camera;\n const ndcCoord = screenUtils.toScreen(mainWindow.getViewport(), billboardCamera.viewport,\n screenPoint.screenX, screenPoint.screenY);\n\n const camera = mainWindow.renderGraph.getWorkspaceScene().camera;\n const recalculatedScreenCoord = screenUtils.fromScreen(mainWindow.getViewport(), camera.viewport,\n ndcCoord.x, ndcCoord.y);\n\n events.emit(\"control_start\", { screenX : Math.round(recalculatedScreenCoord.x),\n screenY : Math.round(recalculatedScreenCoord.y) });\n },\n /**\n * Move camera control\n * @memberof input\n * @param {Number} deltaX Client X delta coordinate\n * @param {Number} deltaY Client Y delta coordinate\n * @method controlMove\n */\n controlMove(deltaX, deltaY) {\n const pixelRatio = screenUtils.getPixelRatio();\n let movementX = pixelRatio * deltaX;\n let movementY = -pixelRatio * deltaY;\n events.emit(\"control_move\", {movementX, movementY});\n },\n /**\n * Pan camera control\n * @memberof input\n * @param {Number} deltaX Client X delta coordinate\n * @param {Number} deltaY Client Y delta coordinate\n * @method controlPan\n */\n controlPan(deltaX, deltaY) {\n const pixelRatio = screenUtils.getPixelRatio();\n let movementX = pixelRatio * deltaX;\n let movementY = pixelRatio * deltaY;\n events.emit(\"control_pan\", {movementX, movementY});\n },\n /**\n * Stop camera control\n * @memberof input\n * @method controlEnd\n */\n controlEnd() {\n events.emit(\"control_end\");\n },\n /**\n * Zoom camera control\n * @memberof input\n * @param {Number} clientX Client X coordinate\n * @param {Number} clientY Client Y coordinate\n * @param {Number} delta Zoom step\n * @method controlZoom\n */\n controlZoom(clientX, clientY, delta) {\n const screenPoint = inputCollector.clientToPhysical(clientX, clientY);\n\n if (!zoomIsActive) {\n events.emit(\"control_zoom_start\", screenPoint);\n }\n\n zoomIsActive = true;\n clearTimeout(zoomTimeout);\n zoomTimeout = setTimeout(() => {\n zoomIsActive = false;\n events.emit(\"control_zoom_end\", screenPoint);\n }, 250);\n\n events.emit(\"control_zoom\", {screenX : screenPoint.screenX, screenY : screenPoint.screenY, delta});\n },\n /**\n * Set camera control target\n * @memberof input\n * @param {Number} clientX Client X coordinate\n * @param {Number} clientY Client Y coordinate\n * @method controlSetTarget\n */\n controlSetTarget(clientX, clientY) {\n const screenPoint = inputCollector.clientToPhysical(clientX, clientY);\n events.emit(\"control_set_target\", screenPoint);\n },\n /**\n * Start applying selected manipulator\n * @memberof input\n * @param {Number} clientX Client X coordinate\n * @param {Number} clientY Client Y coordinate\n * @method manipulatorStart\n */\n manipulatorStart(clientX, clientY) {\n const screenPoint = inputCollector.clientToPhysical(clientX, clientY);\n events.emit(\"manipulator_start\", screenPoint);\n },\n /**\n * Move selected manipulator\n * @memberof input\n * @param {Number} clientX Client X coordinate\n * @param {Number} clientY Client Y coordinate\n * @param {Boolean} active Is manipulator acvive or not\n * @method manipulatorMove\n */\n manipulatorMove(clientX, clientY, active) {\n const screenPoint = inputCollector.clientToPhysical(clientX, clientY);\n events.emit(\"manipulator_move\", {screenX : screenPoint.screenX, screenY : screenPoint.screenY, active});\n },\n /**\n * Stop applying selected manipulator\n * @memberof input\n * @param {Number} clientX Client X coordinate\n * @param {Number} clientY Client Y coordinate\n * @method manipulatorStart\n */\n manipulatorEnd(clientX, clientY) {\n const screenPoint = inputCollector.clientToPhysical(clientX, clientY);\n events.emit(\"manipulator_end\", screenPoint);\n },\n /**\n * Pass mouse interaction into the engine\n * @memberof input\n * @param {Number} clientX Client X coordinate\n * @param {Number} clientY Client Y coordinate\n * @param {Number} button Mouse button emitting the event\n * @param {Number} buttons Pressed mouse button\n * @method onMouseDown\n */\n onMouseDown(clientX, clientY, button, buttons) {\n inputCollector.mousedownHandler(clientX, clientY, button, buttons);\n },\n /**\n * Pass mouse interaction into the engine\n * @memberof input\n * @param {Number} clientX Client X coordinate\n * @param {Number} clientY Client Y coordinate\n * @param {Number} button Mouse button emitting the event\n * @param {Number} buttons Pressed mouse button\n * @method onMouseMove\n */\n onMouseMove(clientX, clientY, button, buttons) {\n inputCollector.mousemoveHandler(clientX, clientY, button, buttons);\n },\n /**\n * Pass mouse interaction into the engine\n * @memberof input\n * @param {Number} clientX Client X coordinate\n * @param {Number} clientY Client Y coordinate\n * @param {Number} button Mouse button emitting the event\n * @param {Number} buttons Pressed mouse button\n * @method onMouseUp\n */\n onMouseUp(clientX, clientY, button, buttons) {\n inputCollector.mouseupHandler(clientX, clientY, button, buttons);\n },\n};\n\nexport default input;\n","import Object3D from \"_src/engine/object\";\nimport { vec2, vec3, vec4, mat4 } from \"_src/libs/gl-matrix\";\nimport { cameraType } from \"_src/engine/constants\";\nimport { normalizePlane } from \"_src/engine/math\";\n\nconst _vec4Tmp1 = vec4.create();\n\nconst _mat4Tmp1 = mat4.create();\n\nexport default class Camera extends Object3D {\n constructor(type) {\n\n super();\n\n this.isCamera = true;\n\n this.type = type ? type : cameraType.PERSPECTIVE;\n\n this.near = 0.1;\n this.far = 1000.0;\n this.nearFar = vec2.fromValues(this.near, this.far);\n this.aspect = 1.0;\n this.projectionShift = vec2.fromValues(0, 0);\n\n this.fixedFov = Math.PI / 3;\n\n this._calculateAdaptiveFov();\n\n this.left = -1.0;\n this.right = 1.0;\n this.top = 1.0;\n this.bottom = -1.0;\n\n this.frustum = [\n [0,0,0,0], // left\n [0,0,0,0], // right\n [0,0,0,0], // top\n [0,0,0,0], // bottom\n [0,0,0,0], // near\n [0,0,0,0] // far\n ];\n\n this.viewProjMat = mat4.create();\n this.projMat = mat4.create();\n this.viewMat = mat4.create();\n this.viewInvMat = mat4.create();\n\n this.viewport = vec4.fromValues(0,0,1,1);\n this.texelSize = vec2.fromValues(1,1);\n\n }\n\n setViewport(width, height, left = 0, bottom = 0) {\n\n this.viewport[0] = left;\n this.viewport[1] = bottom;\n this.viewport[2] = width;\n this.viewport[3] = height;\n\n this.texelSize[0] = 1.0 / width;\n this.texelSize[1] = 1.0 / height;\n\n this.aspect = width / height;\n\n this._calculateAdaptiveFov();\n this.updateProjectMatrix();\n\n }\n\n setFieldOfView(angle) {\n this.fixedFov = angle;\n this._calculateAdaptiveFov();\n }\n\n setFovY(angle) {\n this.fov = angle;\n this._calculateFixedFov();\n }\n\n setType(type) {\n\n this.type = type;\n\n this.updateProjectMatrix();\n\n }\n\n isPerspective() {\n return this.type == cameraType.PERSPECTIVE;\n }\n\n isOrtho() {\n return this.type == cameraType.ORTHO;\n }\n\n updateProjectMatrix() {\n\n if (this.isPerspective()) {\n this.calculatePerspectiveProjMat(this.projMat);\n } else {\n this.calculateOrthoProjMat(this.projMat);\n }\n\n this.setProjectionMatrix(this.projMat);\n\n }\n\n setProjectionMatrix(projMat) {\n\n mat4.copy(this.projMat, projMat);\n mat4.multiply(this.viewProjMat, this.projMat, this.viewMat);\n\n vec2.set(this.nearFar, this.near, this.far);\n\n this.extractFrustum();\n\n }\n\n calculatePerspectiveProjMat(matrix) {\n mat4.perspective(matrix, this.fov, this.aspect, this.near, this.far);\n matrix[8] = this.projectionShift[0];\n matrix[9] = this.projectionShift[1];\n\n return matrix;\n }\n\n calculateOrthoProjMat(matrix) {\n\n const verticalDiff = (this.top - this.bottom) * this.aspect;\n\n this.left = -0.5 * verticalDiff;\n this.right = 0.5 * verticalDiff;\n\n return mat4.ortho(matrix, this.left, this.right, this.bottom, this.top,\n this.near, this.far);\n\n }\n\n calculateRay(x, y, dest) {\n\n if (this.isPerspective()) {\n return this._calculateRayPersp(x, y, dest);\n } else {\n return this._calculateRayOrtho(dest);\n }\n\n }\n\n extractFrustum() {\n\n const m = this.viewProjMat;\n\n const left = this.frustum[0];\n const right = this.frustum[1];\n const top = this.frustum[2];\n const bottom = this.frustum[3];\n const near = this.frustum[4];\n const far = this.frustum[5];\n\n left[0] = -m[3] - m[0];\n left[1] = -m[7] - m[4];\n left[2] = -m[11] - m[8];\n left[3] = -m[15] - m[12];\n\n right[0] = m[0] - m[3];\n right[1] = m[4] - m[7];\n right[2] = m[8] - m[11];\n right[3] = m[12] - m[15];\n\n top[0] = m[1] - m[3];\n top[1] = m[5] - m[7];\n top[2] = m[9] - m[11];\n top[3] = m[13] - m[15];\n\n bottom[0] = -m[3] - m[1];\n bottom[1] = -m[7] - m[5];\n bottom[2] = -m[11] - m[9];\n bottom[3] = -m[15] - m[13];\n\n near[0] = -m[3] - m[2];\n near[1] = -m[7] - m[6];\n near[2] = -m[11] - m[10];\n near[3] = -m[15] - m[14];\n\n far[0] = m[2] - m[3];\n far[1] = m[6] - m[7];\n far[2] = m[10] - m[11];\n far[3] = m[14] - m[15];\n\n normalizePlane(left);\n normalizePlane(right);\n normalizePlane(top);\n normalizePlane(bottom);\n normalizePlane(near);\n normalizePlane(far);\n\n }\n\n projectPoint(x, y, z, dest) {\n\n const point = vec4.set(_vec4Tmp1, x, y, z, 1);\n\n vec4.transformMat4(point, point, this.viewProjMat);\n vec3.scale(point, point, 1.0 / point[3]);\n\n return vec3.copy(dest, point);\n\n }\n\n unprojectPoint(x, y, z, dest) {\n\n const point = vec4.set(_vec4Tmp1, x, y, z, 1);\n const invertedViewProject = mat4.invert(_mat4Tmp1, this.viewProjMat);\n\n vec4.transformMat4(point, point, invertedViewProject);\n vec3.scale(point, point, 1.0 / point[3]);\n\n return vec3.copy(dest, point);\n\n }\n\n _calculateAdaptiveFov() {\n if (this.aspect > 1) {\n this.fov = 2 * Math.atan(Math.tan(this.fixedFov*0.5) / this.aspect);\n } else {\n this.fov = this.fixedFov;\n }\n }\n\n _calculateFixedFov() {\n if (this.aspect > 1) {\n this.fixedFov = Math.atan(Math.tan(this.fov / 2) * this.aspect) * 2;\n } else {\n this.fixedFov = this.fov;\n }\n }\n\n _calculateRayPersp(x, y, dest) {\n\n const tanFOV = Math.tan(this.fov * 0.5);\n\n const locX = x * tanFOV * this.aspect;\n const locY = y * tanFOV;\n\n const ray = vec4.set(_vec4Tmp1, locX, locY, -1, 0);\n\n vec4.transformMat4(ray, ray, this.modelMatrix);\n\n return vec3.normalize(dest, ray);\n\n }\n\n _calculateRayOrtho(dest) {\n\n const ray = vec4.set(_vec4Tmp1, 0, 0, -1, 0);\n\n vec4.transformMat4(ray, ray, this.modelMatrix);\n\n return vec3.normalize(dest, ray);\n\n }\n\n calculateOrigin(x, y, dest) {\n\n if (this.isPerspective()) {\n return this._calculateOriginPersp(dest);\n } else {\n return this._calculateOriginOrtho(x, y, dest);\n }\n\n }\n\n _calculateOriginPersp(dest) {\n return vec3.copy(dest, this.trans);\n }\n\n _calculateOriginOrtho(x, y, dest) {\n\n const xLocal = x * this.top * this.aspect;\n const yLocal = y * this.right / this.aspect;\n\n const origin = vec4.set(_vec4Tmp1, xLocal, yLocal, 0, 1);\n\n vec4.transformMat4(dest, origin, this.modelMatrix);\n\n return dest;\n\n }\n\n toScreenSpace(point3D, dest) {\n this.updateMatrix();\n return vec3.transformMat4(dest, point3D, this.viewProjMat);\n }\n\n updateMatrix() {\n\n const needsMatUpdate = this.checkNeedsMatUpdate();\n\n super.updateMatrix();\n\n if (needsMatUpdate) {\n\n mat4.invert(this.viewMat, this.modelMatrix);\n mat4.multiply(this.viewProjMat, this.projMat, this.viewMat);\n\n this.extractFrustum();\n\n }\n\n }\n\n updateNearFar(near, far) {\n\n this.near = near;\n this.far = far;\n\n this.updateProjectMatrix();\n\n }\n}\n","import {\n pixelBufferType,\n textureMagFilter,\n textureMinFilter,\n textureWrapper,\n RBIntFormat,\n memoryType\n} from \"_src/engine/constants\";\nimport glTypes from \"_src/engine/gl_types\";\nimport GL from \"_src/engine/gl\";\nimport extensions from \"_src/engine/extensions\";\nimport { isPowerOfTwo } from \"_src/engine/math\";\nimport memoryProfiler from \"_src/engine/memory_profiler\";\nimport output from \"_src/engine/output\";\n\nlet _textureCounter = 0;\n\nexport default {\n\n create(type, params = {}) {\n\n const gl = GL.getContext();\n\n switch (type) {\n case pixelBufferType.T_RGBA:\n return new ColorRGBATexture(gl, params);\n\n case pixelBufferType.T_RGBA16F:\n return new ColorFloatRenderingTexture(gl, params);\n\n case pixelBufferType.RB_RGBA:\n params.format = params.format ? params.format : RBIntFormat.R5G6B5;\n return new Renderbuffer(gl, params);\n\n case pixelBufferType.T_DEPTH:\n return new DepthStencilTexture(gl, params);\n\n case pixelBufferType.RB_DEPTH:\n params.format = params.format ? params.format : RBIntFormat.D16U;\n return new Renderbuffer(gl, params);\n\n case pixelBufferType.RB_STENCIL:\n params.format = params.format ? params.format : RBIntFormat.S8;\n return new Renderbuffer(gl, params);\n\n case pixelBufferType.T_RG32F:\n return new ColorRG32FTexture(gl, params);\n\n case pixelBufferType.T_COMPRESSED:\n return new ColorRGBACompressedTexture(gl, params);\n\n case pixelBufferType.CM_RGBA:\n return new CubeMap(gl, params);\n }\n\n }\n\n}\n\nclass Texture {\n constructor(gl, params) {\n this.isTexture = true;\n this.id = _textureCounter++;\n\n const {width, height} = fixTextureSize(params.width || 1, params.height || 1);\n\n this.width = width;\n this.height = height;\n this.flipY = params.flipY !== undefined ? params.flipY : false;\n this.immutable = params.immutable !== undefined ? params.immutable : false;\n this.levels = params.levels !== undefined ? params.levels : 1;\n this.internalFormat = 0;\n this.dataFormat = 0;\n this.dataType = 0;\n this.target = gl.TEXTURE_2D;\n\n this._initFormats(gl, params);\n\n this.pixelBuffer = gl.createTexture();\n gl.bindTexture(this.target, this.pixelBuffer);\n\n this._setupStates(gl, params);\n\n const wrapper = params.wrapper !== undefined ? params.wrapper : textureWrapper.CLAMP;\n this.setWrapBehavior(gl, wrapper);\n\n this._preInitStorage(gl);\n\n gl.bindTexture(this.target, null);\n\n memoryProfiler.markMemoryAllocated(this.pixelBuffer, memoryType.GPU_TEXTURES, width * height * 4);\n }\n\n //for override\n _initFormats() {}\n _setupStates() {}\n\n _preInitStorage(gl) {\n if (this.immutable && gl.texStorage2D) {\n gl.texStorage2D(this.target, this.levels, this.internalFormat, this.width, this.height);\n } else {\n for (let level=0; level 0) {\n const ext = extensions.get(\"EXT_texture_filter_anisotropic\");\n\n if (ext) {\n const aniso = Math.min(anisotropy, gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT));\n gl.texParameterf(this.target, ext.TEXTURE_MAX_ANISOTROPY_EXT, aniso);\n }\n }\n\n const magFilter = params.magFilter !== undefined ? params.magFilter : textureMagFilter.LINEAR;\n const minFilter = params.minFilter !== undefined ? params.minFilter : textureMinFilter.LINEAR;\n this.setMagFilter(gl, magFilter);\n this.setMinFilter(gl, minFilter);\n }\n}\n\nclass DepthStencilTexture extends Texture {\n constructor(gl, params) {\n super(gl, params);\n }\n\n _initFormats(gl) {\n this.immutable = false;\n\n this.internalFormat = GL.checkWebGL2() ? gl.DEPTH24_STENCIL8 : gl.DEPTH_STENCIL;\n this.dataType = GL.checkWebGL2() ? gl.UNSIGNED_INT_24_8 : extensions.get(\"WEBGL_depth_texture\").UNSIGNED_INT_24_8_WEBGL;\n this.dataFormat = gl.DEPTH_STENCIL;\n }\n\n _setupStates(gl) {\n this.setMagFilter(gl, textureMagFilter.NEAREST);\n this.setMinFilter(gl, textureMinFilter.NEAREST);\n }\n}\n\nclass ColorFloatRenderingTexture extends Texture {\n constructor(gl, params) {\n super(gl, params);\n }\n\n _initFormats(gl) {\n this.immutable = false;\n\n extensions.get(\"OES_texture_half_float_linear\");\n if (GL.checkWebGL2()) {\n const ext = extensions.get(\"EXT_color_buffer_half_float\");\n this.internalFormat = ext.RGBA16F_EXT;\n this.dataType = gl.HALF_FLOAT;\n } else {\n const ext = extensions.get(\"OES_texture_half_float\");\n this.internalFormat = gl.RGBA;\n this.dataType = ext.HALF_FLOAT_OES;\n }\n this.dataFormat = gl.RGBA;\n }\n\n _setupStates(gl) {\n this.setMagFilter(gl, textureMagFilter.NEAREST);\n this.setMinFilter(gl, textureMinFilter.NEAREST);\n }\n}\n\nclass ColorRG32FTexture extends Texture {\n constructor(gl, params) {\n super(gl, params);\n }\n\n _initFormats(gl) {\n this.immutable = true;\n\n this.internalFormat = gl.RG32F;\n this.dataFormat = gl.RG;\n this.dataType = gl.FLOAT;\n }\n\n _setupStates(gl) {\n this.setMagFilter(gl, textureMagFilter.NEAREST);\n this.setMinFilter(gl, textureMinFilter.NEAREST);\n }\n}\n\nclass ColorRGBACompressedTexture extends Texture {\n constructor(gl, params) {\n super(gl, params);\n }\n\n _initFormats(gl, params) {\n this.immutable = true;\n this.internalFormat = glTypes.getCompressedTextureInternalFormat(params.format);\n }\n\n _setupStates(gl, params) {\n const magFilter = params.magFilter !== undefined ? params.magFilter : textureMagFilter.LINEAR;\n const minFilter = params.minFilter !== undefined ? params.minFilter : textureMinFilter.LINEAR;\n this.setMagFilter(gl, magFilter);\n this.setMinFilter(gl, minFilter);\n }\n\n _preInitStorage() {}\n\n initMipMapLevelImage() {\n output.error(output.DEVELOPERS_ERROR, \"Mip map level initialization from image is not supported for compressed texture.\");\n }\n\n initMipMapLevelBuffer(level, buffer) {\n const gl = GL.getContext();\n gl.bindTexture(this.target, this.pixelBuffer);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.flipY);\n gl.compressedTexImage2D(this.target, level, this.internalFormat, this.width, this.height, 0, buffer);\n gl.bindTexture(this.target, null);\n }\n}\n\nclass CubeMap extends Texture {\n constructor(gl, params) {\n super(gl, params);\n }\n\n _initFormats(gl) {\n this.immutable = true;\n this.target = gl.TEXTURE_CUBE_MAP;\n\n if (gl.texStorage2D) {\n this.internalFormat = gl.RGBA8;\n } else {\n this.internalFormat = gl.RGBA;\n }\n\n this.dataFormat = gl.RGBA;\n this.dataType = gl.UNSIGNED_BYTE;\n }\n\n _preInitStorage(gl) {\n if (gl.texStorage2D) {\n gl.texStorage2D(this.target, this.levels, this.internalFormat, this.width, this.height);\n } else {\n for (const target of [gl.TEXTURE_CUBE_MAP_POSITIVE_X, gl.TEXTURE_CUBE_MAP_NEGATIVE_X, gl.TEXTURE_CUBE_MAP_POSITIVE_Y, gl.TEXTURE_CUBE_MAP_NEGATIVE_Y, gl.TEXTURE_CUBE_MAP_POSITIVE_Z, gl.TEXTURE_CUBE_MAP_NEGATIVE_Z]) {\n for (let level=0; level maxTextureSize || height > maxTextureSize) {\n\n const newWidth = Math.min(width, maxTextureSize);\n const newHeight = Math.min(height, maxTextureSize);\n\n output.warn(\"Requested texture size \\\"\" + width + \"x\" + height + \"\\\" is too large.\" +\n \"Reducing the size to \\\"\" + newWidth + \"x\" + newHeight + \"\\\"\");\n\n width = newWidth;\n height = newHeight;\n\n }\n\n return {width, height}\n}\n\nfunction fixBufferSize(width, height) {\n\n width = Math.max(width, 1);\n height = Math.max(height, 1);\n\n const gl = GL.getContext();\n const maxRbSize = gl.getParameter(gl.MAX_RENDERBUFFER_SIZE);\n\n if (width > maxRbSize || height > maxRbSize) {\n\n const newWidth = Math.min(width, maxRbSize);\n const newHeight = Math.min(height, maxRbSize);\n\n output.warn(\"Requested RenderBuffer size \\\"\" + width + \"x\" + height + \"\\\" is too large.\" +\n \"Reducing the size to \\\"\" + newWidth + \"x\" + newHeight + \"\\\"\");\n\n width = newWidth;\n height = newHeight;\n\n }\n\n return {width, height}\n}\n","import output from \"_src/engine/output\";\nimport intersectEvaluator from \"_src/engine/intersect_evaluator\";\nimport { transformVecMat4 } from \"_src/engine/math\";\n\nimport { vec3, vec4, mat4 } from \"_src/libs/gl-matrix\";\n\nconst _VEC3_TMP = vec3.create();\nconst _VEC3_TMP2 = vec3.create();\nconst _VEC3_TMP3 = vec3.create();\n\nconst _MAT4_TMP = mat4.create();\n\nconst EPSILON = 0.001;\n\nexport default {\n\n checkSelectionMask(selectionMask) {\n\n for (let i = 0; i < selectionMask.length; ++i) {\n if (selectionMask[i]) {\n return true;\n }\n }\n\n return false;\n\n },\n\n getMaxBoundings(selectionMask, width, height) {\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < height; ++i) {\n for (let j = 0; j < width; ++j) {\n const offset = i * width + j;\n if (selectionMask[offset]) {\n minX = Math.min(minX, j);\n maxX = Math.max(maxX, j);\n minY = Math.min(minY, i);\n maxY = Math.max(maxY, i);\n }\n }\n }\n\n return [minX, minY, maxX, maxY];\n\n },\n\n selectByMask: (function() {\n\n const mat4Tmp = mat4.create();\n\n return function (object, camera, selectionBuffer, depthBuffer, bounding, oneSideSelection) {\n\n const width = camera.viewport[2];\n const height = camera.viewport[3];\n\n const frames = object.frames;\n\n let totalSelected = 0;\n\n for (let frame of frames) {\n\n // NOTE: decimation requires this check\n if (!frame.loaded) {\n continue;\n }\n\n const model = frame.model;\n const chunks = model.chunks;\n\n if (!chunks.length) {\n continue;\n }\n\n const mvpMatrix = mat4.multiply(mat4Tmp, camera.viewProjMat, model.modelMatrix);\n\n for (let chunk of chunks) {\n\n const geometry = chunk.geometry;\n\n if (!model.isChunkInFrustum(chunk)) {\n continue;\n }\n\n if (oneSideSelection && !model.getChunkQueryResult(chunk)) {\n continue;\n }\n\n const indices = geometry.getItemBuffer(\"indices\");\n const selectionMask = geometry.getItemBuffer(\"active_selection_mask\");\n const positions = geometry.getItemBuffer(\"a_position\");\n\n if (!positions || !selectionMask) {\n output.error(output.DEVELOPERS_ERROR, \"Invalid geometry. Missing positions or selection mask. Aborting selection.\");\n return 0;\n }\n\n for (let z = 0; z < selectionMask.length; ++z) {\n selectionMask[z] = 0;\n }\n geometry.setHasMarkedVertices(false);\n\n const numSelected = geometry.octree.maskIntersect(indices, positions,\n selectionMask, selectionBuffer, depthBuffer, width, height, bounding, mvpMatrix,\n camera.near, camera.far, camera.isOrtho());\n\n // NOTE: it's a hack to mark chunk as selected\n if (numSelected > 0) {\n geometry.setHasMarkedVertices(true);\n totalSelected += numSelected;\n }\n\n }\n\n }\n\n return totalSelected;\n\n };\n\n })(),\n\n selectByPlane : (function() {\n\n const vec3Tmp = vec3.create();\n const vec4Tmp = vec4.create();\n const mat4Tmp = mat4.create();\n\n return function (object, normal, point, clearOldSelection = true) {\n\n let totalSelected = 0;\n\n for (const frame of object.frames) {\n\n // NOTE: decimation requires this check\n if (!frame.loaded) {\n continue;\n }\n\n const model = frame.model;\n const chunks = model.chunks;\n\n if (!chunks.length) {\n continue;\n }\n\n const toLocalMat4 = mat4.invert(mat4Tmp, model.modelMatrix);\n const localPoint = vec3.transformMat4(vec3Tmp, point, toLocalMat4);\n vec4.set(vec4Tmp, normal[0], normal[1], normal[2], 0);\n\n const plane = vec4.transformMat4(vec4Tmp, vec4Tmp, toLocalMat4);\n plane[3] = -vec3.dot(plane, localPoint);\n\n for (const chunk of chunks) {\n\n const geometry = chunk.geometry;\n const indices = geometry.getItemBuffer(\"indices\");\n const selectionMask = geometry.getItemBuffer(\"active_selection_mask\");\n const positions = geometry.getItemBuffer(\"a_position\");\n\n if (!positions || !selectionMask) {\n output.error(output.DEVELOPERS_ERROR, \"Invalid geometry. Missing positions or selection mask. Aborting selection.\");\n return 0;\n }\n\n if (clearOldSelection) {\n for (let z = 0; z < selectionMask.length; ++z) {\n selectionMask[z] = 0;\n }\n geometry.setHasMarkedVertices(false);\n }\n\n const numSelected = geometry.octree.planeIntersect(indices, positions, selectionMask, plane);\n\n // NOTE: it's a hack to mark chunk as selected\n if (numSelected > 0) {\n geometry.setHasMarkedVertices(true);\n totalSelected += numSelected;\n }\n\n }\n\n }\n\n return totalSelected;\n\n };\n\n })(),\n\n selectSphere(object, center, radius) {\n\n let totalSelected = 0;\n\n //NOTE: we use only object's scale\n const scale = vec3.copy(_VEC3_TMP, object.model.scale);\n const frames = object.frames;\n\n for (let frame of frames) {\n\n const model = frame.model;\n const chunks = model.chunks;\n\n const toLocalMat4 = mat4.invert(_MAT4_TMP, model.modelMatrix);\n\n for (let chunk of chunks) {\n\n const geometry = chunk.geometry;\n\n const indices = geometry.getItemBuffer(\"indices\");\n const selectionMask = geometry.getItemBuffer(\"active_selection_mask\");\n const positions = geometry.getItemBuffer(\"a_position\");\n\n if (!positions || !selectionMask) {\n output.error(output.DEVELOPERS_ERROR, \"Invalid geometry. Missing positions or selection mask. Aborting selection.\");\n return 0;\n }\n\n for (let k = 0; k < selectionMask.length; ++k) {\n selectionMask[k] = 0;\n }\n geometry.setHasMarkedVertices(false);\n\n const localPoint = vec3.transformMat4(_VEC3_TMP2, center, toLocalMat4);\n\n const numSelected = geometry.octree.sphereIntersect(localPoint, radius,\n indices, positions, selectionMask, scale);\n\n if (numSelected > 0) {\n // NOTE: it's a hack to mark chunk as selected\n geometry.setHasMarkedVertices(true);\n totalSelected += numSelected;\n }\n\n }\n\n }\n\n return totalSelected;\n\n },\n\n unselectInvisibleVertices(objects, camera) {\n\n const selectedChunks = [];\n\n const matrices = new Map();\n\n for (let object of objects) {\n for (let frame of object.frames) {\n for (let chunk of frame.model.chunks) {\n if (chunk.geometry.checkHasMarkedVertices()) {\n\n selectedChunks.push(chunk);\n\n matrices.set(chunk, mat4.invert(mat4.create(), frame.model.modelMatrix));\n\n }\n }\n }\n }\n\n this._unselectInvisibleVertices(selectedChunks, matrices, camera);\n\n },\n\n _unselectInvisibleVertices : (function() {\n\n const vec3Tmp = vec3.create();\n const vec3Tmp2 = vec3.create();\n const vec3Tmp3 = vec3.create();\n const vec3Tmp4 = vec3.create();\n const vec3Tmp5 = vec3.create();\n const vec3Tmp6 = vec3.create();\n const vec3Tmp7 = vec3.create();\n\n const mat4Tmp = mat4.create();\n\n return function(selectedChunks, matrices, camera) {\n\n const view = vec3.set(vec3Tmp, 0, 0, -1);\n vec3.transformQuat(view, view, camera.quat);\n\n for (let k = 0; k < selectedChunks.length; ++k) {\n\n const currentChunk = selectedChunks[k];\n\n const currenGeometry = currentChunk.geometry;\n const selectionMask = currenGeometry.getItemBuffer(\"active_selection_mask\");\n const positions = currenGeometry.getItemBuffer(\"a_position\");\n\n const toWorldMat4 = mat4.invert(mat4Tmp, matrices.get(currentChunk));\n\n const origin = vec3.copy(vec3Tmp3, camera.trans);\n\n for (let i = 0; i < selectionMask.length; ++i) {\n\n if (selectionMask[i] == 0) {\n continue;\n }\n\n const offset = i * 3;\n const vertex = vec3.set(vec3Tmp4, positions[offset], positions[offset + 1], positions[offset + 2]);\n const worldVertex = vec3.transformMat4(vertex, vertex, toWorldMat4);\n\n if (camera.isOrtho()) {\n const t = (vec3.dot(worldVertex, view) - vec3.dot(view, origin)) / vec3.dot(view, view);\n vec3.scaleAndAdd(origin, worldVertex, view, -t);\n }\n const to = vec3.sub(vec3Tmp5, worldVertex, origin);\n\n const vertexDistance = vec3.length(to);\n\n vec3.scale(to, to, 1.0 / vertexDistance);\n\n for (let j = 0; j < selectedChunks.length; ++j) {\n\n const chunk = selectedChunks[j];\n const geometry = chunk.geometry;\n\n const toLocalMat4 = matrices.get(chunk);\n\n const localOrigin = vec3.transformMat4(vec3Tmp6, origin, toLocalMat4);\n const localTo = transformVecMat4(vec3Tmp7, to, toLocalMat4);\n vec3.normalize(localTo, localTo);\n\n const localDistance = numberToObjectSpace(vertexDistance, toLocalMat4);\n\n const indices = geometry.getItemBuffer(\"indices\");\n const positions = geometry.getItemBuffer(\"a_position\");\n\n const distance = intersectEvaluator.AABBRayDistance(localOrigin, localTo, geometry.bbox);\n\n if (distance < 0 || localDistance < distance) {\n continue;\n }\n\n const intersector = (from, to, offset, length, result) => {\n return intersectEvaluator.triangleRayIntersection(from, to, indices, offset, length, positions, result);\n };\n\n const dist = geometry.octree.castRay(localOrigin, localTo, intersector, vec3Tmp2);\n\n if (dist < 0) {\n continue;\n }\n\n if (dist < localDistance - EPSILON) {\n\n selectionMask[i] = 0;\n break;\n\n }\n\n }\n\n }\n\n }\n\n }\n\n })(),\n\n dropSelection(object) {\n\n for (let frame of object.frames.filter(frame => frame.loaded)) {\n\n for (let chunk of frame.model.chunks) {\n\n const geom = chunk.geometry;\n\n const selectionMask = geom.getItemBuffer(\"a_selection_mask\");\n\n if (selectionMask) {\n geom.dropSelection();\n chunk.markAttributeDirty(\"a_selection_mask\");\n }\n\n }\n\n }\n\n },\n\n invertSelection(object) {\n\n for (let frame of object.frames.filter(frame => frame.loaded)) {\n\n for (let chunk of frame.model.chunks) {\n\n const geom = chunk.geometry;\n\n const selectionMask = geom.getItemBuffer(\"a_selection_mask\");\n\n if (selectionMask) {\n geom.invertSelection();\n chunk.markAttributeDirty(\"a_selection_mask\");\n }\n\n }\n\n }\n\n },\n\n applySelection(chunk, isSelection) {\n\n const geom = chunk.geometry;\n\n const selectionMask = geom.getItemBuffer(\"a_selection_mask\");\n\n if (!selectionMask) {\n return;\n }\n\n const activeSelectionMask = geom.getItemBuffer(\"active_selection_mask\");\n\n const selectionValue = isSelection ? 1 : 0;\n\n let hasSelection = false;\n\n for (let i = 0; i < activeSelectionMask.length; ++i) {\n if (activeSelectionMask[i] === 1) {\n selectionMask[i] = selectionValue;\n activeSelectionMask[i] = 0;\n }\n if (selectionMask[i] === 1) {\n hasSelection = true;\n }\n }\n\n geom.setHasMarkedVertices(false);\n geom.setHasSelectedVertices(hasSelection);\n chunk.markAttributeDirty(\"a_selection_mask\");\n\n },\n\n findObjectIntersection(destPoint, x, y, camera, object) {\n const origin = camera.calculateOrigin(x, y, _VEC3_TMP);\n\n const ray = camera.calculateRay(x, y, _VEC3_TMP2);\n const point = _VEC3_TMP3;\n\n let distance = Infinity;\n let hitted = false;\n\n if (object.castRay(origin, ray, point)) {\n\n hitted = true;\n\n const dist = vec3.distance(point, origin);\n\n if (dist < distance) {\n\n distance = dist;\n vec3.copy(destPoint, point);\n\n }\n }\n\n return hitted ? distance : -1.0;\n },\n\n findClosestIntersection: (function () {\n\n const tmpHitPoint = vec3.create();\n\n return function (outHitPoint, x, y, camera, objects) {\n\n let intersectedObject = null;\n\n let distance = Infinity;\n\n for (let object of objects) {\n\n const dist = this.findObjectIntersection(tmpHitPoint, x, y, camera, object);\n\n if (dist >= 0.0) {\n\n if (dist < distance) {\n\n if (outHitPoint) {\n vec3.copy(outHitPoint, tmpHitPoint);\n }\n\n distance = dist;\n\n intersectedObject = object;\n\n }\n\n }\n\n }\n\n return intersectedObject;\n }\n }()),\n\n}\nconst numberToObjectSpace = (function() {\n\n const vec4Tmp = vec4.create();\n\n return function(value, toLocal) {\n\n vec4.set(vec4Tmp, value, 0, 0, 0);\n vec4.transformMat4(vec4Tmp, vec4Tmp, toLocal);\n\n return Math.sign(value) * vec4.length(vec4Tmp);\n\n };\n\n})();\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","import output from \"_src/engine/output\";\nimport config from \"_src/config\";\nimport { idGenerator } from \"_src/utils\";\nimport {propertyType, objectType} from \"_src/constants\";\nimport {\n createProperty,\n reformValue,\n generateGroupColor,\n} from \"_src/reformer/property\";\nimport projectTree from \"_src/reformer/project_tree\";\n\nexport default {\n serializeObjects(json) {\n const cadList = projectTree.getPropertiesByType(objectType.CAD);\n const scanList = projectTree.getPropertiesByType(objectType.SCAN).concat(projectTree.getPropertiesByType(objectType.POINTCLOUD));\n const fusionList = projectTree.getPropertiesByType(objectType.FUSION);\n const photoGroupList = projectTree.getPropertiesByType(objectType.PHOTO_GROUP);\n const groupsList = projectTree.getPropertiesByType(objectType.GROUP);\n const linearMeasureList = projectTree.getPropertiesByType(objectType.LINEAR_MEASURE);\n const geodesicMeasureList = projectTree.getPropertiesByType(objectType.GEODESIC_MEASURE);\n const sectionList = projectTree.getPropertiesByType(objectType.SECTION);\n const distanceMapList = projectTree.getPropertiesByType(objectType.DISTANCE_MAP);\n\n const serializeObjectList = (properties, jsonSection, serializationFn) => {\n for (const property of properties) {\n const objectJSON = jsonSection.find(object => object[\"id\"] === property.getValue(\"id\"));\n if (!objectJSON) {\n output.error(output.DEVELOPERS_ERROR, \"Can't serialize object: \" + property.getValue(\"id\") + \". Object doesn't exist.\");\n continue;\n }\n serializationFn(property, objectJSON);\n }\n }\n\n serializeObjectList(scanList, (json[\"scans\"] || []).concat((json[\"point-clouds\"] || [])), serializeObject);\n serializeObjectList(fusionList, json[\"fusions\"], serializeObject);\n serializeObjectList(cadList, json[\"cad-objects\"], serializeObject);\n serializeObjectList(photoGroupList, json[\"photo-sets\"], serializeBaseObject);\n serializeObjectList(linearMeasureList, json[\"linear-measures\"], serializeCommonMeasure);\n serializeObjectList(geodesicMeasureList, json[\"geodesic-measures\"], serializeCommonMeasure);\n serializeObjectList(distanceMapList, json[\"distance-maps\"], serializeCommonMeasure);\n serializeObjectList(sectionList, json[\"section-measures\"], serializeSection);\n\n if (!(\"groups\" in json) && groupsList.length > 0) {\n json[\"groups\"] = [];\n }\n\n for (const property of groupsList) {\n let groupJSON = json[\"groups\"].find(group => group[\"id\"] === property.getValue(\"id\"));\n if (!groupJSON) {\n groupJSON = {};\n json[\"groups\"].push(groupJSON);\n }\n serializeGroup(property, groupJSON);\n }\n },\n\n serializeOrdering(json) {\n json[\"ordering\"] = [];\n for (const item of projectTree.getOrdering()) {\n if (!item) {\n json[\"ordering\"].push(null);\n continue;\n }\n\n const property = projectTree._getProperty(item[\"id\"]);\n // Objects from AStudio 15+ are not added to WS objects structure\n const uuid = property ? property.getValue(\"uuid\"): item[\"uuid\"];\n\n json[\"ordering\"].push({\n \"id\" : item[\"id\"],\n \"uuid\" : uuid\n });\n }\n },\n\n createGroupProperty(groupData, shadesInGroup) {\n const property = createProperty(propertyType.GROUP);\n\n property.insertValue(\"name\", reformValue(groupData, \"name\", () => \"\", \"group\"));\n property.insertValue(\"id\", reformValue(groupData, \"id\", () => idGenerator.getNext(), \"group\"));\n property.insertValue(\"groupID\", reformValue(groupData, \"groupid\", () => \"\"));\n property.insertValue(\"uuid\", reformValue(groupData[\"extra\"], \"uuid\", () => idGenerator.generateUUID()));\n property.insertValue(\"visible\", reformValue(groupData[\"extra\"], \"visible\", () => true));\n property.insertValue(\"color\", reformValue(groupData[\"extra\"], \"color\", () => generateGroupColor(shadesInGroup)));\n property.insertValue(\"locked\", reformValue(groupData[\"extra\"], \"locked\", () => false));\n\n return property;\n },\n\n}\n\nfunction serializeBaseObject(property, objectJSON) {\n objectJSON[\"name\"] = property.getValue(\"name\");\n objectJSON[\"extra\"][\"visible\"] = property.getValue(\"visible\");\n}\n\nfunction serializeObject(property, objectJSON) {\n serializeBaseObject(property, objectJSON);\n\n objectJSON[\"transform\"] = Array.from(property.getValue(\"transform\"));\n objectJSON[\"extra\"][\"color\"] = property.getValue(\"color\");\n}\n\nfunction serializeSection(property, sectionGroupJSON) {\n serializeCommonMeasure(property, sectionGroupJSON);\n if (!property.getValue(\"geometries\")) return; //section structure is not initialized yet\n\n let sectionOffset = 0;\n for (const zcut of sectionGroupJSON[\"cuts-visibility\"] || sectionGroupJSON[\"cuts-info\"] || []) {\n const sections = zcut[\"sections\"] || [];\n for (let i=0; i < sections.length; i++) {\n const section = sections[i];\n const sectionProperty = property.getValue(\"geometries\")[sectionOffset + i];\n section[\"visible\"] = sectionProperty[\"visible\"];\n\n const contours = section[\"contours\"] || [];\n for (let j=0; j < contours.length; j++) {\n const contour = contours[j];\n const contourProperty = sectionProperty[\"contours\"][j];\n contour[\"visible\"] = contourProperty[\"visible\"];\n }\n }\n\n sectionOffset += sections.length;\n }\n}\n\nfunction serializeCommonMeasure(property, measureJSON) {\n measureJSON[\"extra\"][\"visible\"] = property.getValue(\"visible\");\n}\n\nfunction serializeGroup(property, groupJSON) {\n groupJSON[\"name\"] = property.getValue(\"name\");\n groupJSON[\"extra\"][\"color\"] = property.getValue(\"color\");\n groupJSON[\"extra\"][\"visible\"] = property.getValue(\"visible\");\n}\n\nexport function initGeometries(geometries) {\n const properties = [];\n for (const geometry of geometries) {\n const property = createProperty(propertyType.ASSET);\n\n property.insertValue(\"id\", reformValue(geometry, \"id\", () => \"\"));\n property.insertValue(\"box\", reformValue(geometry, \"box\", () => [-1,-1,-1,1,1,1]));\n property.insertValue(\"grid\", reformValue(geometry, \"grid\", () => [-1,-1,-1]));\n property.insertValue(\"name\", reformValue(geometry, \"name\", () => \"\"));\n property.insertValue(\"attrs\", reformValue(geometry, \"vertex-attrs\", () => null));\n\n const levels = property.getValue(\"levels\");\n\n for (const level of geometry[\"levels\"]) {\n\n const levelProperty = createProperty(propertyType.LEVEL);\n\n levelProperty.insertValue(\"id\", reformValue(level, \"id\", () => \"\"));\n levelProperty.insertValue(\"name\", reformValue(level, \"name\", () => \"\"));\n levelProperty.insertValue(\"index\", reformValue(level, \"index\", () => 0));\n levelProperty.insertValue(\"points\", reformValue(level, \"points\", () => 0));\n levelProperty.insertValue(\"triangles\", reformValue(level, \"triangles\", () => 0));\n levelProperty.insertValue(\"file\", reformValue(level, \"file\", () => \"\"));\n levelProperty.insertValue(\"hash\", geometry[\"hash\"] || (geometry[\"box\"] + level[\"points\"] + level[\"triangles\"]));\n\n levels.push(levelProperty);\n }\n properties.push(property);\n }\n return properties;\n}\n\nexport function initTextures(textures) {\n const properties = [];\n\n if (config.dropTextures) {\n return properties;\n }\n for (const texture of textures) {\n const property = createProperty(propertyType.ASSET);\n\n const levels = property.getValue(\"levels\");\n\n for (const level of texture[\"levels\"]) {\n\n const levelProperty = createProperty(propertyType.LEVEL);\n\n levelProperty.insertValue(\"width\", reformValue(level, \"width\", () => 1));\n levelProperty.insertValue(\"height\", reformValue(level, \"height\", () => 1));\n levelProperty.insertValue(\"channels\", reformValue(level, \"channels\", () => 3));\n levelProperty.insertValue(\"index\", reformValue(level, \"index\", () => 0));\n levelProperty.insertValue(\"file\", reformValue(level, \"file\", () => \"\"));\n levelProperty.insertValue(\"hash\", level[\"hash\"] || level[\"file\"]);\n\n levels.push(levelProperty);\n }\n properties.push(property);\n }\n return properties;\n}\n","import { colorUtils, idGenerator } from \"_src/utils\";\nimport {propertyType, objectType, scanMode} from \"_src/constants\";\nimport {\n createProperty,\n reformValue,\n getHexPaletteUnique,\n deepCopy,\n getCadType\n} from \"_src/reformer/property\";\nimport appState from \"_src/app_state\";\nimport {initGeometries, initTextures} from \"_src/reformer/common/reformer\";\n\nexport default {\n initObjectProperty(objectData, type, colorList) {\n\n const property = createProperty(propertyType.OBJECT);\n\n property.insertValue(\"name\", reformValue(objectData, \"name\", () => \"\"));\n property.insertValue(\"id\", reformValue(objectData, \"id\", () => idGenerator.getNext()));\n property.insertValue(\"visible\", reformValue(objectData[\"extra\"], \"visible\", () => true));\n property.insertValue(\"locked\", reformValue(objectData[\"extra\"], \"locked\", () => false));\n property.insertValue(\"color\", reformValue(objectData[\"extra\"], \"color\", () => getHexPaletteUnique(colorList)));\n property.insertValue(\"uuid\", reformValue(objectData[\"extra\"], \"uuid\", () => \"\"));\n property.insertValue(\"groupID\", reformValue(objectData, \"groupid\", () => \"\"));\n\n property.insertValue(\"scannertype\", reformValue(objectData[\"extra\"], \"scannertype\", () => \"\"));\n property.insertValue(\"deviceserial\", reformValue(objectData[\"extra\"], \"deviceserial\", () => \"\"));\n property.insertValue(\"datasize\", reformValue(objectData[\"extra\"], \"datasize\", () => \"\"));\n property.insertValue(\"isHD\", reformValue(objectData[\"extra\"], \"ishd\", () => false));\n property.insertValue(\"texturegain\", reformValue(objectData[\"extra\"], \"texturegain\", () => 0.0));\n property.insertValue(\"texturecameratype\", reformValue(objectData[\"extra\"], \"texturecameratype\", () => 0));\n property.insertValue(\"textureillumination\", reformValue(objectData[\"extra\"], \"textureillumination\", () => 0.0));\n property.insertValue(\"globalapplied\", reformValue(objectData[\"extra\"], \"globalapplied\", () => false));\n\n property.insertValue(\"textures\", reformValue(objectData, \"textures\", () => []));\n\n property.insertValue(\"transform\", reformValue(objectData, \"transform\", () => [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]));\n property.insertValue(\"projection\", reformValue(objectData, \"projection\", () => [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0]));\n property.insertValue(\"correction\", reformValue(objectData, \"correction\", () => [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0]));\n\n //Note: we mark geometry source such a way\n property.insertValue(\"surfelsfile\", objectData[\"surfels\"] && objectData[\"surfels\"].length > 0 ? {} : null);\n property.insertValue(\"geometriesfile\", objectData[\"geometries\"] && objectData[\"geometries\"].length > 0 ? {} : null);\n property.insertValue(\"framesfile\", objectData[\"frames\"] && objectData[\"frames\"].length > 0 ? {} : null);\n\n property.insertValue(\"cadProperties\", objectData[\"properties\"]);\n property.insertValue(\"cadData\", objectData[\"primitive\"]);\n property.insertValue(\"cadModel\", objectData[\"model\"]);\n property.insertValue(\"cadType\", getCadType(objectData));\n\n property.insertValue(\"type\", type);\n property.insertValue(\"numPolygons\", 0);\n property.insertValue(\"numVertices\", 0);\n property.insertValue(\"maxError\", 0.0);\n property.insertValue(\"textureWidth\", 0);\n property.insertValue(\"textureHeight\", 0);\n\n const hasTargetScan = objectData[\"related-object-uuid\"] !== undefined;\n const hasRawGeometry = objectData[\"extra\"][\"hasrawgeometry\"] !== undefined ? objectData[\"extra\"][\"hasrawgeometry\"] : hasTargetScan;\n const targetRawScan = hasTargetScan ? objectData[\"related-object-uuid\"] : objectData[\"extra\"][\"uuid\"];\n property.insertValue(\"hasrawgeometry\", hasRawGeometry);\n property.insertValue(\"targetRawScan\", targetRawScan);\n\n if (type === objectType.FUSION) {\n combineFusionProperty(property, objectData);\n } else {\n combineScanProperty(property, objectData);\n }\n\n return property;\n },\n\n}\n\nfunction combineScanProperty(objectProperty, objectData) {\n\n let numPolygons = 0;\n let numVertices = 0;\n let maxError = 0;\n let numTexturedFrames = 0;\n const isSurfels = appState.getStateValue(\"scanMode\") !== scanMode.TRIANGLES && Boolean(objectData[\"surfels\"]) && objectData[\"surfels\"].length;\n if (isSurfels) {\n const surfelsProperty = createProperty(propertyType.FRAME);\n surfelsProperty.insertValue(\"name\", objectProperty.getValue(\"name\"));\n surfelsProperty.insertValue(\"id\", objectProperty.getValue(\"id\"));\n surfelsProperty.insertValue(\"color\", objectProperty.getValue(\"color\"));\n surfelsProperty.insertValue(\"transform\", [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n\n surfelsProperty.insertValue(\"geometries\", initGeometries(objectData[\"surfels\"]));\n\n let numSurfels = 0;\n for (const geometry of objectData[\"surfels\"]) {\n const level = geometry[\"levels\"][0];\n numSurfels += level[\"points\"];\n }\n surfelsProperty.insertValue(\"numSurfels\", numSurfels);\n objectProperty.getValue(\"frames\").push(surfelsProperty);\n objectProperty.setValue(\"numSurfels\", numSurfels);\n } else {\n for (const frameData of objectData[\"frames\"]) {\n let frameNumPolygons = 0;\n let frameNumVertices = 0;\n\n const property = createProperty(propertyType.FRAME);\n\n property.insertValue(\"name\", reformValue(frameData, \"name\", () => \"\"));\n property.insertValue(\"id\", reformValue(frameData, \"id\", () => \"\"));\n property.insertValue(\"color\", reformValue(frameData[\"extra\"], \"color\", () => colorUtils.generateHexColor()));\n property.insertValue(\"error\", reformValue(frameData[\"extra\"], \"regerror\", () => 0.0));\n property.insertValue(\"keyframe\", reformValue(frameData[\"extra\"], \"keyframe\", () => false));\n\n property.insertValue(\"transform\", reformValue(frameData, \"transform\", () => [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]));\n\n const textures = frameData[\"textures\"] || [];\n const geometries = frameData[\"geometries\"] || [];\n const trackings = frameData[\"trackings\"] || [];\n\n for (const geometry of geometries) {\n const level = geometry[\"levels\"][0];\n frameNumPolygons += level[\"triangles\"];\n frameNumVertices += level[\"points\"];\n }\n property.insertValue(\"numPolygons\", frameNumPolygons);\n property.insertValue(\"numVertices\", frameNumVertices);\n\n property.insertValue(\"textured\", textures.length > 0);\n property.insertValue(\"textures\", initTextures(textures));\n property.insertValue(\"geometries\", initGeometries(geometries));\n property.insertValue(\"trackings\", deepCopy(trackings));\n\n maxError = Math.max(property.getValue(\"error\"), maxError);\n if (textures.length > 0) numTexturedFrames++;\n numVertices += frameNumVertices;\n numPolygons += frameNumPolygons;\n\n objectProperty.getValue(\"frames\").push(property);\n }\n }\n\n objectProperty.setValue(\"numPolygons\", numPolygons);\n objectProperty.setValue(\"numVertices\", numVertices);\n objectProperty.setValue(\"maxError\", maxError);\n objectProperty.setValue(\"numFrames\", objectData[\"frames\"].length);\n objectProperty.setValue(\"numTexturedFrames\", numTexturedFrames);\n}\n\nfunction combineFusionProperty(objectProperty, objectData) {\n const property = createProperty(propertyType.FRAME);\n\n property.insertValue(\"name\", objectProperty.getValue(\"name\"));\n property.insertValue(\"id\", objectProperty.getValue(\"id\"));\n property.insertValue(\"color\", objectProperty.getValue(\"color\"));\n\n property.insertValue(\"transform\", [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n\n const textures = objectProperty.getValue(\"textures\");\n const geometries = objectData[\"geometries\"] || [];\n\n let numPolygons = 0;\n let numVertices = 0;\n let maxError = 0;\n for (const geometry of geometries) {\n const level = geometry[\"levels\"][0];\n numPolygons += level[\"triangles\"];\n numVertices += level[\"points\"];\n }\n property.insertValue(\"numPolygons\", numPolygons);\n property.insertValue(\"numVertices\", numVertices);\n\n const numFrames = 1;\n const numTexturedFrames = (objectData[\"textures\"] && objectData[\"textures\"].length > 0) ? 1 : 0;\n\n objectProperty.setValue(\"numFrames\", numFrames);\n objectProperty.setValue(\"numTexturedFrames\", numTexturedFrames);\n objectProperty.setValue(\"numPolygons\", numPolygons);\n objectProperty.setValue(\"numVertices\", numVertices);\n objectProperty.setValue(\"maxError\", maxError);\n\n property.insertValue(\"textures\", initTextures(textures));\n property.insertValue(\"geometries\", initGeometries(geometries));\n property.insertValue(\"textured\", textures.length > 0);\n\n objectProperty.getValue(\"frames\").push(property);\n}\n","import output from \"_src/engine/output\";\nimport loader from \"_src/loader\";\nimport { colorUtils, idGenerator } from \"_src/utils\";\nimport {propertyType, objectType, photoState, photoOrientation, scanMode} from \"_src/constants\";\nimport {createProperty, reformValue, getHexPaletteUnique, deepCopy, getCadType} from \"_src/reformer/property\";\nimport { vec3 } from \"_src/libs/gl-matrix\";\nimport appState from \"_src/app_state\";\nimport {initGeometries, initTextures} from \"_src/reformer/common/reformer\";\n\nexport default {\n async combineObjectStructure(objectProperty, projectPath) {\n switch (objectProperty.getValue(\"type\")) {\n case objectType.SCAN:\n case objectType.POINTCLOUD: {\n const needSurfels = appState.getStateValue(\"scanMode\") !== scanMode.TRIANGLES && Boolean(objectProperty.getValue(\"surfelsfile\"));\n const sourcePath = needSurfels ? objectProperty.getValue(\"surfelsfile\")[\"jsonref\"] : objectProperty.getValue(\"framesfile\")[\"jsonref\"];\n const json = await loader.load(projectPath + sourcePath, loader.JSON, null);\n combineScanProperty(objectProperty, json, needSurfels);\n\n break;\n }\n case objectType.FUSION: {\n const sourcePath = objectProperty.getValue(\"geometriesfile\")[\"jsonref\"];\n const json = await loader.load(projectPath + sourcePath, loader.JSON, null);\n combineFusionProperty(objectProperty, json);\n\n break;\n }\n case objectType.CAD: {\n const framesPath = objectProperty.getValue(\"framesfile\")[\"jsonref\"];\n const framesJson = await loader.load(projectPath + framesPath, loader.JSON, null);\n combineCadProperty(objectProperty, framesJson);\n\n break;\n }\n case objectType.PHOTO_GROUP: {\n const sourcePath = objectProperty.getValue(\"photosSource\")[\"jsonref\"];\n const json = await loader.load(projectPath + sourcePath, loader.JSON, null);\n combinePhotoGroupProperty(objectProperty, json);\n\n break;\n }\n case objectType.SECTION:\n case objectType.LINEAR_MEASURE:\n case objectType.GEODESIC_MEASURE:\n case objectType.DISTANCE_MAP: {\n const sourcePath = objectProperty.getValue(\"geometriesSource\")[\"jsonref\"];\n const json = await loader.load(projectPath + sourcePath, loader.JSON, null);\n combineMeasureStructure(objectProperty, json);\n\n break;\n }\n }\n },\n\n initMeasureProperty(measureData, type) {\n\n const property = createProperty(propertyType.MEASURE);\n\n property.insertValue(\"name\", reformValue(measureData, \"name\", () => \"\"));\n property.insertValue(\"id\", reformValue(measureData, \"id\", () => idGenerator.getNext()));\n property.insertValue(\"uuid\", reformValue(measureData[\"extra\"], \"uuid\", () => \"\"));\n property.insertValue(\"visible\", reformValue(measureData[\"extra\"], \"visible\", () => false));\n property.insertValue(\"measuredObjects\", measureData[\"measured-objects\"]);\n property.getValue(\"properties\")[\"value\"] = measureData[\"total-length\"];\n\n property.insertValue(\"type\", type);\n property.insertValue(\"geometriesSource\", type === objectType.LINEAR_MEASURE ? measureData[\"linear-points\"] : measureData[\"geodesic-lines\"]);\n\n return property;\n },\n\n initSectionProperty(sectionData) {\n\n const property = createProperty(propertyType.MEASURE);\n\n property.insertValue(\"name\", reformValue(sectionData, \"name\", () => \"\"));\n property.insertValue(\"id\", reformValue(sectionData, \"id\", () => idGenerator.getNext()));\n property.insertValue(\"uuid\", reformValue(sectionData[\"extra\"], \"uuid\", () => \"\"));\n property.insertValue(\"visible\", reformValue(sectionData[\"extra\"], \"visible\", () => false));\n property.insertValue(\"measuredObjects\", sectionData[\"measured-objects\"]);\n property.insertValue(\"type\", objectType.SECTION);\n\n const propertiesObject = property.getValue(\"properties\");\n propertiesObject[\"planes\"] = sectionData[\"numcuts\"];\n propertiesObject[\"distance\"] = sectionData[\"stepdelta\"];\n propertiesObject[\"direction\"] = sectionData[\"direction\"];\n\n property.insertValue(\"geometriesSource\", sectionData[\"zcuts\"]);\n\n property.insertValue(\"geometries\", []);\n const sections = property.getValue(\"geometries\");\n for (const zCutData of sectionData[\"cuts-visibility\"] || sectionData[\"cuts-info\"] || []) {\n for (const sectionData of zCutData[\"sections\"] || []) {\n const section = {\n objectUuid: null,\n transform: null,\n visible: sectionData[\"visible\"],\n selected: false,\n contours: [],\n properties: {\n volume: sectionData[\"volume\"],\n surfaceArea: sectionData[\"area\"],\n },\n };\n\n for (const contourData of sectionData[\"contours\"] || []) {\n const contour = {\n visible: contourData[\"visible\"],\n selected: false,\n file: null,\n index: null,\n properties: {\n area: contourData[\"area\"],\n perimeter: contourData[\"perimeter\"],\n },\n };\n section.contours.push(contour);\n }\n sections.push(section);\n }\n }\n\n return property;\n },\n\n initDistanceMapProperty(distanceMapData) {\n\n const property = createProperty(propertyType.MEASURE);\n\n property.insertValue(\"name\", reformValue(distanceMapData, \"name\", () => \"\"));\n property.insertValue(\"id\", reformValue(distanceMapData, \"id\", () => idGenerator.getNext()));\n property.insertValue(\"uuid\", reformValue(distanceMapData[\"extra\"], \"uuid\", () => \"\"));\n property.insertValue(\"type\", objectType.DISTANCE_MAP);\n property.insertValue(\"visible\", reformValue(distanceMapData[\"extra\"], \"visible\", () => false));\n property.insertValue(\"measuredObjects\", distanceMapData[\"measured-objects\"]);\n property.insertValue(\"searchDistance\", distanceMapData[\"search-distance\"]);\n property.insertValue(\"properties\", distanceMapData[\"statistic\"]);\n property.insertValue(\"geometriesSource\", distanceMapData[\"distances\"]);\n\n return property;\n },\n\n initObjectProperty(objectData, type, colorList) {\n\n const property = createProperty(propertyType.OBJECT);\n\n property.insertValue(\"name\", reformValue(objectData, \"name\", () => \"\"));\n property.insertValue(\"id\", reformValue(objectData, \"id\", () => idGenerator.getNext()));\n property.insertValue(\"visible\", reformValue(objectData[\"extra\"], \"visible\", () => true));\n property.insertValue(\"locked\", reformValue(objectData[\"extra\"], \"locked\", () => false));\n property.insertValue(\"color\", reformValue(objectData[\"extra\"], \"color\", () => getHexPaletteUnique(colorList)));\n property.insertValue(\"uuid\", reformValue(objectData[\"extra\"], \"uuid\", () => \"\"));\n property.insertValue(\"groupID\", reformValue(objectData, \"groupid\", () => \"\"));\n\n property.insertValue(\"scannertype\", reformValue(objectData[\"extra\"], \"scannertype\", () => \"\"));\n property.insertValue(\"deviceserial\", reformValue(objectData[\"extra\"], \"deviceserial\", () => \"\"));\n property.insertValue(\"datasize\", reformValue(objectData[\"extra\"], \"storagesize-total\", () => 0));\n property.insertValue(\"surfelsSize\", reformValue(objectData[\"extra\"], \"storagesize-surfels\", () => 0));\n property.insertValue(\"texturedSize\", reformValue(objectData[\"extra\"], \"storagesize-textured-geometries\", () => 0));\n property.insertValue(\"untexturedSize\", reformValue(objectData[\"extra\"], \"storagesize-untextured-geometries\", () => 0));\n property.insertValue(\"isHD\", reformValue(objectData[\"extra\"], \"ishd\", () => false));\n property.insertValue(\"texturegain\", reformValue(objectData[\"extra\"], \"texturegain\", () => 0.0));\n property.insertValue(\"texturecameratype\", reformValue(objectData[\"extra\"], \"texturecameratype\", () => 0));\n property.insertValue(\"textureillumination\", reformValue(objectData[\"extra\"], \"textureillumination\", () => 0.0));\n property.insertValue(\"globalapplied\", reformValue(objectData[\"extra\"], \"globalapplied\", () => false));\n\n property.insertValue(\"textures\", reformValue(objectData, \"textures\", () => []));\n\n property.insertValue(\"transform\", reformValue(objectData, \"transform\", () => [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]));\n property.insertValue(\"projection\", reformValue(objectData, \"projection\", () => [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0]));\n property.insertValue(\"correction\", reformValue(objectData, \"correction\", () => [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0]));\n\n property.insertValue(\"surfelsfile\", objectData[\"surfels\"] ? deepCopy(objectData[\"surfels\"]) : null);\n property.insertValue(\"geometriesfile\", objectData[\"geometries\"] ? deepCopy(objectData[\"geometries\"]) : null);\n property.insertValue(\"framesfile\", objectData[\"frames\"] ? deepCopy(objectData[\"frames\"]) : null);\n\n property.insertValue(\"type\", type);\n property.insertValue(\"numPolygons\", reformValue(objectData[\"extra\"], \"triangles\", () => 0));\n property.insertValue(\"numVertices\", reformValue(objectData[\"extra\"], \"points\", () => 0));\n property.insertValue(\"numSurfels\", reformValue(objectData[\"extra\"], \"surfelpoints\", () => 0));\n property.insertValue(\"maxError\", reformValue(objectData[\"extra\"], \"maxregerror\", () => 0.0));\n property.insertValue(\"numFrames\", reformValue(objectData[\"extra\"], \"numframes\", () => 0));\n property.insertValue(\"numTexturedFrames\", reformValue(objectData[\"extra\"], \"numtexturedframes\", () => 0));\n\n //hack\n const textureCounter = Math.max(property.getValue(\"textures\").length, property.getValue(\"numTexturedFrames\"));\n property.setValue(\"numTexturedFrames\", textureCounter);\n\n property.insertValue(\"textureWidth\", 0);\n property.insertValue(\"textureHeight\", 0);\n\n property.insertValue(\"cadProperties\", reformValue(objectData, \"properties\", () => new Object()));\n property.insertValue(\"cadData\", objectData[\"primitive\"]);\n property.insertValue(\"cadModel\", objectData[\"model\"]);\n property.insertValue(\"cadType\", getCadType(objectData));\n\n //cad experimental\n property.insertValue(\"referencedFusion\", objectData[\"referenced_fusion\"]);\n property.insertValue(\"fitmaskfile\", objectData[\"fit_mask\"]);\n property.insertValue(\"assembly\", objectData[\"assembly\"]);\n\n const hasTargetScan = objectData[\"related-object-uuid\"] !== undefined;\n const hasRawGeometry = objectData[\"extra\"][\"hasrawgeometry\"] !== undefined ? objectData[\"extra\"][\"hasrawgeometry\"] : hasTargetScan;\n const targetRawScan = hasTargetScan ? objectData[\"related-object-uuid\"] : objectData[\"extra\"][\"uuid\"];\n property.insertValue(\"hasrawgeometry\", hasRawGeometry);\n property.insertValue(\"targetRawScan\", targetRawScan);\n\n return property;\n },\n\n initPhotoGroupProperty(data) {\n\n const property = createProperty(propertyType.PHOTO_GROUP);\n\n property.insertValue(\"name\", reformValue(data, \"name\", () => \"\"));\n property.insertValue(\"id\", reformValue(data, \"id\", () => idGenerator.getNext()));\n property.insertValue(\"uuid\", reformValue(data[\"extra\"], \"uuid\", () => idGenerator.generateUUID()));\n property.insertValue(\"groupID\", reformValue(data, \"groupid\", () => \"\"));\n property.insertValue(\"visible\", reformValue(data[\"extra\"], \"visible\", () => false));\n property.insertValue(\"scenePhotoSize\", reformValue(data[\"extra\"], \"estimated-photo-size\", () => 1));\n property.insertValue(\"projection\", reformValue(data, \"projection\", () => [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0]));\n property.insertValue(\"transform\", reformValue(data, \"transform\", () => [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]));\n property.insertValue(\"properties\", data[\"extra\"]);\n const isRegistered = (data[\"extra\"][\"maxregerror\"] !== undefined) && (data[\"extra\"][\"maxregerror\"] >= 0);\n property.insertValue(\"registered\", isRegistered);\n property.insertValue(\"photosSource\", data[\"frames\"] ? deepCopy(data[\"frames\"]) : null);\n\n const undistMapData = data[\"undistortion-map\"];\n if (undistMapData) {\n const undistMapProperty = createProperty(propertyType.LEVEL);\n undistMapProperty.insertValue(\"width\", reformValue(undistMapData, \"width\", () => 1));\n undistMapProperty.insertValue(\"height\", reformValue(undistMapData, \"height\", () => 1));\n undistMapProperty.insertValue(\"channels\", reformValue(undistMapData, \"channels\", () => 2));\n undistMapProperty.insertValue(\"index\", reformValue(undistMapData, \"index\", () => 0));\n undistMapProperty.insertValue(\"file\", reformValue(undistMapData, \"file\", () => \"\"));\n undistMapProperty.insertValue(\"hash\", undistMapData[\"hash\"] || undistMapData[\"file\"]);\n\n property.insertValue(\"undistortionMap\", undistMapProperty);\n }\n\n return property;\n },\n}\n\nfunction combineScanProperty(objectProperty, data, isSurfels) {\n if (isSurfels) {\n const surfelsProperty = createProperty(propertyType.FRAME);\n surfelsProperty.insertValue(\"name\", objectProperty.getValue(\"name\"));\n surfelsProperty.insertValue(\"id\", objectProperty.getValue(\"id\"));\n surfelsProperty.insertValue(\"color\", objectProperty.getValue(\"color\"));\n\n surfelsProperty.insertValue(\"transform\", [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n surfelsProperty.insertValue(\"numSurfels\", objectProperty.getValue(\"numSurfels\"));\n\n surfelsProperty.insertValue(\"geometries\", initGeometries(data));\n objectProperty.getValue(\"frames\").push(surfelsProperty);\n } else {\n for (const frameData of data) {\n const property = createProperty(propertyType.FRAME);\n\n property.insertValue(\"name\", reformValue(frameData, \"name\", () => \"\"));\n property.insertValue(\"id\", reformValue(frameData, \"id\", () => \"\"));\n property.insertValue(\"color\", reformValue(frameData[\"extra\"], \"color\", () => colorUtils.generateHexColor()));\n property.insertValue(\"error\", reformValue(frameData[\"extra\"], \"regerror\", () => 0.0));\n property.insertValue(\"keyframe\", reformValue(frameData[\"extra\"], \"keyframe\", () => false));\n\n property.insertValue(\"transform\", reformValue(frameData, \"transform\", () => [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]));\n property.insertValue(\"numPolygons\", reformValue(frameData, \"numPolygons\", () => 0));\n property.insertValue(\"numVertices\", reformValue(frameData, \"numVertices\", () => 0));\n\n const textures = frameData[\"textures\"] || frameData[\"distorted\"] || [];\n const geometries = frameData[\"geometries\"] || [];\n const trackings = frameData[\"trackings\"] || [];\n\n property.insertValue(\"textured\", textures.length > 0);\n property.insertValue(\"textures\", initTextures(textures));\n property.insertValue(\"geometries\", initGeometries(geometries));\n property.insertValue(\"trackings\", deepCopy(trackings));\n\n objectProperty.getValue(\"frames\").push(property);\n }\n }\n}\n\nfunction combineFusionProperty(objectProperty, geometries) {\n const property = createProperty(propertyType.FRAME);\n\n property.insertValue(\"name\", objectProperty.getValue(\"name\"));\n property.insertValue(\"id\", objectProperty.getValue(\"id\"));\n property.insertValue(\"color\", objectProperty.getValue(\"color\"));\n\n property.insertValue(\"transform\", [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n property.insertValue(\"numPolygons\", objectProperty.getValue(\"numPolygons\"));\n property.insertValue(\"numVertices\", objectProperty.getValue(\"numVertices\"));\n\n const textures = objectProperty.getValue(\"textures\");\n\n property.insertValue(\"textures\", initTextures(textures));\n property.insertValue(\"geometries\", initGeometries(geometries));\n property.insertValue(\"textured\", textures.length > 0);\n\n objectProperty.getValue(\"frames\").push(property);\n}\n\nfunction combineCadProperty(objectProperty, framesData) {\n const frames = objectProperty.getValue(\"frames\");\n for (const frameData of framesData) {\n const property = createProperty(propertyType.FRAME);\n\n property.insertValue(\"name\", reformValue(frameData, \"name\", () => \"\"));\n property.insertValue(\"id\", reformValue(frameData, \"id\", () => \"\"));\n property.insertValue(\"color\", reformValue(frameData[\"extra\"], \"color\", () => colorUtils.generateHexColor()));\n property.insertValue(\"error\", reformValue(frameData[\"extra\"], \"regerror\", () => 0.0));\n property.insertValue(\"keyframe\", reformValue(frameData[\"extra\"], \"keyframe\", () => false));\n\n property.insertValue(\"transform\", reformValue(frameData, \"transform\", () => [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]));\n property.insertValue(\"numPolygons\", reformValue(frameData, \"numPolygons\", () => 0));\n property.insertValue(\"numVertices\", reformValue(frameData, \"numVertices\", () => 0));\n\n const textures = frameData[\"textures\"] || [];\n const geometries = frameData[\"geometries\"] || [];\n const trackings = frameData[\"trackings\"] || [];\n\n property.insertValue(\"textured\", textures.length > 0);\n property.insertValue(\"textures\", initTextures(textures));\n property.insertValue(\"geometries\", initGeometries(geometries));\n property.insertValue(\"trackings\", deepCopy(trackings));\n\n frames.push(property);\n }\n}\n\nfunction combinePhotoGroupProperty(property, photos) {\n property.setValue(\"photos\", photos);\n for (const photo of property.getValue(\"photos\")) {\n photo[\"state\"] = photoState.DEFAULT;\n photo[\"properties\"] = photo[\"extra\"];\n const isRegistered = (photo[\"extra\"][\"regerror\"] !== undefined) && (photo[\"extra\"][\"regerror\"] >= 0);\n photo[\"registered\"] = isRegistered;\n photo[\"orientation\"] = parsePhotoOrientation(photo[\"extra\"][\"orientation\"]);\n }\n}\n\nfunction combineMeasureStructure(property, geometries) {\n switch (property.getValue(\"type\")) {\n case objectType.LINEAR_MEASURE: {\n property.setValue(\"geometries\", geometries);\n if (property.getValue(\"properties\")[\"value\"] === undefined) {\n const pointsData = property.getValue(\"geometries\");\n let distance = 0;\n for (let i = 0; i < pointsData.length - 1; i++) {\n distance += vec3.distance(pointsData[i][\"position\"], pointsData[i + 1][\"position\"]);\n }\n property.getValue(\"properties\")[\"value\"] = distance;\n }\n\n break;\n }\n\n case objectType.GEODESIC_MEASURE: {\n property.setValue(\"geometries\", geometries);\n if (property.getValue(\"properties\")[\"value\"] === undefined) {\n let distance = 0;\n for (const knotData of property.getValue(\"geometries\")) {\n distance += knotData[\"length\"];\n }\n property.getValue(\"properties\")[\"value\"] = distance;\n }\n\n break;\n }\n\n case objectType.SECTION: {\n let sectionOffset = 0;\n for (let i=0; i rawScan[\"extra\"][\"uuid\"] === targetRawScan)) {\n scanProperty.setValue(\"hasrawgeometry\", false);\n scanProperty.setValue(\"targetRawScan\", \"fixed inconsistency\");\n }\n }\n}\n","import Shader from \"_src/engine/shader\";\nimport extensions from \"_src/engine/extensions\";\nimport compat from \"_src/engine/compat\";\nimport {shadingType, colorType} from \"_src/constants\";\nimport {\n blendFactor,\n uniformType,\n uniformSource,\n cullingFrontFace,\n pixelBufferType,\n textureMinFilter, textureMagFilter\n} from \"_src/engine/constants\";\nimport { vec2, vec3, vec4, mat4 } from \"_src/libs/gl-matrix\";\nimport Uniform from \"_src/engine/uniform\";\nimport gl_types from \"_src/engine/gl_types\";\n\nimport { drawMode } from \"_src/engine/constants\";\nimport vertText from \"_src/shaders/default/default.glslv\";\nimport fragText from \"_src/shaders/default/default.glslf\";\nimport config from \"_src/config\";\nimport appState from \"_src/app_state\";\nimport output from \"_src/engine/output\";\nimport bufferFactory from \"_src/engine/factories/pixel_buffer\";\n\nconst _vec3Tmp = vec3.create();\nconst _vec4Tmp = vec4.create();\nconst _mat4Tmp = mat4.create();\n\nconst preprocessorRules = {\n \"BM_NONE\": appState.BM_NONE,\n \"BM_DIFFUSE\": appState.BM_DIFFUSE,\n \"BM_TRANSPARENT\": appState.BM_TRANSPARENT,\n \"BM_FRONTFACE\": appState.BM_FRONTFACE,\n \"FLAT_SHADING\": 0,\n \"SMOOTH_SHADING\": 1,\n \"CCW\": 0,\n \"CW\": 1,\n \"TRIANGLES_MODE\": 0,\n \"POINTS_MODE\": 1,\n \"BLINN_PHONG\": 0,\n \"PHONG\": 1,\n \"LAMBERT\": 0,\n \"HALF_LAMB\": 1,\n \"NONE\": 0,\n \"CONCURRENT\": 1,\n \"BLEND\": 2,\n \"BUFFER\": colorType.BUFFER,\n \"TEXTURE_UV\": colorType.TEXTURE_UV,\n \"TEXTURE_PROJECTION\": colorType.TEXTURE_PROJECTION,\n \"DISTANCE_MAP\": colorType.DISTANCE_MAP,\n \"MATCAP\": colorType.MATCAP,\n \"UNIFORM\": colorType.UNIFORM,\n};\n\nexport default class DefaultShader extends Shader {\n\n constructor(params = {}) {\n\n super(params);\n\n this.attachUniforms(params);\n\n this.textureAdjustment = false;\n this.surfelsFiltering = params.surfelsFiltering !== undefined && extensions.checkDepthRecalc() ? params.surfelsFiltering : false;\n\n this.setTextureAdjustmentEnabled(false);\n this.setXrayEnabled(params.xray !== undefined ? params.xray : false);\n this.setShading(params.shading !== undefined ? params.shading : shadingType.FLAT);\n this.setSurfelsFiltering(params.surfelsFiltering !== undefined ? params.surfelsFiltering : appState.SM_CONCURRENT);\n }\n\n //reimplementation\n initDirectives(params) {\n this._directives[\"COLOR_TYPE\"] = params.colorMode !== undefined ? params.colorMode : colorType.UNIFORM;\n this._directives[\"COLOR_CORRECTION\"] = false;\n this._directives[\"COLOR_MIX\"] = false;\n this._directives[\"WIREFRAME\"] = params.wireframe !== undefined ? params.wireframe : false;\n this._directives[\"LOGARITHMIC_DEPTH\"] = false;\n this._directives[\"RGB_DEPTH\"] = params.drawDepth !== undefined ? params.drawDepth : false;\n this._directives[\"SELECTION\"] = params.selectionMask !== undefined ? params.selectionMask : false;\n this._directives[\"LIGHTING\"] = params.lighting !== undefined ? params.lighting : true;\n this._directives[\"FRONT_FACE\"] = this.cullingFrontFace === gl_types.getFrontFace(cullingFrontFace.CLOCK_WISE) ? \"CW\" : \"CCW\";\n this._directives[\"XRAY\"] = false;\n this._directives[\"INVERT_FACES\"] = false;\n this._directives[\"ADJUSTMENT\"] = false;\n this._directives[\"OBJECT_ID\"] = params.writeObjectID !== undefined ? params.writeObjectID : false;\n this._directives[\"DEBUG_CHUNKS\"] = false;\n this._directives[\"SHADING\"] = \"\";\n this._directives[\"DRAW_MODE\"] = \"\";\n this._directives[\"NUM_LIGHTS\"] = 0;\n this._directives[\"SURFELS_MODE\"] = params.surfelsMode !== undefined ? params.surfelsMode : false;\n this._directives[\"SURFELS_FILTERING\"] = \"\";\n this._directives[\"SURFELS_SIZE_CONSTRAINT\"] = params.surfelsSizeConstraint !== undefined ? params.surfelsSizeConstraint : false;\n this._directives[\"SURFELS_BUFFERED_SIZE\"] = params.surfelsBufferedSize !== undefined ? params.surfelsBufferedSize : true;\n this._directives[\"SPECULAR\"] = \"BLINN_PHONG\";\n this._directives[\"BACKFACE_MODE\"] = params.backFaceMode !== undefined ? params.backFaceMode : appState.BM_DIFFUSE;\n this._directives[\"MONOCHROMATIC_COLOR\"] = params.monochromaticColor !== undefined ? params.monochromaticColor : false;\n this._directives[\"DM_OUTPUT\"] = params.distanceMapOutput !== undefined ? params.distanceMapOutput : false;\n this._directives[\"DISTANCE_COUNTER\"] = 1;\n this._directives[\"FILTERING_WEIGHT_NORMALIZATION\"] = compat.floatingTexturesRenderingEnabled;\n this._directives[\"CONTINUOUS_DISTANCE\"] = false;\n this._directives[\"FRESNEL_ALPHA\"] = params.fresnelAlpha !== undefined ? params.fresnelAlpha : false;\n this._directives[\"SCREEN_SPACE\"] = params.screenSpace !== undefined ? params.screenSpace : false;\n\n this._dependentDirectives.add(\"FRONT_FACE\");\n this._dependentDirectives.add(\"XRAY\");\n this._dependentDirectives.add(\"ADJUSTMENT\");\n this._dependentDirectives.add(\"WIREFRAME\");\n this._dependentDirectives.add(\"SHADING\");\n this._dependentDirectives.add(\"NUM_LIGHTS\");\n this._dependentDirectives.add(\"SPECULAR\");\n this._dependentDirectives.add(\"DRAW_MODE\");\n this._dependentDirectives.add(\"BACKFACE_MODE\");\n this._dependentDirectives.add(\"DISTANCE_COUNTER\");\n this._dependentDirectives.add(\"SURFELS_FILTERING\");\n }\n\n compile() {\n\n this.standardDerivativesEnabled = this._directives[\"SHADING\"] === \"FLAT_SHADING\" || this._directives[\"WIREFRAME\"];\n this.mrtEnabled = this._directives[\"WIREFRAME\"] || this._directives[\"RGB_DEPTH\"] || this._directives[\"OBJECT_ID\"]\n || this._directives[\"DM_OUTPUT\"];\n this.writeDepth = this._directives[\"SURFELS_FILTERING\"];\n this.generalOutputEnabled = this._directives[\"DM_OUTPUT\"] || this._directives[\"RGB_DEPTH\"];\n\n const fragModifiedText = this.preprocessFShaderText(fragText);\n\n super.compile(vertText, fragModifiedText, preprocessorRules);\n\n }\n\n preprocessFShaderText(shaderText) {\n\n const useMRT = this.mrtEnabled && compat.mrtEnabled;\n\n if (!useMRT) {\n return shaderText;\n }\n\n const fragOutRegex = new RegExp(\"FRAG_OUT\", \"g\");\n const fragDefRegex = new RegExp(\"FRAG_DEF_OUT\", \"g\");\n\n let outputText = shaderText;\n\n let outputCounter = 0;\n let outputIndex = 0;\n const outputReplacer = (match) => {\n\n let result = \"\";\n\n switch(outputCounter) {\n case 0:\n result = useMRT ? match + outputIndex++ : match;\n break;\n case 1:\n result = this._directives[\"WIREFRAME\"] ? match + outputIndex++ : \"\";\n break;\n case 2:\n result = this._directives[\"OBJECT_ID\"] ? match + outputIndex++ : \"\";\n break;\n case 3:\n result = this.generalOutputEnabled ? match + outputIndex++ : \"\";\n break;\n default:\n result = match + outputIndex++;\n break;\n }\n\n ++outputCounter;\n\n return result;\n\n };\n\n outputText = outputText.replace(fragDefRegex, outputReplacer);\n outputCounter = 0;\n outputIndex = 0;\n outputText = outputText.replace(fragOutRegex, outputReplacer);\n\n return outputText;\n\n }\n\n updateChunkUniformValues(chunk) {\n if (this._directives[\"DEBUG_CHUNKS\"]) {\n const uniform = this.uniforms[\"u_chunk_color\"];\n vec3.copy(uniform.value, chunk.color);\n }\n }\n\n updateObjectUniformValues(object) {\n mat4.copy(this.uniforms[\"u_model_matrix\"].value, object.modelMatrix);\n if (this._directives[\"COLOR_TYPE\"] !== colorType.MATCAP) {\n vec4.copy(this.uniforms[\"u_diffuse\"].value, object.properties.diffuseColor);\n vec3.copy(this.uniforms[\"u_reflectivity\"].value, object.properties.reflectivity);\n this.uniforms[\"u_enable_color_correction\"].value = Number(object.properties.enableColorCorrection);\n this.uniforms[\"u_enable_linear_color_space\"].value = Number(object.properties.enableLinearColorSpace);\n this.uniforms[\"u_enable_lambert_shading\"].value = Number(object.properties.enableLambertDiffuse);\n }\n }\n\n updateSceneUniformValues(scene) {\n\n const camera = scene.camera;\n\n for (let i = 0; i < scene.lightPositions.length; ++i) {\n this.uniforms[\"u_light_positions[0]\"].value[i] = scene.lightPositions[i];\n this.uniforms[\"u_light_colors[0]\"].value[i] = scene.lightColors[i];\n }\n vec3.copy(this.uniforms[\"u_cam_pos\"].value, scene.cameraTrans);\n\n mat4.copy(this.uniforms[\"u_view_proj_matrix\"].value, camera.viewProjMat);\n mat4.copy(this.uniforms[\"u_proj_matrix\"].value, camera.projMat);\n vec2.set(this.uniforms[\"u_viewport\"].value, camera.viewport[2], camera.viewport[3]);\n mat4.copy(this.uniforms[\"u_view_mat\"].value, camera.viewMat);\n vec2.copy(this.uniforms[\"u_cam_near_far\"].value, camera.nearFar);\n this.uniforms[\"u_surfels_depth_prepass\"].value = scene.isDepthPrepass;\n this.uniforms[\"u_fresnel_enabled\"].value = !scene.isObjectIDPass;\n }\n\n updateSceneDirectives(scene) {\n // NOTE: Light number is not changing in the app right now but it is allowed\n if (this.getNumLights() !== scene.getLightsCount()) {\n this.setNumLights(scene.getLightsCount());\n }\n }\n\n attachUniforms(params) {\n\n const numLights = this._directives[\"NUM_LIGHTS\"];\n const specularColor = params.specularColor ? vec3.clone(params.specularColor)\n : vec3.fromValues(1.0, 1.0, 1.0);\n const diffuseColor = vec4.fromValues(0.8, 0.8, 0.8, 1.0);\n const xrayEdgeFalloff = \"xrayEdgeFalloff\" in params ? params.xrayEdgeFalloff : 0.1;\n const xrayIntensity = \"xrayIntensity\" in params ? params.xrayIntensity : 1.1;\n const objectID = \"objectID\" in params ? params.objectID : -1;\n const colorMixFactor = \"colorMixFactor\" in params ? params.colorMixFactor : 0.2;\n const pointSize = \"pointSize\" in params ? params.pointSize : 1.0;\n const objectSize = \"objectSize\" in params ? params.objectSize : 25.0;\n const backfaceColor = vec3.fromValues(0.8, 0.8, 0.4);\n const chunkColor = vec3.fromValues(0.8, 0.8, 0.8);\n const mixColor = vec3.fromValues(0.8, 0.0, 0.8);\n const lightColors = new Float32Array(3 * numLights);\n const lightPositions = new Float32Array(3 * numLights);\n const reflectivity = vec3.fromValues(0.5, 0.5, 0.0);\n const viewProjectionMatrix = mat4.create();\n const viewInverseMatrix = mat4.create();\n const cameraPosition = vec3.create();\n const modelMatrix = mat4.create();\n const textureProjMatrix = mat4.create();\n const textureColorMatrix = mat4.create();\n const selectionColor = vec3.fromValues( config.selectionColor.r,\n config.selectionColor.g,\n config.selectionColor.b);\n const adjustmentSettings = vec4.fromValues(0, 1, 1, 1);\n const textureGamma = 1.0;\n const undefinedColor = \"undefinedColor\" in params ? vec3.clone(params.undefinedColor) : vec3.fromValues(0.5, 0.5, 0.5);\n const thrColor = \"thrColor\" in params ? vec3.clone(params.thrColor) : vec3.fromValues(0.0, 0.0, 0.0);\n const minSearchDistance = \"minSearchDistance\" in params ? params.minSearchDistance : 0.0;\n const maxSearchDistance = \"maxSearchDistance\" in params ? params.maxSearchDistance : 0.0;\n const minGradientDistance = \"minGradientDistance\" in params ? params.minGradientDistance : 0.0;\n const maxGradientDistance = \"maxGradientDistance\" in params ? params.maxGradientDistance : 0.0;\n const minThrDistance = \"minThrDistance\" in params ? params.minThrDistance : 0.0;\n const maxThrDistance = \"maxThrDistance\" in params ? params.maxThrDistance : 0.0;\n const distanceSearchRange = vec2.fromValues(minSearchDistance, maxSearchDistance);\n const distanceGradientRange= vec2.fromValues(minGradientDistance, maxGradientDistance);\n const distanceThrRange = vec2.fromValues(minThrDistance, maxThrDistance);\n const surfelsNoiseSize = \"surfelsNoiseSize\" in params ? params.surfelsNoiseSize : 1.0;\n\n this.uniforms[\"u_backface_color\"] = new Uniform(uniformType.FLOAT3, backfaceColor);\n this.uniforms[\"u_specular\"] = new Uniform(uniformType.FLOAT3, specularColor);\n this.uniforms[\"u_edgeFalloff\"] = new Uniform(uniformType.FLOAT1, xrayEdgeFalloff);\n this.uniforms[\"u_intensity\"] = new Uniform(uniformType.FLOAT1, xrayIntensity);\n this.uniforms[\"u_text_proj_matrix\"] = new Uniform(uniformType.MAT4, textureProjMatrix);\n this.uniforms[\"u_text_color_matrix\"] = new Uniform(uniformType.MAT4, textureColorMatrix);\n this.uniforms[\"u_selection_color\"] = new Uniform(uniformType.FLOAT3, selectionColor);\n this.uniforms[\"u_mix_color\"] = new Uniform(uniformType.FLOAT3, mixColor);\n this.uniforms[\"u_color_mix_factor\"] = new Uniform(uniformType.FLOAT1, colorMixFactor);\n this.uniforms[\"u_point_size\"] = new Uniform(uniformType.FLOAT1, pointSize);\n this.uniforms[\"u_object_size\"] = new Uniform(uniformType.FLOAT1, objectSize);\n this.uniforms[\"u_tex_adjustment\"] = new Uniform(uniformType.FLOAT4, adjustmentSettings);\n this.uniforms[\"u_tex_gamma\"] = new Uniform(uniformType.FLOAT1, textureGamma);\n this.uniforms[\"u_chunk_color\"] = new Uniform(uniformType.FLOAT3, chunkColor, uniformSource.CHUNK);\n this.uniforms[\"u_light_colors[0]\"] = new Uniform(uniformType.FLOAT3V, lightColors, uniformSource.SCENE);\n this.uniforms[\"u_light_positions[0]\"] = new Uniform(uniformType.FLOAT3V, lightPositions, uniformSource.SCENE);\n this.uniforms[\"u_view_proj_matrix\"] = new Uniform(uniformType.MAT4, viewProjectionMatrix, uniformSource.SCENE);\n this.uniforms[\"u_view_mat\"] = new Uniform(uniformType.MAT4, viewInverseMatrix, uniformSource.SCENE);\n this.uniforms[\"u_cam_pos\"] = new Uniform(uniformType.FLOAT3V, cameraPosition, uniformSource.SCENE);\n this.uniforms[\"u_viewport\"] = new Uniform(uniformType.FLOAT2V, vec2.create(), uniformSource.SCENE);\n this.uniforms[\"u_proj_matrix\"] = new Uniform(uniformType.MAT4, mat4.create(), uniformSource.SCENE);\n this.uniforms[\"u_cam_near_far\"] = new Uniform(uniformType.FLOAT2V, vec2.create(), uniformSource.SCENE);\n this.uniforms[\"u_model_matrix\"] = new Uniform(uniformType.MAT4, modelMatrix, uniformSource.OBJECT);\n this.uniforms[\"u_diffuse\"] = new Uniform(uniformType.FLOAT4, diffuseColor, uniformSource.OBJECT);\n this.uniforms[\"tDiffuse\"] = new Uniform(uniformType.INT1, 0, uniformSource.OBJECT);\n this.uniforms[\"u_object_id\"] = new Uniform(uniformType.INT1, objectID, uniformSource.OBJECT);\n this.uniforms[\"u_enable_color_correction\"] = new Uniform(uniformType.INT1, 0, uniformSource.OBJECT);\n this.uniforms[\"u_enable_linear_color_space\"]= new Uniform(uniformType.INT1, 0, uniformSource.OBJECT);\n this.uniforms[\"u_enable_lambert_shading\"] = new Uniform(uniformType.INT1, 0, uniformSource.OBJECT);\n this.uniforms[\"u_reflectivity\"] = new Uniform(uniformType.FLOAT3, reflectivity, uniformSource.OBJECT);\n this.uniforms[\"u_distance_search_range\"] = new Uniform(uniformType.FLOAT2, distanceSearchRange);\n this.uniforms[\"u_distance_gradient_range\"] = new Uniform(uniformType.FLOAT2, distanceGradientRange);\n this.uniforms[\"u_distance_thr_range\"] = new Uniform(uniformType.FLOAT2, distanceThrRange);\n this.uniforms[\"u_undefined_color\"] = new Uniform(uniformType.FLOAT3, undefinedColor);\n this.uniforms[\"u_thr_color\"] = new Uniform(uniformType.FLOAT3, thrColor);\n this.uniforms[\"u_surfels_noise_size\"] = new Uniform(uniformType.FLOAT1, surfelsNoiseSize);\n this.uniforms[\"u_surfels_depth_prepass\"] = new Uniform(uniformType.INT1, 0, uniformSource.SCENE);\n this.uniforms[\"u_fresnel_bias\"] = new Uniform(uniformType.FLOAT1, config.frensel.bias);\n this.uniforms[\"u_fresnel_scale\"] = new Uniform(uniformType.FLOAT1, config.frensel.scale);\n this.uniforms[\"u_fresnel_power\"] = new Uniform(uniformType.FLOAT1, config.frensel.power);\n this.uniforms[\"u_fresnel_backfaceFactor\"] = new Uniform(uniformType.FLOAT1, config.frensel.backfaceFactor);\n this.uniforms[\"u_fresnel_enabled\"] = new Uniform(uniformType.INT1, 0, uniformSource.SCENE);\n this.uniforms[\"u_enable_monochromatic\"] = new Uniform(uniformType.INT1, 0);\n }\n\n updateDistanceMapTexture(distanceColors) {\n this._textures.length = 0;\n if (!distanceColors) {\n return;\n }\n\n this._setDirective(\"DISTANCE_COUNTER\", distanceColors.length/4);\n const buffer = new Uint8Array(distanceColors);\n\n const texture = bufferFactory.create(pixelBufferType.T_RGBA,\n {\n width: distanceColors.length/4,\n height: 1,\n immutable: true,\n magFilter: textureMagFilter.NEAREST,\n minFilter: textureMinFilter.NEAREST,\n });\n texture.initMipMapLevelBuffer(0, buffer);\n this._textures.push(texture);\n }\n\n setSurfelsFiltering(filteringMode) {\n if (!extensions.checkDepthRecalc() && filteringMode === appState.SM_CONCURRENT) {\n filteringMode = appState.SM_BLEND;\n output.warn(\"Concurrent filtering mode is not supported on this device\");\n }\n\n let directiveString;\n switch (filteringMode) {\n case appState.SM_NONE:\n directiveString = \"NONE\";\n break;\n case appState.SM_CONCURRENT:\n directiveString = \"CONCURRENT\";\n break;\n case appState.SM_BLEND:\n directiveString = \"BLEND\";\n this.setSourceBlendFactor(blendFactor.ONE);\n this.setDestBlendFactor(blendFactor.ONE);\n break;\n }\n\n this._setDirective(\"SURFELS_FILTERING\", directiveString);\n }\n\n getSurfelsFiltering() {\n const directiveString = this._directives[\"SURFELS_FILTERING\"];\n switch (directiveString) {\n case \"NONE\":\n return appState.SM_NONE;\n case \"CONCURRENT\":\n return appState.SM_CONCURRENT;\n case \"BLEND\":\n return appState.SM_BLEND;\n }\n }\n\n setSelectionColor(r, g, b) {\n const color = vec3.set(_vec3Tmp, r, g, b);\n this.setUniform(\"u_selection_color\", color);\n }\n\n setBackFaceColor(r, g, b) {\n const color = vec3.set(_vec3Tmp, r, g, b);\n this.setUniform(\"u_backface_color\", color);\n }\n\n setObjectID(id) {\n this.setUniform(\"u_object_id\", id);\n }\n\n getBackfaceColor() {\n return this.uniforms[\"u_backface_color\"].value;\n }\n\n setTextureProjectionMatrix(m) {\n const projectionMatrix = mat4.set(_mat4Tmp, m[0], m[1], m[2], 0,\n m[3], m[4], m[5], 0,\n m[6], m[7], m[8], 0,\n m[9], m[10], m[11], 0);\n this.setUniform(\"u_text_proj_matrix\", projectionMatrix);\n }\n\n setColorCorrectionMatrix(m) {\n this.setUniform(\"u_text_color_matrix\", m);\n }\n\n setMixColor(r, g, b) {\n const color = vec3.set(_vec3Tmp, r, g, b);\n this.setUniform(\"u_mix_color\", color);\n }\n\n setColorMixFactor(factor) {\n this.setUniform(\"u_color_mix_factor\", factor);\n }\n\n setPointSize(size) {\n this.setUniform(\"u_point_size\", size);\n }\n\n setObjectSize(size) {\n this.setUniform(\"u_object_size\", size);\n }\n\n setXrayEnabled(enabled) {\n if (this._directives[\"XRAY\"] !== enabled) {\n this.transparent = enabled;\n\n if (enabled) {\n this.setSourceBlendFactor(blendFactor.ONE);\n this.setDestBlendFactor(blendFactor.ONE);\n } else {\n this.setSourceBlendFactor(blendFactor.SRC_ALPHA);\n this.setDestBlendFactor(blendFactor.ONE_MINUS_SRC_ALPHA);\n }\n\n }\n this._setDirective(\"XRAY\", enabled);\n }\n\n setXrayEdgeFalloff(value) {\n this.setUniform(\"u_edgeFalloff\", value);\n }\n\n setXrayIntensity(value) {\n this.setUniform(\"u_intensity\", value);\n }\n\n setWireframeEnabled(enabled, transparent) {\n this._setDirective(\"WIREFRAME\", enabled);\n\n if (enabled && transparent) {\n this.setSourceBlendFactor(blendFactor.SRC_ALPHA);\n this.setDestBlendFactor(blendFactor.ONE_MINUS_SRC_ALPHA);\n }\n\n }\n\n setCullingFrontFace(frontFace) {\n super.setCullingFrontFace(frontFace);\n this._setDirective(\"FRONT_FACE\", frontFace === cullingFrontFace.CLOCK_WISE ? \"CW\" : \"CCW\")\n }\n\n setBackfaceMode(mode) {\n this.backFaceCulling = mode === appState.BM_NONE;\n this._setDirective(\"BACKFACE_MODE\", mode);\n }\n\n setTextureAdjustmentEnabled(enabled) {\n this.textureAdjustment = enabled;\n this._setDirective(\"ADJUSTMENT\", enabled);\n }\n\n setShading(shading) {\n const oldShading = this._directives[\"SHADING\"];\n\n const standardDerivatives = extensions.get(\"OES_standard_derivatives\");\n if (shading === shadingType.FLAT && standardDerivatives) {\n this._setDirective(\"SHADING\",\"FLAT_SHADING\");\n } else {\n this._setDirective(\"SHADING\",\"SMOOTH_SHADING\");\n }\n\n return oldShading === this._directives[\"SHADING\"];\n }\n\n setDrawMode(mode) {\n switch (mode) {\n case drawMode.POINTS:\n this._setDirective(\"DRAW_MODE\",\"POINTS_MODE\");\n break;\n default:\n this._setDirective(\"DRAW_MODE\",\"TRIANGLES_MODE\");\n }\n }\n\n setTextureHue(value) {\n const adjustmentSettings = vec4.set(_vec4Tmp, value,\n this.getTextureSaturation(), this.getTextureBrightness(), this.getTextureContrast());\n this.setUniform(\"u_tex_adjustment\", adjustmentSettings);\n }\n\n setTextureSaturation(value) {\n const adjustmentSettings = vec4.set(_vec4Tmp, this.getTextureHue(),\n value, this.getTextureBrightness(), this.getTextureContrast());\n this.setUniform(\"u_tex_adjustment\", adjustmentSettings);\n }\n\n setTextureBrightness(value) {\n const adjustmentSettings = vec4.set(_vec4Tmp, this.getTextureHue(),\n this.getTextureSaturation(), value, this.getTextureContrast());\n this.setUniform(\"u_tex_adjustment\", adjustmentSettings);\n }\n\n setTextureContrast(value) {\n const adjustmentSettings = vec4.set(_vec4Tmp, this.getTextureHue(),\n this.getTextureSaturation(), this.getTextureBrightness(), value);\n this.setUniform(\"u_tex_adjustment\", adjustmentSettings);\n }\n\n setTextureGamma(value) {\n this.setUniform(\"u_tex_gamma\", value);\n }\n\n getTextureHue() {\n return this.uniforms[\"u_tex_adjustment\"].value[0];\n }\n\n getTextureSaturation() {\n return this.uniforms[\"u_tex_adjustment\"].value[1];\n }\n\n getTextureBrightness() {\n return this.uniforms[\"u_tex_adjustment\"].value[2];\n }\n\n getTextureContrast() {\n return this.uniforms[\"u_tex_adjustment\"].value[3];\n }\n\n getTextureGamma() {\n return this.uniforms[\"u_tex_gamma\"].value;\n }\n\n setThrColor(r, g, b) {\n this.uniforms[\"u_thr_color\"].value[0] = r;\n this.uniforms[\"u_thr_color\"].value[1] = g;\n this.uniforms[\"u_thr_color\"].value[2] = b;\n }\n\n setDistanceSearchRange(min, max) {\n this.uniforms[\"u_distance_search_range\"].value[0] = min;\n this.uniforms[\"u_distance_search_range\"].value[1] = max;\n }\n\n setDistanceGradientRange(min, max) {\n this.uniforms[\"u_distance_gradient_range\"].value[0] = min;\n this.uniforms[\"u_distance_gradient_range\"].value[1] = max;\n }\n\n setDistanceThrRange(min, max) {\n this.uniforms[\"u_distance_thr_range\"].value[0] = min;\n this.uniforms[\"u_distance_thr_range\"].value[1] = max;\n }\n\n setNumLights(numLights) {\n this._setDirective(\"NUM_LIGHTS\", numLights);\n if (this.uniforms[\"u_light_positions[0]\"].value.length != numLights) {\n this.uniforms[\"u_light_positions[0]\"].value = new Float32Array(3 * numLights);\n this.uniforms[\"u_light_colors[0]\"].value = new Float32Array(3 * numLights);\n }\n }\n\n getNumLights() {\n return this._directives[\"NUM_LIGHTS\"];\n }\n\n setSurfelsNoiseSize(size) {\n this.setUniform(\"u_surfels_noise_size\", size);\n }\n\n setMonochromaticEnabled(enabled) {\n this.setUniform(\"u_enable_monochromatic\", enabled);\n }\n\n}\n","import Shader from \"_src/engine/shader\";\nimport Uniform from \"_src/engine/uniform\";\nimport {uniformType, uniformSource} from \"_src/engine/constants\";\n\nimport vertText from \"_src/shaders/copy/copy.glslv\";\nimport fragText from \"_src/shaders/copy/copy.glslf\";\n\nexport default class CopyShader extends Shader {\n\n constructor(params = {}) {\n\n super(params);\n\n this.attachUniforms();\n this.depthTest = false;\n\n }\n\n compile() {\n super.compile(vertText, fragText);\n }\n\n attachUniforms() {\n this.uniforms[\"u_text_diffuse\"] = new Uniform(uniformType.INT1, 0, uniformSource.OBJECT);\n }\n\n}\n","import { bufferType, attributeId } from \"_src/engine/constants\";\n\nfunction getAttributeNameByID(id) {\n\n switch(id) {\n case attributeId.POSITION:\n return \"a_position\";\n case attributeId.POSITION2D:\n return \"a_position2d\";\n case attributeId.INDICES_32:\n case attributeId.INDICES_16:\n case attributeId.INDICES_8:\n return \"indices\";\n case attributeId.EDGES_INDICES_32:\n case attributeId.EDGES_INDICES_16:\n case attributeId.EDGES_INDICES_8:\n return \"edges_indices\";\n case attributeId.NORMAL:\n return \"a_normal\";\n case attributeId.UV:\n return \"a_uv\";\n case attributeId.COLOR:\n return \"a_color\";\n case attributeId.DISTANCE:\n return \"a_distance\";\n case attributeId.SIZE:\n return \"a_size\";\n case attributeId.FIT_MASK:\n return \"fit_mask\";\n case attributeId.OLD_INDICES:\n return \"old_indices\";\n }\n\n return null;\n\n}\n\nfunction getTypedArrayByID(id) {\n\n switch(id) {\n case attributeId.POSITION:\n case attributeId.POSITION2D:\n case attributeId.NORMAL:\n case attributeId.UV:\n case attributeId.DISTANCE:\n case attributeId.SIZE:\n return Float32Array;\n case attributeId.INDICES_32:\n case attributeId.EDGES_INDICES_32:\n case attributeId.OLD_INDICES:\n return Uint32Array;\n case attributeId.INDICES_16:\n case attributeId.EDGES_INDICES_16:\n return Uint16Array;\n case attributeId.COLOR:\n case attributeId.INDICES_8:\n case attributeId.EDGES_INDICES_8:\n case attributeId.FIT_MASK:\n return Uint8Array;\n }\n\n return null;\n\n}\n\nfunction getTypeByID(id) {\n\n switch(id) {\n case attributeId.POSITION:\n case attributeId.NORMAL:\n return bufferType.F32_3;\n case attributeId.INDICES_32:\n return bufferType.UI32_3;\n case attributeId.POSITION2D:\n case attributeId.UV:\n return bufferType.F32_2;\n case attributeId.COLOR:\n return bufferType.UI8_4;\n case attributeId.INDICES_16:\n return bufferType.UI16_3;\n case attributeId.INDICES_8:\n return bufferType.UI8_3;\n case attributeId.DISTANCE:\n case attributeId.SIZE:\n return bufferType.F32_1;\n case attributeId.FIT_MASK:\n return bufferType.UI8_1;\n case attributeId.EDGES_INDICES_32:\n return bufferType.UI32_2;\n case attributeId.EDGES_INDICES_16:\n return bufferType.UI16_2;\n case attributeId.EDGES_INDICES_8:\n return bufferType.UI8_2;\n case attributeId.OLD_INDICES:\n return bufferType.UI32_1;\n }\n\n return null;\n\n}\n\nfunction getAttributeIDByName(name, typedArray) {\n\n switch(name) {\n case \"a_position\":\n return attributeId.POSITION;\n case \"a_position2d\":\n return attributeId.POSITION2D;\n case \"indices\":\n if (typedArray instanceof Uint32Array) {\n return attributeId.INDICES_32;\n } else if (typedArray instanceof Uint16Array) {\n return attributeId.INDICES_16;\n } else {\n return attributeId.INDICES_8;\n }\n case \"edges_indices\":\n if (typedArray instanceof Uint32Array) {\n return attributeId.EDGES_INDICES_32;\n } else if (typedArray instanceof Uint16Array) {\n return attributeId.EDGES_INDICES_16;\n } else {\n return attributeId.EDGES_INDICES_8;\n }\n case \"a_normal\":\n return attributeId.NORMAL;\n case \"a_uv\":\n return attributeId.UV;\n case \"a_color\":\n return attributeId.COLOR;\n case \"a_distance\":\n return attributeId.DISTANCE;\n case \"a_size\":\n return attributeId.SIZE;\n case \"fit_mask\":\n return attributeId.FIT_MASK;\n case \"old_indices\":\n return attributeId.OLD_INDICES;\n }\n\n return null;\n\n}\n\nfunction checkDegenerateTriangle(v1, v2, v3) {\n return v1 == v2 || v2 == v3 || v3 == v1;\n}\n\nconst DEFAULT_ATTRIBUTES = [\"a_position\", \"indices\", \"a_normal\", \"a_uv\", \"a_color\", \"a_size\", \"a_distance\", \"fit_mask\", \"edges_indices\", \"old_indices\"];\nconst DEFAULT_NO_INDICES_ATTRIBUTES = [\"a_position\", \"a_normal\", \"a_uv\", \"a_color\", \"a_size\", \"a_distance\", \"fit_mask\"];\n\nexport { getAttributeNameByID, getTypedArrayByID, getTypeByID,\n getAttributeIDByName, DEFAULT_ATTRIBUTES, DEFAULT_NO_INDICES_ATTRIBUTES, checkDegenerateTriangle };\n","import output from \"_src/engine/output\";\nimport {\n ColorTextureMaterial,\n MatCapMaterial,\n SurfelsMaterial,\n PBRMaterial,\n CADMaterial,\n CADEdgesMaterial\n} from \"_src/client/materials/material\";\n\nconst _astudioMaterialStorage = new WeakMap();\nconst _matCapStorage = new Map();\nconst _pbrMaterialStorage = new WeakMap();\n\nconst ASTUDIO = 0;\nconst MATCAP = 1;\nconst SURFELS = 2;\nconst CAD = 3;\nconst CAD_EDGES = 5;\nconst PBR = 6;\nconst NONE = 7;\n\nexport default {\n ASTUDIO,\n MATCAP,\n SURFELS,\n CAD,\n CAD_EDGES,\n NONE,\n PBR,\n\n async resetMaterial(type, model, properties) {\n _releaseMaterial(model);\n await _setMaterial(model, type, properties);\n },\n\n isAppliable(type, model) {\n switch (type) {\n case PBR:\n return _pbrMaterialStorage.has(model);\n default:\n return true;\n }\n }\n}\n\nfunction _releaseMaterial(model) {\n if (!model.properties) {\n return;\n }\n\n switch (model.properties.type) {\n case ASTUDIO: {\n const material = _astudioMaterialStorage.get(model);\n if (!material) {\n output.error(output.DEVELOPERS_ERROR, \"Trying to release unregistered astudio material\");\n return;\n }\n\n material.shader = model.shader;\n material.properties = model.properties;\n material.textures = model.textures;\n\n model.shader = null;\n model.properties = null;\n model.textures = null;\n\n break;\n }\n\n case PBR: {\n const material = _pbrMaterialStorage.get(model);\n if (!material) {\n output.error(output.DEVELOPERS_ERROR, \"Trying to release unregistered pbr material\");\n return;\n }\n\n let astudioMaterial = _astudioMaterialStorage.get(model);\n if (!astudioMaterial) {\n astudioMaterial = new ColorTextureMaterial(model.properties);\n _astudioMaterialStorage.set(model, astudioMaterial);\n }\n\n material.shader = model.shader;\n material.properties = model.properties;\n material.textures = [model.textures[1]];\n astudioMaterial.textures = [model.textures[0]];\n\n model.shader = null;\n model.properties = null;\n model.textures = null;\n\n break;\n }\n\n case MATCAP: {\n const materialEntry = _matCapStorage.get(model.properties.matCapPath);\n if (!materialEntry) {\n output.error(output.DEVELOPERS_ERROR, \"Trying to release released matcap material\");\n return;\n }\n\n materialEntry.ownersCounter--;\n if (materialEntry.ownersCounter === 0) {\n _matCapStorage.delete(model.properties.matCapPath);\n }\n\n break;\n }\n }\n}\n\nasync function _setMaterial(model, type, properties) {\n properties.type = type;\n switch (type) {\n case ASTUDIO: {\n let material = _astudioMaterialStorage.get(model);\n if (!material) {\n material = new ColorTextureMaterial(properties);\n _astudioMaterialStorage.set(model, material);\n }\n\n model.shader = material.shader;\n model.properties = material.properties;\n model.textures = material.textures;\n\n material.shader = null;\n material.properties = null;\n material.textures = null;\n break;\n }\n\n case MATCAP: {\n let materialEntry = _matCapStorage.get(properties.matCapPath);\n if (!materialEntry) {\n materialEntry = {\n material: new MatCapMaterial(properties),\n ownersCounter: 0,\n };\n _matCapStorage.set(properties.matCapPath, materialEntry);\n }\n materialEntry.ownersCounter++;\n const material = materialEntry.material;\n\n await material.initPromise;\n\n model.shader = material.shader;\n model.properties = material.properties;\n model.textures = material.textures;\n\n break;\n }\n case PBR: {\n let material = _pbrMaterialStorage.get(model);\n if (!material) {\n material = new PBRMaterial(properties);\n _pbrMaterialStorage.set(model, material);\n }\n\n model.shader = material.shader;\n model.properties = material.properties;\n\n if (!material.resources) await material.initPromise;\n const resources = material.resources;\n const astudioMaterial = _astudioMaterialStorage.get(model);\n\n model.textures = [];\n if (astudioMaterial) model.textures[0] = astudioMaterial.textures[0];\n model.textures[1] = material.textures[0];\n model.textures[2] = resources.irradiance;\n model.textures[3] = resources.prefilter;\n model.textures[4] = resources.brdf;\n\n material.shader = null;\n material.properties = null;\n material.textures = null;\n\n break;\n }\n\n case SURFELS: {\n const material = new SurfelsMaterial(properties);\n\n model.shader = material.shader;\n model.properties = material.properties;\n model.textures = material.textures;\n\n break;\n }\n\n case CAD: {\n const material = new CADMaterial(properties);\n\n model.shader = material.shader;\n model.properties = material.properties;\n model.textures = material.textures;\n\n break;\n }\n\n case CAD_EDGES: {\n const EDGE_COLOR = [0.0, 0.0, 0.0];\n const material = new CADEdgesMaterial(properties);\n\n model.shader = material.shader;\n model.properties = material.properties;\n model.textures = material.textures;\n model.setDiffuseColor(...EDGE_COLOR);\n model.setFrustrumCulling(false);\n\n break;\n }\n\n case NONE: {\n model.shader = null;\n model.properties = null;\n model.textures = null;\n break;\n }\n\n default: {\n output.error(output.DEVELOPERS_ERROR, \"can't get material with unknown type: \" + type);\n return;\n }\n }\n}\n","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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}","/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;\n if (closed_1 || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n//# sourceMappingURL=canReportError.js.map\n","/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n//# sourceMappingURL=toSubscriber.js.map\n","/** PURE_IMPORTS_START _noop PURE_IMPORTS_END */\nimport { noop } from './noop';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (!fns) {\n return noop;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map\n","/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nvar Observable = /*@__PURE__*/ (function () {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map\n","/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nvar Subscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n switch (arguments.length) {\n case 0:\n _this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n _this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n }\n else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n break;\n }\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n return _this;\n }\n Subscriber.prototype[rxSubscriberSymbol] = function () { return this; };\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config.useDeprecatedSynchronousErrorHandling;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\n//# sourceMappingURL=Subscriber.js.map\n","\"use strict\";\n/* istanbul ignore file - tricky to import some things from this module during testing */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Parser = exports.createSyntaxDiagramsCode = exports.clearCache = exports.generateCstDts = exports.GAstVisitor = exports.serializeProduction = exports.serializeGrammar = exports.Terminal = exports.Rule = exports.RepetitionWithSeparator = exports.RepetitionMandatoryWithSeparator = exports.RepetitionMandatory = exports.Repetition = exports.Option = exports.NonTerminal = exports.Alternative = exports.Alternation = exports.defaultLexerErrorProvider = exports.NoViableAltException = exports.NotAllInputParsedException = exports.MismatchedTokenException = exports.isRecognitionException = exports.EarlyExitException = exports.defaultParserErrorProvider = exports.LLkLookaheadStrategy = exports.getLookaheadPaths = exports.tokenName = exports.tokenMatcher = exports.tokenLabel = exports.EOF = exports.createTokenInstance = exports.createToken = exports.LexerDefinitionErrorType = exports.Lexer = exports.EMPTY_ALT = exports.ParserDefinitionErrorType = exports.EmbeddedActionsParser = exports.CstParser = exports.VERSION = void 0;\n// semantic version\nvar version_1 = require(\"./version\");\nObject.defineProperty(exports, \"VERSION\", { enumerable: true, get: function () { return version_1.VERSION; } });\nvar parser_1 = require(\"./parse/parser/parser\");\nObject.defineProperty(exports, \"CstParser\", { enumerable: true, get: function () { return parser_1.CstParser; } });\nObject.defineProperty(exports, \"EmbeddedActionsParser\", { enumerable: true, get: function () { return parser_1.EmbeddedActionsParser; } });\nObject.defineProperty(exports, \"ParserDefinitionErrorType\", { enumerable: true, get: function () { return parser_1.ParserDefinitionErrorType; } });\nObject.defineProperty(exports, \"EMPTY_ALT\", { enumerable: true, get: function () { return parser_1.EMPTY_ALT; } });\nvar lexer_public_1 = require(\"./scan/lexer_public\");\nObject.defineProperty(exports, \"Lexer\", { enumerable: true, get: function () { return lexer_public_1.Lexer; } });\nObject.defineProperty(exports, \"LexerDefinitionErrorType\", { enumerable: true, get: function () { return lexer_public_1.LexerDefinitionErrorType; } });\n// Tokens utilities\nvar tokens_public_1 = require(\"./scan/tokens_public\");\nObject.defineProperty(exports, \"createToken\", { enumerable: true, get: function () { return tokens_public_1.createToken; } });\nObject.defineProperty(exports, \"createTokenInstance\", { enumerable: true, get: function () { return tokens_public_1.createTokenInstance; } });\nObject.defineProperty(exports, \"EOF\", { enumerable: true, get: function () { return tokens_public_1.EOF; } });\nObject.defineProperty(exports, \"tokenLabel\", { enumerable: true, get: function () { return tokens_public_1.tokenLabel; } });\nObject.defineProperty(exports, \"tokenMatcher\", { enumerable: true, get: function () { return tokens_public_1.tokenMatcher; } });\nObject.defineProperty(exports, \"tokenName\", { enumerable: true, get: function () { return tokens_public_1.tokenName; } });\n// Lookahead\nvar lookahead_1 = require(\"./parse/grammar/lookahead\");\nObject.defineProperty(exports, \"getLookaheadPaths\", { enumerable: true, get: function () { return lookahead_1.getLookaheadPaths; } });\nvar llk_lookahead_1 = require(\"./parse/grammar/llk_lookahead\");\nObject.defineProperty(exports, \"LLkLookaheadStrategy\", { enumerable: true, get: function () { return llk_lookahead_1.LLkLookaheadStrategy; } });\n// Other Utilities\nvar errors_public_1 = require(\"./parse/errors_public\");\nObject.defineProperty(exports, \"defaultParserErrorProvider\", { enumerable: true, get: function () { return errors_public_1.defaultParserErrorProvider; } });\nvar exceptions_public_1 = require(\"./parse/exceptions_public\");\nObject.defineProperty(exports, \"EarlyExitException\", { enumerable: true, get: function () { return exceptions_public_1.EarlyExitException; } });\nObject.defineProperty(exports, \"isRecognitionException\", { enumerable: true, get: function () { return exceptions_public_1.isRecognitionException; } });\nObject.defineProperty(exports, \"MismatchedTokenException\", { enumerable: true, get: function () { return exceptions_public_1.MismatchedTokenException; } });\nObject.defineProperty(exports, \"NotAllInputParsedException\", { enumerable: true, get: function () { return exceptions_public_1.NotAllInputParsedException; } });\nObject.defineProperty(exports, \"NoViableAltException\", { enumerable: true, get: function () { return exceptions_public_1.NoViableAltException; } });\nvar lexer_errors_public_1 = require(\"./scan/lexer_errors_public\");\nObject.defineProperty(exports, \"defaultLexerErrorProvider\", { enumerable: true, get: function () { return lexer_errors_public_1.defaultLexerErrorProvider; } });\n// grammar reflection API\nvar gast_1 = require(\"@chevrotain/gast\");\nObject.defineProperty(exports, \"Alternation\", { enumerable: true, get: function () { return gast_1.Alternation; } });\nObject.defineProperty(exports, \"Alternative\", { enumerable: true, get: function () { return gast_1.Alternative; } });\nObject.defineProperty(exports, \"NonTerminal\", { enumerable: true, get: function () { return gast_1.NonTerminal; } });\nObject.defineProperty(exports, \"Option\", { enumerable: true, get: function () { return gast_1.Option; } });\nObject.defineProperty(exports, \"Repetition\", { enumerable: true, get: function () { return gast_1.Repetition; } });\nObject.defineProperty(exports, \"RepetitionMandatory\", { enumerable: true, get: function () { return gast_1.RepetitionMandatory; } });\nObject.defineProperty(exports, \"RepetitionMandatoryWithSeparator\", { enumerable: true, get: function () { return gast_1.RepetitionMandatoryWithSeparator; } });\nObject.defineProperty(exports, \"RepetitionWithSeparator\", { enumerable: true, get: function () { return gast_1.RepetitionWithSeparator; } });\nObject.defineProperty(exports, \"Rule\", { enumerable: true, get: function () { return gast_1.Rule; } });\nObject.defineProperty(exports, \"Terminal\", { enumerable: true, get: function () { return gast_1.Terminal; } });\n// GAST Utilities\nvar gast_2 = require(\"@chevrotain/gast\");\nObject.defineProperty(exports, \"serializeGrammar\", { enumerable: true, get: function () { return gast_2.serializeGrammar; } });\nObject.defineProperty(exports, \"serializeProduction\", { enumerable: true, get: function () { return gast_2.serializeProduction; } });\nObject.defineProperty(exports, \"GAstVisitor\", { enumerable: true, get: function () { return gast_2.GAstVisitor; } });\nvar cst_dts_gen_1 = require(\"@chevrotain/cst-dts-gen\");\nObject.defineProperty(exports, \"generateCstDts\", { enumerable: true, get: function () { return cst_dts_gen_1.generateCstDts; } });\n/* istanbul ignore next */\nfunction clearCache() {\n console.warn(\"The clearCache function was 'soft' removed from the Chevrotain API.\" +\n \"\\n\\t It performs no action other than printing this message.\" +\n \"\\n\\t Please avoid using it as it will be completely removed in the future\");\n}\nexports.clearCache = clearCache;\nvar render_public_1 = require(\"./diagrams/render_public\");\nObject.defineProperty(exports, \"createSyntaxDiagramsCode\", { enumerable: true, get: function () { return render_public_1.createSyntaxDiagramsCode; } });\nvar Parser = /** @class */ (function () {\n function Parser() {\n throw new Error(\"The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead.\\t\\n\" +\n \"See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0\");\n }\n return Parser;\n}());\nexports.Parser = Parser;\n//# sourceMappingURL=api.js.map","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { createMemoryHistory, createLocation, locationsAreEqual, createPath } from 'history';\nimport warning from 'tiny-warning';\nimport createContext from 'mini-create-react-context';\nimport invariant from 'tiny-invariant';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport pathToRegexp from 'path-to-regexp';\nimport { isValidElementType } from 'react-is';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistStatics from 'hoist-non-react-statics';\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext = function createNamedContext(name) {\n var context = createContext();\n context.displayName = name;\n return context;\n};\n\nvar historyContext =\n/*#__PURE__*/\ncreateNamedContext(\"Router-History\");\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext$1 = function createNamedContext(name) {\n var context = createContext();\n context.displayName = name;\n return context;\n};\n\nvar context =\n/*#__PURE__*/\ncreateNamedContext$1(\"Router\");\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Router, _React$Component);\n\n Router.computeRootMatch = function computeRootMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n function Router(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n location: props.history.location\n }; // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n\n _this._isMounted = false;\n _this._pendingLocation = null;\n\n if (!props.staticContext) {\n _this.unlisten = props.history.listen(function (location) {\n if (_this._isMounted) {\n _this.setState({\n location: location\n });\n } else {\n _this._pendingLocation = location;\n }\n });\n }\n\n return _this;\n }\n\n var _proto = Router.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({\n location: this._pendingLocation\n });\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n };\n\n _proto.render = function render() {\n return React.createElement(context.Provider, {\n value: {\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }\n }, React.createElement(historyContext.Provider, {\n children: this.props.children || null,\n value: this.props.history\n }));\n };\n\n return Router;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(prevProps.history === this.props.history, \"You cannot change \") : void 0;\n };\n}\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createMemoryHistory(_this.props);\n return _this;\n }\n\n var _proto = MemoryRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\") : void 0;\n };\n}\n\nvar Lifecycle =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Lifecycle, _React$Component);\n\n function Lifecycle() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Lifecycle.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return Lifecycle;\n}(React.Component);\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\n\nfunction Prompt(_ref) {\n var message = _ref.message,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when;\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n if (!when || context.staticContext) return null;\n var method = context.history.block;\n return React.createElement(Lifecycle, {\n onMount: function onMount(self) {\n self.release = method(message);\n },\n onUpdate: function onUpdate(self, prevProps) {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n },\n onUnmount: function onUnmount(self) {\n self.release();\n },\n message: message\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nvar cache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n var generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\n\n\nfunction generatePath(path, params) {\n if (path === void 0) {\n path = \"/\";\n }\n\n if (params === void 0) {\n params = {};\n }\n\n return path === \"/\" ? path : compilePath(path)(params, {\n pretty: true\n });\n}\n\n/**\n * The public API for navigating programmatically with a component.\n */\n\nfunction Redirect(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to,\n _ref$push = _ref.push,\n push = _ref$push === void 0 ? false : _ref$push;\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history,\n staticContext = context.staticContext;\n var method = push ? history.push : history.replace;\n var location = createLocation(computedMatch ? typeof to === \"string\" ? generatePath(to, computedMatch.params) : _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n }) : to); // When rendering in a static context,\n // set the new location immediately.\n\n if (staticContext) {\n method(location);\n return null;\n }\n\n return React.createElement(Lifecycle, {\n onMount: function onMount() {\n method(location);\n },\n onUpdate: function onUpdate(self, prevProps) {\n var prevLocation = createLocation(prevProps.to);\n\n if (!locationsAreEqual(prevLocation, _extends({}, location, {\n key: prevLocation.key\n }))) {\n method(location);\n }\n },\n to: to\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nvar cache$1 = {};\nvar cacheLimit$1 = 10000;\nvar cacheCount$1 = 0;\n\nfunction compilePath$1(path, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});\n if (pathCache[path]) return pathCache[path];\n var keys = [];\n var regexp = pathToRegexp(path, keys, options);\n var result = {\n regexp: regexp,\n keys: keys\n };\n\n if (cacheCount$1 < cacheLimit$1) {\n pathCache[path] = result;\n cacheCount$1++;\n }\n\n return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */\n\n\nfunction matchPath(pathname, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = {\n path: options\n };\n }\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === void 0 ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === void 0 ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n var paths = [].concat(path);\n return paths.reduce(function (matched, path) {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n var _compilePath = compilePath$1(path, {\n end: exact,\n strict: strict,\n sensitive: sensitive\n }),\n regexp = _compilePath.regexp,\n keys = _compilePath.keys;\n\n var match = regexp.exec(pathname);\n if (!match) return null;\n var url = match[0],\n values = match.slice(1);\n var isExact = pathname === url;\n if (exact && !isExact) return null;\n return {\n path: path,\n // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url,\n // the matched portion of the URL\n isExact: isExact,\n // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n var value = children(props);\n process.env.NODE_ENV !== \"production\" ? warning(value !== undefined, \"You returned `undefined` from the `children` function of \" + (\", but you \") + \"should have returned a React element or `null`\") : void 0;\n return value || null;\n}\n/**\n * The public API for matching a single path and rendering.\n */\n\n\nvar Route =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Route, _React$Component);\n\n function Route() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Route.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return React.createElement(context.Consumer, null, function (context$1) {\n !context$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context$1.location;\n var match = _this.props.computedMatch ? _this.props.computedMatch // already computed the match for us\n : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;\n\n var props = _extends({}, context$1, {\n location: location,\n match: match\n });\n\n var _this$props = _this.props,\n children = _this$props.children,\n component = _this$props.component,\n render = _this$props.render; // Preact uses an empty array as children by\n // default, so use null if that's the case.\n\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return React.createElement(context.Provider, {\n value: props\n }, props.match ? children ? typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? React.createElement(component, props) : render ? render(props) : null : typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);\n });\n };\n\n return Route;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: function component(props, propName) {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\"Invalid prop 'component' supplied to 'Route': the prop is not a valid React component\");\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n };\n\n Route.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n var base = addLeadingSlash(basename);\n if (location.pathname.indexOf(base) !== 0) return location;\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return function () {\n process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot %s with \", methodName) : invariant(false) ;\n };\n}\n\nfunction noop() {}\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\n\nvar StaticRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(StaticRouter, _React$Component);\n\n function StaticRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.handlePush = function (location) {\n return _this.navigateTo(location, \"PUSH\");\n };\n\n _this.handleReplace = function (location) {\n return _this.navigateTo(location, \"REPLACE\");\n };\n\n _this.handleListen = function () {\n return noop;\n };\n\n _this.handleBlock = function () {\n return noop;\n };\n\n return _this;\n }\n\n var _proto = StaticRouter.prototype;\n\n _proto.navigateTo = function navigateTo(location, action) {\n var _this$props = this.props,\n _this$props$basename = _this$props.basename,\n basename = _this$props$basename === void 0 ? \"\" : _this$props$basename,\n _this$props$context = _this$props.context,\n context = _this$props$context === void 0 ? {} : _this$props$context;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$basename = _this$props2.basename,\n basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename,\n _this$props2$context = _this$props2.context,\n context = _this$props2$context === void 0 ? {} : _this$props2$context,\n _this$props2$location = _this$props2.location,\n location = _this$props2$location === void 0 ? \"/\" : _this$props2$location,\n rest = _objectWithoutPropertiesLoose(_this$props2, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: function createHref(path) {\n return addLeadingSlash(basename + createURL(path));\n },\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n return React.createElement(Router, _extends({}, rest, {\n history: history,\n staticContext: context\n }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Switch, _React$Component);\n\n function Switch() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Switch.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context.location;\n var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n\n React.Children.forEach(_this.props.children, function (child) {\n if (match == null && React.isValidElement(child)) {\n element = child;\n var path = child.props.path || child.props.from;\n match = path ? matchPath(location.pathname, _extends({}, child.props, {\n path: path\n })) : context.match;\n }\n });\n return match ? React.cloneElement(element, {\n location: location,\n computedMatch: match\n }) : null;\n });\n };\n\n return Switch;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\n/**\n * A public higher-order component to access the imperative API\n */\n\nfunction withRouter(Component) {\n var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutPropertiesLoose(props, [\"wrappedComponentRef\"]);\n\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <\" + displayName + \" /> outside a \") : invariant(false) : void 0;\n return React.createElement(Component, _extends({}, remainingProps, context, {\n ref: wrappedComponentRef\n }));\n });\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (process.env.NODE_ENV !== \"production\") {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nvar useContext = React.useContext;\nfunction useHistory() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useHistory()\") : invariant(false) : void 0;\n }\n\n return useContext(historyContext);\n}\nfunction useLocation() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useLocation()\") : invariant(false) : void 0;\n }\n\n return useContext(context).location;\n}\nfunction useParams() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useParams()\") : invariant(false) : void 0;\n }\n\n var match = useContext(context).match;\n return match ? match.params : {};\n}\nfunction useRouteMatch(path) {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useRouteMatch()\") : invariant(false) : void 0;\n }\n\n var location = useLocation();\n var match = useContext(context).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== \"undefined\") {\n var global = window;\n var key = \"__react_router_build__\";\n var buildNames = {\n cjs: \"CommonJS\",\n esm: \"ES modules\",\n umd: \"UMD\"\n };\n\n if (global[key] && global[key] !== \"esm\") {\n var initialBuildName = buildNames[global[key]];\n var secondaryBuildName = buildNames[\"esm\"]; // TODO: Add link to article that explains in detail how to avoid\n // loading 2 different builds.\n\n throw new Error(\"You are loading the \" + secondaryBuildName + \" build of React Router \" + (\"on a page that is already running the \" + initialBuildName + \" \") + \"build, so things won't work right.\");\n }\n\n global[key] = \"esm\";\n }\n}\n\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, historyContext as __HistoryContext, context as __RouterContext, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter };\n//# sourceMappingURL=react-router.js.map\n","import output from \"_src/engine/output\";\nimport events from \"_src/engine/events\";\nimport GL from \"_src/engine/gl\";\nimport extensions from \"_src/engine/extensions\";\n\nexport default {\n\n isWebGL2 : false,\n mrtEnabled : false,\n floatingTexturesRenderingEnabled: false,\n textureCompressionEnabled: false,\n\n maxColorAttachments : 1,\n\n collectSystemData() {\n\n const mrt_ext = extensions.get(\"WEBGL_draw_buffers\");\n this.mrtEnabled = Boolean(mrt_ext);\n\n const gl = GL.getContext();\n\n this.isWebGL2 = GL.checkWebGL2();\n this.maxColorAttachments = getMaxColorBuffers(gl);\n this.floatingTexturesRenderingEnabled = checkFloatingTexturesRendering();\n this.textureCompressionEnabled = checkTextureCompression();\n\n reportGpuInfo(gl);\n\n }\n\n}\n\nfunction checkTextureCompression() {\n const ext =\n extensions.get(\"WEBGL_compressed_texture_s3tc\") ||\n extensions.get(\"MOZ_WEBGL_compressed_texture_s3tc\") ||\n extensions.get(\"WEBKIT_WEBGL_compressed_texture_s3tc\");\n\n return Boolean(ext);\n}\n\nfunction checkFloatingTexturesRendering() {\n if (GL.checkWebGL2()) {\n if (!extensions.get(\"EXT_color_buffer_half_float\")) {\n return false;\n }\n } else {\n if (!extensions.get(\"OES_texture_half_float\")) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getMaxColorBuffers(gl) {\n let maxColorBuffers = 1;\n\n if (GL.checkWebGL2()) {\n maxColorBuffers = gl.getParameter(gl.MAX_COLOR_ATTACHMENTS);\n } else {\n const ext = extensions.get(\"WEBGL_draw_buffers\");\n if (ext != null) {\n maxColorBuffers = gl.getParameter(ext.MAX_DRAW_BUFFERS_WEBGL);\n }\n }\n\n return maxColorBuffers;\n}\n\nfunction reportGpuInfo(gl) {\n const debugInfo = extensions.get(\"WEBGL_debug_renderer_info\");\n if (debugInfo !== null) {\n const vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);\n const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);\n checkIntelIntegrated(renderer);\n\n output.log(\"GPU driver vendor: \\\"\" + vendor + \"\\\"\", output.GREEN);\n output.log(\"GPU driver renderer: \\\"\" + renderer + \"\\\"\", output.GREEN);\n }\n}\n\nfunction checkIntelIntegrated(renderer) {\n renderer = renderer.toLowerCase();\n if ((renderer.includes(\"intel\") || renderer.includes(\"iris\")) && !renderer.includes(\"arc\")) {\n events.emit(\"integratedVideoCardDetected\");\n }\n}\n","import Shader from \"_src/engine/shader\";\nimport Uniform from \"_src/engine/uniform\";\nimport { uniformType, uniformSource } from \"_src/engine/constants\";\nimport { vec2, vec3, vec4, mat4 } from \"_src/libs/gl-matrix\";\n\nimport vertText from \"_src/shaders/line/line.glslv\";\nimport fragText from \"_src/shaders/line/line.glslf\";\nimport {lineColorType, lineType} from \"_src/constants\";\n\nconst _VEC2_TMP = vec2.create();\n\nconst preprocessorRules = {\n \"SCREEN\": lineType.SCREEN,\n \"INSTANCED\": lineType.INSTANCED,\n \"GENERAL\": lineType.GENERAL,\n \"UNIFORM\": lineColorType.UNIFORM,\n \"TEXTURE\": lineColorType.TEXTURE,\n \"BUFFER\": lineColorType.BUFFER,\n \"OUTPUT\": lineColorType.OUTPUT,\n};\n\nexport default class LineShader extends Shader {\n\n constructor(params = {}) {\n\n super(params);\n\n this.animated = false;\n this.instanceDivisor = 1;\n this.instancedAttributesRemapping = this.instancedMode ? {\n \"a_line_start\": \"a_position\",\n \"a_line_direction\": \"a_normal\"\n } : {};\n\n this.attachUniforms(params);\n\n }\n\n //reimplementation\n initDirectives(params) {\n this._directives[\"COLOR_TYPE\"] = params.colorType !== undefined ? _lineColorTypeString(params.colorType) : \"UNIFORM\";\n this._directives[\"FADING\"] = params.useFading !== undefined ? params.useFading : false;\n this._directives[\"ANTIALIASING\"] = params.antialiasing !== undefined ? params.antialiasing : true;\n\n if (this.instancedMode) {\n this._directives[\"LINE_TYPE\"] = \"INSTANCED\";\n } else if (params.screenSpace) {\n this._directives[\"LINE_TYPE\"] = \"SCREEN\";\n } else {\n this._directives[\"LINE_TYPE\"] = \"GENERAL\";\n }\n\n this._dependentDirectives.add(\"LINE_TYPE\");\n }\n\n compile() {\n super.compile(vertText, fragText, preprocessorRules);\n }\n\n updateObjectUniformValues(object) {\n mat4.copy(this.uniforms[\"u_model_matrix\"].value, object.modelMatrix);\n if (!this.instancedMode) {\n vec4.copy(this.uniforms[\"u_diffuse\"].value, object.properties.diffuseColor);\n }\n }\n\n updateSceneUniformValues(scene) {\n\n const camera = scene.camera;\n\n mat4.copy(this.uniforms[\"u_view_mat\"].value, camera.viewMat);\n mat4.copy(this.uniforms[\"u_proj_mat\"].value, camera.projMat);\n mat4.copy(this.uniforms[\"u_view_inv_mat\"].value, camera.modelMatrix);\n vec2.copy(this.uniforms[\"u_viewport\"].value, vec2.set(_VEC2_TMP, camera.viewport[2], camera.viewport[3]));\n vec2.copy(this.uniforms[\"u_cam_near_far\"].value, camera.nearFar);\n\n }\n\n attachUniforms(params) {\n\n const lineWidth = \"lineWidth\" in params ? params.lineWidth : 2;\n const lineLength = \"lineLength\" in params ? params.lineLength : 1;\n const texPeriod = \"texPeriod\" in params ? params.lineWidth : 0.2;\n const texOffset = 0.0;\n const modelMatrix = mat4.create();\n const viewMatrix = mat4.create();\n const projectionMatrix = mat4.create();\n const viewInverseMatrix = mat4.create();\n const diffuseColor = \"diffuseColor\" in params ? params.diffuseColor : vec4.create();\n const viewport = vec2.fromValues(100.0, 100.0);\n const fadeDistance = \"fadeDistance\" in params ? params.fadeDistance : 100;\n const viewTarget = \"viewTarget\" in params ? vec3.clone(params.viewTarget)\n : vec3.create();\n const distanceRange = \"distanceRange\" in params ? vec2.clone(params.distanceRange) : vec2.create();\n const viewPoint = params.viewPoint ? vec3.clone(params.viewPoint)\n : vec3.create();\n const tolerance = \"tolerance\" in params ? params.tolerance : 1.0;\n\n this.uniforms[\"u_view_mat\"] = new Uniform(uniformType.MAT4, viewMatrix, uniformSource.SCENE);\n this.uniforms[\"u_proj_mat\"] = new Uniform(uniformType.MAT4, projectionMatrix, uniformSource.SCENE);\n this.uniforms[\"u_cam_near_far\"] = new Uniform(uniformType.FLOAT2, vec2.create(), uniformSource.SCENE);\n this.uniforms[\"u_view_inv_mat\"] = new Uniform(uniformType.MAT4, viewInverseMatrix, uniformSource.SCENE);\n this.uniforms[\"u_viewport\"] = new Uniform(uniformType.FLOAT2, viewport, uniformSource.SCENE);\n this.uniforms[\"u_model_matrix\"] = new Uniform(uniformType.MAT4, modelMatrix, uniformSource.OBJECT);\n this.uniforms[\"u_diffuse\"] = new Uniform(uniformType.FLOAT4, diffuseColor, this.instancedMode ? uniformSource.SHADER : uniformSource.OBJECT);\n this.uniforms[\"u_tex_offset\"] = new Uniform(uniformType.FLOAT1, texOffset);\n this.uniforms[\"u_line_width\"] = new Uniform(uniformType.FLOAT1, lineWidth);\n this.uniforms[\"u_line_length\"] = new Uniform(uniformType.FLOAT1, lineLength);\n this.uniforms[\"u_tex_period_length\"] = new Uniform(uniformType.FLOAT1, texPeriod);\n this.uniforms[\"u_fade_distance\"] = new Uniform(uniformType.FLOAT1, fadeDistance);\n this.uniforms[\"u_view_point\"] = new Uniform(uniformType.FLOAT3, viewPoint);\n this.uniforms[\"u_view_target\"] = new Uniform(uniformType.FLOAT3, viewTarget);\n this.uniforms[\"tDiffuse\"] = new Uniform(uniformType.INT1, 0);\n this.uniforms[\"u_tolerance\"] = new Uniform(uniformType.FLOAT1, tolerance);\n this.uniforms[\"u_distance_range\"] = new Uniform(uniformType.FLOAT2, distanceRange);\n }\n\n setTexturePeriod(value) {\n this.setUniform(\"u_tex_period_length\", value);\n }\n\n setLineLength(value) {\n this.setUniform(\"u_line_length\", value);\n }\n\n setLineWidth(value) {\n this.setUniform(\"u_line_width\", value);\n }\n\n setViewPoint(point) {\n this.setUniform(\"u_view_point\", point);\n }\n\n setViewTarget(point) {\n this.setUniform(\"u_view_target\", point);\n }\n\n setFadeDistance(dist) {\n this.setUniform(\"u_fade_distance\", dist);\n }\n\n getTetxureOffset() {\n return this.uniforms[\"u_tex_offset\"].value;\n }\n\n setTextureOffset(value) {\n this.setUniform(\"u_tex_offset\", value);\n }\n\n}\n\nfunction _lineColorTypeString(colorType) {\n switch (colorType) {\n case lineColorType.UNIFORM:\n return \"UNIFORM\";\n case lineColorType.TEXTURE:\n return \"TEXTURE\";\n case lineColorType.BUFFER:\n return \"BUFFER\";\n case lineColorType.OUTPUT:\n return \"OUTPUT\";\n }\n}\n","import {geometry, EPSILON} from \"_src/engine/constants\";\nimport {getBboxSize} from \"_src/engine/math\";\nimport intersectEvaluator from \"_src/engine/intersect_evaluator\";\n\nimport {vec3, vec4} from \"_src/libs/gl-matrix\";\n\nimport workspace from \"_src/workspace\";\n\nconst _vec3Tmp = vec3.create();\n\nexport default {\n\n perspectiveTransFromTargetAngles(horAngle, vertAngle, target, dist, outTrans) {\n\n outTrans[0] = target[0] - Math.cos(vertAngle) * dist * Math.sin(horAngle);\n outTrans[1] = target[1] + Math.cos(vertAngle) * dist * Math.cos(horAngle);\n outTrans[2] = target[2] + Math.sin(vertAngle) * dist;\n\n return outTrans;\n\n },\n\n orthoTransFromTargetAngles : (function() {\n\n const vec3Tmp = vec3.create();\n const vec3Tmp2 = vec3.create();\n\n return function(camera, horAngle, vertAngle, target, dist, outTrans) {\n\n this.perspectiveTransFromTargetAngles(horAngle, vertAngle, target, dist, outTrans);\n\n const view = vec3.set(vec3Tmp, 0, 0, -1);\n vec3.transformQuat(view, view, camera.quat);\n const sceneMinmax = workspace.getBBox((object) => {return object.loaded});\n\n const perspTrans = vec3.copy(vec3Tmp2, outTrans);\n\n recalculateOrthoTrans(outTrans, view, sceneMinmax, camera.near);\n\n const distance = this.calcDistanceToTargetPlane(perspTrans, view, target);\n\n const height = Math.tan(0.5 * camera.fov) * distance;\n camera.top = height;\n camera.bottom = -height;\n\n return outTrans;\n\n }\n\n })(),\n\n toReference(dst) {\n if (Math.abs(dst[0]) < EPSILON) dst[0] = 0;\n if (Math.abs(dst[1]) < EPSILON) dst[1] = 0;\n if (Math.abs(dst[2]) < EPSILON) dst[2] = 0;\n\n if (Math.abs(dst[0]) > 1.0) dst[0] = Math.sign(dst[0]) * 1.0;\n if (Math.abs(dst[1]) > 1.0) dst[1] = Math.sign(dst[1]) * 1.0;\n if (Math.abs(dst[2]) > 1.0) dst[2] = Math.sign(dst[2]) * 1.0;\n\n return dst;\n },\n\n viewFromAngles(dest, horAngle, vertAngle) {\n\n dest[0] = Math.cos(vertAngle) * Math.sin(horAngle);\n dest[1] = -Math.cos(vertAngle) * Math.cos(horAngle);\n dest[2] = -Math.sin(vertAngle);\n\n return dest;\n\n },\n\n anglesFromView(direction) {\n\n const correctedDirection = vec3.copy(_vec3Tmp, direction);\n this.toReference(correctedDirection);\n\n let horAngle = Math.atan2(correctedDirection[0], -correctedDirection[1]);\n let vertAngle = -Math.asin(Math.min(Math.max(correctedDirection[2], -1.0), 1.0));\n\n return [horAngle, vertAngle];\n\n },\n\n anglesFromViewOriented(view) {\n\n const dotVZ = vec3.dot(view, geometry.AXIS_Z);\n\n if (dotVZ == -1) {\n return [0, 0.5 * Math.PI];\n } else if (dotVZ == 1) {\n return [Math.PI, -0.5 * Math.PI];\n }\n\n let horAngle = Math.atan2(view[0], -view[1]);\n let vertAngle = -Math.asin(Math.min(Math.max(view[2], -1.0), 1.0));\n\n return [horAngle, vertAngle];\n\n },\n\n checkIsUpsideDown : (function() {\n\n const _vec3Tmp = vec3.create();\n\n return function(rotation, upVec) {\n\n const up = vec3.set(_vec3Tmp, 0, 1, 0);\n vec3.transformQuat(up, up, rotation);\n\n return vec3.dot(up, upVec) < 0;\n\n }\n\n })(),\n\n calculateBBoxOptimalDistance(minmax, object) {\n return 0.5 * getBboxSize(minmax) / Math.tan(0.5 * object.fov);\n },\n\n getVisibleFieldSize() {\n const sceneMinmax = workspace.getBBox((object) => {return object.loaded});\n return 5 * getBboxSize(sceneMinmax);\n },\n\n calcDistanceToTargetPlane : (function() {\n\n const point = vec3.create();\n const vec3Tmp = vec3.create();\n\n return function(camPos, view, target) {\n\n if (intersectEvaluator.linePlaneTest(view, target, camPos, view, point)) {\n const sign = Math.sign(vec3.dot(view, vec3.sub(vec3Tmp, target, camPos)));\n return sign * vec3.distance(point, camPos);\n }\n\n return 0;\n\n }\n\n })(),\n\n getViewTargetPlaneIntersection: (function() {\n\n const point = vec3.create();\n const view = vec3.create();\n\n return function(camera, target) {\n\n vec3.set(view, 0, 0, -1);\n vec3.transformQuat(view, view, camera.quat);\n\n if (intersectEvaluator.linePlaneTest(view, target, camera.trans, view, point)) {\n vec3.copy(target, point);\n }\n\n return target;\n\n }\n\n })(),\n\n}\n\nconst recalculateOrthoTrans = (function() {\n\n const vec3Tmp = vec3.create();\n const nearPlane = vec4.create();\n\n return function(trans, view, minmax, near) {\n\n vec3.copy(nearPlane, view);\n nearPlane[3] = -vec3.dot(trans, view);\n\n let distance = near;\n\n for (let i = 0; i < 8; ++i) {\n\n const x = minmax[ 3 * ((i & 0b100) >> 2)];\n const y = minmax[1 + 3 * ((i & 0b010) >> 1)];\n const z = minmax[2 + 3 * ((i & 0b001))];\n\n const point = vec3.set(vec3Tmp, x, y, z);\n const dist = vec3.dot(point, nearPlane) + nearPlane[3];\n\n if (dist < 0) {\n distance = Math.max(distance, -dist + near);\n }\n\n }\n\n vec3.scaleAndAdd(trans, trans, view, -distance);\n\n }\n\n})();","\nexport default class AbstractPacker {\n unpackData() {}\n packData() {}\n}\n","import output from \"_src/engine/output\";\nimport AbstractPacker from \"_src/engine/packers/abstract_packer\";\nimport containersCache from \"_src/engine/packers/containers_cache\";\n\nimport {uint32ToUint8Array, arrayDataToNumber} from \"_src/utils\";\n\n// NOTE: https://confluence.artec-group.com:4432/pages/viewpage.action?pageId=39419976\nconst DEFAULT_HEADER = [\n \"m\".charCodeAt(0), \"l\".charCodeAt(0), \"t\".charCodeAt(0), \"i\".charCodeAt(0),\n 2, 0,\n 0, 0,\n];\n\nconst SUPPORTED_TYPES = [\n \"zstd\", \"crt\", \"drc\", \"jpeg\", \"png\", \"mlti\",\n];\n\nconst COMPRESSION_FORMAT_SIZE = 4;\nconst STRUCTURE_VERSION_SIZE = 2;\nconst BUFFERS_COUNT_SIZE = 2;\nconst BUFFER_ID_SIZE = 4;\nconst BUFFER_FULL_SIZE_SIZE = 4;\nconst BUFFER_COMPRESSED_SIZE_SIZE = 4;\n\nexport default class Slicer extends AbstractPacker {\n packData(buffers) {\n let resultSlice = DEFAULT_HEADER.slice();\n\n const buffersCountOffset = COMPRESSION_FORMAT_SIZE + STRUCTURE_VERSION_SIZE;\n const buffersCount = buffers.length;\n if (buffersCount >= 256 * 256) {\n throw \"Too many chunks in slice\";\n }\n\n const headerSize = (COMPRESSION_FORMAT_SIZE + STRUCTURE_VERSION_SIZE + BUFFERS_COUNT_SIZE);\n const tableEntrySize = (BUFFER_ID_SIZE + BUFFER_COMPRESSED_SIZE_SIZE + BUFFER_FULL_SIZE_SIZE);\n const dataOffset = headerSize + tableEntrySize * buffersCount;\n\n resultSlice[dataOffset-1] = 0; //reserving table\n\n const buffersCountData = uint32ToUint8Array(buffersCount);\n resultSlice[buffersCountOffset] = buffersCountData[0];\n resultSlice[buffersCountOffset + 1] = buffersCountData[1];\n\n for (let i=0; i slice.byteLength) {\n throw \"Can't load invalid slice\";\n }\n\n const bufferData = slice.slice(byteOffset, byteOffset+bufferSize);\n\n buffersData.push(bufferData);\n byteOffset+=bufferSize;\n\n }\n\n if (byteOffset !== slice.byteLength) {\n output.warn(\"Undefined data in slice after layout\");\n }\n\n } else {\n\n buffersData.push(slice);\n\n }\n\n return buffersData;\n }\n\n}\n","import { unzip } from \"fflate\";\n\nexport default function unzipData(data, callback) {\n return unzip(data, callback);\n}","import AbstractPacker from \"_src/engine/packers/abstract_packer\";\nimport unzip from \"_unzip\";\nimport { zipSync } from \"fflate\";\n\nexport default class Zipper extends AbstractPacker {\n unpackData(data) {\n return new Promise((resolve) => {\n unzip(new Uint8Array(data), (err, directory) => {\n\n const entries = [];\n for (const entryName in directory) {\n entries.push({name : entryName, payload : directory[entryName]});\n }\n\n const sortedEntries = entries.sort((a, b) => {\n const matchA = a.name.match(/[0-9]+/);\n const matchB = b.name.match(/[0-9]+/);\n\n if (matchA && matchB) {\n return parseFloat(matchA[0]) - parseFloat(matchB[0]);\n } else {\n return a.name > b.name ? 1 : -1;\n }\n });\n\n const buffersData = [];\n for (const entry of sortedEntries) {\n\n const bufferData = entry.payload;\n buffersData.push(bufferData.buffer);\n }\n\n resolve(buffersData);\n });\n });\n }\n\n packData(buffers) {\n const zipParams = {level: 0};\n const centralDirectory = {};\n for (let i=0; i {\n const packer = getPackerBySignature(arrayBuffer);\n return packer.unpackData(arrayBuffer);\n });\n data.set(filename, containerPromise);\n }\n\n const buffersData = await containerPromise;\n\n if (id >= buffersData.length) {\n output.error(output.DEVELOPERS_ERROR, \"Can't load object with id \" + id + \" . Container \" + filename + \" has only \" + buffersData.length + \" objects\");\n return;\n }\n return buffersData[id];\n },\n\n packBuffers(buffers, packerNum = null) {\n let packer = null;\n\n switch (packerNum) {\n case this.ZIP:\n packer = zipPacker;\n break;\n case this.SLICE:\n packer = slicePacker;\n break;\n default:\n packer = currentPacker;\n break;\n }\n\n return packer.packData(buffers);\n },\n\n releaseContainer(filename) {\n data.delete(filename);\n },\n\n getBufferType(data) {\n return arrayToString(new Uint8Array(data.slice(0, 4)));\n },\n\n cleanup() {\n data.clear();\n }\n\n}\n\nfunction getPackerBySignature(packedContainer) {\n if (isDataZipped(packedContainer)) {\n currentPacker = zipPacker;\n return zipPacker;\n } else {\n currentPacker = slicePacker;\n return slicePacker;\n }\n}\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar UnsubscriptionErrorImpl = /*@__PURE__*/ (function () {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport var UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map\n","/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */\nimport { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nvar Subscription = /*@__PURE__*/ (function () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function () {\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parentOrParents = _a._parentOrParents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n var _parentOrParents = subscription._parentOrParents;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n };\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexport { Subscription };\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSequenceProd = exports.isBranchingProd = exports.isOptionalProd = exports.getProductionDslName = exports.GAstVisitor = exports.serializeProduction = exports.serializeGrammar = exports.Alternative = exports.Alternation = exports.RepetitionWithSeparator = exports.RepetitionMandatoryWithSeparator = exports.RepetitionMandatory = exports.Repetition = exports.Option = exports.NonTerminal = exports.Terminal = exports.Rule = void 0;\nvar model_1 = require(\"./model\");\nObject.defineProperty(exports, \"Rule\", { enumerable: true, get: function () { return model_1.Rule; } });\nObject.defineProperty(exports, \"Terminal\", { enumerable: true, get: function () { return model_1.Terminal; } });\nObject.defineProperty(exports, \"NonTerminal\", { enumerable: true, get: function () { return model_1.NonTerminal; } });\nObject.defineProperty(exports, \"Option\", { enumerable: true, get: function () { return model_1.Option; } });\nObject.defineProperty(exports, \"Repetition\", { enumerable: true, get: function () { return model_1.Repetition; } });\nObject.defineProperty(exports, \"RepetitionMandatory\", { enumerable: true, get: function () { return model_1.RepetitionMandatory; } });\nObject.defineProperty(exports, \"RepetitionMandatoryWithSeparator\", { enumerable: true, get: function () { return model_1.RepetitionMandatoryWithSeparator; } });\nObject.defineProperty(exports, \"RepetitionWithSeparator\", { enumerable: true, get: function () { return model_1.RepetitionWithSeparator; } });\nObject.defineProperty(exports, \"Alternation\", { enumerable: true, get: function () { return model_1.Alternation; } });\nObject.defineProperty(exports, \"Alternative\", { enumerable: true, get: function () { return model_1.Alternative; } });\nObject.defineProperty(exports, \"serializeGrammar\", { enumerable: true, get: function () { return model_1.serializeGrammar; } });\nObject.defineProperty(exports, \"serializeProduction\", { enumerable: true, get: function () { return model_1.serializeProduction; } });\nvar visitor_1 = require(\"./visitor\");\nObject.defineProperty(exports, \"GAstVisitor\", { enumerable: true, get: function () { return visitor_1.GAstVisitor; } });\nvar helpers_1 = require(\"./helpers\");\nObject.defineProperty(exports, \"getProductionDslName\", { enumerable: true, get: function () { return helpers_1.getProductionDslName; } });\nObject.defineProperty(exports, \"isOptionalProd\", { enumerable: true, get: function () { return helpers_1.isOptionalProd; } });\nObject.defineProperty(exports, \"isBranchingProd\", { enumerable: true, get: function () { return helpers_1.isBranchingProd; } });\nObject.defineProperty(exports, \"isSequenceProd\", { enumerable: true, get: function () { return helpers_1.isSequenceProd; } });\n//# sourceMappingURL=api.js.map","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","import events from \"_src/engine/events\";\n\nimport {screenUtils} from \"_src/client/utils\";\n\nlet _canvas = null;\nlet clientHeight = -1;\n\nconst _pointTmp = new Array(2);\n\nconst _coords = new Array(2);\nconst _clientCoords = new Array(2);\n\nexport default {\n\n init(canvas) {\n _canvas = canvas;\n canvas.requestPointerLock = canvas.requestPointerLock ||\n canvas.mozRequestPointerLock ||\n canvas.webkitRequestPointerLock;\n document.exitPointerLock = document.exitPointerLock ||\n document.mozExitPointerLock ||\n document.webkitExitPointerLock;\n\n clientHeight = canvas.offsetHeight;\n\n initEvents();\n },\n\n getCoords() {\n return _coords;\n },\n\n getClientCoords() {\n return _clientCoords;\n },\n\n clientToPhysical(clientX, clientY) {\n const screenPoint = clientToPhysical(clientX, clientY, _pointTmp)\n const screenX = screenPoint[0];\n const screenY = screenPoint[1];\n\n return { screenX, screenY };\n },\n\n mousemoveHandler(clientX, clientY, button, buttons) {\n const physicalPoint = clientToPhysical(clientX, clientY, _pointTmp);\n\n _clientCoords[0] = clientX;\n _clientCoords[1] = clientY;\n\n _coords[0] = physicalPoint[0];\n _coords[1] = physicalPoint[1];\n\n events.emit(\"client_mousemove\", {screenX : _coords[0], screenY : _coords[1], button, buttons});\n },\n\n mouseupHandler(clientX, clientY, button, buttons) {\n const physicalPoint = clientToPhysical(clientX, clientY, _pointTmp);\n\n _clientCoords[0] = clientX;\n _clientCoords[1] = clientY;\n\n _coords[0] = physicalPoint[0];\n _coords[1] = physicalPoint[1];\n\n events.emit(\"client_mouseup\", {screenX : _coords[0], screenY : _coords[1], button, buttons});\n },\n\n mousedownHandler(clientX, clientY, button, buttons) {\n const physicalPoint = clientToPhysical(clientX, clientY, _pointTmp);\n\n _clientCoords[0] = clientX;\n _clientCoords[1] = clientY;\n\n _coords[0] = physicalPoint[0];\n _coords[1] = physicalPoint[1];\n\n events.emit(\"client_mousedown\", {screenX : _coords[0], screenY : _coords[1], button, buttons});\n },\n\n cleanup() {\n _canvas = null;\n cleanupEvents();\n }\n}\n\nfunction initEvents() {\n events.on(\"resize\", resizeHandler);\n events.on(\"lock_cursor\", cursorLockHandler);\n events.on(\"unlock_cursor\", cursorUnlockHandler);\n}\n\nfunction cleanupEvents() {\n events.off(\"resize\", resizeHandler);\n events.off(\"lock_cursor\", cursorLockHandler);\n events.off(\"unlock_cursor\", cursorUnlockHandler);\n}\n\nfunction resizeHandler() {\n clientHeight = _canvas.offsetHeight;\n}\n\nfunction cursorLockHandler() {\n _canvas.requestPointerLock();\n}\n\nfunction cursorUnlockHandler() {\n document.exitPointerLock();\n}\n\nconst clientToPhysical = (function() {\n\n const virtualPoint = [-1, -1];\n\n return function(clientX, clientY, dest) {\n virtualPoint[0] = clientX;\n virtualPoint[1] = clientHeight - clientY;\n\n return screenUtils.virtualPointToPhysical(dest, virtualPoint);\n }\n\n})();\n\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\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, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _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}","import GL from \"_src/engine/gl\";\nimport extensions from \"_src/engine/extensions\";\nimport { stencilValue, drawQueryState } from \"_src/engine/constants\";\nimport config from \"_src/config\";\n\nlet _gl = null;\nlet _instanceExt = null;\n\nlet _runningTimeQuery = null;\nlet _awaitingTimeQuery = null;\n\nlet attachGeometry = null;\nlet detachGeometry = null;\nlet attachInstancedGeometry = null;\nlet detachInstancedGeometry = null;\n\nexport default {\n\n init() {\n _gl = GL.getContext();\n _instanceExt = extensions.get(\"ANGLE_instanced_arrays\");\n initGeometrySetters();\n prepareDrawing();\n },\n\n cleanup() {\n _gl = null;\n _instanceExt = null;\n attachGeometry = null;\n detachGeometry = null;\n attachInstancedGeometry = null;\n detachInstancedGeometry = null;\n },\n\n startTimeQuery() {\n if (_awaitingTimeQuery) {\n return;\n }\n\n const ext = extensions.get(\"EXT_disjoint_timer_query_webgl2\");\n _runningTimeQuery = _gl.createQuery();\n _gl.beginQuery(ext.TIME_ELAPSED_EXT, _runningTimeQuery);\n },\n\n stopTimeQuery() {\n if (!_runningTimeQuery) {\n return;\n }\n const ext = extensions.get(\"EXT_disjoint_timer_query_webgl2\");\n _gl.endQuery(ext.TIME_ELAPSED_EXT);\n _awaitingTimeQuery = _runningTimeQuery;\n _runningTimeQuery = null;\n },\n\n getTimeQueryResult() {\n if (!_awaitingTimeQuery) {\n return;\n }\n\n let elapsedNanos = null;\n const available = _gl.getQueryParameter(_awaitingTimeQuery, _gl.QUERY_RESULT_AVAILABLE);\n if (available) {\n elapsedNanos = _gl.getQueryParameter(_awaitingTimeQuery, _gl.QUERY_RESULT);\n _awaitingTimeQuery = null;\n }\n\n return elapsedNanos;\n },\n\n renderScene(scene, skipChunkTests = false) {\n const camera = scene.camera;\n\n if (!camera) {\n return;\n }\n\n scene.updateTransforms();\n\n const framebuffer = scene.getFramebuffer();\n\n framebuffer.bind(_gl);\n\n let clearMask = 0;\n\n if (scene.clearedColor) {\n\n const cc = scene.clearColor;\n _gl.clearColor(cc[0], cc[1], cc[2], cc[3]);\n\n clearMask |= _gl.COLOR_BUFFER_BIT;\n\n _gl.colorMask(true, true, true, true);\n }\n\n if (scene.clearedDepth) {\n clearMask |= _gl.DEPTH_BUFFER_BIT;\n }\n\n if (scene.clearedStencil) {\n clearMask |= _gl.STENCIL_BUFFER_BIT;\n }\n\n if (clearMask) {\n _gl.clear(clearMask);\n }\n\n _gl.viewport(camera.viewport[0], camera.viewport[1],\n camera.viewport[2], camera.viewport[3]);\n\n if (scene.batcher.needsSort) {\n scene.batcher.sortObjects(camera.trans);\n }\n\n scene.batcher.generatePasses();\n\n _gl.blendEquationSeparate(_gl.FUNC_ADD, _gl.FUNC_ADD);\n\n // OPAQUE\n const opaqueQueue = scene.batcher.getOpaqueQueue();\n\n let shaderID = 0;\n let sharedShader = null;\n while (opaqueQueue.length) {\n\n const object = opaqueQueue.pop();\n const shader = object.shader;\n\n if (shaderID !== shader.id) {\n setupShader(shader, scene);\n shaderID = shader.id;\n sharedShader = shader;\n }\n\n const camera = scene.camera;\n\n drawMesh(object, sharedShader, camera, skipChunkTests);\n\n shader.renderCallback();\n\n }\n\n // BLEND\n if (scene.batcher.sortBlend) {\n scene.batcher.sortBlendQueue(camera.trans);\n }\n\n const blendQueue = scene.batcher.getBlendQueue();\n const blendingForbidden = scene.isDepthPrepass || scene.isPostBlending;\n if (!blendingForbidden) {\n _gl.enable(_gl.BLEND);\n }\n _gl.depthMask(blendingForbidden);\n\n shaderID = 0;\n sharedShader = null;\n while (blendQueue.length) {\n\n const object = blendQueue.pop();\n const shader = object.shader;\n\n if (shaderID !== shader.id) {\n setupShader(shader, scene);\n shaderID = shader.id;\n sharedShader = shader;\n }\n\n const camera = scene.camera;\n\n drawMesh(object, sharedShader, camera, skipChunkTests);\n\n shader.renderCallback();\n\n }\n\n _gl.disable(_gl.BLEND);\n _gl.depthMask(true);\n\n const resolveFramebuffer = scene.getResolvedBuffer();\n\n if (resolveFramebuffer) {\n drawResolve(framebuffer, resolveFramebuffer);\n }\n\n if (scene.needsReadPixels) {\n scene.readPixels();\n }\n\n }\n\n}\n\nfunction setupShader(shader, scene) {\n\n shader.updateSceneDirectives(scene);\n\n if (shader.needsUpdate) {\n shader.compile();\n }\n\n // TODO: implement better solution\n if (shader.transparent) {\n _gl.blendFunc(shader.sourceBlendFactor, shader.destBlendFactor);\n _gl.blendEquationSeparate(shader.blendEquationRgb, shader.blendEquationAlpha);\n }\n\n if (shader.drawColor) {\n _gl.colorMask(true, true, true, true);\n } else {\n _gl.colorMask(false, false, false, false);\n }\n\n if (shader.stencilTest) {\n _gl.enable(_gl.STENCIL_TEST);\n _gl.stencilFunc(shader.stencilFunc, shader.stencilReferenceVal, shader.stencilTestMask);\n _gl.stencilOpSeparate(shader.frontFace, shader.stencilFrontFail, shader.stencilFrontZFail, shader.stencilFrontZPass);\n _gl.stencilOpSeparate(shader.backFace, shader.stencilBackFail, shader.stencilBackZFail, shader.stencilBackZPass);\n\n _gl.stencilMask(shader.stencilUpdateMask);\n } else {\n _gl.disable(_gl.STENCIL_TEST);\n }\n\n if (shader.depthTest) {\n _gl.enable(_gl.DEPTH_TEST);\n } else {\n _gl.disable(_gl.DEPTH_TEST);\n }\n\n if (shader.scissorTest) {\n _gl.enable(_gl.SCISSOR_TEST);\n _gl.scissor(...shader.scissor);\n } else {\n _gl.disable(_gl.SCISSOR_TEST);\n }\n\n if (shader.backFaceCulling) {\n _gl.enable(_gl.CULL_FACE);\n } else {\n _gl.disable(_gl.CULL_FACE);\n }\n\n if (shader.polygonOffsetEnabled) {\n _gl.enable(_gl.POLYGON_OFFSET_FILL);\n _gl.polygonOffset(...shader.polygonOffset);\n } else {\n _gl.disable(_gl.POLYGON_OFFSET_FILL);\n }\n\n _gl.useProgram(shader.program);\n\n _gl.frontFace(shader.cullingFrontFace);\n\n shader.updateSceneUniformValues(scene);\n setupUniforms(shader.sceneUniformsSetters);\n setupUniforms(shader.shaderUniformsSetters);\n\n}\n\nfunction drawMesh(obj, shader, camera, skipChunkTests) {\n\n const chunks = obj.chunks;\n\n if (chunks.length == 0) {\n return;\n }\n\n shader.updateObjectUniformValues(obj);\n setupUniforms(shader.objectUniformsSetters);\n\n obj.setupTextures();\n shader.setupTextures();\n\n for (let i = 0; i < chunks.length; ++i) {\n\n const chunk = chunks[i];\n\n if (!chunk.hasDrawElements() && chunk.isEmpty()) {\n continue;\n }\n\n if (!skipChunkTests && !obj.getChunkQueryResult(chunk)) {\n continue;\n }\n\n const isInFrustum = obj.chunkFrustumTest(chunk, camera.frustum);\n\n if (!skipChunkTests && !isInFrustum) {\n continue;\n }\n\n if (!chunk.updateGlBuffers(shader)) {\n continue;\n }\n\n let importedChunksUpdated = true;\n for (const importedModel of obj.importedModelsForInstancing) {\n for (const importedChunk of importedModel.chunks) {\n //Note: don't try to update others if one failed\n importedChunksUpdated = importedChunksUpdated && importedChunk.updateGlBuffers(shader);\n }\n }\n if (!importedChunksUpdated) {\n continue;\n }\n\n obj.updateAttributes(shader, chunk);\n\n if (config.drawQueries) {\n switch (obj.getChunkQueryState(chunk)) {\n case drawQueryState.SHOULD_RUN:\n if (!skipChunkTests) {\n _gl.beginQuery(_gl.ANY_SAMPLES_PASSED, obj.getChunkDrawQuery(chunk));\n }\n break;\n case drawQueryState.IN_PROGRESS:\n if (_gl.getQueryParameter(obj.getChunkDrawQuery(chunk), _gl.QUERY_RESULT_AVAILABLE)) {\n const result = _gl.getQueryParameter(obj.getChunkDrawQuery(chunk), _gl.QUERY_RESULT);\n const testPassed = result == 1;\n obj.setChunkQueryResult(chunk, testPassed);\n obj.setChunkQueryState(chunk, drawQueryState.FINISHED);\n }\n break;\n }\n }\n\n shader.updateChunkUniformValues(chunk);\n setupUniforms(shader.chunkUniformsSetters);\n\n const instancedAttributes = obj.getInstancedAttributes(chunk);\n if (instancedAttributes.size > 0 && _instanceExt) {\n\n for (const [modelOwner, attributesMapsForModel] of instancedAttributes.entries()) {\n shader.updateObjectUniformValues(modelOwner);\n setupUniforms(shader.objectUniformsSetters);\n\n for (const attributesObject of attributesMapsForModel) {\n const instanceCount = attributesObject.instancesCount;\n\n attachInstancedGeometry(obj, chunk, attributesObject, shader.instanceDivisor);\n chunk.drawInstanced(_instanceExt, instanceCount);\n detachInstancedGeometry(obj, chunk, attributesObject);\n }\n }\n\n } else {\n attachGeometry(obj, chunk);\n chunk.draw(_gl);\n detachGeometry(obj, chunk);\n }\n\n if (config.drawQueries && !skipChunkTests && obj.getChunkQueryState(chunk) === drawQueryState.SHOULD_RUN) {\n _gl.endQuery(_gl.ANY_SAMPLES_PASSED);\n obj.setChunkQueryState(chunk, drawQueryState.IN_PROGRESS);\n }\n\n }\n\n}\n\nfunction drawResolve(readFrameBuffer, drawFrameBuffer) {\n\n const [width, height] = readFrameBuffer.size();\n\n _gl.bindFramebuffer(_gl.READ_FRAMEBUFFER, readFrameBuffer.fbo);\n _gl.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, drawFrameBuffer.fbo);\n\n let blit_mask = 0;\n\n blit_mask |= _gl.COLOR_BUFFER_BIT;\n blit_mask |= _gl.DEPTH_BUFFER_BIT;\n\n _gl.blitFramebuffer(\n 0, 0, width, height,\n 0, 0, width, height,\n blit_mask, _gl.NEAREST\n );\n\n}\n\nfunction prepareDrawing() {\n\n _gl.clearColor(0.839, 0.839, 0.839, 1.0);\n _gl.clearDepth(1.0);\n _gl.clearStencil(stencilValue.CLEAR);\n _gl.enable(_gl.DEPTH_TEST);\n _gl.depthFunc(_gl.LEQUAL);\n\n _gl.colorMask(true, true, true, true);\n _gl.depthMask(true);\n\n _gl.enable(_gl.CULL_FACE);\n _gl.disable(_gl.POLYGON_OFFSET_FILL);\n _gl.disable(_gl.BLEND);\n _gl.frontFace(_gl.CCW);\n _gl.cullFace(_gl.BACK);\n\n _gl.clear(_gl.DEPTH_BUFFER_BIT | _gl.COLOR_BUFFER_BIT | _gl.STENCIL_BUFFER_BIT);\n\n}\n\nfunction setupUniforms(uniSetters) {\n for (var i = 0; i < uniSetters.length; i++) {\n uniSetters[i].commit();\n }\n}\n\nfunction initGeometrySetters() {\n\n attachGeometry = (function() {\n\n const VAOExtension = extensions.get(\"OES_vertex_array_object\");\n\n if (VAOExtension) {\n return function(model, chunk) {\n const vao = model.getVao(chunk);\n VAOExtension.bindVertexArray(vao);\n }\n } else {\n return function(model, chunk) {\n const attributesMap = model.getAttributesMap(chunk);\n chunk.attachBuffers(_gl, attributesMap);\n }\n }\n\n })();\n\n detachGeometry = (function() {\n\n const VAOExtension = extensions.get(\"OES_vertex_array_object\");\n\n if (VAOExtension) {\n return function() {\n VAOExtension.bindVertexArray(null);\n }\n } else {\n return function(obj, chunk) {\n\n const chunkAttributesMap = obj.getAttributesMap(chunk);\n chunk.detachBuffers(_gl, chunkAttributesMap);\n\n }\n }\n\n })();\n\n attachInstancedGeometry = (function() {\n\n const VAOExtension = extensions.get(\"OES_vertex_array_object\");\n\n if (VAOExtension) {\n return function(model, chunk, attributesObject) {\n const vao = attributesObject.vao;\n VAOExtension.bindVertexArray(vao);\n }\n } else {\n return function(model, chunk, attributesObject, instanceDivisor) {\n const attributesMap = model.getAttributesMap(chunk);\n chunk.attachBuffers(_gl, attributesMap);\n\n const importedAttributesMap = attributesObject.attributesMap;\n chunk.attachInstancedBuffers(_gl, _instanceExt, importedAttributesMap, instanceDivisor);\n }\n }\n\n })();\n\n detachInstancedGeometry = (function() {\n\n const VAOExtension = extensions.get(\"OES_vertex_array_object\");\n\n if (VAOExtension) {\n return function() {\n VAOExtension.bindVertexArray(null);\n }\n } else {\n return function(model, chunk, attributesObject) {\n const chunkAttributesMap = model.getAttributesMap(chunk);\n chunk.detachBuffers(_gl, chunkAttributesMap);\n\n const instancedAttributesMap = attributesObject.attributesMap;\n chunk.detachInstancedBuffers(_gl, _instanceExt, instancedAttributesMap);\n\n }\n }\n\n })();\n\n}\n","export const isLeftButtonPressed = e =>\n // eslint-disable-next-line no-bitwise\n Boolean(e.buttons & 0b001);\n\nexport const isRightButtonPressed = e =>\n // eslint-disable-next-line no-bitwise\n Boolean(e.buttons & 0b010);\n\nexport const isMiddleButtonPressed = e =>\n // eslint-disable-next-line no-bitwise\n Boolean(e.buttons & 0b100);\n\nexport const isMouseZooming = (e): boolean => {\n if (e.wheelDeltaY) {\n if (Math.abs(e.wheelDeltaY - e.deltaY * -3) <= 1) {\n return false;\n }\n } else if (e.deltaMode === 0) {\n return false;\n }\n\n return true;\n};\n\nexport const isCtrlPressed = (e): boolean => e.ctrlKey || e.metaKey;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import renderer from \"_src/engine/renderer\";\nimport { colorUtils } from \"_src/utils\";\nimport { getPngImageFromPixels } from \"_src/client/utils\";\nimport renderGraph from \"_src/render_graph/render_graph\";\n\nconst DEBUG = false;\n\nexport default function (graph, width, height) {\n\n const scene = graph.getWorkspaceScene();\n const AAScene = graph.getPass(renderGraph.ANTIALIASING).getMainScene();\n\n const oldWidth = scene.camera.viewport[2];\n const oldHeight = scene.camera.viewport[3];\n\n setRenderingSize(scene, AAScene, width, height);\n\n renderer.renderScene(scene, true);\n\n const promise = AAScene.getBufferPixels().then((pixels) => {\n\n colorUtils.flipImageBufferVertically(pixels, width, height);\n\n if (DEBUG) {\n // this will download an image\n getPngImageFromPixels(pixels, width, height);\n }\n\n return pixels;\n });\n\n renderer.renderScene(AAScene, true);\n\n setRenderingSize(scene, AAScene, oldWidth, oldHeight);\n\n return promise;\n\n}\n\nfunction setRenderingSize(scene, AAScene, width, height) {\n const fb = scene.getFramebuffer();\n fb.resize(width, height)\n const AAFb = AAScene.getFramebuffer();\n AAFb.resize(width, height)\n scene.camera.setViewport(width, height);\n AAScene.camera.setViewport(width, height);\n}","import GL from \"_src/engine/gl\";\nimport events from \"_src/engine/events\";\nimport output from \"_src/engine/output\";\nimport renderer from \"_src/engine/renderer\";\nimport workerPool from \"_src/engine/worker_pool\";\nimport workerManager from \"_src/engine/worker_manager.js\";\n\nimport workspace from \"_src/workspace\";\nimport appState from \"_src/app_state\";\nimport config from \"_src/config\";\n\nimport windowManager from \"_src/client/window_manager\";\nimport {screenUtils} from \"_src/client/utils\";\nimport viewcube from \"_src/client/viewcube\";\nimport inputCollector from \"_src/client/input\";\nimport compat from \"_src/engine/compat\";\nimport commonAPI from \"_src/common_api\";\nimport {msgType, objectType} from \"_src/constants\";\nimport {quat} from \"_src/libs/gl-matrix\";\nimport renderGraph from \"_src/render_graph/render_graph\";\nimport {drawMode} from \"_src/engine/constants\";\nimport takeScreenshot from \"_src/client/screenshot\";\nimport projectTree from \"_src/reformer/project_tree\";\nimport {cleanupMaterialsResources} from \"_src/client/materials/material\";\n\nlet _initReject = null;\nlet _initialized = false;\nlet _animationFrameRequestID = -1;\nlet _lastTime = 0;\n\nconst commonFacadeAPI = {\n /** Objects rendering mode \"Solid\"\n * @memberof WS\n * @member RM_SOLID\n */\n RM_SOLID: appState.RM_SOLID,\n\n /** Objects rendering mode \"Wireframe\"\n * @memberof WS\n * @member RM_WIREFRAME\n */\n RM_WIREFRAME: appState.RM_WIREFRAME,\n\n /** Objects rendering mode \"Points\"\n * @memberof WS\n * @member RM_POINTS\n */\n RM_POINTS: appState.RM_POINTS,\n\n /** Objects color mode \"Texture\"\n * @memberof WS\n * @member CM_TEXTURE\n */\n CM_TEXTURE: appState.CM_TEXTURE,\n\n /** Objects color mode \"Scan color\"\n * @memberof WS\n * @member CM_SCAN_COLOR\n */\n CM_SCAN_COLOR: appState.CM_SCAN_COLOR,\n\n /**\n * Set viewcube scene size and position\n * @memberof WS\n * @param {Object} params Method parameters\n * @param {Number} params.rightOffset distance in pixels from right screen side to left viewcube scene side\n * @param {Number} params.topOffset distance in pixels from top screen side to bottom viewcube scene side\n * @param {Number} params.width viewcube scene width in pixels\n * @param {Number} params.height viewcube scene height in pixels\n * @method viewcubeSetAppearance\n */\n viewcubeSetAppearance({rightOffset, topOffset, width, height}) {\n const viewport = [rightOffset, topOffset, width, height];\n const phyViewport = screenUtils.viewportToPhisycalSize(viewport, []);\n const oldPhyViewport = viewcube.getScreenAppearance();\n\n if (quat.equals(phyViewport, oldPhyViewport)) {\n return;\n }\n\n viewcube.setScreenAppearance(phyViewport[0], phyViewport[1], phyViewport[2], phyViewport[3]);\n events.emit(\"frame_requested\");\n },\n\n /**\n * Subscribe to Web Studio event\n * @memberof WS\n * @param {Object} params Method parameters\n * @param {string} params.event Event to subscribe to\n * @param {Function} params.callback Callback to be called on this event. Parameter is of {@link Application.State} type.\n * @method on\n */\n on({event, callback}) {\n events.on(event, callback);\n },\n\n /**\n * Unsubscribe from Web Studio event\n * @memberof WS\n * @param {Object} params Method parameters\n * @param {string} params.event Event to unsubscribe from\n * @param {Function} params.callback Callback which is called on this event. Parameter is of {@link Application.State} type.\n * @method off\n */\n off({event, callback}) {\n events.off(event, callback);\n },\n\n /**\n * Check if WS is available\n * @memberof WS\n * @method isAvailable\n * @returns {Boolean} is WS available\n */\n isAvailable() {\n return _initialized;\n },\n\n /**\n * Set the background color\n * @memberof WS\n * @param {Object} params Method parameters\n * @param {{ r, g, b }} params.color Object color. Should be object with values of red, green and blue. Each component should be in range [0..1]\n * @method setBackgroundColor\n */\n setBackgroundColor({color}) {\n config.backgroundColor.r = color.r;\n config.backgroundColor.g = color.g;\n config.backgroundColor.b = color.b;\n\n windowManager.applyToAllWindows((window) => {\n window.setBackgroundColor(color.r, color.g, color.b, 0);\n window.renderGraph.requestFrame();\n });\n },\n\n /**\n * Take a screenshot. If no parameters provided, canvas resolution is used\n * @memberof WS\n * @param {Object} params Method parameters\n * @param {Array(2)} [params.size] Resolution [width, height] of the rendered image. It has priority over rFactor\n * @param {Number} [params.rFactor] Resolution factor of the image calculated from the original canvas size\n * @returns {Promise} Promise resolved when the pixels are read. Returns pixels' buffer\n * @method takeScreenshot\n */\n async takeScreenshot(params = {}) {\n const camera = workspace.getScene().camera;\n let width = camera.viewport[2];\n let height = camera.viewport[3];\n\n if (params.size !== undefined) {\n width = params.size[0];\n height = params.size[1];\n } else if (params.rFactor !== undefined) {\n width *= params.rFactor;\n height *= params.rFactor;\n }\n\n width = Math.round(width);\n height = Math.round(height);\n\n const maxFbSize = GL.getMaxRenderBufferSize();\n\n if (width > maxFbSize || height > maxFbSize) {\n width = Math.min(width, maxFbSize);\n height = Math.min(height, maxFbSize);\n output.warn(`Reached hardware limits. Reducing screenshot size to ${width} x ${height}`);\n }\n\n const mainRenderGraph = windowManager.getWindow(windowManager.MAIN).renderGraph;\n const pixels = await takeScreenshot(mainRenderGraph, width, height);\n mainRenderGraph.requestFrame();\n\n return pixels;\n },\n\n /**\n * This is debug method to emulate WebGL context losing\n * @memberof WS\n * @method loseWebGLContext\n */\n loseWebGLContext() {\n GL.loseContext();\n },\n}\n\nconst commonFacadeFunctions = {\n init(canvas) {\n return new Promise((resolve, reject) => {\n\n _initReject = reject;\n\n const promises = [];\n\n output.setLogType(output.BROWSER_LOG);\n\n appState.init();\n\n config.useWorkers = workerManager.checkWorkersSupport();\n\n compat.collectSystemData();\n\n commonFacadeFunctions.resize(canvas);\n\n const { width, height } = screenUtils.getCanvasPhisycalSize(canvas);\n windowManager.init();\n windowManager.createWindow([0, 0, width, height]);\n const mainWindow = windowManager.getWindow(windowManager.MAIN);\n const mainRenderGraph = mainWindow.renderGraph;\n\n const workspaceScene = mainRenderGraph.getWorkspaceScene();\n const camera = workspaceScene.camera;\n\n initCommonEvents(canvas);\n\n workspace.setScene(workspaceScene);\n\n promises.push(viewcube.init());\n\n workerPool.init();\n renderer.init();\n\n viewcube.update(camera);\n\n Promise.all(promises).then(() => {\n _initialized = true;\n _initReject = null;\n resolve();\n }).catch((error) => {\n output.error(output.DEVELOPERS_ERROR, \"Couldn't initialize application. \" + error);\n });\n\n });\n\n },\n\n startRenderingCycle(canvas, derivedFrameFunction, derivedResizeFunction) {\n derivedResizeFunction(canvas);\n\n if (_animationFrameRequestID === -1) {\n\n _animationFrameRequestID = window.requestAnimationFrame(derivedFrameFunction);\n\n }\n },\n\n async loadProject(params) {\n\n const workspaceScene = workspace.getScene();\n if (!workspaceScene) {\n output.error(output.API_ERROR, \"Couldn't load the project. Call WS.init() first!\");\n return;\n }\n\n await commonAPI.closeProject();\n\n events.emit(\"user_action\", {type: msgType.LOAD_PROJECT, payload: params});\n\n let json;\n try {\n json = await workspace.openProject(params.path);\n if (!json) {\n return null;\n }\n workspace.prepareProjectLoading(json);\n\n } catch(error) {\n\n output.error(output.DEVELOPERS_ERROR, \"Can't load project. \" + error);\n return null;\n\n }\n\n return json;\n },\n\n destroy(canvas) {\n\n terminateInitialization();\n\n if (!workspace.getScene()) {\n output.error(output.API_ERROR, \"Couldn't destroy the application. Call WS.init() first!\");\n return;\n }\n\n window.cancelAnimationFrame(_animationFrameRequestID);\n _animationFrameRequestID = -1;\n\n commonAPI.closeProject();\n commonAPI.cleanup();\n\n windowManager.cleanup();\n events.cleanup(canvas);\n inputCollector.cleanup(canvas);\n viewcube.cleanup();\n\n appState.cleanup();\n cleanupMaterialsResources();\n\n GL.cleanup();\n\n _initialized = false;\n\n },\n\n frame(time) {\n\n if(_animationFrameRequestID === -1) {\n return null;\n }\n\n const t = time/1000;\n\n const dt = t - _lastTime;\n _lastTime = t;\n\n viewcube.updateAnimation(dt);\n\n windowManager.update(dt);\n\n projectTree.checkForUpdates();\n\n return {t, dt};\n },\n\n resize(canvas) {\n const { width, height } = screenUtils.getCanvasPhisycalSize(canvas);\n\n canvas.width = width;\n canvas.height = height;\n\n windowManager.resizeWindows(width, height);\n },\n\n synchronizeApplicationState() {\n const renderMode = appState.getStateValue(\"renderMode\");\n const colorMode = appState.getStateValue(\"colorMode\");\n\n {\n const wireframeEnabled = renderMode === appState.RM_WIREFRAME && colorMode != appState.CM_XRAY;\n const mainRenderGraph = windowManager.getWindow(windowManager.MAIN).renderGraph;\n mainRenderGraph.setEnabled(renderGraph.WIREFRAME, wireframeEnabled);\n }\n\n windowManager.applyToAllWindows((window) => {\n window.renderGraph.requestFrame();\n });\n },\n\n synchronizeObjectsState() {\n const renderMode = appState.getStateValue(\"renderMode\");\n const colorMode = appState.getStateValue(\"colorMode\");\n\n for (const object of workspace.getObjects()) {\n const shader = object.model.shader;\n\n {\n const wireframeEnabled = renderMode === appState.RM_WIREFRAME && colorMode != appState.CM_XRAY;\n const transparent = false;\n workspace.prepareWireframeGeometry(object, wireframeEnabled);\n shader.setWireframeEnabled(wireframeEnabled, transparent);\n }\n\n {\n object.updateTextureUsage();\n }\n }\n },\n\n synchronizeShaderState(object) {\n const renderMode = appState.getStateValue(\"renderMode\");\n\n {\n const forcePointsRenderMode = object.type === objectType.SURFELS;\n const pointsRenderMode = forcePointsRenderMode || renderMode === appState.RM_POINTS;\n const renderingMode = pointsRenderMode ? drawMode.POINTS : drawMode.TRIANGLES;\n\n for (const frame of object.frames) {\n frame.model.setDrawMode(renderingMode);\n }\n object.model.shader.setDrawMode(renderingMode);\n }\n },\n};\n\nexport {commonFacadeAPI, commonFacadeFunctions};\n\nfunction terminateInitialization() {\n if (_initReject) {\n _initReject(\"Initialization has been terminated.\");\n }\n}\n\nfunction initCommonEvents(canvas) {\n events.initBrowserEvents(canvas);\n inputCollector.init(canvas);\n\n events.on(\"objects_updated\", (objects) => {\n for (const object of objects) {\n object.model.fixFacesInversion();\n }\n });\n\n events.on(\"frame_requested\", () => {\n windowManager.updateWindows();\n });\n\n events.on(\"camera_move\", (camera) => {\n\n if (camera !== workspace.getScene().camera) {\n return;\n }\n\n viewcube.update(camera);\n });\n\n events.on(\"shift_loading_queue\", (queue) => {\n workspace.shiftLoadingQueue(queue);\n });\n\n events.on(\"object_added\", (object) => {\n const mainWindow = windowManager.getWindow(windowManager.MAIN);\n mainWindow.addObject(object);\n });\n\n events.on(\"object_removed\", (object) => {\n const mainWindow = windowManager.getWindow(windowManager.MAIN);\n mainWindow.removeObject(object);\n });\n\n events.on(\"objects_initialized\", () => {\n windowManager.applyToAllWindows(window => window.updateObjectsScene());\n });\n\n events.on(\"loadingProgress\", () => {\n windowManager.updateWindows();\n });\n\n}\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayTools from \"_src/engine/utility/arrays\";\nimport renderGraph from \"_src/render_graph/render_graph\";\nimport { screenUtils } from \"_src/client/utils\";\n\nconst OBJECT_ID = 0;\nconst GENERAL_PURPOSE = 1;\nconst SECTION_ANALYSIS = 2;\n\nclass BufferObject {\n constructor() {\n this.data = null;\n this.width = 0;\n this.updatePromise = null;\n }\n}\n\nexport const BufferReaderType = {\n OBJECT_ID,\n GENERAL_PURPOSE,\n SECTION_ANALYSIS,\n}\n\nexport default class GPUBufferReader {\n\n constructor(graph) {\n this._buffers = Array(3);\n for (let i=0; i {\n buffer.updatePromise = null;\n });\n }\n\n await buffer.updatePromise;\n }\n\n return buffer;\n }\n\n async _updateBuffer(bufferID) {\n const buffer = this._buffers[bufferID];\n\n const mainPass = this._graph.getPass(renderGraph.MAIN);\n const camera = mainPass.getMainScene().camera;\n\n switch (bufferID) {\n case OBJECT_ID:\n buffer.data = await this._graph.getObjectIDBuffer(camera.viewport);\n break;\n case GENERAL_PURPOSE:\n buffer.data = await this._graph.getGeneralPurposeBuffer(camera.viewport);\n break;\n case SECTION_ANALYSIS:\n buffer.data = await this._graph.getSectionAnalysisBuffer(camera.viewport);\n break;\n }\n\n buffer.width = camera.viewport[2];\n }\n\n _readPixel(bufferID, textureX, textureY) {\n const viewport = [textureX, textureY, 1, 1];\n switch (bufferID) {\n case OBJECT_ID:\n return this._graph.getObjectIDBuffer(viewport);\n case GENERAL_PURPOSE:\n return this._graph.getGeneralPurposeBuffer(viewport);\n case SECTION_ANALYSIS:\n return this._graph.getSectionAnalysisBuffer(viewport);\n }\n }\n\n}\n\nconst rgbToFloat = (function() {\n const depthScale = [65536.0 / 65793.0 / 255.0, 256.0 / 65793.0 / 255.0, 1.0 / 65793.0 / 255.0];\n\n return function (r, g, b) {\n return r * depthScale[0] + g * depthScale[1] + b * depthScale[2];\n }\n})();\n\nfunction rgbToInt(r, g, b) {\n return r * 65536 + g * 256 + b;\n}\n\nfunction _pickInRadius(buffer, bufferWidth, x, y, radius) {\n let bestDistance = radius + 1;\n let bestCoord = null;\n for (let k=-radius; k<=radius; k++) {\n for (let m=-radius; m<=radius; m++) {\n const distance = Math.sqrt(k*k + m*m);\n if (distance > radius) continue;\n\n const xx = x + k;\n const yy = y + m;\n const ii = (yy * bufferWidth + xx) * 4;\n if (ii + 3 >= buffer.length || ii < 0) continue;\n\n const isValid = buffer[ii + 3] !== 0;\n if (isValid && distance < bestDistance) {\n bestDistance = distance;\n bestCoord = ii;\n }\n }\n }\n\n return bestCoord;\n}\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _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}","import fetch from \"_fetch\";\n\nexport default {\n JSON: 0,\n BINARY: 1,\n TEXT: 2,\n READER: 3,\n\n async download(path, controller, type, progressCallback = null) {\n const signal = controller.signal;\n const response = await fetch(path, {signal});\n if (!response.ok) {\n throw new Error(\"Couldn't load file: \" + path);\n }\n\n const contentLength = response.headers ? +response.headers.get(\"Content-Length\") : 0;\n let result;\n if (progressCallback && contentLength) {\n const reader = response.body.getReader();\n const fetchReader = async () => {\n let receivedLength = 0;\n let chunks = [];\n progressCallback(receivedLength / contentLength);\n for (; ;) {\n const {done, value} = await reader.read();\n\n if (done) {\n break;\n }\n\n chunks.push(value);\n receivedLength += value.length;\n\n progressCallback(receivedLength / contentLength);\n }\n\n const chunksAll = new Uint8Array(receivedLength);\n let position = 0;\n for (const chunk of chunks) {\n chunksAll.set(chunk, position);\n position += chunk.length;\n }\n\n return chunksAll;\n }\n\n const mergedChunks = type === this.READER ? null : await fetchReader();\n switch (type) {\n case this.JSON:\n result = JSON.parse(new TextDecoder().decode(mergedChunks));\n break;\n case this.BINARY:\n result = mergedChunks.buffer;\n break;\n case this.TEXT:\n result = new TextDecoder().decode(mergedChunks);\n break;\n case this.READER:\n reader.byteLength = contentLength;\n result = reader;\n break;\n }\n } else {\n switch (type) {\n case this.JSON:\n result = await response.json();\n break;\n case this.BINARY:\n result = await response.arrayBuffer();\n break;\n case this.TEXT:\n result = await response.text();\n break;\n case this.READER:\n result = response.body.getReader();\n }\n }\n\n return result;\n },\n}\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport var config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error = /*@__PURE__*/ new Error();\n /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EmbeddedActionsParser = exports.CstParser = exports.Parser = exports.EMPTY_ALT = exports.ParserDefinitionErrorType = exports.DEFAULT_RULE_CONFIG = exports.DEFAULT_PARSER_CONFIG = exports.END_OF_FILE = void 0;\nvar isEmpty_1 = __importDefault(require(\"lodash/isEmpty\"));\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar values_1 = __importDefault(require(\"lodash/values\"));\nvar has_1 = __importDefault(require(\"lodash/has\"));\nvar clone_1 = __importDefault(require(\"lodash/clone\"));\nvar utils_1 = require(\"@chevrotain/utils\");\nvar follow_1 = require(\"../grammar/follow\");\nvar tokens_public_1 = require(\"../../scan/tokens_public\");\nvar errors_public_1 = require(\"../errors_public\");\nvar gast_resolver_public_1 = require(\"../grammar/gast/gast_resolver_public\");\nvar recoverable_1 = require(\"./traits/recoverable\");\nvar looksahead_1 = require(\"./traits/looksahead\");\nvar tree_builder_1 = require(\"./traits/tree_builder\");\nvar lexer_adapter_1 = require(\"./traits/lexer_adapter\");\nvar recognizer_api_1 = require(\"./traits/recognizer_api\");\nvar recognizer_engine_1 = require(\"./traits/recognizer_engine\");\nvar error_handler_1 = require(\"./traits/error_handler\");\nvar context_assist_1 = require(\"./traits/context_assist\");\nvar gast_recorder_1 = require(\"./traits/gast_recorder\");\nvar perf_tracer_1 = require(\"./traits/perf_tracer\");\nvar apply_mixins_1 = require(\"./utils/apply_mixins\");\nvar checks_1 = require(\"../grammar/checks\");\nexports.END_OF_FILE = (0, tokens_public_1.createTokenInstance)(tokens_public_1.EOF, \"\", NaN, NaN, NaN, NaN, NaN, NaN);\nObject.freeze(exports.END_OF_FILE);\nexports.DEFAULT_PARSER_CONFIG = Object.freeze({\n recoveryEnabled: false,\n maxLookahead: 3,\n dynamicTokensEnabled: false,\n outputCst: true,\n errorMessageProvider: errors_public_1.defaultParserErrorProvider,\n nodeLocationTracking: \"none\",\n traceInitPerf: false,\n skipValidations: false\n});\nexports.DEFAULT_RULE_CONFIG = Object.freeze({\n recoveryValueFunc: function () { return undefined; },\n resyncEnabled: true\n});\nvar ParserDefinitionErrorType;\n(function (ParserDefinitionErrorType) {\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"INVALID_RULE_NAME\"] = 0] = \"INVALID_RULE_NAME\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"DUPLICATE_RULE_NAME\"] = 1] = \"DUPLICATE_RULE_NAME\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"INVALID_RULE_OVERRIDE\"] = 2] = \"INVALID_RULE_OVERRIDE\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"DUPLICATE_PRODUCTIONS\"] = 3] = \"DUPLICATE_PRODUCTIONS\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"UNRESOLVED_SUBRULE_REF\"] = 4] = \"UNRESOLVED_SUBRULE_REF\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"LEFT_RECURSION\"] = 5] = \"LEFT_RECURSION\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"NONE_LAST_EMPTY_ALT\"] = 6] = \"NONE_LAST_EMPTY_ALT\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"AMBIGUOUS_ALTS\"] = 7] = \"AMBIGUOUS_ALTS\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"CONFLICT_TOKENS_RULES_NAMESPACE\"] = 8] = \"CONFLICT_TOKENS_RULES_NAMESPACE\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"INVALID_TOKEN_NAME\"] = 9] = \"INVALID_TOKEN_NAME\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"NO_NON_EMPTY_LOOKAHEAD\"] = 10] = \"NO_NON_EMPTY_LOOKAHEAD\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"AMBIGUOUS_PREFIX_ALTS\"] = 11] = \"AMBIGUOUS_PREFIX_ALTS\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"TOO_MANY_ALTS\"] = 12] = \"TOO_MANY_ALTS\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"CUSTOM_LOOKAHEAD_VALIDATION\"] = 13] = \"CUSTOM_LOOKAHEAD_VALIDATION\";\n})(ParserDefinitionErrorType = exports.ParserDefinitionErrorType || (exports.ParserDefinitionErrorType = {}));\nfunction EMPTY_ALT(value) {\n if (value === void 0) { value = undefined; }\n return function () {\n return value;\n };\n}\nexports.EMPTY_ALT = EMPTY_ALT;\nvar Parser = /** @class */ (function () {\n function Parser(tokenVocabulary, config) {\n this.definitionErrors = [];\n this.selfAnalysisDone = false;\n var that = this;\n that.initErrorHandler(config);\n that.initLexerAdapter();\n that.initLooksAhead(config);\n that.initRecognizerEngine(tokenVocabulary, config);\n that.initRecoverable(config);\n that.initTreeBuilder(config);\n that.initContentAssist();\n that.initGastRecorder(config);\n that.initPerformanceTracer(config);\n if ((0, has_1.default)(config, \"ignoredIssues\")) {\n throw new Error(\"The IParserConfig property has been deprecated.\\n\\t\" +\n \"Please use the flag on the relevant DSL method instead.\\n\\t\" +\n \"See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\\n\\t\" +\n \"For further details.\");\n }\n this.skipValidations = (0, has_1.default)(config, \"skipValidations\")\n ? config.skipValidations // casting assumes the end user passing the correct type\n : exports.DEFAULT_PARSER_CONFIG.skipValidations;\n }\n /**\n * @deprecated use the **instance** method with the same name instead\n */\n Parser.performSelfAnalysis = function (parserInstance) {\n throw Error(\"The **static** `performSelfAnalysis` method has been deprecated.\" +\n \"\\t\\nUse the **instance** method with the same name instead.\");\n };\n Parser.prototype.performSelfAnalysis = function () {\n var _this = this;\n this.TRACE_INIT(\"performSelfAnalysis\", function () {\n var defErrorsMsgs;\n _this.selfAnalysisDone = true;\n var className = _this.className;\n _this.TRACE_INIT(\"toFastProps\", function () {\n // Without this voodoo magic the parser would be x3-x4 slower\n // It seems it is better to invoke `toFastProperties` **before**\n // Any manipulations of the `this` object done during the recording phase.\n (0, utils_1.toFastProperties)(_this);\n });\n _this.TRACE_INIT(\"Grammar Recording\", function () {\n try {\n _this.enableRecording();\n // Building the GAST\n (0, forEach_1.default)(_this.definedRulesNames, function (currRuleName) {\n var wrappedRule = _this[currRuleName];\n var originalGrammarAction = wrappedRule[\"originalGrammarAction\"];\n var recordedRuleGast;\n _this.TRACE_INIT(\"\".concat(currRuleName, \" Rule\"), function () {\n recordedRuleGast = _this.topLevelRuleRecord(currRuleName, originalGrammarAction);\n });\n _this.gastProductionsCache[currRuleName] = recordedRuleGast;\n });\n }\n finally {\n _this.disableRecording();\n }\n });\n var resolverErrors = [];\n _this.TRACE_INIT(\"Grammar Resolving\", function () {\n resolverErrors = (0, gast_resolver_public_1.resolveGrammar)({\n rules: (0, values_1.default)(_this.gastProductionsCache)\n });\n _this.definitionErrors = _this.definitionErrors.concat(resolverErrors);\n });\n _this.TRACE_INIT(\"Grammar Validations\", function () {\n // only perform additional grammar validations IFF no resolving errors have occurred.\n // as unresolved grammar may lead to unhandled runtime exceptions in the follow up validations.\n if ((0, isEmpty_1.default)(resolverErrors) && _this.skipValidations === false) {\n var validationErrors = (0, gast_resolver_public_1.validateGrammar)({\n rules: (0, values_1.default)(_this.gastProductionsCache),\n tokenTypes: (0, values_1.default)(_this.tokensMap),\n errMsgProvider: errors_public_1.defaultGrammarValidatorErrorProvider,\n grammarName: className\n });\n var lookaheadValidationErrors = (0, checks_1.validateLookahead)({\n lookaheadStrategy: _this.lookaheadStrategy,\n rules: (0, values_1.default)(_this.gastProductionsCache),\n tokenTypes: (0, values_1.default)(_this.tokensMap),\n grammarName: className\n });\n _this.definitionErrors = _this.definitionErrors.concat(validationErrors, lookaheadValidationErrors);\n }\n });\n // this analysis may fail if the grammar is not perfectly valid\n if ((0, isEmpty_1.default)(_this.definitionErrors)) {\n // The results of these computations are not needed unless error recovery is enabled.\n if (_this.recoveryEnabled) {\n _this.TRACE_INIT(\"computeAllProdsFollows\", function () {\n var allFollows = (0, follow_1.computeAllProdsFollows)((0, values_1.default)(_this.gastProductionsCache));\n _this.resyncFollows = allFollows;\n });\n }\n _this.TRACE_INIT(\"ComputeLookaheadFunctions\", function () {\n var _a, _b;\n (_b = (_a = _this.lookaheadStrategy).initialize) === null || _b === void 0 ? void 0 : _b.call(_a, {\n rules: (0, values_1.default)(_this.gastProductionsCache)\n });\n _this.preComputeLookaheadFunctions((0, values_1.default)(_this.gastProductionsCache));\n });\n }\n if (!Parser.DEFER_DEFINITION_ERRORS_HANDLING &&\n !(0, isEmpty_1.default)(_this.definitionErrors)) {\n defErrorsMsgs = (0, map_1.default)(_this.definitionErrors, function (defError) { return defError.message; });\n throw new Error(\"Parser Definition Errors detected:\\n \".concat(defErrorsMsgs.join(\"\\n-------------------------------\\n\")));\n }\n });\n };\n // Set this flag to true if you don't want the Parser to throw error when problems in it's definition are detected.\n // (normally during the parser's constructor).\n // This is a design time flag, it will not affect the runtime error handling of the parser, just design time errors,\n // for example: duplicate rule names, referencing an unresolved subrule, ect...\n // This flag should not be enabled during normal usage, it is used in special situations, for example when\n // needing to display the parser definition errors in some GUI(online playground).\n Parser.DEFER_DEFINITION_ERRORS_HANDLING = false;\n return Parser;\n}());\nexports.Parser = Parser;\n(0, apply_mixins_1.applyMixins)(Parser, [\n recoverable_1.Recoverable,\n looksahead_1.LooksAhead,\n tree_builder_1.TreeBuilder,\n lexer_adapter_1.LexerAdapter,\n recognizer_engine_1.RecognizerEngine,\n recognizer_api_1.RecognizerApi,\n error_handler_1.ErrorHandler,\n context_assist_1.ContentAssist,\n gast_recorder_1.GastRecorder,\n perf_tracer_1.PerformanceTracer\n]);\nvar CstParser = /** @class */ (function (_super) {\n __extends(CstParser, _super);\n function CstParser(tokenVocabulary, config) {\n if (config === void 0) { config = exports.DEFAULT_PARSER_CONFIG; }\n var configClone = (0, clone_1.default)(config);\n configClone.outputCst = true;\n return _super.call(this, tokenVocabulary, configClone) || this;\n }\n return CstParser;\n}(Parser));\nexports.CstParser = CstParser;\nvar EmbeddedActionsParser = /** @class */ (function (_super) {\n __extends(EmbeddedActionsParser, _super);\n function EmbeddedActionsParser(tokenVocabulary, config) {\n if (config === void 0) { config = exports.DEFAULT_PARSER_CONFIG; }\n var configClone = (0, clone_1.default)(config);\n configClone.outputCst = false;\n return _super.call(this, tokenVocabulary, configClone) || this;\n }\n return EmbeddedActionsParser;\n}(Parser));\nexports.EmbeddedActionsParser = EmbeddedActionsParser;\n//# sourceMappingURL=parser.js.map","export const $errors = Symbol(\"thread.errors\");\nexport const $events = Symbol(\"thread.events\");\nexport const $terminate = Symbol(\"thread.terminate\");\nexport const $transferable = Symbol(\"thread.transferable\");\nexport const $worker = Symbol(\"thread.worker\");\n","/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, destination) {\n if (destination === void 0) {\n destination = new InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n }\n if (destination.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(destination);\n }\n return subscribeTo(result)(destination);\n}\n//# sourceMappingURL=subscribeToResult.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar OuterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber));\nexport { OuterSubscriber };\n//# sourceMappingURL=OuterSubscriber.js.map\n","import { workerTypes, getWorkerType } from \"_src/engine/ipc.js\";\nimport output from \"_src/engine/output\";\nimport config from \"_src/config\";\n\nimport { spawn, Worker, Thread } from \"threads\"\n\nconst _workersCounter = {};\nconst MAX_WORKER_COUNTER = {};\nlet _id = 0;\n\nfunction createWorker(type) {\n\n let worker = null;\n\n switch (type) {\n case workerTypes.CORTO_PARSER:\n\n worker = new Worker(\"./loaders/corto/corto_worker.js\");\n break;\n\n case workerTypes.ZSTD_PARSER:\n\n worker = new Worker(\"./loaders/zstd/zstd_worker.js\");\n\n break;\n\n case workerTypes.GEOMETRY_PROCESSOR:\n\n worker = new Worker(\"./geometry_worker.js\");\n break;\n\n case workerTypes.WASM_PROCESSOR:\n\n // todo: remove until fix default export from wasm_module\n worker = null;\n break;\n\n case workerTypes.PLY_PARSER:\n worker = new Worker(\"./loaders/external/ply/ply_worker.js\");\n break;\n\n case workerTypes.OBJ_PARSER:\n worker = new Worker(\"./loaders/external/obj/obj_worker.js\");\n break;\n\n case workerTypes.STL_PARSER:\n worker = new Worker(\"./loaders/external/stl/stl_worker.js\");\n break;\n\n case workerTypes.USD_PARSER:\n worker = new Worker(\"./loaders/external/usd/usd_worker.js\");\n break;\n\n default:\n output.error(output.DEVELOPERS_ERROR, \"Can't create a worker. Unknown type: \\\"\" + type + \"\\\"\");\n return null;\n }\n\n const spawnPromise = spawn(worker, {timeout: 200000}).catch((error) => {\n output.warn(\"Can't spawn worker: \" + error);\n --_workersCounter[type];\n return null;\n });\n\n ++_workersCounter[type];\n\n return {\n type,\n number: _id++,\n spawnPromise\n };\n}\n\nexport default {\n\n _workers : {},\n\n init : function () {\n\n MAX_WORKER_COUNTER[workerTypes.CORTO_PARSER] = config.maxWorkersPerTask;\n MAX_WORKER_COUNTER[workerTypes.ZSTD_PARSER] = config.maxWorkersPerTask;\n MAX_WORKER_COUNTER[workerTypes.GEOMETRY_PROCESSOR] = config.maxWorkersPerTask;\n MAX_WORKER_COUNTER[workerTypes.WASM_PROCESSOR] = 1;\n MAX_WORKER_COUNTER[workerTypes.PLY_PARSER] = 1;\n MAX_WORKER_COUNTER[workerTypes.OBJ_PARSER] = 1;\n MAX_WORKER_COUNTER[workerTypes.STL_PARSER] = 1;\n MAX_WORKER_COUNTER[workerTypes.USD_PARSER] = 1;\n\n for (let type in workerTypes) {\n\n const workerType = workerTypes[type];\n this._workers[workerType] = [];\n _workersCounter[workerType] = 0;\n\n }\n\n },\n\n getWorker : function(type) {\n\n const workerType = getWorkerType(type);\n\n if (!this._workers[workerType]) {\n this._workers[workerType] = [];\n }\n\n const workers = this._workers[workerType];\n\n if (_workersCounter[workerType] < MAX_WORKER_COUNTER[workerType]) {\n const worker = createWorker(workerType);\n if (worker !== null) {\n workers.push(worker);\n }\n }\n\n const worker = workers.length ? workers.pop() : null;\n\n return worker;\n\n },\n\n returnWorker : function(type, worker) {\n\n const workerType = getWorkerType(type);\n\n this._workers[workerType].push(worker);\n\n },\n\n getFreeWorkersCounter : function(type) {\n\n const workerType = getWorkerType(type);\n\n return this._workers[workerType].length;\n\n },\n\n cleanup : function (workerType) {\n\n const promises = [];\n const workers = this._workers[workerType];\n\n for (let i = 0; i < workers.length; ++i) {\n promises.push(workers[i].spawnPromise.then((worker) => {\n return Thread.terminate(worker);\n }));\n }\n\n workers.length = 0;\n\n _workersCounter[workerType] = 0;\n\n return Promise.all(promises);\n\n },\n\n getWorkerCounter(workerType) {\n return this._workers[workerType].length;\n }\n\n};\n","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\n ;\n }\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import output from \"_src/engine/output.js\";\nimport objFactory from \"_src/engine/factories/object\";\nimport {blendEquation, pixelBufferType} from \"_src/engine/constants\";\nimport bufferFactory from \"_src/engine/factories/pixel_buffer\";\nimport events from \"_src/engine/events\";\nimport { geometry, easingType, EPSILON } from \"_src/engine/constants\";\nimport { angle2D } from \"_src/engine/math\";\nimport Animation from \"_src/client/animation\";\n\nimport { vec2, vec3, quat } from \"_src/libs/gl-matrix\";\n\nimport DefaultShader from \"_src/shaders/default/default_shader\";\nimport windowManager from \"_src/client/window_manager\";\nimport renderGraph from \"_src/render_graph/render_graph\";\nimport loader from \"_src/loader\";\nimport { screenUtils, mouseUtils } from \"_src/client/utils\";\nimport controlUtils from \"_src/client/controls/utils\";\nimport inputCollector from \"_src/client/input\";\nimport { getPositionByMinmax, calcOrthoCameraFrustum } from \"_src/utils\";\nimport appState from \"_src/app_state\";\n\n\nimport viewcubePng from \"_assets/textures/viewcube.png\";\nimport edgeBillboardPng from \"_assets/textures/edge_billboard.png\";\nimport faceBillboardPng from \"_assets/textures/face_billboard.png\";\nimport vertextBillboardPng from \"_assets/textures/vertex_billboard.png\";\nimport rotationArrowPng from \"_assets/textures/rotation_arrow.png\";\n\nimport viewcubeObj from \"_assets/meshes/viewcube.obj\";\nimport {colorType} from \"_src/constants\";\n\nconst PICK_MOVE_DISTANCE = 5;\nconst BILLBOARD_OPACITY = 0.1;\nconst ROTATION_OBJECT_BASE_OPACITY = 0.7;\nconst ROTATION_OBJECT_SELECTED_OPACITY = 1.0;\n\nconst VIEWCUBE_OBJECT_ID = 6;\nconst ROTATION_OBJECT_CW_ID = 17;\nconst ROTATION_OBJECT_CCW_ID = 18;\nconst LABEL_X_OBJECT_ID = 1;\nconst LABEL_Y_OBJECT_ID = 0;\nconst LABEL_Z_OBJECT_ID = 2;\n\nconst SELECT_EDGE_Z_ID = 13;\nconst SELECT_VERTEX_OBJECT_ID = 14;\n\nconst LABEL_AXIS_OFFSET = 0.0;\n\nconst VERTEX_TYPE = 0;\nconst EDGE_TYPE_X = 1;\nconst EDGE_TYPE_Y = 2;\nconst EDGE_TYPE_Z = 3;\nconst FACE_TYPE = 4;\n\nconst ANGLE_SPEED = 0.5 / Math.PI;\n\nclass Navigation {\n constructor(type, position, angles) {\n this.type = type;\n this.position = position;\n this.angles = angles;\n }\n}\n\nlet navigationTable = null;\nlet currentSelectId = -1;\nlet selectedRotationArrowId = -1;\nlet animation = null;\nlet pressPositionX = -1;\nlet pressPositionY = -1;\nlet lockState = false;\nlet _enabled = true;\n\nexport default {\n\n rightOffset : 0,\n topOffset : 0,\n width : 1,\n height : 1,\n\n async init() {\n\n createNavigationTable();\n animation = new Animation();\n const mainRenderGraph = windowManager.getWindow(windowManager.MAIN).renderGraph;\n\n mainRenderGraph.setEnabled(renderGraph.VIEWCUBE, _enabled);\n\n const colorTexturePromise = createTexture(viewcubePng);\n const billboardEdgeTexturePromise = createTexture(edgeBillboardPng);\n const billboardFaceTexturePromise = createTexture(faceBillboardPng);\n const billboardVertexTexturePromise = createTexture(vertextBillboardPng);\n const rotationTexturePromise = createTexture(rotationArrowPng);\n\n let objectsData;\n try {\n objectsData = await loader.load(viewcubeObj, loader.EXTERNAL);\n } catch(error) {\n if (!loader.isLegalError(error)) {\n output.error(output.DEVELOPERS_ERROR, \"Can't load viewcube data. \" + error);\n }\n\n return;\n }\n\n const viewCubePass = mainRenderGraph.getPass(renderGraph.VIEWCUBE);\n const viewCubeScene = viewCubePass.getMainScene();\n const billboardScene = viewCubePass.getScenes()[2];\n const camera = viewCubeScene.camera;\n\n const viewCubeshader = new DefaultShader({\n transparent: false,\n lighting: false,\n colorMode: colorType.TEXTURE_UV,\n specularColor: [0,0,0],\n });\n\n const axesShader = new DefaultShader({\n transparent: false,\n lighting: false,\n colorMode: colorType.TEXTURE_UV,\n specularColor: [0,0,0],\n });\n\n const billboardShader = new DefaultShader( {\n transparent: true,\n lighting: false,\n colorMode: colorType.TEXTURE_UV,\n depthTest: false,\n });\n billboardShader.setBlendEquation(blendEquation.FUNC_ADD, blendEquation.MAX);\n\n const rotationShader = new DefaultShader( {\n transparent: true,\n lighting: false,\n colorMode: colorType.TEXTURE_UV,\n screenSpace: true,\n depthTest: false,\n });\n rotationShader.setBlendEquation(blendEquation.FUNC_ADD, blendEquation.MAX);\n\n let navigationPos = 0;\n for (let i = 0; i < ROTATION_OBJECT_CW_ID; ++i) {\n const geom = objectsData[i].geometry;\n\n if (i > VIEWCUBE_OBJECT_ID) {\n let repeatCount;\n let texture;\n if (i= 0 && billboardId >= 0) {\n if (Math.sqrt(Math.pow(screenX - pressPositionX, 2) + Math.pow(screenY - pressPositionY, 2)) > PICK_MOVE_DISTANCE) {\n const clientCoords = inputCollector.getClientCoords();\n events.emit(\"lock_cursor\", { x : clientCoords[0], y : clientCoords[1] });\n lockState = true;\n billboardId = -1;\n }\n }\n\n if (billboardId !== currentSelectId) {\n if (currentSelectId >= 0) {\n billboardScene.getChildren()[currentSelectId].setVisibility(false);\n }\n if (billboardId >= 0) {\n billboardScene.getChildren()[billboardId].setVisibility(true);\n }\n currentSelectId = billboardId;\n mainWindow.renderGraph.requestFrame(false);\n }\n }\n})();\n\nfunction onMouseDown(e) {\n if (e.button !== 0 && currentSelectId < 0 || !_enabled) {\n return;\n }\n\n const coords = inputCollector.getCoords();\n pressPositionX = coords[0];\n pressPositionY = coords[1];\n}\n\nconst onMouseUp = (function() {\n\n const _vec3Tmp = vec3.create();\n const _vec3Tmp2 = vec3.create();\n const _vec3Tmp3 = vec3.create();\n const _vec3Tmp4 = vec3.create();\n const _quatTmp = quat.create();\n\n return function(e) {\n\n if (e.button !== 0 || !_enabled) {\n return;\n }\n\n pressPositionX = -1;\n pressPositionY = -1;\n\n if (lockState) {\n events.emit(\"unlock_cursor\");\n lockState = false;\n return;\n }\n\n if (animation.checkBusy()) {\n return;\n }\n\n const cameraControl = windowManager.getWindow(windowManager.MAIN).cameraControl;\n const camera = cameraControl.object;\n\n if (!cameraControl.enabled) {\n return;\n }\n\n if (selectedRotationArrowId !== -1) {\n let angle = Math.PI / 24;\n if (selectedRotationArrowId === ROTATION_OBJECT_CCW_ID) angle *= -1;\n\n const camDir = vec3.set(_vec3Tmp, 0, 0, 3);\n vec3.normalize(camDir, vec3.transformQuat(camDir, camDir, camera.quat));\n const rotation = quat.setAxisAngle(quat.create(), camDir, angle);\n\n const startQuat = quat.clone(camera.quat);\n const finalQuat = quat.multiply(quat.create(), rotation, startQuat);\n\n cameraControl.setEnabled(false);\n\n animation.type = easingType.IN_OUT_SINE;\n animation.setOnUpdate((value) => {\n const dq = quat.setAxisAngle(_quatTmp, camDir, angle * value);\n quat.multiply(camera.quat, dq, startQuat);\n camera.copyRotation(camera.quat);\n events.emit(\"camera_move\", camera);\n windowManager.getWindow(windowManager.MAIN).renderGraph.requestFrame();\n });\n\n animation.setOnFinish(() => {\n camera.copyRotation(finalQuat);\n\n cameraControl.setEnabled(true);\n events.emit(\"camera_move\", camera);\n const mainWindow = windowManager.getWindow(windowManager.MAIN);\n mainWindow.bufferReader.dropBuffers();\n events.emit(\"visibility_changed\", {camera: camera});\n mainWindow.renderGraph.requestFrame();\n });\n\n animation.start(0, 1, 0.2);\n\n } else if (currentSelectId >= 0) {\n const minmax = windowManager.getWindow(windowManager.MAIN).getMinMax();\n const target = vec3.set(_vec3Tmp4, 0.5 * (minmax[0] + minmax[3]),\n 0.5 * (minmax[1] + minmax[4]),\n 0.5 * (minmax[2] + minmax[5]));\n\n const startDist = cameraControl.dist;\n const startTarget = vec3.clone(cameraControl.target);\n const [oldHor, oldVer] = controlUtils.anglesFromViewOriented(cameraControl.direction);\n const [newHor, newVer] = navigationTable[currentSelectId].angles;\n\n const newView = controlUtils.viewFromAngles(vec3.create(), newHor, newVer);\n const quatHor = quat.setAxisAngle(quat.create(), cameraControl.upVec, newHor);\n const newRight = vec3.transformQuat(vec3.create(), geometry.AXIS_MX, quatHor);\n const objUp = vec3.cross(vec3.create(), newRight, newView);\n\n const finalQuat = quat.setAxes(quat.create(), newView, newRight, objUp);\n quat.conjugate(finalQuat, finalQuat);\n\n cameraControl.setEnabled(false);\n\n const rect = {minx : -1, maxx : 1, miny : -1, maxy : 1};\n const eye = getPositionByMinmax(finalQuat, camera.fov, camera.aspect, minmax, rect, target, _vec3Tmp);\n const distance = vec3.distance(target, eye);\n\n const startHeight = camera.top;\n const {height, width} = calcOrthoCameraFrustum(finalQuat, minmax, rect);\n const finalHeight = height * camera.aspect > width ? height : width / camera.aspect;\n\n let horDelta = newHor - oldHor;\n if (horDelta > Math.PI) {\n horDelta -= 2 * Math.PI;\n }\n if (horDelta < -Math.PI) {\n horDelta += 2 * Math.PI;\n }\n\n const startQuat = quat.clone(camera.quat);\n const invQuat = quat.invert(quat.create(), camera.quat);\n const deltaQuat = quat.multiply(quat.create(), finalQuat, invQuat);\n const unitQuat = quat.create();\n\n const vertDelta = newVer - oldVer;\n if (Math.abs(horDelta) == Math.PI && Math.abs(vertDelta) < 10 * EPSILON) {\n quat.setAxisAngle(deltaQuat, geometry.AXIS_Z, horDelta);\n }\n\n animation.type = easingType.IN_OUT_SINE;\n\n animation.setOnUpdate((value) => {\n\n const dq = quat.slerp(invQuat, unitQuat, deltaQuat, value);\n quat.multiply(camera.quat, dq, startQuat);\n\n const dist = startDist + value * (distance - startDist);\n const currTarget = vec3.lerp(_vec3Tmp2, startTarget, target, value);\n\n const hor = oldHor + value * horDelta;\n const ver = oldVer + value * (newVer - oldVer);\n\n const eye = controlUtils.perspectiveTransFromTargetAngles(hor, ver, currTarget, dist, _vec3Tmp3);\n\n const height = startHeight + value * (finalHeight - startHeight);\n const width = height * camera.aspect;\n\n camera.top = height;\n camera.bottom = -height;\n camera.right = width;\n camera.left = -width;\n\n camera.copyRotation(camera.quat);\n camera.copyTranslation(eye);\n\n events.emit(\"camera_move\", camera);\n windowManager.getWindow(windowManager.MAIN).renderGraph.requestFrame();\n\n });\n\n animation.setOnFinish(() => {\n\n const [hor, ver] = controlUtils.anglesFromViewOriented(newView);\n const eye = controlUtils.perspectiveTransFromTargetAngles(hor, ver, target, distance, _vec3Tmp3);\n\n camera.copyRotation(finalQuat);\n camera.copyTranslation(eye);\n\n cameraControl.setEnabled(true);\n cameraControl.dist = distance;\n cameraControl.lookAt(target[0], target[1], target[2]);\n\n cameraControl.setPosition(eye);\n cameraControl.updateRotation();\n\n camera.top = finalHeight;\n camera.bottom = -finalHeight;\n camera.right = finalHeight * camera.aspect;\n camera.left = -finalHeight * camera.aspect;\n\n events.emit(\"camera_move\", camera);\n const mainWindow = windowManager.getWindow(windowManager.MAIN);\n mainWindow.bufferReader.dropBuffers();\n events.emit(\"visibility_changed\", {camera: camera});\n mainWindow.renderGraph.requestFrame();\n });\n\n const angleTime = Math.max(Math.abs(horDelta), Math.abs(vertDelta)) * ANGLE_SPEED;\n const time = Math.max(angleTime, 0.2);\n animation.start(0, 1, time);\n }\n\n }\n\n})();\n\nfunction createTexture(path) {\n return loader.load(path, loader.IMAGE).then((image) => {\n\n if (!image) {\n return null;\n }\n\n const texture = bufferFactory.create(pixelBufferType.T_RGBA,\n {width: image.width, height: image.height, flipY: true,\n anisotropy: 16, immutable: true});\n\n texture.initMipMapLevelImage(0, image);\n return texture;\n\n }).catch((error) => {\n if (!loader.isLegalError(error)) {\n output.error(output.DEVELOPERS_ERROR, \"Can't load viewcube texture. \" + error);\n }\n });\n}\n\nfunction intersectRotationArrows(x, y) {\n const isInsideBbox = (x, y, bbox) => {\n return x >= bbox[0] && x <= bbox[3] && y >= bbox[1] && y <= bbox[4];\n };\n\n const billboardScene = windowManager.getWindow(windowManager.MAIN).renderGraph.getPass(renderGraph.VIEWCUBE).getScenes()[2];\n const billboardSceneLength = billboardScene.getChildren().length;\n const cwRotationModel = billboardScene.getChildren()[billboardSceneLength - 2];\n const ccwRotationModel = billboardScene.getChildren()[billboardSceneLength - 1];\n if (cwRotationModel.checkIsHidden() || ccwRotationModel.checkIsHidden()) {\n selectedRotationArrowId = -1;\n return;\n }\n\n const cwBbox = cwRotationModel.chunks[0].geometry.bbox;\n const ccwBbox = ccwRotationModel.chunks[0].geometry.bbox;\n if (isInsideBbox(x, y, cwBbox)) {\n selectedRotationArrowId = ROTATION_OBJECT_CW_ID;\n } else if (isInsideBbox(x, y, ccwBbox)) {\n selectedRotationArrowId = ROTATION_OBJECT_CCW_ID;\n } else {\n selectedRotationArrowId = -1;\n }\n}\n\n\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","import { throwError, timer } from 'rxjs';\nimport { mergeMap, finalize } from 'rxjs/operators';\n\nconst DEFAULT_CONSTANT_RETRY = 3000;\n\nexport const genericRetryStrategy =\n ({\n maxRetryAttempts = 5,\n scalingDuration = 2000,\n excludedStatusCodes = [404, 422],\n logger = {\n nodeLog: e => {\n console.log(e);\n },\n },\n meta = {},\n } = {}) =>\n attempts =>\n attempts.pipe(\n mergeMap((error, i) => {\n if (error.status === 401) {\n window.location = '/';\n return throwError('log in');\n }\n if (error.name === 'AbortError') {\n logger.nodeLog({ message: 'Request aborted. Exit.' });\n return throwError(error);\n }\n\n if (!!error.request && error.request.body instanceof FormData) {\n const _chunk = {\n file_path: error.request.body.get('chunk[file_path]'),\n file_size: error.request.body.get('chunk[file_size]'),\n offset: error.request.body.get('chunk[offset]'),\n chunk_size: error.request.body.get('chunk[chunk_size]'),\n };\n logger.nodeLog({ message: `not uploaded, retry - ${JSON.stringify(_chunk)}` });\n }\n const retryAttempt = i + 1;\n\n // if maximum number of retries have been met\n // or response is a status code we don't wish to retry, throw error\n if (\n (maxRetryAttempts !== -1 && retryAttempt > maxRetryAttempts) ||\n excludedStatusCodes.find(e => e === error.status)\n ) {\n logger.nodeLog({ message: `Last attempt ${retryAttempt} failed! Exit.`, ...meta });\n return throwError(error);\n }\n logger.nodeLog({\n message: `Attempt ${retryAttempt} of ${maxRetryAttempts}: retrying in ${\n retryAttempt * scalingDuration\n }ms, error_message: ${error.message || error.status}`,\n ...meta,\n });\n // retry after 1s, 2s, etc...\n return timer(retryAttempt * scalingDuration);\n }),\n finalize(a => {\n console.log(attempts);\n logger.nodeLog({ message: 'Retry is done!', ...meta, a });\n })\n );\n\nexport const uploadRetryStrategy =\n ({\n maxRetryAttempts = 5,\n scalingDuration = 2000,\n logger = {\n nodeLog: e => {\n console.log(e);\n },\n },\n meta = {},\n continueUpload,\n status,\n } = {}) =>\n attempts =>\n attempts.pipe(\n mergeMap((error, i) => {\n if (error.name === 'AbortError') {\n logger.nodeLog({ message: 'Request aborted. Exit.' });\n return throwError(error);\n }\n\n const retryAttempt = i + 1;\n\n // if maximum number of retries have been met\n // or response is a status code we don't wish to retry, throw error\n if ((maxRetryAttempts !== -1 && retryAttempt > maxRetryAttempts) || status.paused === true) {\n logger.nodeLog({ message: `Last attempt ${retryAttempt} failed! Wait for continue.`, ...meta });\n status.paused = true;\n return continueUpload;\n }\n\n logger.nodeLog({\n message: `Attempt ${retryAttempt} of ${maxRetryAttempts}: retrying in ${\n retryAttempt * scalingDuration\n }ms, error_message: ${error.message || error.status}`,\n ...meta,\n });\n // retry after 1s, 2s, etc...\n status.paused = false;\n return timer(retryAttempt * scalingDuration);\n }),\n finalize(a => {\n console.log(attempts);\n logger.nodeLog({ message: 'Retry is done!', ...meta, a });\n })\n );\n\nexport const maxRetryAttempts = 15;\n\nexport const constantRetryStrategy =\n ({ statusCodes = [] } = {}) =>\n attempts =>\n attempts.pipe(\n mergeMap(error => {\n if (error.status === 401) {\n window.location = '/';\n return throwError('log in');\n }\n const duration = (error.response && +error.response.timeout * 1000) || DEFAULT_CONSTANT_RETRY;\n\n if (statusCodes.length > 0 && !statusCodes.find(e => e === error.status)) {\n return throwError(error);\n }\n\n return timer(duration);\n }),\n finalize(() => {})\n );\n","export const CAM_ROT_VELOCITY = 3;\nexport const CAM_MOUSE_ZOOM_MULT = 0.05;\nexport const CAM_MOUSE_PAN_MULT = 20;\n","import windowManager from \"_src/client/window_manager\";\nimport renderGraph from \"_src/render_graph/render_graph\";\nimport appState from \"_src/app_state\";\nimport {drawMode} from \"_src/engine/constants\";\n\nexport default {\n compareObjects(leftObject, rightObject) {\n const mainWindow = windowManager.getWindow(windowManager.MAIN);\n const compareDrawPass = mainWindow.renderGraph.getPass(renderGraph.COMPARE_DRAW);\n const wireframePass = mainWindow.renderGraph.getPass(renderGraph.WIREFRAME);\n\n compareDrawPass.setObjects(leftObject, rightObject);\n\n const compareModeEnabled = Boolean(leftObject || rightObject);\n\n mainWindow.renderGraph.setEnabled(renderGraph.COMPARE_DRAW, compareModeEnabled);\n mainWindow.renderGraph.setEnabled(renderGraph.COMPARE_MIX, compareModeEnabled);\n mainWindow.renderGraph.getWorkspaceScene().setEnabled(!compareModeEnabled);\n mainWindow.renderGraph.getInterfaceScene().setEnabled(!compareModeEnabled);\n wireframePass.getMainScene().setEnabled(!compareModeEnabled);\n if (!compareModeEnabled) {\n wireframePass.getScenes()[1].setEnabled(false);\n wireframePass.getScenes()[2].setEnabled(false);\n }\n },\n\n setRenderSettings(leftRenderMode, rightRenderMode, leftTextureUsage, rightTextureUsage) {\n const mainWindow = windowManager.getWindow(windowManager.MAIN);\n const compareDrawPass = mainWindow.renderGraph.getPass(renderGraph.COMPARE_DRAW);\n const wireframePass = mainWindow.renderGraph.getPass(renderGraph.WIREFRAME);\n\n const leftDrawMode = leftRenderMode === appState.RM_POINTS ? drawMode.POINTS : drawMode.TRIANGLES;\n const rightDrawMode = rightRenderMode === appState.RM_POINTS ? drawMode.POINTS : drawMode.TRIANGLES;\n\n const isLeftWireframeEnabled = leftRenderMode === appState.RM_WIREFRAME;\n const isRightWireframeEnabled = rightRenderMode === appState.RM_WIREFRAME;\n\n compareDrawPass.setRenderSettings(leftDrawMode, rightDrawMode, leftTextureUsage, rightTextureUsage);\n wireframePass.getScenes()[1].setEnabled(isLeftWireframeEnabled);\n wireframePass.getScenes()[2].setEnabled(isRightWireframeEnabled);\n },\n\n setSplitPosition(x) {\n const rg = windowManager.getWindow(windowManager.MAIN).renderGraph;\n rg.getPass(renderGraph.COMPARE_MIX).setSplitPosition(x);\n rg.requestFrame(false);\n },\n};\n","/**\n * Main Web Player namespace\n * @exports src/player/facade\n * @namespace WP\n */\nimport events from \"_src/engine/events\";\nimport output from \"_src/engine/output\";\n\nimport workspace from \"_src/workspace\";\nimport windowManager from \"_src/client/window_manager\";\nimport {commonFacadeFunctions, commonFacadeAPI} from \"_src/common_facade\";\nimport {objectType} from \"_src/constants\";\nimport renderGraph from \"_src/render_graph/render_graph\";\nimport config from \"_src/config\";\nimport GL from \"_src/engine/gl\";\nimport decorator from \"_src/client/decorator\";\nimport splitCompare from \"_src/player/split_compare\";\nimport appState from \"_src/app_state\";\nimport Animation from \"_src/client/animation\";\nimport { vec3, quat } from \"_src/libs/gl-matrix\";\nimport {easingType, geometry} from \"_src/engine/constants\";\nimport utils from \"_src/client/controls/utils\";\nimport {screenUtils} from \"_src/client/utils\";\nimport {initZSTDWorkers} from \"_src/engine/loaders/zstd/zstd_loader\";\nimport materialFactory from \"_src/client/materials/material_factory\";\n\nconst defaultFlightAnimation = new Animation();\nlet _isCompareMode = false;\nlet _leftObjectID, _rightObjectID;\nlet _leftRenderMode, _rightRenderMode;\nlet _leftColorMode, _rightColorMode;\n\nconst WP_DERIVED = {\n /**\n * Init Web Player\n * @memberof WP\n * @param {Object} params Method parameters\n * @param {HTMLCanvasElement} params.canvas Canvas used to draw 3D content\n * @param {Boolean} params.transparentCanvas Is canvas transparent\n * @method init\n */\n async init({canvas, transparentCanvas = false}) {\n if (!GL.getContext(canvas, {alpha: transparentCanvas, premultipliedAlpha: !transparentCanvas, antialias: false, stencil: true})) {\n output.error(output.INITIALIZATION_ERROR, \"Couldn't initialize webgl context!\");\n return;\n }\n\n config.recalculateInterfaceDepth = false;\n config.lodPreload = true;\n config.viewOnlyMode = true;\n if (transparentCanvas) config.backgroundColor = {r:0, g:0, b:0};\n\n const commonPromise = commonFacadeFunctions.init(canvas);\n commonFacadeFunctions.startRenderingCycle(canvas, frame, commonFacadeFunctions.resize);\n initEvents(canvas);\n\n const mainPass = windowManager.getWindow(windowManager.MAIN).renderGraph.getPass(renderGraph.MAIN);\n mainPass.enableObjectIDTexture = false;\n mainPass.update();\n _leftRenderMode = appState.getStateValue(\"renderMode\");\n _leftColorMode = appState.getStateValue(\"colorMode\");\n\n await commonPromise;\n },\n\n /**\n * Destroy the application\n * @memberof WS\n * @param {Object} params Method parameters\n * @param {HTMLCanvasElement} params.canvas Canvas used to draw 3D content\n * @method destroy\n */\n destroy({canvas}) {\n commonFacadeFunctions.destroy(canvas);\n },\n\n /**\n * Notify WP about project's change\n * @memberof WP\n * @param {Object} params Method parameters\n * @param {string} params.path Path to the directory containing a project\n * @param {string|null} params.objectID Id of the object in the left half of compare mode. Null means compare mode\n * @param {string|null|undefined} params.anotherObjectID Id of the object in the right half of compare mode. String or null means compare mode. Undefined means simple mode\n * @param {Object} params.cameraState State of camera acquired from WP.getCameraState() method. Optional\n * @method updateProject\n * @returns {Promise} Promise resolved when the project structure has finished updating\n */\n async updateProject(params) {\n const re = /(?:\\.([^.]+))?$/;\n const ext = re.exec(params.path)[1].toLowerCase();\n\n if (ext === \"sjson\") await updateWSProject(params);\n else await loadExternalModel(params.path);\n },\n\n /**\n * Set application rendering mode\n * @memberof WP\n * @param {Object} params Method parameters\n * @param {(RM_SOLID|RM_WIREFRAME|RM_POINTS)} params.mode Rendering mode for player or rendering mode for left half of compare mode. Optional\n * @param {(RM_SOLID|RM_WIREFRAME|RM_POINTS)} params.anotherMode Rendering mode for right half of compare mode. Optional\n * @method setRenderMode\n */\n setRenderMode({mode, anotherMode}) {\n if (mode !== undefined) _leftRenderMode = mode;\n if (anotherMode !== undefined) _rightRenderMode = anotherMode;\n\n updateRenderSettings();\n },\n\n /**\n * Set application color mode\n * @memberof WP\n * @param {Object} params Method parameters\n * @param {(CM_TEXTURE|CM_SCAN_COLOR)} params.mode Color mode for player or color mode for left half of compare mode. Optional\n * @param {(CM_TEXTURE|CM_SCAN_COLOR)} params.anotherMode Color mode for right half of compare mode. Optional\n * @method setColorMode\n */\n setColorMode({mode, anotherMode}) {\n if (mode !== undefined) _leftColorMode = mode;\n if (anotherMode !== undefined) _rightColorMode = anotherMode;\n\n updateRenderSettings();\n },\n\n /**\n * Get camera state to further usage in loadProject\n * @memberof WP\n * @method getCameraState\n * @returns Object cameraState Camera state at this moment\n * @param {Array(4)} cameraState.position camera position at this moment\n * @param {Array(3)} cameraState.rotation camera rotation at this moment\n * @param {Number} cameraState.fov camera field of view at this moment\n */\n getCameraState() {\n const camera = windowManager.getWindow(windowManager.MAIN).cameraControl.object;\n const state = {\n position: Array.from(camera.trans),\n rotation: Array.from(camera.quat),\n fov: camera.fixedFov,\n };\n\n return state;\n },\n\n /**\n * Starts default camera animation\n * @memberof WP\n * @method cameraDefaultAnimation\n */\n cameraDefaultAnimation() {\n const ROTATION_HOR = Math.PI * 2;\n\n const control = windowManager.getWindow(windowManager.MAIN).cameraControl;\n const camera = control.object;\n const optimalDistance = utils.calculateBBoxOptimalDistance(workspace.getBBox(), camera);\n const cameraView = vec3.transformQuat(vec3.create(), geometry.AXIS_MZ, camera.quat);\n const startCameraPos = vec3.clone(camera.trans);\n const rotationCenter = vec3.scaleAndAdd(vec3.create(), startCameraPos, cameraView, control.dist);\n const distanceToTarget = vec3.distance(startCameraPos, rotationCenter);\n const resultedDistance = Math.max(distanceToTarget, 5*optimalDistance);\n const distanceDelta = resultedDistance - distanceToTarget;\n\n const camUp = vec3.transformQuat(vec3.create(), geometry.AXIS_Y, camera.quat);\n\n const animationCurrentPosition = vec3.create();\n const animationCurrentRotation = quat.create();\n const animationCurrentCamDir = vec3.create();\n const animationCurrentCamRight = vec3.create();\n const animationCurrentLocalRotation = quat.create();\n const animationCurrentLocalPos = vec3.create();\n const animationCurrentRotatedLocalPos = vec3.create();\n const animationCurrentRotatedShiftedLocalPos = vec3.create();\n const animateRotationAndPosition = (value) => {\n quat.setAxisAngle(animationCurrentLocalRotation, camUp, -ROTATION_HOR * (1 - value));\n vec3.sub(animationCurrentLocalPos, startCameraPos, rotationCenter);\n vec3.transformQuat(animationCurrentRotatedLocalPos, animationCurrentLocalPos, animationCurrentLocalRotation);\n const animationCurrentDistance = resultedDistance - distanceDelta * value;\n vec3.scale(animationCurrentRotatedShiftedLocalPos, animationCurrentRotatedLocalPos, animationCurrentDistance / distanceToTarget);\n vec3.add(animationCurrentPosition, animationCurrentRotatedShiftedLocalPos, rotationCenter);\n\n vec3.sub(animationCurrentCamDir, rotationCenter, animationCurrentPosition);\n vec3.normalize(animationCurrentCamDir, animationCurrentCamDir);\n vec3.cross(animationCurrentCamRight, animationCurrentCamDir, camUp);\n quat.setAxes(animationCurrentRotation, animationCurrentCamDir, animationCurrentCamRight, camUp);\n quat.conjugate(animationCurrentRotation, animationCurrentRotation);\n\n camera.setRotation(...animationCurrentRotation);\n control.setPosition(animationCurrentPosition);\n windowManager.getWindow(windowManager.MAIN).renderGraph.requestFrame();\n }\n\n defaultFlightAnimation.type = easingType.IN_OUT_SINE;\n defaultFlightAnimation.setOnUpdate((value) => {\n animateRotationAndPosition(value);\n });\n\n defaultFlightAnimation.setOnFinish(() => {\n animateRotationAndPosition(1.0);\n });\n\n defaultFlightAnimation.start(0, 1, 2);\n animateRotationAndPosition(0.0);\n },\n\n /**\n * Set position of splitting line\n * @memberof WP\n * @param {Object} params Method parameters\n * @param {Number} params.x Css horizontal position of splitting line\n * @method setCompareSplitPosition\n */\n setCompareSplitPosition(params) {\n const xPos = params.x * screenUtils.getPixelRatio();\n splitCompare.setSplitPosition(xPos);\n },\n};\n\nconst WP = {...commonFacadeAPI, ...WP_DERIVED};\ndecorator.applyDecoratorToWholeModule(decorator.logArguments, WP);\n\nexport default WP;\n\nasync function updateWSProject(params) {\n initZSTDWorkers();\n const updatedObjects = await workspace.updateProject(params.path);\n\n if (params.anotherObjectID === undefined && params.objectID !== undefined) {\n _leftObjectID = params.objectID;\n _rightObjectID = undefined;\n } else if (params.anotherObjectID !== undefined && params.objectID !== undefined) {\n _leftObjectID = params.objectID;\n _rightObjectID = params.anotherObjectID;\n }\n _isCompareMode = _rightObjectID !== undefined;\n\n const object = workspace.getObjectByID(_leftObjectID);\n const anotherObject = workspace.getObjectByID(_rightObjectID);\n\n if (object && !checkObjectValidity(object) || anotherObject && !checkObjectValidity(anotherObject)) {\n output.error(output.API_ERROR, \"Couldn't update project. Provided objects are invalid\");\n return;\n }\n\n removeUnselectedObjects();\n const setCameraPosition = () => {\n const mainWindow = windowManager.getWindow(windowManager.MAIN);\n\n if (params.cameraState) {\n mainWindow.cameraControl.object.setRotation(...params.cameraState.rotation);\n mainWindow.cameraControl.setPosition(params.cameraState.position);\n mainWindow.cameraControl.object.setFieldOfView(params.cameraState.fov);\n mainWindow.cameraControl.object.updateProjectMatrix();\n } else {\n mainWindow.cameraControl.setDefaultPosition(workspace.getBBox());\n }\n events.off(\"objects_initialized\", setCameraPosition);\n };\n events.on(\"objects_initialized\", setCameraPosition);\n\n if (object) object.setVisibility(true);\n if (anotherObject) anotherObject.setVisibility(true);\n await workspace.initObjects();\n\n updateRenderSettings();\n if (_isCompareMode) {\n splitCompare.compareObjects(object, anotherObject);\n } else {\n splitCompare.compareObjects(null, null);\n }\n if (object) await prepareObject(object);\n if (anotherObject) await prepareObject(anotherObject);\n\n if (updatedObjects !== null && updatedObjects.find(obj => obj.getID() === _leftObjectID || obj.getID() === _rightObjectID)) {\n await workspace.reloadObjects();\n }\n}\n\nasync function loadExternalModel(path) {\n class Progress {\n constructor(path) {\n this.LOADING = 0;\n this.TEXTURING = 1;\n this.POST_PROCESSING = 2;\n\n this._weights = [0.7, 0.29, 0.01];\n this._state = Array(this._weights.length).fill(0);\n this._path = path;\n }\n emit(stage, progress) {\n this._state[stage] = progress;\n\n let progressSum = 0;\n for (let i=0; i commonFacadeFunctions.resize(canvas));\n}\n\nfunction removeUnselectedObjects() {\n for (const obj of workspace.getObjects().slice()) {\n if (obj.getID() !== _leftObjectID && obj.getID() !== _rightObjectID) {\n workspace.removeObject(obj);\n }\n }\n for (const photoGroup of workspace.getPhotoGroups().slice()) {\n workspace._removePhotoGroup(photoGroup);\n }\n for (const group of workspace.getGroups().slice()) {\n workspace._removeGroup(group);\n }\n for (const measure of workspace.getMeasures().slice()) {\n workspace._removeMeasure(measure);\n }\n}\n\nfunction checkObjectValidity(object) {\n return object.type === objectType.FUSION || object.type === objectType.CAD && !object.isPrimitive();\n}\n\nasync function prepareObject(object) {\n await workspace.setObjectVisibility(object, true);\n commonFacadeFunctions.synchronizeShaderState(object);\n object.model.shader.setDirective(\"OBJECT_ID\", false);\n}\n\nfunction updateRenderSettings() {\n if (_isCompareMode) {\n const needsWireframe = _leftRenderMode === appState.RM_WIREFRAME || _rightRenderMode === appState.RM_WIREFRAME;\n if (needsWireframe) appState.setStateValue(\"renderMode\", appState.RM_WIREFRAME);\n const leftTextureUsage = _leftColorMode === appState.CM_TEXTURE;\n const rightTextureUsage = _rightColorMode === appState.CM_TEXTURE;\n\n splitCompare.setRenderSettings(_leftRenderMode, _rightRenderMode, leftTextureUsage, rightTextureUsage);\n } else {\n if (_leftRenderMode !== undefined) appState.setStateValue(\"renderMode\", _leftRenderMode);\n if (_leftColorMode !== undefined) appState.setStateValue(\"colorMode\", _leftColorMode);\n workspace.getObjects().forEach(object => {\n updateMaterial(object.model);\n commonFacadeFunctions.synchronizeShaderState(object);\n });\n }\n\n commonFacadeFunctions.synchronizeApplicationState();\n commonFacadeFunctions.synchronizeObjectsState();\n}\n\nasync function updateMaterial(model) {\n const texturedMode = appState.getStateValue(\"colorMode\") === appState.CM_TEXTURE;\n const hasPbr = materialFactory.isAppliable(materialFactory.PBR, model);\n const materialType = texturedMode && hasPbr ? materialFactory.PBR : materialFactory.ASTUDIO;\n await materialFactory.resetMaterial(materialType, model, model.properties);\n model.shader.setShading(appState.getStateValue(\"shadingType\"));\n if (materialType === materialFactory.ASTUDIO) model.shader.setDirective(\"OBJECT_ID\", false);\n}\n\nif (process.env.NODE_ENV === \"development\") {\n window.WP = WP;\n}\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import Shader from \"_src/engine/shader\";\nimport Uniform from \"_src/engine/uniform\";\nimport { vec4 } from \"_src/libs/gl-matrix\";\nimport { uniformType, uniformSource } from \"_src/engine/constants\";\n\nimport vertText from \"_src/shaders/screen/screen.glslv\";\nimport fragText from \"_src/shaders/screen/screen.glslf\";\n\nexport default class ScreenShader extends Shader {\n\n constructor(params = {}) {\n\n super(params);\n\n this.attachUniforms(params);\n\n }\n\n compile() {\n super.compile(vertText, fragText);\n }\n\n attachUniforms() {\n\n const diffuseColor = vec4.fromValues(0.8, 0.8, 0.8);\n this.uniforms[\"u_diffuse\"] = new Uniform(uniformType.FLOAT4V, diffuseColor, uniformSource.OBJECT);\n\n }\n\n updateObjectUniformValues(object) {\n vec4.copy(this.uniforms[\"u_diffuse\"].value, object.properties.diffuseColor);\n }\n\n}\n","import { Router, __RouterContext, matchPath } from 'react-router';\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter } from 'react-router';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport { createBrowserHistory, createHashHistory, createLocation } from 'history';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport invariant from 'tiny-invariant';\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createBrowserHistory(_this.props);\n return _this;\n }\n\n var _proto = BrowserRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(HashRouter, _React$Component);\n\n function HashRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createHashHistory(_this.props);\n return _this;\n }\n\n var _proto = HashRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return HashRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\") : void 0;\n };\n}\n\nvar resolveToLocation = function resolveToLocation(to, currentLocation) {\n return typeof to === \"function\" ? to(currentLocation) : to;\n};\nvar normalizeToLocation = function normalizeToLocation(to, currentLocation) {\n return typeof to === \"string\" ? createLocation(to, null, null, currentLocation) : to;\n};\n\nvar forwardRefShim = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar LinkAnchor = forwardRef(function (_ref, forwardedRef) {\n var innerRef = _ref.innerRef,\n navigate = _ref.navigate,\n _onClick = _ref.onClick,\n rest = _objectWithoutPropertiesLoose(_ref, [\"innerRef\", \"navigate\", \"onClick\"]);\n\n var target = rest.target;\n\n var props = _extends({}, rest, {\n onClick: function onClick(event) {\n try {\n if (_onClick) _onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && ( // ignore everything but left clicks\n !target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n\n\n return React.createElement(\"a\", props);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n/**\n * The public API for rendering a history-aware .\n */\n\n\nvar Link = forwardRef(function (_ref2, forwardedRef) {\n var _ref2$component = _ref2.component,\n component = _ref2$component === void 0 ? LinkAnchor : _ref2$component,\n replace = _ref2.replace,\n to = _ref2.to,\n innerRef = _ref2.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref2, [\"component\", \"replace\", \"to\", \"innerRef\"]);\n\n return React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history;\n var location = normalizeToLocation(resolveToLocation(to, context.location), context.location);\n var href = location ? history.createHref(location) : \"\";\n\n var props = _extends({}, rest, {\n href: href,\n navigate: function navigate() {\n var location = resolveToLocation(to, context.location);\n var method = replace ? history.replace : history.push;\n method(location);\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n var toType = PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]);\n var refType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n })]);\n Link.displayName = \"Link\";\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nvar forwardRefShim$1 = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef$1 = React.forwardRef;\n\nif (typeof forwardRef$1 === \"undefined\") {\n forwardRef$1 = forwardRefShim$1;\n}\n\nfunction joinClassnames() {\n for (var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++) {\n classnames[_key] = arguments[_key];\n }\n\n return classnames.filter(function (i) {\n return i;\n }).join(\" \");\n}\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\n\n\nvar NavLink = forwardRef$1(function (_ref, forwardedRef) {\n var _ref$ariaCurrent = _ref[\"aria-current\"],\n ariaCurrent = _ref$ariaCurrent === void 0 ? \"page\" : _ref$ariaCurrent,\n _ref$activeClassName = _ref.activeClassName,\n activeClassName = _ref$activeClassName === void 0 ? \"active\" : _ref$activeClassName,\n activeStyle = _ref.activeStyle,\n classNameProp = _ref.className,\n exact = _ref.exact,\n isActiveProp = _ref.isActive,\n locationProp = _ref.location,\n sensitive = _ref.sensitive,\n strict = _ref.strict,\n styleProp = _ref.style,\n to = _ref.to,\n innerRef = _ref.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref, [\"aria-current\", \"activeClassName\", \"activeStyle\", \"className\", \"exact\", \"isActive\", \"location\", \"sensitive\", \"strict\", \"style\", \"to\", \"innerRef\"]);\n\n return React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var currentLocation = locationProp || context.location;\n var toLocation = normalizeToLocation(resolveToLocation(to, currentLocation), currentLocation);\n var path = toLocation.pathname; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n var match = escapedPath ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact: exact,\n sensitive: sensitive,\n strict: strict\n }) : null;\n var isActive = !!(isActiveProp ? isActiveProp(match, currentLocation) : match);\n var className = isActive ? joinClassnames(classNameProp, activeClassName) : classNameProp;\n var style = isActive ? _extends({}, styleProp, {}, activeStyle) : styleProp;\n\n var props = _extends({\n \"aria-current\": isActive && ariaCurrent || null,\n className: className,\n style: style,\n to: toLocation\n }, rest); // React 15 compat\n\n\n if (forwardRefShim$1 !== forwardRef$1) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(Link, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n var ariaCurrentType = PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\"]);\n NavLink.propTypes = _extends({}, Link.propTypes, {\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n });\n}\n\nexport { BrowserRouter, HashRouter, Link, NavLink };\n//# sourceMappingURL=react-router-dom.js.map\n","// Engine\nimport output from \"_src/engine/output\";\nimport {stepType, selectionType} from \"_src/constants\";\nimport selector from \"_src/manipulators/libs/selector\";\n\n// Application\nimport workspace from \"_src/workspace\";\nimport history from \"_src/history/manager\";\nimport projectTree from \"_src/reformer/project_tree\";\n\nexport default {\n\n setObjectColor({id, color}) {\n\n const object = workspace.getGroupByID(id) || workspace.getObjectByID(id);\n\n if (!object) {\n output.error(output.API_ERROR, \"Can't set object color. Wrong object id: \\\"\" + id + \"\\\"\");\n return false;\n }\n\n const {r, g, b} = color;\n\n object.setColor(r, g, b);\n\n return true;\n\n },\n\n async setObjectVisibility({objectID, l1IDx, l2IDx, visible = true}) {\n const object = workspace.getGroupByID(objectID) || workspace.getObjectByID(objectID) || workspace.getPhotoGroupByID(objectID) || workspace.getMeasureByID(objectID);\n\n if (!object) {\n output.error(output.API_ERROR, \"Can't set object visibility. Wrong object id: \\\"\" + objectID + \"\\\"\");\n return false;\n }\n\n if (l1IDx !== undefined || l2IDx !== undefined) {\n projectTree.setSubSectionProperty(objectID, l1IDx, l2IDx, \"visible\", visible);\n } else {\n if (object.getVisibility() === visible) {\n return false;\n }\n await workspace.setObjectVisibility(object, visible);\n }\n },\n\n clearSelection(objects) {\n const changedObjects = [];\n\n for (const object of objects) {\n let changed = false;\n for (const frame of object.frames) {\n const updatedChunks = [];\n for (const chunk of frame.model.chunks) {\n if (chunk.geometry.checkHasSelectedVertices()) {\n updatedChunks.push(chunk.getID());\n }\n }\n\n if (updatedChunks.length > 0) {\n history.writeFrameToCurrentStep({type: stepType.SELECT, frame: frame, chunksUp: updatedChunks});\n changed = true;\n }\n }\n\n if (changed) {\n selector.dropSelection(object);\n changedObjects.push({id: object.id});\n }\n }\n\n if (changedObjects.length > 0) {\n history.addStep(stepType.SELECT, {type: selectionType.CLEAR, objects: changedObjects});\n }\n\n },\n\n invertSelection(objects) {\n const changedObjects = [];\n\n for (const object of objects) {\n for (const frame of object.frames) {\n const updatedChunks = [];\n for (const chunk of frame.model.chunks) {\n updatedChunks.push(chunk.getID());\n }\n\n if (updatedChunks.length > 0) {\n history.writeFrameToCurrentStep({type: stepType.SELECT, frame: frame, chunksUp: updatedChunks});\n }\n }\n\n selector.invertSelection(object);\n changedObjects.push({id: object.id});\n }\n\n if (changedObjects.length > 0) {\n history.addStep(stepType.SELECT, {type: selectionType.INVERT, objects: changedObjects});\n }\n\n },\n\n async invertNormals(objects) {\n const promises = [];\n for (const object of objects) {\n for (const frame of object.frames) {\n for (const chunk of frame.model.chunks) {\n promises.push(chunk.invertNormals(false));\n }\n }\n }\n\n await Promise.all(promises);\n },\n\n async closeProject() {\n workspace.clearLoader();\n await workspace.closeProject();\n },\n\n cleanup() {\n workspace.cleanup();\n workspace.closeProject();\n }\n\n}\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var observable = /*@__PURE__*/ (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })();\n//# sourceMappingURL=observable.js.map\n","import {colorUtils, idGenerator} from \"_src/utils\";\nimport {objectType} from \"_src/constants\";\nimport projectTree from \"_src/reformer/project_tree\";\n\nexport default class Wrapper {\n constructor(params) {\n this.id = \"id\" in params ? params.id : idGenerator.getNext();\n this.loaded = false;\n this.type = objectType.ANONYM;\n this._loadPromise = null;\n }\n\n _selfPropertyGetter(name) {\n const property = projectTree._getProperty(this.getID());\n if (!property) return null;\n return property.getValue(name);\n }\n\n _selfPropertySetter(name, value) {\n const property = projectTree._getProperty(this.getID());\n if (!property) return;\n projectTree.setPropertyValue(this.getID(), name, value);\n }\n\n getID() {\n return this.id;\n }\n\n getProperty(name) {\n return this._selfPropertyGetter(name);\n }\n\n getUUID() {\n return this._selfPropertyGetter(\"uuid\");\n }\n\n getName() {\n return this._selfPropertyGetter(\"name\");\n }\n\n setName(name) {\n this._selfPropertySetter(\"name\", name);\n }\n\n getVisibility() {\n return this._selfPropertyGetter(\"visible\");\n }\n\n setVisibility(visibility) {\n this._selfPropertySetter(\"visible\", visibility);\n }\n\n getColor() {\n const colorObj = colorUtils.hexToRgb(this._selfPropertyGetter(\"color\"));\n return [colorObj.r, colorObj.g, colorObj.b];\n }\n\n setColor(r, g, b) {\n this._selfPropertySetter(\"color\", colorUtils.rgbToHex(r, g, b));\n }\n\n isLoadingNeeded() {\n return this.getVisibility() && !this.loaded;\n }\n\n async loadData() {\n if (this.loaded) return;\n if (!this._loadPromise) this._loadPromise = this._loadData();\n\n await this._loadPromise;\n this.loaded = true;\n }\n\n unloadData() {\n this._loadPromise = null;\n this._unloadData();\n this.loaded = false;\n }\n\n async _loadData() {}\n _unloadData() {}\n}\n","import { easingType } from \"_src/engine/constants\";\n\nexport default class Animation {\n\n constructor() {\n\n this.type = easingType.LINEAR;\n\n this._from = 0.0;\n this._to = 0.0;\n\n this._start = 0.0;\n this._current = 0.0;\n this._end = 0.0;\n\n this._active = false;\n\n this._onUpdate = () => {};\n this._onFinish = () => {};\n\n }\n\n update(elapsed) {\n\n if (this._active) {\n\n this._current += elapsed;\n\n if (this._current >= this._end) {\n\n this._onFinish(this._to);\n\n this._active = false;\n\n } else {\n\n const value = getValue(this.type, this._current, this._from, this._to, this._end);\n\n this._onUpdate(value);\n\n }\n\n }\n\n }\n\n start(from, to, time) {\n\n this._from = from;\n this._to = to;\n\n this._start = 0.0;\n this._current = 0.0;\n this._end = time;\n\n this._active = true;\n\n }\n\n setOnUpdate(update) {\n this._onUpdate = update;\n }\n\n setOnFinish(finish) {\n this._onFinish = finish;\n }\n\n abort() {\n this._active = false;\n }\n\n checkBusy() {\n return this._active;\n }\n\n}\n\nfunction getValue(type, t, b, c, d) {\n\n switch(type) {\n case easingType.LINEAR:\n return linearTween(t, b, c, d);\n case easingType.IN_QUAD:\n return easeInQuad(t, b, c, d);\n case easingType.OUT_QUAD:\n return easeOutQuad(t, b, c, d);\n case easingType.IN_OUT_QUAD:\n return easeInOutQuad(t, b, c, d);\n case easingType.IN_CUBIC:\n return easeInCubic(t, b, c, d);\n case easingType.OUT_CUBIC:\n return easeOutCubic(t, b, c, d);\n case easingType.IN_OUT_CUBIC:\n return easeInOutCubic(t, b, c, d);\n case easingType.IN_QUART:\n return easeInQuart(t, b, c, d);\n case easingType.OUT_QUART:\n return easeOutQuart(t, b, c, d);\n case easingType.IN_OUT_QUART:\n return easeInOutQuart(t, b, c, d);\n case easingType.IN_QUINT:\n return easeInQuint(t, b, c, d);\n case easingType.OUT_QUINT:\n return easeOutQuint(t, b, c, d);\n case easingType.IN_OUT_QUINT:\n return easeInOutQuint(t, b, c, d);\n case easingType.IN_SINE:\n return easeInSine(t, b, c, d);\n case easingType.OUT_SINE:\n return easeOutSine(t, b, c, d);\n case easingType.IN_OUT_SINE:\n return easeInOutSine(t, b, c, d);\n case easingType.IN_EXPO:\n return easeInExpo(t, b, c, d);\n case easingType.OUT_EXPO:\n return easeOutExpo(t, b, c, d);\n case easingType.IN_OUT_EXPO:\n return easeInOutExpo(t, b, c, d);\n case easingType.IN_CIRC:\n return easeInCirc(t, b, c, d);\n case easingType.OUT_CIRC:\n return easeOutCirc(t, b, c, d);\n case easingType.IN_OUT_CIRC:\n return easeInOutCirc(t, b, c, d);\n case easingType.IN_ELASTIC:\n return easeInElastic(t, b, c, d);\n case easingType.OUT_ELASTIC:\n return easeOutElastic(t, b, c, d);\n case easingType.IN_OUT_ELASTIC:\n return easeInOutElastic(t, b, c, d);\n case easingType.IN_BACK:\n return easeInBack(t, b, c, d);\n case easingType.OUT_BACK:\n return easeOutBack(t, b, c, d);\n case easingType.IN_OUT_BACK:\n return easeInOutBack(t, b, c, d);\n case easingType.IN_BOUNCE:\n return easeInBounce(t, b, c, d);\n case easingType.OUT_BOUNCE:\n return easeOutBounce(t, b, c, d);\n case easingType.IN_OUT_BOUNCE:\n return easeInOutBounce(t, b, c, d);\n default:\n throw \"Unsupported easing type.\";\n }\n\n}\n\n// t: current time, b: begInnIng value, c: change In value, d: duration\nfunction linearTween(t, b, c, d) {\n return c*t/d + b;\n}\n\nfunction easeInQuad(t, b, c, d) {\n return c*(t/=d)*t + b;\n}\n\nfunction easeOutQuad(t, b, c, d) {\n return -c *(t/=d)*(t-2) + b;\n}\n\nfunction easeInOutQuad(t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t + b;\n return -c/2 * ((--t)*(t-2) - 1) + b;\n}\n\nfunction easeInCubic(t, b, c, d) {\n return c*(t/=d)*t*t + b;\n}\n\nfunction easeOutCubic(t, b, c, d) {\n return c*((t=t/d-1)*t*t + 1) + b;\n}\n\nfunction easeInOutCubic(t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t*t + b;\n return c/2*((t-=2)*t*t + 2) + b;\n}\n\nfunction easeInQuart(t, b, c, d) {\n return c*(t/=d)*t*t*t + b;\n}\n\nfunction easeOutQuart(t, b, c, d) {\n return -c * ((t=t/d-1)*t*t*t - 1) + b;\n}\n\nfunction easeInOutQuart(t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t*t*t + b;\n return -c/2 * ((t-=2)*t*t*t - 2) + b;\n}\n\nfunction easeInQuint(t, b, c, d) {\n return c*(t/=d)*t*t*t*t + b;\n}\n\nfunction easeOutQuint(t, b, c, d) {\n return c*((t=t/d-1)*t*t*t*t + 1) + b;\n}\n\nfunction easeInOutQuint(t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\n return c/2*((t-=2)*t*t*t*t + 2) + b;\n}\n\nfunction easeInSine(t, b, c, d) {\n return -c * Math.cos(t/d * (Math.PI/2)) + c + b;\n}\n\nfunction easeOutSine(t, b, c, d) {\n return c * Math.sin(t/d * (Math.PI/2)) + b;\n}\n\nfunction easeInOutSine(t, b, c, d) {\n return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\n}\n\nfunction easeInExpo(t, b, c, d) {\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\n}\n\nfunction easeOutExpo(t, b, c, d) {\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\n}\n\nfunction easeInOutExpo(t, b, c, d) {\n if (t==0) return b;\n if (t==d) return b+c;\n if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\n return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\n}\n\nfunction easeInCirc(t, b, c, d) {\n return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\n}\n\nfunction easeOutCirc(t, b, c, d) {\n return c * Math.sqrt(1 - (t=t/d-1)*t) + b;\n}\n\nfunction easeInOutCirc(t, b, c, d) {\n if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\n return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\n}\n\nfunction easeInElastic(t, b, c, d) {\n var s=1.70158;var p=0;var a=c;\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\n if (a < Math.abs(c)) { a=c; s=p/4; }\n else s = p/(2*Math.PI) * Math.asin (c/a);\n return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n}\n\nfunction easeOutElastic(t, b, c, d) {\n var s=1.70158;var p=0;var a=c;\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\n if (a < Math.abs(c)) { a=c; s=p/4; }\n else s = p/(2*Math.PI) * Math.asin (c/a);\n return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\n}\n\nfunction easeInOutElastic(t, b, c, d) {\n var s=1.70158;var p=0;var a=c;\n if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);\n if (a < Math.abs(c)) { a=c; s=p/4; }\n else s = p/(2*Math.PI) * Math.asin (c/a);\n if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\n}\n\nfunction easeInBack(t, b, c, d, s) {\n if (s == undefined) s = 1.70158;\n return c*(t/=d)*t*((s+1)*t - s) + b;\n}\n\nfunction easeOutBack(t, b, c, d, s) {\n if (s == undefined) s = 1.70158;\n return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\n}\n\nfunction easeInOutBack(t, b, c, d, s) {\n if (s == undefined) s = 1.70158;\n if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\n return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\n}\n\nfunction easeInBounce(t, b, c, d) {\n return c - easeOutBounce (d-t, 0, c, d) + b;\n}\n\nfunction easeOutBounce(t, b, c, d) {\n if ((t/=d) < (1/2.75)) {\n return c*(7.5625*t*t) + b;\n } else if (t < (2/2.75)) {\n return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\n } else if (t < (2.5/2.75)) {\n return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\n } else {\n return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\n }\n}\n\nfunction easeInOutBounce(t, b, c, d) {\n if (t < d/2) return easeInBounce (t*2, 0, c, d) * .5 + b;\n return easeOutBounce (t*2-d, 0, c, d) * .5 + c*.5 + b;\n}\n","import extensions from \"_src/engine/extensions\";\nimport output from \"_src/engine/output.js\";\nimport GL from \"_src/engine/gl\";\nimport {drawMode, drawQueryState, memoryType} from \"_src/engine/constants\";\nimport memoryProfiler from \"_src/engine/memory_profiler\";\nimport appState from \"_src/app_state\";\nimport config from \"_src/config\";\n\nconst tmpArray = [];\n\nexport class ChunkInDrawable {\n constructor() {\n this.bbox = new Array(6);\n this.inFrustum = false;\n\n this.queryState = drawQueryState.INACTIVE;\n this.queryResult = true;\n this.drawQuery = null;\n\n this.attributesMap = [];\n this.activeShaderProgram = null;\n\n this.instancedAttributes = new Map();\n }\n}\n\nexport default class Chunk {\n\n constructor(id = \"\") {\n\n this.ibo = null;\n\n this._drawMode = null;\n this._indicesType = null;\n\n this._numElems = 0;\n\n this.enableFrustumTest = true;\n\n this.geometry = null;\n this.color = new Float32Array([1.0, 1.0, 1.0]);\n\n this.id = id;\n\n this.attributeBuffers = {};\n\n this.needsReload = false;\n\n this.dupliVertices = {};\n this.parentVerticesMask = null;\n\n this.setDrawMode(drawMode.TRIANGLES);\n\n this._dirtyAttributes = new Set();\n\n this._memoryUsageReportOwners = new Set();\n }\n\n updateGlBuffers(shader) {\n\n if (!this._updateIBO()) {\n return false;\n }\n\n if (!this._updateBuffers(shader)) {\n return false;\n }\n\n return true;\n\n }\n\n getID() {\n return this.id;\n }\n\n _updateIBO() {\n\n if (this.geometry.isPointCloud) {\n return true;\n }\n\n if (!this._dirtyAttributes.has(\"indices\")) {\n return true;\n }\n\n const indices = this.geometry.getItemBuffer(\"indices\");\n\n // NOTE: we can build acceleration structures in workers\n if (indices == null) {\n return false;\n }\n\n const gl = GL.getContext();\n\n if (!this.ibo) {\n this.ibo = gl.createBuffer();\n }\n\n this._numElems = indices.length;\n\n this._indicesType = getIndicesType(indices);\n\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.ibo);\n gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.DYNAMIC_DRAW);\n memoryProfiler.markMemoryAllocated(this.ibo, memoryType.GPU_GEOMETRY, indices.byteLength);\n for (const memoryUsageReportOwner of this._memoryUsageReportOwners) {\n memoryProfiler.markMemoryAllocated(this.ibo, memoryType.GPU_GEOMETRY, indices.byteLength, memoryUsageReportOwner);\n }\n\n this._dirtyAttributes.delete(\"indices\");\n\n const layout = this.geometry.getLayout();\n if (layout[\"indices\"].shouldBeUnloaded()) {\n memoryProfiler.markMemoryReleased(layout[\"indices\"].buffer);\n delete layout[\"indices\"];\n }\n\n return true;\n\n }\n\n markAttributeDirty(attName) {\n this._dirtyAttributes.add(attName);\n }\n\n cleanup() {\n\n this.cleanupGLBuffers();\n\n if (this.geometry) {\n this.geometry.releaseMemory();\n this.geometry.terminateDataBuilding();\n this.geometry = null;\n }\n\n this._numElems = 0;\n\n this.parentVerticesMask = null;\n\n this._dirtyAttributes.clear();\n\n }\n\n cleanupGLBuffers() {\n\n this.reportMemoryRelease();\n\n const gl = GL.getContext();\n for (let attrName in this.attributeBuffers) {\n const attrib = this.attributeBuffers[attrName];\n gl.deleteBuffer(attrib.vbo);\n }\n\n if (this.ibo) {\n gl.deleteBuffer(this.ibo);\n }\n\n this.ibo = null;\n this.attributeBuffers = {};\n\n }\n\n getVerticesCount() {\n let vertCount = this.geometry.getVerticesCount();\n if (vertCount === 0) {\n const positionsAttribute = this.attributeBuffers[\"a_position\"];\n vertCount = positionsAttribute.byteLength / positionsAttribute.size;\n }\n\n return vertCount;\n }\n\n isEmpty () {\n return !this.geometry || this.geometry.empty();\n }\n\n hasDrawElements() {\n return this._numElems !== 0;\n }\n\n hasSelection() {\n\n const selectionMask = this.geometry.getItemBuffer(\"a_selection_mask\");\n\n if (!selectionMask) {\n return false;\n }\n\n for (let i = 0; i < selectionMask.length; ++i) {\n if (selectionMask[i]) {\n return true;\n }\n }\n\n return false;\n\n }\n\n draw(gl) {\n if (this.geometry.isPointCloud) {\n gl.drawArrays(this._drawMode, 0, this._numElems);\n } else {\n gl.drawElements(this._drawMode, this._numElems, this._indicesType, 0);\n }\n }\n\n drawInstanced(instanceExt, instanceCount) {\n instanceExt.drawElementsInstanced(this._drawMode, this._numElems, this._indicesType, 0, instanceCount);\n }\n\n setDrawMode(mode) {\n this._drawMode = GL.getGLDrawMode(mode);\n }\n\n addVertexDuplicates(vertexInd, dupliChunk, dupliVertInd) {\n\n const dupliList = this.dupliVertices;\n\n let dupliVerts = dupliList[vertexInd];\n\n if (!dupliVerts) {\n dupliList[vertexInd] = [];\n }\n\n dupliList[vertexInd].push(dupliChunk, dupliVertInd);\n }\n\n setHasParentVertex(index, value) {\n this.parentVerticesMask[index] = value;\n }\n\n resetDupliVertices() {\n this.dupliVertices = {};\n }\n\n resetParentVerticesMask() {\n this.parentVerticesMask = new Uint8Array(this.geometry.getVerticesCount());\n }\n\n clearParentVerticesMask() {\n this.parentVerticesMask = null;\n }\n\n attachBuffers(gl, attributesMap) {\n\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.ibo);\n\n for (let i = 0; i < attributesMap.length; i += 2) {\n\n const ind = attributesMap[i];\n const attr = attributesMap[i + 1];\n\n gl.bindBuffer(gl.ARRAY_BUFFER, attr.vbo);\n gl.enableVertexAttribArray(ind);\n gl.vertexAttribPointer(ind, attr.size, attr.type, attr.normalize,\n attr.stride, attr.offset);\n\n }\n\n }\n\n detachBuffers(gl, attributesMap) {\n for (let j = 0; j < attributesMap.length; j+=2) {\n const ind = attributesMap[j];\n gl.disableVertexAttribArray(ind);\n }\n }\n\n detachInstancedBuffers(gl, instanceExt, attributesMap) {\n for (let j = 0; j < attributesMap.length; j+=2) {\n const ind = attributesMap[j];\n gl.disableVertexAttribArray(ind);\n instanceExt.vertexAttribDivisor(ind, 0);\n }\n }\n\n attachInstancedBuffers(gl, instanceExt, attributesMap, instanceDivisor) {\n\n for (let i = 0; i < attributesMap.length; i += 2) {\n const ind = attributesMap[i];\n const attr = attributesMap[i + 1];\n\n gl.bindBuffer(gl.ARRAY_BUFFER, attr.vbo);\n gl.enableVertexAttribArray(ind);\n gl.vertexAttribPointer(ind, attr.size, attr.type, attr.normalize,\n attr.stride, attr.offset);\n\n instanceExt.vertexAttribDivisor(ind, instanceDivisor);\n }\n\n }\n\n requestMemoryUsageReport(reportOwner) {\n this._memoryUsageReportOwners.add(reportOwner);\n this._reportMemoryUsage(reportOwner);\n }\n\n _reportMemoryUsage(reportOwner) {\n for (const attrName in this.attributeBuffers) {\n const attrib = this.attributeBuffers[attrName];\n memoryProfiler.markMemoryAllocated(attrib.vbo, memoryType.GPU_GEOMETRY, attrib.byteLength, reportOwner);\n }\n\n const indices = this.geometry ? this.geometry.getItemBuffer(\"indices\") : null;\n if (this.ibo && indices) {\n memoryProfiler.markMemoryAllocated(this.ibo, memoryType.GPU_GEOMETRY, indices.byteLength, reportOwner);\n }\n }\n\n reportMemoryReleaseFromOwner(reportOwner) {\n this._memoryUsageReportOwners.delete(reportOwner);\n this._reportMemoryReleaseFromOwner(reportOwner);\n }\n\n reportMemoryRelease() {\n for (const memoryUsageReportOwner of this._memoryUsageReportOwners){\n this._reportMemoryReleaseFromOwner(memoryUsageReportOwner);\n }\n this.reportMemoryReleaseFromOwner();\n\n this._memoryUsageReportOwners.clear();\n }\n\n _reportMemoryReleaseFromOwner(reportOwner) {\n for (const attrName in this.attributeBuffers) {\n const attrib = this.attributeBuffers[attrName];\n memoryProfiler.markMemoryReleased(attrib.vbo, reportOwner);\n }\n\n if (this.ibo) {\n memoryProfiler.markMemoryReleased(this.ibo, reportOwner);\n }\n }\n\n _updateBuffers(shader) {\n\n if (this._dirtyAttributes.size === 0) {\n return true;\n }\n\n const availableGeometryAttrs = this.geometry.getLayout();\n const buffersToUnload = tmpArray;\n\n for (const geomAttrName in availableGeometryAttrs) {\n if (!this._dirtyAttributes.has(geomAttrName)) {\n continue;\n }\n\n let shaderAttrName = geomAttrName;\n for (const [shaderName, geomName] of Object.entries(shader.instancedAttributesRemapping)) {\n if (geomAttrName === geomName) {\n shaderAttrName = shaderName;\n break;\n }\n }\n\n if (!config.viewOnlyMode && !(shaderAttrName in shader.attributesLocations)) {\n continue;\n }\n\n const layoutItem = availableGeometryAttrs[geomAttrName];\n const buffer = layoutItem.getBuffer();\n if (!buffer) {\n return false;\n }\n\n if (this.geometry.isPointCloud && geomAttrName === \"a_position\") {\n const positionsElemSize = layoutItem.getComponentsCount();\n this._numElems = buffer.length / positionsElemSize;\n }\n\n const attrib = this.attributeBuffers[geomAttrName];\n\n if (attrib) {\n writeAttribute(attrib, buffer);\n } else {\n const normalizationRequired = geomAttrName === \"a_color\";\n this.attributeBuffers[geomAttrName] = createAttribute(layoutItem, buffer, normalizationRequired);\n }\n memoryProfiler.markMemoryAllocated(this.attributeBuffers[geomAttrName].vbo, memoryType.GPU_GEOMETRY, this.attributeBuffers[geomAttrName].byteLength);\n for (const memoryUsageReportOwner of this._memoryUsageReportOwners) {\n memoryProfiler.markMemoryAllocated(this.attributeBuffers[geomAttrName].vbo, memoryType.GPU_GEOMETRY, this.attributeBuffers[geomAttrName].byteLength, memoryUsageReportOwner);\n }\n\n this._dirtyAttributes.delete(geomAttrName);\n\n if (layoutItem.shouldBeUnloaded()) {\n buffersToUnload.push(geomAttrName);\n }\n\n }\n\n for (const bufferToUnload of buffersToUnload) {\n memoryProfiler.markMemoryReleased(availableGeometryAttrs[bufferToUnload].buffer);\n delete availableGeometryAttrs[bufferToUnload];\n }\n buffersToUnload.length = 0;\n\n return true;\n\n }\n\n attributeChanged(attrName) {\n return this._dirtyAttributes.has(attrName)\n }\n\n async buildNormalsAndBorder(useWorker, withNormals, withBorder) {\n await this.geometry.buildNormalsAndBorder(useWorker, withNormals, withBorder);\n this.markAttributeDirty(\"a_normal\");\n if (config.viewOnlyMode) {\n //force to update these buffers and unload them further\n this.markAttributeDirty(\"a_position\");\n this.markAttributeDirty(\"indices\");\n }\n }\n\n async invertNormals(useWorker) {\n await this.geometry.invertNormals(useWorker);\n if (this.geometry.getLayoutItem(\"indices\")) {\n this.markAttributeDirty(\"indices\");\n }\n if (this.geometry.getLayoutItem(\"a_normal\")) {\n this.markAttributeDirty(\"a_normal\");\n }\n }\n\n updateSelectionMask(needsSelection = appState.getState(appState.GS_OCTREE) || appState.getState(appState.GS_HALF_EDGE)) {\n const selectionMaskExists = this.geometry.hasLayoutItem(\"a_selection_mask\");\n const needsInitSelectionMask = !selectionMaskExists && needsSelection;\n const needsRemoveSelectionMask = selectionMaskExists && !needsSelection;\n\n if (needsInitSelectionMask) {\n this.geometry.initSelectionBuffers();\n this.markAttributeDirty(\"a_selection_mask\");\n }\n\n if (needsRemoveSelectionMask) {\n this.geometry.removeSelectionBuffers();\n this.markAttributeDirty(\"a_selection_mask\");\n }\n }\n\n removeNormals() {\n this.geometry.removeNormals();\n this.markAttributeDirty(\"a_normal\");\n }\n\n updateVertexID(needsVertexID) {\n\n const needsUpdate = needsVertexID && !this.geometry.hasLayoutItem(\"a_vertex_id\") ||\n !needsVertexID && this.geometry.hasLayoutItem(\"a_vertex_id\");\n\n if (!needsUpdate) {\n return;\n }\n\n if (needsVertexID) {\n this.geometry.initVertexID(this.getVerticesCount());\n } else {\n this.geometry.deleteVertexID();\n }\n\n this.markAttributeDirty(\"a_vertex_id\");\n\n }\n\n averageNormals(dupliVertices, vertexMask = null) {\n const normals = this.geometry.getLayoutItem(\"a_normal\").getBuffer();\n\n let averagedNormalX = 0;\n let averagedNormalY = 0;\n let averagedNormalZ = 0;\n\n for (const [vertexIndex, dupli] of Object.entries(dupliVertices)) {\n if (vertexMask && !vertexMask[vertexIndex]) {\n continue;\n }\n\n averagedNormalX = normals[3*vertexIndex];\n averagedNormalY = normals[3*vertexIndex+1];\n averagedNormalZ = normals[3*vertexIndex+2];\n\n for (let i = 0; i < dupli.length; i+=2) {\n const dupliChunk = dupli[i];\n const dupliIndex = dupli[i+1];\n const dupliNormals = dupliChunk.geometry.getLayoutItem(\"a_normal\").getBuffer();\n\n averagedNormalX += dupliNormals[3*dupliIndex];\n averagedNormalY += dupliNormals[3*dupliIndex+1];\n averagedNormalZ += dupliNormals[3*dupliIndex+2];\n }\n\n const sqrtLen = Math.sqrt(averagedNormalX * averagedNormalX + averagedNormalY * averagedNormalY + averagedNormalZ * averagedNormalZ);\n averagedNormalX /= sqrtLen;\n averagedNormalY /= sqrtLen;\n averagedNormalZ /= sqrtLen;\n\n normals[3*vertexIndex] = averagedNormalX;\n normals[3*vertexIndex+1] = averagedNormalY;\n normals[3*vertexIndex+2] = averagedNormalZ;\n\n for (let i = 0; i < dupli.length; i+=2) {\n const dupliChunk = dupli[i];\n const dupliIndex = dupli[i+1];\n const dupliNormals = dupliChunk.geometry.getLayoutItem(\"a_normal\").getBuffer();\n\n dupliNormals[3*dupliIndex] = averagedNormalX;\n dupliNormals[3*dupliIndex+1] = averagedNormalY;\n dupliNormals[3*dupliIndex+2] = averagedNormalZ;\n\n dupliChunk.markAttributeDirty(\"a_normal\");\n }\n\n if (vertexMask && vertexMask[vertexIndex] === 2) vertexMask[vertexIndex] = 0;\n }\n\n //TODO: WS-1494\n\n this.markAttributeDirty(\"a_normal\");\n }\n\n}\n\nfunction writeAttribute(attribute, data) {\n\n const gl = GL.getContext();\n\n gl.bindBuffer(gl.ARRAY_BUFFER, attribute.vbo);\n\n // TODO: need to update all attributes offsets if they share the same vbo\n if (attribute.byteLength === data.byteLength) {\n gl.bufferSubData(gl.ARRAY_BUFFER, attribute.offset, data);\n } else {\n gl.bufferData(gl.ARRAY_BUFFER, data, gl.DYNAMIC_DRAW);\n attribute.byteLength = data.byteLength;\n }\n\n}\n\nfunction createAttribute(layoutItem, buffer, normalize) {\n\n const size = layoutItem.getComponentsCount();\n const offset = layoutItem.getByteOffset();\n const stride = layoutItem.getStride();\n const divisor = layoutItem.getDivisor();\n\n const type = GL.getGLBufferType(layoutItem.type);\n const byteLength = buffer.byteLength;\n\n const vbo = createVBO(buffer);\n\n return {\n vbo,\n size,\n type,\n normalize,\n stride,\n offset,\n divisor,\n byteLength\n };\n\n}\n\nfunction createVBO(attData) {\n\n const gl = GL.getContext();\n const vbo = gl.createBuffer();\n\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo);\n gl.bufferData(gl.ARRAY_BUFFER, attData, gl.DYNAMIC_DRAW);\n\n return vbo;\n\n}\n\nfunction getIndicesType(indices) {\n\n const gl = GL.getContext();\n\n if (indices instanceof Uint32Array) {\n\n const ext = extensions.get(\"OES_element_index_uint\");\n\n if (!ext) {\n\n output.error(output.INITIALIZATION_ERROR, \"\\\"OES_element_index_uint\\\" is not supported! Can't draw the geometry.\");\n return null;\n\n }\n\n return gl.UNSIGNED_INT;\n\n } else if (indices instanceof Uint16Array) {\n\n return gl.UNSIGNED_SHORT;\n\n } else {\n\n return gl.UNSIGNED_BYTE;\n\n }\n}\n","import Shader from \"_src/engine/shader\";\nimport extensions from \"_src/engine/extensions\";\nimport compat from \"_src/engine/compat\";\nimport { shadingType } from \"_src/constants\";\nimport { blendFactor, uniformType, uniformSource, cullingFrontFace } from \"_src/engine/constants\";\nimport { vec3, mat4 } from \"_src/libs/gl-matrix\";\nimport Uniform from \"_src/engine/uniform\";\nimport gl_types from \"_src/engine/gl_types\";\n\nimport { drawMode } from \"_src/engine/constants\";\nimport vertText from \"_src/shaders/pbr/pbr.glslv\";\nimport fragText from \"_src/shaders/pbr/pbr.glslf\";\n\nconst _vec3Tmp = vec3.create();\n\nconst preprocessorRules = {\n \"FLAT_SHADING\": 0,\n \"SMOOTH_SHADING\": 1,\n \"CCW\": 0,\n \"CW\": 1,\n \"TRIANGLES_MODE\": 0,\n \"POINTS_MODE\": 1,\n \"SPOTS\": 0,\n \"ENV\": 1,\n \"COMBINED\": 2,\n};\n\nexport default class PBRShader extends Shader {\n\n constructor(params = {}) {\n super(params);\n this.textureLodSamplingEnabled = true;\n this.attachUniforms(params);\n this.setShading(params.shading !== undefined ? params[\"shading\"] : shadingType.FLAT);\n }\n\n //reimplementation\n initDirectives(params) {\n this._directives[\"WIREFRAME\"] = params.wireframe !== undefined ? params.wireframe : false;\n this._directives[\"FRONT_FACE\"] = this.cullingFrontFace === gl_types.getFrontFace(cullingFrontFace.CLOCK_WISE) ? \"CW\" : \"CCW\";\n this._directives[\"INVERT_FACES\"] = false;\n this._directives[\"SHADING\"] = \"\";\n this._directives[\"DRAW_MODE\"] = \"\";\n this._directives[\"NUM_LIGHTS\"] = 0;\n this._directives[\"LIGHT_SOURCE\"] = \"ENV\";\n\n this._dependentDirectives.add(\"WIREFRAME\");\n this._dependentDirectives.add(\"FRONT_FACE\");\n this._dependentDirectives.add(\"SHADING\");\n this._dependentDirectives.add(\"DRAW_MODE\");\n this._dependentDirectives.add(\"NUM_LIGHTS\");\n }\n\n compile() {\n\n this.standardDerivativesEnabled = this._directives[\"SHADING\"] === \"FLAT_SHADING\";\n this.mrtEnabled = this._directives[\"WIREFRAME\"];\n\n const fragModifiedText = this.preprocessFShaderText(fragText);\n\n super.compile(vertText, fragModifiedText, preprocessorRules);\n\n }\n\n preprocessFShaderText(shaderText) {\n\n const useMRT = this.mrtEnabled && compat.mrtEnabled;\n\n if (!useMRT) {\n return shaderText;\n }\n\n const fragOutRegex = new RegExp(\"FRAG_OUT\", \"g\");\n const fragDefRegex = new RegExp(\"FRAG_DEF_OUT\", \"g\");\n\n let outputText = shaderText;\n\n let outputCounter = 0;\n let outputIndex = 0;\n const outputReplacer = (match) => {\n\n let result = \"\";\n\n switch(outputCounter) {\n case 0:\n result = useMRT ? match + outputIndex++ : match;\n break;\n case 1:\n result = this._directives[\"WIREFRAME\"] ? match + outputIndex++ : \"\";\n break;\n default:\n result = match + outputIndex++;\n break;\n }\n\n ++outputCounter;\n\n return result;\n\n };\n\n outputText = outputText.replace(fragDefRegex, outputReplacer);\n outputCounter = 0;\n outputIndex = 0;\n outputText = outputText.replace(fragOutRegex, outputReplacer);\n\n return outputText;\n\n }\n\n updateObjectUniformValues(object) {\n mat4.copy(this.uniforms[\"u_model_matrix\"].value, object.modelMatrix);\n }\n\n updateSceneUniformValues(scene) {\n\n const camera = scene.camera;\n\n for (let i = 0; i < scene.lightPositions.length; ++i) {\n this.uniforms[\"u_light_positions[0]\"].value[i] = scene.lightPositions[i];\n this.uniforms[\"u_light_colors[0]\"].value[i] = scene.lightColors[i];\n }\n\n mat4.copy(this.uniforms[\"u_view_proj_matrix\"].value, camera.viewProjMat);\n mat4.copy(this.uniforms[\"u_view_mat\"].value, camera.viewMat);\n vec3.copy(this.uniforms[\"u_cam_pos\"].value, camera.trans);\n }\n\n updateSceneDirectives(scene) {\n // NOTE: Light number is not changing in the app right now but it is allowed\n if (this.getNumLights() !== scene.getLightsCount()) {\n this.setNumLights(scene.getLightsCount());\n }\n }\n\n attachUniforms(params) {\n const numLights = this._directives[\"NUM_LIGHTS\"];\n const pointSize = \"pointSize\" in params ? params.pointSize : 1.0;\n const backfaceColor = vec3.fromValues(0.8, 0.8, 0.4);\n const lightColors = new Float32Array(3 * numLights);\n const lightPositions = new Float32Array(3 * numLights);\n const viewProjectionMatrix = mat4.create();\n const viewInverseMatrix = mat4.create();\n const cameraPosition = vec3.create();\n const modelMatrix = mat4.create();\n\n this.uniforms[\"u_backface_color\"] = new Uniform(uniformType.FLOAT3, backfaceColor);\n this.uniforms[\"u_point_size\"] = new Uniform(uniformType.FLOAT1, pointSize);\n this.uniforms[\"u_light_colors[0]\"] = new Uniform(uniformType.FLOAT3V, lightColors, uniformSource.SCENE);\n this.uniforms[\"u_light_positions[0]\"] = new Uniform(uniformType.FLOAT3V, lightPositions, uniformSource.SCENE);\n this.uniforms[\"u_view_proj_matrix\"] = new Uniform(uniformType.MAT4, viewProjectionMatrix, uniformSource.SCENE);\n this.uniforms[\"u_view_mat\"] = new Uniform(uniformType.MAT4, viewInverseMatrix, uniformSource.SCENE);\n this.uniforms[\"u_cam_pos\"] = new Uniform(uniformType.FLOAT3, cameraPosition, uniformSource.SCENE);\n this.uniforms[\"u_model_matrix\"] = new Uniform(uniformType.MAT4, modelMatrix, uniformSource.OBJECT);\n this.uniforms[\"tDiffuse\"] = new Uniform(uniformType.INT1, 0, uniformSource.OBJECT);\n this.uniforms[\"tRoughnessMetallic\"] = new Uniform(uniformType.INT1, 1, uniformSource.OBJECT);\n this.uniforms[\"tIrradianceMap\"] = new Uniform(uniformType.INT1, 2, uniformSource.OBJECT);\n this.uniforms[\"tPrefilterMap\"] = new Uniform(uniformType.INT1, 3, uniformSource.OBJECT);\n this.uniforms[\"tBRDF\"] = new Uniform(uniformType.INT1, 4, uniformSource.OBJECT);\n }\n\n setPointSize(size) {\n this.setUniform(\"u_point_size\", size);\n }\n\n setWireframeEnabled(enabled, transparent) {\n this._setDirective(\"WIREFRAME\", enabled);\n\n if (enabled && transparent) {\n this.setSourceBlendFactor(blendFactor.SRC_ALPHA);\n this.setDestBlendFactor(blendFactor.ONE_MINUS_SRC_ALPHA);\n }\n }\n\n setCullingFrontFace(frontFace) {\n super.setCullingFrontFace(frontFace);\n this._setDirective(\"FRONT_FACE\", frontFace === cullingFrontFace.CLOCK_WISE ? \"CW\" : \"CCW\")\n }\n\n setShading(shading) {\n const oldShading = this._directives[\"SHADING\"];\n\n const standardDerivatives = extensions.get(\"OES_standard_derivatives\");\n if (shading === shadingType.FLAT && standardDerivatives) {\n this._setDirective(\"SHADING\",\"FLAT_SHADING\");\n } else {\n this._setDirective(\"SHADING\",\"SMOOTH_SHADING\");\n }\n\n return oldShading === this._directives[\"SHADING\"];\n }\n\n setDrawMode(mode) {\n switch (mode) {\n case drawMode.POINTS:\n this._setDirective(\"DRAW_MODE\",\"POINTS_MODE\");\n break;\n default:\n this._setDirective(\"DRAW_MODE\",\"TRIANGLES_MODE\");\n }\n }\n\n setNumLights(numLights) {\n this._setDirective(\"NUM_LIGHTS\", numLights);\n if (this.uniforms[\"u_light_positions[0]\"].value.length != numLights) {\n this.uniforms[\"u_light_positions[0]\"].value = new Float32Array(3 * numLights);\n this.uniforms[\"u_light_colors[0]\"].value = new Float32Array(3 * numLights);\n }\n }\n\n getNumLights() {\n return this._directives[\"NUM_LIGHTS\"];\n }\n\n setBackFaceColor(r, g, b) {\n const color = vec3.set(_vec3Tmp, r, g, b);\n this.setUniform(\"u_backface_color\", color);\n }\n}\n","import DefaultShader from \"_src/shaders/default/default_shader\";\nimport PBRShader from \"_src/shaders/pbr/pbr\";\nimport appState from \"_src/app_state\";\nimport loader from \"_src/loader\";\nimport output from \"_src/engine/output\";\nimport bufferFactory from \"_src/engine/factories/pixel_buffer\";\nimport {pixelBufferType, textureMinFilter, textureMagFilter, blendEquation, cubeMapTarget} from \"_src/engine/constants\";\nimport {colorType} from \"_src/constants\";\nimport LineShader from \"_src/shaders/line/line\";\n\nlet _pbrResources = null;\n\nclass Material {\n constructor(shader, properties) {\n this.shader = shader;\n this.properties = properties;\n this.textures = [];\n }\n}\n\nexport class ColorTextureMaterial extends Material {\n constructor(properties) {\n const shader = new DefaultShader({\n backFaceCulling: false,\n writeObjectID: true,\n drawDepth: appState.getState(appState.GS_DRAW_DEPTH),\n monochromaticColor: true,\n });\n const backfaceColor = appState.getStateValue(\"backFaceColor\");\n shader.setBackFaceColor(backfaceColor.r, backfaceColor.g, backfaceColor.b);\n\n super(shader, properties);\n }\n}\n\nexport class MatCapMaterial extends Material {\n constructor(properties) {\n const shader = new DefaultShader({\n backFaceCulling: false,\n writeObjectID: true,\n drawDepth: appState.getState(appState.GS_DRAW_DEPTH),\n lighting: false,\n colorMode: colorType.MATCAP,\n });\n const backfaceColor = appState.getStateValue(\"backFaceColor\");\n shader.setBackFaceColor(backfaceColor.r, backfaceColor.g, backfaceColor.b);\n\n super(shader, properties);\n\n this.initPromise = this._loadTexture();\n }\n\n async _loadTexture() {\n try {\n const image = await loader.load(this.properties.matCapPath, loader.IMAGE);\n\n if (!image) {\n output.error(output.DEVELOPERS_ERROR, \"Couldn't load matcap texture.\");\n return;\n }\n\n const minFilter = textureMinFilter.NEAREST;\n const magFilter = textureMagFilter.NEAREST;\n\n const matCapTexture = bufferFactory.create(pixelBufferType.T_RGBA, {\n width: image.width, height: image.height,\n minFilter, magFilter, immutable: true, flipY: true\n });\n matCapTexture.initMipMapLevelImage(0, image);\n this.textures[0] = matCapTexture;\n } catch (error) {\n if (!loader.isLegalError(error)) {\n output.error(output.DEVELOPERS_ERROR, \"Couldn't load matcap texture. \" + error);\n }\n }\n }\n}\n\nexport class PBRMaterial extends Material {\n constructor(properties) {\n const shader = new PBRShader({backFaceCulling: false});\n super(shader, properties);\n const backfaceColor = appState.getStateValue(\"backFaceColor\");\n shader.setBackFaceColor(backfaceColor.r, backfaceColor.g, backfaceColor.b);\n\n this.resources = null;\n this.initPromise = _initPbrResources().then(res => {\n this.resources = res;\n })\n }\n}\n\nexport class SurfelsMaterial extends Material {\n constructor(properties) {\n const shader = new DefaultShader({\n backFaceCulling: false,\n writeObjectID: true,\n surfelsMode: true,\n surfelsSizeConstraint: false, //bound max surfel's screen size (model will break into quads on zoom)\n drawDepth: appState.getState(appState.GS_DRAW_DEPTH),\n monochromaticColor: true,\n });\n\n const backfaceColor = appState.getStateValue(\"backFaceColor\");\n shader.setBackFaceColor(backfaceColor.r, backfaceColor.g, backfaceColor.b);\n\n super(shader, properties);\n }\n}\n\nexport class CADMaterial extends Material {\n constructor(properties) {\n const shader = new DefaultShader({\n backFaceCulling: false,\n writeObjectID: true,\n backFaceMode: appState.BM_FRONTFACE,\n fresnelAlpha: true,\n drawDepth: appState.getState(appState.GS_DRAW_DEPTH),\n monochromaticColor: true,\n });\n\n super(shader, properties);\n }\n}\n\nexport class CADEdgesMaterial extends Material {\n constructor(properties) {\n const EDGE_WIDTH = 2;\n\n const shader = new LineShader({\n antialiasing: true,\n lineWidth : EDGE_WIDTH,\n transparent : true,\n backFaceCulling: true,\n screenSpace : false,\n depthTest: true,\n });\n shader.setBlendEquation(blendEquation.FUNC_ADD, blendEquation.MAX);\n shader.enablePolygonOffset();\n shader.setPolygonOffset(-3,-3);\n\n super(shader, properties);\n }\n}\n\nexport function cleanupMaterialsResources() {\n _pbrResources = null;\n}\n\nfunction _initPbrResources() {\n if (_pbrResources === null) {\n _pbrResources = {\n initPromise: _loadPbrTextures(),\n\n irradiance: null,\n prefilter: null,\n brdf: null,\n };\n }\n\n return _pbrResources.initPromise;\n}\n\nasync function _loadPbrTextures() {\n const irradianceDescriptors = [\n {path: require(\"_assets/envMaps/irradiance_posx.png\"), target: cubeMapTarget.POSITIVE_X, image: null},\n {path: require(\"_assets/envMaps/irradiance_negx.png\"), target: cubeMapTarget.NEGATIVE_X, image: null},\n {path: require(\"_assets/envMaps/irradiance_posy.png\"), target: cubeMapTarget.POSITIVE_Y, image: null},\n {path: require(\"_assets/envMaps/irradiance_negy.png\"), target: cubeMapTarget.NEGATIVE_Y, image: null},\n {path: require(\"_assets/envMaps/irradiance_posz.png\"), target: cubeMapTarget.POSITIVE_Z, image: null},\n {path: require(\"_assets/envMaps/irradiance_negz.png\"), target: cubeMapTarget.NEGATIVE_Z, image: null},\n ];\n const irradiancePromises = [];\n for (const desc of irradianceDescriptors) {\n const promise = loader.load(desc.path, loader.IMAGE).then(image => {\n desc.image = image;\n }).catch(e => {\n output.warn(\"can't load irradiance map part: \" + e);\n });\n irradiancePromises.push(promise);\n }\n await Promise.allSettled(irradiancePromises);\n const anyIrradianceImageDesc = irradianceDescriptors.find(desc => desc.image);\n const irradianceTexture = bufferFactory.create(pixelBufferType.CM_RGBA,\n {\n width: anyIrradianceImageDesc ? anyIrradianceImageDesc.image.width : 1,\n height: anyIrradianceImageDesc ? anyIrradianceImageDesc.image.height : 1,\n });\n for (const desc of irradianceDescriptors) {\n if (!desc.image) continue;\n\n irradianceTexture.initMipMapLevelImage(0, desc.image, desc.target);\n }\n _pbrResources.irradiance = irradianceTexture;\n\n const MIPS_COUNT = 10;\n const prefilterDescriptors = [\n {path: require(\"_assets/envMaps/radiance_posx_0.png\"), target: cubeMapTarget.POSITIVE_X, level: 0, image: null},\n {path: require(\"_assets/envMaps/radiance_posx_1.png\"), target: cubeMapTarget.POSITIVE_X, level: 1, image: null},\n {path: require(\"_assets/envMaps/radiance_posx_2.png\"), target: cubeMapTarget.POSITIVE_X, level: 2, image: null},\n {path: require(\"_assets/envMaps/radiance_posx_3.png\"), target: cubeMapTarget.POSITIVE_X, level: 3, image: null},\n {path: require(\"_assets/envMaps/radiance_posx_4.png\"), target: cubeMapTarget.POSITIVE_X, level: 4, image: null},\n {path: require(\"_assets/envMaps/radiance_posx_5.png\"), target: cubeMapTarget.POSITIVE_X, level: 5, image: null},\n {path: require(\"_assets/envMaps/radiance_posx_6.png\"), target: cubeMapTarget.POSITIVE_X, level: 6, image: null},\n {path: require(\"_assets/envMaps/radiance_posx_7.png\"), target: cubeMapTarget.POSITIVE_X, level: 7, image: null},\n {path: require(\"_assets/envMaps/radiance_posx_8.png\"), target: cubeMapTarget.POSITIVE_X, level: 8, image: null},\n {path: require(\"_assets/envMaps/radiance_posx_9.png\"), target: cubeMapTarget.POSITIVE_X, level: 9, image: null},\n\n {path: require(\"_assets/envMaps/radiance_negx_0.png\"), target: cubeMapTarget.NEGATIVE_X, level: 0, image: null},\n {path: require(\"_assets/envMaps/radiance_negx_1.png\"), target: cubeMapTarget.NEGATIVE_X, level: 1, image: null},\n {path: require(\"_assets/envMaps/radiance_negx_2.png\"), target: cubeMapTarget.NEGATIVE_X, level: 2, image: null},\n {path: require(\"_assets/envMaps/radiance_negx_3.png\"), target: cubeMapTarget.NEGATIVE_X, level: 3, image: null},\n {path: require(\"_assets/envMaps/radiance_negx_4.png\"), target: cubeMapTarget.NEGATIVE_X, level: 4, image: null},\n {path: require(\"_assets/envMaps/radiance_negx_5.png\"), target: cubeMapTarget.NEGATIVE_X, level: 5, image: null},\n {path: require(\"_assets/envMaps/radiance_negx_6.png\"), target: cubeMapTarget.NEGATIVE_X, level: 6, image: null},\n {path: require(\"_assets/envMaps/radiance_negx_7.png\"), target: cubeMapTarget.NEGATIVE_X, level: 7, image: null},\n {path: require(\"_assets/envMaps/radiance_negx_8.png\"), target: cubeMapTarget.NEGATIVE_X, level: 8, image: null},\n {path: require(\"_assets/envMaps/radiance_negx_9.png\"), target: cubeMapTarget.NEGATIVE_X, level: 9, image: null},\n\n {path: require(\"_assets/envMaps/radiance_posy_0.png\"), target: cubeMapTarget.POSITIVE_Y, level: 0, image: null},\n {path: require(\"_assets/envMaps/radiance_posy_1.png\"), target: cubeMapTarget.POSITIVE_Y, level: 1, image: null},\n {path: require(\"_assets/envMaps/radiance_posy_2.png\"), target: cubeMapTarget.POSITIVE_Y, level: 2, image: null},\n {path: require(\"_assets/envMaps/radiance_posy_3.png\"), target: cubeMapTarget.POSITIVE_Y, level: 3, image: null},\n {path: require(\"_assets/envMaps/radiance_posy_4.png\"), target: cubeMapTarget.POSITIVE_Y, level: 4, image: null},\n {path: require(\"_assets/envMaps/radiance_posy_5.png\"), target: cubeMapTarget.POSITIVE_Y, level: 5, image: null},\n {path: require(\"_assets/envMaps/radiance_posy_6.png\"), target: cubeMapTarget.POSITIVE_Y, level: 6, image: null},\n {path: require(\"_assets/envMaps/radiance_posy_7.png\"), target: cubeMapTarget.POSITIVE_Y, level: 7, image: null},\n {path: require(\"_assets/envMaps/radiance_posy_8.png\"), target: cubeMapTarget.POSITIVE_Y, level: 8, image: null},\n {path: require(\"_assets/envMaps/radiance_posy_9.png\"), target: cubeMapTarget.POSITIVE_Y, level: 9, image: null},\n\n {path: require(\"_assets/envMaps/radiance_negy_0.png\"), target: cubeMapTarget.NEGATIVE_Y, level: 0, image: null},\n {path: require(\"_assets/envMaps/radiance_negy_1.png\"), target: cubeMapTarget.NEGATIVE_Y, level: 1, image: null},\n {path: require(\"_assets/envMaps/radiance_negy_2.png\"), target: cubeMapTarget.NEGATIVE_Y, level: 2, image: null},\n {path: require(\"_assets/envMaps/radiance_negy_3.png\"), target: cubeMapTarget.NEGATIVE_Y, level: 3, image: null},\n {path: require(\"_assets/envMaps/radiance_negy_4.png\"), target: cubeMapTarget.NEGATIVE_Y, level: 4, image: null},\n {path: require(\"_assets/envMaps/radiance_negy_5.png\"), target: cubeMapTarget.NEGATIVE_Y, level: 5, image: null},\n {path: require(\"_assets/envMaps/radiance_negy_6.png\"), target: cubeMapTarget.NEGATIVE_Y, level: 6, image: null},\n {path: require(\"_assets/envMaps/radiance_negy_7.png\"), target: cubeMapTarget.NEGATIVE_Y, level: 7, image: null},\n {path: require(\"_assets/envMaps/radiance_negy_8.png\"), target: cubeMapTarget.NEGATIVE_Y, level: 8, image: null},\n {path: require(\"_assets/envMaps/radiance_negy_9.png\"), target: cubeMapTarget.NEGATIVE_Y, level: 9, image: null},\n\n {path: require(\"_assets/envMaps/radiance_posz_0.png\"), target: cubeMapTarget.POSITIVE_Z, level: 0, image: null},\n {path: require(\"_assets/envMaps/radiance_posz_1.png\"), target: cubeMapTarget.POSITIVE_Z, level: 1, image: null},\n {path: require(\"_assets/envMaps/radiance_posz_2.png\"), target: cubeMapTarget.POSITIVE_Z, level: 2, image: null},\n {path: require(\"_assets/envMaps/radiance_posz_3.png\"), target: cubeMapTarget.POSITIVE_Z, level: 3, image: null},\n {path: require(\"_assets/envMaps/radiance_posz_4.png\"), target: cubeMapTarget.POSITIVE_Z, level: 4, image: null},\n {path: require(\"_assets/envMaps/radiance_posz_5.png\"), target: cubeMapTarget.POSITIVE_Z, level: 5, image: null},\n {path: require(\"_assets/envMaps/radiance_posz_6.png\"), target: cubeMapTarget.POSITIVE_Z, level: 6, image: null},\n {path: require(\"_assets/envMaps/radiance_posz_7.png\"), target: cubeMapTarget.POSITIVE_Z, level: 7, image: null},\n {path: require(\"_assets/envMaps/radiance_posz_8.png\"), target: cubeMapTarget.POSITIVE_Z, level: 8, image: null},\n {path: require(\"_assets/envMaps/radiance_posz_9.png\"), target: cubeMapTarget.POSITIVE_Z, level: 9, image: null},\n\n {path: require(\"_assets/envMaps/radiance_negz_0.png\"), target: cubeMapTarget.NEGATIVE_Z, level: 0, image: null},\n {path: require(\"_assets/envMaps/radiance_negz_1.png\"), target: cubeMapTarget.NEGATIVE_Z, level: 1, image: null},\n {path: require(\"_assets/envMaps/radiance_negz_2.png\"), target: cubeMapTarget.NEGATIVE_Z, level: 2, image: null},\n {path: require(\"_assets/envMaps/radiance_negz_3.png\"), target: cubeMapTarget.NEGATIVE_Z, level: 3, image: null},\n {path: require(\"_assets/envMaps/radiance_negz_4.png\"), target: cubeMapTarget.NEGATIVE_Z, level: 4, image: null},\n {path: require(\"_assets/envMaps/radiance_negz_5.png\"), target: cubeMapTarget.NEGATIVE_Z, level: 5, image: null},\n {path: require(\"_assets/envMaps/radiance_negz_6.png\"), target: cubeMapTarget.NEGATIVE_Z, level: 6, image: null},\n {path: require(\"_assets/envMaps/radiance_negz_7.png\"), target: cubeMapTarget.NEGATIVE_Z, level: 7, image: null},\n {path: require(\"_assets/envMaps/radiance_negz_8.png\"), target: cubeMapTarget.NEGATIVE_Z, level: 8, image: null},\n {path: require(\"_assets/envMaps/radiance_negz_9.png\"), target: cubeMapTarget.NEGATIVE_Z, level: 9, image: null},\n ];\n const prefilterPromises = [];\n for (const desc of prefilterDescriptors) {\n const promise = loader.load(desc.path, loader.IMAGE).then(image => {\n desc.image = image;\n }).catch(e => {\n output.warn(\"can't load prefilter map part: \" + e);\n });\n prefilterPromises.push(promise);\n }\n await Promise.allSettled(prefilterPromises);\n const anyPrefilterImageDesc = prefilterDescriptors.find(desc => desc.level === 0 && desc.image);\n const prefilterTexture = bufferFactory.create(pixelBufferType.CM_RGBA,\n {\n width: anyPrefilterImageDesc ? anyPrefilterImageDesc.image.width : 1,\n height: anyPrefilterImageDesc ? anyPrefilterImageDesc.image.height : 1,\n levels: MIPS_COUNT,\n minFilter: textureMinFilter.LINEAR_MIPMAP_LINEAR,\n });\n for (const desc of prefilterDescriptors) {\n if (!desc.image) continue;\n\n prefilterTexture.initMipMapLevelImage(desc.level, desc.image, desc.target);\n }\n _pbrResources.prefilter = prefilterTexture;\n\n const brdfLUTPath = require(\"_assets/envMaps/brdf.png\");\n const brdfLUTImage = await loader.load(brdfLUTPath, loader.IMAGE);\n const brdfLUTTexture = bufferFactory.create(pixelBufferType.T_RGBA,\n {\n width: brdfLUTImage ? brdfLUTImage.width : 1,\n height: brdfLUTImage ? brdfLUTImage.height : 1,\n immutable: true,\n });\n if (brdfLUTImage) {\n brdfLUTTexture.initMipMapLevelImage(0, brdfLUTImage);\n }\n _pbrResources.brdf = brdfLUTTexture;\n\n return _pbrResources;\n}\n","import { Hex, Path, StringDate, URL, Uuid } from '_data/types/base';\nimport { IAdditionalProjectInfo } from '_data/types/project';\n\nexport enum EShareProjectRole {\n OnlyView = 1,\n ViewAndDownload = 2,\n Edit = 3,\n Demo = 4,\n}\n\nexport type TEmbedSharingRoles = EShareProjectRole.OnlyView | EShareProjectRole.ViewAndDownload;\n\nexport enum ESharingKind {\n Project = 1,\n Objects = 2,\n}\n\nexport interface ISharedObject {\n id: string;\n uuid: Uuid;\n name: string;\n preview_presigned_url?: string;\n}\n\nexport interface IEmbeddedSharingStat {\n referrer: URL;\n views: number;\n downloads: number;\n}\n\nexport interface IEmbeddedSharingBriefInfo {\n id: number;\n uuid: Uuid;\n version_id: number;\n shared_object: ISharedObject;\n}\n\nexport interface ISharingLink {\n id: number;\n sharing_type: ESharingKind;\n role: EShareProjectRole;\n shared_objects: ISharedObject[];\n url: URL;\n}\n\nexport interface ISharingListItemProjectPathItem {\n id: number;\n name: string;\n slug: string | null;\n}\n\nexport enum ESharingListItemKind {\n SharingLink = 'SharingLink',\n EmbeddedSharing = 'EmbeddedSharing',\n}\n\ninterface ISharingsListItemBase {\n id: number;\n type: ESharingListItemKind;\n updated_at: StringDate;\n project: {\n id: number;\n version_id: number;\n slug: string;\n project_base: string;\n assets_path: Path;\n additional_info: IAdditionalProjectInfo;\n path: ISharingListItemProjectPathItem[];\n name: string;\n size: number;\n preview_presigned_url: URL;\n owner: boolean;\n };\n}\n\nexport interface ISharingLinkListItem extends ISharingsListItemBase {\n url: URL;\n role: EShareProjectRole;\n shared_objects: [ISharedObject];\n}\n\nexport interface IEmbeddedSharingListItem extends ISharingsListItemBase {\n role: TEmbedSharingRoles;\n uuid: Uuid;\n version_id: number;\n embedded_sharing_stats: IEmbeddedSharingStat[];\n shared_objects: [ISharedObject] | [ISharedObject, ISharedObject];\n}\n\nexport type ISharingListItem = ISharingLinkListItem | IEmbeddedSharingListItem;\n\nenum ESharedProjectRole {\n Edit = 1,\n ReadOnly = 2,\n}\n\nexport enum EInviteStatus {\n Confirmed = 1,\n Pending = 2,\n}\n\nexport interface IShareUser {\n id?: number;\n full_name?: string;\n slug?: string;\n avatar?: URL;\n email: string;\n project_role: ESharedProjectRole;\n invite_status: EInviteStatus;\n deleted_at: StringDate;\n shared_objects: Uuid[];\n sharing_type: ESharingKind;\n role: EShareProjectRole;\n back_color?: Hex;\n}\n\nexport interface IEmbededSharing {\n id: number;\n uuid: Uuid;\n version_id: number;\n role: TEmbedSharingRoles;\n shared_objects: [ISharedObject] | [ISharedObject, ISharedObject];\n}\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = /*@__PURE__*/ getSymbolIterator();\nexport var $$iterator = iterator;\n//# sourceMappingURL=iterator.js.map\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function hostReportError(err) {\n setTimeout(function () { throw err; }, 0);\n}\n//# sourceMappingURL=hostReportError.js.map\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import {MAX_UINT32_ELEMS, pixelBufferType} from \"_src/engine/constants\";\nimport minmaxUtils from \"_src/engine/utility/minmax\";\nimport { colorUtils } from \"_src/utils\";\nimport {colorType, objectType} from \"_src/constants\";\nimport appState from \"_src/app_state\";\nimport config from \"_src/config\";\nimport bufferFactory from \"_src/engine/factories/pixel_buffer\";\nimport output from \"_src/engine/output\";\nimport GroupableWrapper from \"_src/groupable_wrapper\";\n\nconst _minmaxTmp = new Array(6);\nconst _minmaxTmp2 = new Array(6);\n\nexport default class ObjectWrapper extends GroupableWrapper {\n\n constructor(params) {\n super(params);\n if (params.type !== undefined) this.type = params.type;\n this.model = params.model !== undefined ? params.model : null;\n //NOTE: it's a hack for the 6th format\n this.shouldUseTexture = params.usetexture !== undefined ? params.usetexture : false;\n\n this.frames = [];\n this.geometryLevel = null;\n\n this.stateFlags = 0;\n\n this.hasKeyFrames = false;\n this._framesTemporaryTexture = null;\n }\n\n getLockState() {\n return false;\n //feature is disabled before cloud implementation\n //return this._selfPropertyGetter(\"locked\");\n }\n\n setLockState(locked) {\n this._selfPropertySetter(\"locked\", locked);\n }\n\n getScannerType() {\n return this._selfPropertyGetter(\"scannertype\");\n }\n\n getDeviceSerial() {\n return this._selfPropertyGetter(\"deviceserial\");\n }\n\n copyLocalMinmax(minmax) {\n minmaxUtils.copy(this.getLocalMinmax(), minmax);\n }\n\n copyWorldMinmax(minmax) {\n minmaxUtils.copy(this.getWorldMinmax(), minmax);\n }\n\n getWorldMinmax() {\n return this.model.minmaxWorld;\n }\n\n getLocalMinmax() {\n return this.model.minmaxLocal;\n }\n\n expandWorldMinMax(minmax) {\n minmaxUtils.expandMinmax(this.getWorldMinmax(), minmax);\n }\n\n expandLocalMinMax(minmax) {\n minmaxUtils.expandMinmax(this.getLocalMinmax(), minmax);\n }\n\n loadData(property, level = 0) {\n\n this.geometryLevel = level;\n this.model.setSelectionEnabled(false);\n this.loaded = false;\n\n return this._loadFrames(property, level);\n\n }\n\n setState(mask, value) {\n this.stateFlags = value ? this.stateFlags | mask : this.stateFlags & (MAX_UINT32_ELEMS ^ mask);\n }\n\n getState(mask) {\n return Boolean(this.stateFlags & mask);\n }\n\n _loadFrames(properties, level) {\n\n const promises = [];\n\n for (const frame of this.frames) {\n const frameProperty = properties.find(property => property.getValue(\"id\") === frame.getID());\n if (!frameProperty) {\n output.error(output.DEVELOPERS_ERROR, \"Can't find frame \" + frame.getID() + \" in project sjson\");\n continue;\n }\n promises.push(this._processFrameLoading(frame, frameProperty, level));\n }\n\n return Promise.all(promises);\n\n }\n\n updateFramesTemporaryTextures() {\n\n if (!this.hasTextures()) {\n return;\n }\n\n this._initFramesTemporaryTexture();\n for (const frame of this.frames) {\n if (frame.textureList.length == 0) {\n this.setFrameTemporaryTexture(frame);\n }\n }\n\n }\n\n _initFramesTemporaryTexture() {\n const textureColor = this.type == objectType.FUSION ?\n colorUtils.linToSRGB(this.getColor(), new Array(3)) : this.getColor();\n const scanColorTextureBuffer = new Uint8Array([...textureColor.map(colorUtils.floatToByte), 255]);\n\n this._framesTemporaryTexture = bufferFactory.create(pixelBufferType.T_RGBA,\n {\n width: 1,\n height: 1,\n immutable: true,\n });\n this._framesTemporaryTexture.initMipMapLevelBuffer(0, scanColorTextureBuffer);\n }\n\n setFrameTemporaryTexture(frame) {\n if (!this._framesTemporaryTexture) {\n this._initFramesTemporaryTexture();\n }\n\n const currentTexture = this.model.textures[0];\n if (currentTexture && (currentTexture !== this._framesTemporaryTexture)) {\n currentTexture.cleanup();\n }\n\n frame.model.textures[0] = this._framesTemporaryTexture;\n frame.model.properties.enableLinearColorSpace = true;\n }\n\n _unsetFrameTemporaryTexture(frame) {\n if (frame.model.textures[0] === this._framesTemporaryTexture) {\n frame.model.textures.length = 0;\n }\n }\n\n async _processFrameLoading(frame, property, level) {\n frame.cacheID = this.getID() + \"_\" + this.type + \"_\" + this.geometryLevel + \"_\" + frame.getID();\n const isGeometryLoading = frame.checkIsGeometryLoading();\n const promises = [];\n\n if (frame.shouldBeLoaded) {\n\n if (this.hasTextures() && !frame.texturesLoaded && !frame.texturePromise) {\n this.setFrameTemporaryTexture(frame);\n if (config.viewOnlyMode) {\n await frame.loadTexture();\n } else {\n promises.push(frame.loadTexture());\n }\n this.updateTextureUsage();\n }\n\n if (!frame.loaded) {\n\n if (isGeometryLoading) {\n promises.push(frame.getGeometryLoadingPromise());\n } else {\n promises.push(frame.loadGeometry(property, this.id, level));\n }\n\n }\n\n }\n\n await Promise.all(promises);\n }\n\n checkNeedsLoadFrames() {\n for (const frame of this.frames) {\n if(frame.shouldBeLoaded && !frame.loaded) {\n return true;\n }\n }\n return false;\n }\n\n unloadMarkedFrames() {\n for (const frame of this.frames) {\n if (!frame.shouldBeLoaded) {\n if (frame.checkIsGeometryLoading()) {\n frame.abortLoading(this);\n } else if (frame.loaded) {\n this._unsetFrameTemporaryTexture(frame);\n frame.unloadData();\n frame.unloadTextures();\n }\n }\n }\n }\n\n async unloadData() {\n for (let i = 0; i < this.frames.length; ++i) {\n\n const frame = this.frames[i];\n frame.abortLoading(this);\n await frame.unloadData();\n frame.unloadTextures();\n frame.shouldBeLoaded = false;\n\n }\n // NOTE: do not call this before frame loop cleanup because of\n // fusion's frame has the same model as itself\n this.model.cleanup();\n this.stateFlags = 0;\n\n this.loaded = false;\n\n }\n\n addFrame(frame) {\n this.frames.push(frame);\n\n this._recalculateHasKeyFrames();\n\n this.expandWorldMinMax(frame.getWorldMinmax());\n this.expandLocalMinMax(frame.getLocalMinmax());\n frame.setVisibility(this.getVisibility());\n }\n\n removeFrame(frameToDelete) {\n frameToDelete.abortLoading(this);\n frameToDelete.unloadData();\n frameToDelete.unloadTextures();\n frameToDelete.cleanup();\n\n this.frames.splice(this.frames.indexOf(frameToDelete), 1);\n\n const localMinmax = minmaxUtils.reset(_minmaxTmp);\n const worldMinmax = minmaxUtils.reset(_minmaxTmp2);\n for (const frame of this.frames) {\n const frameMinmax = minmaxUtils.recomputedFromRotated([], frame.getLocalMinmax(), frame.model.localMatrix);\n minmaxUtils.expandMinmax(localMinmax, frameMinmax);\n minmaxUtils.expandMinmax(worldMinmax, frame.getWorldMinmax());\n }\n\n minmaxUtils.copy(this.getLocalMinmax(), localMinmax);\n minmaxUtils.copy(this.getWorldMinmax(), worldMinmax);\n\n this._recalculateHasKeyFrames();\n }\n\n getAllLoadedDrawables() {\n const drawables = [];\n\n for (const frame of this.frames) {\n if (frame.loaded) {\n drawables.push(frame.model);\n }\n }\n\n return drawables;\n }\n\n copyTranslation(trans) {\n this.model.copyTranslation(trans);\n }\n\n copyRotation(quat) {\n this.model.copyRotation(quat);\n }\n\n copyScale(scale) {\n this.model.copyScale(scale);\n }\n\n setVisibility(visible) {\n super.setVisibility(visible);\n for (let i = 0; i < this.frames.length; ++i) {\n this.frames[i].setVisibility(visible);\n }\n\n this.model.setVisibility(visible);\n }\n\n hasTextures() {\n\n if (this.frames.length === 0) {\n return this.shouldUseTexture;\n }\n\n for (const frame of this.frames) {\n if (frame.textureList.length) {\n return true;\n }\n }\n\n return false;\n\n }\n\n isDistanceMapAttached() {\n if (this.frames.length === 0) {\n return false;\n }\n\n let has = false;\n for (const chunk of this.frames[0].model.chunks) {\n if (chunk.geometry && chunk.geometry.hasLayoutItem(\"a_distance\")) {\n has = true;\n break;\n }\n }\n\n return has;\n }\n\n hasVertexColor() {\n if (this.frames.length === 0) {\n return false;\n }\n\n let has = false;\n for (const chunk of this.frames[0].model.chunks) {\n if (chunk.geometry && chunk.geometry.hasLayoutItem(\"a_color\")) {\n has = true;\n break;\n }\n }\n\n return has;\n }\n\n resolveColorMode(colorRequested) {\n if (this.isDistanceMapAttached()) return colorType.DISTANCE_MAP;\n if (!colorRequested) return colorType.UNIFORM;\n if (this.hasVertexColor()) return colorType.BUFFER;\n if (!this.hasTextures()) return colorType.UNIFORM;\n if (this.type === objectType.FUSION) return colorType.TEXTURE_UV;\n if (this.type === objectType.SCAN) return colorType.TEXTURE_PROJECTION;\n\n return colorType.UNIFORM;\n }\n\n applyObjectColorToFrames() {\n\n const color = this.getColor();\n for (let i = 0; i < this.frames.length; ++i) {\n this.frames[i].model.setDiffuseColor(...color);\n }\n\n }\n\n applyTemporaryColorToFrames(color) {\n for (let i = 0; i < this.frames.length; ++i) {\n this.frames[i].model.setDiffuseColor(...color);\n }\n }\n\n applyUniqueColorToFrames() {\n\n for (let i = 0; i < this.frames.length; ++i) {\n\n const frame = this.frames[i];\n const model = frame.model;\n model.setDiffuseColor(...frame.getColor());\n\n }\n\n }\n\n setColor(r, g, b) {\n super.setColor(r, g, b);\n for (const frame of this.frames) {\n frame.model.setDiffuseColor(r, g, b);\n }\n }\n\n setOpacity(opacity) {\n this.model.setOpacity(opacity);\n for (let child of this.model.getChildren()) {\n child.setOpacity(opacity);\n }\n }\n\n move(matrix, withPropertyUpdate = false) {\n this.model.setMatrix(matrix);\n if (withPropertyUpdate) this._selfPropertySetter(\"transform\", matrix);\n }\n\n applyMaxErrorColorToFrames() {\n\n const colorTmp = new Array(3);\n\n const scanner = this.getScannerType();\n\n if (this.type === objectType.SCAN) {\n\n for (const frame of this.frames) {\n const [r, g, b] = colorUtils.getErrorColor(frame.getRegError(), scanner, colorTmp);\n frame.model.setDiffuseColor(r, g, b);\n }\n\n } else {\n for (const frame of this.frames) {\n const {r, g, b} = config.maxErrorFusionColor;\n frame.model.setDiffuseColor(r, g, b);\n }\n }\n\n }\n\n hideNonTexturedFrames() {\n\n const frames = this.frames;\n\n for (let i = 0; i < frames.length; ++i) {\n\n const frame = frames[i];\n\n if (!frame.textureList.length) {\n frame.setVisibility(false);\n }\n\n }\n\n }\n\n hideAllFrames() {\n for (const frame of this.frames) {\n frame.setVisibility(false);\n }\n }\n\n showNonTexturedFrames() {\n for (const frame of this.frames) {\n if (!frame.textureList.length) {\n frame.setVisibility(true);\n }\n }\n }\n\n showKeyFrames() {\n for (const frame of this.frames) {\n if (frame.isKeyFrame()) {\n frame.setVisibility(true);\n }\n }\n }\n\n recalcWorldMinmax() {\n\n this.model.updateMatrix();\n\n const frames = this.frames;\n const promises = [];\n\n for (let frame of frames) {\n if (frame.loaded) {\n promises.push(frame.calculateBoundings());\n }\n }\n\n return Promise.all(promises).then((worldMinmaxs) => {\n\n if (worldMinmaxs.length === 0) {\n return this.getWorldMinmax();\n }\n\n if (frames.length === 0) {\n minmaxUtils.zero(this.getWorldMinmax());\n return this.getWorldMinmax();\n }\n\n const minmax = minmaxUtils.reset(_minmaxTmp);\n\n for (let worldMinmax of worldMinmaxs) {\n minmaxUtils.expandMinmax(minmax, worldMinmax);\n }\n\n minmaxUtils.copy(this.getWorldMinmax(), minmax);\n\n return minmax;\n\n });\n\n }\n\n _recalculateHasKeyFrames() {\n\n this.hasKeyFrames = false;\n\n if (this.type === objectType.FUSION) {\n this.hasKeyFrames = true;\n return this.hasKeyFrames;\n }\n\n for (const frame of this.frames) {\n if (frame.isKeyFrame()) {\n this.hasKeyFrames = true;\n return this.hasKeyFrames;\n }\n }\n\n return this.hasKeyFrames;\n\n }\n\n updateTextureUsage(textureRequested = appState.getStateValue(\"colorMode\") === appState.CM_TEXTURE) {\n const colorMode = this.resolveColorMode(textureRequested);\n this.model.setColorMode(colorMode);\n\n if (this.type === objectType.SURFELS) {\n const textureUsed = colorMode !== colorType.UNIFORM;\n for (let frame of this.frames) {\n const reflectivity = textureUsed ? config.textureReflectivity : config.diffuseReflectivity;\n frame.model.setReflectivity(reflectivity);\n }\n } else {\n this.updateColorSpace(textureRequested);\n }\n }\n\n updateColorSpace(textureRequested) {\n const textureUsed = textureRequested && this.hasTextures();\n\n for (const frame of this.frames) {\n const frameTextureUsed = textureUsed && frame.hasTextures();\n const reflectivity = frameTextureUsed ? config.textureReflectivity : config.diffuseReflectivity;\n\n if (frameTextureUsed && !frame.texturesLoaded) {\n continue;\n }\n\n frame.model.setReflectivity(reflectivity);\n\n frame.model.properties.enableLambertDiffuse = frameTextureUsed;\n frame.model.properties.enableColorCorrection = frameTextureUsed;\n }\n }\n\n cleanup() {\n for (let frame of this.frames) {\n this._unsetFrameTemporaryTexture(frame);\n frame.cleanup();\n }\n\n if (this._framesTemporaryTexture) {\n this._framesTemporaryTexture.cleanup();\n this._framesTemporaryTexture = null;\n }\n }\n\n}\n","import output from \"_src/engine/output\";\n\nlet _cache = null;\nexport default {\n async init() {\n const cacheAvailable = \"caches\" in global;\n if (!cacheAvailable) {\n output.warn( \"Can't initialize cache: api is not supported by the platform\");\n return;\n }\n\n try {\n const cache = await caches.open(\"artec-web-studio\");\n _cache = cache;\n } catch (error) {\n output.warn( \"Can't initialize cache. \" + error);\n }\n },\n\n put(id, data) {\n if (!_cache) return;\n\n const response = new Response(data, {\"status\" : 200});\n _cache.put(id, response);\n },\n\n async extract(id) {\n if (!_cache) return;\n const fileReader = new FileReader();\n\n const response = await _cache.match(id);\n if (!response) {\n output.error(output.STORAGE_ERROR, \"Can't extract object from cache. No response with id:\" + id);\n return;\n }\n const blob = await response.blob();\n return new Promise((resolve) => {\n fileReader.onload = () => {\n resolve(fileReader.result);\n };\n\n fileReader.readAsArrayBuffer(blob);\n });\n },\n\n delete(id) {\n if (!_cache) return;\n\n _cache.delete(id);\n },\n\n isAvailable() {\n return Boolean(_cache);\n }\n}\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable(function (subscriber) { return subscriber.error(error); });\n }\n else {\n return new Observable(function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); });\n }\n}\nfunction dispatch(_a) {\n var error = _a.error, subscriber = _a.subscriber;\n subscriber.error(error);\n}\n//# sourceMappingURL=throwError.js.map\n","import output from \"_src/engine/output\";\nimport {DEFAULT_ATTRIBUTES, DEFAULT_NO_INDICES_ATTRIBUTES} from \"_src/engine/utility/attributes\";\n\nimport appState from \"_src/app_state\";\nimport {DEPENDENT_BUFFER_NAMES, Geometry, GeometryBuffer} from \"_src/engine/geometry\";\nimport config from \"_src/config\";\n\nlet _db = null;\n\nlet _initPromise = null;\n\nexport default {\n\n async init() {\n\n const promise = new Promise((resolve, reject) => {\n\n const indexedDB = _getDataBase();\n\n if (!indexedDB) {\n reject();\n }\n\n const openRequest = indexedDB.open(\"webstudio_store\", 10);\n\n openRequest.onupgradeneeded = () => {\n _db = openRequest.result;\n _db.createObjectStore(\"ws_cached_data\");\n };\n\n openRequest.onerror = () => {\n reject(openRequest.error);\n };\n\n openRequest.onsuccess = () => {\n\n _db = openRequest.result;\n\n _db.onerror = function(e) {\n output.error(output.STORAGE_ERROR, e.target.error.message);\n };\n\n _initPromise = null;\n resolve();\n };\n\n });\n\n _initPromise = promise;\n\n try {\n await promise;\n return true;\n } catch (error) {\n output.error(output.STORAGE_ERROR, \"Can't initialize cache: \" + error);\n return false;\n }\n\n },\n\n putFrameData(frame) {\n\n const chunks = frame.model.chunks;\n const batch = {};\n\n let chunksCounter = 0;\n\n for (let i = 0; i < chunks.length; ++i) {\n\n const chunk = chunks[i];\n\n if (chunk.isEmpty()) {\n continue;\n }\n\n const geometry = chunk.geometry;\n const layout = geometry.getLayout();\n\n const positions = geometry.getItemBuffer(\"a_position\");\n if (!positions) {\n continue;\n }\n\n const chunkData = {\n attributes : {},\n bbox : geometry.bbox,\n };\n\n const savingAttributes = geometry.isPointCloud ? DEFAULT_NO_INDICES_ATTRIBUTES : DEFAULT_ATTRIBUTES;\n for (const name of savingAttributes) {\n if (name in layout) {\n const attr = layout[name];\n chunkData.attributes[name] = {\n buffer : attr.buffer.slice(),\n type : attr.type\n };\n }\n }\n\n const key = frame.cacheID + \"_\" + chunk.getID();\n batch[key] = chunkData;\n\n ++chunksCounter;\n\n }\n\n if (chunksCounter > 0) {\n appState.setStateValue(\"cachingObjectsNumber\", 1);\n return _putPackage(batch).then(() => {\n appState.setStateValue(\"cachingObjectsNumber\", -1);\n });\n } else {\n return null;\n }\n\n },\n\n async getFrameData(frame) {\n const keys = [];\n const ids = [];\n\n for (const chunk of frame.model.chunks) {\n if (chunk.geometry) {\n continue;\n }\n keys.push(frame.cacheID + \"_\" + chunk.getID());\n ids.push(chunk.getID());\n }\n\n try {\n const batch = await _getPackage(keys);\n\n for (let i = 0; i < batch.length; ++i) {\n const chunkData = batch[i];\n if (!chunkData) return false;\n const chunk = frame.getChunkByID(ids[i]);\n\n const layout = {};\n const attributes = chunkData.attributes;\n\n for (let name in attributes) {\n const buffer = attributes[name].buffer;\n const type = attributes[name].type;\n layout[name] = new GeometryBuffer({ buffer : buffer, type : type });\n if (config.viewOnlyMode && !DEPENDENT_BUFFER_NAMES.includes(name)) {\n layout[name].scheduleUnload();\n }\n }\n\n const geometry = new Geometry({\n bbox : chunkData.bbox,\n layout : layout,\n });\n\n frame.model.setChunkGeometry(chunk, geometry);\n frame.model.updateChunkBBox(chunk);\n chunk.updateSelectionMask();\n }\n } catch (error) {\n output.error(output.STORAGE_ERROR, \"Can't get buffer from cache: \" + error);\n return false;\n }\n\n frame.loaded = true;\n return true;\n },\n\n async cleanup() {\n await _clearDataBase(_db, \"ws_cached_data\");\n },\n\n}\n\nfunction _getDataBase() {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n}\n\nfunction _clearDataBase(db, name) {\n return new Promise((resolve, reject) => {\n\n const transaction = db.transaction(name, \"readwrite\");\n const storage = transaction.objectStore(name);\n\n const request = storage.getAllKeys();\n\n request.onsuccess = () => {\n\n const keyList = request.result;\n\n const promises = [];\n for (let key of keyList) {\n const promise = new Promise((resolve, reject) => {\n const deleteRequest = storage.delete(key);\n deleteRequest.onsuccess = () => {\n resolve();\n };\n deleteRequest.onerror = () => {\n reject(deleteRequest.error);\n };\n });\n promises.push(promise);\n }\n Promise.all(promises).then(() => {\n resolve();\n }).catch(() => {\n reject();\n });\n };\n\n request.onerror = () => {\n reject(request.error);\n };\n });\n}\n\nasync function _getPackage(keys) {\n if (_initPromise) {\n await _initPromise;\n }\n\n return new Promise((resolve, reject) => {\n\n const transaction = _db.transaction([\"ws_cached_data\"], \"readonly\");\n const storage = transaction.objectStore(\"ws_cached_data\");\n\n const result = [];\n\n for (let i = 0; i < keys.length; ++i) {\n\n const key = keys[i];\n const request = storage.get(key);\n\n request.onsuccess = function() {\n result[i] = request.result;\n };\n\n request.onerror = function() {\n result[i] = null;\n };\n\n }\n\n transaction.oncomplete = function() {\n resolve(result);\n };\n\n transaction.onerror = function() {\n reject(\"Couldn't get data from disk.\");\n };\n\n });\n}\n\nasync function _putPackage(batch) {\n if (_initPromise) {\n await _initPromise;\n }\n\n return new Promise((resolve, reject) => {\n\n const transaction = _db.transaction([\"ws_cached_data\"], \"readwrite\");\n const storage = transaction.objectStore(\"ws_cached_data\");\n\n for (let key in batch) {\n storage.put(batch[key], key);\n }\n\n transaction.oncomplete = function() {\n resolve();\n };\n\n transaction.onerror = function() {\n reject(\"Couldn't put data on disk.\");\n };\n\n });\n}\n\n/*\nasync function _put(binary, key) {\n if (_initPromise) {\n await _initPromise;\n }\n\n return new Promise((resolve, reject) => {\n\n const transaction = _db.transaction([\"ws_cached_data\"], \"readwrite\");\n const storage = transaction.objectStore(\"ws_cached_data\");\n\n const request = storage.put(binary, key);\n\n request.onsuccess = function() {\n resolve();\n };\n\n request.onerror = function() {\n reject(\"Couldn't put data on disk.\");\n };\n\n });\n}\n\nfunction _putChunkData(chunk, key) {\n if (chunk.isEmpty()) {\n return Promise.resolve();\n }\n\n const geometry = chunk.geometry;\n const layout = geometry.getLayout();\n\n const positions = geometry.getItemBuffer(\"a_position\");\n const indices = geometry.getItemBuffer(\"indices\");\n\n if (!positions || !indices) {\n return Promise.resolve();\n }\n\n const chunkData = {\n attributes : {},\n bbox : geometry.bbox,\n };\n\n for (let name of DEFAULT_ATTRIBUTES) {\n if (name in layout) {\n const attr = layout[name];\n chunkData.attributes[name] = {\n buffer : attr.buffer.slice(),\n type : attr.type\n };\n }\n }\n\n return _put(chunkData, key);\n}\n\nasync function _add(binary, key) {\n if (_initPromise) {\n await _initPromise;\n }\n\n return new Promise((resolve, reject) => {\n\n const transaction = _db.transaction(\"ws_cached_data\", \"readwrite\");\n const storage = transaction.objectStore(\"ws_cached_data\");\n\n const request = storage.add(binary, key);\n\n request.onsuccess = function() {\n resolve();\n };\n\n request.onerror = function() {\n reject(request.error);\n };\n\n });\n}\n\nasync function _deletePackage(keys) {\n if (_initPromise) {\n await _initPromise;\n }\n\n return new Promise((resolve, reject) => {\n\n const transaction = _db.transaction([\"ws_cached_data\"], \"readwrite\");\n const storage = transaction.objectStore(\"ws_cached_data\");\n\n const result = [];\n\n for (let i = 0; i < keys.length; ++i) {\n storage.delete(keys[i]);\n }\n\n transaction.oncomplete = function() {\n resolve(result);\n };\n\n transaction.onerror = function() {\n reject(\"Couldn't delete data from disk.\");\n };\n\n });\n}\n\nasync function _get(key) {\n if (_initPromise) {\n await _initPromise;\n }\n\n return new Promise((resolve, reject) => {\n\n const transaction = _db.transaction(\"ws_cached_data\", \"readonly\");\n const storage = transaction.objectStore(\"ws_cached_data\");\n\n const request = storage.get(key);\n\n request.onsuccess = function() {\n resolve(request.result);\n };\n\n request.onerror = function() {\n reject(\"Couldn't get data from disk.\");\n };\n\n });\n}\n\nasync function _getAllKeys() {\n if (_initPromise) {\n await _initPromise;\n }\n\n return new Promise((resolve, reject) => {\n\n const transaction = _db.transaction(\"ws_cached_data\", \"readonly\");\n const storage = transaction.objectStore(\"ws_cached_data\");\n\n const request = storage.getAllKeys();\n\n request.onsuccess = function() {\n resolve(request.result);\n };\n\n request.onerror = function() {\n reject(request.error);\n };\n\n });\n}\n\nfunction _checkExists(key) {\n return _getAllKeys().then((keys) => {\n return keys.indexOf(key) != -1;\n });\n}\n\nasync function _delete(key) {\n if (_initPromise) {\n await _initPromise;\n }\n\n return new Promise((resolve, reject) => {\n\n const transaction = _db.transaction(\"ws_cached_data\", \"readwrite\");\n const storage = transaction.objectStore(\"ws_cached_data\");\n\n const request = storage.delete(key);\n\n request.onsuccess = function() {\n resolve();\n };\n\n request.onerror = function() {\n reject(request.error);\n };\n\n });\n}\n*/\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","import {\n DEFAULT_ATTRIBUTES,\n getAttributeIDByName,\n getAttributeNameByID,\n getTypeByID,\n getTypedArrayByID\n} from \"_src/engine/utility/attributes\";\nimport arrayTools from \"_src/engine/utility/arrays\";\n\nexport function readChunk(bufferSource, decoder = null) {\n\n const result = {\n \"type\" : -1,\n \"status\" : -1,\n \"indices\" : null,\n \"a_position\" : null,\n \"a_normal\" : null,\n \"a_uv\" : null,\n \"a_color\" : null\n };\n\n const uint8Data = new Uint8Array(bufferSource);\n\n let byteOffset = 0;\n\n // NOTE: https://confluence.artec-group.com:4432/pages/viewpage.action?pageId=39419976\n const compressionFormatSize = 4;\n const structureVersionSize = 2;\n const attrsCountOffset = 2;\n\n byteOffset += compressionFormatSize + structureVersionSize;\n\n const uint16AttrData = new Uint16Array(uint8Data.buffer, byteOffset, 1);\n const attrsCounter = uint16AttrData[0];\n\n byteOffset += attrsCountOffset;\n\n // metadata\n const metadataUint32Size = 3 * attrsCounter;\n const metadata = new Uint32Array(uint8Data.buffer, byteOffset, metadataUint32Size);\n\n byteOffset += metadataUint32Size * Uint32Array.BYTES_PER_ELEMENT;\n\n for (let i = 0; i < metadata.length; i += 3) {\n\n const id = metadata[i];\n\n const byteSize = metadata[i + 1];\n const compByteSize = metadata[i + 2];\n\n const attributeName = getAttributeNameByID(id);\n\n if (byteSize) {\n\n const compAttribute = new Uint8Array(uint8Data.buffer, byteOffset, compByteSize);\n const uint8Attribute = decoder ? decoder.decompress(compAttribute) : compAttribute.slice();\n byteOffset += compByteSize;\n\n let bufferType = getTypeByID(id);\n const typedArray = getTypedArrayByID(id);\n let bufferData = new typedArray(uint8Attribute.buffer);\n\n if (attributeName === \"indices\") {\n [bufferType, bufferData] = fixIndicesBuffer(bufferType, bufferData);\n }\n\n result[attributeName] = {\n type : bufferType,\n buffer : bufferData,\n };\n\n }\n\n }\n\n return result;\n\n}\n\nexport function writeChunk(data, encoderType = \"pln \", encoder = null) {\n\n const result = {\n \"type\" : -1,\n \"status\" : -1,\n \"arrayBuffer\" : null\n };\n\n const compressedBuffers = {};\n\n // NOTE: https://confluence.artec-group.com:4432/pages/viewpage.action?pageId=39419976\n const encoderNameByteSize = 4;\n const versionByteSize = 2;\n const attrsNumByteSize = 2;\n const attributeMetaByteSize = 12;\n const attributeMetaSize = attributeMetaByteSize / Uint32Array.BYTES_PER_ELEMENT\n\n const compressionLevel = data.level || 5;\n\n let numAttributes = 0;\n let metadataByteSize = 8;\n let buffersByteSize = 0;\n\n for (let i = 0; i < DEFAULT_ATTRIBUTES.length; ++i) {\n\n const attrName = DEFAULT_ATTRIBUTES[i];\n const attributeBuffer = data[attrName];\n if (!attributeBuffer) {\n continue;\n }\n\n // we need this to send buffers back to the main thread\n result[attrName] = attributeBuffer;\n\n ++numAttributes;\n metadataByteSize += attributeMetaByteSize;\n\n const uint8Buffer = new Uint8Array(attributeBuffer.buffer);\n const compressedBuffer = encoder ? encoder.compress(uint8Buffer, compressionLevel) : uint8Buffer.slice();\n buffersByteSize += compressedBuffer.buffer.byteLength;\n compressedBuffers[attrName] = compressedBuffer;\n\n }\n\n const packedData = new Uint8Array(metadataByteSize + buffersByteSize);\n\n let offset = metadataByteSize;\n let metaOffset = 0;\n\n const dataType = new Uint8Array(packedData.buffer, metaOffset, encoderNameByteSize);\n dataType[0] = encoderType.charCodeAt(0);\n dataType[1] = encoderType.charCodeAt(1);\n dataType[2] = encoderType.charCodeAt(2);\n dataType[3] = encoderType.charCodeAt(3);\n metaOffset += encoderNameByteSize;\n\n const version = new Uint16Array(packedData.buffer, metaOffset, 1);\n version[0] = 1;\n metaOffset += versionByteSize;\n\n const numAttrsBuff = new Uint16Array(packedData.buffer, metaOffset, 1);\n numAttrsBuff[0] = numAttributes;\n metaOffset += attrsNumByteSize;\n\n for (let i = 0; i < DEFAULT_ATTRIBUTES.length; ++i) {\n\n const attrName = DEFAULT_ATTRIBUTES[i];\n let compressedBuffer = compressedBuffers[attrName];\n if (!compressedBuffer) {\n continue;\n }\n\n const byteSizeCompressed = compressedBuffer.buffer.byteLength;\n const byteSize = result[attrName].buffer.byteLength;\n\n const attributeBuffer = data[attrName];\n const id = getAttributeIDByName(attrName, attributeBuffer);\n\n packedData.set(compressedBuffer, offset);\n fillAttributeMetaData(packedData.buffer, metaOffset, byteSize, byteSizeCompressed, id, attributeMetaSize);\n offset += byteSizeCompressed;\n metaOffset += attributeMetaByteSize;\n\n }\n\n result[\"arrayBuffer\"] = packedData;\n\n return result;\n\n}\n\nfunction fillAttributeMetaData(buffer, offset, byteSize, byteSizeCompressed, id, attributeMetaSize) {\n const descrition = new Uint32Array(buffer, offset, attributeMetaSize);\n descrition[0] = id;\n descrition[1] = byteSize;\n descrition[2] = byteSizeCompressed;\n}\n\nfunction fixIndicesBuffer(type, data) {\n const maxVal = data.reduce((a, b) => { return Math.max(a, b) });\n const realType = arrayTools.uintArrayTypeByMaxValue(maxVal);\n if (data instanceof realType) {\n return [type, data];\n } else {\n const castedData = arrayTools.createUintArrayByValueData(maxVal, data);\n const castedType = arrayTools.uintArrayType(castedData);\n return [castedType, castedData];\n }\n}\n","/** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\nimport { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var async = /*@__PURE__*/ new AsyncScheduler(AsyncAction);\n//# sourceMappingURL=async.js.map\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","import Shader from \"_src/engine/shader\";\nimport Uniform from \"_src/engine/uniform\";\nimport { vec4 } from \"_src/libs/gl-matrix\";\nimport { uniformType, uniformSource } from \"_src/engine/constants\";\n\nimport vertText from \"_src/shaders/outline/outline.glslv\";\nimport fragText from \"_src/shaders/outline/outline.glslf\";\n\nexport default class OutlineShader extends Shader {\n\n constructor(params = {}) {\n\n super(params);\n\n this.attachUniforms(params);\n\n }\n\n //reimplementation\n initDirectives(params) {\n this._directives[\"OUTLINE_ONLY\"] = params.outlineOnly !== undefined ? params.outlineOnly : true;\n this._directives[\"HALF_WIDTH\"] = params.width !== undefined ? Math.round(params.width) : 1;\n }\n\n compile() {\n super.compile(vertText, fragText);\n }\n\n updateObjectUniformValues(object) {\n vec4.copy(this.uniforms[\"u_diffuse\"].value, object.properties.diffuseColor);\n }\n\n attachUniforms() {\n\n const diffuseColor = vec4.fromValues(0.8, 0.8, 0.8, 1.0);\n const texelSize = new Float32Array(2);\n\n this.uniforms[\"u_diffuse\"] = new Uniform(uniformType.FLOAT4V, diffuseColor, uniformSource.OBJECT);\n\n this.uniforms[\"u_texel_size\"] = new Uniform(uniformType.FLOAT2V, texelSize, uniformSource.SCENE);\n\n this.uniforms[\"u_text_stencil\"] = new Uniform(uniformType.INT1, 0);\n\n }\n\n updateSceneUniformValues(scene) {\n this.uniforms[\"u_texel_size\"].value[0] = scene.texelSize[0];\n this.uniforms[\"u_texel_size\"].value[1] = scene.texelSize[1];\n }\n\n}\n","import events from \"_src/engine/events\";\n\nconst STATE_LOW = 0;\nconst STATE_MID = 1;\nconst STATE_HIGH = 2;\nlet _loadingSpeedState = STATE_MID;\nlet _FPSSTate = STATE_MID;\n\nconst LOADING_TIME_UPPER_THR = 60; //seconds\nconst LOADING_TIME_LOWER_THR = 5; //seconds\nconst FPS_UPPER_THR = 55;\nconst FPS_LOWER_THR = 10;\n\nlet _loadsCount = 0;\nlet _highSpeedReportEnabled = false;\n\nexport default {\n setHighSpeedReportEnabled(enabled) {\n _highSpeedReportEnabled = enabled;\n },\n\n registerLoadingObject() {\n _loadsCount++;\n },\n\n unregisterLoadingObject() {\n _loadsCount--;\n },\n\n reportFrameTime: (function() {\n let currentTime = 0;\n let currentFramesCount = 0;\n const fpsMeasurements = [];\n const AVERAGE_PERIOD = 10;\n return function (time) {\n currentFramesCount++;\n currentTime += time;\n if (currentTime > 1) {\n const fpsMeasurement = currentFramesCount;\n fpsMeasurements.push(fpsMeasurement);\n currentTime = 0;\n currentFramesCount = 0;\n }\n\n if (fpsMeasurements.length > AVERAGE_PERIOD) {\n const sum = fpsMeasurements.reduce((a, b) => a + b, 0);\n const avg = (sum / fpsMeasurements.length) || 0;\n\n if (avg > FPS_UPPER_THR) {\n _FPSSTate = STATE_HIGH;\n } else if (avg < FPS_LOWER_THR) {\n _FPSSTate = STATE_LOW;\n } else {\n _FPSSTate = STATE_MID;\n }\n\n fpsMeasurements.shift();\n }\n\n }\n })(),\n\n update(time) {\n _updateLoadingSpeedState(time);\n _generateReport();\n }\n}\n\nconst _updateLoadingSpeedState = (() => {\n let isHighSpeedTracked = false;\n let loadStart = null;\n return function (time) {\n if (_loadsCount > 0) {\n if (loadStart === null) {\n loadStart = time;\n isHighSpeedTracked = _highSpeedReportEnabled;\n } else {\n if (time - loadStart > LOADING_TIME_UPPER_THR) {\n _loadingSpeedState = STATE_LOW;\n } else {\n _loadingSpeedState = STATE_MID;\n }\n }\n } else {\n if (loadStart !== null) {\n if (isHighSpeedTracked && (time - loadStart < LOADING_TIME_LOWER_THR)) {\n _loadingSpeedState = STATE_HIGH;\n return;\n }\n loadStart = null;\n }\n }\n }\n})();\n\nconst _generateReport = (() => {\n let lastReportedState = STATE_MID;\n return function () {\n const slowLoadingCondition = _loadingSpeedState === STATE_LOW;\n const fastLoadingCondition = _loadingSpeedState === STATE_HIGH && _loadsCount === 0;\n const lowFPSCondition = _FPSSTate === STATE_LOW;\n const highFPSCondition = _FPSSTate === STATE_HIGH && _loadsCount === 0;\n\n if (slowLoadingCondition || lowFPSCondition) {\n if (lastReportedState !== STATE_LOW) {\n events.emit(\"lowPerformance\");\n lastReportedState = STATE_LOW;\n }\n } else if (fastLoadingCondition && highFPSCondition) {\n if (lastReportedState !== STATE_HIGH) {\n events.emit(\"highPerformance\");\n lastReportedState = STATE_HIGH;\n }\n } else {\n lastReportedState = STATE_MID;\n }\n }\n})();\n","export function extendSerializer(extend, implementation) {\n const fallbackDeserializer = extend.deserialize.bind(extend);\n const fallbackSerializer = extend.serialize.bind(extend);\n return {\n deserialize(message) {\n return implementation.deserialize(message, fallbackDeserializer);\n },\n serialize(input) {\n return implementation.serialize(input, fallbackSerializer);\n }\n };\n}\nconst DefaultErrorSerializer = {\n deserialize(message) {\n return Object.assign(Error(message.message), {\n name: message.name,\n stack: message.stack\n });\n },\n serialize(error) {\n return {\n __error_marker: \"$$error\",\n message: error.message,\n name: error.name,\n stack: error.stack\n };\n }\n};\nconst isSerializedError = (thing) => thing && typeof thing === \"object\" && \"__error_marker\" in thing && thing.__error_marker === \"$$error\";\nexport const DefaultSerializer = {\n deserialize(message) {\n if (isSerializedError(message)) {\n return DefaultErrorSerializer.deserialize(message);\n }\n else {\n return message;\n }\n },\n serialize(input) {\n if (input instanceof Error) {\n return DefaultErrorSerializer.serialize(input);\n }\n else {\n return input;\n }\n }\n};\n","import { extendSerializer, DefaultSerializer } from \"./serializers\";\nlet registeredSerializer = DefaultSerializer;\nexport function registerSerializer(serializer) {\n registeredSerializer = extendSerializer(registeredSerializer, serializer);\n}\nexport function deserialize(message) {\n return registeredSerializer.deserialize(message);\n}\nexport function serialize(input) {\n return registeredSerializer.serialize(input);\n}\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","import events from \"_src/engine/events\";\nimport workspace from \"_src/workspace\";\n\nlet _status = null;\nexport default {\n\n init() {\n _status = {};\n\n for (const object of workspace.getObjects()) {\n _status[object.getID()] = {0: _getObjectStatus(object)};\n }\n\n for (const photoGroup of workspace.getPhotoGroups()) {\n _status[photoGroup.getID()] = {0: _getPhotoGroupStatus(photoGroup)};\n }\n\n _reportStatus();\n },\n\n updateObjectStatus(object, level) {\n _status[object.getID()][level] = _getObjectStatus(object);\n _reportStatus();\n },\n\n updatePhotoGroupStatus(photoGroup) {\n _status[photoGroup.getID()][0] = _getPhotoGroupStatus(photoGroup);\n _reportStatus();\n },\n\n cleanup() {\n _status = null;\n }\n\n};\n\nfunction _getObjectStatus(object) {\n let chunksCount = 0;\n let chunksLoaded = 0;\n for (const frame of object.frames) {\n if (!frame.shouldBeLoaded) continue;\n\n chunksCount += frame.model.chunks.length;\n chunksLoaded += frame.model.chunks.filter(chunk => !chunk.needsReload).length;\n }\n\n return chunksCount > 0 ? Math.floor(100 * chunksLoaded / chunksCount) : 0;\n}\n\nfunction _getPhotoGroupStatus(photoGroup) {\n const photosCount = photoGroup.photos.size;\n let photosLoaded = 0;\n for (const photo of photoGroup.photos.values()) {\n if (photo.mip) photosLoaded++;\n }\n\n return photosCount > 0 ? Math.floor(100 * photosLoaded / photosCount) : 0;\n}\n\nfunction _reportStatus() {\n events.emit(\"loadingProgress\", _status);\n}\n","import output from \"_src/engine/output\";\nimport events from \"_src/engine/events\";\nimport intersectEvaluator from \"_src/engine/intersect_evaluator\";\nimport { easingType, cameraType, geometry } from \"_src/engine/constants\";\n\nimport {vec3, vec4, quat, mat4} from \"_src/libs/gl-matrix\";\n\nimport { calcOrthoCameraProjection, getPositionByMinmax, calcOrthoCameraFrustum } from \"_src/utils\";\nimport utils from \"_src/client/controls/utils\";\nimport CameraControl from \"_src/client/controls/camera_control\";\n\nconst ZOOM_TO_CURSOR = true;\n\nconst _vec3Tmp = vec3.create();\nconst _vec3Tmp2 = vec3.create();\nconst _vec3Tmp3 = vec3.create();\n\nconst _quatTmp = quat.create();\n\nexport default class TargetControl extends CameraControl {\n\n constructor(object) {\n super(object);\n\n this.target = vec3.create();\n this.dist = 10;\n this.minDist = 0.5;\n\n this.horAngle = 0;\n this.vertAngle = 0;\n\n this.direction = vec3.create();\n this.upVec = geometry.AXIS_Z;\n\n this.isUpsideDown = false;\n this.upsideDownSign = 1;\n\n this.prevTouchX = -1;\n this.prevTouchY = -1;\n this.prevTouchesDist = -1;\n this.prevTouchesCenter = new Float32Array([-1, -1]);\n\n this.updateUpsideDown();\n const trans = this._getObjectTrans();\n this.setPosition(trans);\n }\n\n setPosition(trans) {\n\n if (!this.enabled) {\n return;\n }\n\n this.updateUpsideDown();\n this._updateDirection(trans);\n\n const [horAngle, vertAngle] = utils.anglesFromViewOriented(this.direction);\n\n const distance = vec3.distance(this.target, trans);\n\n this.setAngles(horAngle, vertAngle);\n\n this.setDistance(distance);\n\n }\n\n updatePosition() {\n const object = this.object;\n\n if (!this.enabled) {\n return;\n }\n\n utils.perspectiveTransFromTargetAngles(this.horAngle, this.vertAngle, this.target, this.dist, object.trans);\n\n object.copyTranslation(object.trans);\n\n events.emit(\"camera_move\", object);\n\n }\n\n updateRotation() {\n const object = this.object;\n\n if (!this.enabled) {\n return;\n }\n\n const trans = this._getObjectTrans();\n this._updateDirection(trans);\n\n const objX = this._getObjectRight(_vec3Tmp, this.horAngle);\n const objY = vec3.cross(_vec3Tmp2, objX, this.direction);\n\n quat.setAxes(object.quat, this.direction, objX, objY);\n quat.conjugate(object.quat, object.quat);\n object.copyRotation(object.quat);\n\n events.emit(\"camera_move\", object);\n\n }\n\n setDistance(dist) {\n this.dist = dist;\n this.updatePosition();\n }\n\n setCriticalDistance(dist) {\n this.minDist = dist;\n }\n\n zoom(delta, cameraX, cameraY) {\n\n if (!this.enabled) {\n return;\n }\n\n if (ZOOM_TO_CURSOR && this.object.isCamera) {\n\n this._zoomCameraToCursor(delta, cameraX, cameraY);\n\n } else {\n\n this.dist *= 1.0 + delta;\n\n if (this.dist < this.minDist) {\n this.dist = this.minDist;\n }\n\n }\n\n this.object.top *= 1.0 + 0.5 * delta;\n this.object.bottom *= 1.0 + 0.5 * delta;\n\n this.updatePosition();\n\n events.emit(\"control_zoom\", this.object);\n\n }\n\n setAngles(hor, vert) {\n this.horAngle = hor;\n this.vertAngle = vert;\n this.updatePosition();\n }\n\n setTarget() {}\n startRotation() {}\n rotate() {}\n setTargetVisibility() {}\n\n endRotation() {\n\n if (!this.enabled) {\n return;\n }\n\n const trans = this._getObjectTrans();\n this._updateDirection(trans)\n this.updateUpsideDown();\n }\n\n lookAt(x, y, z) {\n\n vec3.set(this.target, x, y, z);\n\n const trans = this._getObjectTrans();\n this.dist = vec3.distance(this.target, trans);\n this._updateDirection(trans);\n\n this.updateUpsideDown();\n\n }\n\n updateUpsideDown() {\n this.isUpsideDown = utils.checkIsUpsideDown(this.object.quat, this.upVec);\n this.upsideDownSign = this.isUpsideDown ? -1 : 1;\n }\n\n setDefaultPosition(sceneBBox) {\n\n const savedEnableState = this.enabled;\n this.enabled = true;\n\n const coordZ = utils.calculateBBoxOptimalDistance(sceneBBox, this.object);\n\n this.lookAt(0.5 * (sceneBBox[0] + sceneBBox[3]),\n 0.5 * (sceneBBox[1] + sceneBBox[4]),\n 0.5 * (sceneBBox[2] + sceneBBox[5]));\n this.setDistance(coordZ);\n\n const {width, height} = calcOrthoCameraProjection(this.object, this.target);\n this.object.top = height;\n this.object.bottom = -height;\n this.object.right = width;\n this.object.left = -width;\n\n this.updateRotation();\n\n this.enabled = savedEnableState;\n\n }\n\n setProjectionType(type, gridCamera, onStart, onUpdate, onFinish, time) {\n\n const object = this.object;\n\n if (object.type == type) {\n return;\n }\n\n const startProjMat = mat4.create();\n const finalMatrix = mat4.create();\n\n const startGridMat = mat4.create();\n const finalGridMatrix = mat4.create();\n\n const {width, height} = calcOrthoCameraProjection(object, this.target);\n\n switch (type) {\n case cameraType.PERSPECTIVE:\n this._animation.type = easingType.IN_EXPO;\n\n object.near = Math.max(0.1, object.near);\n\n object.calculatePerspectiveProjMat(finalMatrix);\n object.calculateOrthoProjMat(startProjMat);\n\n gridCamera.calculatePerspectiveProjMat(finalGridMatrix);\n gridCamera.calculateOrthoProjMat(startGridMat);\n break;\n case cameraType.ORTHO:\n this._animation.type = easingType.OUT_EXPO;\n\n object.top = height;\n object.bottom = -height;\n object.right = width;\n object.left = -width;\n\n gridCamera.top = height;\n gridCamera.bottom = -height;\n gridCamera.right = width;\n gridCamera.left = -width;\n\n object.calculateOrthoProjMat(finalMatrix);\n object.calculatePerspectiveProjMat(startProjMat);\n\n gridCamera.calculateOrthoProjMat(finalGridMatrix);\n gridCamera.calculatePerspectiveProjMat(startGridMat);\n break;\n }\n\n const workspaceDelta = mat4.subtract(mat4.create(), finalMatrix, startProjMat);\n const gridDelta = mat4.subtract(mat4.create(), finalGridMatrix, startGridMat);\n const tmpMat4 = mat4.create();\n\n this._animation.setOnUpdate((value) => {\n\n const current = mat4.multiplyScalarAndAdd(tmpMat4, startProjMat, workspaceDelta, value);\n object.setProjectionMatrix(current);\n\n const gridCurrent = mat4.multiplyScalarAndAdd(tmpMat4, startGridMat, gridDelta, value);\n gridCamera.setProjectionMatrix(gridCurrent);\n\n events.emit(\"update_grid\");\n onUpdate();\n\n });\n\n this._animation.setOnFinish(() => {\n\n object.setType(type);\n // NOTE: it needs to recalculate near-far here and force querry tests\n events.emit(\"camera_move\", object);\n onFinish();\n\n });\n\n onStart();\n\n this._animation.start(0, 1, time);\n\n }\n\n moveToMinmax(minmax, rect, animation, onStart, onUpdate, onFinish, time = 0.2, target = null) {\n\n const object = this.object;\n\n if (!this.enabled) {\n return;\n }\n\n const startTarget = vec3.clone(this.target);\n const center = vec3.fromValues(0.5 * (minmax[0] + minmax[3]),\n 0.5 * (minmax[1] + minmax[4]),\n 0.5 * (minmax[2] + minmax[5]));\n const startPosition = vec3.copy(vec3.create(), object.trans);\n const finalPosition = getPositionByMinmax(object.quat, object.fov, object.aspect, minmax, rect, center, vec3.create());\n\n const invView = vec3.fromValues(0, 0, 1);\n vec3.transformQuat(invView, invView, object.quat);\n const targetPlane = vec4.fromValues(invView[0], invView[1], invView[2], -vec3.dot(invView, center));\n const targetPlainPoint = vec3.create();\n intersectEvaluator.rayPlaneIntersection(targetPlane, finalPosition, invView, targetPlainPoint);\n const finalTarget = target ? target : targetPlainPoint;\n\n const startHeight = object.top;\n const {height, width} = calcOrthoCameraFrustum(object.quat, minmax, rect);\n const finalHeight = height * object.aspect > width ? height : width / object.aspect;\n\n animation.setOnUpdate((value) => {\n\n vec3.lerp(this.target, startTarget, finalTarget, value);\n vec3.lerp(object.trans, startPosition, finalPosition, value);\n\n const height = startHeight + value * (finalHeight - startHeight);\n const width = height * object.aspect;\n\n object.top = height;\n object.bottom = -height;\n object.right = width;\n object.left = -width;\n\n this.setPosition(object.trans);\n\n onUpdate(value);\n\n });\n\n animation.setOnFinish(() => {\n\n vec3.copy(this.target, finalTarget);\n this.setPosition(finalPosition);\n\n object.top = finalHeight;\n object.bottom = -finalHeight;\n object.right = finalHeight * object.aspect;\n object.left = -finalHeight * object.aspect;\n\n onFinish();\n\n });\n\n animation.type = easingType.IN_OUT_SINE;\n\n animation.start(0, 1, time);\n\n }\n\n _updateDirection(trans) {\n vec3.sub(this.direction, this.target, trans);\n vec3.normalize(this.direction, this.direction);\n }\n\n _zoomCameraToCursor(delta, cameraX, cameraY) {\n\n const object = this.object;\n const rayToCursor = _vec3Tmp;\n\n const dist = vec3.distance(object.trans, this.target);\n const step = 0.5 * dist * (-delta);\n\n if (object.isPerspective()) {\n object._calculateRayPersp(cameraX, cameraY, rayToCursor);\n vec3.scale(rayToCursor, rayToCursor, step);\n } else if (object.isOrtho()) {\n const dw = 0.5 * cameraX * object.right * (-delta);\n const dh = 0.5 * cameraY * object.top * (-delta);\n\n vec3.set(rayToCursor, dw, dh, -step);\n vec3.transformQuat(rayToCursor, rayToCursor, object.quat);\n } else {\n output.error(\"Coudn't zoom to cursor: incorrect camera type.\");\n return -1;\n }\n\n const newPosition = vec3.add(_vec3Tmp2, object.trans, rayToCursor);\n object.copyTranslation(newPosition);\n\n this._updateDirection(object.trans);\n\n const [horAngle, vertAngle] = utils.anglesFromView(this.direction);\n this.horAngle = horAngle;\n this.vertAngle = vertAngle;\n\n this.dist = vec3.distance(object.trans, this.target);\n\n }\n\n _getObjectRight(dst, horAngle) {\n const quatHor = quat.setAxisAngle(_quatTmp, this.upVec, horAngle);\n vec3.transformQuat(dst, geometry.AXIS_MX, quatHor);\n const sign = this.isUpsideDown ? -1 : 1;\n vec3.scale(dst, dst, sign);\n return utils.toReference(dst);\n }\n\n _getObjectTrans() {\n return vec3.copy(_vec3Tmp3, this.object.trans);\n }\n\n}\n","import {vec3, quat} from \"_src/libs/gl-matrix\";\n\nimport TargetControl from \"_src/client/controls/target_control\";\nimport utils from \"_src/client/controls/utils\";\nimport {RotationIndicator} from \"_src/client/widgets/rotation_indicator\";\n\nconst _vec3Tmp = vec3.create();\nconst _vec3Tmp2 = vec3.create();\nconst _vec3Tmp3 = vec3.create();\n\nconst _quatTmp = quat.create();\n\nexport default class TrackballControl extends TargetControl {\n\n constructor(object) {\n\n super(object);\n\n this.trackVec = vec3.create();\n this.trackCursor = [0, 0];\n this.originQuat = quat.create();\n this.rotationStarted = false;\n this.rotationIndicatorWidget = new RotationIndicator(object);\n }\n\n updateRotationIndicator() {\n this.rotationIndicatorWidget.update();\n }\n\n registerRotationIndicator(scene) {\n this.rotationIndicatorWidget.register(scene);\n }\n\n unregisterRotationIndicator(scene) {\n this.rotationIndicatorWidget.unregister(scene);\n }\n\n lookAt(x, y, z) {\n super.lookAt(x,y,z);\n this.rotationIndicatorWidget.setVisibility(false);\n }\n\n setTargetVisibility(visibility) {\n this.rotationIndicatorWidget.setVisibility(visibility);\n }\n\n setTarget(point) {\n\n if (!this.enabled) {\n return;\n }\n\n const trans = this._getObjectTrans();\n const direction = vec3.sub(_vec3Tmp, point, trans);\n const dist = vec3.length(direction);\n vec3.scale(direction, direction, 1.0 / dist);\n\n vec3.copy(this.target, point);\n this.rotationIndicatorWidget.move(point);\n\n const camPos = vec3.copy(vec3.create(), trans);\n this.setPosition(camPos);\n\n }\n\n startRotation(x, y) {\n\n const object = this.object;\n\n if (!this.enabled) {\n return;\n }\n\n this.trackCursor[0] = x;\n this.trackCursor[1] = y;\n\n calcTrackballVec(x, y, object.aspect, this.trackVec);\n quat.copy(this.originQuat, object.quat);\n\n const trans = this._getObjectTrans();\n\n vec3.subtract(this.direction, this.target, trans);\n vec3.normalize(this.direction, this.direction);\n\n this.rotationStarted = true;\n\n }\n\n rotate(dx, dy) {\n\n if(!this.rotationStarted) {\n return;\n }\n\n const object = this.object;\n\n if (!this.enabled) {\n return;\n }\n\n const x = this.trackCursor[0] + dx;\n const y = this.trackCursor[1] + dy;\n\n const newTrack = calcTrackballVec(x, y, object.aspect, _vec3Tmp);\n\n const delta = vec3.sub(_vec3Tmp2, newTrack, this.trackVec);\n let si = vec3.length(delta) / 2.0;\n\n const axis = vec3.cross(_vec3Tmp3, newTrack, this.trackVec);\n const phi = si * 0.5 * Math.PI;\n\n vec3.normalize(axis, axis);\n\n const rotationView = quat.setAxisAngle(_quatTmp, axis, phi);\n quat.normalize(rotationView, rotationView);\n\n object.copyRotation(quat.multiply(object.quat, this.originQuat, rotationView));\n\n const rotationWorld = quat.conjugate(_quatTmp, this.originQuat);\n quat.multiply(rotationWorld, object.quat, rotationWorld);\n const toTarget = vec3.transformQuat(_vec3Tmp, this.direction, rotationWorld);\n\n const [horAngle, vertAngle] = utils.anglesFromView(toTarget);\n\n this.horAngle = horAngle;\n this.vertAngle = vertAngle;\n\n this.trackCursor[0] = x;\n this.trackCursor[1] = y;\n\n this.updatePosition();\n\n }\n\n pan(dX, dY) {\n const object = this.object;\n\n if (!this.enabled) {\n return;\n }\n\n let objX = vec3.set(_vec3Tmp, 1, 0, 0);\n vec3.transformQuat(objX, objX, object.quat);\n\n const objMY = vec3.cross(_vec3Tmp2, this.direction, objX);\n\n const c = 0.05;\n vec3.scale(objX, objX, -dX * this.dist * c);\n vec3.scale(objMY, objMY, -dY * this.dist * c);\n\n const objTrans = this._getObjectTrans();\n const trans = vec3.add(_vec3Tmp, objX, objMY);\n\n const resultTrans = vec3.add(trans, objTrans, trans);\n\n this._updateDirection(resultTrans);\n\n const [horAngle, vertAngle] = utils.anglesFromView(this.direction);\n this.horAngle = horAngle;\n this.vertAngle = vertAngle;\n\n this.dist = vec3.distance(resultTrans, this.target);\n\n this.updatePosition();\n }\n\n endRotation() {\n\n super.endRotation();\n\n this.rotationStarted = false;\n\n }\n\n moveToMinmax(minmax, rect, animation, onStart, onUpdate, onFinish, time = 0.2) {\n\n if (!this.enabled) {\n return;\n }\n\n this.rotationIndicatorWidget.setVisibility(false);\n\n const target = vec3.fromValues(0.5 * (minmax[0] + minmax[3]),\n 0.5 * (minmax[1] + minmax[4]),\n 0.5 * (minmax[2] + minmax[5]));\n\n super.moveToMinmax(minmax, rect, animation, onStart, onUpdate, onFinish, time, target);\n\n }\n\n}\n\nfunction calcTrackballVec(x, y, aspect, out) {\n\n out[0] = x * aspect;\n out[1] = y;\n out[2] = 0;\n\n const radius = 1;\n\n const d = vec3.dot(out, out);\n if (d < 0.5) {\n out[2] = Math.sqrt(radius * radius - d);\n } else {\n out[2] = 0.5 / Math.sqrt(d);\n }\n\n return out;\n\n}","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import Object3D from \"_src/engine/object\";\nimport Chunk from \"_src/engine/chunk\";\nimport { ChunkInDrawable } from \"_src/engine/chunk\";\nimport {cullingFrontFace, drawQueryState, memoryType} from \"_src/engine/constants\";\nimport GL from \"_src/engine/gl\";\nimport extensions from \"_src/engine/extensions\";\nimport minmaxUtils from \"_src/engine/utility/minmax\";\nimport output from \"_src/engine/output.js\";\n\nimport {vec3, vec4, quat, mat4} from \"_src/libs/gl-matrix\";\nimport memoryProfiler from \"_src/engine/memory_profiler\";\nimport DefaultShader from \"_src/shaders/default/default_shader\";\n\nconst _VEC3_TMP = vec3.create();\nconst _VEC4_TMP = vec4.create();\nconst _VEC4_TMP2 = vec4.create();\n\nconst _MAT4_TMP = mat4.create();\n\nexport default class Drawable extends Object3D {\n\n constructor(shader) {\n\n super();\n\n this.isDrawable = true;\n this.shader = shader;\n\n this.chunks = [];\n this.importedModelsForInstancing = [];\n\n this.properties = {\n diffuseColor: new Float32Array([0.8, 0.8, 0.8, 1.0]),\n enableColorCorrection: false,\n enableLinearColorSpace: false,\n enableLambertDiffuse: false,\n reflectivity: new Float32Array([0.5, 0.5, 0.0]),\n };\n\n this.calculateMinmax = false;\n this.minmaxLocal = new Array(6);\n this.minmaxWorld = new Array(6);\n\n minmaxUtils.reset(this.minmaxLocal);\n minmaxUtils.reset(this.minmaxWorld);\n\n this.textures = [];\n\n this._chunkProperties = new WeakMap();\n this.isHidden = false;\n\n }\n\n addGeometryChunk(geometry) {\n\n const chunk = new Chunk();\n\n this.chunks.push(chunk);\n this._chunkProperties.set(chunk, new ChunkInDrawable());\n this.setChunkGeometry(chunk, geometry);\n this.updateChunkBBox(chunk);\n\n }\n\n addChunk(chunk) {\n\n this.chunks.push(chunk);\n this._chunkProperties.set(chunk, new ChunkInDrawable());\n\n if (!chunk.isEmpty()) {\n this.updateChunkBBox(chunk);\n }\n\n const sceneOwner = this.getRootNode();\n if (sceneOwner) {\n chunk.requestMemoryUsageReport(sceneOwner);\n }\n\n }\n\n setChunkGeometry(chunk, geometryBuffer) {\n const sceneOwner = this.getRootNode();\n\n if (chunk.geometry && chunk.geometry != geometryBuffer) {\n chunk.reportMemoryRelease();\n chunk.geometry.releaseMemory();\n chunk.geometry.terminateDataBuilding();\n }\n\n chunk.geometry = geometryBuffer;\n\n const layout = chunk.geometry.getLayout();\n for (let attrName in layout) {\n chunk.markAttributeDirty(attrName);\n }\n\n this._chunkProperties.get(chunk).activeShaderProgram = null;\n\n if (sceneOwner) {\n chunk.requestMemoryUsageReport(sceneOwner);\n }\n\n }\n\n importModelsForInstancing(modelsArray) {\n this.reportImportedAttributesRelease();\n this.importedModelsForInstancing = modelsArray;\n\n for (const chunk of this.chunks) {\n this._chunkProperties.get(chunk).activeShaderProgram = null;\n }\n }\n\n getWorldMatrix(matrix) {\n\n mat4.copy(matrix, this.modelMatrix);\n\n let parent = this._parent;\n\n while (parent) {\n\n mat4.multiply(matrix, parent.modelMatrix, matrix);\n\n parent = parent._parent ? parent._parent : null;\n\n }\n\n return matrix;\n\n }\n\n getChunk(id) {\n\n for (let i = 0; i < this.chunks.length; ++i) {\n\n if (this.chunks[i].id == id) {\n return this.chunks[i];\n }\n\n }\n\n return null;\n\n }\n\n setShader(shader) {\n this.shader = shader;\n }\n\n setTexture(texture, slot) {\n const sceneOwner = this.getRootNode();\n\n const oldTexture = this.textures[slot];\n if (oldTexture && sceneOwner) {\n memoryProfiler.markMemoryReleased(oldTexture.pixelBuffer, sceneOwner);\n }\n\n this.textures[slot] = texture;\n\n if (sceneOwner) {\n memoryProfiler.markMemoryAllocated(texture.pixelBuffer, memoryType.GPU_TEXTURES, texture.width * texture.height * 4, sceneOwner);\n }\n\n }\n\n cleanupTextures() {\n const sceneOwner = this.getRootNode();\n\n for (const texture of this.textures) {\n if (sceneOwner) {\n memoryProfiler.markMemoryReleased(texture.pixelBuffer, sceneOwner);\n }\n texture.cleanup();\n }\n\n this.textures.length = 0;\n\n }\n\n castRay(origin, direction, dest) {\n\n const chunks = this.chunks;\n\n const originLocal = _VEC4_TMP;\n const directionLocal = _VEC4_TMP2;\n\n vec4.set(directionLocal, direction[0], direction[1], direction[2], 0);\n vec4.set(originLocal, origin[0], origin[1], origin[2], 1);\n\n const toLocalMat4 = mat4.invert(_MAT4_TMP, this.modelMatrix);\n\n if (!toLocalMat4) {\n output.error(output.DEVELOPERS_ERROR, \"Couldn't invert model matrix \" + mat4.str(this.modelMatrix) + \". \" +\n \"Position: \" + vec3.str(this.trans) + \". \" +\n \"Rotation: \" + quat.str(this.quat) + \". \" +\n \"Scale: \" + vec3.str(this.scale) + \". \");\n return false;\n }\n\n vec4.transformMat4(originLocal, originLocal, toLocalMat4);\n vec4.transformMat4(directionLocal, directionLocal, toLocalMat4);\n\n let sqrDist = Infinity;\n\n let hitted = false;\n\n for (let i = 0; i < chunks.length; ++i) {\n\n const geometry = chunks[i].geometry;\n const hitPoint = _VEC3_TMP;\n\n if (geometry.castRay(originLocal, directionLocal, hitPoint) < 0) {\n continue;\n }\n\n hitted = true;\n\n const dist = vec3.squaredDistance(hitPoint, originLocal);\n\n if (dist < sqrDist) {\n sqrDist = dist;\n vec3.copy(dest, hitPoint);\n }\n\n }\n\n if (hitted) {\n vec3.transformMat4(dest, dest, this.modelMatrix);\n }\n\n return hitted;\n\n }\n\n reportMemoryUsage() {\n const sceneOwner = this.getRootNode();\n\n for (const chunk of this.chunks) {\n chunk.requestMemoryUsageReport(sceneOwner);\n }\n\n for (const texture of this.textures) {\n memoryProfiler.markMemoryAllocated(texture.pixelBuffer, memoryType.GPU_TEXTURES, texture.width * texture.height * 4, sceneOwner);\n }\n\n }\n\n reportMemoryRelease() {\n const sceneOwner = this.getRootNode();\n\n for (const chunk of this.chunks) {\n chunk.reportMemoryReleaseFromOwner(sceneOwner);\n }\n\n for (const texture of this.textures) {\n memoryProfiler.markMemoryReleased(texture.pixelBuffer, sceneOwner);\n }\n\n this.reportImportedAttributesRelease();\n }\n\n hide() {\n this.isHidden = true;\n }\n\n show() {\n this.isHidden = false;\n }\n\n setVisibility(visible) {\n this.isHidden = !visible;\n }\n\n checkIsHidden() {\n return this.isHidden;\n }\n\n isEmpty() {\n return this.chunks.length == 0;\n }\n\n setDrawMode(mode) {\n for (let i = 0; i < this.chunks.length; ++i) {\n this.chunks[i].setDrawMode(mode);\n }\n }\n\n setDiffuseColor(r, g, b) {\n this.properties.diffuseColor[0] = r;\n this.properties.diffuseColor[1] = g;\n this.properties.diffuseColor[2] = b;\n }\n\n setOpacity(opacity) {\n this.properties.diffuseColor[3] = opacity;\n }\n\n getOpacity() {\n return this.properties.diffuseColor[3];\n }\n\n setReflectivity(reflectivity) {\n vec3.copy(this.properties.reflectivity, reflectivity);\n }\n\n setupTextures() {\n\n if (this.textures.length) {\n GL.setupTextures(this.textures);\n }\n\n }\n\n updateMatrix() {\n\n const needsMatUpdate = this.checkNeedsMatUpdate();\n\n super.updateMatrix();\n\n if (needsMatUpdate) {\n this.updateChunksWorldBoundings();\n }\n\n }\n\n updateChunksWorldBoundings() {\n\n for (let i = 0; i < this.chunks.length; ++i) {\n\n if (!this.chunks[i].isEmpty()) {\n this.updateChunkBBox(this.chunks[i]);\n }\n\n }\n\n }\n\n setFrustrumCulling(enabled) {\n\n for (let i = 0; i < this.chunks.length; ++i) {\n this.chunks[i].enableFrustumTest = enabled;\n }\n\n }\n\n updateBounding() {\n\n this.updateMatrix();\n\n minmaxUtils.reset(this.minmaxWorld);\n minmaxUtils.reset(this.minmaxLocal);\n\n for (const chunk of this.chunks) {\n\n const geometry = chunk.geometry;\n const positions = geometry.getItemBuffer(\"a_position\");\n\n if (!positions) {\n continue;\n }\n\n for (let i = 0; i < positions.length; i += 3) {\n const vertex = vec3.set(_VEC3_TMP, positions[i], positions[i + 1], positions[i + 2]);\n\n minmaxUtils.expandPoint(this.minmaxLocal, vertex);\n vec3.transformMat4(vertex, vertex, this.modelMatrix);\n minmaxUtils.expandPoint(this.minmaxWorld, vertex);\n }\n\n }\n\n for (const child of this._children) {\n if (!child.isDrawable) continue;\n\n child.updateBounding();\n minmaxUtils.expandMinmax(this.minmaxWorld, child.minmaxWorld);\n minmaxUtils.expandMinmax(this.minmaxLocal, child.minmaxLocal);\n }\n\n }\n\n _updateVAO(chunk) {\n\n const VAOExtension = extensions.get(\"OES_vertex_array_object\");\n\n if (VAOExtension) {\n\n const gl = GL.getContext();\n\n let vao = VAOExtension.createVertexArray();\n VAOExtension.bindVertexArray(vao);\n\n const chunkProperties = this._chunkProperties.get(chunk);\n const attributesMap = chunkProperties.attributesMap;\n\n chunk.attachBuffers(gl, attributesMap);\n\n VAOExtension.bindVertexArray(null);\n\n chunkProperties.vao = vao;\n\n }\n\n }\n\n _updateInstancedVAO(chunk, instanceObject, instanceDivisor) {\n\n const VAOExtension = extensions.get(\"OES_vertex_array_object\");\n const instanceExtension = extensions.get(\"ANGLE_instanced_arrays\");\n\n if (VAOExtension && instanceExtension) {\n\n const gl = GL.getContext();\n\n let vao = VAOExtension.createVertexArray();\n VAOExtension.bindVertexArray(vao);\n\n const chunkProperties = this._chunkProperties.get(chunk);\n const attributesMap = chunkProperties.attributesMap;\n const instancedAttributesMap = instanceObject.attributesMap;\n\n chunk.attachBuffers(gl, attributesMap);\n chunk.attachInstancedBuffers(gl, instanceExtension, instancedAttributesMap, instanceDivisor);\n\n VAOExtension.bindVertexArray(null);\n\n instanceObject.vao = vao;\n\n }\n\n }\n\n\n getVao(chunk) {\n return this._chunkProperties.get(chunk).vao;\n }\n\n updateAttributes(shader, chunk) {\n const sceneOwner = this.getRootNode();\n\n const chunkProperties = this._chunkProperties.get(chunk);\n\n if (chunkProperties.activeShaderProgram == shader.program) {\n return;\n }\n\n const map = [];\n const unlinkedAttributes = [];\n\n for (let attName in shader.attributesLocations) {\n\n const attribute = chunk.attributeBuffers[attName];\n\n if (!attribute) {\n if (shader.instancedMode) {\n unlinkedAttributes.push(attName);\n } else {\n output.error(output.DEVELOPERS_ERROR, \"Geometry is incompatible with shader. Missing attribute: \\\"\" + attName + \"\\\"\");\n }\n continue;\n }\n\n map.push(shader.attributesLocations[attName]);\n map.push(attribute);\n\n }\n chunkProperties.attributesMap = map;\n this._updateVAO(chunk);\n\n chunkProperties.instancedAttributes.clear();\n for (const importedModel of this.importedModelsForInstancing) {\n const attributesMapsForModel = [];\n chunkProperties.instancedAttributes.set(importedModel, attributesMapsForModel);\n for (const importedChunk of importedModel.chunks) {\n\n const instancedAttributesMap = [];\n for (const attName of unlinkedAttributes) {\n const remappedAttName = shader.instancedAttributesRemapping[attName];\n const attribute = importedChunk.attributeBuffers[remappedAttName];\n\n if (!attribute) {\n output.error(output.DEVELOPERS_ERROR, \"Geometry is incompatible with shader. Missing attribute: \\\"\" + attName + \"\\\"\");\n continue;\n }\n\n instancedAttributesMap.push(shader.attributesLocations[attName]);\n instancedAttributesMap.push(attribute);\n\n memoryProfiler.markMemoryAllocated(attribute.vbo, memoryType.GPU_GEOMETRY, attribute.byteLength, sceneOwner);\n }\n\n const attributesMapObject = {\n vao: null,\n instancesCount: importedChunk.geometry.getVerticesCount(),\n attributesMap: instancedAttributesMap,\n };\n attributesMapsForModel.push(attributesMapObject);\n this._updateInstancedVAO(chunk, attributesMapObject, shader.instanceDivisor);\n\n }\n }\n\n chunkProperties.activeShaderProgram = shader.program;\n }\n\n cleanup() {\n\n this.cleanupChunks();\n this.cleanupTextures();\n\n this.reportImportedAttributesRelease();\n this.importedModelsForInstancing.length = 0;\n\n }\n\n cleanupChunks() {\n for (const chunk of this.chunks) {\n chunk.cleanup();\n }\n\n this.chunks.length = 0;\n }\n\n getAttributesMap(chunk) {\n return this._chunkProperties.get(chunk).attributesMap;\n }\n\n getInstancedAttributes(chunk) {\n return this._chunkProperties.get(chunk).instancedAttributes;\n }\n\n chunkFrustumTest(chunk, planes) {\n const chunkProperties = this._chunkProperties.get(chunk);\n chunkProperties.inFrustum = true;\n\n if (!chunk.enableFrustumTest) {\n return chunkProperties.inFrustum;\n }\n\n const bbox = chunkProperties.bbox;\n\n let minX, minY, minZ, maxX, maxY, maxZ;\n\n for (let i = 0; i < 6; ++i) {\n\n const plane = planes[i];\n\n // X axis\n if (plane[0] > 0) {\n minX = bbox[0];\n maxX = bbox[3];\n } else {\n minX = bbox[3];\n maxX = bbox[0];\n }\n // Y axis\n if (plane[1] > 0) {\n minY = bbox[1];\n maxY = bbox[4];\n } else {\n minY = bbox[4];\n maxY = bbox[1];\n }\n // Z axis\n if (plane[2] > 0) {\n minZ = bbox[2];\n maxZ = bbox[5];\n } else {\n minZ = bbox[5];\n maxZ = bbox[2];\n }\n\n if (plane[0] * minX + plane[1] * minY + plane[2] * minZ + plane[3] > 0) {\n\n chunkProperties.inFrustum = false;\n\n return chunkProperties.inFrustum;\n\n }\n\n if (plane[0] * maxX + plane[1] * maxY + plane[2] * maxZ + plane[3] >= 0) {\n return chunkProperties.inFrustum;\n }\n\n }\n\n return chunkProperties.inFrustum;\n\n }\n\n updateChunkBBox(chunk) {\n\n const chunkProperties = this._chunkProperties.get(chunk);\n\n const minmaxIn = chunk.geometry.bbox;\n const minmaxOut = chunkProperties.bbox;\n\n minmaxUtils.recomputedFromRotated(minmaxOut, minmaxIn, this.modelMatrix);\n\n }\n\n setScheduleDrawQuery(chunk, shouldRun) {\n\n if (!GL.checkWebGL2()) {\n return;\n }\n\n const chunkProperties = this._chunkProperties.get(chunk);\n\n if (shouldRun) {\n\n chunkProperties.queryState = drawQueryState.SHOULD_RUN;\n\n if (!chunkProperties.drawQuery) {\n const gl = GL.getContext();\n chunkProperties.drawQuery = gl.createQuery();\n }\n\n } else {\n\n chunkProperties.queryState = drawQueryState.FINISHED;\n\n }\n\n chunkProperties.queryResult = 1;\n\n }\n\n isChunkInFrustum(chunk) {\n return this._chunkProperties.get(chunk).inFrustum;\n }\n\n getChunkBBox(chunk) {\n return this._chunkProperties.get(chunk).bbox;\n }\n\n getChunkQueryResult(chunk) {\n return this._chunkProperties.get(chunk).queryResult;\n }\n\n getChunkQueryState(chunk) {\n return this._chunkProperties.get(chunk).queryState;\n }\n\n getChunkDrawQuery(chunk) {\n return this._chunkProperties.get(chunk).drawQuery;\n }\n\n setChunkQueryResult(chunk, newResult) {\n this._chunkProperties.get(chunk).queryResult = newResult;\n }\n\n setChunkQueryState(chunk, newState) {\n this._chunkProperties.get(chunk).queryState = newState;\n }\n\n reportImportedAttributesRelease() {\n const sceneOwner = this.getRootNode();\n if (!sceneOwner) {\n return;\n }\n\n for (const chunk of this.chunks) {\n\n const chunkProperties = this._chunkProperties.get(chunk);\n for (const attributesMapsForModel of chunkProperties.instancedAttributes.values()) {\n for (const attributesMap of attributesMapsForModel) {\n for (let i = 0; i < attributesMap.length; i += 2) {\n const attribute = attributesMap[i + 1];\n memoryProfiler.markMemoryReleased(attribute.vbo, sceneOwner);\n }\n }\n }\n }\n }\n\n setSelectionEnabled(enabled) {\n //Todo: WS-1206\n if (!this.shader) {\n super.setSelectionEnabled();\n return;\n }\n\n this.shader.setDirective(\"SELECTION\", enabled);\n }\n\n setColorMode(colorMode) {\n //Todo: WS-1206\n if (!this.shader) {\n super.setColorMode();\n return;\n }\n\n if (this.shader instanceof DefaultShader) this.shader.setDirective(\"COLOR_TYPE\", colorMode);\n }\n\n setTransparencyEnabled(enabled) {\n //Todo: WS-1206\n if (!this.shader) {\n super.setTransparencyEnabled();\n return;\n }\n\n this.shader.transparent = enabled;\n }\n\n fixFacesInversion() {\n if (!(this.shader instanceof DefaultShader)) {\n output.error(output.DEVELOPERS_ERROR, \"object uses non-default shader. Triangles orientation could be incorrect\");\n return;\n }\n\n const scaleSign = this.scale.reduce((accumulator, currentValue) => accumulator * currentValue);\n this.shader.setDirective(\"INVERT_FACES\", scaleSign < 0);\n this.shader.setCullingFrontFace(scaleSign < 0 ? cullingFrontFace.CLOCK_WISE : cullingFrontFace.COUNTER_CLOCK_WISE);\n }\n\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var rxSubscriber = /*@__PURE__*/ (function () {\n return typeof Symbol === 'function'\n ? /*@__PURE__*/ Symbol('rxSubscriber')\n : '@@rxSubscriber_' + /*@__PURE__*/ Math.random();\n})();\nexport var $$rxSubscriber = rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map\n","// Source: \nlet bundleURL;\nfunction getBundleURLCached() {\n if (!bundleURL) {\n bundleURL = getBundleURL();\n }\n return bundleURL;\n}\nfunction getBundleURL() {\n // Attempt to find the URL of the current script and use that as the base URL\n try {\n throw new Error;\n }\n catch (err) {\n const matches = (\"\" + err.stack).match(/(https?|file|ftp|chrome-extension|moz-extension):\\/\\/[^)\\n]+/g);\n if (matches) {\n return getBaseURL(matches[0]);\n }\n }\n return \"/\";\n}\nfunction getBaseURL(url) {\n return (\"\" + url).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\\/\\/.+)?\\/[^/]+(?:\\?.*)?$/, '$1') + '/';\n}\nexport { getBaseURL, getBundleURLCached as getBundleURL };\n","// tslint:disable max-classes-per-file\nimport { getBundleURL } from \"./get-bundle-url.browser\";\nexport const defaultPoolSize = typeof navigator !== \"undefined\" && navigator.hardwareConcurrency\n ? navigator.hardwareConcurrency\n : 4;\nconst isAbsoluteURL = (value) => /^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.test(value);\nfunction createSourceBlobURL(code) {\n const blob = new Blob([code], { type: \"application/javascript\" });\n return URL.createObjectURL(blob);\n}\nfunction selectWorkerImplementation() {\n if (typeof Worker === \"undefined\") {\n // Might happen on Safari, for instance\n // The idea is to only fail if the constructor is actually used\n return class NoWebWorker {\n constructor() {\n throw Error(\"No web worker implementation available. You might have tried to spawn a worker within a worker in a browser that doesn't support workers in workers.\");\n }\n };\n }\n class WebWorker extends Worker {\n constructor(url, options) {\n var _a, _b;\n if (typeof url === \"string\" && options && options._baseURL) {\n url = new URL(url, options._baseURL);\n }\n else if (typeof url === \"string\" && !isAbsoluteURL(url) && getBundleURL().match(/^file:\\/\\//i)) {\n url = new URL(url, getBundleURL().replace(/\\/[^\\/]+$/, \"/\"));\n if ((_a = options === null || options === void 0 ? void 0 : options.CORSWorkaround) !== null && _a !== void 0 ? _a : true) {\n url = createSourceBlobURL(`importScripts(${JSON.stringify(url)});`);\n }\n }\n if (typeof url === \"string\" && isAbsoluteURL(url)) {\n // Create source code blob loading JS file via `importScripts()`\n // to circumvent worker CORS restrictions\n if ((_b = options === null || options === void 0 ? void 0 : options.CORSWorkaround) !== null && _b !== void 0 ? _b : true) {\n url = createSourceBlobURL(`importScripts(${JSON.stringify(url)});`);\n }\n }\n super(url, options);\n }\n }\n class BlobWorker extends WebWorker {\n constructor(blob, options) {\n const url = window.URL.createObjectURL(blob);\n super(url, options);\n }\n static fromText(source, options) {\n const blob = new window.Blob([source], { type: \"text/javascript\" });\n return new BlobWorker(blob, options);\n }\n }\n return {\n blob: BlobWorker,\n default: WebWorker\n };\n}\nlet implementation;\nexport function getWorkerImplementation() {\n if (!implementation) {\n implementation = selectWorkerImplementation();\n }\n return implementation;\n}\nexport function isWorkerRuntime() {\n const isWindowContext = typeof self !== \"undefined\" && typeof Window !== \"undefined\" && self instanceof Window;\n return typeof self !== \"undefined\" && self.postMessage && !isWindowContext ? true : false;\n}\n","import { getWorkerImplementation, isWorkerRuntime } from \"./implementation\";\nexport { Pool } from \"./pool\";\nexport { spawn } from \"./spawn\";\nexport { Thread } from \"./thread\";\nexport { isWorkerRuntime };\n/** Separate class to spawn workers from source code blobs or strings. */\nexport const BlobWorker = getWorkerImplementation().blob;\n/** Worker implementation. Either web worker or a node.js Worker class. */\nexport const Worker = getWorkerImplementation().default;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","import { fromFetch } from 'rxjs/fetch';\nimport { retryWhen, timeout, catchError } from 'rxjs/operators';\nimport { MAX_RESPONSE_TIME } from '_data/constants';\nimport { genericRetryStrategy, maxRetryAttempts } from '_helpers/rx';\n\nconst _fetch = (...params) =>\n fromFetch(...params)\n .pipe(\n timeout(MAX_RESPONSE_TIME),\n catchError(err => {\n if (err.name === 'TimeoutError') {\n const event = new Event('timeouted');\n document.dispatchEvent(event);\n }\n throw err;\n }),\n retryWhen(genericRetryStrategy({ maxRetryAttempts }))\n )\n .toPromise();\n\nexport default _fetch;\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar InnerSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.outerValue = outerValue;\n _this.outerIndex = outerIndex;\n _this.index = 0;\n return _this;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber));\nexport { InnerSubscriber };\n//# sourceMappingURL=InnerSubscriber.js.map\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })();\n//# sourceMappingURL=isArray.js.map\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tokenMatcher = exports.createTokenInstance = exports.EOF = exports.createToken = exports.hasTokenLabel = exports.tokenName = exports.tokenLabel = void 0;\nvar isString_1 = __importDefault(require(\"lodash/isString\"));\nvar has_1 = __importDefault(require(\"lodash/has\"));\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\nvar lexer_public_1 = require(\"./lexer_public\");\nvar tokens_1 = require(\"./tokens\");\nfunction tokenLabel(tokType) {\n if (hasTokenLabel(tokType)) {\n return tokType.LABEL;\n }\n else {\n return tokType.name;\n }\n}\nexports.tokenLabel = tokenLabel;\nfunction tokenName(tokType) {\n return tokType.name;\n}\nexports.tokenName = tokenName;\nfunction hasTokenLabel(obj) {\n return (0, isString_1.default)(obj.LABEL) && obj.LABEL !== \"\";\n}\nexports.hasTokenLabel = hasTokenLabel;\nvar PARENT = \"parent\";\nvar CATEGORIES = \"categories\";\nvar LABEL = \"label\";\nvar GROUP = \"group\";\nvar PUSH_MODE = \"push_mode\";\nvar POP_MODE = \"pop_mode\";\nvar LONGER_ALT = \"longer_alt\";\nvar LINE_BREAKS = \"line_breaks\";\nvar START_CHARS_HINT = \"start_chars_hint\";\nfunction createToken(config) {\n return createTokenInternal(config);\n}\nexports.createToken = createToken;\nfunction createTokenInternal(config) {\n var pattern = config.pattern;\n var tokenType = {};\n tokenType.name = config.name;\n if (!(0, isUndefined_1.default)(pattern)) {\n tokenType.PATTERN = pattern;\n }\n if ((0, has_1.default)(config, PARENT)) {\n throw (\"The parent property is no longer supported.\\n\" +\n \"See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.\");\n }\n if ((0, has_1.default)(config, CATEGORIES)) {\n // casting to ANY as this will be fixed inside `augmentTokenTypes``\n tokenType.CATEGORIES = config[CATEGORIES];\n }\n (0, tokens_1.augmentTokenTypes)([tokenType]);\n if ((0, has_1.default)(config, LABEL)) {\n tokenType.LABEL = config[LABEL];\n }\n if ((0, has_1.default)(config, GROUP)) {\n tokenType.GROUP = config[GROUP];\n }\n if ((0, has_1.default)(config, POP_MODE)) {\n tokenType.POP_MODE = config[POP_MODE];\n }\n if ((0, has_1.default)(config, PUSH_MODE)) {\n tokenType.PUSH_MODE = config[PUSH_MODE];\n }\n if ((0, has_1.default)(config, LONGER_ALT)) {\n tokenType.LONGER_ALT = config[LONGER_ALT];\n }\n if ((0, has_1.default)(config, LINE_BREAKS)) {\n tokenType.LINE_BREAKS = config[LINE_BREAKS];\n }\n if ((0, has_1.default)(config, START_CHARS_HINT)) {\n tokenType.START_CHARS_HINT = config[START_CHARS_HINT];\n }\n return tokenType;\n}\nexports.EOF = createToken({ name: \"EOF\", pattern: lexer_public_1.Lexer.NA });\n(0, tokens_1.augmentTokenTypes)([exports.EOF]);\nfunction createTokenInstance(tokType, image, startOffset, endOffset, startLine, endLine, startColumn, endColumn) {\n return {\n image: image,\n startOffset: startOffset,\n endOffset: endOffset,\n startLine: startLine,\n endLine: endLine,\n startColumn: startColumn,\n endColumn: endColumn,\n tokenTypeIdx: tokType.tokenTypeIdx,\n tokenType: tokType\n };\n}\nexports.createTokenInstance = createTokenInstance;\nfunction tokenMatcher(token, tokType) {\n return (0, tokens_1.tokenStructuredMatcher)(token, tokType);\n}\nexports.tokenMatcher = tokenMatcher;\n//# sourceMappingURL=tokens_public.js.map","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTokenType = exports.hasExtendingTokensTypesMapProperty = exports.hasExtendingTokensTypesProperty = exports.hasCategoriesProperty = exports.hasShortKeyProperty = exports.singleAssignCategoriesToksMap = exports.assignCategoriesMapProp = exports.assignCategoriesTokensProp = exports.assignTokenDefaultProps = exports.expandCategories = exports.augmentTokenTypes = exports.tokenIdxToClass = exports.tokenShortNameIdx = exports.tokenStructuredMatcherNoCategories = exports.tokenStructuredMatcher = void 0;\nvar isEmpty_1 = __importDefault(require(\"lodash/isEmpty\"));\nvar compact_1 = __importDefault(require(\"lodash/compact\"));\nvar isArray_1 = __importDefault(require(\"lodash/isArray\"));\nvar flatten_1 = __importDefault(require(\"lodash/flatten\"));\nvar difference_1 = __importDefault(require(\"lodash/difference\"));\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar has_1 = __importDefault(require(\"lodash/has\"));\nvar includes_1 = __importDefault(require(\"lodash/includes\"));\nvar clone_1 = __importDefault(require(\"lodash/clone\"));\nfunction tokenStructuredMatcher(tokInstance, tokConstructor) {\n var instanceType = tokInstance.tokenTypeIdx;\n if (instanceType === tokConstructor.tokenTypeIdx) {\n return true;\n }\n else {\n return (tokConstructor.isParent === true &&\n tokConstructor.categoryMatchesMap[instanceType] === true);\n }\n}\nexports.tokenStructuredMatcher = tokenStructuredMatcher;\n// Optimized tokenMatcher in case our grammar does not use token categories\n// Being so tiny it is much more likely to be in-lined and this avoid the function call overhead\nfunction tokenStructuredMatcherNoCategories(token, tokType) {\n return token.tokenTypeIdx === tokType.tokenTypeIdx;\n}\nexports.tokenStructuredMatcherNoCategories = tokenStructuredMatcherNoCategories;\nexports.tokenShortNameIdx = 1;\nexports.tokenIdxToClass = {};\nfunction augmentTokenTypes(tokenTypes) {\n // collect the parent Token Types as well.\n var tokenTypesAndParents = expandCategories(tokenTypes);\n // add required tokenType and categoryMatches properties\n assignTokenDefaultProps(tokenTypesAndParents);\n // fill up the categoryMatches\n assignCategoriesMapProp(tokenTypesAndParents);\n assignCategoriesTokensProp(tokenTypesAndParents);\n (0, forEach_1.default)(tokenTypesAndParents, function (tokType) {\n tokType.isParent = tokType.categoryMatches.length > 0;\n });\n}\nexports.augmentTokenTypes = augmentTokenTypes;\nfunction expandCategories(tokenTypes) {\n var result = (0, clone_1.default)(tokenTypes);\n var categories = tokenTypes;\n var searching = true;\n while (searching) {\n categories = (0, compact_1.default)((0, flatten_1.default)((0, map_1.default)(categories, function (currTokType) { return currTokType.CATEGORIES; })));\n var newCategories = (0, difference_1.default)(categories, result);\n result = result.concat(newCategories);\n if ((0, isEmpty_1.default)(newCategories)) {\n searching = false;\n }\n else {\n categories = newCategories;\n }\n }\n return result;\n}\nexports.expandCategories = expandCategories;\nfunction assignTokenDefaultProps(tokenTypes) {\n (0, forEach_1.default)(tokenTypes, function (currTokType) {\n if (!hasShortKeyProperty(currTokType)) {\n exports.tokenIdxToClass[exports.tokenShortNameIdx] = currTokType;\n currTokType.tokenTypeIdx = exports.tokenShortNameIdx++;\n }\n // CATEGORIES? : TokenType | TokenType[]\n if (hasCategoriesProperty(currTokType) &&\n !(0, isArray_1.default)(currTokType.CATEGORIES)\n // &&\n // !isUndefined(currTokType.CATEGORIES.PATTERN)\n ) {\n currTokType.CATEGORIES = [currTokType.CATEGORIES];\n }\n if (!hasCategoriesProperty(currTokType)) {\n currTokType.CATEGORIES = [];\n }\n if (!hasExtendingTokensTypesProperty(currTokType)) {\n currTokType.categoryMatches = [];\n }\n if (!hasExtendingTokensTypesMapProperty(currTokType)) {\n currTokType.categoryMatchesMap = {};\n }\n });\n}\nexports.assignTokenDefaultProps = assignTokenDefaultProps;\nfunction assignCategoriesTokensProp(tokenTypes) {\n (0, forEach_1.default)(tokenTypes, function (currTokType) {\n // avoid duplications\n currTokType.categoryMatches = [];\n (0, forEach_1.default)(currTokType.categoryMatchesMap, function (val, key) {\n currTokType.categoryMatches.push(exports.tokenIdxToClass[key].tokenTypeIdx);\n });\n });\n}\nexports.assignCategoriesTokensProp = assignCategoriesTokensProp;\nfunction assignCategoriesMapProp(tokenTypes) {\n (0, forEach_1.default)(tokenTypes, function (currTokType) {\n singleAssignCategoriesToksMap([], currTokType);\n });\n}\nexports.assignCategoriesMapProp = assignCategoriesMapProp;\nfunction singleAssignCategoriesToksMap(path, nextNode) {\n (0, forEach_1.default)(path, function (pathNode) {\n nextNode.categoryMatchesMap[pathNode.tokenTypeIdx] = true;\n });\n (0, forEach_1.default)(nextNode.CATEGORIES, function (nextCategory) {\n var newPath = path.concat(nextNode);\n // avoids infinite loops due to cyclic categories.\n if (!(0, includes_1.default)(newPath, nextCategory)) {\n singleAssignCategoriesToksMap(newPath, nextCategory);\n }\n });\n}\nexports.singleAssignCategoriesToksMap = singleAssignCategoriesToksMap;\nfunction hasShortKeyProperty(tokType) {\n return (0, has_1.default)(tokType, \"tokenTypeIdx\");\n}\nexports.hasShortKeyProperty = hasShortKeyProperty;\nfunction hasCategoriesProperty(tokType) {\n return (0, has_1.default)(tokType, \"CATEGORIES\");\n}\nexports.hasCategoriesProperty = hasCategoriesProperty;\nfunction hasExtendingTokensTypesProperty(tokType) {\n return (0, has_1.default)(tokType, \"categoryMatches\");\n}\nexports.hasExtendingTokensTypesProperty = hasExtendingTokensTypesProperty;\nfunction hasExtendingTokensTypesMapProperty(tokType) {\n return (0, has_1.default)(tokType, \"categoryMatchesMap\");\n}\nexports.hasExtendingTokensTypesMapProperty = hasExtendingTokensTypesMapProperty;\nfunction isTokenType(tokType) {\n return (0, has_1.default)(tokType, \"tokenTypeIdx\");\n}\nexports.isTokenType = isTokenType;\n//# sourceMappingURL=tokens.js.map","import { vec3, quat, mat4 } from \"_src/libs/gl-matrix\";\nimport { decomposeMat4 } from \"_src/engine/math\";\n\nexport default class Object3D {\n constructor() {\n\n this.trans = vec3.create();\n this.scale = vec3.fromValues(1,1,1);\n this.quat = quat.create();\n\n this._children = [];\n this._parent = null;\n\n this._needsModelMatUpdate = false;\n this._needsLocalMatUpdate = false;\n this._needsTraverseChildren = false;\n\n this.modelMatrix = mat4.create();\n this.localMatrix = mat4.create();\n this.isDrawable = false;\n\n }\n\n add(child) {\n\n child.setParent(this);\n\n this._children.push(child);\n\n const scene = this.getRootNode();\n\n if (!scene) {\n return;\n }\n\n if (scene.batcher) {\n scene.batcher.addObject(child);\n }\n\n }\n\n remove(obj) {\n\n const ind = this._children.indexOf(obj);\n\n if (ind != -1) {\n\n this._children.splice(ind, 1);\n\n const scene = this.getRootNode();\n\n if (!scene) {\n return;\n }\n\n scene.batcher.removeObject(obj);\n\n }\n\n }\n\n setParent(parent) {\n this._parent = parent;\n }\n\n getParent() {\n return this._parent;\n }\n\n getRootNode() {\n\n let parent = this._parent;\n\n if (!parent) {\n return null;\n }\n\n while(parent._parent) {\n parent = parent._parent;\n }\n\n return parent;\n\n }\n\n getTranslation(destVec) {\n if (!destVec) {\n return vec3.clone(this.trans);\n }\n return vec3.copy(destVec, this.trans);\n }\n\n getRotation(destQuat) {\n if (!destQuat) {\n return quat.clone(this.quat);\n }\n return quat.copy(destQuat, this.quat);\n }\n\n getScale(destVec) {\n if (!destVec) {\n return vec3.clone(this.scale);\n }\n return vec3.copy(destVec, this.scale);\n }\n\n setTranslation(x, y, z) {\n vec3.set(this.trans, x, y, z);\n this._needsLocalMatUpdate = true;\n for (let node = this._parent; node; node = node._parent) {\n node._needsTraverseChildren = true;\n }\n }\n\n copyTranslation(position) {\n vec3.copy(this.trans, position);\n this._needsLocalMatUpdate = true;\n for (let node = this._parent; node; node = node._parent) {\n node._needsTraverseChildren = true;\n }\n }\n\n setRotation(x, y, z, w) {\n quat.set(this.quat, x, y, z, w);\n this._needsLocalMatUpdate = true;\n for (let node = this._parent; node; node = node._parent) {\n node._needsTraverseChildren = true;\n }\n }\n\n copyRotation(quaternion) {\n quat.copy(this.quat, quaternion);\n this._needsLocalMatUpdate = true;\n for (let node = this._parent; node; node = node._parent) {\n node._needsTraverseChildren = true;\n }\n }\n\n setScale(x, y, z) {\n vec3.set(this.scale, x, y, z);\n this._needsLocalMatUpdate = true;\n for (let node = this._parent; node; node = node._parent) {\n node._needsTraverseChildren = true;\n }\n }\n\n copyScale(scale) {\n vec3.copy(this.scale, scale);\n this._needsLocalMatUpdate = true;\n for (let node = this._parent; node; node = node._parent) {\n node._needsTraverseChildren = true;\n }\n }\n\n translate(trans) {\n vec3.add(this.trans, this.trans, trans);\n this._needsLocalMatUpdate = true;\n for (let node = this._parent; node; node = node._parent) {\n node._needsTraverseChildren = true;\n }\n }\n\n rotate(quaternion) {\n quat.multiply(this.quat, quaternion, this.quat);\n this._needsLocalMatUpdate = true;\n for (let node = this._parent; node; node = node._parent) {\n node._needsTraverseChildren = true;\n }\n }\n\n setMatrix(matrix) {\n mat4.copy(this.localMatrix, matrix);\n decomposeMat4(matrix, this.trans, this.quat, this.scale);\n\n this._needsModelMatUpdate = true;\n for (let node = this._parent; node; node = node._parent) {\n node._needsTraverseChildren = true;\n }\n }\n\n getMatrix(dest) {\n return mat4.copy(dest, this.localMatrix);\n }\n\n updateMatrix() {\n\n if (this._needsLocalMatUpdate) {\n mat4.fromRotationTranslationScale(this.localMatrix, this.quat, this.trans, this.scale);\n this._needsModelMatUpdate = true;\n this._needsLocalMatUpdate = false;\n }\n\n if (this._needsModelMatUpdate) {\n this._updateModelMatrix();\n this._needsTraverseChildren = true;\n this._needsModelMatUpdate = false;\n }\n\n if (this._needsTraverseChildren) {\n for (const child of this._children) {\n child.updateMatrix();\n }\n this._needsTraverseChildren = false;\n }\n }\n\n _updateModelMatrix() {\n mat4.copy(this.modelMatrix, this.localMatrix);\n\n if (this._parent) {\n mat4.multiply(this.modelMatrix, this._parent.modelMatrix, this.modelMatrix);\n }\n\n for (const child of this._children) {\n child._needsModelMatUpdate = true;\n }\n }\n\n getChildren() {\n return this._children;\n }\n\n getAllNestedChildren() {\n let allChildren = this._children.slice();\n for (const child of this._children) {\n allChildren = allChildren.concat(child.getAllNestedChildren());\n }\n\n return allChildren;\n }\n\n checkNeedsMatUpdate() {\n return this._needsLocalMatUpdate || this._needsModelMatUpdate;\n }\n\n //interface like methods\n setSelectionEnabled() {}\n setColorMode() {}\n setWireframeEnabled() {}\n setTransparencyEnabled() {}\n}\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\n// fixed length extra bits\nvar fleb = new u8([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, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\n// see fleb note\nvar fdeb = new u8([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, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new u32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 0; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n var n = new (v.BYTES_PER_ELEMENT == 2 ? u16 : v.BYTES_PER_ELEMENT == 4 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, buf, st) {\n // source length\n var sl = dat.length;\n if (!sl || (st && st.f && !st.l))\n return buf || new u8(0);\n // have to estimate size\n var noBuf = !buf || st;\n // no state\n var noSt = !st || st.i;\n if (!st)\n st = {};\n // Assumes roughly 33% compression ratio average\n if (!buf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (noBuf)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >>> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17;\n if (noBuf)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (noBuf)\n cbuf(bt + 131072);\n var end = bt + add;\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n bt = end;\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt == buf.length ? buf : slc(buf, 0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return [et, 0];\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return [new u8(tr), mbt];\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return [cl.subarray(0, cli), s];\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];\n var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];\n var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n lcfreq[lclt[i] & 31]++;\n for (var i = 0; i < lcdt.length; ++i)\n lcfreq[lcdt[i] & 31]++;\n var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = (syms[i] >>> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[pos >> 3] = lst;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n }\n else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = new u16(32768), head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new u32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx bitpos\n var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n for (; i < s; ++i) {\n // hash value\n // deopt when i > s - 3 - at end, deopt acceptable\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = (i - dif + j + 32768) & 32767;\n var pti = prev[ti];\n var cd = (ti - pti + 32768) & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += (imod - pimod + 32768) & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one Uint32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n // this is the easiest way to avoid needing to maintain state\n if (!lst && pos & 7)\n pos = wfblk(w, pos + 1, et);\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Alder32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return [fnStr, td];\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n var _a;\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];\n ch[id] = wcln(fns[m], fnStr, td_1);\n }\n var td = mrg({}, ch[id][1]);\n return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gu8]; };\nvar bDflt = function () { return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zlv]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get u8\nvar gu8 = function (o) { return o && o.size && new u8(o.size); };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) { return strm.push(ev.data[0], ev.data[1]); };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += d[10] | (d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return ((d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) | (d[l - 1] << 24)) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);\n};\n// zlib valid\nvar zlv = function (d) {\n if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if (d[1] & 32)\n err(6, 'invalid zlib data: preset dictionaries not supported');\n};\nfunction AsyncCmpStrm(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n// zlib footer: -4 to -0 is Adler32\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, !f), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.d = final;\n this.p(chunk, final || false);\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n /**\n * Creates an inflation stream\n * @param cb The callback to call whenever data is inflated\n */\n function Inflate(cb) {\n this.s = {};\n this.p = new u8(0);\n this.ondata = cb;\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n var l = this.p.length;\n var n = new u8(l + c.length);\n n.set(this.p), n.set(c, l), this.p = n;\n };\n Inflate.prototype.c = function (final) {\n this.d = this.s.i = final || false;\n var bts = this.s.b;\n var dt = inflt(this.p, this.o, this.s);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous inflation stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncInflate(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, 0, function () {\n var strm = new Inflate();\n onmessage = astrm(strm);\n }, 7);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, out) {\n return inflt(data, out);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n this.c.p(c);\n this.l += c.length;\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n /**\n * Creates a GUNZIP stream\n * @param cb The callback to call whenever data is inflated\n */\n function Gunzip(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n var s = this.p.length > 3 ? gzs(this.p) : 4;\n if (s >= this.p.length && !final)\n return;\n this.p = this.p.subarray(s), this.v = 0;\n }\n if (final) {\n if (this.p.length < 8)\n err(6, 'invalid gzip data');\n this.p = this.p.subarray(0, -8);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous GUNZIP stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncGunzip(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, 0, function () {\n var strm = new Gunzip();\n onmessage = astrm(strm);\n }, 9);\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, out) {\n return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n this.c.p(c);\n var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n /**\n * Creates a Zlib decompression stream\n * @param cb The callback to call whenever data is inflated\n */\n function Unzlib(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 2 && !final)\n return;\n this.p = this.p.subarray(2), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous Zlib decompression stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncUnzlib(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, 0, function () {\n var strm = new Unzlib();\n onmessage = astrm(strm);\n }, 11);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function Decompress(cb) {\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n var _this_1 = this;\n var cb = function () { _this_1.ondata.apply(_this_1, arguments); };\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(cb)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(cb)\n : new this.Z(cb);\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function AsyncDecompress(cb) {\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, out) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, out)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, out)\n : unzlibSync(data, out);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return [r, slc(d, i - 1)];\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), ch = _a[0], np = _a[1];\n if (final) {\n if (np.length)\n err(8);\n this.p = null;\n }\n else\n this.p = np;\n this.ondata(ch, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td)\n return td.decode(dat);\n else {\n var _a = dutf8(dat), out = _a[0], ext = _a[1];\n if (ext.length)\n err(8);\n return out;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >>> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this_1 = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this_1.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this_1.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this_1.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this_1.ondata(err, dat, final);\n _this_1.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this_1 = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this_1.d & 1))\n return;\n _this_1.u.splice(-1, 1);\n _this_1.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this_1 = this;\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this_1 = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this_1 = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this_1.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this_1.k[0] == chks_3 && _this_1.c)\n _this_1.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n if (sc < 320000) {\n try {\n cbl(null, inflateSync(infl, new u8(su)));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","import Wrapper from \"_src/wrapper\";\nimport { objectType } from \"_src/constants\";\n\nexport default class GroupableWrapper extends Wrapper {\n constructor(params={}) {\n super(params);\n this.type = objectType.GROUP;\n }\n\n getGroup() {\n return this._selfPropertyGetter(\"groupID\");\n }\n\n setGroup(groupID) {\n this._selfPropertySetter(\"groupID\", groupID);\n }\n}\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n//# sourceMappingURL=isFunction.js.map\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","import Shader from \"_src/engine/shader\";\nimport Uniform from \"_src/engine/uniform\";\nimport { uniformType, uniformSource } from \"_src/engine/constants\";\nimport vertText from \"_src/shaders/blur/blur.glslv\";\nimport fragText from \"_src/shaders/blur/blur.glslf\";\n\nimport { vec2 } from \"_src/libs/gl-matrix\";\n\nexport default class BlurShader extends Shader {\n\n constructor(params) {\n\n super(params);\n\n this.attachUniforms();\n\n }\n\n //reimplementation\n initDirectives(params) {\n this._directives[\"HOR_DIR\"] = params.horDir !== undefined ? params.horDir : true;\n }\n\n updateSceneUniformValues(scene) {\n const camera = scene.camera;\n vec2.copy(this.uniforms[\"u_texel_size\"].value, camera.texelSize);\n }\n\n compile() {\n super.compile(vertText, fragText);\n }\n\n attachUniforms() {\n const texelSize = vec2.create();\n\n this.uniforms[\"u_text_diffuse\"] = new Uniform(uniformType.INT1, 0, uniformSource.OBJECT);\n this.uniforms[\"u_texel_size\"] = new Uniform(uniformType.FLOAT2V, texelSize, uniformSource.SCENE);\n }\n\n}\n","/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport var empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n","/////////////////////////////\n// Messages sent by master:\nexport var MasterMessageType;\n(function (MasterMessageType) {\n MasterMessageType[\"cancel\"] = \"cancel\";\n MasterMessageType[\"run\"] = \"run\";\n})(MasterMessageType || (MasterMessageType = {}));\n////////////////////////////\n// Messages sent by worker:\nexport var WorkerMessageType;\n(function (WorkerMessageType) {\n WorkerMessageType[\"error\"] = \"error\";\n WorkerMessageType[\"init\"] = \"init\";\n WorkerMessageType[\"result\"] = \"result\";\n WorkerMessageType[\"running\"] = \"running\";\n WorkerMessageType[\"uncaughtError\"] = \"uncaughtError\";\n})(WorkerMessageType || (WorkerMessageType = {}));\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import output from \"_src/engine/output\";\nimport {easingType, geometry} from \"_src/engine/constants\";\nimport intersectEvaluator from \"_src/engine/intersect_evaluator\";\n\nimport {vec3, vec4, quat} from \"_src/libs/gl-matrix\";\nimport utils from \"_src/client/controls/utils\";\nimport TargetControl from \"_src/client/controls/target_control\";\n\nconst _vec3Tmp = vec3.create();\nconst _vec3Tmp2 = vec3.create();\n\nconst _quatTmp = quat.create();\nconst _quatTmp2 = quat.create();\n\nexport default class OrbitControl extends TargetControl {\n\n constructor(object) {\n\n super(object);\n\n this.limitVertical = false;\n this.horRotationSign = 1;\n\n }\n\n rotate(hor, vert) {\n\n if (!this.enabled) {\n return;\n }\n\n const object = this.object;\n\n const worldX = vec3.transformQuat(_vec3Tmp, geometry.AXIS_X, object.quat);\n\n const horRotation = quat.setAxisAngle(_quatTmp, geometry.AXIS_Z, -hor * this.upsideDownSign);\n const vertRotation = quat.setAxisAngle(_quatTmp2, worldX, vert);\n\n const deltaRotation = quat.multiply(_quatTmp, horRotation, vertRotation);\n const newRotation = quat.multiply(_quatTmp2, deltaRotation, object.quat);\n\n const direction = vec3.set(_vec3Tmp, 0, 0, -1);\n vec3.transformQuat(direction, direction, newRotation);\n\n const [horAngle, vertAngle] = utils.anglesFromView(direction);\n\n if (Math.abs(vec3.dot(direction, geometry.AXIS_Z)) < 0.9999999) {\n this.isUpsideDown = utils.checkIsUpsideDown(newRotation, this.upVec);\n this.horAngle = horAngle;\n }\n\n this.vertAngle = vertAngle;\n\n this.updatePosition();\n this.updateRotation();\n\n }\n\n pan(dX, dY) {\n if (!this.enabled) {\n return;\n }\n\n const object = this.object;\n\n let objX;\n if (this.isUpsideDown) {\n objX = vec3.cross(_vec3Tmp, geometry.AXIS_MZ, this.direction);\n } else {\n objX = vec3.cross(_vec3Tmp, geometry.AXIS_Z, this.direction);\n }\n\n vec3.normalize(objX, objX);\n\n const objY = vec3.cross(_vec3Tmp2, this.direction, objX);\n\n vec3.scale(objX, objX, dX * this.dist * 0.05);\n vec3.scale(objY, objY, dY * this.dist * 0.05);\n\n vec3.add(object.trans, object.trans, objX);\n vec3.add(object.trans, object.trans, objY);\n\n vec3.add(this.target, this.target, objX);\n vec3.add(this.target, this.target, objY);\n\n this.updatePosition();\n }\n\n _zoomCameraToCursor(delta, cameraX, cameraY) {\n\n const object = this.object;\n\n const dist = calcDistantToTargetPlane(object, delta, cameraX, cameraY, this.target, this.direction);\n if (dist < 0) {\n output.error(output.DEVELOPERS_ERROR, \"can't zoom to cursor\");\n return;\n }\n\n if (object.isPerspective()) {\n\n const step = dist * (-delta);\n\n if (step > 0 && step < this.minDist) {\n const rayToCursor = object._calculateRayPersp(cameraX, cameraY, _vec3Tmp);\n vec3.scaleAndAdd(this.target, this.target, rayToCursor, this.minDist);\n this.dist = Math.max(this.minDist, this.dist);\n return;\n }\n\n }\n\n this.dist = vec3.distance(object.trans, this.target);\n }\n\n setTarget(target, onUpdate, onFinish) {\n if (!this.enabled) {\n return;\n }\n\n const startTarget = vec3.clone(this.target);\n const finalTarget = target;\n const startPosition = vec3.clone(this.object.trans);\n const startRotation = quat.clone(this.object.quat);\n\n vec3.copy(this.target, target);\n this.setPosition(this.object.trans);\n this.updatePosition();\n this.updateRotation();\n\n const finalPosition = vec3.clone(this.object.trans);\n const finalRotation = quat.clone(this.object.quat);\n\n this._animation.setOnUpdate((value) => {\n vec3.lerp(this.target, startTarget, finalTarget, value);\n quat.slerp(this.object.quat, startRotation, finalRotation, value);\n vec3.lerp(this.object.trans, startPosition, finalPosition, value);\n this.object.copyRotation(this.object.quat);\n this.setPosition(this.object.trans);\n\n onUpdate();\n });\n\n this._animation.setOnFinish(() => {\n vec3.copy(this.target, finalTarget);\n this.object.copyRotation(finalRotation);\n this.setPosition(finalPosition);\n\n onFinish();\n });\n\n this._animation.type = easingType.IN_OUT_SINE;\n\n this._animation.start(0, 1, 0.2);\n }\n\n moveToMinmax(minmax, rect, animation, onStart, onUpdate, onFinish, time = 0.2) {\n super.moveToMinmax(minmax, rect, animation, onStart, onUpdate, onFinish, time, null);\n }\n\n}\n\nconst calcDistantToTargetPlane = (function() {\n\n const _vec3Tmp = vec3.create();\n const _vec3Tmp2 = vec3.create();\n const _vec3Tmp3 = vec3.create();\n const _vec3Tmp4 = vec3.create();\n const _vec3Tmp5 = vec3.create();\n\n const _vec4Tmp = vec4.create();\n\n return function(camera, delta, cameraX, cameraY, target, direction) {\n\n const dist = vec3.distance(camera.trans, target);\n const step = 0.5 * dist * (-delta);\n\n const rayToCursor = _vec3Tmp2;\n if (camera.isPerspective()) {\n camera._calculateRayPersp(cameraX, cameraY, rayToCursor);\n } else if (camera.isOrtho()) {\n const dw = 0.5 * cameraX * camera.right * Math.abs(delta);\n const dh = 0.5 * cameraY * camera.top * Math.abs(delta);\n\n vec3.set(rayToCursor, dw, dh, -Math.abs(step));\n vec3.transformQuat(rayToCursor, rayToCursor, camera.quat);\n vec3.normalize(rayToCursor, rayToCursor);\n } else {\n output.error(\"Coudn't zoom to cursor: incorrect camera type.\");\n return -1;\n }\n\n const initialOrigin = camera._calculateOriginPersp(_vec3Tmp);\n const targetPlane = vec3.copy(_vec4Tmp, direction);\n targetPlane[3] = -vec3.dot(targetPlane, target);\n\n const t = intersectEvaluator.rayPlaneIntersection(targetPlane, camera.trans, rayToCursor, camera.trans);\n if (t < 0) {\n return -1;\n }\n\n vec3.scaleAndAdd(camera.trans, initialOrigin, rayToCursor, step);\n camera.updateMatrix();\n\n const zoomedOrigin = camera._calculateOriginPersp(_vec3Tmp3);\n const targetScreen = camera.projectPoint(target[0], target[1], target[2], _vec3Tmp5);\n const rayToNewTarget = camera._calculateRayPersp(targetScreen[0], targetScreen[1], _vec3Tmp4);\n\n const t2 = intersectEvaluator.rayPlaneIntersection(targetPlane, zoomedOrigin, rayToNewTarget, target);\n if (t2 < 0) {\n return -1;\n }\n\n return t;\n\n }\n\n})();\n","import appState from \"_src/app_state\";\nimport TrackballControl from \"_src/client/controls/trackball\";\nimport OrbitControl from \"_src/client/controls/orbit\";\nimport output from \"_src/engine/output\";\nimport PhotoControl from \"_src/client/controls/photo_control\";\n\nexport default {\n createControl(type, camera) {\n switch (type) {\n case appState.CC_TRACKBALL:\n return new TrackballControl(camera);\n case appState.CC_ORBIT:\n return new OrbitControl(camera);\n case appState.CC_PHOTO:\n return new PhotoControl(camera);\n default:\n output.error(output.DEVELOPERS_ERROR, \"Can't create camera control. Unknown type: \" + type);\n }\n }\n}\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\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\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\n//# sourceMappingURL=isScheduler.js.map\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","export default function _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}","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toFastProperties = exports.timer = exports.PRINT_ERROR = exports.PRINT_WARNING = void 0;\nvar print_1 = require(\"./print\");\nObject.defineProperty(exports, \"PRINT_WARNING\", { enumerable: true, get: function () { return print_1.PRINT_WARNING; } });\nObject.defineProperty(exports, \"PRINT_ERROR\", { enumerable: true, get: function () { return print_1.PRINT_ERROR; } });\nvar timer_1 = require(\"./timer\");\nObject.defineProperty(exports, \"timer\", { enumerable: true, get: function () { return timer_1.timer; } });\nvar to_fast_properties_1 = require(\"./to-fast-properties\");\nObject.defineProperty(exports, \"toFastProperties\", { enumerable: true, get: function () { return to_fast_properties_1.toFastProperties; } });\n//# sourceMappingURL=api.js.map","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","module.exports = require('./head');\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultGrammarValidatorErrorProvider = exports.defaultGrammarResolverErrorProvider = exports.defaultParserErrorProvider = void 0;\nvar tokens_public_1 = require(\"../scan/tokens_public\");\nvar first_1 = __importDefault(require(\"lodash/first\"));\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar reduce_1 = __importDefault(require(\"lodash/reduce\"));\nvar gast_1 = require(\"@chevrotain/gast\");\nvar gast_2 = require(\"@chevrotain/gast\");\nexports.defaultParserErrorProvider = {\n buildMismatchTokenMessage: function (_a) {\n var expected = _a.expected, actual = _a.actual, previous = _a.previous, ruleName = _a.ruleName;\n var hasLabel = (0, tokens_public_1.hasTokenLabel)(expected);\n var expectedMsg = hasLabel\n ? \"--> \".concat((0, tokens_public_1.tokenLabel)(expected), \" <--\")\n : \"token of type --> \".concat(expected.name, \" <--\");\n var msg = \"Expecting \".concat(expectedMsg, \" but found --> '\").concat(actual.image, \"' <--\");\n return msg;\n },\n buildNotAllInputParsedMessage: function (_a) {\n var firstRedundant = _a.firstRedundant, ruleName = _a.ruleName;\n return \"Redundant input, expecting EOF but found: \" + firstRedundant.image;\n },\n buildNoViableAltMessage: function (_a) {\n var expectedPathsPerAlt = _a.expectedPathsPerAlt, actual = _a.actual, previous = _a.previous, customUserDescription = _a.customUserDescription, ruleName = _a.ruleName;\n var errPrefix = \"Expecting: \";\n // TODO: issue: No Viable Alternative Error may have incomplete details. #502\n var actualText = (0, first_1.default)(actual).image;\n var errSuffix = \"\\nbut found: '\" + actualText + \"'\";\n if (customUserDescription) {\n return errPrefix + customUserDescription + errSuffix;\n }\n else {\n var allLookAheadPaths = (0, reduce_1.default)(expectedPathsPerAlt, function (result, currAltPaths) { return result.concat(currAltPaths); }, []);\n var nextValidTokenSequences = (0, map_1.default)(allLookAheadPaths, function (currPath) {\n return \"[\".concat((0, map_1.default)(currPath, function (currTokenType) { return (0, tokens_public_1.tokenLabel)(currTokenType); }).join(\", \"), \"]\");\n });\n var nextValidSequenceItems = (0, map_1.default)(nextValidTokenSequences, function (itemMsg, idx) { return \" \".concat(idx + 1, \". \").concat(itemMsg); });\n var calculatedDescription = \"one of these possible Token sequences:\\n\".concat(nextValidSequenceItems.join(\"\\n\"));\n return errPrefix + calculatedDescription + errSuffix;\n }\n },\n buildEarlyExitMessage: function (_a) {\n var expectedIterationPaths = _a.expectedIterationPaths, actual = _a.actual, customUserDescription = _a.customUserDescription, ruleName = _a.ruleName;\n var errPrefix = \"Expecting: \";\n // TODO: issue: No Viable Alternative Error may have incomplete details. #502\n var actualText = (0, first_1.default)(actual).image;\n var errSuffix = \"\\nbut found: '\" + actualText + \"'\";\n if (customUserDescription) {\n return errPrefix + customUserDescription + errSuffix;\n }\n else {\n var nextValidTokenSequences = (0, map_1.default)(expectedIterationPaths, function (currPath) {\n return \"[\".concat((0, map_1.default)(currPath, function (currTokenType) { return (0, tokens_public_1.tokenLabel)(currTokenType); }).join(\",\"), \"]\");\n });\n var calculatedDescription = \"expecting at least one iteration which starts with one of these possible Token sequences::\\n \" +\n \"<\".concat(nextValidTokenSequences.join(\" ,\"), \">\");\n return errPrefix + calculatedDescription + errSuffix;\n }\n }\n};\nObject.freeze(exports.defaultParserErrorProvider);\nexports.defaultGrammarResolverErrorProvider = {\n buildRuleNotFoundError: function (topLevelRule, undefinedRule) {\n var msg = \"Invalid grammar, reference to a rule which is not defined: ->\" +\n undefinedRule.nonTerminalName +\n \"<-\\n\" +\n \"inside top level rule: ->\" +\n topLevelRule.name +\n \"<-\";\n return msg;\n }\n};\nexports.defaultGrammarValidatorErrorProvider = {\n buildDuplicateFoundError: function (topLevelRule, duplicateProds) {\n function getExtraProductionArgument(prod) {\n if (prod instanceof gast_1.Terminal) {\n return prod.terminalType.name;\n }\n else if (prod instanceof gast_1.NonTerminal) {\n return prod.nonTerminalName;\n }\n else {\n return \"\";\n }\n }\n var topLevelName = topLevelRule.name;\n var duplicateProd = (0, first_1.default)(duplicateProds);\n var index = duplicateProd.idx;\n var dslName = (0, gast_2.getProductionDslName)(duplicateProd);\n var extraArgument = getExtraProductionArgument(duplicateProd);\n var hasExplicitIndex = index > 0;\n var msg = \"->\".concat(dslName).concat(hasExplicitIndex ? index : \"\", \"<- \").concat(extraArgument ? \"with argument: ->\".concat(extraArgument, \"<-\") : \"\", \"\\n appears more than once (\").concat(duplicateProds.length, \" times) in the top level rule: ->\").concat(topLevelName, \"<-. \\n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES \\n \");\n // white space trimming time! better to trim afterwards as it allows to use WELL formatted multi line template strings...\n msg = msg.replace(/[ \\t]+/g, \" \");\n msg = msg.replace(/\\s\\s+/g, \"\\n\");\n return msg;\n },\n buildNamespaceConflictError: function (rule) {\n var errMsg = \"Namespace conflict found in grammar.\\n\" +\n \"The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <\".concat(rule.name, \">.\\n\") +\n \"To resolve this make sure each Terminal and Non-Terminal names are unique\\n\" +\n \"This is easy to accomplish by using the convention that Terminal names start with an uppercase letter\\n\" +\n \"and Non-Terminal names start with a lower case letter.\";\n return errMsg;\n },\n buildAlternationPrefixAmbiguityError: function (options) {\n var pathMsg = (0, map_1.default)(options.prefixPath, function (currTok) {\n return (0, tokens_public_1.tokenLabel)(currTok);\n }).join(\", \");\n var occurrence = options.alternation.idx === 0 ? \"\" : options.alternation.idx;\n var errMsg = \"Ambiguous alternatives: <\".concat(options.ambiguityIndices.join(\" ,\"), \"> due to common lookahead prefix\\n\") +\n \"in inside <\").concat(options.topLevelRule.name, \"> Rule,\\n\") +\n \"<\".concat(pathMsg, \"> may appears as a prefix path in all these alternatives.\\n\") +\n \"See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\\n\" +\n \"For Further details.\";\n return errMsg;\n },\n buildAlternationAmbiguityError: function (options) {\n var pathMsg = (0, map_1.default)(options.prefixPath, function (currtok) {\n return (0, tokens_public_1.tokenLabel)(currtok);\n }).join(\", \");\n var occurrence = options.alternation.idx === 0 ? \"\" : options.alternation.idx;\n var currMessage = \"Ambiguous Alternatives Detected: <\".concat(options.ambiguityIndices.join(\" ,\"), \"> in \") +\n \" inside <\".concat(options.topLevelRule.name, \"> Rule,\\n\") +\n \"<\".concat(pathMsg, \"> may appears as a prefix path in all these alternatives.\\n\");\n currMessage =\n currMessage +\n \"See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\\n\" +\n \"For Further details.\";\n return currMessage;\n },\n buildEmptyRepetitionError: function (options) {\n var dslName = (0, gast_2.getProductionDslName)(options.repetition);\n if (options.repetition.idx !== 0) {\n dslName += options.repetition.idx;\n }\n var errMsg = \"The repetition <\".concat(dslName, \"> within Rule <\").concat(options.topLevelRule.name, \"> can never consume any tokens.\\n\") +\n \"This could lead to an infinite loop.\";\n return errMsg;\n },\n // TODO: remove - `errors_public` from nyc.config.js exclude\n // once this method is fully removed from this file\n buildTokenNameError: function (options) {\n /* istanbul ignore next */\n return \"deprecated\";\n },\n buildEmptyAlternationError: function (options) {\n var errMsg = \"Ambiguous empty alternative: <\".concat(options.emptyChoiceIdx + 1, \">\") +\n \" in inside <\").concat(options.topLevelRule.name, \"> Rule.\\n\") +\n \"Only the last alternative may be an empty alternative.\";\n return errMsg;\n },\n buildTooManyAlternativesError: function (options) {\n var errMsg = \"An Alternation cannot have more than 256 alternatives:\\n\" +\n \" inside <\").concat(options.topLevelRule.name, \"> Rule.\\n has \").concat(options.alternation.definition.length + 1, \" alternatives.\");\n return errMsg;\n },\n buildLeftRecursionError: function (options) {\n var ruleName = options.topLevelRule.name;\n var pathNames = (0, map_1.default)(options.leftRecursionPath, function (currRule) { return currRule.name; });\n var leftRecursivePath = \"\".concat(ruleName, \" --> \").concat(pathNames\n .concat([ruleName])\n .join(\" --> \"));\n var errMsg = \"Left Recursion found in grammar.\\n\" +\n \"rule: <\".concat(ruleName, \"> can be invoked from itself (directly or indirectly)\\n\") +\n \"without consuming any Tokens. The grammar path that causes this is: \\n \".concat(leftRecursivePath, \"\\n\") +\n \" To fix this refactor your grammar to remove the left recursion.\\n\" +\n \"see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.\";\n return errMsg;\n },\n // TODO: remove - `errors_public` from nyc.config.js exclude\n // once this method is fully removed from this file\n buildInvalidRuleNameError: function (options) {\n /* istanbul ignore next */\n return \"deprecated\";\n },\n buildDuplicateRuleNameError: function (options) {\n var ruleName;\n if (options.topLevelRule instanceof gast_1.Rule) {\n ruleName = options.topLevelRule.name;\n }\n else {\n ruleName = options.topLevelRule;\n }\n var errMsg = \"Duplicate definition, rule: ->\".concat(ruleName, \"<- is already defined in the grammar: ->\").concat(options.grammarName, \"<-\");\n return errMsg;\n }\n};\n//# sourceMappingURL=errors_public.js.map","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.areTokenCategoriesNotUsed = exports.isStrictPrefixOfPath = exports.containsPath = exports.getLookaheadPathsForOptionalProd = exports.getLookaheadPathsForOr = exports.lookAheadSequenceFromAlternatives = exports.buildSingleAlternativeLookaheadFunction = exports.buildAlternativesLookAheadFunc = exports.buildLookaheadFuncForOptionalProd = exports.buildLookaheadFuncForOr = exports.getLookaheadPaths = exports.getProdType = exports.PROD_TYPE = void 0;\nvar isEmpty_1 = __importDefault(require(\"lodash/isEmpty\"));\nvar flatten_1 = __importDefault(require(\"lodash/flatten\"));\nvar every_1 = __importDefault(require(\"lodash/every\"));\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar has_1 = __importDefault(require(\"lodash/has\"));\nvar reduce_1 = __importDefault(require(\"lodash/reduce\"));\nvar interpreter_1 = require(\"./interpreter\");\nvar rest_1 = require(\"./rest\");\nvar tokens_1 = require(\"../../scan/tokens\");\nvar gast_1 = require(\"@chevrotain/gast\");\nvar gast_2 = require(\"@chevrotain/gast\");\nvar PROD_TYPE;\n(function (PROD_TYPE) {\n PROD_TYPE[PROD_TYPE[\"OPTION\"] = 0] = \"OPTION\";\n PROD_TYPE[PROD_TYPE[\"REPETITION\"] = 1] = \"REPETITION\";\n PROD_TYPE[PROD_TYPE[\"REPETITION_MANDATORY\"] = 2] = \"REPETITION_MANDATORY\";\n PROD_TYPE[PROD_TYPE[\"REPETITION_MANDATORY_WITH_SEPARATOR\"] = 3] = \"REPETITION_MANDATORY_WITH_SEPARATOR\";\n PROD_TYPE[PROD_TYPE[\"REPETITION_WITH_SEPARATOR\"] = 4] = \"REPETITION_WITH_SEPARATOR\";\n PROD_TYPE[PROD_TYPE[\"ALTERNATION\"] = 5] = \"ALTERNATION\";\n})(PROD_TYPE = exports.PROD_TYPE || (exports.PROD_TYPE = {}));\nfunction getProdType(prod) {\n /* istanbul ignore else */\n if (prod instanceof gast_1.Option || prod === \"Option\") {\n return PROD_TYPE.OPTION;\n }\n else if (prod instanceof gast_1.Repetition || prod === \"Repetition\") {\n return PROD_TYPE.REPETITION;\n }\n else if (prod instanceof gast_1.RepetitionMandatory ||\n prod === \"RepetitionMandatory\") {\n return PROD_TYPE.REPETITION_MANDATORY;\n }\n else if (prod instanceof gast_1.RepetitionMandatoryWithSeparator ||\n prod === \"RepetitionMandatoryWithSeparator\") {\n return PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR;\n }\n else if (prod instanceof gast_1.RepetitionWithSeparator ||\n prod === \"RepetitionWithSeparator\") {\n return PROD_TYPE.REPETITION_WITH_SEPARATOR;\n }\n else if (prod instanceof gast_1.Alternation || prod === \"Alternation\") {\n return PROD_TYPE.ALTERNATION;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexports.getProdType = getProdType;\nfunction getLookaheadPaths(options) {\n var occurrence = options.occurrence, rule = options.rule, prodType = options.prodType, maxLookahead = options.maxLookahead;\n var type = getProdType(prodType);\n if (type === PROD_TYPE.ALTERNATION) {\n return getLookaheadPathsForOr(occurrence, rule, maxLookahead);\n }\n else {\n return getLookaheadPathsForOptionalProd(occurrence, rule, type, maxLookahead);\n }\n}\nexports.getLookaheadPaths = getLookaheadPaths;\nfunction buildLookaheadFuncForOr(occurrence, ruleGrammar, maxLookahead, hasPredicates, dynamicTokensEnabled, laFuncBuilder) {\n var lookAheadPaths = getLookaheadPathsForOr(occurrence, ruleGrammar, maxLookahead);\n var tokenMatcher = areTokenCategoriesNotUsed(lookAheadPaths)\n ? tokens_1.tokenStructuredMatcherNoCategories\n : tokens_1.tokenStructuredMatcher;\n return laFuncBuilder(lookAheadPaths, hasPredicates, tokenMatcher, dynamicTokensEnabled);\n}\nexports.buildLookaheadFuncForOr = buildLookaheadFuncForOr;\n/**\n * When dealing with an Optional production (OPTION/MANY/2nd iteration of AT_LEAST_ONE/...) we need to compare\n * the lookahead \"inside\" the production and the lookahead immediately \"after\" it in the same top level rule (context free).\n *\n * Example: given a production:\n * ABC(DE)?DF\n *\n * The optional '(DE)?' should only be entered if we see 'DE'. a single Token 'D' is not sufficient to distinguish between the two\n * alternatives.\n *\n * @returns A Lookahead function which will return true IFF the parser should parse the Optional production.\n */\nfunction buildLookaheadFuncForOptionalProd(occurrence, ruleGrammar, k, dynamicTokensEnabled, prodType, lookaheadBuilder) {\n var lookAheadPaths = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k);\n var tokenMatcher = areTokenCategoriesNotUsed(lookAheadPaths)\n ? tokens_1.tokenStructuredMatcherNoCategories\n : tokens_1.tokenStructuredMatcher;\n return lookaheadBuilder(lookAheadPaths[0], tokenMatcher, dynamicTokensEnabled);\n}\nexports.buildLookaheadFuncForOptionalProd = buildLookaheadFuncForOptionalProd;\nfunction buildAlternativesLookAheadFunc(alts, hasPredicates, tokenMatcher, dynamicTokensEnabled) {\n var numOfAlts = alts.length;\n var areAllOneTokenLookahead = (0, every_1.default)(alts, function (currAlt) {\n return (0, every_1.default)(currAlt, function (currPath) {\n return currPath.length === 1;\n });\n });\n // This version takes into account the predicates as well.\n if (hasPredicates) {\n /**\n * @returns {number} - The chosen alternative index\n */\n return function (orAlts) {\n // unfortunately the predicates must be extracted every single time\n // as they cannot be cached due to references to parameters(vars) which are no longer valid.\n // note that in the common case of no predicates, no cpu time will be wasted on this (see else block)\n var predicates = (0, map_1.default)(orAlts, function (currAlt) { return currAlt.GATE; });\n for (var t = 0; t < numOfAlts; t++) {\n var currAlt = alts[t];\n var currNumOfPaths = currAlt.length;\n var currPredicate = predicates[t];\n if (currPredicate !== undefined && currPredicate.call(this) === false) {\n // if the predicate does not match there is no point in checking the paths\n continue;\n }\n nextPath: for (var j = 0; j < currNumOfPaths; j++) {\n var currPath = currAlt[j];\n var currPathLength = currPath.length;\n for (var i = 0; i < currPathLength; i++) {\n var nextToken = this.LA(i + 1);\n if (tokenMatcher(nextToken, currPath[i]) === false) {\n // mismatch in current path\n // try the next pth\n continue nextPath;\n }\n }\n // found a full path that matches.\n // this will also work for an empty ALT as the loop will be skipped\n return t;\n }\n // none of the paths for the current alternative matched\n // try the next alternative\n }\n // none of the alternatives could be matched\n return undefined;\n };\n }\n else if (areAllOneTokenLookahead && !dynamicTokensEnabled) {\n // optimized (common) case of all the lookaheads paths requiring only\n // a single token lookahead. These Optimizations cannot work if dynamically defined Tokens are used.\n var singleTokenAlts = (0, map_1.default)(alts, function (currAlt) {\n return (0, flatten_1.default)(currAlt);\n });\n var choiceToAlt_1 = (0, reduce_1.default)(singleTokenAlts, function (result, currAlt, idx) {\n (0, forEach_1.default)(currAlt, function (currTokType) {\n if (!(0, has_1.default)(result, currTokType.tokenTypeIdx)) {\n result[currTokType.tokenTypeIdx] = idx;\n }\n (0, forEach_1.default)(currTokType.categoryMatches, function (currExtendingType) {\n if (!(0, has_1.default)(result, currExtendingType)) {\n result[currExtendingType] = idx;\n }\n });\n });\n return result;\n }, {});\n /**\n * @returns {number} - The chosen alternative index\n */\n return function () {\n var nextToken = this.LA(1);\n return choiceToAlt_1[nextToken.tokenTypeIdx];\n };\n }\n else {\n // optimized lookahead without needing to check the predicates at all.\n // this causes code duplication which is intentional to improve performance.\n /**\n * @returns {number} - The chosen alternative index\n */\n return function () {\n for (var t = 0; t < numOfAlts; t++) {\n var currAlt = alts[t];\n var currNumOfPaths = currAlt.length;\n nextPath: for (var j = 0; j < currNumOfPaths; j++) {\n var currPath = currAlt[j];\n var currPathLength = currPath.length;\n for (var i = 0; i < currPathLength; i++) {\n var nextToken = this.LA(i + 1);\n if (tokenMatcher(nextToken, currPath[i]) === false) {\n // mismatch in current path\n // try the next pth\n continue nextPath;\n }\n }\n // found a full path that matches.\n // this will also work for an empty ALT as the loop will be skipped\n return t;\n }\n // none of the paths for the current alternative matched\n // try the next alternative\n }\n // none of the alternatives could be matched\n return undefined;\n };\n }\n}\nexports.buildAlternativesLookAheadFunc = buildAlternativesLookAheadFunc;\nfunction buildSingleAlternativeLookaheadFunction(alt, tokenMatcher, dynamicTokensEnabled) {\n var areAllOneTokenLookahead = (0, every_1.default)(alt, function (currPath) {\n return currPath.length === 1;\n });\n var numOfPaths = alt.length;\n // optimized (common) case of all the lookaheads paths requiring only\n // a single token lookahead.\n if (areAllOneTokenLookahead && !dynamicTokensEnabled) {\n var singleTokensTypes = (0, flatten_1.default)(alt);\n if (singleTokensTypes.length === 1 &&\n (0, isEmpty_1.default)(singleTokensTypes[0].categoryMatches)) {\n var expectedTokenType = singleTokensTypes[0];\n var expectedTokenUniqueKey_1 = expectedTokenType.tokenTypeIdx;\n return function () {\n return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey_1;\n };\n }\n else {\n var choiceToAlt_2 = (0, reduce_1.default)(singleTokensTypes, function (result, currTokType, idx) {\n result[currTokType.tokenTypeIdx] = true;\n (0, forEach_1.default)(currTokType.categoryMatches, function (currExtendingType) {\n result[currExtendingType] = true;\n });\n return result;\n }, []);\n return function () {\n var nextToken = this.LA(1);\n return choiceToAlt_2[nextToken.tokenTypeIdx] === true;\n };\n }\n }\n else {\n return function () {\n nextPath: for (var j = 0; j < numOfPaths; j++) {\n var currPath = alt[j];\n var currPathLength = currPath.length;\n for (var i = 0; i < currPathLength; i++) {\n var nextToken = this.LA(i + 1);\n if (tokenMatcher(nextToken, currPath[i]) === false) {\n // mismatch in current path\n // try the next pth\n continue nextPath;\n }\n }\n // found a full path that matches.\n return true;\n }\n // none of the paths matched\n return false;\n };\n }\n}\nexports.buildSingleAlternativeLookaheadFunction = buildSingleAlternativeLookaheadFunction;\nvar RestDefinitionFinderWalker = /** @class */ (function (_super) {\n __extends(RestDefinitionFinderWalker, _super);\n function RestDefinitionFinderWalker(topProd, targetOccurrence, targetProdType) {\n var _this = _super.call(this) || this;\n _this.topProd = topProd;\n _this.targetOccurrence = targetOccurrence;\n _this.targetProdType = targetProdType;\n return _this;\n }\n RestDefinitionFinderWalker.prototype.startWalking = function () {\n this.walk(this.topProd);\n return this.restDef;\n };\n RestDefinitionFinderWalker.prototype.checkIsTarget = function (node, expectedProdType, currRest, prevRest) {\n if (node.idx === this.targetOccurrence &&\n this.targetProdType === expectedProdType) {\n this.restDef = currRest.concat(prevRest);\n return true;\n }\n // performance optimization, do not iterate over the entire Grammar ast after we have found the target\n return false;\n };\n RestDefinitionFinderWalker.prototype.walkOption = function (optionProd, currRest, prevRest) {\n if (!this.checkIsTarget(optionProd, PROD_TYPE.OPTION, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, optionProd, currRest, prevRest);\n }\n };\n RestDefinitionFinderWalker.prototype.walkAtLeastOne = function (atLeastOneProd, currRest, prevRest) {\n if (!this.checkIsTarget(atLeastOneProd, PROD_TYPE.REPETITION_MANDATORY, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, atLeastOneProd, currRest, prevRest);\n }\n };\n RestDefinitionFinderWalker.prototype.walkAtLeastOneSep = function (atLeastOneSepProd, currRest, prevRest) {\n if (!this.checkIsTarget(atLeastOneSepProd, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, atLeastOneSepProd, currRest, prevRest);\n }\n };\n RestDefinitionFinderWalker.prototype.walkMany = function (manyProd, currRest, prevRest) {\n if (!this.checkIsTarget(manyProd, PROD_TYPE.REPETITION, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, manyProd, currRest, prevRest);\n }\n };\n RestDefinitionFinderWalker.prototype.walkManySep = function (manySepProd, currRest, prevRest) {\n if (!this.checkIsTarget(manySepProd, PROD_TYPE.REPETITION_WITH_SEPARATOR, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, manySepProd, currRest, prevRest);\n }\n };\n return RestDefinitionFinderWalker;\n}(rest_1.RestWalker));\n/**\n * Returns the definition of a target production in a top level level rule.\n */\nvar InsideDefinitionFinderVisitor = /** @class */ (function (_super) {\n __extends(InsideDefinitionFinderVisitor, _super);\n function InsideDefinitionFinderVisitor(targetOccurrence, targetProdType, targetRef) {\n var _this = _super.call(this) || this;\n _this.targetOccurrence = targetOccurrence;\n _this.targetProdType = targetProdType;\n _this.targetRef = targetRef;\n _this.result = [];\n return _this;\n }\n InsideDefinitionFinderVisitor.prototype.checkIsTarget = function (node, expectedProdName) {\n if (node.idx === this.targetOccurrence &&\n this.targetProdType === expectedProdName &&\n (this.targetRef === undefined || node === this.targetRef)) {\n this.result = node.definition;\n }\n };\n InsideDefinitionFinderVisitor.prototype.visitOption = function (node) {\n this.checkIsTarget(node, PROD_TYPE.OPTION);\n };\n InsideDefinitionFinderVisitor.prototype.visitRepetition = function (node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION);\n };\n InsideDefinitionFinderVisitor.prototype.visitRepetitionMandatory = function (node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_MANDATORY);\n };\n InsideDefinitionFinderVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR);\n };\n InsideDefinitionFinderVisitor.prototype.visitRepetitionWithSeparator = function (node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_WITH_SEPARATOR);\n };\n InsideDefinitionFinderVisitor.prototype.visitAlternation = function (node) {\n this.checkIsTarget(node, PROD_TYPE.ALTERNATION);\n };\n return InsideDefinitionFinderVisitor;\n}(gast_2.GAstVisitor));\nfunction initializeArrayOfArrays(size) {\n var result = new Array(size);\n for (var i = 0; i < size; i++) {\n result[i] = [];\n }\n return result;\n}\n/**\n * A sort of hash function between a Path in the grammar and a string.\n * Note that this returns multiple \"hashes\" to support the scenario of token categories.\n * - A single path with categories may match multiple **actual** paths.\n */\nfunction pathToHashKeys(path) {\n var keys = [\"\"];\n for (var i = 0; i < path.length; i++) {\n var tokType = path[i];\n var longerKeys = [];\n for (var j = 0; j < keys.length; j++) {\n var currShorterKey = keys[j];\n longerKeys.push(currShorterKey + \"_\" + tokType.tokenTypeIdx);\n for (var t = 0; t < tokType.categoryMatches.length; t++) {\n var categoriesKeySuffix = \"_\" + tokType.categoryMatches[t];\n longerKeys.push(currShorterKey + categoriesKeySuffix);\n }\n }\n keys = longerKeys;\n }\n return keys;\n}\n/**\n * Imperative style due to being called from a hot spot\n */\nfunction isUniquePrefixHash(altKnownPathsKeys, searchPathKeys, idx) {\n for (var currAltIdx = 0; currAltIdx < altKnownPathsKeys.length; currAltIdx++) {\n // We only want to test vs the other alternatives\n if (currAltIdx === idx) {\n continue;\n }\n var otherAltKnownPathsKeys = altKnownPathsKeys[currAltIdx];\n for (var searchIdx = 0; searchIdx < searchPathKeys.length; searchIdx++) {\n var searchKey = searchPathKeys[searchIdx];\n if (otherAltKnownPathsKeys[searchKey] === true) {\n return false;\n }\n }\n }\n // None of the SearchPathKeys were found in any of the other alternatives\n return true;\n}\nfunction lookAheadSequenceFromAlternatives(altsDefs, k) {\n var partialAlts = (0, map_1.default)(altsDefs, function (currAlt) {\n return (0, interpreter_1.possiblePathsFrom)([currAlt], 1);\n });\n var finalResult = initializeArrayOfArrays(partialAlts.length);\n var altsHashes = (0, map_1.default)(partialAlts, function (currAltPaths) {\n var dict = {};\n (0, forEach_1.default)(currAltPaths, function (item) {\n var keys = pathToHashKeys(item.partialPath);\n (0, forEach_1.default)(keys, function (currKey) {\n dict[currKey] = true;\n });\n });\n return dict;\n });\n var newData = partialAlts;\n // maxLookahead loop\n for (var pathLength = 1; pathLength <= k; pathLength++) {\n var currDataset = newData;\n newData = initializeArrayOfArrays(currDataset.length);\n var _loop_1 = function (altIdx) {\n var currAltPathsAndSuffixes = currDataset[altIdx];\n // paths in current alternative loop\n for (var currPathIdx = 0; currPathIdx < currAltPathsAndSuffixes.length; currPathIdx++) {\n var currPathPrefix = currAltPathsAndSuffixes[currPathIdx].partialPath;\n var suffixDef = currAltPathsAndSuffixes[currPathIdx].suffixDef;\n var prefixKeys = pathToHashKeys(currPathPrefix);\n var isUnique = isUniquePrefixHash(altsHashes, prefixKeys, altIdx);\n // End of the line for this path.\n if (isUnique || (0, isEmpty_1.default)(suffixDef) || currPathPrefix.length === k) {\n var currAltResult = finalResult[altIdx];\n // TODO: Can we implement a containsPath using Maps/Dictionaries?\n if (containsPath(currAltResult, currPathPrefix) === false) {\n currAltResult.push(currPathPrefix);\n // Update all new keys for the current path.\n for (var j = 0; j < prefixKeys.length; j++) {\n var currKey = prefixKeys[j];\n altsHashes[altIdx][currKey] = true;\n }\n }\n }\n // Expand longer paths\n else {\n var newPartialPathsAndSuffixes = (0, interpreter_1.possiblePathsFrom)(suffixDef, pathLength + 1, currPathPrefix);\n newData[altIdx] = newData[altIdx].concat(newPartialPathsAndSuffixes);\n // Update keys for new known paths\n (0, forEach_1.default)(newPartialPathsAndSuffixes, function (item) {\n var prefixKeys = pathToHashKeys(item.partialPath);\n (0, forEach_1.default)(prefixKeys, function (key) {\n altsHashes[altIdx][key] = true;\n });\n });\n }\n }\n };\n // alternatives loop\n for (var altIdx = 0; altIdx < currDataset.length; altIdx++) {\n _loop_1(altIdx);\n }\n }\n return finalResult;\n}\nexports.lookAheadSequenceFromAlternatives = lookAheadSequenceFromAlternatives;\nfunction getLookaheadPathsForOr(occurrence, ruleGrammar, k, orProd) {\n var visitor = new InsideDefinitionFinderVisitor(occurrence, PROD_TYPE.ALTERNATION, orProd);\n ruleGrammar.accept(visitor);\n return lookAheadSequenceFromAlternatives(visitor.result, k);\n}\nexports.getLookaheadPathsForOr = getLookaheadPathsForOr;\nfunction getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k) {\n var insideDefVisitor = new InsideDefinitionFinderVisitor(occurrence, prodType);\n ruleGrammar.accept(insideDefVisitor);\n var insideDef = insideDefVisitor.result;\n var afterDefWalker = new RestDefinitionFinderWalker(ruleGrammar, occurrence, prodType);\n var afterDef = afterDefWalker.startWalking();\n var insideFlat = new gast_1.Alternative({ definition: insideDef });\n var afterFlat = new gast_1.Alternative({ definition: afterDef });\n return lookAheadSequenceFromAlternatives([insideFlat, afterFlat], k);\n}\nexports.getLookaheadPathsForOptionalProd = getLookaheadPathsForOptionalProd;\nfunction containsPath(alternative, searchPath) {\n compareOtherPath: for (var i = 0; i < alternative.length; i++) {\n var otherPath = alternative[i];\n if (otherPath.length !== searchPath.length) {\n continue;\n }\n for (var j = 0; j < otherPath.length; j++) {\n var searchTok = searchPath[j];\n var otherTok = otherPath[j];\n var matchingTokens = searchTok === otherTok ||\n otherTok.categoryMatchesMap[searchTok.tokenTypeIdx] !== undefined;\n if (matchingTokens === false) {\n continue compareOtherPath;\n }\n }\n return true;\n }\n return false;\n}\nexports.containsPath = containsPath;\nfunction isStrictPrefixOfPath(prefix, other) {\n return (prefix.length < other.length &&\n (0, every_1.default)(prefix, function (tokType, idx) {\n var otherTokType = other[idx];\n return (tokType === otherTokType ||\n otherTokType.categoryMatchesMap[tokType.tokenTypeIdx]);\n }));\n}\nexports.isStrictPrefixOfPath = isStrictPrefixOfPath;\nfunction areTokenCategoriesNotUsed(lookAheadPaths) {\n return (0, every_1.default)(lookAheadPaths, function (singleAltPaths) {\n return (0, every_1.default)(singleAltPaths, function (singlePath) {\n return (0, every_1.default)(singlePath, function (token) { return (0, isEmpty_1.default)(token.categoryMatches); });\n });\n });\n}\nexports.areTokenCategoriesNotUsed = areTokenCategoriesNotUsed;\n//# sourceMappingURL=lookahead.js.map","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EarlyExitException = exports.NotAllInputParsedException = exports.NoViableAltException = exports.MismatchedTokenException = exports.isRecognitionException = void 0;\nvar includes_1 = __importDefault(require(\"lodash/includes\"));\nvar MISMATCHED_TOKEN_EXCEPTION = \"MismatchedTokenException\";\nvar NO_VIABLE_ALT_EXCEPTION = \"NoViableAltException\";\nvar EARLY_EXIT_EXCEPTION = \"EarlyExitException\";\nvar NOT_ALL_INPUT_PARSED_EXCEPTION = \"NotAllInputParsedException\";\nvar RECOGNITION_EXCEPTION_NAMES = [\n MISMATCHED_TOKEN_EXCEPTION,\n NO_VIABLE_ALT_EXCEPTION,\n EARLY_EXIT_EXCEPTION,\n NOT_ALL_INPUT_PARSED_EXCEPTION\n];\nObject.freeze(RECOGNITION_EXCEPTION_NAMES);\n// hacks to bypass no support for custom Errors in javascript/typescript\nfunction isRecognitionException(error) {\n // can't do instanceof on hacked custom js exceptions\n return (0, includes_1.default)(RECOGNITION_EXCEPTION_NAMES, error.name);\n}\nexports.isRecognitionException = isRecognitionException;\nvar RecognitionException = /** @class */ (function (_super) {\n __extends(RecognitionException, _super);\n function RecognitionException(message, token) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n _this.token = token;\n _this.resyncedTokens = [];\n // fix prototype chain when typescript target is ES5\n Object.setPrototypeOf(_this, _newTarget.prototype);\n /* istanbul ignore next - V8 workaround to remove constructor from stacktrace when typescript target is ES5 */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, _this.constructor);\n }\n return _this;\n }\n return RecognitionException;\n}(Error));\nvar MismatchedTokenException = /** @class */ (function (_super) {\n __extends(MismatchedTokenException, _super);\n function MismatchedTokenException(message, token, previousToken) {\n var _this = _super.call(this, message, token) || this;\n _this.previousToken = previousToken;\n _this.name = MISMATCHED_TOKEN_EXCEPTION;\n return _this;\n }\n return MismatchedTokenException;\n}(RecognitionException));\nexports.MismatchedTokenException = MismatchedTokenException;\nvar NoViableAltException = /** @class */ (function (_super) {\n __extends(NoViableAltException, _super);\n function NoViableAltException(message, token, previousToken) {\n var _this = _super.call(this, message, token) || this;\n _this.previousToken = previousToken;\n _this.name = NO_VIABLE_ALT_EXCEPTION;\n return _this;\n }\n return NoViableAltException;\n}(RecognitionException));\nexports.NoViableAltException = NoViableAltException;\nvar NotAllInputParsedException = /** @class */ (function (_super) {\n __extends(NotAllInputParsedException, _super);\n function NotAllInputParsedException(message, token) {\n var _this = _super.call(this, message, token) || this;\n _this.name = NOT_ALL_INPUT_PARSED_EXCEPTION;\n return _this;\n }\n return NotAllInputParsedException;\n}(RecognitionException));\nexports.NotAllInputParsedException = NotAllInputParsedException;\nvar EarlyExitException = /** @class */ (function (_super) {\n __extends(EarlyExitException, _super);\n function EarlyExitException(message, token, previousToken) {\n var _this = _super.call(this, message, token) || this;\n _this.previousToken = previousToken;\n _this.name = EARLY_EXIT_EXCEPTION;\n return _this;\n }\n return EarlyExitException;\n}(RecognitionException));\nexports.EarlyExitException = EarlyExitException;\n//# sourceMappingURL=exceptions_public.js.map","import objFactory from \"_src/engine/factories/object\";\nimport Camera from \"_src/engine/camera\";\nimport FrameBuffer from \"_src/engine/framebuffer\";\nimport primitiveFactory from \"_src/engine/factories/primitive\";\nimport {\n primitiveType,\n blendFactor,\n pixelBufferType,\n stencilFunc,\n stencilValue,\n attachmentId\n} from \"_src/engine/constants\";\n\nimport Pass from \"_src/render_graph/pass\";\nimport resourceManager from \"_src/render_graph/resource_manager\";\nimport ScreenShader from \"_src/shaders/screen/screen\";\nimport OutlineShader from \"_src/shaders/outline/outline\";\nimport CopyShader from \"_src/shaders/copy/copy\";\nimport BlurShader from \"_src/shaders/blur/blur\";\nimport config from \"_src/config\";\nimport {screenUtils} from \"_src/client/utils\";\n\nconst BLUR_SCENE_SIZE = 0.5;\n\nexport const OBJECT_HIGHLIGHT = 0;\nexport const CAD_HIGHLIGHT = 1;\n\nexport default class HighlightPass extends Pass {\n\n constructor(attachmentsStorage, camera) {\n\n super(attachmentsStorage);\n\n this.glowEffect = false;\n\n this.init(camera);\n\n }\n\n init(camera) {\n\n const maskScene = this._addScene(camera);\n const highlightScene = this._addScene(camera);\n\n maskScene.clearedStencil = false;\n maskScene.clearedDepth = false;\n\n highlightScene.clearedStencil = false;\n highlightScene.clearedDepth = false;\n\n // Mask\n const maskShader = new ScreenShader({transparent : true, depthTest: false});\n maskShader.enableStencilTest();\n maskShader.setStencilFunction(stencilFunc.EQUAL);\n maskShader.setStencilReferenceValue(stencilValue.HIGHLIGHTED_OBJECT);\n\n const maskScreenPlane = objFactory.createDrawable(maskShader);\n maskScreenPlane.addGeometryChunk(primitiveFactory.create(primitiveType.SCREEN_QUAD));\n maskScreenPlane.setDiffuseColor(1.0, 1.0, 1.0);\n maskScene.add(maskScreenPlane);\n\n // Outline\n const width = 1 * screenUtils.getPixelRatio();\n const widthGlow = 3 * screenUtils.getPixelRatio();\n const outlineShader = new OutlineShader({transparent : true,\n width: this.glowEffect ? widthGlow : width,\n depthTest: false,\n outlineOnly: !this.glowEffect});\n\n const highlightScreenPlane = objFactory.createDrawable(outlineShader);\n highlightScreenPlane.addGeometryChunk(primitiveFactory.create(primitiveType.SCREEN_QUAD));\n highlightScene.add(highlightScreenPlane);\n\n if (this.glowEffect) {\n this._createGlowScenes(camera);\n } else {\n highlightScene.clearedColor = false;\n }\n\n }\n\n update() {\n\n const scenes = this.getScenes();\n const width = scenes[0].camera.viewport[2];\n const height = scenes[0].camera.viewport[3];\n\n if (this.glowEffect) {\n\n const { maskFramebuffer, outlineFramebuffer,\n blurHorFramebuffer, blurVertFramebuffer,\n combineFramebuffer } = this._initGlowFramebuffers(width, height);\n\n scenes[0].setFramebuffer(maskFramebuffer);\n scenes[1].setFramebuffer(outlineFramebuffer);\n scenes[2].setFramebuffer(blurHorFramebuffer);\n scenes[3].setFramebuffer(blurVertFramebuffer);\n scenes[4].setFramebuffer(combineFramebuffer);\n\n } else {\n\n const { maskFramebuffer, outlineFramebuffer } = this._initFramebuffers(width, height);\n\n scenes[0].setFramebuffer(maskFramebuffer);\n scenes[1].setFramebuffer(outlineFramebuffer);\n\n }\n\n }\n\n resize(width, height) {\n\n const scenes = this.getScenes();\n\n scenes[0].resize(width, height);\n scenes[1].resize(width, height);\n\n if (this.glowEffect) {\n scenes[2].resize(width * BLUR_SCENE_SIZE, height * BLUR_SCENE_SIZE);\n scenes[3].resize(width * BLUR_SCENE_SIZE, height * BLUR_SCENE_SIZE);\n scenes[4].resize(width, height);\n }\n\n }\n\n _initFramebuffers(width, height) {\n\n const inputColor = this.attachmentsStorage[attachmentId.BASE_COLOR_TEXTURE];\n const mainDepthStencil = this.attachmentsStorage[attachmentId.WORKSPACE_DEPTH_STENCIL];\n\n const maskColor = resourceManager.initBuffer(pixelBufferType.T_RGBA, { width, height });\n\n const maskFramebuffer = new FrameBuffer([maskColor], mainDepthStencil);\n const outlineFramebuffer = new FrameBuffer([inputColor], mainDepthStencil);\n\n const outlineScene = this.getSecondScene();\n const outlineScreenPlane = this.getScreenQuad(outlineScene);\n outlineScreenPlane.setTexture(maskColor, 0);\n\n return { maskFramebuffer, outlineFramebuffer };\n\n }\n\n _createGlowScenes(camera) {\n\n const halfSizeCamera = new Camera();\n const blurHorScene = this._addScene(halfSizeCamera);\n const blurVertScene = this._addScene(halfSizeCamera);\n const combineScene = this._addScene(camera);\n\n blurHorScene.clearedDepth = false;\n blurVertScene.clearedDepth = false;\n combineScene.clearedColor = false;\n combineScene.clearedStencil = false;\n\n // Horizontal Blur\n const blurHorShader = new BlurShader({horDir: true});\n const blurHorScreenPlane = objFactory.createDrawable(blurHorShader);\n blurHorScreenPlane.addGeometryChunk(primitiveFactory.create(primitiveType.SCREEN_QUAD));\n blurHorScene.add(blurHorScreenPlane);\n\n // Vertical Blur\n const blurVertShader = new BlurShader({horDir: false});\n const blurVertScreenPlane = objFactory.createDrawable(blurVertShader);\n blurVertScreenPlane.addGeometryChunk(primitiveFactory.create(primitiveType.SCREEN_QUAD));\n blurVertScene.add(blurVertScreenPlane);\n\n // Combine\n const combineShader = new CopyShader({transparent : true});\n combineShader.setSourceBlendFactor(blendFactor.ONE);\n const combineScreenPlane = objFactory.createDrawable(combineShader);\n combineScreenPlane.addGeometryChunk(primitiveFactory.create(primitiveType.SCREEN_QUAD));\n combineScene.add(combineScreenPlane);\n\n combineShader.enableStencilTest();\n combineShader.setStencilFunction(stencilFunc.NOTEQUAL);\n combineShader.setStencilReferenceValue(stencilValue.HIGHLIGHTED_OBJECT);\n\n }\n\n _initGlowFramebuffers(width, height) {\n\n const scenes = this.getScenes();\n\n const inputColor = this.attachmentsStorage[attachmentId.BASE_COLOR_TEXTURE];\n const mainDepthStencil = this.attachmentsStorage[attachmentId.WORKSPACE_DEPTH_STENCIL];\n\n // Mask\n const maskColor = resourceManager.initBuffer(pixelBufferType.T_RGBA, { width, height });\n const maskFramebuffer = new FrameBuffer([maskColor], mainDepthStencil);\n\n // Outline\n const outlineColor = resourceManager.initBuffer(pixelBufferType.T_RGBA, { width, height });\n\n const outlineFramebuffer = new FrameBuffer([outlineColor], mainDepthStencil);\n const outlineScene = scenes[1];\n const outlineScreenPlane = this.getScreenQuad(outlineScene);\n outlineScreenPlane.setTexture(maskColor, 0);\n\n // Horizontal Blur\n const blurHorColor = resourceManager.initBuffer(pixelBufferType.T_RGBA, { width: width * BLUR_SCENE_SIZE,\n height: height * BLUR_SCENE_SIZE });\n const blurHorFramebuffer = new FrameBuffer([blurHorColor], null);\n const blurHorScene = scenes[2];\n const blurHorScreenPlane = this.getScreenQuad(blurHorScene);\n blurHorScreenPlane.setTexture(outlineColor, 0);\n\n // Vertical Blur\n const blurVertColor = resourceManager.initBuffer(pixelBufferType.T_RGBA, { width: width * BLUR_SCENE_SIZE,\n height: height * BLUR_SCENE_SIZE });\n const blurVertFramebuffer = new FrameBuffer([blurVertColor], null);\n const blurVertScene = scenes[3];\n const blurVertScreenPlane = this.getScreenQuad(blurVertScene);\n blurVertScreenPlane.setTexture(blurHorColor, 0);\n\n // Combine\n const combineFramebuffer = new FrameBuffer([inputColor], mainDepthStencil);\n\n const combineScene = this.getLastScene();\n const combineScreenPlane = this.getScreenQuad(combineScene);\n combineScreenPlane.setTexture(blurVertColor, 0);\n\n return { maskFramebuffer, outlineFramebuffer, blurHorFramebuffer, blurVertFramebuffer, combineFramebuffer };\n\n }\n\n setHighlightSettings(mode) {\n const outlineColor = mode === OBJECT_HIGHLIGHT ? config.outlineColor : config.cadOutlineColor;\n const highlightScene = this.getSecondScene();\n const highlightScreenPlane = this.getScreenQuad(highlightScene);\n highlightScreenPlane.setDiffuseColor(outlineColor.r, outlineColor.g, outlineColor.b);\n }\n\n}\n","import workerManager from \"_src/engine/worker_manager.js\";\nimport {messageType} from \"_src/engine/ipc.js\";\nimport workerPool from \"_src/engine/worker_pool\";\n\nimport zstdCoder from \"_zstdCoderModule\";\nimport LoaderBase from \"_src/engine/loaders/loader_base\";\nimport {readChunk} from \"_src/engine/loaders/utils\"\nimport config from \"_src/config\";\n\nexport default class ZStdLoader extends LoaderBase {\n\n constructor(verbose) {\n super();\n this._verbose = verbose;\n }\n\n _checkVerbosity() {\n return this._verbose;\n }\n\n async loadMain(buffer) {\n const coder = await zstdCoder.getCoder();\n const chunkData = readChunk(buffer, coder);\n const geometry = this.prepareGeometry(chunkData);\n\n return geometry;\n }\n\n async loadWorker(buffer, tid) {\n const message = {\n type : messageType.PARSE_ZSTD,\n file : buffer\n };\n const transfer = [buffer];\n const chunkData = (await workerManager.sendMessage(message, transfer, tid)).data;\n const geometry = this.prepareGeometry(chunkData);\n\n return geometry;\n }\n\n stopLoading() {\n workerManager.terminateByType(messageType.PARSE_ZSTD);\n }\n\n cleanup() {\n workerPool.cleanup(messageType.PARSE_ZSTD);\n return Promise.resolve();\n }\n\n}\n\nexport async function initZSTDWorkers() {\n const promises = [];\n for (let i=0; i typeof Symbol === \"function\";\nexport const hasSymbol = (name) => hasSymbols() && Boolean(Symbol[name]);\nexport const getSymbol = (name) => hasSymbol(name) ? Symbol[name] : \"@@\" + name;\nexport function registerObservableSymbol() {\n if (hasSymbols() && !hasSymbol(\"observable\")) {\n Symbol.observable = Symbol(\"observable\");\n }\n}\nif (!hasSymbol(\"asyncIterator\")) {\n Symbol.asyncIterator = Symbol.asyncIterator || Symbol.for(\"Symbol.asyncIterator\");\n}\n","/**\n * Based on \n * At commit: f63849a8c60af5d514efc8e9d6138d8273c49ad6\n */\nimport \"./symbols\";\nimport { getSymbol, hasSymbol, hasSymbols } from \"./_symbols\";\nconst SymbolIterator = getSymbol(\"iterator\");\nconst SymbolObservable = getSymbol(\"observable\");\nconst SymbolSpecies = getSymbol(\"species\");\n// === Abstract Operations ===\nfunction getMethod(obj, key) {\n const value = obj[key];\n if (value == null) {\n return undefined;\n }\n if (typeof value !== \"function\") {\n throw new TypeError(value + \" is not a function\");\n }\n return value;\n}\nfunction getSpecies(obj) {\n let ctor = obj.constructor;\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n if (ctor === null) {\n ctor = undefined;\n }\n }\n return ctor !== undefined ? ctor : Observable;\n}\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\nfunction hostReportError(error) {\n if (hostReportError.log) {\n hostReportError.log(error);\n }\n else {\n setTimeout(() => { throw error; }, 0);\n }\n}\nfunction enqueue(fn) {\n Promise.resolve().then(() => {\n try {\n fn();\n }\n catch (e) {\n hostReportError(e);\n }\n });\n}\nfunction cleanupSubscription(subscription) {\n const cleanup = subscription._cleanup;\n if (cleanup === undefined) {\n return;\n }\n subscription._cleanup = undefined;\n if (!cleanup) {\n return;\n }\n try {\n if (typeof cleanup === \"function\") {\n cleanup();\n }\n else {\n const unsubscribe = getMethod(cleanup, \"unsubscribe\");\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n }\n catch (e) {\n hostReportError(e);\n }\n}\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = \"closed\";\n}\nfunction flushSubscription(subscription) {\n const queue = subscription._queue;\n if (!queue) {\n return;\n }\n subscription._queue = undefined;\n subscription._state = \"ready\";\n for (const item of queue) {\n notifySubscription(subscription, item.type, item.value);\n if (subscription._state === \"closed\") {\n break;\n }\n }\n}\nfunction notifySubscription(subscription, type, value) {\n subscription._state = \"running\";\n const observer = subscription._observer;\n try {\n const m = observer ? getMethod(observer, type) : undefined;\n switch (type) {\n case \"next\":\n if (m)\n m.call(observer, value);\n break;\n case \"error\":\n closeSubscription(subscription);\n if (m)\n m.call(observer, value);\n else\n throw value;\n break;\n case \"complete\":\n closeSubscription(subscription);\n if (m)\n m.call(observer);\n break;\n }\n }\n catch (e) {\n hostReportError(e);\n }\n if (subscription._state === \"closed\") {\n cleanupSubscription(subscription);\n }\n else if (subscription._state === \"running\") {\n subscription._state = \"ready\";\n }\n}\nfunction onNotify(subscription, type, value) {\n if (subscription._state === \"closed\") {\n return;\n }\n if (subscription._state === \"buffering\") {\n subscription._queue = subscription._queue || [];\n subscription._queue.push({ type, value });\n return;\n }\n if (subscription._state !== \"ready\") {\n subscription._state = \"buffering\";\n subscription._queue = [{ type, value }];\n enqueue(() => flushSubscription(subscription));\n return;\n }\n notifySubscription(subscription, type, value);\n}\nexport class Subscription {\n constructor(observer, subscriber) {\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = \"initializing\";\n const subscriptionObserver = new SubscriptionObserver(this);\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n }\n catch (e) {\n subscriptionObserver.error(e);\n }\n if (this._state === \"initializing\") {\n this._state = \"ready\";\n }\n }\n get closed() {\n return this._state === \"closed\";\n }\n unsubscribe() {\n if (this._state !== \"closed\") {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n}\nexport class SubscriptionObserver {\n constructor(subscription) { this._subscription = subscription; }\n get closed() { return this._subscription._state === \"closed\"; }\n next(value) { onNotify(this._subscription, \"next\", value); }\n error(value) { onNotify(this._subscription, \"error\", value); }\n complete() { onNotify(this._subscription, \"complete\"); }\n}\n/**\n * The basic Observable class. This primitive is used to wrap asynchronous\n * data streams in a common standardized data type that is interoperable\n * between libraries and can be composed to represent more complex processes.\n */\nexport class Observable {\n constructor(subscriber) {\n if (!(this instanceof Observable)) {\n throw new TypeError(\"Observable cannot be called as a function\");\n }\n if (typeof subscriber !== \"function\") {\n throw new TypeError(\"Observable initializer must be a function\");\n }\n this._subscriber = subscriber;\n }\n subscribe(nextOrObserver, onError, onComplete) {\n if (typeof nextOrObserver !== \"object\" || nextOrObserver === null) {\n nextOrObserver = {\n next: nextOrObserver,\n error: onError,\n complete: onComplete\n };\n }\n return new Subscription(nextOrObserver, this._subscriber);\n }\n pipe(first, ...mappers) {\n // tslint:disable-next-line no-this-assignment\n let intermediate = this;\n for (const mapper of [first, ...mappers]) {\n intermediate = mapper(intermediate);\n }\n return intermediate;\n }\n tap(nextOrObserver, onError, onComplete) {\n const tapObserver = typeof nextOrObserver !== \"object\" || nextOrObserver === null\n ? {\n next: nextOrObserver,\n error: onError,\n complete: onComplete\n }\n : nextOrObserver;\n return new Observable(observer => {\n return this.subscribe({\n next(value) {\n tapObserver.next && tapObserver.next(value);\n observer.next(value);\n },\n error(error) {\n tapObserver.error && tapObserver.error(error);\n observer.error(error);\n },\n complete() {\n tapObserver.complete && tapObserver.complete();\n observer.complete();\n },\n start(subscription) {\n tapObserver.start && tapObserver.start(subscription);\n }\n });\n });\n }\n forEach(fn) {\n return new Promise((resolve, reject) => {\n if (typeof fn !== \"function\") {\n reject(new TypeError(fn + \" is not a function\"));\n return;\n }\n function done() {\n subscription.unsubscribe();\n resolve(undefined);\n }\n const subscription = this.subscribe({\n next(value) {\n try {\n fn(value, done);\n }\n catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error(error) {\n reject(error);\n },\n complete() {\n resolve(undefined);\n }\n });\n });\n }\n map(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(fn + \" is not a function\");\n }\n const C = getSpecies(this);\n return new C(observer => this.subscribe({\n next(value) {\n let propagatedValue = value;\n try {\n propagatedValue = fn(value);\n }\n catch (e) {\n return observer.error(e);\n }\n observer.next(propagatedValue);\n },\n error(e) { observer.error(e); },\n complete() { observer.complete(); },\n }));\n }\n filter(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(fn + \" is not a function\");\n }\n const C = getSpecies(this);\n return new C(observer => this.subscribe({\n next(value) {\n try {\n if (!fn(value))\n return;\n }\n catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error(e) { observer.error(e); },\n complete() { observer.complete(); },\n }));\n }\n reduce(fn, seed) {\n if (typeof fn !== \"function\") {\n throw new TypeError(fn + \" is not a function\");\n }\n const C = getSpecies(this);\n const hasSeed = arguments.length > 1;\n let hasValue = false;\n let acc = seed;\n return new C(observer => this.subscribe({\n next(value) {\n const first = !hasValue;\n hasValue = true;\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n }\n catch (e) {\n return observer.error(e);\n }\n }\n else {\n acc = value;\n }\n },\n error(e) { observer.error(e); },\n complete() {\n if (!hasValue && !hasSeed) {\n return observer.error(new TypeError(\"Cannot reduce an empty sequence\"));\n }\n observer.next(acc);\n observer.complete();\n },\n }));\n }\n concat(...sources) {\n const C = getSpecies(this);\n return new C(observer => {\n let subscription;\n let index = 0;\n function startNext(next) {\n subscription = next.subscribe({\n next(v) { observer.next(v); },\n error(e) { observer.error(e); },\n complete() {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n }\n else {\n startNext(C.from(sources[index++]));\n }\n },\n });\n }\n startNext(this);\n return () => {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n flatMap(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(fn + \" is not a function\");\n }\n const C = getSpecies(this);\n return new C(observer => {\n const subscriptions = [];\n const outer = this.subscribe({\n next(value) {\n let normalizedValue;\n if (fn) {\n try {\n normalizedValue = fn(value);\n }\n catch (e) {\n return observer.error(e);\n }\n }\n else {\n normalizedValue = value;\n }\n const inner = C.from(normalizedValue).subscribe({\n next(innerValue) { observer.next(innerValue); },\n error(e) { observer.error(e); },\n complete() {\n const i = subscriptions.indexOf(inner);\n if (i >= 0)\n subscriptions.splice(i, 1);\n completeIfDone();\n },\n });\n subscriptions.push(inner);\n },\n error(e) { observer.error(e); },\n complete() { completeIfDone(); },\n });\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) {\n observer.complete();\n }\n }\n return () => {\n subscriptions.forEach(s => s.unsubscribe());\n outer.unsubscribe();\n };\n });\n }\n [(Symbol.observable, SymbolObservable)]() { return this; }\n static from(x) {\n const C = (typeof this === \"function\" ? this : Observable);\n if (x == null) {\n throw new TypeError(x + \" is not an object\");\n }\n const observableMethod = getMethod(x, SymbolObservable);\n if (observableMethod) {\n const observable = observableMethod.call(x);\n if (Object(observable) !== observable) {\n throw new TypeError(observable + \" is not an object\");\n }\n if (isObservable(observable) && observable.constructor === C) {\n return observable;\n }\n return new C(observer => observable.subscribe(observer));\n }\n if (hasSymbol(\"iterator\")) {\n const iteratorMethod = getMethod(x, SymbolIterator);\n if (iteratorMethod) {\n return new C(observer => {\n enqueue(() => {\n if (observer.closed)\n return;\n for (const item of iteratorMethod.call(x)) {\n observer.next(item);\n if (observer.closed)\n return;\n }\n observer.complete();\n });\n });\n }\n }\n if (Array.isArray(x)) {\n return new C(observer => {\n enqueue(() => {\n if (observer.closed)\n return;\n for (const item of x) {\n observer.next(item);\n if (observer.closed)\n return;\n }\n observer.complete();\n });\n });\n }\n throw new TypeError(x + \" is not observable\");\n }\n static of(...items) {\n const C = (typeof this === \"function\" ? this : Observable);\n return new C(observer => {\n enqueue(() => {\n if (observer.closed)\n return;\n for (const item of items) {\n observer.next(item);\n if (observer.closed)\n return;\n }\n observer.complete();\n });\n });\n }\n static get [SymbolSpecies]() { return this; }\n}\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol(\"extensions\"), {\n value: {\n symbol: SymbolObservable,\n hostReportError,\n },\n configurable: true,\n });\n}\nexport default Observable;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/// \n// tslint:disable max-classes-per-file\nimport { $errors, $events, $terminate, $worker } from \"../symbols\";\n/** Event as emitted by worker thread. Subscribe to using `Thread.events(thread)`. */\nexport var WorkerEventType;\n(function (WorkerEventType) {\n WorkerEventType[\"internalError\"] = \"internalError\";\n WorkerEventType[\"message\"] = \"message\";\n WorkerEventType[\"termination\"] = \"termination\";\n})(WorkerEventType || (WorkerEventType = {}));\n","var libSquish = require('./squish.js');\n\nvar GetStorageRequirements = libSquish.cwrap('GetStorageRequirements', 'number', ['number', 'number', 'number']);\nvar CompressImage = libSquish.cwrap('CompressImage', 'void', ['number', 'number', 'number', 'number', 'number']);\nvar DecompressImage = libSquish.cwrap('DecompressImage', 'void', ['number', 'number', 'number', 'number', 'number']);\n\n/**\n * get an emscripten pointer to a typed array\n *\n * @param {Uint8Array} sourceData\n * @returns {int}\n */\nfunction pointerFromData(sourceData) {\n var buf = libSquish._malloc(sourceData.length * 4);\n libSquish.HEAPU8.set(sourceData, buf);\n return buf;\n}\n\n/**\n *\n * @param pointer\n * @param size\n * @return {Uint8Array}\n */\nfunction getDataFromPointer(pointer, size) {\n return new Uint8Array(libSquish.HEAPU8.buffer, pointer, size);\n}\n\n// export \"raw\" function for use by other emscripten projects\nexports.GetStorageRequirements = GetStorageRequirements;\nexports.CompressImage = CompressImage;\nexports.DecompressImage = DecompressImage;\n\n/**\n *\n * @param {Uint8Array} inputData\n * @param {int} width\n * @param {int} height\n * @param {int} flags\n * @return {Uint8Array}\n */\nexports.compress = function (inputData, width, height, flags) {\n var source = pointerFromData(inputData);\n var targetSize = GetStorageRequirements(width, height, flags);\n var pointer = libSquish._malloc(targetSize);\n CompressImage(source, width, height, pointer, flags);\n var out = getDataFromPointer(pointer, targetSize);\n libSquish._free(source);\n libSquish._free(pointer);\n return out;\n};\n\n/**\n *\n * @param {Uint8Array} inputData\n * @param {int} width\n * @param {int} height\n * @param {int} flags\n * @return {Uint8Array}\n */\nexports.decompress = function (inputData, width, height, flags) {\n var source = pointerFromData(inputData);\n var targetSize = width * height * 4;\n var pointer = libSquish._malloc(targetSize);\n DecompressImage(pointer, width, height, source, flags);\n var out = getDataFromPointer(pointer, width * height * 4);\n libSquish._free(source);\n libSquish._free(pointer);\n return out;\n};\n\nexports.flags = {\n // Use DXT1 compression.\n DXT1 : ( 1 << 0 ),\n // Use DXT3 compression.\n DXT3 : ( 1 << 1 ),\n // Use DXT5 compression.\n DXT5 : ( 1 << 2 ),\n // Use a very slow but very high quality colour compressor.\n ColourIterativeClusterFit: ( 1 << 8 ),\n //! Use a slow but high quality colour compressor (the default).\n ColourClusterFit : ( 1 << 3 ),\n //! Use a fast but low quality colour compressor.\n ColourRangeFit : ( 1 << 4 ),\n //! Use a perceptual metric for colour error (the default).\n ColourMetricPerceptual : ( 1 << 5 ),\n //! Use a uniform metric for colour error.\n ColourMetricUniform : ( 1 << 6 ),\n //! Weight the colour by alpha during cluster fit (disabled by default).\n WeightColourByAlpha : ( 1 << 7 )\n};\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\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","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map\n","import {vec3} from \"_src/libs/gl-matrix\";\n\nconst vec3Tmp = vec3.create();\n\nexport function buildNormals(indices, positions, normals, normalize) {\n for (let i = 0; i < indices.length; i += 3) {\n const ind0 = indices[i];\n const ind1 = indices[i + 1];\n const ind2 = indices[i + 2];\n\n const triangleNormal = calcTriangleNormal(vec3Tmp, i, indices, positions);\n\n const offset0 = 3 * ind0;\n const offset1 = 3 * ind1;\n const offset2 = 3 * ind2;\n\n normals[offset0] += triangleNormal[0];\n normals[offset0 + 1] += triangleNormal[1];\n normals[offset0 + 2] += triangleNormal[2];\n\n normals[offset1] += triangleNormal[0];\n normals[offset1 + 1] += triangleNormal[1];\n normals[offset1 + 2] += triangleNormal[2];\n\n normals[offset2] += triangleNormal[0];\n normals[offset2 + 1] += triangleNormal[1];\n normals[offset2 + 2] += triangleNormal[2];\n }\n\n if (normalize) {\n normalizeNormals(normals);\n }\n}\n\nfunction normalizeNormals(normals) {\n for (let i = 0; i < normals.length; i += 3) {\n const sqrtLen = Math.sqrt(normals[i] * normals[i] + normals[i+1] * normals[i+1] + normals[i+2] * normals[i+2]);\n if (sqrtLen != 0.0) {\n normals[i] /= sqrtLen;\n normals[i + 1] /= sqrtLen;\n normals[i + 2] /= sqrtLen;\n }\n }\n}\n\nexport const rebuildVerticesNormalsMask = (function() {\n const vec3Tmp = vec3.create();\n\n function markVerticesToRecalculate(indices, normals, mask) {\n\n for (let i = 0; i < indices.length; i += 3) {\n\n const ind0 = indices[i];\n const ind1 = indices[i + 1];\n const ind2 = indices[i + 2];\n\n const m0 = mask[ind0];\n const m1 = mask[ind1];\n const m2 = mask[ind2];\n\n if (m0 == 1 || m1 == 1 || m2 == 1) {\n\n const offset0 = ind0 * 3;\n const offset1 = ind1 * 3;\n const offset2 = ind2 * 3;\n\n normals[offset0] = 0.0;\n normals[offset0 + 1] = 0.0;\n normals[offset0 + 2] = 0.0;\n\n normals[offset1] = 0.0;\n normals[offset1 + 1] = 0.0;\n normals[offset1 + 2] = 0.0;\n\n normals[offset2] = 0.0;\n normals[offset2 + 1] = 0.0;\n normals[offset2 + 2] = 0.0;\n\n if (!m0) mask[ind0] = 2;\n\n if (!m1) mask[ind1] = 2;\n\n if (!m2) mask[ind2] = 2;\n\n //Note: mask[i]=2 will be unset in chunk.averageNormals\n\n }\n\n }\n\n }\n\n function normalizeNormalsByMask(normals, mask) {\n\n for (let i = 0; i < mask.length; ++i) {\n\n if (mask[i]) {\n\n const offset = i * 3;\n const normal = vec3.set(vec3Tmp, normals[offset], normals[offset + 1], normals[offset +2]);\n vec3.normalize(normal, normal);\n\n normals[offset] = normal[0];\n normals[offset + 1] = normal[1];\n normals[offset + 2] = normal[2];\n\n }\n\n }\n\n }\n\n return function(indices, positions, normals, mask, normalize) {\n\n markVerticesToRecalculate(indices, normals, mask);\n\n for (let i = 0; i < indices.length; i += 3) {\n\n const ind0 = indices[i];\n const ind1 = indices[i + 1];\n const ind2 = indices[i + 2];\n\n const m0 = mask[ind0];\n const m1 = mask[ind1];\n const m2 = mask[ind2];\n\n if (!m0 && !m1 && !m2) {\n continue;\n }\n\n const triangleNormal = calcTriangleNormal(vec3Tmp, i, indices, positions);\n\n if (m0) {\n const offset0 = ind0 * 3;\n\n normals[offset0] += triangleNormal[0];\n normals[offset0 + 1] += triangleNormal[1];\n normals[offset0 + 2] += triangleNormal[2];\n }\n\n if (m1) {\n const offset1 = ind1 * 3;\n\n normals[offset1] += triangleNormal[0];\n normals[offset1 + 1] += triangleNormal[1];\n normals[offset1 + 2] += triangleNormal[2];\n }\n\n\n if (m2) {\n const offset2 = ind2 * 3;\n\n normals[offset2] += triangleNormal[0];\n normals[offset2 + 1] += triangleNormal[1];\n normals[offset2 + 2] += triangleNormal[2];\n }\n\n }\n\n if (normalize) {\n normalizeNormalsByMask(normals, mask);\n }\n\n }\n})();\n\nexport function invertVerticesNormals(verticesNormals, indices) {\n if (indices) {\n for (let i = 0; i+2 < indices.length; i += 3) {\n //swap(indices[i+1], indices[i+2]);\n indices[i + 1] = indices[i + 1] ^ indices[i + 2];\n indices[i + 2] = indices[i + 1] ^ indices[i + 2];\n indices[i + 1] = indices[i + 1] ^ indices[i + 2];\n }\n }\n\n if (verticesNormals) {\n for (let i = 0; i < verticesNormals.length; i++) {\n verticesNormals[i] *= -1;\n }\n }\n}\n\nconst calcTriangleNormal = (function() {\n\n const edge1 = vec3.create();\n const edge2 = vec3.create();\n\n return function (dest, indOffset, indices, positions) {\n\n // Calculates a non-normalized normal\n\n const ind0 = indices[indOffset];\n const ind1 = indices[indOffset + 1];\n const ind2 = indices[indOffset + 2];\n\n const offset0 = 3 * ind0;\n const offset1 = 3 * ind1;\n const offset2 = 3 * ind2;\n\n const x0 = positions[offset0];\n const y0 = positions[offset0 + 1];\n const z0 = positions[offset0 + 2];\n\n vec3.set(edge1, positions[offset1] - x0,\n positions[offset1 + 1] - y0,\n positions[offset1 + 2] - z0);\n\n vec3.set(edge2, positions[offset2] - x0,\n positions[offset2 + 1] - y0,\n positions[offset2 + 2] - z0);\n\n vec3.cross(dest, edge1, edge2);\n\n return dest;\n }\n})();\n","import output from \"_src/engine/output\";\n\nexport default {\n logArguments(f) {\n function decorator(...a) {\n let argumentsString = \"\";\n for (const arg of [...arguments]) {\n try {\n argumentsString += JSON.stringify(arg) + \", \";\n } catch (e) {\n argumentsString += \"Object, \";\n }\n }\n output.log(f.name + \" called with \" + argumentsString, output.BLACK, true);\n return f.apply(this, a);\n }\n\n decorator.funcName = f.name;\n\n return decorator;\n },\n\n applyDecoratorToWholeModule(decorator, module, exclusion = []) {\n for (const func in module) {\n if (typeof module[func] === \"function\" && !exclusion.includes(func)) {\n module[func] = decorator(module[func]);\n }\n }\n }\n}\n\n","export default function _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}","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nvar MapOperator = /*@__PURE__*/ (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexport { MapOperator };\nvar MapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=map.js.map\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nexport default function useSafeState(defaultValue) {\n var destroyRef = React.useRef(false);\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n value = _React$useState2[0],\n setValue = _React$useState2[1];\n React.useEffect(function () {\n destroyRef.current = false;\n return function () {\n destroyRef.current = true;\n };\n }, []);\n function safeSetState(updater, ignoreDestroy) {\n if (ignoreDestroy && destroyRef.current) {\n return;\n }\n setValue(updater);\n }\n return [value, safeSetState];\n}","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function noop() { }\n//# sourceMappingURL=noop.js.map\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","// This file is autogenerated. It's used to publish CJS to npm.\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.tinycolor = factory());\n})(this, (function () { 'use strict';\n\n // https://github.com/bgrins/TinyColor\n // Brian Grinstead, MIT License\n\n const trimLeft = /^\\s+/;\n const trimRight = /\\s+$/;\n\n function tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n (this._originalInput = color),\n (this._r = rgb.r),\n (this._g = rgb.g),\n (this._b = rgb.b),\n (this._a = rgb.a),\n (this._roundA = Math.round(100 * this._a) / 100),\n (this._format = opts.format || rgb.format);\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n\n this._ok = rgb.ok;\n }\n\n tinycolor.prototype = {\n isDark: function () {\n return this.getBrightness() < 128;\n },\n isLight: function () {\n return !this.isDark();\n },\n isValid: function () {\n return this._ok;\n },\n getOriginalInput: function () {\n return this._originalInput;\n },\n getFormat: function () {\n return this._format;\n },\n getAlpha: function () {\n return this._a;\n },\n getBrightness: function () {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function () {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;\n else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;\n else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;\n else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function (value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function () {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function () {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1\n ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\"\n : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function () {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function () {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1\n ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\"\n : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function (allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function (allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function (allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function (allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function () {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a,\n };\n },\n toRgbString: function () {\n return this._a == 1\n ? \"rgb(\" +\n Math.round(this._r) +\n \", \" +\n Math.round(this._g) +\n \", \" +\n Math.round(this._b) +\n \")\"\n : \"rgba(\" +\n Math.round(this._r) +\n \", \" +\n Math.round(this._g) +\n \", \" +\n Math.round(this._b) +\n \", \" +\n this._roundA +\n \")\";\n },\n toPercentageRgb: function () {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a,\n };\n },\n toPercentageRgbString: function () {\n return this._a == 1\n ? \"rgb(\" +\n Math.round(bound01(this._r, 255) * 100) +\n \"%, \" +\n Math.round(bound01(this._g, 255) * 100) +\n \"%, \" +\n Math.round(bound01(this._b, 255) * 100) +\n \"%)\"\n : \"rgba(\" +\n Math.round(bound01(this._r, 255) * 100) +\n \"%, \" +\n Math.round(bound01(this._g, 255) * 100) +\n \"%, \" +\n Math.round(bound01(this._b, 255) * 100) +\n \"%, \" +\n this._roundA +\n \")\";\n },\n toName: function () {\n if (this._a === 0) {\n return \"transparent\";\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function (secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n\n return (\n \"progid:DXImageTransform.Microsoft.gradient(\" +\n gradientType +\n \"startColorstr=\" +\n hex8String +\n \",endColorstr=\" +\n secondHex8String +\n \")\"\n );\n },\n toString: function (format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat =\n !formatSet &&\n hasAlpha &&\n (format === \"hex\" ||\n format === \"hex6\" ||\n format === \"hex3\" ||\n format === \"hex4\" ||\n format === \"hex8\" ||\n format === \"name\");\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n clone: function () {\n return tinycolor(this.toString());\n },\n\n _applyModification: function (fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function () {\n return this._applyModification(lighten, arguments);\n },\n brighten: function () {\n return this._applyModification(brighten, arguments);\n },\n darken: function () {\n return this._applyModification(darken, arguments);\n },\n desaturate: function () {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function () {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function () {\n return this._applyModification(greyscale, arguments);\n },\n spin: function () {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function (fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function () {\n return this._applyCombination(analogous, arguments);\n },\n complement: function () {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function () {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function () {\n return this._applyCombination(splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function () {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function () {\n return this._applyCombination(polyad, [4]);\n },\n };\n\n // If input is an object, force 1 into \"1.0\" to handle ratios properly\n // String input requires \"1.0\" as input, so 1 will be treated as 1\n tinycolor.fromRatio = function (color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n };\n\n // Given a string or object, convert that input to RGB\n // Possible string inputs:\n //\n // \"red\"\n // \"#f00\" or \"f00\"\n // \"#ff0000\" or \"ff0000\"\n // \"#ff000000\" or \"ff000000\"\n // \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n // \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n // \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n // \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n // \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n // \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n // \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n //\n function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (\n isValidCSSUnit(color.r) &&\n isValidCSSUnit(color.g) &&\n isValidCSSUnit(color.b)\n ) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (\n isValidCSSUnit(color.h) &&\n isValidCSSUnit(color.s) &&\n isValidCSSUnit(color.v)\n ) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (\n isValidCSSUnit(color.h) &&\n isValidCSSUnit(color.s) &&\n isValidCSSUnit(color.l)\n ) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a,\n };\n }\n\n // Conversion Functions\n // --------------------\n\n // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n // \n\n // `rgbToRgb`\n // Handle bounds / percentage checking to conform to CSS color spec\n // \n // *Assumes:* r, g, b in [0, 255] or [0, 1]\n // *Returns:* { r, g, b } in [0, 255]\n function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n }\n\n // `rgbToHsl`\n // Converts an RGB color value to HSL.\n // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n // *Returns:* { h, s, l } in [0,1]\n function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n }\n\n // `hslToRgb`\n // Converts an HSL color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n }\n\n // `rgbToHsv`\n // Converts an RGB color value to HSV\n // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n // *Returns:* { h, s, v } in [0,1]\n function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n }\n\n // `hsvToRgb`\n // Converts an HSV color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n }\n\n // `rgbToHex`\n // Converts an RGB color to hex\n // Assumes r, g, and b are contained in the set [0, 255]\n // Returns a 3 or 6 character hex\n function rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n\n // Return a 3 character hex if possible\n if (\n allow3Char &&\n hex[0].charAt(0) == hex[0].charAt(1) &&\n hex[1].charAt(0) == hex[1].charAt(1) &&\n hex[2].charAt(0) == hex[2].charAt(1)\n ) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n }\n\n // `rgbaToHex`\n // Converts an RGBA color plus alpha transparency to hex\n // Assumes r, g, b are contained in the set [0, 255] and\n // a in [0, 1]. Returns a 4 or 8 character rgba hex\n function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n pad2(convertDecimalToHex(a)),\n ];\n\n // Return a 4 character hex if possible\n if (\n allow4Char &&\n hex[0].charAt(0) == hex[0].charAt(1) &&\n hex[1].charAt(0) == hex[1].charAt(1) &&\n hex[2].charAt(0) == hex[2].charAt(1) &&\n hex[3].charAt(0) == hex[3].charAt(1)\n ) {\n return (\n hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0)\n );\n }\n\n return hex.join(\"\");\n }\n\n // `rgbaToArgbHex`\n // Converts an RGBA color to an ARGB Hex8 string\n // Rarely used, but required for \"toFilter()\"\n function rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n\n return hex.join(\"\");\n }\n\n // `equals`\n // Can be called with any tinycolor input\n tinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n };\n\n tinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random(),\n });\n };\n\n // Modification Functions\n // ----------------------\n // Thanks to less.js for some of the basics here\n // \n\n function desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n\n function saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n\n function greyscale(color) {\n return tinycolor(color).desaturate(100);\n }\n\n function lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n\n function brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n }\n\n function darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n\n // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n // Values outside of this range will be wrapped into this range.\n function spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n }\n\n // Combination Functions\n // ---------------------\n // Thanks to jQuery xColor for some of the ideas behind these\n // \n\n function complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n }\n\n function polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({ h: (hsl.h + i * step) % 360, s: hsl.s, l: hsl.l }));\n }\n\n return result;\n }\n\n function splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }),\n ];\n }\n\n function analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n }\n\n function monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v }));\n v = (v + modification) % 1;\n }\n\n return ret;\n }\n\n // Utility Functions\n // ---------------------\n\n tinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a,\n };\n\n return tinycolor(rgba);\n };\n\n // Readability Functions\n // ---------------------\n // false\n // tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\n tinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n\n out = false;\n\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n };\n\n // `mostReadable`\n // Given a base color and a list of possible foreground or background\n // colors for that base, returns the most readable color.\n // Optionally returns Black or White if the most readable color is unreadable.\n // *Example*\n // tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n // tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n // tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n // tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\n tinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n\n if (\n tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size,\n }) ||\n !includeFallbackColors\n ) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n };\n\n // Big List of Colors\n // ------------------\n // \n var names = (tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\",\n });\n\n // Make it easy to access colors via `hexNames[hex]`\n var hexNames = (tinycolor.hexNames = flip(names));\n\n // Utilities\n // ---------\n\n // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\n function flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n }\n\n // Return a valid alpha value [0,1] with all invalid values being set to 1\n function boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n }\n\n // Take input from [0, n] and return it as [0, 1]\n function bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n }\n\n // Force a number between 0 and 1\n function clamp01(val) {\n return Math.min(1, Math.max(0, val));\n }\n\n // Parse a base-16 hex value into a base-10 integer\n function parseIntFromHex(val) {\n return parseInt(val, 16);\n }\n\n // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n // \n function isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n }\n\n // Check to see if string passed in is a percentage\n function isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n }\n\n // Force a hex value to have 2 characters\n function pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n }\n\n // Replace a decimal with it's percentage value\n function convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n\n return n;\n }\n\n // Converts a decimal to a hex value\n function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n }\n // Converts a hex value to a decimal\n function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n }\n\n var matchers = (function () {\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 =\n \"[\\\\s|\\\\(]+(\" +\n CSS_UNIT +\n \")[,|\\\\s]+(\" +\n CSS_UNIT +\n \")[,|\\\\s]+(\" +\n CSS_UNIT +\n \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 =\n \"[\\\\s|\\\\(]+(\" +\n CSS_UNIT +\n \")[,|\\\\s]+(\" +\n CSS_UNIT +\n \")[,|\\\\s]+(\" +\n CSS_UNIT +\n \")[,|\\\\s]+(\" +\n CSS_UNIT +\n \")\\\\s*\\\\)?\";\n\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n };\n })();\n\n // `isValidCSSUnit`\n // Take in a single string / number and check to see if it looks like a CSS unit\n // (see `matchers` above for definition).\n function isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n }\n\n // `stringInputToObject`\n // Permissive string parsing. Take in a number of formats, and output an object\n // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n function stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\",\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\",\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\",\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\",\n };\n }\n\n return false;\n }\n\n function validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || { level: \"AA\", size: \"small\" };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return { level: level, size: size };\n }\n\n return tinycolor;\n\n}));\n","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _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}","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var assignValue = require('./_assignValue'),\n copyObject = require('./_copyObject'),\n createAssigner = require('./_createAssigner'),\n isArrayLike = require('./isArrayLike'),\n isPrototype = require('./_isPrototype'),\n keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n","var arrayEvery = require('./_arrayEvery'),\n baseEvery = require('./_baseEvery'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = every;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Lexer = exports.LexerDefinitionErrorType = void 0;\nvar lexer_1 = require(\"./lexer\");\nvar noop_1 = __importDefault(require(\"lodash/noop\"));\nvar isEmpty_1 = __importDefault(require(\"lodash/isEmpty\"));\nvar isArray_1 = __importDefault(require(\"lodash/isArray\"));\nvar last_1 = __importDefault(require(\"lodash/last\"));\nvar reject_1 = __importDefault(require(\"lodash/reject\"));\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar keys_1 = __importDefault(require(\"lodash/keys\"));\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\nvar identity_1 = __importDefault(require(\"lodash/identity\"));\nvar assign_1 = __importDefault(require(\"lodash/assign\"));\nvar reduce_1 = __importDefault(require(\"lodash/reduce\"));\nvar clone_1 = __importDefault(require(\"lodash/clone\"));\nvar utils_1 = require(\"@chevrotain/utils\");\nvar tokens_1 = require(\"./tokens\");\nvar lexer_errors_public_1 = require(\"./lexer_errors_public\");\nvar reg_exp_parser_1 = require(\"./reg_exp_parser\");\nvar LexerDefinitionErrorType;\n(function (LexerDefinitionErrorType) {\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MISSING_PATTERN\"] = 0] = \"MISSING_PATTERN\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"INVALID_PATTERN\"] = 1] = \"INVALID_PATTERN\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"EOI_ANCHOR_FOUND\"] = 2] = \"EOI_ANCHOR_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"UNSUPPORTED_FLAGS_FOUND\"] = 3] = \"UNSUPPORTED_FLAGS_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"DUPLICATE_PATTERNS_FOUND\"] = 4] = \"DUPLICATE_PATTERNS_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"INVALID_GROUP_TYPE_FOUND\"] = 5] = \"INVALID_GROUP_TYPE_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"PUSH_MODE_DOES_NOT_EXIST\"] = 6] = \"PUSH_MODE_DOES_NOT_EXIST\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\"] = 7] = \"MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\"] = 8] = \"MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\"] = 9] = \"MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\"] = 10] = \"LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"SOI_ANCHOR_FOUND\"] = 11] = \"SOI_ANCHOR_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"EMPTY_MATCH_PATTERN\"] = 12] = \"EMPTY_MATCH_PATTERN\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"NO_LINE_BREAKS_FLAGS\"] = 13] = \"NO_LINE_BREAKS_FLAGS\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"UNREACHABLE_PATTERN\"] = 14] = \"UNREACHABLE_PATTERN\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"IDENTIFY_TERMINATOR\"] = 15] = \"IDENTIFY_TERMINATOR\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"CUSTOM_LINE_BREAK\"] = 16] = \"CUSTOM_LINE_BREAK\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE\"] = 17] = \"MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE\";\n})(LexerDefinitionErrorType = exports.LexerDefinitionErrorType || (exports.LexerDefinitionErrorType = {}));\nvar DEFAULT_LEXER_CONFIG = {\n deferDefinitionErrorsHandling: false,\n positionTracking: \"full\",\n lineTerminatorsPattern: /\\n|\\r\\n?/g,\n lineTerminatorCharacters: [\"\\n\", \"\\r\"],\n ensureOptimizations: false,\n safeMode: false,\n errorMessageProvider: lexer_errors_public_1.defaultLexerErrorProvider,\n traceInitPerf: false,\n skipValidations: false,\n recoveryEnabled: true\n};\nObject.freeze(DEFAULT_LEXER_CONFIG);\nvar Lexer = /** @class */ (function () {\n function Lexer(lexerDefinition, config) {\n if (config === void 0) { config = DEFAULT_LEXER_CONFIG; }\n var _this = this;\n this.lexerDefinition = lexerDefinition;\n this.lexerDefinitionErrors = [];\n this.lexerDefinitionWarning = [];\n this.patternIdxToConfig = {};\n this.charCodeToPatternIdxToConfig = {};\n this.modes = [];\n this.emptyGroups = {};\n this.trackStartLines = true;\n this.trackEndLines = true;\n this.hasCustom = false;\n this.canModeBeOptimized = {};\n // Duplicated from the parser's perf trace trait to allow future extraction\n // of the lexer to a separate package.\n this.TRACE_INIT = function (phaseDesc, phaseImpl) {\n // No need to optimize this using NOOP pattern because\n // It is not called in a hot spot...\n if (_this.traceInitPerf === true) {\n _this.traceInitIndent++;\n var indent = new Array(_this.traceInitIndent + 1).join(\"\\t\");\n if (_this.traceInitIndent < _this.traceInitMaxIdent) {\n console.log(\"\".concat(indent, \"--> <\").concat(phaseDesc, \">\"));\n }\n var _a = (0, utils_1.timer)(phaseImpl), time = _a.time, value = _a.value;\n /* istanbul ignore next - Difficult to reproduce specific performance behavior (>10ms) in tests */\n var traceMethod = time > 10 ? console.warn : console.log;\n if (_this.traceInitIndent < _this.traceInitMaxIdent) {\n traceMethod(\"\".concat(indent, \"<-- <\").concat(phaseDesc, \"> time: \").concat(time, \"ms\"));\n }\n _this.traceInitIndent--;\n return value;\n }\n else {\n return phaseImpl();\n }\n };\n if (typeof config === \"boolean\") {\n throw Error(\"The second argument to the Lexer constructor is now an ILexerConfig Object.\\n\" +\n \"a boolean 2nd argument is no longer supported\");\n }\n // todo: defaults func?\n this.config = (0, assign_1.default)({}, DEFAULT_LEXER_CONFIG, config);\n var traceInitVal = this.config.traceInitPerf;\n if (traceInitVal === true) {\n this.traceInitMaxIdent = Infinity;\n this.traceInitPerf = true;\n }\n else if (typeof traceInitVal === \"number\") {\n this.traceInitMaxIdent = traceInitVal;\n this.traceInitPerf = true;\n }\n this.traceInitIndent = -1;\n this.TRACE_INIT(\"Lexer Constructor\", function () {\n var actualDefinition;\n var hasOnlySingleMode = true;\n _this.TRACE_INIT(\"Lexer Config handling\", function () {\n if (_this.config.lineTerminatorsPattern ===\n DEFAULT_LEXER_CONFIG.lineTerminatorsPattern) {\n // optimized built-in implementation for the defaults definition of lineTerminators\n _this.config.lineTerminatorsPattern = lexer_1.LineTerminatorOptimizedTester;\n }\n else {\n if (_this.config.lineTerminatorCharacters ===\n DEFAULT_LEXER_CONFIG.lineTerminatorCharacters) {\n throw Error(\"Error: Missing property on the Lexer config.\\n\" +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS\");\n }\n }\n if (config.safeMode && config.ensureOptimizations) {\n throw Error('\"safeMode\" and \"ensureOptimizations\" flags are mutually exclusive.');\n }\n _this.trackStartLines = /full|onlyStart/i.test(_this.config.positionTracking);\n _this.trackEndLines = /full/i.test(_this.config.positionTracking);\n // Convert SingleModeLexerDefinition into a IMultiModeLexerDefinition.\n if ((0, isArray_1.default)(lexerDefinition)) {\n actualDefinition = {\n modes: { defaultMode: (0, clone_1.default)(lexerDefinition) },\n defaultMode: lexer_1.DEFAULT_MODE\n };\n }\n else {\n // no conversion needed, input should already be a IMultiModeLexerDefinition\n hasOnlySingleMode = false;\n actualDefinition = (0, clone_1.default)(lexerDefinition);\n }\n });\n if (_this.config.skipValidations === false) {\n _this.TRACE_INIT(\"performRuntimeChecks\", function () {\n _this.lexerDefinitionErrors = _this.lexerDefinitionErrors.concat((0, lexer_1.performRuntimeChecks)(actualDefinition, _this.trackStartLines, _this.config.lineTerminatorCharacters));\n });\n _this.TRACE_INIT(\"performWarningRuntimeChecks\", function () {\n _this.lexerDefinitionWarning = _this.lexerDefinitionWarning.concat((0, lexer_1.performWarningRuntimeChecks)(actualDefinition, _this.trackStartLines, _this.config.lineTerminatorCharacters));\n });\n }\n // for extra robustness to avoid throwing an none informative error message\n actualDefinition.modes = actualDefinition.modes\n ? actualDefinition.modes\n : {};\n // an error of undefined TokenTypes will be detected in \"performRuntimeChecks\" above.\n // this transformation is to increase robustness in the case of partially invalid lexer definition.\n (0, forEach_1.default)(actualDefinition.modes, function (currModeValue, currModeName) {\n actualDefinition.modes[currModeName] = (0, reject_1.default)(currModeValue, function (currTokType) { return (0, isUndefined_1.default)(currTokType); });\n });\n var allModeNames = (0, keys_1.default)(actualDefinition.modes);\n (0, forEach_1.default)(actualDefinition.modes, function (currModDef, currModName) {\n _this.TRACE_INIT(\"Mode: <\".concat(currModName, \"> processing\"), function () {\n _this.modes.push(currModName);\n if (_this.config.skipValidations === false) {\n _this.TRACE_INIT(\"validatePatterns\", function () {\n _this.lexerDefinitionErrors = _this.lexerDefinitionErrors.concat((0, lexer_1.validatePatterns)(currModDef, allModeNames));\n });\n }\n // If definition errors were encountered, the analysis phase may fail unexpectedly/\n // Considering a lexer with definition errors may never be used, there is no point\n // to performing the analysis anyhow...\n if ((0, isEmpty_1.default)(_this.lexerDefinitionErrors)) {\n (0, tokens_1.augmentTokenTypes)(currModDef);\n var currAnalyzeResult_1;\n _this.TRACE_INIT(\"analyzeTokenTypes\", function () {\n currAnalyzeResult_1 = (0, lexer_1.analyzeTokenTypes)(currModDef, {\n lineTerminatorCharacters: _this.config.lineTerminatorCharacters,\n positionTracking: config.positionTracking,\n ensureOptimizations: config.ensureOptimizations,\n safeMode: config.safeMode,\n tracer: _this.TRACE_INIT\n });\n });\n _this.patternIdxToConfig[currModName] =\n currAnalyzeResult_1.patternIdxToConfig;\n _this.charCodeToPatternIdxToConfig[currModName] =\n currAnalyzeResult_1.charCodeToPatternIdxToConfig;\n _this.emptyGroups = (0, assign_1.default)({}, _this.emptyGroups, currAnalyzeResult_1.emptyGroups);\n _this.hasCustom = currAnalyzeResult_1.hasCustom || _this.hasCustom;\n _this.canModeBeOptimized[currModName] =\n currAnalyzeResult_1.canBeOptimized;\n }\n });\n });\n _this.defaultMode = actualDefinition.defaultMode;\n if (!(0, isEmpty_1.default)(_this.lexerDefinitionErrors) &&\n !_this.config.deferDefinitionErrorsHandling) {\n var allErrMessages = (0, map_1.default)(_this.lexerDefinitionErrors, function (error) {\n return error.message;\n });\n var allErrMessagesString = allErrMessages.join(\"-----------------------\\n\");\n throw new Error(\"Errors detected in definition of Lexer:\\n\" + allErrMessagesString);\n }\n // Only print warning if there are no errors, This will avoid pl\n (0, forEach_1.default)(_this.lexerDefinitionWarning, function (warningDescriptor) {\n (0, utils_1.PRINT_WARNING)(warningDescriptor.message);\n });\n _this.TRACE_INIT(\"Choosing sub-methods implementations\", function () {\n // Choose the relevant internal implementations for this specific parser.\n // These implementations should be in-lined by the JavaScript engine\n // to provide optimal performance in each scenario.\n if (lexer_1.SUPPORT_STICKY) {\n _this.chopInput = identity_1.default;\n _this.match = _this.matchWithTest;\n }\n else {\n _this.updateLastIndex = noop_1.default;\n _this.match = _this.matchWithExec;\n }\n if (hasOnlySingleMode) {\n _this.handleModes = noop_1.default;\n }\n if (_this.trackStartLines === false) {\n _this.computeNewColumn = identity_1.default;\n }\n if (_this.trackEndLines === false) {\n _this.updateTokenEndLineColumnLocation = noop_1.default;\n }\n if (/full/i.test(_this.config.positionTracking)) {\n _this.createTokenInstance = _this.createFullToken;\n }\n else if (/onlyStart/i.test(_this.config.positionTracking)) {\n _this.createTokenInstance = _this.createStartOnlyToken;\n }\n else if (/onlyOffset/i.test(_this.config.positionTracking)) {\n _this.createTokenInstance = _this.createOffsetOnlyToken;\n }\n else {\n throw Error(\"Invalid config option: \\\"\".concat(_this.config.positionTracking, \"\\\"\"));\n }\n if (_this.hasCustom) {\n _this.addToken = _this.addTokenUsingPush;\n _this.handlePayload = _this.handlePayloadWithCustom;\n }\n else {\n _this.addToken = _this.addTokenUsingMemberAccess;\n _this.handlePayload = _this.handlePayloadNoCustom;\n }\n });\n _this.TRACE_INIT(\"Failed Optimization Warnings\", function () {\n var unOptimizedModes = (0, reduce_1.default)(_this.canModeBeOptimized, function (cannotBeOptimized, canBeOptimized, modeName) {\n if (canBeOptimized === false) {\n cannotBeOptimized.push(modeName);\n }\n return cannotBeOptimized;\n }, []);\n if (config.ensureOptimizations && !(0, isEmpty_1.default)(unOptimizedModes)) {\n throw Error(\"Lexer Modes: < \".concat(unOptimizedModes.join(\", \"), \" > cannot be optimized.\\n\") +\n '\\t Disable the \"ensureOptimizations\" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\\n' +\n \"\\t Or inspect the console log for details on how to resolve these issues.\");\n }\n });\n _this.TRACE_INIT(\"clearRegExpParserCache\", function () {\n (0, reg_exp_parser_1.clearRegExpParserCache)();\n });\n _this.TRACE_INIT(\"toFastProperties\", function () {\n (0, utils_1.toFastProperties)(_this);\n });\n });\n }\n Lexer.prototype.tokenize = function (text, initialMode) {\n if (initialMode === void 0) { initialMode = this.defaultMode; }\n if (!(0, isEmpty_1.default)(this.lexerDefinitionErrors)) {\n var allErrMessages = (0, map_1.default)(this.lexerDefinitionErrors, function (error) {\n return error.message;\n });\n var allErrMessagesString = allErrMessages.join(\"-----------------------\\n\");\n throw new Error(\"Unable to Tokenize because Errors detected in definition of Lexer:\\n\" +\n allErrMessagesString);\n }\n return this.tokenizeInternal(text, initialMode);\n };\n // There is quite a bit of duplication between this and \"tokenizeInternalLazy\"\n // This is intentional due to performance considerations.\n // this method also used quite a bit of `!` none null assertions because it is too optimized\n // for `tsc` to always understand it is \"safe\"\n Lexer.prototype.tokenizeInternal = function (text, initialMode) {\n var _this = this;\n var i, j, k, matchAltImage, longerAlt, matchedImage, payload, altPayload, imageLength, group, tokType, newToken, errLength, droppedChar, msg, match;\n var orgText = text;\n var orgLength = orgText.length;\n var offset = 0;\n var matchedTokensIndex = 0;\n // initializing the tokensArray to the \"guessed\" size.\n // guessing too little will still reduce the number of array re-sizes on pushes.\n // guessing too large (Tested by guessing x4 too large) may cost a bit more of memory\n // but would still have a faster runtime by avoiding (All but one) array resizing.\n var guessedNumberOfTokens = this.hasCustom\n ? 0 // will break custom token pattern APIs the matchedTokens array will contain undefined elements.\n : Math.floor(text.length / 10);\n var matchedTokens = new Array(guessedNumberOfTokens);\n var errors = [];\n var line = this.trackStartLines ? 1 : undefined;\n var column = this.trackStartLines ? 1 : undefined;\n var groups = (0, lexer_1.cloneEmptyGroups)(this.emptyGroups);\n var trackLines = this.trackStartLines;\n var lineTerminatorPattern = this.config.lineTerminatorsPattern;\n var currModePatternsLength = 0;\n var patternIdxToConfig = [];\n var currCharCodeToPatternIdxToConfig = [];\n var modeStack = [];\n var emptyArray = [];\n Object.freeze(emptyArray);\n var getPossiblePatterns;\n function getPossiblePatternsSlow() {\n return patternIdxToConfig;\n }\n function getPossiblePatternsOptimized(charCode) {\n var optimizedCharIdx = (0, lexer_1.charCodeToOptimizedIndex)(charCode);\n var possiblePatterns = currCharCodeToPatternIdxToConfig[optimizedCharIdx];\n if (possiblePatterns === undefined) {\n return emptyArray;\n }\n else {\n return possiblePatterns;\n }\n }\n var pop_mode = function (popToken) {\n // TODO: perhaps avoid this error in the edge case there is no more input?\n if (modeStack.length === 1 &&\n // if we have both a POP_MODE and a PUSH_MODE this is in-fact a \"transition\"\n // So no error should occur.\n popToken.tokenType.PUSH_MODE === undefined) {\n // if we try to pop the last mode there lexer will no longer have ANY mode.\n // thus the pop is ignored, an error will be created and the lexer will continue parsing in the previous mode.\n var msg_1 = _this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(popToken);\n errors.push({\n offset: popToken.startOffset,\n line: popToken.startLine,\n column: popToken.startColumn,\n length: popToken.image.length,\n message: msg_1\n });\n }\n else {\n modeStack.pop();\n var newMode = (0, last_1.default)(modeStack);\n patternIdxToConfig = _this.patternIdxToConfig[newMode];\n currCharCodeToPatternIdxToConfig =\n _this.charCodeToPatternIdxToConfig[newMode];\n currModePatternsLength = patternIdxToConfig.length;\n var modeCanBeOptimized = _this.canModeBeOptimized[newMode] && _this.config.safeMode === false;\n if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) {\n getPossiblePatterns = getPossiblePatternsOptimized;\n }\n else {\n getPossiblePatterns = getPossiblePatternsSlow;\n }\n }\n };\n function push_mode(newMode) {\n modeStack.push(newMode);\n currCharCodeToPatternIdxToConfig =\n this.charCodeToPatternIdxToConfig[newMode];\n patternIdxToConfig = this.patternIdxToConfig[newMode];\n currModePatternsLength = patternIdxToConfig.length;\n currModePatternsLength = patternIdxToConfig.length;\n var modeCanBeOptimized = this.canModeBeOptimized[newMode] && this.config.safeMode === false;\n if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) {\n getPossiblePatterns = getPossiblePatternsOptimized;\n }\n else {\n getPossiblePatterns = getPossiblePatternsSlow;\n }\n }\n // this pattern seems to avoid a V8 de-optimization, although that de-optimization does not\n // seem to matter performance wise.\n push_mode.call(this, initialMode);\n var currConfig;\n var recoveryEnabled = this.config.recoveryEnabled;\n while (offset < orgLength) {\n matchedImage = null;\n var nextCharCode = orgText.charCodeAt(offset);\n var chosenPatternIdxToConfig = getPossiblePatterns(nextCharCode);\n var chosenPatternsLength = chosenPatternIdxToConfig.length;\n for (i = 0; i < chosenPatternsLength; i++) {\n currConfig = chosenPatternIdxToConfig[i];\n var currPattern = currConfig.pattern;\n payload = null;\n // manually in-lined because > 600 chars won't be in-lined in V8\n var singleCharCode = currConfig.short;\n if (singleCharCode !== false) {\n if (nextCharCode === singleCharCode) {\n // single character string\n matchedImage = currPattern;\n }\n }\n else if (currConfig.isCustom === true) {\n match = currPattern.exec(orgText, offset, matchedTokens, groups);\n if (match !== null) {\n matchedImage = match[0];\n if (match.payload !== undefined) {\n payload = match.payload;\n }\n }\n else {\n matchedImage = null;\n }\n }\n else {\n this.updateLastIndex(currPattern, offset);\n matchedImage = this.match(currPattern, text, offset);\n }\n if (matchedImage !== null) {\n // even though this pattern matched we must try a another longer alternative.\n // this can be used to prioritize keywords over identifiers\n longerAlt = currConfig.longerAlt;\n if (longerAlt !== undefined) {\n // TODO: micro optimize, avoid extra prop access\n // by saving/linking longerAlt on the original config?\n var longerAltLength = longerAlt.length;\n for (k = 0; k < longerAltLength; k++) {\n var longerAltConfig = patternIdxToConfig[longerAlt[k]];\n var longerAltPattern = longerAltConfig.pattern;\n altPayload = null;\n // single Char can never be a longer alt so no need to test it.\n // manually in-lined because > 600 chars won't be in-lined in V8\n if (longerAltConfig.isCustom === true) {\n match = longerAltPattern.exec(orgText, offset, matchedTokens, groups);\n if (match !== null) {\n matchAltImage = match[0];\n if (match.payload !== undefined) {\n altPayload = match.payload;\n }\n }\n else {\n matchAltImage = null;\n }\n }\n else {\n this.updateLastIndex(longerAltPattern, offset);\n matchAltImage = this.match(longerAltPattern, text, offset);\n }\n if (matchAltImage && matchAltImage.length > matchedImage.length) {\n matchedImage = matchAltImage;\n payload = altPayload;\n currConfig = longerAltConfig;\n // Exit the loop early after matching one of the longer alternatives\n // The first matched alternative takes precedence\n break;\n }\n }\n }\n break;\n }\n }\n // successful match\n if (matchedImage !== null) {\n imageLength = matchedImage.length;\n group = currConfig.group;\n if (group !== undefined) {\n tokType = currConfig.tokenTypeIdx;\n // TODO: \"offset + imageLength\" and the new column may be computed twice in case of \"full\" location information inside\n // createFullToken method\n newToken = this.createTokenInstance(matchedImage, offset, tokType, currConfig.tokenType, line, column, imageLength);\n this.handlePayload(newToken, payload);\n // TODO: optimize NOOP in case there are no special groups?\n if (group === false) {\n matchedTokensIndex = this.addToken(matchedTokens, matchedTokensIndex, newToken);\n }\n else {\n groups[group].push(newToken);\n }\n }\n text = this.chopInput(text, imageLength);\n offset = offset + imageLength;\n // TODO: with newlines the column may be assigned twice\n column = this.computeNewColumn(column, imageLength);\n if (trackLines === true && currConfig.canLineTerminator === true) {\n var numOfLTsInMatch = 0;\n var foundTerminator = void 0;\n var lastLTEndOffset = void 0;\n lineTerminatorPattern.lastIndex = 0;\n do {\n foundTerminator = lineTerminatorPattern.test(matchedImage);\n if (foundTerminator === true) {\n lastLTEndOffset = lineTerminatorPattern.lastIndex - 1;\n numOfLTsInMatch++;\n }\n } while (foundTerminator === true);\n if (numOfLTsInMatch !== 0) {\n line = line + numOfLTsInMatch;\n column = imageLength - lastLTEndOffset;\n this.updateTokenEndLineColumnLocation(newToken, group, lastLTEndOffset, numOfLTsInMatch, line, column, imageLength);\n }\n }\n // will be NOOP if no modes present\n this.handleModes(currConfig, pop_mode, push_mode, newToken);\n }\n else {\n // error recovery, drop characters until we identify a valid token's start point\n var errorStartOffset = offset;\n var errorLine = line;\n var errorColumn = column;\n var foundResyncPoint = recoveryEnabled === false;\n while (foundResyncPoint === false && offset < orgLength) {\n // Identity Func (when sticky flag is enabled)\n text = this.chopInput(text, 1);\n offset++;\n for (j = 0; j < currModePatternsLength; j++) {\n var currConfig_1 = patternIdxToConfig[j];\n var currPattern = currConfig_1.pattern;\n // manually in-lined because > 600 chars won't be in-lined in V8\n var singleCharCode = currConfig_1.short;\n if (singleCharCode !== false) {\n if (orgText.charCodeAt(offset) === singleCharCode) {\n // single character string\n foundResyncPoint = true;\n }\n }\n else if (currConfig_1.isCustom === true) {\n foundResyncPoint =\n currPattern.exec(orgText, offset, matchedTokens, groups) !== null;\n }\n else {\n this.updateLastIndex(currPattern, offset);\n foundResyncPoint = currPattern.exec(text) !== null;\n }\n if (foundResyncPoint === true) {\n break;\n }\n }\n }\n errLength = offset - errorStartOffset;\n // at this point we either re-synced or reached the end of the input text\n msg = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(orgText, errorStartOffset, errLength, errorLine, errorColumn);\n errors.push({\n offset: errorStartOffset,\n line: errorLine,\n column: errorColumn,\n length: errLength,\n message: msg\n });\n if (recoveryEnabled === false) {\n break;\n }\n }\n }\n // if we do have custom patterns which push directly into the\n // TODO: custom tokens should not push directly??\n if (!this.hasCustom) {\n // if we guessed a too large size for the tokens array this will shrink it to the right size.\n matchedTokens.length = matchedTokensIndex;\n }\n return {\n tokens: matchedTokens,\n groups: groups,\n errors: errors\n };\n };\n Lexer.prototype.handleModes = function (config, pop_mode, push_mode, newToken) {\n if (config.pop === true) {\n // need to save the PUSH_MODE property as if the mode is popped\n // patternIdxToPopMode is updated to reflect the new mode after popping the stack\n var pushMode = config.push;\n pop_mode(newToken);\n if (pushMode !== undefined) {\n push_mode.call(this, pushMode);\n }\n }\n else if (config.push !== undefined) {\n push_mode.call(this, config.push);\n }\n };\n Lexer.prototype.chopInput = function (text, length) {\n return text.substring(length);\n };\n Lexer.prototype.updateLastIndex = function (regExp, newLastIndex) {\n regExp.lastIndex = newLastIndex;\n };\n // TODO: decrease this under 600 characters? inspect stripping comments option in TSC compiler\n Lexer.prototype.updateTokenEndLineColumnLocation = function (newToken, group, lastLTIdx, numOfLTsInMatch, line, column, imageLength) {\n var lastCharIsLT, fixForEndingInLT;\n if (group !== undefined) {\n // a none skipped multi line Token, need to update endLine/endColumn\n lastCharIsLT = lastLTIdx === imageLength - 1;\n fixForEndingInLT = lastCharIsLT ? -1 : 0;\n if (!(numOfLTsInMatch === 1 && lastCharIsLT === true)) {\n // if a token ends in a LT that last LT only affects the line numbering of following Tokens\n newToken.endLine = line + fixForEndingInLT;\n // the last LT in a token does not affect the endColumn either as the [columnStart ... columnEnd)\n // inclusive to exclusive range.\n newToken.endColumn = column - 1 + -fixForEndingInLT;\n }\n // else single LT in the last character of a token, no need to modify the endLine/EndColumn\n }\n };\n Lexer.prototype.computeNewColumn = function (oldColumn, imageLength) {\n return oldColumn + imageLength;\n };\n Lexer.prototype.createOffsetOnlyToken = function (image, startOffset, tokenTypeIdx, tokenType) {\n return {\n image: image,\n startOffset: startOffset,\n tokenTypeIdx: tokenTypeIdx,\n tokenType: tokenType\n };\n };\n Lexer.prototype.createStartOnlyToken = function (image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn) {\n return {\n image: image,\n startOffset: startOffset,\n startLine: startLine,\n startColumn: startColumn,\n tokenTypeIdx: tokenTypeIdx,\n tokenType: tokenType\n };\n };\n Lexer.prototype.createFullToken = function (image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn, imageLength) {\n return {\n image: image,\n startOffset: startOffset,\n endOffset: startOffset + imageLength - 1,\n startLine: startLine,\n endLine: startLine,\n startColumn: startColumn,\n endColumn: startColumn + imageLength - 1,\n tokenTypeIdx: tokenTypeIdx,\n tokenType: tokenType\n };\n };\n Lexer.prototype.addTokenUsingPush = function (tokenVector, index, tokenToAdd) {\n tokenVector.push(tokenToAdd);\n return index;\n };\n Lexer.prototype.addTokenUsingMemberAccess = function (tokenVector, index, tokenToAdd) {\n tokenVector[index] = tokenToAdd;\n index++;\n return index;\n };\n Lexer.prototype.handlePayloadNoCustom = function (token, payload) { };\n Lexer.prototype.handlePayloadWithCustom = function (token, payload) {\n if (payload !== null) {\n token.payload = payload;\n }\n };\n Lexer.prototype.matchWithTest = function (pattern, text, offset) {\n var found = pattern.test(text);\n if (found === true) {\n return text.substring(offset, pattern.lastIndex);\n }\n return null;\n };\n Lexer.prototype.matchWithExec = function (pattern, text) {\n var regExpArray = pattern.exec(text);\n return regExpArray !== null ? regExpArray[0] : null;\n };\n Lexer.SKIPPED = \"This marks a skipped Token pattern, this means each token identified by it will\" +\n \"be consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.\";\n Lexer.NA = /NOT_APPLICABLE/;\n return Lexer;\n}());\nexports.Lexer = Lexer;\n//# sourceMappingURL=lexer_public.js.map","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = compact;\n","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkPrefixAlternativesAmbiguities = exports.validateSomeNonEmptyLookaheadPath = exports.validateTooManyAlts = exports.RepetitionCollector = exports.validateAmbiguousAlternationAlternatives = exports.validateEmptyOrAlternative = exports.getFirstNoneTerminal = exports.validateNoLeftRecursion = exports.validateRuleIsOverridden = exports.validateRuleDoesNotAlreadyExist = exports.OccurrenceValidationCollector = exports.identifyProductionForDuplicates = exports.validateGrammar = exports.validateLookahead = void 0;\nvar first_1 = __importDefault(require(\"lodash/first\"));\nvar isEmpty_1 = __importDefault(require(\"lodash/isEmpty\"));\nvar drop_1 = __importDefault(require(\"lodash/drop\"));\nvar flatten_1 = __importDefault(require(\"lodash/flatten\"));\nvar filter_1 = __importDefault(require(\"lodash/filter\"));\nvar reject_1 = __importDefault(require(\"lodash/reject\"));\nvar difference_1 = __importDefault(require(\"lodash/difference\"));\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar groupBy_1 = __importDefault(require(\"lodash/groupBy\"));\nvar reduce_1 = __importDefault(require(\"lodash/reduce\"));\nvar pickBy_1 = __importDefault(require(\"lodash/pickBy\"));\nvar values_1 = __importDefault(require(\"lodash/values\"));\nvar includes_1 = __importDefault(require(\"lodash/includes\"));\nvar flatMap_1 = __importDefault(require(\"lodash/flatMap\"));\nvar clone_1 = __importDefault(require(\"lodash/clone\"));\nvar parser_1 = require(\"../parser/parser\");\nvar gast_1 = require(\"@chevrotain/gast\");\nvar lookahead_1 = require(\"./lookahead\");\nvar interpreter_1 = require(\"./interpreter\");\nvar gast_2 = require(\"@chevrotain/gast\");\nvar gast_3 = require(\"@chevrotain/gast\");\nvar dropRight_1 = __importDefault(require(\"lodash/dropRight\"));\nvar compact_1 = __importDefault(require(\"lodash/compact\"));\nvar tokens_1 = require(\"../../scan/tokens\");\nfunction validateLookahead(options) {\n var lookaheadValidationErrorMessages = options.lookaheadStrategy.validate({\n rules: options.rules,\n tokenTypes: options.tokenTypes,\n grammarName: options.grammarName\n });\n return (0, map_1.default)(lookaheadValidationErrorMessages, function (errorMessage) { return (__assign({ type: parser_1.ParserDefinitionErrorType.CUSTOM_LOOKAHEAD_VALIDATION }, errorMessage)); });\n}\nexports.validateLookahead = validateLookahead;\nfunction validateGrammar(topLevels, tokenTypes, errMsgProvider, grammarName) {\n var duplicateErrors = (0, flatMap_1.default)(topLevels, function (currTopLevel) { return validateDuplicateProductions(currTopLevel, errMsgProvider); });\n var termsNamespaceConflictErrors = checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider);\n var tooManyAltsErrors = (0, flatMap_1.default)(topLevels, function (curRule) {\n return validateTooManyAlts(curRule, errMsgProvider);\n });\n var duplicateRulesError = (0, flatMap_1.default)(topLevels, function (curRule) {\n return validateRuleDoesNotAlreadyExist(curRule, topLevels, grammarName, errMsgProvider);\n });\n return duplicateErrors.concat(termsNamespaceConflictErrors, tooManyAltsErrors, duplicateRulesError);\n}\nexports.validateGrammar = validateGrammar;\nfunction validateDuplicateProductions(topLevelRule, errMsgProvider) {\n var collectorVisitor = new OccurrenceValidationCollector();\n topLevelRule.accept(collectorVisitor);\n var allRuleProductions = collectorVisitor.allProductions;\n var productionGroups = (0, groupBy_1.default)(allRuleProductions, identifyProductionForDuplicates);\n var duplicates = (0, pickBy_1.default)(productionGroups, function (currGroup) {\n return currGroup.length > 1;\n });\n var errors = (0, map_1.default)((0, values_1.default)(duplicates), function (currDuplicates) {\n var firstProd = (0, first_1.default)(currDuplicates);\n var msg = errMsgProvider.buildDuplicateFoundError(topLevelRule, currDuplicates);\n var dslName = (0, gast_1.getProductionDslName)(firstProd);\n var defError = {\n message: msg,\n type: parser_1.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,\n ruleName: topLevelRule.name,\n dslName: dslName,\n occurrence: firstProd.idx\n };\n var param = getExtraProductionArgument(firstProd);\n if (param) {\n defError.parameter = param;\n }\n return defError;\n });\n return errors;\n}\nfunction identifyProductionForDuplicates(prod) {\n return \"\".concat((0, gast_1.getProductionDslName)(prod), \"_#_\").concat(prod.idx, \"_#_\").concat(getExtraProductionArgument(prod));\n}\nexports.identifyProductionForDuplicates = identifyProductionForDuplicates;\nfunction getExtraProductionArgument(prod) {\n if (prod instanceof gast_2.Terminal) {\n return prod.terminalType.name;\n }\n else if (prod instanceof gast_2.NonTerminal) {\n return prod.nonTerminalName;\n }\n else {\n return \"\";\n }\n}\nvar OccurrenceValidationCollector = /** @class */ (function (_super) {\n __extends(OccurrenceValidationCollector, _super);\n function OccurrenceValidationCollector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.allProductions = [];\n return _this;\n }\n OccurrenceValidationCollector.prototype.visitNonTerminal = function (subrule) {\n this.allProductions.push(subrule);\n };\n OccurrenceValidationCollector.prototype.visitOption = function (option) {\n this.allProductions.push(option);\n };\n OccurrenceValidationCollector.prototype.visitRepetitionWithSeparator = function (manySep) {\n this.allProductions.push(manySep);\n };\n OccurrenceValidationCollector.prototype.visitRepetitionMandatory = function (atLeastOne) {\n this.allProductions.push(atLeastOne);\n };\n OccurrenceValidationCollector.prototype.visitRepetitionMandatoryWithSeparator = function (atLeastOneSep) {\n this.allProductions.push(atLeastOneSep);\n };\n OccurrenceValidationCollector.prototype.visitRepetition = function (many) {\n this.allProductions.push(many);\n };\n OccurrenceValidationCollector.prototype.visitAlternation = function (or) {\n this.allProductions.push(or);\n };\n OccurrenceValidationCollector.prototype.visitTerminal = function (terminal) {\n this.allProductions.push(terminal);\n };\n return OccurrenceValidationCollector;\n}(gast_3.GAstVisitor));\nexports.OccurrenceValidationCollector = OccurrenceValidationCollector;\nfunction validateRuleDoesNotAlreadyExist(rule, allRules, className, errMsgProvider) {\n var errors = [];\n var occurrences = (0, reduce_1.default)(allRules, function (result, curRule) {\n if (curRule.name === rule.name) {\n return result + 1;\n }\n return result;\n }, 0);\n if (occurrences > 1) {\n var errMsg = errMsgProvider.buildDuplicateRuleNameError({\n topLevelRule: rule,\n grammarName: className\n });\n errors.push({\n message: errMsg,\n type: parser_1.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,\n ruleName: rule.name\n });\n }\n return errors;\n}\nexports.validateRuleDoesNotAlreadyExist = validateRuleDoesNotAlreadyExist;\n// TODO: is there anyway to get only the rule names of rules inherited from the super grammars?\n// This is not part of the IGrammarErrorProvider because the validation cannot be performed on\n// The grammar structure, only at runtime.\nfunction validateRuleIsOverridden(ruleName, definedRulesNames, className) {\n var errors = [];\n var errMsg;\n if (!(0, includes_1.default)(definedRulesNames, ruleName)) {\n errMsg =\n \"Invalid rule override, rule: ->\".concat(ruleName, \"<- cannot be overridden in the grammar: ->\").concat(className, \"<-\") +\n \"as it is not defined in any of the super grammars \";\n errors.push({\n message: errMsg,\n type: parser_1.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,\n ruleName: ruleName\n });\n }\n return errors;\n}\nexports.validateRuleIsOverridden = validateRuleIsOverridden;\nfunction validateNoLeftRecursion(topRule, currRule, errMsgProvider, path) {\n if (path === void 0) { path = []; }\n var errors = [];\n var nextNonTerminals = getFirstNoneTerminal(currRule.definition);\n if ((0, isEmpty_1.default)(nextNonTerminals)) {\n return [];\n }\n else {\n var ruleName = topRule.name;\n var foundLeftRecursion = (0, includes_1.default)(nextNonTerminals, topRule);\n if (foundLeftRecursion) {\n errors.push({\n message: errMsgProvider.buildLeftRecursionError({\n topLevelRule: topRule,\n leftRecursionPath: path\n }),\n type: parser_1.ParserDefinitionErrorType.LEFT_RECURSION,\n ruleName: ruleName\n });\n }\n // we are only looking for cyclic paths leading back to the specific topRule\n // other cyclic paths are ignored, we still need this difference to avoid infinite loops...\n var validNextSteps = (0, difference_1.default)(nextNonTerminals, path.concat([topRule]));\n var errorsFromNextSteps = (0, flatMap_1.default)(validNextSteps, function (currRefRule) {\n var newPath = (0, clone_1.default)(path);\n newPath.push(currRefRule);\n return validateNoLeftRecursion(topRule, currRefRule, errMsgProvider, newPath);\n });\n return errors.concat(errorsFromNextSteps);\n }\n}\nexports.validateNoLeftRecursion = validateNoLeftRecursion;\nfunction getFirstNoneTerminal(definition) {\n var result = [];\n if ((0, isEmpty_1.default)(definition)) {\n return result;\n }\n var firstProd = (0, first_1.default)(definition);\n /* istanbul ignore else */\n if (firstProd instanceof gast_2.NonTerminal) {\n result.push(firstProd.referencedRule);\n }\n else if (firstProd instanceof gast_2.Alternative ||\n firstProd instanceof gast_2.Option ||\n firstProd instanceof gast_2.RepetitionMandatory ||\n firstProd instanceof gast_2.RepetitionMandatoryWithSeparator ||\n firstProd instanceof gast_2.RepetitionWithSeparator ||\n firstProd instanceof gast_2.Repetition) {\n result = result.concat(getFirstNoneTerminal(firstProd.definition));\n }\n else if (firstProd instanceof gast_2.Alternation) {\n // each sub definition in alternation is a FLAT\n result = (0, flatten_1.default)((0, map_1.default)(firstProd.definition, function (currSubDef) {\n return getFirstNoneTerminal(currSubDef.definition);\n }));\n }\n else if (firstProd instanceof gast_2.Terminal) {\n // nothing to see, move along\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n var isFirstOptional = (0, gast_1.isOptionalProd)(firstProd);\n var hasMore = definition.length > 1;\n if (isFirstOptional && hasMore) {\n var rest = (0, drop_1.default)(definition);\n return result.concat(getFirstNoneTerminal(rest));\n }\n else {\n return result;\n }\n}\nexports.getFirstNoneTerminal = getFirstNoneTerminal;\nvar OrCollector = /** @class */ (function (_super) {\n __extends(OrCollector, _super);\n function OrCollector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.alternations = [];\n return _this;\n }\n OrCollector.prototype.visitAlternation = function (node) {\n this.alternations.push(node);\n };\n return OrCollector;\n}(gast_3.GAstVisitor));\nfunction validateEmptyOrAlternative(topLevelRule, errMsgProvider) {\n var orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n var ors = orCollector.alternations;\n var errors = (0, flatMap_1.default)(ors, function (currOr) {\n var exceptLast = (0, dropRight_1.default)(currOr.definition);\n return (0, flatMap_1.default)(exceptLast, function (currAlternative, currAltIdx) {\n var possibleFirstInAlt = (0, interpreter_1.nextPossibleTokensAfter)([currAlternative], [], tokens_1.tokenStructuredMatcher, 1);\n if ((0, isEmpty_1.default)(possibleFirstInAlt)) {\n return [\n {\n message: errMsgProvider.buildEmptyAlternationError({\n topLevelRule: topLevelRule,\n alternation: currOr,\n emptyChoiceIdx: currAltIdx\n }),\n type: parser_1.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,\n ruleName: topLevelRule.name,\n occurrence: currOr.idx,\n alternative: currAltIdx + 1\n }\n ];\n }\n else {\n return [];\n }\n });\n });\n return errors;\n}\nexports.validateEmptyOrAlternative = validateEmptyOrAlternative;\nfunction validateAmbiguousAlternationAlternatives(topLevelRule, globalMaxLookahead, errMsgProvider) {\n var orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n var ors = orCollector.alternations;\n // New Handling of ignoring ambiguities\n // - https://github.com/chevrotain/chevrotain/issues/869\n ors = (0, reject_1.default)(ors, function (currOr) { return currOr.ignoreAmbiguities === true; });\n var errors = (0, flatMap_1.default)(ors, function (currOr) {\n var currOccurrence = currOr.idx;\n var actualMaxLookahead = currOr.maxLookahead || globalMaxLookahead;\n var alternatives = (0, lookahead_1.getLookaheadPathsForOr)(currOccurrence, topLevelRule, actualMaxLookahead, currOr);\n var altsAmbiguityErrors = checkAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider);\n var altsPrefixAmbiguityErrors = checkPrefixAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider);\n return altsAmbiguityErrors.concat(altsPrefixAmbiguityErrors);\n });\n return errors;\n}\nexports.validateAmbiguousAlternationAlternatives = validateAmbiguousAlternationAlternatives;\nvar RepetitionCollector = /** @class */ (function (_super) {\n __extends(RepetitionCollector, _super);\n function RepetitionCollector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.allProductions = [];\n return _this;\n }\n RepetitionCollector.prototype.visitRepetitionWithSeparator = function (manySep) {\n this.allProductions.push(manySep);\n };\n RepetitionCollector.prototype.visitRepetitionMandatory = function (atLeastOne) {\n this.allProductions.push(atLeastOne);\n };\n RepetitionCollector.prototype.visitRepetitionMandatoryWithSeparator = function (atLeastOneSep) {\n this.allProductions.push(atLeastOneSep);\n };\n RepetitionCollector.prototype.visitRepetition = function (many) {\n this.allProductions.push(many);\n };\n return RepetitionCollector;\n}(gast_3.GAstVisitor));\nexports.RepetitionCollector = RepetitionCollector;\nfunction validateTooManyAlts(topLevelRule, errMsgProvider) {\n var orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n var ors = orCollector.alternations;\n var errors = (0, flatMap_1.default)(ors, function (currOr) {\n if (currOr.definition.length > 255) {\n return [\n {\n message: errMsgProvider.buildTooManyAlternativesError({\n topLevelRule: topLevelRule,\n alternation: currOr\n }),\n type: parser_1.ParserDefinitionErrorType.TOO_MANY_ALTS,\n ruleName: topLevelRule.name,\n occurrence: currOr.idx\n }\n ];\n }\n else {\n return [];\n }\n });\n return errors;\n}\nexports.validateTooManyAlts = validateTooManyAlts;\nfunction validateSomeNonEmptyLookaheadPath(topLevelRules, maxLookahead, errMsgProvider) {\n var errors = [];\n (0, forEach_1.default)(topLevelRules, function (currTopRule) {\n var collectorVisitor = new RepetitionCollector();\n currTopRule.accept(collectorVisitor);\n var allRuleProductions = collectorVisitor.allProductions;\n (0, forEach_1.default)(allRuleProductions, function (currProd) {\n var prodType = (0, lookahead_1.getProdType)(currProd);\n var actualMaxLookahead = currProd.maxLookahead || maxLookahead;\n var currOccurrence = currProd.idx;\n var paths = (0, lookahead_1.getLookaheadPathsForOptionalProd)(currOccurrence, currTopRule, prodType, actualMaxLookahead);\n var pathsInsideProduction = paths[0];\n if ((0, isEmpty_1.default)((0, flatten_1.default)(pathsInsideProduction))) {\n var errMsg = errMsgProvider.buildEmptyRepetitionError({\n topLevelRule: currTopRule,\n repetition: currProd\n });\n errors.push({\n message: errMsg,\n type: parser_1.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,\n ruleName: currTopRule.name\n });\n }\n });\n });\n return errors;\n}\nexports.validateSomeNonEmptyLookaheadPath = validateSomeNonEmptyLookaheadPath;\nfunction checkAlternativesAmbiguities(alternatives, alternation, rule, errMsgProvider) {\n var foundAmbiguousPaths = [];\n var identicalAmbiguities = (0, reduce_1.default)(alternatives, function (result, currAlt, currAltIdx) {\n // ignore (skip) ambiguities with this alternative\n if (alternation.definition[currAltIdx].ignoreAmbiguities === true) {\n return result;\n }\n (0, forEach_1.default)(currAlt, function (currPath) {\n var altsCurrPathAppearsIn = [currAltIdx];\n (0, forEach_1.default)(alternatives, function (currOtherAlt, currOtherAltIdx) {\n if (currAltIdx !== currOtherAltIdx &&\n (0, lookahead_1.containsPath)(currOtherAlt, currPath) &&\n // ignore (skip) ambiguities with this \"other\" alternative\n alternation.definition[currOtherAltIdx].ignoreAmbiguities !== true) {\n altsCurrPathAppearsIn.push(currOtherAltIdx);\n }\n });\n if (altsCurrPathAppearsIn.length > 1 &&\n !(0, lookahead_1.containsPath)(foundAmbiguousPaths, currPath)) {\n foundAmbiguousPaths.push(currPath);\n result.push({\n alts: altsCurrPathAppearsIn,\n path: currPath\n });\n }\n });\n return result;\n }, []);\n var currErrors = (0, map_1.default)(identicalAmbiguities, function (currAmbDescriptor) {\n var ambgIndices = (0, map_1.default)(currAmbDescriptor.alts, function (currAltIdx) { return currAltIdx + 1; });\n var currMessage = errMsgProvider.buildAlternationAmbiguityError({\n topLevelRule: rule,\n alternation: alternation,\n ambiguityIndices: ambgIndices,\n prefixPath: currAmbDescriptor.path\n });\n return {\n message: currMessage,\n type: parser_1.ParserDefinitionErrorType.AMBIGUOUS_ALTS,\n ruleName: rule.name,\n occurrence: alternation.idx,\n alternatives: currAmbDescriptor.alts\n };\n });\n return currErrors;\n}\nfunction checkPrefixAlternativesAmbiguities(alternatives, alternation, rule, errMsgProvider) {\n // flatten\n var pathsAndIndices = (0, reduce_1.default)(alternatives, function (result, currAlt, idx) {\n var currPathsAndIdx = (0, map_1.default)(currAlt, function (currPath) {\n return { idx: idx, path: currPath };\n });\n return result.concat(currPathsAndIdx);\n }, []);\n var errors = (0, compact_1.default)((0, flatMap_1.default)(pathsAndIndices, function (currPathAndIdx) {\n var alternativeGast = alternation.definition[currPathAndIdx.idx];\n // ignore (skip) ambiguities with this alternative\n if (alternativeGast.ignoreAmbiguities === true) {\n return [];\n }\n var targetIdx = currPathAndIdx.idx;\n var targetPath = currPathAndIdx.path;\n var prefixAmbiguitiesPathsAndIndices = (0, filter_1.default)(pathsAndIndices, function (searchPathAndIdx) {\n // prefix ambiguity can only be created from lower idx (higher priority) path\n return (\n // ignore (skip) ambiguities with this \"other\" alternative\n alternation.definition[searchPathAndIdx.idx].ignoreAmbiguities !==\n true &&\n searchPathAndIdx.idx < targetIdx &&\n // checking for strict prefix because identical lookaheads\n // will be be detected using a different validation.\n (0, lookahead_1.isStrictPrefixOfPath)(searchPathAndIdx.path, targetPath));\n });\n var currPathPrefixErrors = (0, map_1.default)(prefixAmbiguitiesPathsAndIndices, function (currAmbPathAndIdx) {\n var ambgIndices = [currAmbPathAndIdx.idx + 1, targetIdx + 1];\n var occurrence = alternation.idx === 0 ? \"\" : alternation.idx;\n var message = errMsgProvider.buildAlternationPrefixAmbiguityError({\n topLevelRule: rule,\n alternation: alternation,\n ambiguityIndices: ambgIndices,\n prefixPath: currAmbPathAndIdx.path\n });\n return {\n message: message,\n type: parser_1.ParserDefinitionErrorType.AMBIGUOUS_PREFIX_ALTS,\n ruleName: rule.name,\n occurrence: occurrence,\n alternatives: ambgIndices\n };\n });\n return currPathPrefixErrors;\n }));\n return errors;\n}\nexports.checkPrefixAlternativesAmbiguities = checkPrefixAlternativesAmbiguities;\nfunction checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider) {\n var errors = [];\n var tokenNames = (0, map_1.default)(tokenTypes, function (currToken) { return currToken.name; });\n (0, forEach_1.default)(topLevels, function (currRule) {\n var currRuleName = currRule.name;\n if ((0, includes_1.default)(tokenNames, currRuleName)) {\n var errMsg = errMsgProvider.buildNamespaceConflictError(currRule);\n errors.push({\n message: errMsg,\n type: parser_1.ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE,\n ruleName: currRuleName\n });\n }\n });\n return errors;\n}\n//# sourceMappingURL=checks.js.map","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.nextPossibleTokensAfter = exports.possiblePathsFrom = exports.NextTerminalAfterAtLeastOneSepWalker = exports.NextTerminalAfterAtLeastOneWalker = exports.NextTerminalAfterManySepWalker = exports.NextTerminalAfterManyWalker = exports.AbstractNextTerminalAfterProductionWalker = exports.NextAfterTokenWalker = exports.AbstractNextPossibleTokensWalker = void 0;\nvar rest_1 = require(\"./rest\");\nvar first_1 = __importDefault(require(\"lodash/first\"));\nvar isEmpty_1 = __importDefault(require(\"lodash/isEmpty\"));\nvar dropRight_1 = __importDefault(require(\"lodash/dropRight\"));\nvar drop_1 = __importDefault(require(\"lodash/drop\"));\nvar last_1 = __importDefault(require(\"lodash/last\"));\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar clone_1 = __importDefault(require(\"lodash/clone\"));\nvar first_2 = require(\"./first\");\nvar gast_1 = require(\"@chevrotain/gast\");\nvar AbstractNextPossibleTokensWalker = /** @class */ (function (_super) {\n __extends(AbstractNextPossibleTokensWalker, _super);\n function AbstractNextPossibleTokensWalker(topProd, path) {\n var _this = _super.call(this) || this;\n _this.topProd = topProd;\n _this.path = path;\n _this.possibleTokTypes = [];\n _this.nextProductionName = \"\";\n _this.nextProductionOccurrence = 0;\n _this.found = false;\n _this.isAtEndOfPath = false;\n return _this;\n }\n AbstractNextPossibleTokensWalker.prototype.startWalking = function () {\n this.found = false;\n if (this.path.ruleStack[0] !== this.topProd.name) {\n throw Error(\"The path does not start with the walker's top Rule!\");\n }\n // immutable for the win\n this.ruleStack = (0, clone_1.default)(this.path.ruleStack).reverse(); // intelij bug requires assertion\n this.occurrenceStack = (0, clone_1.default)(this.path.occurrenceStack).reverse(); // intelij bug requires assertion\n // already verified that the first production is valid, we now seek the 2nd production\n this.ruleStack.pop();\n this.occurrenceStack.pop();\n this.updateExpectedNext();\n this.walk(this.topProd);\n return this.possibleTokTypes;\n };\n AbstractNextPossibleTokensWalker.prototype.walk = function (prod, prevRest) {\n if (prevRest === void 0) { prevRest = []; }\n // stop scanning once we found the path\n if (!this.found) {\n _super.prototype.walk.call(this, prod, prevRest);\n }\n };\n AbstractNextPossibleTokensWalker.prototype.walkProdRef = function (refProd, currRest, prevRest) {\n // found the next production, need to keep walking in it\n if (refProd.referencedRule.name === this.nextProductionName &&\n refProd.idx === this.nextProductionOccurrence) {\n var fullRest = currRest.concat(prevRest);\n this.updateExpectedNext();\n this.walk(refProd.referencedRule, fullRest);\n }\n };\n AbstractNextPossibleTokensWalker.prototype.updateExpectedNext = function () {\n // need to consume the Terminal\n if ((0, isEmpty_1.default)(this.ruleStack)) {\n // must reset nextProductionXXX to avoid walking down another Top Level production while what we are\n // really seeking is the last Terminal...\n this.nextProductionName = \"\";\n this.nextProductionOccurrence = 0;\n this.isAtEndOfPath = true;\n }\n else {\n this.nextProductionName = this.ruleStack.pop();\n this.nextProductionOccurrence = this.occurrenceStack.pop();\n }\n };\n return AbstractNextPossibleTokensWalker;\n}(rest_1.RestWalker));\nexports.AbstractNextPossibleTokensWalker = AbstractNextPossibleTokensWalker;\nvar NextAfterTokenWalker = /** @class */ (function (_super) {\n __extends(NextAfterTokenWalker, _super);\n function NextAfterTokenWalker(topProd, path) {\n var _this = _super.call(this, topProd, path) || this;\n _this.path = path;\n _this.nextTerminalName = \"\";\n _this.nextTerminalOccurrence = 0;\n _this.nextTerminalName = _this.path.lastTok.name;\n _this.nextTerminalOccurrence = _this.path.lastTokOccurrence;\n return _this;\n }\n NextAfterTokenWalker.prototype.walkTerminal = function (terminal, currRest, prevRest) {\n if (this.isAtEndOfPath &&\n terminal.terminalType.name === this.nextTerminalName &&\n terminal.idx === this.nextTerminalOccurrence &&\n !this.found) {\n var fullRest = currRest.concat(prevRest);\n var restProd = new gast_1.Alternative({ definition: fullRest });\n this.possibleTokTypes = (0, first_2.first)(restProd);\n this.found = true;\n }\n };\n return NextAfterTokenWalker;\n}(AbstractNextPossibleTokensWalker));\nexports.NextAfterTokenWalker = NextAfterTokenWalker;\n/**\n * This walker only \"walks\" a single \"TOP\" level in the Grammar Ast, this means\n * it never \"follows\" production refs\n */\nvar AbstractNextTerminalAfterProductionWalker = /** @class */ (function (_super) {\n __extends(AbstractNextTerminalAfterProductionWalker, _super);\n function AbstractNextTerminalAfterProductionWalker(topRule, occurrence) {\n var _this = _super.call(this) || this;\n _this.topRule = topRule;\n _this.occurrence = occurrence;\n _this.result = {\n token: undefined,\n occurrence: undefined,\n isEndOfRule: undefined\n };\n return _this;\n }\n AbstractNextTerminalAfterProductionWalker.prototype.startWalking = function () {\n this.walk(this.topRule);\n return this.result;\n };\n return AbstractNextTerminalAfterProductionWalker;\n}(rest_1.RestWalker));\nexports.AbstractNextTerminalAfterProductionWalker = AbstractNextTerminalAfterProductionWalker;\nvar NextTerminalAfterManyWalker = /** @class */ (function (_super) {\n __extends(NextTerminalAfterManyWalker, _super);\n function NextTerminalAfterManyWalker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NextTerminalAfterManyWalker.prototype.walkMany = function (manyProd, currRest, prevRest) {\n if (manyProd.idx === this.occurrence) {\n var firstAfterMany = (0, first_1.default)(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterMany === undefined;\n if (firstAfterMany instanceof gast_1.Terminal) {\n this.result.token = firstAfterMany.terminalType;\n this.result.occurrence = firstAfterMany.idx;\n }\n }\n else {\n _super.prototype.walkMany.call(this, manyProd, currRest, prevRest);\n }\n };\n return NextTerminalAfterManyWalker;\n}(AbstractNextTerminalAfterProductionWalker));\nexports.NextTerminalAfterManyWalker = NextTerminalAfterManyWalker;\nvar NextTerminalAfterManySepWalker = /** @class */ (function (_super) {\n __extends(NextTerminalAfterManySepWalker, _super);\n function NextTerminalAfterManySepWalker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NextTerminalAfterManySepWalker.prototype.walkManySep = function (manySepProd, currRest, prevRest) {\n if (manySepProd.idx === this.occurrence) {\n var firstAfterManySep = (0, first_1.default)(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterManySep === undefined;\n if (firstAfterManySep instanceof gast_1.Terminal) {\n this.result.token = firstAfterManySep.terminalType;\n this.result.occurrence = firstAfterManySep.idx;\n }\n }\n else {\n _super.prototype.walkManySep.call(this, manySepProd, currRest, prevRest);\n }\n };\n return NextTerminalAfterManySepWalker;\n}(AbstractNextTerminalAfterProductionWalker));\nexports.NextTerminalAfterManySepWalker = NextTerminalAfterManySepWalker;\nvar NextTerminalAfterAtLeastOneWalker = /** @class */ (function (_super) {\n __extends(NextTerminalAfterAtLeastOneWalker, _super);\n function NextTerminalAfterAtLeastOneWalker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NextTerminalAfterAtLeastOneWalker.prototype.walkAtLeastOne = function (atLeastOneProd, currRest, prevRest) {\n if (atLeastOneProd.idx === this.occurrence) {\n var firstAfterAtLeastOne = (0, first_1.default)(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterAtLeastOne === undefined;\n if (firstAfterAtLeastOne instanceof gast_1.Terminal) {\n this.result.token = firstAfterAtLeastOne.terminalType;\n this.result.occurrence = firstAfterAtLeastOne.idx;\n }\n }\n else {\n _super.prototype.walkAtLeastOne.call(this, atLeastOneProd, currRest, prevRest);\n }\n };\n return NextTerminalAfterAtLeastOneWalker;\n}(AbstractNextTerminalAfterProductionWalker));\nexports.NextTerminalAfterAtLeastOneWalker = NextTerminalAfterAtLeastOneWalker;\n// TODO: reduce code duplication in the AfterWalkers\nvar NextTerminalAfterAtLeastOneSepWalker = /** @class */ (function (_super) {\n __extends(NextTerminalAfterAtLeastOneSepWalker, _super);\n function NextTerminalAfterAtLeastOneSepWalker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NextTerminalAfterAtLeastOneSepWalker.prototype.walkAtLeastOneSep = function (atleastOneSepProd, currRest, prevRest) {\n if (atleastOneSepProd.idx === this.occurrence) {\n var firstAfterfirstAfterAtLeastOneSep = (0, first_1.default)(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterfirstAfterAtLeastOneSep === undefined;\n if (firstAfterfirstAfterAtLeastOneSep instanceof gast_1.Terminal) {\n this.result.token = firstAfterfirstAfterAtLeastOneSep.terminalType;\n this.result.occurrence = firstAfterfirstAfterAtLeastOneSep.idx;\n }\n }\n else {\n _super.prototype.walkAtLeastOneSep.call(this, atleastOneSepProd, currRest, prevRest);\n }\n };\n return NextTerminalAfterAtLeastOneSepWalker;\n}(AbstractNextTerminalAfterProductionWalker));\nexports.NextTerminalAfterAtLeastOneSepWalker = NextTerminalAfterAtLeastOneSepWalker;\nfunction possiblePathsFrom(targetDef, maxLength, currPath) {\n if (currPath === void 0) { currPath = []; }\n // avoid side effects\n currPath = (0, clone_1.default)(currPath);\n var result = [];\n var i = 0;\n // TODO: avoid inner funcs\n function remainingPathWith(nextDef) {\n return nextDef.concat((0, drop_1.default)(targetDef, i + 1));\n }\n // TODO: avoid inner funcs\n function getAlternativesForProd(definition) {\n var alternatives = possiblePathsFrom(remainingPathWith(definition), maxLength, currPath);\n return result.concat(alternatives);\n }\n /**\n * Mandatory productions will halt the loop as the paths computed from their recursive calls will already contain the\n * following (rest) of the targetDef.\n *\n * For optional productions (Option/Repetition/...) the loop will continue to represent the paths that do not include the\n * the optional production.\n */\n while (currPath.length < maxLength && i < targetDef.length) {\n var prod = targetDef[i];\n /* istanbul ignore else */\n if (prod instanceof gast_1.Alternative) {\n return getAlternativesForProd(prod.definition);\n }\n else if (prod instanceof gast_1.NonTerminal) {\n return getAlternativesForProd(prod.definition);\n }\n else if (prod instanceof gast_1.Option) {\n result = getAlternativesForProd(prod.definition);\n }\n else if (prod instanceof gast_1.RepetitionMandatory) {\n var newDef = prod.definition.concat([\n new gast_1.Repetition({\n definition: prod.definition\n })\n ]);\n return getAlternativesForProd(newDef);\n }\n else if (prod instanceof gast_1.RepetitionMandatoryWithSeparator) {\n var newDef = [\n new gast_1.Alternative({ definition: prod.definition }),\n new gast_1.Repetition({\n definition: [new gast_1.Terminal({ terminalType: prod.separator })].concat(prod.definition)\n })\n ];\n return getAlternativesForProd(newDef);\n }\n else if (prod instanceof gast_1.RepetitionWithSeparator) {\n var newDef = prod.definition.concat([\n new gast_1.Repetition({\n definition: [new gast_1.Terminal({ terminalType: prod.separator })].concat(prod.definition)\n })\n ]);\n result = getAlternativesForProd(newDef);\n }\n else if (prod instanceof gast_1.Repetition) {\n var newDef = prod.definition.concat([\n new gast_1.Repetition({\n definition: prod.definition\n })\n ]);\n result = getAlternativesForProd(newDef);\n }\n else if (prod instanceof gast_1.Alternation) {\n (0, forEach_1.default)(prod.definition, function (currAlt) {\n // TODO: this is a limited check for empty alternatives\n // It would prevent a common case of infinite loops during parser initialization.\n // However **in-directly** empty alternatives may still cause issues.\n if ((0, isEmpty_1.default)(currAlt.definition) === false) {\n result = getAlternativesForProd(currAlt.definition);\n }\n });\n return result;\n }\n else if (prod instanceof gast_1.Terminal) {\n currPath.push(prod.terminalType);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n i++;\n }\n result.push({\n partialPath: currPath,\n suffixDef: (0, drop_1.default)(targetDef, i)\n });\n return result;\n}\nexports.possiblePathsFrom = possiblePathsFrom;\nfunction nextPossibleTokensAfter(initialDef, tokenVector, tokMatcher, maxLookAhead) {\n var EXIT_NON_TERMINAL = \"EXIT_NONE_TERMINAL\";\n // to avoid creating a new Array each time.\n var EXIT_NON_TERMINAL_ARR = [EXIT_NON_TERMINAL];\n var EXIT_ALTERNATIVE = \"EXIT_ALTERNATIVE\";\n var foundCompletePath = false;\n var tokenVectorLength = tokenVector.length;\n var minimalAlternativesIndex = tokenVectorLength - maxLookAhead - 1;\n var result = [];\n var possiblePaths = [];\n possiblePaths.push({\n idx: -1,\n def: initialDef,\n ruleStack: [],\n occurrenceStack: []\n });\n while (!(0, isEmpty_1.default)(possiblePaths)) {\n var currPath = possiblePaths.pop();\n // skip alternatives if no more results can be found (assuming deterministic grammar with fixed lookahead)\n if (currPath === EXIT_ALTERNATIVE) {\n if (foundCompletePath &&\n (0, last_1.default)(possiblePaths).idx <= minimalAlternativesIndex) {\n // remove irrelevant alternative\n possiblePaths.pop();\n }\n continue;\n }\n var currDef = currPath.def;\n var currIdx = currPath.idx;\n var currRuleStack = currPath.ruleStack;\n var currOccurrenceStack = currPath.occurrenceStack;\n // For Example: an empty path could exist in a valid grammar in the case of an EMPTY_ALT\n if ((0, isEmpty_1.default)(currDef)) {\n continue;\n }\n var prod = currDef[0];\n /* istanbul ignore else */\n if (prod === EXIT_NON_TERMINAL) {\n var nextPath = {\n idx: currIdx,\n def: (0, drop_1.default)(currDef),\n ruleStack: (0, dropRight_1.default)(currRuleStack),\n occurrenceStack: (0, dropRight_1.default)(currOccurrenceStack)\n };\n possiblePaths.push(nextPath);\n }\n else if (prod instanceof gast_1.Terminal) {\n /* istanbul ignore else */\n if (currIdx < tokenVectorLength - 1) {\n var nextIdx = currIdx + 1;\n var actualToken = tokenVector[nextIdx];\n if (tokMatcher(actualToken, prod.terminalType)) {\n var nextPath = {\n idx: nextIdx,\n def: (0, drop_1.default)(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n // end of the line\n }\n else if (currIdx === tokenVectorLength - 1) {\n // IGNORE ABOVE ELSE\n result.push({\n nextTokenType: prod.terminalType,\n nextTokenOccurrence: prod.idx,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n });\n foundCompletePath = true;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n }\n else if (prod instanceof gast_1.NonTerminal) {\n var newRuleStack = (0, clone_1.default)(currRuleStack);\n newRuleStack.push(prod.nonTerminalName);\n var newOccurrenceStack = (0, clone_1.default)(currOccurrenceStack);\n newOccurrenceStack.push(prod.idx);\n var nextPath = {\n idx: currIdx,\n def: prod.definition.concat(EXIT_NON_TERMINAL_ARR, (0, drop_1.default)(currDef)),\n ruleStack: newRuleStack,\n occurrenceStack: newOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n else if (prod instanceof gast_1.Option) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n var nextPathWithout = {\n idx: currIdx,\n def: (0, drop_1.default)(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWithout);\n // required marker to avoid backtracking paths whose higher priority alternatives already matched\n possiblePaths.push(EXIT_ALTERNATIVE);\n var nextPathWith = {\n idx: currIdx,\n def: prod.definition.concat((0, drop_1.default)(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWith);\n }\n else if (prod instanceof gast_1.RepetitionMandatory) {\n // TODO:(THE NEW operators here take a while...) (convert once?)\n var secondIteration = new gast_1.Repetition({\n definition: prod.definition,\n idx: prod.idx\n });\n var nextDef = prod.definition.concat([secondIteration], (0, drop_1.default)(currDef));\n var nextPath = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n else if (prod instanceof gast_1.RepetitionMandatoryWithSeparator) {\n // TODO:(THE NEW operators here take a while...) (convert once?)\n var separatorGast = new gast_1.Terminal({\n terminalType: prod.separator\n });\n var secondIteration = new gast_1.Repetition({\n definition: [separatorGast].concat(prod.definition),\n idx: prod.idx\n });\n var nextDef = prod.definition.concat([secondIteration], (0, drop_1.default)(currDef));\n var nextPath = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n else if (prod instanceof gast_1.RepetitionWithSeparator) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n var nextPathWithout = {\n idx: currIdx,\n def: (0, drop_1.default)(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWithout);\n // required marker to avoid backtracking paths whose higher priority alternatives already matched\n possiblePaths.push(EXIT_ALTERNATIVE);\n var separatorGast = new gast_1.Terminal({\n terminalType: prod.separator\n });\n var nthRepetition = new gast_1.Repetition({\n definition: [separatorGast].concat(prod.definition),\n idx: prod.idx\n });\n var nextDef = prod.definition.concat([nthRepetition], (0, drop_1.default)(currDef));\n var nextPathWith = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWith);\n }\n else if (prod instanceof gast_1.Repetition) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n var nextPathWithout = {\n idx: currIdx,\n def: (0, drop_1.default)(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWithout);\n // required marker to avoid backtracking paths whose higher priority alternatives already matched\n possiblePaths.push(EXIT_ALTERNATIVE);\n // TODO: an empty repetition will cause infinite loops here, will the parser detect this in selfAnalysis?\n var nthRepetition = new gast_1.Repetition({\n definition: prod.definition,\n idx: prod.idx\n });\n var nextDef = prod.definition.concat([nthRepetition], (0, drop_1.default)(currDef));\n var nextPathWith = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWith);\n }\n else if (prod instanceof gast_1.Alternation) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n for (var i = prod.definition.length - 1; i >= 0; i--) {\n var currAlt = prod.definition[i];\n var currAltPath = {\n idx: currIdx,\n def: currAlt.definition.concat((0, drop_1.default)(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(currAltPath);\n possiblePaths.push(EXIT_ALTERNATIVE);\n }\n }\n else if (prod instanceof gast_1.Alternative) {\n possiblePaths.push({\n idx: currIdx,\n def: prod.definition.concat((0, drop_1.default)(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n });\n }\n else if (prod instanceof gast_1.Rule) {\n // last because we should only encounter at most a single one of these per invocation.\n possiblePaths.push(expandTopLevelRule(prod, currIdx, currRuleStack, currOccurrenceStack));\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n }\n return result;\n}\nexports.nextPossibleTokensAfter = nextPossibleTokensAfter;\nfunction expandTopLevelRule(topRule, currIdx, currRuleStack, currOccurrenceStack) {\n var newRuleStack = (0, clone_1.default)(currRuleStack);\n newRuleStack.push(topRule.name);\n var newCurrOccurrenceStack = (0, clone_1.default)(currOccurrenceStack);\n // top rule is always assumed to have been called with occurrence index 1\n newCurrOccurrenceStack.push(1);\n return {\n idx: currIdx,\n def: topRule.definition,\n ruleStack: newRuleStack,\n occurrenceStack: newCurrOccurrenceStack\n };\n}\n//# sourceMappingURL=interpreter.js.map","import output from \"_src/engine/output\";\n\nfunction getCoder() {\n output.error(output.DEVELOPERS_ERROR, \"Can't use ZSTD encoder in the client build!\");\n return null;\n}\n\nexport default {getCoder};\n","import {DEFAULT_ATTRIBUTES} from \"_src/engine/utility/attributes\";\nimport {Geometry, GeometryBuffer} from \"_src/engine/geometry\";\nimport config from \"_src/config\";\n\nexport default class LoaderBase {\n prepareGeometry(data) {\n const layout = {};\n\n for (let i = 0; i < DEFAULT_ATTRIBUTES.length; ++i) {\n\n const name = DEFAULT_ATTRIBUTES[i];\n const attribute = data[name];\n\n if (attribute) {\n\n const attributeBuffer = data[name].buffer;\n const type = data[name].type;\n\n layout[name] = new GeometryBuffer({ buffer : attributeBuffer.buffer, type : type });\n if (config.viewOnlyMode /*&& !DEPENDENT_BUFFER_NAMES.includes(name)// add this check if you want to calculate normals*/) {\n layout[name].scheduleUnload();\n }\n\n }\n\n }\n\n const geometry = new Geometry({\n bbox : data.bbox,\n layout : layout,\n });\n\n return geometry;\n\n }\n}\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n//# sourceMappingURL=isPromise.js.map\n","import output from \"_src/engine/output\";\nimport Animation from \"_src/client/animation\";\n\nexport default class CameraControl {\n constructor(object) {\n if (!object.isCamera) {\n output.error(output.DEVELOPERS_ERROR, \"Can't attach control. Object is not a camera.\");\n return;\n }\n\n this.enabled = true;\n this.object = object;\n this._animation = new Animation();\n }\n\n update(dt) {\n this._animation.update(dt);\n }\n\n setEnabled(enabled) {\n this.enabled = enabled;\n }\n\n zoom() {}\n startRotation() {}\n rotate() {}\n endRotation() {}\n pan() {}\n}\n","/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */\nimport { hostReportError } from './hostReportError';\nexport var subscribeToPromise = function (promise) {\n return function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, hostReportError);\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToPromise.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport var subscribeToIterable = function (iterable) {\n return function (subscriber) {\n var iterator = iterable[Symbol_iterator]();\n do {\n var item = iterator.next();\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(function () {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToIterable.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeToObservable = function (obj) {\n return function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n };\n};\n//# sourceMappingURL=subscribeToObservable.js.map\n","/** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeTo = function (result) {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n var value = isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = \"You provided \" + value + \" where a stream was expected.\"\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n//# sourceMappingURL=subscribeTo.js.map\n","import { IStorageItem } from '_data/types/project';\nimport { isNullable } from '_helpers/nullable';\n\nexport interface ISelectedStorageItemsSet extends Pick, 'clear' | 'size'> {\n add(newStorageItem: IStorageItem): this;\n [Symbol.iterator](): IterableIterator;\n has(id: number): boolean;\n delete(id: number): boolean;\n}\n\nexport default class SelectedStorageItemsSet implements ISelectedStorageItemsSet {\n private map: Map;\n\n constructor(input?: IStorageItem[] | ISelectedStorageItemsSet) {\n if (isNullable(input)) {\n this.map = new Map();\n } else {\n this.map = new Map(\n Object.entries(\n [...input].reduce(\n (result, item) => ({\n ...result,\n ...(isNullable(result[item.id]) ? { [item.id]: item } : undefined),\n }),\n {}\n )\n ).map(([key, value]: [string, IStorageItem]) => [Number(key), value])\n );\n }\n }\n\n [Symbol.iterator](): IterableIterator {\n return this.map.values();\n }\n\n add(newStorageItem: IStorageItem) {\n this.map.set(newStorageItem.id, newStorageItem);\n\n return this;\n }\n\n delete(id: number) {\n return this.map.delete(id);\n }\n\n clear() {\n this.map.clear();\n }\n\n has(id: number) {\n return this.map.has(id);\n }\n\n get size() {\n return this.map.size;\n }\n}\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace', ['error-stack-parser', 'stack-generator', 'stacktrace-gps'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('error-stack-parser'), require('stack-generator'), require('stacktrace-gps'));\n } else {\n root.StackTrace = factory(root.ErrorStackParser, root.StackGenerator, root.StackTraceGPS);\n }\n}(this, function StackTrace(ErrorStackParser, StackGenerator, StackTraceGPS) {\n var _options = {\n filter: function(stackframe) {\n // Filter out stackframes for this library by default\n return (stackframe.functionName || '').indexOf('StackTrace$$') === -1 &&\n (stackframe.functionName || '').indexOf('ErrorStackParser$$') === -1 &&\n (stackframe.functionName || '').indexOf('StackTraceGPS$$') === -1 &&\n (stackframe.functionName || '').indexOf('StackGenerator$$') === -1;\n },\n sourceCache: {}\n };\n\n var _generateError = function StackTrace$$GenerateError() {\n try {\n // Error must be thrown to get stack in IE\n throw new Error();\n } catch (err) {\n return err;\n }\n };\n\n /**\n * Merge 2 given Objects. If a conflict occurs the second object wins.\n * Does not do deep merges.\n *\n * @param {Object} first base object\n * @param {Object} second overrides\n * @returns {Object} merged first and second\n * @private\n */\n function _merge(first, second) {\n var target = {};\n\n [first, second].forEach(function(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n target[prop] = obj[prop];\n }\n }\n return target;\n });\n\n return target;\n }\n\n function _isShapedLikeParsableError(err) {\n return err.stack || err['opera#sourceloc'];\n }\n\n function _filtered(stackframes, filter) {\n if (typeof filter === 'function') {\n return stackframes.filter(filter);\n }\n return stackframes;\n }\n\n return {\n /**\n * Get a backtrace from invocation point.\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n get: function StackTrace$$get(opts) {\n var err = _generateError();\n return _isShapedLikeParsableError(err) ? this.fromError(err, opts) : this.generateArtificially(opts);\n },\n\n /**\n * Get a backtrace from invocation point.\n * IMPORTANT: Does not handle source maps or guess function names!\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n getSync: function StackTrace$$getSync(opts) {\n opts = _merge(_options, opts);\n var err = _generateError();\n var stack = _isShapedLikeParsableError(err) ? ErrorStackParser.parse(err) : StackGenerator.backtrace(opts);\n return _filtered(stack, opts.filter);\n },\n\n /**\n * Given an error object, parse it.\n *\n * @param {Error} error object\n * @param {Object} opts\n * @returns {Promise} for Array[StackFrame}\n */\n fromError: function StackTrace$$fromError(error, opts) {\n opts = _merge(_options, opts);\n var gps = new StackTraceGPS(opts);\n return new Promise(function(resolve) {\n var stackframes = _filtered(ErrorStackParser.parse(error), opts.filter);\n resolve(Promise.all(stackframes.map(function(sf) {\n return new Promise(function(resolve) {\n function resolveOriginal() {\n resolve(sf);\n }\n\n gps.pinpoint(sf).then(resolve, resolveOriginal)['catch'](resolveOriginal);\n });\n })));\n }.bind(this));\n },\n\n /**\n * Use StackGenerator to generate a backtrace.\n *\n * @param {Object} opts\n * @returns {Promise} of Array[StackFrame]\n */\n generateArtificially: function StackTrace$$generateArtificially(opts) {\n opts = _merge(_options, opts);\n var stackFrames = StackGenerator.backtrace(opts);\n if (typeof opts.filter === 'function') {\n stackFrames = stackFrames.filter(opts.filter);\n }\n return Promise.resolve(stackFrames);\n },\n\n /**\n * Given a function, wrap it such that invocations trigger a callback that\n * is called with a stack trace.\n *\n * @param {Function} fn to be instrumented\n * @param {Function} callback function to call with a stack trace on invocation\n * @param {Function} errback optional function to call with error if unable to get stack trace.\n * @param {Object} thisArg optional context object (e.g. window)\n */\n instrument: function StackTrace$$instrument(fn, callback, errback, thisArg) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n // Already instrumented, return given Function\n return fn;\n }\n\n var instrumented = function StackTrace$$instrumented() {\n try {\n this.get().then(callback, errback)['catch'](errback);\n return fn.apply(thisArg || this, arguments);\n } catch (e) {\n if (_isShapedLikeParsableError(e)) {\n this.fromError(e).then(callback, errback)['catch'](errback);\n }\n throw e;\n }\n }.bind(this);\n instrumented.__stacktraceOriginalFn = fn;\n\n return instrumented;\n },\n\n /**\n * Given a function that has been instrumented,\n * revert the function to it's original (non-instrumented) state.\n *\n * @param {Function} fn to de-instrument\n */\n deinstrument: function StackTrace$$deinstrument(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot de-instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n return fn.__stacktraceOriginalFn;\n } else {\n // Function not instrumented, return original\n return fn;\n }\n },\n\n /**\n * Given an error message and Array of StackFrames, serialize and POST to given URL.\n *\n * @param {Array} stackframes\n * @param {String} url\n * @param {String} errorMsg\n * @param {Object} requestOptions\n */\n report: function StackTrace$$report(stackframes, url, errorMsg, requestOptions) {\n return new Promise(function(resolve, reject) {\n var req = new XMLHttpRequest();\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 400) {\n resolve(req.responseText);\n } else {\n reject(new Error('POST to ' + url + ' failed with status: ' + req.status));\n }\n }\n };\n req.open('post', url);\n\n // Set request headers\n req.setRequestHeader('Content-Type', 'application/json');\n if (requestOptions && typeof requestOptions.headers === 'object') {\n var headers = requestOptions.headers;\n for (var header in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, header)) {\n req.setRequestHeader(header, headers[header]);\n }\n }\n }\n\n var reportPayload = {stack: stackframes};\n if (errorMsg !== undefined && errorMsg !== null) {\n reportPayload.message = errorMsg;\n }\n\n req.send(JSON.stringify(reportPayload));\n });\n }\n };\n}));\n","import { $transferable } from \"./symbols\";\nfunction isTransferable(thing) {\n if (!thing || typeof thing !== \"object\")\n return false;\n // Don't check too thoroughly, since the list of transferable things in JS might grow over time\n return true;\n}\nexport function isTransferDescriptor(thing) {\n return thing && typeof thing === \"object\" && thing[$transferable];\n}\nexport function Transfer(payload, transferables) {\n if (!transferables) {\n if (!isTransferable(payload))\n throw Error();\n transferables = [payload];\n }\n return {\n [$transferable]: true,\n send: payload,\n transferables\n };\n}\n","/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber,_map,_observable_from PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(mergeMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };\n}\nvar MergeMapOperator = /*@__PURE__*/ (function () {\n function MergeMapOperator(project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n this.project = project;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexport { MergeMapOperator };\nvar MergeMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult(this, ish, value, index, innerSubscriber);\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(OuterSubscriber));\nexport { MergeMapSubscriber };\n//# sourceMappingURL=mergeMap.js.map\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _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}","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","import Shader from \"_src/engine/shader\";\nimport Uniform from \"_src/engine/uniform\";\nimport { uniformType, uniformSource } from \"_src/engine/constants\";\nimport { vec2, vec3, vec4, mat4 } from \"_src/libs/gl-matrix\";\n\nimport vertText from \"_src/shaders/circle/circle.glslv\";\nimport fragText from \"_src/shaders/circle/circle.glslf\";\n\nconst _vec3Tmp = vec3.create();\n\nexport default class CircleShader extends Shader {\n\n constructor(params = {}) {\n\n super(params);\n\n this.standardDerivativesEnabled = true;\n this.transparent = true;\n this.backFaceCulling = false;\n\n this.attachUniforms();\n\n }\n\n //reimplementation\n initDirectives(params) {\n this._directives[\"BLUR_TEXTURE\"] = params.useBlur !== undefined ? params.useBlur : false;\n }\n\n compile() {\n super.compile(vertText, fragText);\n }\n\n updateObjectUniformValues(object) {\n mat4.copy(this.uniforms[\"u_model_matrix\"].value, object.modelMatrix);\n vec4.copy(this.uniforms[\"u_diffuse\"].value, object.properties.diffuseColor);\n }\n\n updateSceneUniformValues(scene) {\n const camera = scene.camera;\n mat4.copy(this.uniforms[\"u_view_proj_matrix\"].value, camera.viewProjMat);\n vec2.copy(this.uniforms[\"u_texel_size\"].value, camera.texelSize);\n }\n\n attachUniforms() {\n\n const diffuseColor = vec4.fromValues(0.8, 0.8, 0.8, 1.0);\n const modelMatrix = mat4.create();\n const viewProjectionMatrix = mat4.create();\n const texelSize = vec2.create();\n const backfaceColor = vec3.fromValues(0.8, 0.8, 0.4);\n\n this.uniforms[\"u_model_matrix\"] = new Uniform(uniformType.MAT4, modelMatrix, uniformSource.OBJECT);\n this.uniforms[\"u_diffuse\"] = new Uniform(uniformType.FLOAT4V, diffuseColor, uniformSource.OBJECT);\n this.uniforms[\"u_view_proj_matrix\"] = new Uniform(uniformType.MAT4, viewProjectionMatrix, uniformSource.SCENE);\n this.uniforms[\"u_texel_size\"] = new Uniform(uniformType.FLOAT2V, texelSize, uniformSource.SCENE);\n this.uniforms[\"tDiffuse\"] = new Uniform(uniformType.INT1, 0);\n this.uniforms[\"u_backface_color\"] = new Uniform(uniformType.FLOAT3, backfaceColor);\n }\n\n setBackFaceColor(r, g, b) {\n const color = vec3.set(_vec3Tmp, r, g, b);\n this.setUniform(\"u_backface_color\", color);\n }\n\n}\n","import loader from \"_src/loader\";\nimport output from \"_src/engine/output\";\nimport {pixelBufferType, primitiveType, textureMagFilter, textureMinFilter} from \"_src/engine/constants\";\nimport bufferFactory from \"_src/engine/factories/pixel_buffer\";\nimport DefaultShader from \"_src/shaders/default/default_shader\";\nimport objFactory from \"_src/engine/factories/object\";\nimport primitiveFactory from \"_src/engine/factories/primitive\";\nimport {screenUtils} from \"_src/client/utils\";\nimport rotationIndicator from \"_assets/textures/rotation_indicator.png\";\nimport {colorType} from \"_src/constants\";\n\nconst SCREEN_SIZE = 8;\nlet texturePromise = null;\n\nasync function loadTexture() {\n try {\n const image = await loader.load(rotationIndicator, loader.IMAGE);\n\n if (!image) {\n output.error(output.DEVELOPERS_ERROR, \"Couldn't load rotation indicator texture.\");\n return null;\n }\n\n const minFilter = textureMinFilter.LINEAR;\n const magFilter = textureMagFilter.LINEAR;\n\n const texture = bufferFactory.create(pixelBufferType.T_RGBA, {\n width: image.width, height: image.height,\n minFilter, magFilter, immutable: true, flipY: true\n });\n texture.initMipMapLevelImage(0, image);\n\n return texture;\n } catch (error) {\n \n if (!loader.isLegalError(error)) {\n output.error(output.DEVELOPERS_ERROR, \"Couldn't load rotation indicator texture. \" + error.message);\n }\n return null;\n }\n}\n\nasync function getTexture() {\n if (!texturePromise) {\n texturePromise = loadTexture();\n }\n\n const texture = await texturePromise;\n return texture;\n}\n\nexport class RotationIndicator {\n constructor(camera) {\n const shader = new DefaultShader({\n transparent: true,\n lighting: false,\n depthTest: false,\n colorMode: colorType.TEXTURE_UV,\n });\n\n this.rotationIndicatorObject = objFactory.createDrawable(shader);\n this.rotationIndicatorObject.addGeometryChunk(primitiveFactory.create(primitiveType.PLANE, {width : 1, height : 1}));\n this.rotationIndicatorObject.setVisibility(false);\n this.camera = camera;\n }\n\n async register(scene) {\n const texture = await getTexture();\n if (texture) {\n this.rotationIndicatorObject.setTexture(texture, 0);\n scene.add(this.rotationIndicatorObject);\n }\n }\n\n unregister(scene) {\n scene.remove(this.rotationIndicatorObject);\n }\n\n update() {\n this.rotationIndicatorObject.copyRotation(this.camera.quat);\n const scale = screenUtils.calculateObjectScale(SCREEN_SIZE, 1, this.rotationIndicatorObject.getTranslation(), this.camera);\n this.rotationIndicatorObject.setScale(scale, scale, scale);\n }\n\n setVisibility(visibility) {\n this.rotationIndicatorObject.setVisibility(visibility);\n }\n\n move(point) {\n this.rotationIndicatorObject.setTranslation(...point);\n this.update();\n }\n\n}\n\nexport function cleanupRotationIndicator() {\n texturePromise = null;\n}\n","import events from \"_src/engine/events\";\nimport {vec3, quat, mat4, vec2, vec4} from \"_src/libs/gl-matrix\";\nimport CameraControl from \"_src/client/controls/camera_control\";\nimport appState from \"_src/app_state\";\nimport {screenUtils} from \"_src/client/utils\";\nimport {photoOrientation} from \"_src/constants\";\nimport {easingType} from \"_src/engine/constants\";\n\nconst PAN_SPEED_MULTIPLIER = 1/10;\n\nconst SCREEN_MARGIN = 50; //virtual px\nconst PANEL_HEIGHT = 60; //virtual px\n\nexport default class PhotoControl extends CameraControl {\n\n constructor(object) {\n super(object);\n this._animation.type = easingType.OUT_EXPO;\n\n this._resetState();\n }\n\n _resetState() {\n this._fovRange = [0, 0];\n this._cameraRect = null;\n this._screenRect = null;\n this._defaultShift = [0, 0];\n this._shiftRange = [0, 0, 0, 0];\n this._savedFov = 0;\n this._savedRotationStart = null;\n }\n\n moveToPhoto(model, orientation, animationTime, instantRectangle, onFinish) {\n const camera = this.object;\n this._savedFov = camera.fov;\n\n const rotation = quat.clone(model.quat);\n quat.rotateX(rotation, rotation, Math.PI);\n const orientationRotation = _getOrientationRotation(orientation);\n quat.multiply(rotation, rotation, orientationRotation);\n\n const startPosition = vec3.clone(camera.trans);\n const finalPosition = vec3.clone(model.trans);\n const currentPosition = vec3.create();\n\n const startRotation = quat.clone(camera.quat);\n const finalRotation = rotation;\n const currentRotation = quat.create();\n\n const startFov = camera.fov;\n let finalFov = startFov;\n let currentFov;\n\n const startShift = vec2.clone(camera.projectionShift);\n const finalShift = this._defaultShift;\n const currentShift = vec2.create();\n\n const updateCameraState = (t) => {\n vec3.lerp(currentPosition, startPosition, finalPosition, t);\n quat.slerp(currentRotation, startRotation, finalRotation, t);\n currentFov = startFov + (finalFov - startFov) * t;\n vec2.lerp(currentShift, startShift, finalShift, t);\n\n camera.setRotation(...currentRotation);\n camera.setTranslation(...currentPosition);\n camera.setFovY(currentFov);\n camera.projectionShift[0] = currentShift[0];\n camera.projectionShift[1] = currentShift[1];\n camera.updateMatrix();\n camera.updateProjectMatrix();\n\n events.emit(\"camera_move\", camera);\n events.emit(\"frame_requested\");\n }\n\n this._animation.setOnUpdate((value) => {\n updateCameraState(value);\n });\n\n this._animation.setOnFinish(() => {\n updateCameraState(1);\n if (!instantRectangle) _emitRectangle(this._screenRect, camera);\n onFinish();\n });\n\n this._animation.start(0, 1, animationTime);\n\n //set camera to final position to estimate fov and rects\n updateCameraState(1);\n this._cameraRect = _cameraRectByModel(model, camera);\n const maxFov = _fovByCamera(camera, this._cameraRect);\n finalFov = maxFov;\n this._fovRange = _getFovRange(maxFov);\n this._screenRect = _screenRectByFov(maxFov, camera, this._cameraRect, this._defaultShift);\n this._shiftRange = [this._defaultShift[0], this._defaultShift[1], this._defaultShift[0], this._defaultShift[1]];\n if (instantRectangle) _emitRectangle(this._screenRect, camera);\n\n return this._screenRect;\n }\n\n moveOutOfPhoto(animationTime, onFinish) {\n const camera = this.object;\n\n const startProjectionShift = vec2.clone(camera.projectionShift);\n const finalProjectionShift = vec2.fromValues(0,0);\n const currentProjectionShift = vec2.create();\n\n const startFov = camera.fov;\n const finalFov = this._savedFov;\n const fovDelta = finalFov - startFov;\n let currentFov;\n\n const startPosition = vec3.clone(camera.trans);\n const finalPosition = _cameraPosByFov(camera, this._savedFov, this._screenRect, this._cameraRect);\n const currentPosition = vec3.create();\n\n const updateCameraState = (t) => {\n vec3.lerp(currentPosition, startPosition, finalPosition, t);\n vec2.lerp(currentProjectionShift, startProjectionShift, finalProjectionShift, t);\n currentFov = startFov + fovDelta * t;\n\n camera.setTranslation(...currentPosition);\n camera.setFovY(currentFov);\n camera.projectionShift = currentProjectionShift;\n camera.updateMatrix();\n camera.updateProjectMatrix();\n\n events.emit(\"camera_move\", camera);\n events.emit(\"frame_requested\");\n }\n\n this._animation.setOnUpdate((value) => {\n updateCameraState(value);\n });\n\n this._animation.setOnFinish(() => {\n updateCameraState(1);\n this._resetState();\n\n onFinish();\n });\n\n this._animation.start(0, 1, animationTime);\n\n events.emit(\"photoViewRectangleExternal\", null);\n }\n\n zoom(delta) {\n if (this._animation.checkBusy() || !this.enabled) return;\n\n const camera = this.object;\n const newFov = Math.max(Math.min(camera.fov + delta, this._fovRange[1]), this._fovRange[0]);\n camera.setFovY(newFov);\n camera.updateProjectMatrix();\n\n const zoomedScreenRect = _screenRectByFov(camera.fov, camera, this._cameraRect, this._defaultShift);\n this._shiftRange = [\n this._defaultShift[0] - (this._screenRect[0] - zoomedScreenRect[0]),\n this._defaultShift[1] - (this._screenRect[1] - zoomedScreenRect[1]),\n this._defaultShift[0] + (this._screenRect[0] - zoomedScreenRect[0]),\n this._defaultShift[1] + (this._screenRect[1] - zoomedScreenRect[1])\n ];\n\n _updateCameraShift(camera, this._shiftRange);\n }\n\n pan(dX, dY) {\n if (this._animation.checkBusy() || !this.enabled) return;\n\n const camera = this.object;\n\n camera.projectionShift[0] -= dX * PAN_SPEED_MULTIPLIER;\n camera.projectionShift[1] += dY * PAN_SPEED_MULTIPLIER;\n\n _updateCameraShift(camera, this._shiftRange);\n }\n\n startRotation(x, y) {\n this._savedRotationStart = [x, y];\n }\n\n rotate() {\n if (this._animation.checkBusy() || !this.enabled) return;\n\n events.emit(\"exitPhotoMode\", this._savedRotationStart);\n }\n\n endRotation() {\n this._savedRotationStart = null;\n }\n\n resize() {\n const camera = this.object;\n const maxFov = _fovByCamera(camera, this._cameraRect);\n this._fovRange = _getFovRange(maxFov);\n this._screenRect = _screenRectByFov(maxFov, camera, this._cameraRect, this._defaultShift);\n this._shiftRange = [\n this._defaultShift[0] - (this._screenRect[0] - this._screenRect[0]),\n this._defaultShift[1] - (this._screenRect[1] - this._screenRect[1]),\n this._defaultShift[0] + (this._screenRect[0] - this._screenRect[0]),\n this._defaultShift[1] + (this._screenRect[1] - this._screenRect[1])\n ];\n _updateCameraShift(camera, this._shiftRange);\n camera.setFovY(maxFov);\n camera.updateProjectMatrix();\n\n _emitRectangle(this._screenRect, camera);\n return this._screenRect;\n }\n}\n\nfunction _cameraRectByModel(model, camera) {\n const geometry = model.getChildren()[0].chunks[0].geometry;\n const posBuffer = geometry.getItemBuffer(\"a_position\");\n\n const modelTransform = model.getChildren()[0].modelMatrix;\n let cameraRect = [Infinity, Infinity, -Infinity, -Infinity, Infinity];\n for (let i=0; i photoAspect) {\n const ndcHeight = maxPhotoHeight / scenePixelHeight;\n const cameraSpaceHalfHeight = (cameraRect[3] - cameraRect[1]) / 2;\n\n f = ndcHeight * (-cameraRect[4]) / cameraSpaceHalfHeight;\n } else {\n const ndcWidth = maxPhotoWidth / scenePixelWidth;\n const cameraSpaceHalfWidth = (cameraRect[2] - cameraRect[0]) / 2;\n\n f = ndcWidth * (-cameraRect[4]) * sceneAspect / cameraSpaceHalfWidth;\n }\n const fov = Math.atan(1 / f) * 2;\n\n return fov;\n}\n\nfunction _screenRectByFov(fov, camera, cameraRect, defaultShift) {\n let screenProjectedRect = [Infinity, Infinity, -Infinity, -Infinity];\n const projMatrix = mat4.perspective(mat4.create(), fov, camera.aspect, camera.near, camera.far);\n const camSpacePositions = [\n [cameraRect[0], cameraRect[1], cameraRect[4]],\n [cameraRect[0], cameraRect[3], cameraRect[4]],\n [cameraRect[2], cameraRect[3], cameraRect[4]],\n [cameraRect[2], cameraRect[1], cameraRect[4]],\n ];\n for (const pos of camSpacePositions) {\n const screenProjectedPos = vec3.transformMat4(vec3.create(), pos, projMatrix);\n screenProjectedRect = [Math.min(screenProjectedPos[0], screenProjectedRect[0]), Math.min(screenProjectedPos[1], screenProjectedRect[1]),\n Math.max(screenProjectedPos[0], screenProjectedRect[2]), Math.max(screenProjectedPos[1], screenProjectedRect[3])];\n }\n const panelNdcShift = PANEL_HEIGHT * screenUtils.getPixelRatio() / camera.viewport[3];\n const fittingArea = appState.getStateValue(\"photoFitArea\");\n const fittingAreaCenter = [fittingArea[0] + fittingArea[2] / 2, fittingArea[1] + fittingArea[3] / 2];\n const fittingAreaNdcShift = [(fittingAreaCenter[0] / camera.viewport[2] - 0.5) * 2, (fittingAreaCenter[1] / camera.viewport[3] - 0.5) * 2];\n\n const shiftedRect = [\n screenProjectedRect[0] + fittingAreaNdcShift[0],\n screenProjectedRect[1] + panelNdcShift - fittingAreaNdcShift[1],\n screenProjectedRect[2] + fittingAreaNdcShift[0],\n screenProjectedRect[3] + panelNdcShift - fittingAreaNdcShift[1],\n ];\n defaultShift[0] = screenProjectedRect[0] - shiftedRect[0];\n defaultShift[1] = screenProjectedRect[1] - shiftedRect[1];\n\n return shiftedRect;\n}\n\nfunction _updateCameraShift(camera, shiftRange) {\n const newShiftX = Math.max(Math.min(camera.projectionShift[0], shiftRange[2]), shiftRange[0]);\n const newShiftY = Math.max(Math.min(camera.projectionShift[1], shiftRange[3]), shiftRange[1]);\n camera.projectionShift[0] = newShiftX;\n camera.projectionShift[1] = newShiftY;\n camera.updateProjectMatrix();\n events.emit(\"camera_move\", camera);\n}\n\nfunction _emitRectangle(ndcRect, camera) {\n const leftTop = screenUtils.fromScreen(camera.viewport, camera.viewport, ndcRect[0], -ndcRect[1]);\n const rightBottom = screenUtils.fromScreen(camera.viewport, camera.viewport, ndcRect[2], -ndcRect[3]);\n const internalRectangle = [Math.ceil(leftTop.x), Math.ceil(camera.viewport[3] - leftTop.y), Math.floor(rightBottom.x - leftTop.x), Math.floor(leftTop.y - rightBottom.y)];\n\n const externalRectangle = [Math.floor(leftTop.x) / screenUtils.getPixelRatio(), Math.floor(rightBottom.y) / screenUtils.getPixelRatio(),\n Math.ceil(rightBottom.x - leftTop.x) / screenUtils.getPixelRatio(), Math.ceil(leftTop.y - rightBottom.y + PANEL_HEIGHT) / screenUtils.getPixelRatio()];\n\n events.emit(\"photoViewRectangleExternal\", externalRectangle);\n appState.setStateValue(\"photoViewRectangleInternal\", internalRectangle);\n}\n\nfunction _getOrientationRotation(orientation) {\n const defaultCorrection = quat.identity(quat.create());\n\n switch (orientation) {\n case photoOrientation.DEFAULT:\n case photoOrientation.MIRROR_HORIZONTAL:\n return defaultCorrection;\n case photoOrientation.MIRROR_VERTICAL:\n case photoOrientation.ROTATION180: {\n return quat.rotateZ(quat.create(), defaultCorrection, Math.PI);\n }\n case photoOrientation.ROTATION270_MIRROR_HORIZONTAL:\n case photoOrientation.ROTATION270: {\n return quat.rotateZ(quat.create(), defaultCorrection, Math.PI * 1.5);\n }\n case photoOrientation.ROTATION90_MIRROR_HORIZONTAL:\n case photoOrientation.ROTATION90: {\n return quat.rotateZ(quat.create(), defaultCorrection, Math.PI * 0.5);\n }\n }\n}\n\nfunction _getFovRange(maxFov) {\n return [maxFov - 0.75, maxFov];\n}\n","import {vec3} from \"_src/libs/gl-matrix\";\n\nexport default class Batcher {\n\n constructor() {\n\n this.objects = [];\n\n this.opaque = [];\n this.blend = [];\n\n this.needsSort = false;\n this.sortBlend = false;\n\n }\n\n addObject(object) {\n\n if (object.isDrawable) {\n\n if (this.objects.indexOf(object) == -1) {\n this.objects.push(object);\n }\n\n }\n\n for (let i = 0; i < object._children.length; ++i) {\n this.addObject(object._children[i]);\n }\n\n }\n\n removeObject(object) {\n\n if (object.isDrawable) {\n\n const ind = this.objects.indexOf(object);\n if (ind != -1) {\n this.objects.splice(ind, 1);\n }\n\n }\n\n for (let i = 0; i < object._children.length; ++i) {\n this.removeObject(object._children[i]);\n }\n\n }\n\n generatePasses() {\n\n for (let i = 0; i < this.objects.length; ++i) {\n\n const object = this.objects[i];\n const shader = object.shader;\n\n if (!object.isHidden) {\n shader.id || shader.generateUniqueID();\n\n if (shader.transparent) {\n this.blend.push(object);\n } else {\n this.opaque.push(object);\n }\n }\n\n }\n\n if (this.blend.length > 2) {\n this.blend.sort(compareShaderIDs);\n }\n if (this.opaque.length > 2) {\n this.opaque.sort(compareShaderIDs);\n }\n }\n\n sortBlendQueue(point) {\n this.blend.sort((objectA, objectB) => {\n return compareOriginsNearestFirst(point, objectA, objectB);\n });\n }\n\n sortObjects(point) {\n\n for (let object of this.objects) {\n\n if (object.isDrawable && object.chunks.length > 1) {\n object.chunks.sort((chunkA, chunkB) => {\n\n if (!chunkA.hasDrawElements() || !chunkB.hasDrawElements()) {\n return -1;\n }\n\n return compareBoundingsNearestFirst(point, object.getChunkBBox(chunkA), object.getChunkBBox(chunkB));\n\n });\n }\n\n }\n\n // NOTE: we sort objects in lists by shader id\n // if (this.objects.length > 1) {\n // this.objects.sort((objectA, objectB) => {\n // return compareObjects(point, objectA, objectB);\n // });\n // }\n\n this.needsSort = false;\n\n }\n\n getOpaqueQueue() {\n return this.opaque;\n }\n\n getBlendQueue() {\n return this.blend;\n }\n\n cleanup() {\n\n this.objects.length = 0;\n this.opaque.length = 0;\n this.blend.length = 0;\n\n }\n \n}\n\nfunction compareShaderIDs(lshader, rshader) {\n return lshader.id - rshader.id;\n}\n\n// function compareObjects(point, objectA, objectB) {\n\n// //NOTE: special case for frames\n// if (objectA.isDrawable && objectB.isDrawable) {\n\n// const chunksA = objectA.chunks;\n// const chunksB = objectB.chunks;\n\n// if (chunksA.length == 1 && chunksB.length == 1) {\n// const bboxA = objectA.getChunkBBox(chunksA[0]);\n// const bboxB = objectB.getChunkBBox(chunksB[0]);\n// return compareBoundingsNearestFirst(point, bboxA, bboxB);\n// }\n\n// }\n\n// return compareOriginsNearestFirst(point, objectA, objectB);\n\n// }\n\nconst compareBoundingsNearestFirst = (function() {\n\n const _vec3Tmp = vec3.create();\n const _vec3Tmp2 = vec3.create();\n\n return function(point, bboxA, bboxB) {\n\n const pointA = vec3.set(_vec3Tmp, 0.5 * (bboxA[3] + bboxA[0]),\n 0.5 * (bboxA[4] + bboxA[1]),\n 0.5 * (bboxA[5] + bboxA[2]));\n\n const pointB = vec3.set(_vec3Tmp2, 0.5 * (bboxB[3] + bboxB[0]),\n 0.5 * (bboxB[4] + bboxB[1]),\n 0.5 * (bboxB[5] + bboxB[2]));\n\n return vec3.squaredDistance(point, pointA) - vec3.squaredDistance(point, pointB);\n\n }\n\n})();\n\nconst compareOriginsNearestFirst = (function() {\n\n const _vec3Tmp = vec3.create();\n const _vec3Tmp2 = vec3.create();\n\n return function(point, objectA, objectB) {\n\n const pointA = vec3.set(_vec3Tmp, 0.0, 0.0, 0.0);\n vec3.transformMat4(pointA, pointA, objectA.modelMatrix);\n\n const pointB = vec3.set(_vec3Tmp2, 0.0, 0.0, 0.0);\n vec3.transformMat4(pointB, pointB, objectB.modelMatrix);\n\n return vec3.squaredDistance(point, pointA) - vec3.squaredDistance(point, pointB);\n\n }\n\n})();\n","/** @module */\nimport Object3D from \"_src/engine/object\";\nimport arrayTools from \"_src/engine/utility/arrays\";\nimport Batcher from \"_src/engine/batcher\";\nimport { vec3, mat4 } from \"_src/libs/gl-matrix\";\nimport GL from \"_src/engine/gl\";\nimport output from \"_src/engine/output\";\n\nconst _vec3Tmp = vec3.create();\n\nexport default class Scene extends Object3D {\n\n constructor() {\n\n super();\n\n this.batcher = new Batcher();\n\n this.camera = null;\n\n this.framebuffer = null;\n this.resolvedFramebuffer = null;\n this.clearColor = [0.0, 0.0, 0.0, 0.0];\n\n this.modelMatrix = mat4.create();\n\n this._enabled = true;\n\n this.lightPositions = new Float32Array();\n this.lightColors = new Float32Array();\n this._lightsNumber = 0;\n this.cameraTrans = vec3.create();\n\n this.texelSize = new Float32Array([0.0, 0.0]);\n\n this.needsReadPixels = false;\n this.readPixelsViewport = null;\n this.readPixelsResolve = null;\n\n this.clearedColor = true;\n this.clearedDepth = true;\n this.clearedStencil = true;\n\n this.isDepthPrepass = false;\n this.isPostBlending = false;\n this.isObjectIDPass = false;\n }\n\n setEnabled(enabled) {\n this._enabled = enabled;\n }\n\n getEnabled() {\n return this._enabled;\n }\n\n resize(width, height) {\n\n if (this.camera) {\n this.camera.setViewport(width, height);\n }\n\n if (this.framebuffer) {\n this.framebuffer.resize(width, height);\n this.framebuffer.reportMemoryUsage(this);\n }\n\n if (this.resolvedFramebuffer) {\n this.resolvedFramebuffer.resize(width, height);\n this.resolvedFramebuffer.reportMemoryUsage(this);\n }\n\n this.texelSize[0] = 1.0 / width;\n this.texelSize[1] = 1.0 / height;\n\n }\n\n getFramebuffer() {\n return this.framebuffer;\n }\n\n setFramebuffer(framebuffer) {\n if (this.framebuffer) {\n this.framebuffer.reportMemoryRelease(this);\n }\n this.framebuffer = framebuffer;\n if (this.framebuffer) {\n this.framebuffer.reportMemoryUsage(this);\n }\n }\n\n getResolvedBuffer() {\n return this.resolvedFramebuffer;\n }\n\n setResolvedBuffer(resolvedFramebuffer) {\n if (this.resolvedFramebuffer) {\n this.resolvedFramebuffer.reportMemoryRelease(this);\n }\n this.resolvedFramebuffer = resolvedFramebuffer;\n if (this.resolvedFramebuffer) {\n this.resolvedFramebuffer.reportMemoryUsage(this);\n }\n }\n\n appendCamera(camera) {\n\n this.camera = camera;\n\n const viewport = camera.viewport;\n\n this.texelSize[0] = 1.0 / viewport[2];\n this.texelSize[1] = 1.0 / viewport[3];\n\n }\n\n add(object) {\n\n if (this._children.includes(object)) {\n return;\n }\n\n object.setParent(this);\n\n this._children.push(object);\n\n //low performance. Think about \"by request\" resource counting model\n //this._reportObjectMemoryState(object, true);\n\n this.batcher.addObject(object);\n\n }\n\n remove(obj) {\n\n const ind = this._children.indexOf(obj);\n if (ind === -1) {\n return;\n }\n\n this._removeByInd(ind);\n\n //this._reportObjectMemoryState(obj, false);\n\n }\n\n _removeByInd(ind) {\n if (ind >= 0 && ind < this._children.length) {\n const obj = this._children.splice(ind, 1)[0];\n this.batcher.removeObject(obj);\n }\n }\n\n removeChildren() {\n for (const child of this._children) {\n this._reportObjectMemoryState(child, false);\n }\n this._children.length = 0;\n this.batcher.cleanup();\n }\n\n setClearColor(r, g, b, a) {\n this.clearColor[0] = r;\n this.clearColor[1] = g;\n this.clearColor[2] = b;\n this.clearColor[3] = a;\n }\n\n updateTransforms() {\n\n if (this.camera) {\n this.camera.updateMatrix();\n }\n\n const children = this._children;\n\n for (let i = 0; i < children.length; ++i) {\n children[i].updateMatrix();\n }\n\n }\n\n getBufferPixels(viewport) {\n\n this.needsReadPixels = true;\n\n return new Promise((resolve, reject) => {\n this.readPixelsViewport = viewport ? viewport :\n this.camera ? this.camera.viewport : null;\n if (!this.readPixelsViewport) {\n reject(\"Invalid viewport.\");\n }\n this.readPixelsResolve = resolve;\n }).catch((error) => {\n output.error(output.DEVELOPERS_ERROR, \"Can't read pixels from gpu. \" + error);\n });\n\n }\n\n readPixels() {\n\n const viewport = this.readPixelsViewport;\n const leftBottomX = viewport[0];\n const leftBottomY = viewport[1];\n const width = viewport[2];\n const height = viewport[3];\n const size = 4 * width * height;\n\n const arrayBuffer = arrayTools.getArrayBuffer(size);\n const pixels = new Uint8Array(arrayBuffer);\n\n if (GL.checkWebGL2()) {\n const promiseResolve = this.readPixelsResolve;\n GL.readPixelsAsync(this.framebuffer, leftBottomX, leftBottomY, width, height, pixels).then(() => {\n promiseResolve(pixels);\n });\n } else {\n GL.readPixelsSync(this.framebuffer, leftBottomX, leftBottomY, width, height, pixels);\n this.readPixelsResolve(pixels);\n }\n\n this.needsReadPixels = false;\n this.readPixelsViewport = null;\n this.readPixelsResolve = null;\n\n }\n\n setLightPosition(lightID, position) {\n const offset = 3 * lightID;\n this.lightPositions[offset] = position[0];\n this.lightPositions[offset+1] = position[1];\n this.lightPositions[offset+2] = position[2];\n }\n\n setLightColor(lightID, r, g, b) {\n const offset = 3 * lightID;\n this.lightColors[offset] = r;\n this.lightColors[offset+1] = g;\n this.lightColors[offset+2] = b;\n }\n\n getLightsCount() {\n return this._lightsNumber;\n }\n\n updateLights(lights) {\n\n const camera = this.camera;\n const numLights = lights.length;\n\n if (camera === null) {\n return;\n }\n\n const camNear = vec3.set(_vec3Tmp, 0, 0, Math.min(0.0, camera.near));\n vec3.transformQuat(camNear, camNear, camera.quat);\n const lightTrans = vec3.sub(_vec3Tmp, camera.trans, camNear);\n\n vec3.copy(this.cameraTrans, lightTrans);\n\n this._setLightsCount(numLights);\n\n for (let i = 0; i < lights.length; ++i) {\n const light = lights[i];\n const color = light.color;\n\n this.setLightColor(i, color.r, color.g, color.b);\n this.setLightPosition(i, lightTrans);\n }\n\n }\n\n _reportObjectMemoryState(object, isAllocation) {\n if (object.isDrawable) {\n if (isAllocation) {\n object.reportMemoryUsage(this);\n } else {\n object.reportMemoryRelease();\n }\n }\n\n for (const child of object.getAllNestedChildren()) {\n if (child.isDrawable) {\n if (isAllocation) {\n child.reportMemoryUsage(this);\n } else {\n child.reportMemoryRelease();\n }\n }\n }\n }\n\n _setLightsCount(numLights) {\n\n if (this._lightsNumber === numLights) {\n return;\n }\n\n const oldLightDirections = this.lightPositions;\n const oldLightColors = this.lightColors;\n\n if (this._lightsNumber < numLights) {\n this.lightPositions = new Float32Array(3 * numLights);\n this.lightColors = new Float32Array(3 * numLights);\n this.lightPositions.set(oldLightDirections);\n this.lightColors.set(oldLightColors);\n } else {\n this.lightPositions = oldLightDirections.slice(0, 3 * numLights);\n this.lightColors = oldLightDirections.slice(0, 3 * numLights);\n }\n\n this._lightsNumber = numLights;\n\n }\n\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","export default function canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */\nimport { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n//# sourceMappingURL=isNumeric.js.map\n","export default function _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++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n // nsMode: 'fallback' // loop through all namespaces given to hook, HOC, render prop for key lookup\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n // hashTransKey: key => key // calculate a key for Trans component based on defaultValue\n useSuspense: true\n};\nvar i18nInstance;\nexport var I18nContext = React.createContext();\nexport function setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread({}, defaultOptions, {}, options);\n}\nexport function getDefaults() {\n return defaultOptions;\n}\nexport var ReportNamespaces = /*#__PURE__*/function () {\n function ReportNamespaces() {\n _classCallCheck(this, ReportNamespaces);\n\n this.usedNamespaces = {};\n }\n\n _createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n\n return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}\nexport var initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\nexport function composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread({}, componentsInitialProps, {}, i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n }; // Avoid async for now - so we do not need to pull in regenerator\n // return async ctx => {\n // const componentsInitialProps = ForComponent.getInitialProps\n // ? await ForComponent.getInitialProps(ctx)\n // : {};\n // const i18nInitialProps = getInitialProps();\n // return {\n // ...componentsInitialProps,\n // ...i18nInitialProps,\n // };\n // };\n}\nexport function getInitialProps() {\n var i18n = getI18n();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","export function warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n} // not needed right now\n//\n// export function deprecated(...args) {\n// if (process && process.env && (!process.env.NODE_ENV || process.env.NODE_ENV === 'development')) {\n// if (typeof args[0] === 'string') args[0] = `deprecation warning -> ${args[0]}`;\n// warnOnce(...args);\n// }\n// }\n\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n // delay ready if not yet initialized i18n instance\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n // due to emitter removing issue in i18next we need to delay remove\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\nexport function hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1]; // we're in cimode so this shall pass\n\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n }; // bound to trigger on event languageChanging\n // so set ready to false while we are changing the language\n // and namespace pending (depends on having a backend)\n\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false; // loaded -> SUCCESS\n\n if (i18n.hasResourceBundle(lng, ns)) return true; // were not loading at all -> SEMI SUCCESS\n\n if (!i18n.services.backendConnector.backend) return true; // failed loading ns - but at least fallback is not pending -> SEMI SUCCESS\n\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ObjectUnsubscribedErrorImpl = /*@__PURE__*/ (function () {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n//# sourceMappingURL=ObjectUnsubscribedError.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from './Subscription';\nvar SubjectSubscription = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscription, _super);\n function SubjectSubscription(subject, subscriber) {\n var _this = _super.call(this) || this;\n _this.subject = subject;\n _this.subscriber = subscriber;\n _this.closed = false;\n return _this;\n }\n SubjectSubscription.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.closed = true;\n var subject = this.subject;\n var observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n var subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n };\n return SubjectSubscription;\n}(Subscription));\nexport { SubjectSubscription };\n//# sourceMappingURL=SubjectSubscription.js.map\n","/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nvar SubjectSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscriber, _super);\n function SubjectSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n return _this;\n }\n return SubjectSubscriber;\n}(Subscriber));\nexport { SubjectSubscriber };\nvar Subject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.observers = [];\n _this.closed = false;\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype[rxSubscriberSymbol] = function () {\n return new SubjectSubscriber(this);\n };\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype.next = function (value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n };\n Subject.prototype.error = function (err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n };\n Subject.prototype.complete = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n };\n Subject.prototype._trySubscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return _super.prototype._trySubscribe.call(this, subscriber);\n }\n };\n Subject.prototype._subscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var destination = this.destination;\n if (destination && destination.next) {\n destination.next(value);\n }\n };\n AnonymousSubject.prototype.error = function (err) {\n var destination = this.destination;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n };\n AnonymousSubject.prototype.complete = function () {\n var destination = this.destination;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var source = this.source;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map\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","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexports.config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RestWalker = void 0;\nvar drop_1 = __importDefault(require(\"lodash/drop\"));\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar gast_1 = require(\"@chevrotain/gast\");\n/**\n * A Grammar Walker that computes the \"remaining\" grammar \"after\" a productions in the grammar.\n */\nvar RestWalker = /** @class */ (function () {\n function RestWalker() {\n }\n RestWalker.prototype.walk = function (prod, prevRest) {\n var _this = this;\n if (prevRest === void 0) { prevRest = []; }\n (0, forEach_1.default)(prod.definition, function (subProd, index) {\n var currRest = (0, drop_1.default)(prod.definition, index + 1);\n /* istanbul ignore else */\n if (subProd instanceof gast_1.NonTerminal) {\n _this.walkProdRef(subProd, currRest, prevRest);\n }\n else if (subProd instanceof gast_1.Terminal) {\n _this.walkTerminal(subProd, currRest, prevRest);\n }\n else if (subProd instanceof gast_1.Alternative) {\n _this.walkFlat(subProd, currRest, prevRest);\n }\n else if (subProd instanceof gast_1.Option) {\n _this.walkOption(subProd, currRest, prevRest);\n }\n else if (subProd instanceof gast_1.RepetitionMandatory) {\n _this.walkAtLeastOne(subProd, currRest, prevRest);\n }\n else if (subProd instanceof gast_1.RepetitionMandatoryWithSeparator) {\n _this.walkAtLeastOneSep(subProd, currRest, prevRest);\n }\n else if (subProd instanceof gast_1.RepetitionWithSeparator) {\n _this.walkManySep(subProd, currRest, prevRest);\n }\n else if (subProd instanceof gast_1.Repetition) {\n _this.walkMany(subProd, currRest, prevRest);\n }\n else if (subProd instanceof gast_1.Alternation) {\n _this.walkOr(subProd, currRest, prevRest);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n });\n };\n RestWalker.prototype.walkTerminal = function (terminal, currRest, prevRest) { };\n RestWalker.prototype.walkProdRef = function (refProd, currRest, prevRest) { };\n RestWalker.prototype.walkFlat = function (flatProd, currRest, prevRest) {\n // ABCDEF => after the D the rest is EF\n var fullOrRest = currRest.concat(prevRest);\n this.walk(flatProd, fullOrRest);\n };\n RestWalker.prototype.walkOption = function (optionProd, currRest, prevRest) {\n // ABC(DE)?F => after the (DE)? the rest is F\n var fullOrRest = currRest.concat(prevRest);\n this.walk(optionProd, fullOrRest);\n };\n RestWalker.prototype.walkAtLeastOne = function (atLeastOneProd, currRest, prevRest) {\n // ABC(DE)+F => after the (DE)+ the rest is (DE)?F\n var fullAtLeastOneRest = [\n new gast_1.Option({ definition: atLeastOneProd.definition })\n ].concat(currRest, prevRest);\n this.walk(atLeastOneProd, fullAtLeastOneRest);\n };\n RestWalker.prototype.walkAtLeastOneSep = function (atLeastOneSepProd, currRest, prevRest) {\n // ABC DE(,DE)* F => after the (,DE)+ the rest is (,DE)?F\n var fullAtLeastOneSepRest = restForRepetitionWithSeparator(atLeastOneSepProd, currRest, prevRest);\n this.walk(atLeastOneSepProd, fullAtLeastOneSepRest);\n };\n RestWalker.prototype.walkMany = function (manyProd, currRest, prevRest) {\n // ABC(DE)*F => after the (DE)* the rest is (DE)?F\n var fullManyRest = [\n new gast_1.Option({ definition: manyProd.definition })\n ].concat(currRest, prevRest);\n this.walk(manyProd, fullManyRest);\n };\n RestWalker.prototype.walkManySep = function (manySepProd, currRest, prevRest) {\n // ABC (DE(,DE)*)? F => after the (,DE)* the rest is (,DE)?F\n var fullManySepRest = restForRepetitionWithSeparator(manySepProd, currRest, prevRest);\n this.walk(manySepProd, fullManySepRest);\n };\n RestWalker.prototype.walkOr = function (orProd, currRest, prevRest) {\n var _this = this;\n // ABC(D|E|F)G => when finding the (D|E|F) the rest is G\n var fullOrRest = currRest.concat(prevRest);\n // walk all different alternatives\n (0, forEach_1.default)(orProd.definition, function (alt) {\n // wrapping each alternative in a single definition wrapper\n // to avoid errors in computing the rest of that alternative in the invocation to computeInProdFollows\n // (otherwise for OR([alt1,alt2]) alt2 will be considered in 'rest' of alt1\n var prodWrapper = new gast_1.Alternative({ definition: [alt] });\n _this.walk(prodWrapper, fullOrRest);\n });\n };\n return RestWalker;\n}());\nexports.RestWalker = RestWalker;\nfunction restForRepetitionWithSeparator(repSepProd, currRest, prevRest) {\n var repSepRest = [\n new gast_1.Option({\n definition: [\n new gast_1.Terminal({ terminalType: repSepProd.separator })\n ].concat(repSepProd.definition)\n })\n ];\n var fullRepSepRest = repSepRest.concat(currRest, prevRest);\n return fullRepSepRest;\n}\n//# sourceMappingURL=rest.js.map","var baseSlice = require('./_baseSlice'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nmodule.exports = drop;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serializeProduction = exports.serializeGrammar = exports.Terminal = exports.Alternation = exports.RepetitionWithSeparator = exports.Repetition = exports.RepetitionMandatoryWithSeparator = exports.RepetitionMandatory = exports.Option = exports.Alternative = exports.Rule = exports.NonTerminal = exports.AbstractProduction = void 0;\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar isString_1 = __importDefault(require(\"lodash/isString\"));\nvar isRegExp_1 = __importDefault(require(\"lodash/isRegExp\"));\nvar pickBy_1 = __importDefault(require(\"lodash/pickBy\"));\nvar assign_1 = __importDefault(require(\"lodash/assign\"));\n// TODO: duplicated code to avoid extracting another sub-package -- how to avoid?\nfunction tokenLabel(tokType) {\n if (hasTokenLabel(tokType)) {\n return tokType.LABEL;\n }\n else {\n return tokType.name;\n }\n}\n// TODO: duplicated code to avoid extracting another sub-package -- how to avoid?\nfunction hasTokenLabel(obj) {\n return (0, isString_1.default)(obj.LABEL) && obj.LABEL !== \"\";\n}\nvar AbstractProduction = /** @class */ (function () {\n function AbstractProduction(_definition) {\n this._definition = _definition;\n }\n Object.defineProperty(AbstractProduction.prototype, \"definition\", {\n get: function () {\n return this._definition;\n },\n set: function (value) {\n this._definition = value;\n },\n enumerable: false,\n configurable: true\n });\n AbstractProduction.prototype.accept = function (visitor) {\n visitor.visit(this);\n (0, forEach_1.default)(this.definition, function (prod) {\n prod.accept(visitor);\n });\n };\n return AbstractProduction;\n}());\nexports.AbstractProduction = AbstractProduction;\nvar NonTerminal = /** @class */ (function (_super) {\n __extends(NonTerminal, _super);\n function NonTerminal(options) {\n var _this = _super.call(this, []) || this;\n _this.idx = 1;\n (0, assign_1.default)(_this, (0, pickBy_1.default)(options, function (v) { return v !== undefined; }));\n return _this;\n }\n Object.defineProperty(NonTerminal.prototype, \"definition\", {\n get: function () {\n if (this.referencedRule !== undefined) {\n return this.referencedRule.definition;\n }\n return [];\n },\n set: function (definition) {\n // immutable\n },\n enumerable: false,\n configurable: true\n });\n NonTerminal.prototype.accept = function (visitor) {\n visitor.visit(this);\n // don't visit children of a reference, we will get cyclic infinite loops if we do so\n };\n return NonTerminal;\n}(AbstractProduction));\nexports.NonTerminal = NonTerminal;\nvar Rule = /** @class */ (function (_super) {\n __extends(Rule, _super);\n function Rule(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.orgText = \"\";\n (0, assign_1.default)(_this, (0, pickBy_1.default)(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Rule;\n}(AbstractProduction));\nexports.Rule = Rule;\nvar Alternative = /** @class */ (function (_super) {\n __extends(Alternative, _super);\n function Alternative(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.ignoreAmbiguities = false;\n (0, assign_1.default)(_this, (0, pickBy_1.default)(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Alternative;\n}(AbstractProduction));\nexports.Alternative = Alternative;\nvar Option = /** @class */ (function (_super) {\n __extends(Option, _super);\n function Option(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n (0, assign_1.default)(_this, (0, pickBy_1.default)(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Option;\n}(AbstractProduction));\nexports.Option = Option;\nvar RepetitionMandatory = /** @class */ (function (_super) {\n __extends(RepetitionMandatory, _super);\n function RepetitionMandatory(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n (0, assign_1.default)(_this, (0, pickBy_1.default)(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return RepetitionMandatory;\n}(AbstractProduction));\nexports.RepetitionMandatory = RepetitionMandatory;\nvar RepetitionMandatoryWithSeparator = /** @class */ (function (_super) {\n __extends(RepetitionMandatoryWithSeparator, _super);\n function RepetitionMandatoryWithSeparator(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n (0, assign_1.default)(_this, (0, pickBy_1.default)(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return RepetitionMandatoryWithSeparator;\n}(AbstractProduction));\nexports.RepetitionMandatoryWithSeparator = RepetitionMandatoryWithSeparator;\nvar Repetition = /** @class */ (function (_super) {\n __extends(Repetition, _super);\n function Repetition(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n (0, assign_1.default)(_this, (0, pickBy_1.default)(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Repetition;\n}(AbstractProduction));\nexports.Repetition = Repetition;\nvar RepetitionWithSeparator = /** @class */ (function (_super) {\n __extends(RepetitionWithSeparator, _super);\n function RepetitionWithSeparator(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n (0, assign_1.default)(_this, (0, pickBy_1.default)(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return RepetitionWithSeparator;\n}(AbstractProduction));\nexports.RepetitionWithSeparator = RepetitionWithSeparator;\nvar Alternation = /** @class */ (function (_super) {\n __extends(Alternation, _super);\n function Alternation(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n _this.ignoreAmbiguities = false;\n _this.hasPredicates = false;\n (0, assign_1.default)(_this, (0, pickBy_1.default)(options, function (v) { return v !== undefined; }));\n return _this;\n }\n Object.defineProperty(Alternation.prototype, \"definition\", {\n get: function () {\n return this._definition;\n },\n set: function (value) {\n this._definition = value;\n },\n enumerable: false,\n configurable: true\n });\n return Alternation;\n}(AbstractProduction));\nexports.Alternation = Alternation;\nvar Terminal = /** @class */ (function () {\n function Terminal(options) {\n this.idx = 1;\n (0, assign_1.default)(this, (0, pickBy_1.default)(options, function (v) { return v !== undefined; }));\n }\n Terminal.prototype.accept = function (visitor) {\n visitor.visit(this);\n };\n return Terminal;\n}());\nexports.Terminal = Terminal;\nfunction serializeGrammar(topRules) {\n return (0, map_1.default)(topRules, serializeProduction);\n}\nexports.serializeGrammar = serializeGrammar;\nfunction serializeProduction(node) {\n function convertDefinition(definition) {\n return (0, map_1.default)(definition, serializeProduction);\n }\n /* istanbul ignore else */\n if (node instanceof NonTerminal) {\n var serializedNonTerminal = {\n type: \"NonTerminal\",\n name: node.nonTerminalName,\n idx: node.idx\n };\n if ((0, isString_1.default)(node.label)) {\n serializedNonTerminal.label = node.label;\n }\n return serializedNonTerminal;\n }\n else if (node instanceof Alternative) {\n return {\n type: \"Alternative\",\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof Option) {\n return {\n type: \"Option\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof RepetitionMandatory) {\n return {\n type: \"RepetitionMandatory\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof RepetitionMandatoryWithSeparator) {\n return {\n type: \"RepetitionMandatoryWithSeparator\",\n idx: node.idx,\n separator: (serializeProduction(new Terminal({ terminalType: node.separator }))),\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof RepetitionWithSeparator) {\n return {\n type: \"RepetitionWithSeparator\",\n idx: node.idx,\n separator: (serializeProduction(new Terminal({ terminalType: node.separator }))),\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof Repetition) {\n return {\n type: \"Repetition\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof Alternation) {\n return {\n type: \"Alternation\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof Terminal) {\n var serializedTerminal = {\n type: \"Terminal\",\n name: node.terminalType.name,\n label: tokenLabel(node.terminalType),\n idx: node.idx\n };\n if ((0, isString_1.default)(node.label)) {\n serializedTerminal.terminalLabel = node.label;\n }\n var pattern = node.terminalType.PATTERN;\n if (node.terminalType.PATTERN) {\n serializedTerminal.pattern = (0, isRegExp_1.default)(pattern)\n ? pattern.source\n : pattern;\n }\n return serializedTerminal;\n }\n else if (node instanceof Rule) {\n return {\n type: \"Rule\",\n name: node.name,\n orgText: node.orgText,\n definition: convertDefinition(node.definition)\n };\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexports.serializeProduction = serializeProduction;\n//# sourceMappingURL=model.js.map","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n",";(function(root, factory) {\n // istanbul ignore next\n if (typeof define === \"function\" && define.amd) {\n // istanbul ignore next\n define([], factory)\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory()\n } else {\n // istanbul ignore next\n root.regexpToAst = factory()\n }\n})(\n typeof self !== \"undefined\"\n ? // istanbul ignore next\n self\n : this,\n function() {\n // references\n // https://hackernoon.com/the-madness-of-parsing-real-world-javascript-regexps-d9ee336df983\n // https://www.ecma-international.org/ecma-262/8.0/index.html#prod-Pattern\n function RegExpParser() {}\n\n RegExpParser.prototype.saveState = function() {\n return {\n idx: this.idx,\n input: this.input,\n groupIdx: this.groupIdx\n }\n }\n\n RegExpParser.prototype.restoreState = function(newState) {\n this.idx = newState.idx\n this.input = newState.input\n this.groupIdx = newState.groupIdx\n }\n\n RegExpParser.prototype.pattern = function(input) {\n // parser state\n this.idx = 0\n this.input = input\n this.groupIdx = 0\n\n this.consumeChar(\"/\")\n var value = this.disjunction()\n this.consumeChar(\"/\")\n\n var flags = {\n type: \"Flags\",\n loc: { begin: this.idx, end: input.length },\n global: false,\n ignoreCase: false,\n multiLine: false,\n unicode: false,\n sticky: false\n }\n\n while (this.isRegExpFlag()) {\n switch (this.popChar()) {\n case \"g\":\n addFlag(flags, \"global\")\n break\n case \"i\":\n addFlag(flags, \"ignoreCase\")\n break\n case \"m\":\n addFlag(flags, \"multiLine\")\n break\n case \"u\":\n addFlag(flags, \"unicode\")\n break\n case \"y\":\n addFlag(flags, \"sticky\")\n break\n }\n }\n\n if (this.idx !== this.input.length) {\n throw Error(\n \"Redundant input: \" + this.input.substring(this.idx)\n )\n }\n return {\n type: \"Pattern\",\n flags: flags,\n value: value,\n loc: this.loc(0)\n }\n }\n\n RegExpParser.prototype.disjunction = function() {\n var alts = []\n var begin = this.idx\n\n alts.push(this.alternative())\n\n while (this.peekChar() === \"|\") {\n this.consumeChar(\"|\")\n alts.push(this.alternative())\n }\n\n return { type: \"Disjunction\", value: alts, loc: this.loc(begin) }\n }\n\n RegExpParser.prototype.alternative = function() {\n var terms = []\n var begin = this.idx\n\n while (this.isTerm()) {\n terms.push(this.term())\n }\n\n return { type: \"Alternative\", value: terms, loc: this.loc(begin) }\n }\n\n RegExpParser.prototype.term = function() {\n if (this.isAssertion()) {\n return this.assertion()\n } else {\n return this.atom()\n }\n }\n\n RegExpParser.prototype.assertion = function() {\n var begin = this.idx\n switch (this.popChar()) {\n case \"^\":\n return {\n type: \"StartAnchor\",\n loc: this.loc(begin)\n }\n case \"$\":\n return { type: \"EndAnchor\", loc: this.loc(begin) }\n // '\\b' or '\\B'\n case \"\\\\\":\n switch (this.popChar()) {\n case \"b\":\n return {\n type: \"WordBoundary\",\n loc: this.loc(begin)\n }\n case \"B\":\n return {\n type: \"NonWordBoundary\",\n loc: this.loc(begin)\n }\n }\n // istanbul ignore next\n throw Error(\"Invalid Assertion Escape\")\n // '(?=' or '(?!'\n case \"(\":\n this.consumeChar(\"?\")\n\n var type\n switch (this.popChar()) {\n case \"=\":\n type = \"Lookahead\"\n break\n case \"!\":\n type = \"NegativeLookahead\"\n break\n }\n ASSERT_EXISTS(type)\n\n var disjunction = this.disjunction()\n\n this.consumeChar(\")\")\n\n return {\n type: type,\n value: disjunction,\n loc: this.loc(begin)\n }\n }\n // istanbul ignore next\n ASSERT_NEVER_REACH_HERE()\n }\n\n RegExpParser.prototype.quantifier = function(isBacktracking) {\n var range\n var begin = this.idx\n switch (this.popChar()) {\n case \"*\":\n range = {\n atLeast: 0,\n atMost: Infinity\n }\n break\n case \"+\":\n range = {\n atLeast: 1,\n atMost: Infinity\n }\n break\n case \"?\":\n range = {\n atLeast: 0,\n atMost: 1\n }\n break\n case \"{\":\n var atLeast = this.integerIncludingZero()\n switch (this.popChar()) {\n case \"}\":\n range = {\n atLeast: atLeast,\n atMost: atLeast\n }\n break\n case \",\":\n var atMost\n if (this.isDigit()) {\n atMost = this.integerIncludingZero()\n range = {\n atLeast: atLeast,\n atMost: atMost\n }\n } else {\n range = {\n atLeast: atLeast,\n atMost: Infinity\n }\n }\n this.consumeChar(\"}\")\n break\n }\n // throwing exceptions from \"ASSERT_EXISTS\" during backtracking\n // causes severe performance degradations\n if (isBacktracking === true && range === undefined) {\n return undefined\n }\n ASSERT_EXISTS(range)\n break\n }\n\n // throwing exceptions from \"ASSERT_EXISTS\" during backtracking\n // causes severe performance degradations\n if (isBacktracking === true && range === undefined) {\n return undefined\n }\n\n ASSERT_EXISTS(range)\n\n if (this.peekChar(0) === \"?\") {\n this.consumeChar(\"?\")\n range.greedy = false\n } else {\n range.greedy = true\n }\n\n range.type = \"Quantifier\"\n range.loc = this.loc(begin)\n return range\n }\n\n RegExpParser.prototype.atom = function() {\n var atom\n var begin = this.idx\n switch (this.peekChar()) {\n case \".\":\n atom = this.dotAll()\n break\n case \"\\\\\":\n atom = this.atomEscape()\n break\n case \"[\":\n atom = this.characterClass()\n break\n case \"(\":\n atom = this.group()\n break\n }\n\n if (atom === undefined && this.isPatternCharacter()) {\n atom = this.patternCharacter()\n }\n\n ASSERT_EXISTS(atom)\n\n atom.loc = this.loc(begin)\n\n if (this.isQuantifier()) {\n atom.quantifier = this.quantifier()\n }\n\n return atom\n }\n\n RegExpParser.prototype.dotAll = function() {\n this.consumeChar(\".\")\n return {\n type: \"Set\",\n complement: true,\n value: [cc(\"\\n\"), cc(\"\\r\"), cc(\"\\u2028\"), cc(\"\\u2029\")]\n }\n }\n\n RegExpParser.prototype.atomEscape = function() {\n this.consumeChar(\"\\\\\")\n\n switch (this.peekChar()) {\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n return this.decimalEscapeAtom()\n case \"d\":\n case \"D\":\n case \"s\":\n case \"S\":\n case \"w\":\n case \"W\":\n return this.characterClassEscape()\n case \"f\":\n case \"n\":\n case \"r\":\n case \"t\":\n case \"v\":\n return this.controlEscapeAtom()\n case \"c\":\n return this.controlLetterEscapeAtom()\n case \"0\":\n return this.nulCharacterAtom()\n case \"x\":\n return this.hexEscapeSequenceAtom()\n case \"u\":\n return this.regExpUnicodeEscapeSequenceAtom()\n default:\n return this.identityEscapeAtom()\n }\n }\n\n RegExpParser.prototype.decimalEscapeAtom = function() {\n var value = this.positiveInteger()\n\n return { type: \"GroupBackReference\", value: value }\n }\n\n RegExpParser.prototype.characterClassEscape = function() {\n var set\n var complement = false\n switch (this.popChar()) {\n case \"d\":\n set = digitsCharCodes\n break\n case \"D\":\n set = digitsCharCodes\n complement = true\n break\n case \"s\":\n set = whitespaceCodes\n break\n case \"S\":\n set = whitespaceCodes\n complement = true\n break\n case \"w\":\n set = wordCharCodes\n break\n case \"W\":\n set = wordCharCodes\n complement = true\n break\n }\n\n ASSERT_EXISTS(set)\n\n return { type: \"Set\", value: set, complement: complement }\n }\n\n RegExpParser.prototype.controlEscapeAtom = function() {\n var escapeCode\n switch (this.popChar()) {\n case \"f\":\n escapeCode = cc(\"\\f\")\n break\n case \"n\":\n escapeCode = cc(\"\\n\")\n break\n case \"r\":\n escapeCode = cc(\"\\r\")\n break\n case \"t\":\n escapeCode = cc(\"\\t\")\n break\n case \"v\":\n escapeCode = cc(\"\\v\")\n break\n }\n ASSERT_EXISTS(escapeCode)\n\n return { type: \"Character\", value: escapeCode }\n }\n\n RegExpParser.prototype.controlLetterEscapeAtom = function() {\n this.consumeChar(\"c\")\n var letter = this.popChar()\n if (/[a-zA-Z]/.test(letter) === false) {\n throw Error(\"Invalid \")\n }\n\n var letterCode = letter.toUpperCase().charCodeAt(0) - 64\n return { type: \"Character\", value: letterCode }\n }\n\n RegExpParser.prototype.nulCharacterAtom = function() {\n // TODO implement '[lookahead ∉ DecimalDigit]'\n // TODO: for the deprecated octal escape sequence\n this.consumeChar(\"0\")\n return { type: \"Character\", value: cc(\"\\0\") }\n }\n\n RegExpParser.prototype.hexEscapeSequenceAtom = function() {\n this.consumeChar(\"x\")\n return this.parseHexDigits(2)\n }\n\n RegExpParser.prototype.regExpUnicodeEscapeSequenceAtom = function() {\n this.consumeChar(\"u\")\n return this.parseHexDigits(4)\n }\n\n RegExpParser.prototype.identityEscapeAtom = function() {\n // TODO: implement \"SourceCharacter but not UnicodeIDContinue\"\n // // http://unicode.org/reports/tr31/#Specific_Character_Adjustments\n var escapedChar = this.popChar()\n return { type: \"Character\", value: cc(escapedChar) }\n }\n\n RegExpParser.prototype.classPatternCharacterAtom = function() {\n switch (this.peekChar()) {\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n // istanbul ignore next\n case \"\\\\\":\n // istanbul ignore next\n case \"]\":\n throw Error(\"TBD\")\n default:\n var nextChar = this.popChar()\n return { type: \"Character\", value: cc(nextChar) }\n }\n }\n\n RegExpParser.prototype.characterClass = function() {\n var set = []\n var complement = false\n this.consumeChar(\"[\")\n if (this.peekChar(0) === \"^\") {\n this.consumeChar(\"^\")\n complement = true\n }\n\n while (this.isClassAtom()) {\n var from = this.classAtom()\n var isFromSingleChar = from.type === \"Character\"\n if (isFromSingleChar && this.isRangeDash()) {\n this.consumeChar(\"-\")\n var to = this.classAtom()\n var isToSingleChar = to.type === \"Character\"\n\n // a range can only be used when both sides are single characters\n if (isToSingleChar) {\n if (to.value < from.value) {\n throw Error(\"Range out of order in character class\")\n }\n set.push({ from: from.value, to: to.value })\n } else {\n // literal dash\n insertToSet(from.value, set)\n set.push(cc(\"-\"))\n insertToSet(to.value, set)\n }\n } else {\n insertToSet(from.value, set)\n }\n }\n\n this.consumeChar(\"]\")\n\n return { type: \"Set\", complement: complement, value: set }\n }\n\n RegExpParser.prototype.classAtom = function() {\n switch (this.peekChar()) {\n // istanbul ignore next\n case \"]\":\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n throw Error(\"TBD\")\n case \"\\\\\":\n return this.classEscape()\n default:\n return this.classPatternCharacterAtom()\n }\n }\n\n RegExpParser.prototype.classEscape = function() {\n this.consumeChar(\"\\\\\")\n switch (this.peekChar()) {\n // Matches a backspace.\n // (Not to be confused with \\b word boundary outside characterClass)\n case \"b\":\n this.consumeChar(\"b\")\n return { type: \"Character\", value: cc(\"\\u0008\") }\n case \"d\":\n case \"D\":\n case \"s\":\n case \"S\":\n case \"w\":\n case \"W\":\n return this.characterClassEscape()\n case \"f\":\n case \"n\":\n case \"r\":\n case \"t\":\n case \"v\":\n return this.controlEscapeAtom()\n case \"c\":\n return this.controlLetterEscapeAtom()\n case \"0\":\n return this.nulCharacterAtom()\n case \"x\":\n return this.hexEscapeSequenceAtom()\n case \"u\":\n return this.regExpUnicodeEscapeSequenceAtom()\n default:\n return this.identityEscapeAtom()\n }\n }\n\n RegExpParser.prototype.group = function() {\n var capturing = true\n this.consumeChar(\"(\")\n switch (this.peekChar(0)) {\n case \"?\":\n this.consumeChar(\"?\")\n this.consumeChar(\":\")\n capturing = false\n break\n default:\n this.groupIdx++\n break\n }\n var value = this.disjunction()\n this.consumeChar(\")\")\n\n var groupAst = {\n type: \"Group\",\n capturing: capturing,\n value: value\n }\n\n if (capturing) {\n groupAst.idx = this.groupIdx\n }\n\n return groupAst\n }\n\n RegExpParser.prototype.positiveInteger = function() {\n var number = this.popChar()\n\n // istanbul ignore next - can't ever get here due to previous lookahead checks\n // still implementing this error checking in case this ever changes.\n if (decimalPatternNoZero.test(number) === false) {\n throw Error(\"Expecting a positive integer\")\n }\n\n while (decimalPattern.test(this.peekChar(0))) {\n number += this.popChar()\n }\n\n return parseInt(number, 10)\n }\n\n RegExpParser.prototype.integerIncludingZero = function() {\n var number = this.popChar()\n if (decimalPattern.test(number) === false) {\n throw Error(\"Expecting an integer\")\n }\n\n while (decimalPattern.test(this.peekChar(0))) {\n number += this.popChar()\n }\n\n return parseInt(number, 10)\n }\n\n RegExpParser.prototype.patternCharacter = function() {\n var nextChar = this.popChar()\n switch (nextChar) {\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n // istanbul ignore next\n case \"^\":\n // istanbul ignore next\n case \"$\":\n // istanbul ignore next\n case \"\\\\\":\n // istanbul ignore next\n case \".\":\n // istanbul ignore next\n case \"*\":\n // istanbul ignore next\n case \"+\":\n // istanbul ignore next\n case \"?\":\n // istanbul ignore next\n case \"(\":\n // istanbul ignore next\n case \")\":\n // istanbul ignore next\n case \"[\":\n // istanbul ignore next\n case \"|\":\n // istanbul ignore next\n throw Error(\"TBD\")\n default:\n return { type: \"Character\", value: cc(nextChar) }\n }\n }\n RegExpParser.prototype.isRegExpFlag = function() {\n switch (this.peekChar(0)) {\n case \"g\":\n case \"i\":\n case \"m\":\n case \"u\":\n case \"y\":\n return true\n default:\n return false\n }\n }\n\n RegExpParser.prototype.isRangeDash = function() {\n return this.peekChar() === \"-\" && this.isClassAtom(1)\n }\n\n RegExpParser.prototype.isDigit = function() {\n return decimalPattern.test(this.peekChar(0))\n }\n\n RegExpParser.prototype.isClassAtom = function(howMuch) {\n if (howMuch === undefined) {\n howMuch = 0\n }\n\n switch (this.peekChar(howMuch)) {\n case \"]\":\n case \"\\n\":\n case \"\\r\":\n case \"\\u2028\":\n case \"\\u2029\":\n return false\n default:\n return true\n }\n }\n\n RegExpParser.prototype.isTerm = function() {\n return this.isAtom() || this.isAssertion()\n }\n\n RegExpParser.prototype.isAtom = function() {\n if (this.isPatternCharacter()) {\n return true\n }\n\n switch (this.peekChar(0)) {\n case \".\":\n case \"\\\\\": // atomEscape\n case \"[\": // characterClass\n // TODO: isAtom must be called before isAssertion - disambiguate\n case \"(\": // group\n return true\n default:\n return false\n }\n }\n\n RegExpParser.prototype.isAssertion = function() {\n switch (this.peekChar(0)) {\n case \"^\":\n case \"$\":\n return true\n // '\\b' or '\\B'\n case \"\\\\\":\n switch (this.peekChar(1)) {\n case \"b\":\n case \"B\":\n return true\n default:\n return false\n }\n // '(?=' or '(?!'\n case \"(\":\n return (\n this.peekChar(1) === \"?\" &&\n (this.peekChar(2) === \"=\" || this.peekChar(2) === \"!\")\n )\n default:\n return false\n }\n }\n\n RegExpParser.prototype.isQuantifier = function() {\n var prevState = this.saveState()\n try {\n return this.quantifier(true) !== undefined\n } catch (e) {\n return false\n } finally {\n this.restoreState(prevState)\n }\n }\n\n RegExpParser.prototype.isPatternCharacter = function() {\n switch (this.peekChar()) {\n case \"^\":\n case \"$\":\n case \"\\\\\":\n case \".\":\n case \"*\":\n case \"+\":\n case \"?\":\n case \"(\":\n case \")\":\n case \"[\":\n case \"|\":\n case \"/\":\n case \"\\n\":\n case \"\\r\":\n case \"\\u2028\":\n case \"\\u2029\":\n return false\n default:\n return true\n }\n }\n\n RegExpParser.prototype.parseHexDigits = function(howMany) {\n var hexString = \"\"\n for (var i = 0; i < howMany; i++) {\n var hexChar = this.popChar()\n if (hexDigitPattern.test(hexChar) === false) {\n throw Error(\"Expecting a HexDecimal digits\")\n }\n hexString += hexChar\n }\n var charCode = parseInt(hexString, 16)\n return { type: \"Character\", value: charCode }\n }\n\n RegExpParser.prototype.peekChar = function(howMuch) {\n if (howMuch === undefined) {\n howMuch = 0\n }\n return this.input[this.idx + howMuch]\n }\n\n RegExpParser.prototype.popChar = function() {\n var nextChar = this.peekChar(0)\n this.consumeChar()\n return nextChar\n }\n\n RegExpParser.prototype.consumeChar = function(char) {\n if (char !== undefined && this.input[this.idx] !== char) {\n throw Error(\n \"Expected: '\" +\n char +\n \"' but found: '\" +\n this.input[this.idx] +\n \"' at offset: \" +\n this.idx\n )\n }\n\n if (this.idx >= this.input.length) {\n throw Error(\"Unexpected end of input\")\n }\n this.idx++\n }\n\n RegExpParser.prototype.loc = function(begin) {\n return { begin: begin, end: this.idx }\n }\n\n // consts and utilities\n var hexDigitPattern = /[0-9a-fA-F]/\n var decimalPattern = /[0-9]/\n var decimalPatternNoZero = /[1-9]/\n\n function cc(char) {\n return char.charCodeAt(0)\n }\n\n function insertToSet(item, set) {\n if (item.length !== undefined) {\n item.forEach(function(subItem) {\n set.push(subItem)\n })\n } else {\n set.push(item)\n }\n }\n\n function addFlag(flagObj, flagKey) {\n if (flagObj[flagKey] === true) {\n throw \"duplicate flag \" + flagKey\n }\n\n flagObj[flagKey] = true\n }\n\n function ASSERT_EXISTS(obj) {\n // istanbul ignore next\n if (obj === undefined) {\n throw Error(\"Internal Error - Should never get here!\")\n }\n }\n\n // istanbul ignore next\n function ASSERT_NEVER_REACH_HERE() {\n throw Error(\"Internal Error - Should never get here!\")\n }\n\n var i\n var digitsCharCodes = []\n for (i = cc(\"0\"); i <= cc(\"9\"); i++) {\n digitsCharCodes.push(i)\n }\n\n var wordCharCodes = [cc(\"_\")].concat(digitsCharCodes)\n for (i = cc(\"a\"); i <= cc(\"z\"); i++) {\n wordCharCodes.push(i)\n }\n\n for (i = cc(\"A\"); i <= cc(\"Z\"); i++) {\n wordCharCodes.push(i)\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#character-classes\n var whitespaceCodes = [\n cc(\" \"),\n cc(\"\\f\"),\n cc(\"\\n\"),\n cc(\"\\r\"),\n cc(\"\\t\"),\n cc(\"\\v\"),\n cc(\"\\t\"),\n cc(\"\\u00a0\"),\n cc(\"\\u1680\"),\n cc(\"\\u2000\"),\n cc(\"\\u2001\"),\n cc(\"\\u2002\"),\n cc(\"\\u2003\"),\n cc(\"\\u2004\"),\n cc(\"\\u2005\"),\n cc(\"\\u2006\"),\n cc(\"\\u2007\"),\n cc(\"\\u2008\"),\n cc(\"\\u2009\"),\n cc(\"\\u200a\"),\n cc(\"\\u2028\"),\n cc(\"\\u2029\"),\n cc(\"\\u202f\"),\n cc(\"\\u205f\"),\n cc(\"\\u3000\"),\n cc(\"\\ufeff\")\n ]\n\n function BaseRegExpVisitor() {}\n\n BaseRegExpVisitor.prototype.visitChildren = function(node) {\n for (var key in node) {\n var child = node[key]\n /* istanbul ignore else */\n if (node.hasOwnProperty(key)) {\n if (child.type !== undefined) {\n this.visit(child)\n } else if (Array.isArray(child)) {\n child.forEach(function(subChild) {\n this.visit(subChild)\n }, this)\n }\n }\n }\n }\n\n BaseRegExpVisitor.prototype.visit = function(node) {\n switch (node.type) {\n case \"Pattern\":\n this.visitPattern(node)\n break\n case \"Flags\":\n this.visitFlags(node)\n break\n case \"Disjunction\":\n this.visitDisjunction(node)\n break\n case \"Alternative\":\n this.visitAlternative(node)\n break\n case \"StartAnchor\":\n this.visitStartAnchor(node)\n break\n case \"EndAnchor\":\n this.visitEndAnchor(node)\n break\n case \"WordBoundary\":\n this.visitWordBoundary(node)\n break\n case \"NonWordBoundary\":\n this.visitNonWordBoundary(node)\n break\n case \"Lookahead\":\n this.visitLookahead(node)\n break\n case \"NegativeLookahead\":\n this.visitNegativeLookahead(node)\n break\n case \"Character\":\n this.visitCharacter(node)\n break\n case \"Set\":\n this.visitSet(node)\n break\n case \"Group\":\n this.visitGroup(node)\n break\n case \"GroupBackReference\":\n this.visitGroupBackReference(node)\n break\n case \"Quantifier\":\n this.visitQuantifier(node)\n break\n }\n\n this.visitChildren(node)\n }\n\n BaseRegExpVisitor.prototype.visitPattern = function(node) {}\n\n BaseRegExpVisitor.prototype.visitFlags = function(node) {}\n\n BaseRegExpVisitor.prototype.visitDisjunction = function(node) {}\n\n BaseRegExpVisitor.prototype.visitAlternative = function(node) {}\n\n // Assertion\n BaseRegExpVisitor.prototype.visitStartAnchor = function(node) {}\n\n BaseRegExpVisitor.prototype.visitEndAnchor = function(node) {}\n\n BaseRegExpVisitor.prototype.visitWordBoundary = function(node) {}\n\n BaseRegExpVisitor.prototype.visitNonWordBoundary = function(node) {}\n\n BaseRegExpVisitor.prototype.visitLookahead = function(node) {}\n\n BaseRegExpVisitor.prototype.visitNegativeLookahead = function(node) {}\n\n // atoms\n BaseRegExpVisitor.prototype.visitCharacter = function(node) {}\n\n BaseRegExpVisitor.prototype.visitSet = function(node) {}\n\n BaseRegExpVisitor.prototype.visitGroup = function(node) {}\n\n BaseRegExpVisitor.prototype.visitGroupBackReference = function(node) {}\n\n BaseRegExpVisitor.prototype.visitQuantifier = function(node) {}\n\n return {\n RegExpParser: RegExpParser,\n BaseRegExpVisitor: BaseRegExpVisitor,\n VERSION: \"0.5.0\"\n }\n }\n)\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n negate = require('./negate');\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(baseIteratee(predicate, 3)));\n}\n\nmodule.exports = reject;\n","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nmodule.exports = difference;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clearRegExpParserCache = exports.getRegExpAst = void 0;\nvar regexp_to_ast_1 = require(\"regexp-to-ast\");\nvar regExpAstCache = {};\nvar regExpParser = new regexp_to_ast_1.RegExpParser();\nfunction getRegExpAst(regExp) {\n var regExpStr = regExp.toString();\n if (regExpAstCache.hasOwnProperty(regExpStr)) {\n return regExpAstCache[regExpStr];\n }\n else {\n var regExpAst = regExpParser.pattern(regExpStr);\n regExpAstCache[regExpStr] = regExpAst;\n return regExpAst;\n }\n}\nexports.getRegExpAst = getRegExpAst;\nfunction clearRegExpParserCache() {\n regExpAstCache = {};\n}\nexports.clearRegExpParserCache = clearRegExpParserCache;\n//# sourceMappingURL=reg_exp_parser.js.map","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseSlice = require('./_baseSlice'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nmodule.exports = dropRight;\n","\"use strict\";\n// Lookahead keys are 32Bit integers in the form\n// TTTTTTTT-ZZZZZZZZZZZZ-YYYY-XXXXXXXX\n// XXXX -> Occurrence Index bitmap.\n// YYYY -> DSL Method Type bitmap.\n// ZZZZZZZZZZZZZZZ -> Rule short Index bitmap.\n// TTTTTTTTT -> alternation alternative index bitmap\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getKeyForAutomaticLookahead = exports.AT_LEAST_ONE_SEP_IDX = exports.MANY_SEP_IDX = exports.AT_LEAST_ONE_IDX = exports.MANY_IDX = exports.OPTION_IDX = exports.OR_IDX = exports.BITS_FOR_ALT_IDX = exports.BITS_FOR_RULE_IDX = exports.BITS_FOR_OCCURRENCE_IDX = exports.BITS_FOR_METHOD_TYPE = void 0;\nexports.BITS_FOR_METHOD_TYPE = 4;\nexports.BITS_FOR_OCCURRENCE_IDX = 8;\nexports.BITS_FOR_RULE_IDX = 12;\n// TODO: validation, this means that there may at most 2^8 --> 256 alternatives for an alternation.\nexports.BITS_FOR_ALT_IDX = 8;\n// short string used as part of mapping keys.\n// being short improves the performance when composing KEYS for maps out of these\n// The 5 - 8 bits (16 possible values, are reserved for the DSL method indices)\nexports.OR_IDX = 1 << exports.BITS_FOR_OCCURRENCE_IDX;\nexports.OPTION_IDX = 2 << exports.BITS_FOR_OCCURRENCE_IDX;\nexports.MANY_IDX = 3 << exports.BITS_FOR_OCCURRENCE_IDX;\nexports.AT_LEAST_ONE_IDX = 4 << exports.BITS_FOR_OCCURRENCE_IDX;\nexports.MANY_SEP_IDX = 5 << exports.BITS_FOR_OCCURRENCE_IDX;\nexports.AT_LEAST_ONE_SEP_IDX = 6 << exports.BITS_FOR_OCCURRENCE_IDX;\n// this actually returns a number, but it is always used as a string (object prop key)\nfunction getKeyForAutomaticLookahead(ruleIdx, dslMethodIdx, occurrence) {\n return occurrence | dslMethodIdx | ruleIdx;\n}\nexports.getKeyForAutomaticLookahead = getKeyForAutomaticLookahead;\nvar BITS_START_FOR_ALT_IDX = 32 - exports.BITS_FOR_ALT_IDX;\n//# sourceMappingURL=keys.js.map","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};\nimport DebugLogger from \"debug\";\nimport { Observable } from \"observable-fns\";\nimport { deserialize } from \"../common\";\nimport { createPromiseWithResolver } from \"../promise\";\nimport { $errors, $events, $terminate, $worker } from \"../symbols\";\nimport { WorkerEventType } from \"../types/master\";\nimport { createProxyFunction, createProxyModule } from \"./invocation-proxy\";\nconst debugMessages = DebugLogger(\"threads:master:messages\");\nconst debugSpawn = DebugLogger(\"threads:master:spawn\");\nconst debugThreadUtils = DebugLogger(\"threads:master:thread-utils\");\nconst isInitMessage = (data) => data && data.type === \"init\";\nconst isUncaughtErrorMessage = (data) => data && data.type === \"uncaughtError\";\nconst initMessageTimeout = typeof process !== \"undefined\" && process.env.THREADS_WORKER_INIT_TIMEOUT\n ? Number.parseInt(process.env.THREADS_WORKER_INIT_TIMEOUT, 10)\n : 10000;\nfunction withTimeout(promise, timeoutInMs, errorMessage) {\n return __awaiter(this, void 0, void 0, function* () {\n let timeoutHandle;\n const timeout = new Promise((resolve, reject) => {\n timeoutHandle = setTimeout(() => reject(Error(errorMessage)), timeoutInMs);\n });\n const result = yield Promise.race([\n promise,\n timeout\n ]);\n clearTimeout(timeoutHandle);\n return result;\n });\n}\nfunction receiveInitMessage(worker) {\n return new Promise((resolve, reject) => {\n const messageHandler = ((event) => {\n debugMessages(\"Message from worker before finishing initialization:\", event.data);\n if (isInitMessage(event.data)) {\n worker.removeEventListener(\"message\", messageHandler);\n resolve(event.data);\n }\n else if (isUncaughtErrorMessage(event.data)) {\n worker.removeEventListener(\"message\", messageHandler);\n reject(deserialize(event.data.error));\n }\n });\n worker.addEventListener(\"message\", messageHandler);\n });\n}\nfunction createEventObservable(worker, workerTermination) {\n return new Observable(observer => {\n const messageHandler = ((messageEvent) => {\n const workerEvent = {\n type: WorkerEventType.message,\n data: messageEvent.data\n };\n observer.next(workerEvent);\n });\n const rejectionHandler = ((errorEvent) => {\n debugThreadUtils(\"Unhandled promise rejection event in thread:\", errorEvent);\n const workerEvent = {\n type: WorkerEventType.internalError,\n error: Error(errorEvent.reason)\n };\n observer.next(workerEvent);\n });\n worker.addEventListener(\"message\", messageHandler);\n worker.addEventListener(\"unhandledrejection\", rejectionHandler);\n workerTermination.then(() => {\n const terminationEvent = {\n type: WorkerEventType.termination\n };\n worker.removeEventListener(\"message\", messageHandler);\n worker.removeEventListener(\"unhandledrejection\", rejectionHandler);\n observer.next(terminationEvent);\n observer.complete();\n });\n });\n}\nfunction createTerminator(worker) {\n const [termination, resolver] = createPromiseWithResolver();\n const terminate = () => __awaiter(this, void 0, void 0, function* () {\n debugThreadUtils(\"Terminating worker\");\n // Newer versions of worker_threads workers return a promise\n yield worker.terminate();\n resolver();\n });\n return { terminate, termination };\n}\nfunction setPrivateThreadProps(raw, worker, workerEvents, terminate) {\n const workerErrors = workerEvents\n .filter(event => event.type === WorkerEventType.internalError)\n .map(errorEvent => errorEvent.error);\n // tslint:disable-next-line prefer-object-spread\n return Object.assign(raw, {\n [$errors]: workerErrors,\n [$events]: workerEvents,\n [$terminate]: terminate,\n [$worker]: worker\n });\n}\n/**\n * Spawn a new thread. Takes a fresh worker instance, wraps it in a thin\n * abstraction layer to provide the transparent API and verifies that\n * the worker has initialized successfully.\n *\n * @param worker Instance of `Worker`. Either a web worker, `worker_threads` worker or `tiny-worker` worker.\n * @param [options]\n * @param [options.timeout] Init message timeout. Default: 10000 or set by environment variable.\n */\nexport function spawn(worker, options) {\n return __awaiter(this, void 0, void 0, function* () {\n debugSpawn(\"Initializing new thread\");\n const timeout = options && options.timeout ? options.timeout : initMessageTimeout;\n const initMessage = yield withTimeout(receiveInitMessage(worker), timeout, `Timeout: Did not receive an init message from worker after ${timeout}ms. Make sure the worker calls expose().`);\n const exposed = initMessage.exposed;\n const { termination, terminate } = createTerminator(worker);\n const events = createEventObservable(worker, termination);\n if (exposed.type === \"function\") {\n const proxy = createProxyFunction(worker);\n return setPrivateThreadProps(proxy, worker, events, terminate);\n }\n else if (exposed.type === \"module\") {\n const proxy = createProxyModule(worker, exposed.methods);\n return setPrivateThreadProps(proxy, worker, events, terminate);\n }\n else {\n const type = exposed.type;\n throw Error(`Worker init message states unexpected type of expose(): ${type}`);\n }\n });\n}\n","import { $errors, $events, $terminate } from \"../symbols\";\nfunction fail(message) {\n throw Error(message);\n}\n/** Thread utility functions. Use them to manage or inspect a `spawn()`-ed thread. */\nexport const Thread = {\n /** Return an observable that can be used to subscribe to all errors happening in the thread. */\n errors(thread) {\n return thread[$errors] || fail(\"Error observable not found. Make sure to pass a thread instance as returned by the spawn() promise.\");\n },\n /** Return an observable that can be used to subscribe to internal events happening in the thread. Useful for debugging. */\n events(thread) {\n return thread[$events] || fail(\"Events observable not found. Make sure to pass a thread instance as returned by the spawn() promise.\");\n },\n /** Terminate a thread. Remember to terminate every thread when you are done using it. */\n terminate(thread) {\n return thread[$terminate]();\n }\n};\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleArray.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n return input.then(function (value) {\n sub.add(scheduler.schedule(function () {\n subscriber.next(value);\n sub.add(scheduler.schedule(function () { return subscriber.complete(); }));\n }));\n }, function (err) {\n sub.add(scheduler.schedule(function () { return subscriber.error(err); }));\n });\n }));\n return sub;\n });\n}\n//# sourceMappingURL=schedulePromise.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var iterator;\n sub.add(function () {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(function () {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n var value;\n var done;\n try {\n var result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}\n//# sourceMappingURL=isInteropObservable.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n//# sourceMappingURL=isIterable.js.map\n","/** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */\nimport { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n//# sourceMappingURL=scheduled.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n//# sourceMappingURL=from.js.map\n","var Scheduler = /*@__PURE__*/ (function () {\n function Scheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n return new this.SchedulerAction(this, work).schedule(state, delay);\n };\n Scheduler.now = function () { return Date.now(); };\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map\n","/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n var _this = _super.call(this, SchedulerAction, function () {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n }) || this;\n _this.actions = [];\n _this.active = false;\n _this.scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return _super.prototype.schedule.call(this, work, delay, state);\n }\n };\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this.active) {\n actions.push(action);\n return;\n }\n var error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map\n","/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Action } from './Action';\nvar AsyncAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, delay) {\n var errored = false;\n var errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype._unsubscribe = function () {\n var id = this.id;\n var scheduler = this.scheduler;\n var actions = scheduler.actions;\n var index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map\n","import Observable from \"./observable\";\n// TODO: This observer iteration approach looks inelegant and expensive\n// Idea: Come up with super class for Subscription that contains the\n// notify*, ... methods and use it here\n/**\n * A subject is a \"hot\" observable (see `multicast`) that has its observer\n * methods (`.next(value)`, `.error(error)`, `.complete()`) exposed.\n *\n * Be careful, though! With great power comes great responsibility. Only use\n * the `Subject` when you really need to trigger updates \"from the outside\" and\n * try to keep the code that can access it to a minimum. Return\n * `Observable.from(mySubject)` to not allow other code to mutate.\n */\nclass MulticastSubject extends Observable {\n constructor() {\n super(observer => {\n this._observers.add(observer);\n return () => this._observers.delete(observer);\n });\n this._observers = new Set();\n }\n next(value) {\n for (const observer of this._observers) {\n observer.next(value);\n }\n }\n error(error) {\n for (const observer of this._observers) {\n observer.error(error);\n }\n }\n complete() {\n for (const observer of this._observers) {\n observer.complete();\n }\n }\n}\nexport default MulticastSubject;\n","/**\n * Unsubscribe from a subscription returned by something that looks like an observable,\n * but is not necessarily our observable implementation.\n */\nfunction unsubscribe(subscription) {\n if (typeof subscription === \"function\") {\n subscription();\n }\n else if (subscription && typeof subscription.unsubscribe === \"function\") {\n subscription.unsubscribe();\n }\n}\nexport default unsubscribe;\n","import Observable from \"./observable\";\nimport Subject from \"./subject\";\nimport unsubscribe from \"./unsubscribe\";\n// TODO: Subject already creates additional observables \"under the hood\",\n// now we introduce even more. A true native MulticastObservable\n// would be preferable.\n/**\n * Takes a \"cold\" observable and returns a wrapping \"hot\" observable that\n * proxies the input observable's values and errors.\n *\n * An observable is called \"cold\" when its initialization function is run\n * for each new subscriber. This is how observable-fns's `Observable`\n * implementation works.\n *\n * A hot observable is an observable where new subscribers subscribe to\n * the upcoming values of an already-initialiazed observable.\n *\n * The multicast observable will lazily subscribe to the source observable\n * once it has its first own subscriber and will unsubscribe from the\n * source observable when its last own subscriber unsubscribed.\n */\nfunction multicast(coldObservable) {\n const subject = new Subject();\n let sourceSubscription;\n let subscriberCount = 0;\n return new Observable(observer => {\n // Init source subscription lazily\n if (!sourceSubscription) {\n sourceSubscription = coldObservable.subscribe(subject);\n }\n // Pipe all events from `subject` into this observable\n const subscription = subject.subscribe(observer);\n subscriberCount++;\n return () => {\n subscriberCount--;\n subscription.unsubscribe();\n // Close source subscription once last subscriber has unsubscribed\n if (subscriberCount === 0) {\n unsubscribe(sourceSubscription);\n sourceSubscription = undefined;\n }\n };\n });\n}\nexport default multicast;\n","import { Observable } from \"observable-fns\";\nconst doNothing = () => undefined;\nconst returnInput = (input) => input;\nconst runDeferred = (fn) => Promise.resolve().then(fn);\nfunction fail(error) {\n throw error;\n}\nfunction isThenable(thing) {\n return thing && typeof thing.then === \"function\";\n}\n/**\n * Creates a hybrid, combining the APIs of an Observable and a Promise.\n *\n * It is used to proxy async process states when we are initially not sure\n * if that async process will yield values once (-> Promise) or multiple\n * times (-> Observable).\n *\n * Note that the observable promise inherits some of the observable's characteristics:\n * The `init` function will be called *once for every time anyone subscribes to it*.\n *\n * If this is undesired, derive a hot observable from it using `makeHot()` and\n * subscribe to that.\n */\nexport class ObservablePromise extends Observable {\n constructor(init) {\n super((originalObserver) => {\n // tslint:disable-next-line no-this-assignment\n const self = this;\n const observer = Object.assign(Object.assign({}, originalObserver), { complete() {\n originalObserver.complete();\n self.onCompletion();\n }, error(error) {\n originalObserver.error(error);\n self.onError(error);\n },\n next(value) {\n originalObserver.next(value);\n self.onNext(value);\n } });\n try {\n this.initHasRun = true;\n return init(observer);\n }\n catch (error) {\n observer.error(error);\n }\n });\n this.initHasRun = false;\n this.fulfillmentCallbacks = [];\n this.rejectionCallbacks = [];\n this.firstValueSet = false;\n this.state = \"pending\";\n }\n onNext(value) {\n if (!this.firstValueSet) {\n this.firstValue = value;\n this.firstValueSet = true;\n }\n }\n onError(error) {\n this.state = \"rejected\";\n this.rejection = error;\n for (const onRejected of this.rejectionCallbacks) {\n // Promisifying the call to turn errors into unhandled promise rejections\n // instead of them failing sync and cancelling the iteration\n runDeferred(() => onRejected(error));\n }\n }\n onCompletion() {\n this.state = \"fulfilled\";\n for (const onFulfilled of this.fulfillmentCallbacks) {\n // Promisifying the call to turn errors into unhandled promise rejections\n // instead of them failing sync and cancelling the iteration\n runDeferred(() => onFulfilled(this.firstValue));\n }\n }\n then(onFulfilledRaw, onRejectedRaw) {\n const onFulfilled = onFulfilledRaw || returnInput;\n const onRejected = onRejectedRaw || fail;\n let onRejectedCalled = false;\n return new Promise((resolve, reject) => {\n const rejectionCallback = (error) => {\n if (onRejectedCalled)\n return;\n onRejectedCalled = true;\n try {\n resolve(onRejected(error));\n }\n catch (anotherError) {\n reject(anotherError);\n }\n };\n const fulfillmentCallback = (value) => {\n try {\n resolve(onFulfilled(value));\n }\n catch (error) {\n rejectionCallback(error);\n }\n };\n if (!this.initHasRun) {\n this.subscribe({ error: rejectionCallback });\n }\n if (this.state === \"fulfilled\") {\n return resolve(onFulfilled(this.firstValue));\n }\n if (this.state === \"rejected\") {\n onRejectedCalled = true;\n return resolve(onRejected(this.rejection));\n }\n this.fulfillmentCallbacks.push(fulfillmentCallback);\n this.rejectionCallbacks.push(rejectionCallback);\n });\n }\n catch(onRejected) {\n return this.then(undefined, onRejected);\n }\n finally(onCompleted) {\n const handler = onCompleted || doNothing;\n return this.then((value) => {\n handler();\n return value;\n }, () => handler());\n }\n static from(thing) {\n if (isThenable(thing)) {\n return new ObservablePromise(observer => {\n const onFulfilled = (value) => {\n observer.next(value);\n observer.complete();\n };\n const onRejected = (error) => {\n observer.error(error);\n };\n thing.then(onFulfilled, onRejected);\n });\n }\n else {\n return super.from(thing);\n }\n }\n}\n","/*\n * This source file contains the code for proxying calls in the master thread to calls in the workers\n * by `.postMessage()`-ing.\n *\n * Keep in mind that this code can make or break the program's performance! Need to optimize more…\n */\nimport DebugLogger from \"debug\";\nimport { multicast, Observable } from \"observable-fns\";\nimport { deserialize, serialize } from \"../common\";\nimport { ObservablePromise } from \"../observable-promise\";\nimport { isTransferDescriptor } from \"../transferable\";\nimport { MasterMessageType, WorkerMessageType } from \"../types/messages\";\nconst debugMessages = DebugLogger(\"threads:master:messages\");\nlet nextJobUID = 1;\nconst dedupe = (array) => Array.from(new Set(array));\nconst isJobErrorMessage = (data) => data && data.type === WorkerMessageType.error;\nconst isJobResultMessage = (data) => data && data.type === WorkerMessageType.result;\nconst isJobStartMessage = (data) => data && data.type === WorkerMessageType.running;\nfunction createObservableForJob(worker, jobUID) {\n return new Observable(observer => {\n let asyncType;\n const messageHandler = ((event) => {\n debugMessages(\"Message from worker:\", event.data);\n if (!event.data || event.data.uid !== jobUID)\n return;\n if (isJobStartMessage(event.data)) {\n asyncType = event.data.resultType;\n }\n else if (isJobResultMessage(event.data)) {\n if (asyncType === \"promise\") {\n if (typeof event.data.payload !== \"undefined\") {\n observer.next(deserialize(event.data.payload));\n }\n observer.complete();\n worker.removeEventListener(\"message\", messageHandler);\n }\n else {\n if (event.data.payload) {\n observer.next(deserialize(event.data.payload));\n }\n if (event.data.complete) {\n observer.complete();\n worker.removeEventListener(\"message\", messageHandler);\n }\n }\n }\n else if (isJobErrorMessage(event.data)) {\n const error = deserialize(event.data.error);\n if (asyncType === \"promise\" || !asyncType) {\n observer.error(error);\n }\n else {\n observer.error(error);\n }\n worker.removeEventListener(\"message\", messageHandler);\n }\n });\n worker.addEventListener(\"message\", messageHandler);\n return () => {\n if (asyncType === \"observable\" || !asyncType) {\n const cancelMessage = {\n type: MasterMessageType.cancel,\n uid: jobUID\n };\n worker.postMessage(cancelMessage);\n }\n worker.removeEventListener(\"message\", messageHandler);\n };\n });\n}\nfunction prepareArguments(rawArgs) {\n if (rawArgs.length === 0) {\n // Exit early if possible\n return {\n args: [],\n transferables: []\n };\n }\n const args = [];\n const transferables = [];\n for (const arg of rawArgs) {\n if (isTransferDescriptor(arg)) {\n args.push(serialize(arg.send));\n transferables.push(...arg.transferables);\n }\n else {\n args.push(serialize(arg));\n }\n }\n return {\n args,\n transferables: transferables.length === 0 ? transferables : dedupe(transferables)\n };\n}\nexport function createProxyFunction(worker, method) {\n return ((...rawArgs) => {\n const uid = nextJobUID++;\n const { args, transferables } = prepareArguments(rawArgs);\n const runMessage = {\n type: MasterMessageType.run,\n uid,\n method,\n args\n };\n debugMessages(\"Sending command to run function to worker:\", runMessage);\n try {\n worker.postMessage(runMessage, transferables);\n }\n catch (error) {\n return ObservablePromise.from(Promise.reject(error));\n }\n return ObservablePromise.from(multicast(createObservableForJob(worker, uid)));\n });\n}\nexport function createProxyModule(worker, methodNames) {\n const proxy = {};\n for (const methodName of methodNames) {\n proxy[methodName] = createProxyFunction(worker, methodName);\n }\n return proxy;\n}\n","/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime, periodOrScheduler, scheduler) {\n if (dueTime === void 0) {\n dueTime = 0;\n }\n var period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(function (subscriber) {\n var due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period: period, subscriber: subscriber\n });\n });\n}\nfunction dispatch(state) {\n var index = state.index, period = state.period, subscriber = state.subscriber;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n//# sourceMappingURL=timer.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nexport function finalize(callback) {\n return function (source) { return source.lift(new FinallyOperator(callback)); };\n}\nvar FinallyOperator = /*@__PURE__*/ (function () {\n function FinallyOperator(callback) {\n this.callback = callback;\n }\n FinallyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n };\n return FinallyOperator;\n}());\nvar FinallySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FinallySubscriber, _super);\n function FinallySubscriber(destination, callback) {\n var _this = _super.call(this, destination) || this;\n _this.add(new Subscription(callback));\n return _this;\n }\n return FinallySubscriber;\n}(Subscriber));\n//# sourceMappingURL=finalize.js.map\n","function _extends() {\n module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","export default function _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}","/**\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","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var subscribeToArray = function (array) {\n return function (subscriber) {\n for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n };\n};\n//# sourceMappingURL=subscribeToArray.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\n//# sourceMappingURL=isDate.js.map\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// extracted by mini-css-extract-plugin\nexport default {\"loader\":\"style-module_3aVjK\",\"loadingCircular\":\"style-module_1HWIC\"};","import cl from 'classnames';\nimport style from './style.module.styl';\n\nconst ProgressCircular = ({\n radius,\n stroke,\n progress,\n className = '',\n strokeColor = '#3A3B3D',\n backColor = '#C3C5CB',\n noDot = false,\n}) => {\n const normalizedRadius = radius - stroke * 2;\n const circumference = normalizedRadius * 2 * Math.PI;\n const strokeDashoffset = circumference - (progress / 100) * circumference;\n\n return (\n \n \n \n {!noDot && (\n \n )}\n \n );\n};\n\nexport default ProgressCircular;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = util.toSetString(aStr);\n var isDuplicate = has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[sStr] = idx;\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","\"use strict\";\nvar __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 (b.hasOwnProperty(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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isFunction_1 = require(\"./util/isFunction\");\nvar Observer_1 = require(\"./Observer\");\nvar Subscription_1 = require(\"./Subscription\");\nvar rxSubscriber_1 = require(\"../internal/symbol/rxSubscriber\");\nvar config_1 = require(\"./config\");\nvar hostReportError_1 = require(\"./util/hostReportError\");\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n switch (arguments.length) {\n case 0:\n _this.destination = Observer_1.empty;\n break;\n case 1:\n if (!destinationOrNext) {\n _this.destination = Observer_1.empty;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n }\n else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n break;\n }\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n return _this;\n }\n Subscriber.prototype[rxSubscriber_1.rxSubscriber] = function () { return this; };\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n if (isFunction_1.isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== Observer_1.empty) {\n context = Object.create(observerOrNext);\n if (isFunction_1.isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!config_1.config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config_1.config.useDeprecatedSynchronousErrorHandling;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError_1.hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError_1.hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!config_1.config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError_1.hostReportError(err);\n }\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config_1.config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError_1.hostReportError(err);\n return true;\n }\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nexports.SafeSubscriber = SafeSubscriber;\n//# sourceMappingURL=Subscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isFunction(x) {\n return typeof x === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar config_1 = require(\"./config\");\nvar hostReportError_1 = require(\"./util/hostReportError\");\nexports.empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError_1.hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction hostReportError(err) {\n setTimeout(function () { throw err; }, 0);\n}\nexports.hostReportError = hostReportError;\n//# sourceMappingURL=hostReportError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rxSubscriber = (function () {\n return typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random();\n})();\nexports.$$rxSubscriber = exports.rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// needs a separate module as this is required inside chevrotain productive code\n// and also in the entry point for webpack(api.ts).\n// A separate file avoids cyclic dependencies and webpack errors.\nexports.VERSION = \"10.5.0\";\n//# sourceMappingURL=version.js.map","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseIsRegExp = require('./_baseIsRegExp'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.firstForTerminal = exports.firstForBranching = exports.firstForSequence = exports.first = void 0;\nvar flatten_1 = __importDefault(require(\"lodash/flatten\"));\nvar uniq_1 = __importDefault(require(\"lodash/uniq\"));\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar gast_1 = require(\"@chevrotain/gast\");\nvar gast_2 = require(\"@chevrotain/gast\");\nfunction first(prod) {\n /* istanbul ignore else */\n if (prod instanceof gast_1.NonTerminal) {\n // this could in theory cause infinite loops if\n // (1) prod A refs prod B.\n // (2) prod B refs prod A\n // (3) AB can match the empty set\n // in other words a cycle where everything is optional so the first will keep\n // looking ahead for the next optional part and will never exit\n // currently there is no safeguard for this unique edge case because\n // (1) not sure a grammar in which this can happen is useful for anything (productive)\n return first(prod.referencedRule);\n }\n else if (prod instanceof gast_1.Terminal) {\n return firstForTerminal(prod);\n }\n else if ((0, gast_2.isSequenceProd)(prod)) {\n return firstForSequence(prod);\n }\n else if ((0, gast_2.isBranchingProd)(prod)) {\n return firstForBranching(prod);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexports.first = first;\nfunction firstForSequence(prod) {\n var firstSet = [];\n var seq = prod.definition;\n var nextSubProdIdx = 0;\n var hasInnerProdsRemaining = seq.length > nextSubProdIdx;\n var currSubProd;\n // so we enter the loop at least once (if the definition is not empty\n var isLastInnerProdOptional = true;\n // scan a sequence until it's end or until we have found a NONE optional production in it\n while (hasInnerProdsRemaining && isLastInnerProdOptional) {\n currSubProd = seq[nextSubProdIdx];\n isLastInnerProdOptional = (0, gast_2.isOptionalProd)(currSubProd);\n firstSet = firstSet.concat(first(currSubProd));\n nextSubProdIdx = nextSubProdIdx + 1;\n hasInnerProdsRemaining = seq.length > nextSubProdIdx;\n }\n return (0, uniq_1.default)(firstSet);\n}\nexports.firstForSequence = firstForSequence;\nfunction firstForBranching(prod) {\n var allAlternativesFirsts = (0, map_1.default)(prod.definition, function (innerProd) {\n return first(innerProd);\n });\n return (0, uniq_1.default)((0, flatten_1.default)(allAlternativesFirsts));\n}\nexports.firstForBranching = firstForBranching;\nfunction firstForTerminal(terminal) {\n return [terminal.terminalType];\n}\nexports.firstForTerminal = firstForTerminal;\n//# sourceMappingURL=first.js.map","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IN = void 0;\n// TODO: can this be removed? where is it used?\nexports.IN = \"_~IN~_\";\n//# sourceMappingURL=constants.js.map","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.charCodeToOptimizedIndex = exports.minOptimizationVal = exports.buildLineBreakIssueMessage = exports.LineTerminatorOptimizedTester = exports.isShortPattern = exports.isCustomPattern = exports.cloneEmptyGroups = exports.performWarningRuntimeChecks = exports.performRuntimeChecks = exports.addStickyFlag = exports.addStartOfInput = exports.findUnreachablePatterns = exports.findModesThatDoNotExist = exports.findInvalidGroupType = exports.findDuplicatePatterns = exports.findUnsupportedFlags = exports.findStartOfInputAnchor = exports.findEmptyMatchRegExps = exports.findEndOfInputAnchor = exports.findInvalidPatterns = exports.findMissingPatterns = exports.validatePatterns = exports.analyzeTokenTypes = exports.enableSticky = exports.disableSticky = exports.SUPPORT_STICKY = exports.MODES = exports.DEFAULT_MODE = void 0;\nvar regexp_to_ast_1 = require(\"regexp-to-ast\");\nvar lexer_public_1 = require(\"./lexer_public\");\nvar first_1 = __importDefault(require(\"lodash/first\"));\nvar isEmpty_1 = __importDefault(require(\"lodash/isEmpty\"));\nvar compact_1 = __importDefault(require(\"lodash/compact\"));\nvar isArray_1 = __importDefault(require(\"lodash/isArray\"));\nvar values_1 = __importDefault(require(\"lodash/values\"));\nvar flatten_1 = __importDefault(require(\"lodash/flatten\"));\nvar reject_1 = __importDefault(require(\"lodash/reject\"));\nvar difference_1 = __importDefault(require(\"lodash/difference\"));\nvar indexOf_1 = __importDefault(require(\"lodash/indexOf\"));\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar isString_1 = __importDefault(require(\"lodash/isString\"));\nvar isFunction_1 = __importDefault(require(\"lodash/isFunction\"));\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\nvar find_1 = __importDefault(require(\"lodash/find\"));\nvar has_1 = __importDefault(require(\"lodash/has\"));\nvar keys_1 = __importDefault(require(\"lodash/keys\"));\nvar isRegExp_1 = __importDefault(require(\"lodash/isRegExp\"));\nvar filter_1 = __importDefault(require(\"lodash/filter\"));\nvar defaults_1 = __importDefault(require(\"lodash/defaults\"));\nvar reduce_1 = __importDefault(require(\"lodash/reduce\"));\nvar includes_1 = __importDefault(require(\"lodash/includes\"));\nvar utils_1 = require(\"@chevrotain/utils\");\nvar reg_exp_1 = require(\"./reg_exp\");\nvar reg_exp_parser_1 = require(\"./reg_exp_parser\");\nvar PATTERN = \"PATTERN\";\nexports.DEFAULT_MODE = \"defaultMode\";\nexports.MODES = \"modes\";\nexports.SUPPORT_STICKY = typeof new RegExp(\"(?:)\").sticky === \"boolean\";\nfunction disableSticky() {\n exports.SUPPORT_STICKY = false;\n}\nexports.disableSticky = disableSticky;\nfunction enableSticky() {\n exports.SUPPORT_STICKY = true;\n}\nexports.enableSticky = enableSticky;\nfunction analyzeTokenTypes(tokenTypes, options) {\n options = (0, defaults_1.default)(options, {\n useSticky: exports.SUPPORT_STICKY,\n debug: false,\n safeMode: false,\n positionTracking: \"full\",\n lineTerminatorCharacters: [\"\\r\", \"\\n\"],\n tracer: function (msg, action) { return action(); }\n });\n var tracer = options.tracer;\n tracer(\"initCharCodeToOptimizedIndexMap\", function () {\n initCharCodeToOptimizedIndexMap();\n });\n var onlyRelevantTypes;\n tracer(\"Reject Lexer.NA\", function () {\n onlyRelevantTypes = (0, reject_1.default)(tokenTypes, function (currType) {\n return currType[PATTERN] === lexer_public_1.Lexer.NA;\n });\n });\n var hasCustom = false;\n var allTransformedPatterns;\n tracer(\"Transform Patterns\", function () {\n hasCustom = false;\n allTransformedPatterns = (0, map_1.default)(onlyRelevantTypes, function (currType) {\n var currPattern = currType[PATTERN];\n /* istanbul ignore else */\n if ((0, isRegExp_1.default)(currPattern)) {\n var regExpSource = currPattern.source;\n if (regExpSource.length === 1 &&\n // only these regExp meta characters which can appear in a length one regExp\n regExpSource !== \"^\" &&\n regExpSource !== \"$\" &&\n regExpSource !== \".\" &&\n !currPattern.ignoreCase) {\n return regExpSource;\n }\n else if (regExpSource.length === 2 &&\n regExpSource[0] === \"\\\\\" &&\n // not a meta character\n !(0, includes_1.default)([\n \"d\",\n \"D\",\n \"s\",\n \"S\",\n \"t\",\n \"r\",\n \"n\",\n \"t\",\n \"0\",\n \"c\",\n \"b\",\n \"B\",\n \"f\",\n \"v\",\n \"w\",\n \"W\"\n ], regExpSource[1])) {\n // escaped meta Characters: /\\+/ /\\[/\n // or redundant escaping: /\\a/\n // without the escaping \"\\\"\n return regExpSource[1];\n }\n else {\n return options.useSticky\n ? addStickyFlag(currPattern)\n : addStartOfInput(currPattern);\n }\n }\n else if ((0, isFunction_1.default)(currPattern)) {\n hasCustom = true;\n // CustomPatternMatcherFunc - custom patterns do not require any transformations, only wrapping in a RegExp Like object\n return { exec: currPattern };\n }\n else if (typeof currPattern === \"object\") {\n hasCustom = true;\n // ICustomPattern\n return currPattern;\n }\n else if (typeof currPattern === \"string\") {\n if (currPattern.length === 1) {\n return currPattern;\n }\n else {\n var escapedRegExpString = currPattern.replace(/[\\\\^$.*+?()[\\]{}|]/g, \"\\\\$&\");\n var wrappedRegExp = new RegExp(escapedRegExpString);\n return options.useSticky\n ? addStickyFlag(wrappedRegExp)\n : addStartOfInput(wrappedRegExp);\n }\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n });\n });\n var patternIdxToType;\n var patternIdxToGroup;\n var patternIdxToLongerAltIdxArr;\n var patternIdxToPushMode;\n var patternIdxToPopMode;\n tracer(\"misc mapping\", function () {\n patternIdxToType = (0, map_1.default)(onlyRelevantTypes, function (currType) { return currType.tokenTypeIdx; });\n patternIdxToGroup = (0, map_1.default)(onlyRelevantTypes, function (clazz) {\n var groupName = clazz.GROUP;\n /* istanbul ignore next */\n if (groupName === lexer_public_1.Lexer.SKIPPED) {\n return undefined;\n }\n else if ((0, isString_1.default)(groupName)) {\n return groupName;\n }\n else if ((0, isUndefined_1.default)(groupName)) {\n return false;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n });\n patternIdxToLongerAltIdxArr = (0, map_1.default)(onlyRelevantTypes, function (clazz) {\n var longerAltType = clazz.LONGER_ALT;\n if (longerAltType) {\n var longerAltIdxArr = (0, isArray_1.default)(longerAltType)\n ? (0, map_1.default)(longerAltType, function (type) { return (0, indexOf_1.default)(onlyRelevantTypes, type); })\n : [(0, indexOf_1.default)(onlyRelevantTypes, longerAltType)];\n return longerAltIdxArr;\n }\n });\n patternIdxToPushMode = (0, map_1.default)(onlyRelevantTypes, function (clazz) { return clazz.PUSH_MODE; });\n patternIdxToPopMode = (0, map_1.default)(onlyRelevantTypes, function (clazz) {\n return (0, has_1.default)(clazz, \"POP_MODE\");\n });\n });\n var patternIdxToCanLineTerminator;\n tracer(\"Line Terminator Handling\", function () {\n var lineTerminatorCharCodes = getCharCodes(options.lineTerminatorCharacters);\n patternIdxToCanLineTerminator = (0, map_1.default)(onlyRelevantTypes, function (tokType) { return false; });\n if (options.positionTracking !== \"onlyOffset\") {\n patternIdxToCanLineTerminator = (0, map_1.default)(onlyRelevantTypes, function (tokType) {\n if ((0, has_1.default)(tokType, \"LINE_BREAKS\")) {\n return !!tokType.LINE_BREAKS;\n }\n else {\n return (checkLineBreaksIssues(tokType, lineTerminatorCharCodes) === false &&\n (0, reg_exp_1.canMatchCharCode)(lineTerminatorCharCodes, tokType.PATTERN));\n }\n });\n }\n });\n var patternIdxToIsCustom;\n var patternIdxToShort;\n var emptyGroups;\n var patternIdxToConfig;\n tracer(\"Misc Mapping #2\", function () {\n patternIdxToIsCustom = (0, map_1.default)(onlyRelevantTypes, isCustomPattern);\n patternIdxToShort = (0, map_1.default)(allTransformedPatterns, isShortPattern);\n emptyGroups = (0, reduce_1.default)(onlyRelevantTypes, function (acc, clazz) {\n var groupName = clazz.GROUP;\n if ((0, isString_1.default)(groupName) && !(groupName === lexer_public_1.Lexer.SKIPPED)) {\n acc[groupName] = [];\n }\n return acc;\n }, {});\n patternIdxToConfig = (0, map_1.default)(allTransformedPatterns, function (x, idx) {\n return {\n pattern: allTransformedPatterns[idx],\n longerAlt: patternIdxToLongerAltIdxArr[idx],\n canLineTerminator: patternIdxToCanLineTerminator[idx],\n isCustom: patternIdxToIsCustom[idx],\n short: patternIdxToShort[idx],\n group: patternIdxToGroup[idx],\n push: patternIdxToPushMode[idx],\n pop: patternIdxToPopMode[idx],\n tokenTypeIdx: patternIdxToType[idx],\n tokenType: onlyRelevantTypes[idx]\n };\n });\n });\n var canBeOptimized = true;\n var charCodeToPatternIdxToConfig = [];\n if (!options.safeMode) {\n tracer(\"First Char Optimization\", function () {\n charCodeToPatternIdxToConfig = (0, reduce_1.default)(onlyRelevantTypes, function (result, currTokType, idx) {\n if (typeof currTokType.PATTERN === \"string\") {\n var charCode = currTokType.PATTERN.charCodeAt(0);\n var optimizedIdx = charCodeToOptimizedIndex(charCode);\n addToMapOfArrays(result, optimizedIdx, patternIdxToConfig[idx]);\n }\n else if ((0, isArray_1.default)(currTokType.START_CHARS_HINT)) {\n var lastOptimizedIdx_1;\n (0, forEach_1.default)(currTokType.START_CHARS_HINT, function (charOrInt) {\n var charCode = typeof charOrInt === \"string\"\n ? charOrInt.charCodeAt(0)\n : charOrInt;\n var currOptimizedIdx = charCodeToOptimizedIndex(charCode);\n // Avoid adding the config multiple times\n /* istanbul ignore else */\n // - Difficult to check this scenario effects as it is only a performance\n // optimization that does not change correctness\n if (lastOptimizedIdx_1 !== currOptimizedIdx) {\n lastOptimizedIdx_1 = currOptimizedIdx;\n addToMapOfArrays(result, currOptimizedIdx, patternIdxToConfig[idx]);\n }\n });\n }\n else if ((0, isRegExp_1.default)(currTokType.PATTERN)) {\n if (currTokType.PATTERN.unicode) {\n canBeOptimized = false;\n if (options.ensureOptimizations) {\n (0, utils_1.PRINT_ERROR)(\"\".concat(reg_exp_1.failedOptimizationPrefixMsg) +\n \"\\tUnable to analyze < \".concat(currTokType.PATTERN.toString(), \" > pattern.\\n\") +\n \"\\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\\n\" +\n \"\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE\");\n }\n }\n else {\n var optimizedCodes = (0, reg_exp_1.getOptimizedStartCodesIndices)(currTokType.PATTERN, options.ensureOptimizations);\n /* istanbul ignore if */\n // start code will only be empty given an empty regExp or failure of regexp-to-ast library\n // the first should be a different validation and the second cannot be tested.\n if ((0, isEmpty_1.default)(optimizedCodes)) {\n // we cannot understand what codes may start possible matches\n // The optimization correctness requires knowing start codes for ALL patterns.\n // Not actually sure this is an error, no debug message\n canBeOptimized = false;\n }\n (0, forEach_1.default)(optimizedCodes, function (code) {\n addToMapOfArrays(result, code, patternIdxToConfig[idx]);\n });\n }\n }\n else {\n if (options.ensureOptimizations) {\n (0, utils_1.PRINT_ERROR)(\"\".concat(reg_exp_1.failedOptimizationPrefixMsg) +\n \"\\tTokenType: <\".concat(currTokType.name, \"> is using a custom token pattern without providing parameter.\\n\") +\n \"\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE\");\n }\n canBeOptimized = false;\n }\n return result;\n }, []);\n });\n }\n return {\n emptyGroups: emptyGroups,\n patternIdxToConfig: patternIdxToConfig,\n charCodeToPatternIdxToConfig: charCodeToPatternIdxToConfig,\n hasCustom: hasCustom,\n canBeOptimized: canBeOptimized\n };\n}\nexports.analyzeTokenTypes = analyzeTokenTypes;\nfunction validatePatterns(tokenTypes, validModesNames) {\n var errors = [];\n var missingResult = findMissingPatterns(tokenTypes);\n errors = errors.concat(missingResult.errors);\n var invalidResult = findInvalidPatterns(missingResult.valid);\n var validTokenTypes = invalidResult.valid;\n errors = errors.concat(invalidResult.errors);\n errors = errors.concat(validateRegExpPattern(validTokenTypes));\n errors = errors.concat(findInvalidGroupType(validTokenTypes));\n errors = errors.concat(findModesThatDoNotExist(validTokenTypes, validModesNames));\n errors = errors.concat(findUnreachablePatterns(validTokenTypes));\n return errors;\n}\nexports.validatePatterns = validatePatterns;\nfunction validateRegExpPattern(tokenTypes) {\n var errors = [];\n var withRegExpPatterns = (0, filter_1.default)(tokenTypes, function (currTokType) {\n return (0, isRegExp_1.default)(currTokType[PATTERN]);\n });\n errors = errors.concat(findEndOfInputAnchor(withRegExpPatterns));\n errors = errors.concat(findStartOfInputAnchor(withRegExpPatterns));\n errors = errors.concat(findUnsupportedFlags(withRegExpPatterns));\n errors = errors.concat(findDuplicatePatterns(withRegExpPatterns));\n errors = errors.concat(findEmptyMatchRegExps(withRegExpPatterns));\n return errors;\n}\nfunction findMissingPatterns(tokenTypes) {\n var tokenTypesWithMissingPattern = (0, filter_1.default)(tokenTypes, function (currType) {\n return !(0, has_1.default)(currType, PATTERN);\n });\n var errors = (0, map_1.default)(tokenTypesWithMissingPattern, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- missing static 'PATTERN' property\",\n type: lexer_public_1.LexerDefinitionErrorType.MISSING_PATTERN,\n tokenTypes: [currType]\n };\n });\n var valid = (0, difference_1.default)(tokenTypes, tokenTypesWithMissingPattern);\n return { errors: errors, valid: valid };\n}\nexports.findMissingPatterns = findMissingPatterns;\nfunction findInvalidPatterns(tokenTypes) {\n var tokenTypesWithInvalidPattern = (0, filter_1.default)(tokenTypes, function (currType) {\n var pattern = currType[PATTERN];\n return (!(0, isRegExp_1.default)(pattern) &&\n !(0, isFunction_1.default)(pattern) &&\n !(0, has_1.default)(pattern, \"exec\") &&\n !(0, isString_1.default)(pattern));\n });\n var errors = (0, map_1.default)(tokenTypesWithInvalidPattern, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' can only be a RegExp, a\" +\n \" Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.\",\n type: lexer_public_1.LexerDefinitionErrorType.INVALID_PATTERN,\n tokenTypes: [currType]\n };\n });\n var valid = (0, difference_1.default)(tokenTypes, tokenTypesWithInvalidPattern);\n return { errors: errors, valid: valid };\n}\nexports.findInvalidPatterns = findInvalidPatterns;\nvar end_of_input = /[^\\\\][$]/;\nfunction findEndOfInputAnchor(tokenTypes) {\n var EndAnchorFinder = /** @class */ (function (_super) {\n __extends(EndAnchorFinder, _super);\n function EndAnchorFinder() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.found = false;\n return _this;\n }\n EndAnchorFinder.prototype.visitEndAnchor = function (node) {\n this.found = true;\n };\n return EndAnchorFinder;\n }(regexp_to_ast_1.BaseRegExpVisitor));\n var invalidRegex = (0, filter_1.default)(tokenTypes, function (currType) {\n var pattern = currType.PATTERN;\n try {\n var regexpAst = (0, reg_exp_parser_1.getRegExpAst)(pattern);\n var endAnchorVisitor = new EndAnchorFinder();\n endAnchorVisitor.visit(regexpAst);\n return endAnchorVisitor.found;\n }\n catch (e) {\n // old behavior in case of runtime exceptions with regexp-to-ast.\n /* istanbul ignore next - cannot ensure an error in regexp-to-ast*/\n return end_of_input.test(pattern.source);\n }\n });\n var errors = (0, map_1.default)(invalidRegex, function (currType) {\n return {\n message: \"Unexpected RegExp Anchor Error:\\n\" +\n \"\\tToken Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' cannot contain end of input anchor '$'\\n\" +\n \"\\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\" +\n \"\\tfor details.\",\n type: lexer_public_1.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nexports.findEndOfInputAnchor = findEndOfInputAnchor;\nfunction findEmptyMatchRegExps(tokenTypes) {\n var matchesEmptyString = (0, filter_1.default)(tokenTypes, function (currType) {\n var pattern = currType.PATTERN;\n return pattern.test(\"\");\n });\n var errors = (0, map_1.default)(matchesEmptyString, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' must not match an empty string\",\n type: lexer_public_1.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nexports.findEmptyMatchRegExps = findEmptyMatchRegExps;\nvar start_of_input = /[^\\\\[][\\^]|^\\^/;\nfunction findStartOfInputAnchor(tokenTypes) {\n var StartAnchorFinder = /** @class */ (function (_super) {\n __extends(StartAnchorFinder, _super);\n function StartAnchorFinder() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.found = false;\n return _this;\n }\n StartAnchorFinder.prototype.visitStartAnchor = function (node) {\n this.found = true;\n };\n return StartAnchorFinder;\n }(regexp_to_ast_1.BaseRegExpVisitor));\n var invalidRegex = (0, filter_1.default)(tokenTypes, function (currType) {\n var pattern = currType.PATTERN;\n try {\n var regexpAst = (0, reg_exp_parser_1.getRegExpAst)(pattern);\n var startAnchorVisitor = new StartAnchorFinder();\n startAnchorVisitor.visit(regexpAst);\n return startAnchorVisitor.found;\n }\n catch (e) {\n // old behavior in case of runtime exceptions with regexp-to-ast.\n /* istanbul ignore next - cannot ensure an error in regexp-to-ast*/\n return start_of_input.test(pattern.source);\n }\n });\n var errors = (0, map_1.default)(invalidRegex, function (currType) {\n return {\n message: \"Unexpected RegExp Anchor Error:\\n\" +\n \"\\tToken Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' cannot contain start of input anchor '^'\\n\" +\n \"\\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\" +\n \"\\tfor details.\",\n type: lexer_public_1.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nexports.findStartOfInputAnchor = findStartOfInputAnchor;\nfunction findUnsupportedFlags(tokenTypes) {\n var invalidFlags = (0, filter_1.default)(tokenTypes, function (currType) {\n var pattern = currType[PATTERN];\n return pattern instanceof RegExp && (pattern.multiline || pattern.global);\n });\n var errors = (0, map_1.default)(invalidFlags, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' may NOT contain global('g') or multiline('m')\",\n type: lexer_public_1.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nexports.findUnsupportedFlags = findUnsupportedFlags;\n// This can only test for identical duplicate RegExps, not semantically equivalent ones.\nfunction findDuplicatePatterns(tokenTypes) {\n var found = [];\n var identicalPatterns = (0, map_1.default)(tokenTypes, function (outerType) {\n return (0, reduce_1.default)(tokenTypes, function (result, innerType) {\n if (outerType.PATTERN.source === innerType.PATTERN.source &&\n !(0, includes_1.default)(found, innerType) &&\n innerType.PATTERN !== lexer_public_1.Lexer.NA) {\n // this avoids duplicates in the result, each Token Type may only appear in one \"set\"\n // in essence we are creating Equivalence classes on equality relation.\n found.push(innerType);\n result.push(innerType);\n return result;\n }\n return result;\n }, []);\n });\n identicalPatterns = (0, compact_1.default)(identicalPatterns);\n var duplicatePatterns = (0, filter_1.default)(identicalPatterns, function (currIdenticalSet) {\n return currIdenticalSet.length > 1;\n });\n var errors = (0, map_1.default)(duplicatePatterns, function (setOfIdentical) {\n var tokenTypeNames = (0, map_1.default)(setOfIdentical, function (currType) {\n return currType.name;\n });\n var dupPatternSrc = (0, first_1.default)(setOfIdentical).PATTERN;\n return {\n message: \"The same RegExp pattern ->\".concat(dupPatternSrc, \"<-\") +\n \"has been used in all of the following Token Types: \".concat(tokenTypeNames.join(\", \"), \" <-\"),\n type: lexer_public_1.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,\n tokenTypes: setOfIdentical\n };\n });\n return errors;\n}\nexports.findDuplicatePatterns = findDuplicatePatterns;\nfunction findInvalidGroupType(tokenTypes) {\n var invalidTypes = (0, filter_1.default)(tokenTypes, function (clazz) {\n if (!(0, has_1.default)(clazz, \"GROUP\")) {\n return false;\n }\n var group = clazz.GROUP;\n return group !== lexer_public_1.Lexer.SKIPPED && group !== lexer_public_1.Lexer.NA && !(0, isString_1.default)(group);\n });\n var errors = (0, map_1.default)(invalidTypes, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String\",\n type: lexer_public_1.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nexports.findInvalidGroupType = findInvalidGroupType;\nfunction findModesThatDoNotExist(tokenTypes, validModes) {\n var invalidModes = (0, filter_1.default)(tokenTypes, function (clazz) {\n return (clazz.PUSH_MODE !== undefined && !(0, includes_1.default)(validModes, clazz.PUSH_MODE));\n });\n var errors = (0, map_1.default)(invalidModes, function (tokType) {\n var msg = \"Token Type: ->\".concat(tokType.name, \"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->\").concat(tokType.PUSH_MODE, \"<-\") +\n \"which does not exist\";\n return {\n message: msg,\n type: lexer_public_1.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,\n tokenTypes: [tokType]\n };\n });\n return errors;\n}\nexports.findModesThatDoNotExist = findModesThatDoNotExist;\nfunction findUnreachablePatterns(tokenTypes) {\n var errors = [];\n var canBeTested = (0, reduce_1.default)(tokenTypes, function (result, tokType, idx) {\n var pattern = tokType.PATTERN;\n if (pattern === lexer_public_1.Lexer.NA) {\n return result;\n }\n // a more comprehensive validation for all forms of regExps would require\n // deeper regExp analysis capabilities\n if ((0, isString_1.default)(pattern)) {\n result.push({ str: pattern, idx: idx, tokenType: tokType });\n }\n else if ((0, isRegExp_1.default)(pattern) && noMetaChar(pattern)) {\n result.push({ str: pattern.source, idx: idx, tokenType: tokType });\n }\n return result;\n }, []);\n (0, forEach_1.default)(tokenTypes, function (tokType, testIdx) {\n (0, forEach_1.default)(canBeTested, function (_a) {\n var str = _a.str, idx = _a.idx, tokenType = _a.tokenType;\n if (testIdx < idx && testTokenType(str, tokType.PATTERN)) {\n var msg = \"Token: ->\".concat(tokenType.name, \"<- can never be matched.\\n\") +\n \"Because it appears AFTER the Token Type ->\".concat(tokType.name, \"<-\") +\n \"in the lexer's definition.\\n\" +\n \"See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE\";\n errors.push({\n message: msg,\n type: lexer_public_1.LexerDefinitionErrorType.UNREACHABLE_PATTERN,\n tokenTypes: [tokType, tokenType]\n });\n }\n });\n });\n return errors;\n}\nexports.findUnreachablePatterns = findUnreachablePatterns;\nfunction testTokenType(str, pattern) {\n /* istanbul ignore else */\n if ((0, isRegExp_1.default)(pattern)) {\n var regExpArray = pattern.exec(str);\n return regExpArray !== null && regExpArray.index === 0;\n }\n else if ((0, isFunction_1.default)(pattern)) {\n // maintain the API of custom patterns\n return pattern(str, 0, [], {});\n }\n else if ((0, has_1.default)(pattern, \"exec\")) {\n // maintain the API of custom patterns\n return pattern.exec(str, 0, [], {});\n }\n else if (typeof pattern === \"string\") {\n return pattern === str;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nfunction noMetaChar(regExp) {\n //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\n var metaChars = [\n \".\",\n \"\\\\\",\n \"[\",\n \"]\",\n \"|\",\n \"^\",\n \"$\",\n \"(\",\n \")\",\n \"?\",\n \"*\",\n \"+\",\n \"{\"\n ];\n return ((0, find_1.default)(metaChars, function (char) { return regExp.source.indexOf(char) !== -1; }) === undefined);\n}\nfunction addStartOfInput(pattern) {\n var flags = pattern.ignoreCase ? \"i\" : \"\";\n // always wrapping in a none capturing group preceded by '^' to make sure matching can only work on start of input.\n // duplicate/redundant start of input markers have no meaning (/^^^^A/ === /^A/)\n return new RegExp(\"^(?:\".concat(pattern.source, \")\"), flags);\n}\nexports.addStartOfInput = addStartOfInput;\nfunction addStickyFlag(pattern) {\n var flags = pattern.ignoreCase ? \"iy\" : \"y\";\n // always wrapping in a none capturing group preceded by '^' to make sure matching can only work on start of input.\n // duplicate/redundant start of input markers have no meaning (/^^^^A/ === /^A/)\n return new RegExp(\"\".concat(pattern.source), flags);\n}\nexports.addStickyFlag = addStickyFlag;\nfunction performRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) {\n var errors = [];\n // some run time checks to help the end users.\n if (!(0, has_1.default)(lexerDefinition, exports.DEFAULT_MODE)) {\n errors.push({\n message: \"A MultiMode Lexer cannot be initialized without a <\" +\n exports.DEFAULT_MODE +\n \"> property in its definition\\n\",\n type: lexer_public_1.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\n });\n }\n if (!(0, has_1.default)(lexerDefinition, exports.MODES)) {\n errors.push({\n message: \"A MultiMode Lexer cannot be initialized without a <\" +\n exports.MODES +\n \"> property in its definition\\n\",\n type: lexer_public_1.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\n });\n }\n if ((0, has_1.default)(lexerDefinition, exports.MODES) &&\n (0, has_1.default)(lexerDefinition, exports.DEFAULT_MODE) &&\n !(0, has_1.default)(lexerDefinition.modes, lexerDefinition.defaultMode)) {\n errors.push({\n message: \"A MultiMode Lexer cannot be initialized with a \".concat(exports.DEFAULT_MODE, \": <\").concat(lexerDefinition.defaultMode, \">\") +\n \"which does not exist\\n\",\n type: lexer_public_1.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\n });\n }\n if ((0, has_1.default)(lexerDefinition, exports.MODES)) {\n (0, forEach_1.default)(lexerDefinition.modes, function (currModeValue, currModeName) {\n (0, forEach_1.default)(currModeValue, function (currTokType, currIdx) {\n if ((0, isUndefined_1.default)(currTokType)) {\n errors.push({\n message: \"A Lexer cannot be initialized using an undefined Token Type. Mode:\" +\n \"<\".concat(currModeName, \"> at index: <\").concat(currIdx, \">\\n\"),\n type: lexer_public_1.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\n });\n }\n else if ((0, has_1.default)(currTokType, \"LONGER_ALT\")) {\n var longerAlt = (0, isArray_1.default)(currTokType.LONGER_ALT)\n ? currTokType.LONGER_ALT\n : [currTokType.LONGER_ALT];\n (0, forEach_1.default)(longerAlt, function (currLongerAlt) {\n if (!(0, isUndefined_1.default)(currLongerAlt) &&\n !(0, includes_1.default)(currModeValue, currLongerAlt)) {\n errors.push({\n message: \"A MultiMode Lexer cannot be initialized with a longer_alt <\".concat(currLongerAlt.name, \"> on token <\").concat(currTokType.name, \"> outside of mode <\").concat(currModeName, \">\\n\"),\n type: lexer_public_1.LexerDefinitionErrorType.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE\n });\n }\n });\n }\n });\n });\n }\n return errors;\n}\nexports.performRuntimeChecks = performRuntimeChecks;\nfunction performWarningRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) {\n var warnings = [];\n var hasAnyLineBreak = false;\n var allTokenTypes = (0, compact_1.default)((0, flatten_1.default)((0, values_1.default)(lexerDefinition.modes)));\n var concreteTokenTypes = (0, reject_1.default)(allTokenTypes, function (currType) { return currType[PATTERN] === lexer_public_1.Lexer.NA; });\n var terminatorCharCodes = getCharCodes(lineTerminatorCharacters);\n if (trackLines) {\n (0, forEach_1.default)(concreteTokenTypes, function (tokType) {\n var currIssue = checkLineBreaksIssues(tokType, terminatorCharCodes);\n if (currIssue !== false) {\n var message = buildLineBreakIssueMessage(tokType, currIssue);\n var warningDescriptor = {\n message: message,\n type: currIssue.issue,\n tokenType: tokType\n };\n warnings.push(warningDescriptor);\n }\n else {\n // we don't want to attempt to scan if the user explicitly specified the line_breaks option.\n if ((0, has_1.default)(tokType, \"LINE_BREAKS\")) {\n if (tokType.LINE_BREAKS === true) {\n hasAnyLineBreak = true;\n }\n }\n else {\n if ((0, reg_exp_1.canMatchCharCode)(terminatorCharCodes, tokType.PATTERN)) {\n hasAnyLineBreak = true;\n }\n }\n }\n });\n }\n if (trackLines && !hasAnyLineBreak) {\n warnings.push({\n message: \"Warning: No LINE_BREAKS Found.\\n\" +\n \"\\tThis Lexer has been defined to track line and column information,\\n\" +\n \"\\tBut none of the Token Types can be identified as matching a line terminator.\\n\" +\n \"\\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \\n\" +\n \"\\tfor details.\",\n type: lexer_public_1.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS\n });\n }\n return warnings;\n}\nexports.performWarningRuntimeChecks = performWarningRuntimeChecks;\nfunction cloneEmptyGroups(emptyGroups) {\n var clonedResult = {};\n var groupKeys = (0, keys_1.default)(emptyGroups);\n (0, forEach_1.default)(groupKeys, function (currKey) {\n var currGroupValue = emptyGroups[currKey];\n /* istanbul ignore else */\n if ((0, isArray_1.default)(currGroupValue)) {\n clonedResult[currKey] = [];\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n });\n return clonedResult;\n}\nexports.cloneEmptyGroups = cloneEmptyGroups;\n// TODO: refactor to avoid duplication\nfunction isCustomPattern(tokenType) {\n var pattern = tokenType.PATTERN;\n /* istanbul ignore else */\n if ((0, isRegExp_1.default)(pattern)) {\n return false;\n }\n else if ((0, isFunction_1.default)(pattern)) {\n // CustomPatternMatcherFunc - custom patterns do not require any transformations, only wrapping in a RegExp Like object\n return true;\n }\n else if ((0, has_1.default)(pattern, \"exec\")) {\n // ICustomPattern\n return true;\n }\n else if ((0, isString_1.default)(pattern)) {\n return false;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexports.isCustomPattern = isCustomPattern;\nfunction isShortPattern(pattern) {\n if ((0, isString_1.default)(pattern) && pattern.length === 1) {\n return pattern.charCodeAt(0);\n }\n else {\n return false;\n }\n}\nexports.isShortPattern = isShortPattern;\n/**\n * Faster than using a RegExp for default newline detection during lexing.\n */\nexports.LineTerminatorOptimizedTester = {\n // implements /\\n|\\r\\n?/g.test\n test: function (text) {\n var len = text.length;\n for (var i = this.lastIndex; i < len; i++) {\n var c = text.charCodeAt(i);\n if (c === 10) {\n this.lastIndex = i + 1;\n return true;\n }\n else if (c === 13) {\n if (text.charCodeAt(i + 1) === 10) {\n this.lastIndex = i + 2;\n }\n else {\n this.lastIndex = i + 1;\n }\n return true;\n }\n }\n return false;\n },\n lastIndex: 0\n};\nfunction checkLineBreaksIssues(tokType, lineTerminatorCharCodes) {\n if ((0, has_1.default)(tokType, \"LINE_BREAKS\")) {\n // if the user explicitly declared the line_breaks option we will respect their choice\n // and assume it is correct.\n return false;\n }\n else {\n /* istanbul ignore else */\n if ((0, isRegExp_1.default)(tokType.PATTERN)) {\n try {\n // TODO: why is the casting suddenly needed?\n (0, reg_exp_1.canMatchCharCode)(lineTerminatorCharCodes, tokType.PATTERN);\n }\n catch (e) {\n /* istanbul ignore next - to test this we would have to mock to throw an error */\n return {\n issue: lexer_public_1.LexerDefinitionErrorType.IDENTIFY_TERMINATOR,\n errMsg: e.message\n };\n }\n return false;\n }\n else if ((0, isString_1.default)(tokType.PATTERN)) {\n // string literal patterns can always be analyzed to detect line terminator usage\n return false;\n }\n else if (isCustomPattern(tokType)) {\n // custom token types\n return { issue: lexer_public_1.LexerDefinitionErrorType.CUSTOM_LINE_BREAK };\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n }\n}\nfunction buildLineBreakIssueMessage(tokType, details) {\n /* istanbul ignore else */\n if (details.issue === lexer_public_1.LexerDefinitionErrorType.IDENTIFY_TERMINATOR) {\n return (\"Warning: unable to identify line terminator usage in pattern.\\n\" +\n \"\\tThe problem is in the <\".concat(tokType.name, \"> Token Type\\n\") +\n \"\\t Root cause: \".concat(details.errMsg, \".\\n\") +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR\");\n }\n else if (details.issue === lexer_public_1.LexerDefinitionErrorType.CUSTOM_LINE_BREAK) {\n return (\"Warning: A Custom Token Pattern should specify the option.\\n\" +\n \"\\tThe problem is in the <\".concat(tokType.name, \"> Token Type\\n\") +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK\");\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexports.buildLineBreakIssueMessage = buildLineBreakIssueMessage;\nfunction getCharCodes(charsOrCodes) {\n var charCodes = (0, map_1.default)(charsOrCodes, function (numOrString) {\n if ((0, isString_1.default)(numOrString)) {\n return numOrString.charCodeAt(0);\n }\n else {\n return numOrString;\n }\n });\n return charCodes;\n}\nfunction addToMapOfArrays(map, key, value) {\n if (map[key] === undefined) {\n map[key] = [value];\n }\n else {\n map[key].push(value);\n }\n}\nexports.minOptimizationVal = 256;\n/**\n * We are mapping charCode above ASCI (256) into buckets each in the size of 256.\n * This is because ASCI are the most common start chars so each one of those will get its own\n * possible token configs vector.\n *\n * Tokens starting with charCodes \"above\" ASCI are uncommon, so we can \"afford\"\n * to place these into buckets of possible token configs, What we gain from\n * this is avoiding the case of creating an optimization 'charCodeToPatternIdxToConfig'\n * which would contain 10,000+ arrays of small size (e.g unicode Identifiers scenario).\n * Our 'charCodeToPatternIdxToConfig' max size will now be:\n * 256 + (2^16 / 2^8) - 1 === 511\n *\n * note the hack for fast division integer part extraction\n * See: https://stackoverflow.com/a/4228528\n */\nvar charCodeToOptimizedIdxMap = [];\nfunction charCodeToOptimizedIndex(charCode) {\n return charCode < exports.minOptimizationVal\n ? charCode\n : charCodeToOptimizedIdxMap[charCode];\n}\nexports.charCodeToOptimizedIndex = charCodeToOptimizedIndex;\n/**\n * This is a compromise between cold start / hot running performance\n * Creating this array takes ~3ms on a modern machine,\n * But if we perform the computation at runtime as needed the CSS Lexer benchmark\n * performance degrades by ~10%\n *\n * TODO: Perhaps it should be lazy initialized only if a charCode > 255 is used.\n */\nfunction initCharCodeToOptimizedIndexMap() {\n if ((0, isEmpty_1.default)(charCodeToOptimizedIdxMap)) {\n charCodeToOptimizedIdxMap = new Array(65536);\n for (var i = 0; i < 65536; i++) {\n charCodeToOptimizedIdxMap[i] = i > 255 ? 255 + ~~(i / 255) : i;\n }\n }\n}\n//# sourceMappingURL=lexer.js.map","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultLexerErrorProvider = void 0;\nexports.defaultLexerErrorProvider = {\n buildUnableToPopLexerModeMessage: function (token) {\n return \"Unable to pop Lexer Mode after encountering Token ->\".concat(token.image, \"<- The Mode Stack is empty\");\n },\n buildUnexpectedCharactersMessage: function (fullText, startOffset, length, line, column) {\n return (\"unexpected character: ->\".concat(fullText.charAt(startOffset), \"<- at offset: \").concat(startOffset, \",\") + \" skipped \".concat(length, \" characters.\"));\n }\n};\n//# sourceMappingURL=lexer_errors_public.js.map","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attemptInRepetitionRecovery = exports.Recoverable = exports.InRuleRecoveryException = exports.IN_RULE_RECOVERY_EXCEPTION = exports.EOF_FOLLOW_KEY = void 0;\nvar tokens_public_1 = require(\"../../../scan/tokens_public\");\nvar isEmpty_1 = __importDefault(require(\"lodash/isEmpty\"));\nvar dropRight_1 = __importDefault(require(\"lodash/dropRight\"));\nvar flatten_1 = __importDefault(require(\"lodash/flatten\"));\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar find_1 = __importDefault(require(\"lodash/find\"));\nvar has_1 = __importDefault(require(\"lodash/has\"));\nvar includes_1 = __importDefault(require(\"lodash/includes\"));\nvar clone_1 = __importDefault(require(\"lodash/clone\"));\nvar exceptions_public_1 = require(\"../../exceptions_public\");\nvar constants_1 = require(\"../../constants\");\nvar parser_1 = require(\"../parser\");\nexports.EOF_FOLLOW_KEY = {};\nexports.IN_RULE_RECOVERY_EXCEPTION = \"InRuleRecoveryException\";\nvar InRuleRecoveryException = /** @class */ (function (_super) {\n __extends(InRuleRecoveryException, _super);\n function InRuleRecoveryException(message) {\n var _this = _super.call(this, message) || this;\n _this.name = exports.IN_RULE_RECOVERY_EXCEPTION;\n return _this;\n }\n return InRuleRecoveryException;\n}(Error));\nexports.InRuleRecoveryException = InRuleRecoveryException;\n/**\n * This trait is responsible for the error recovery and fault tolerant logic\n */\nvar Recoverable = /** @class */ (function () {\n function Recoverable() {\n }\n Recoverable.prototype.initRecoverable = function (config) {\n this.firstAfterRepMap = {};\n this.resyncFollows = {};\n this.recoveryEnabled = (0, has_1.default)(config, \"recoveryEnabled\")\n ? config.recoveryEnabled // assumes end user provides the correct config value/type\n : parser_1.DEFAULT_PARSER_CONFIG.recoveryEnabled;\n // performance optimization, NOOP will be inlined which\n // effectively means that this optional feature does not exist\n // when not used.\n if (this.recoveryEnabled) {\n this.attemptInRepetitionRecovery = attemptInRepetitionRecovery;\n }\n };\n Recoverable.prototype.getTokenToInsert = function (tokType) {\n var tokToInsert = (0, tokens_public_1.createTokenInstance)(tokType, \"\", NaN, NaN, NaN, NaN, NaN, NaN);\n tokToInsert.isInsertedInRecovery = true;\n return tokToInsert;\n };\n Recoverable.prototype.canTokenTypeBeInsertedInRecovery = function (tokType) {\n return true;\n };\n Recoverable.prototype.canTokenTypeBeDeletedInRecovery = function (tokType) {\n return true;\n };\n Recoverable.prototype.tryInRepetitionRecovery = function (grammarRule, grammarRuleArgs, lookAheadFunc, expectedTokType) {\n var _this = this;\n // TODO: can the resyncTokenType be cached?\n var reSyncTokType = this.findReSyncTokenType();\n var savedLexerState = this.exportLexerState();\n var resyncedTokens = [];\n var passedResyncPoint = false;\n var nextTokenWithoutResync = this.LA(1);\n var currToken = this.LA(1);\n var generateErrorMessage = function () {\n var previousToken = _this.LA(0);\n // we are preemptively re-syncing before an error has been detected, therefor we must reproduce\n // the error that would have been thrown\n var msg = _this.errorMessageProvider.buildMismatchTokenMessage({\n expected: expectedTokType,\n actual: nextTokenWithoutResync,\n previous: previousToken,\n ruleName: _this.getCurrRuleFullName()\n });\n var error = new exceptions_public_1.MismatchedTokenException(msg, nextTokenWithoutResync, _this.LA(0));\n // the first token here will be the original cause of the error, this is not part of the resyncedTokens property.\n error.resyncedTokens = (0, dropRight_1.default)(resyncedTokens);\n _this.SAVE_ERROR(error);\n };\n while (!passedResyncPoint) {\n // re-synced to a point where we can safely exit the repetition/\n if (this.tokenMatcher(currToken, expectedTokType)) {\n generateErrorMessage();\n return; // must return here to avoid reverting the inputIdx\n }\n else if (lookAheadFunc.call(this)) {\n // we skipped enough tokens so we can resync right back into another iteration of the repetition grammar rule\n generateErrorMessage();\n // recursive invocation in other to support multiple re-syncs in the same top level repetition grammar rule\n grammarRule.apply(this, grammarRuleArgs);\n return; // must return here to avoid reverting the inputIdx\n }\n else if (this.tokenMatcher(currToken, reSyncTokType)) {\n passedResyncPoint = true;\n }\n else {\n currToken = this.SKIP_TOKEN();\n this.addToResyncTokens(currToken, resyncedTokens);\n }\n }\n // we were unable to find a CLOSER point to resync inside the Repetition, reset the state.\n // The parsing exception we were trying to prevent will happen in the NEXT parsing step. it may be handled by\n // \"between rules\" resync recovery later in the flow.\n this.importLexerState(savedLexerState);\n };\n Recoverable.prototype.shouldInRepetitionRecoveryBeTried = function (expectTokAfterLastMatch, nextTokIdx, notStuck) {\n // Edge case of arriving from a MANY repetition which is stuck\n // Attempting recovery in this case could cause an infinite loop\n if (notStuck === false) {\n return false;\n }\n // no need to recover, next token is what we expect...\n if (this.tokenMatcher(this.LA(1), expectTokAfterLastMatch)) {\n return false;\n }\n // error recovery is disabled during backtracking as it can make the parser ignore a valid grammar path\n // and prefer some backtracking path that includes recovered errors.\n if (this.isBackTracking()) {\n return false;\n }\n // if we can perform inRule recovery (single token insertion or deletion) we always prefer that recovery algorithm\n // because if it works, it makes the least amount of changes to the input stream (greedy algorithm)\n //noinspection RedundantIfStatementJS\n if (this.canPerformInRuleRecovery(expectTokAfterLastMatch, this.getFollowsForInRuleRecovery(expectTokAfterLastMatch, nextTokIdx))) {\n return false;\n }\n return true;\n };\n // Error Recovery functionality\n Recoverable.prototype.getFollowsForInRuleRecovery = function (tokType, tokIdxInRule) {\n var grammarPath = this.getCurrentGrammarPath(tokType, tokIdxInRule);\n var follows = this.getNextPossibleTokenTypes(grammarPath);\n return follows;\n };\n Recoverable.prototype.tryInRuleRecovery = function (expectedTokType, follows) {\n if (this.canRecoverWithSingleTokenInsertion(expectedTokType, follows)) {\n var tokToInsert = this.getTokenToInsert(expectedTokType);\n return tokToInsert;\n }\n if (this.canRecoverWithSingleTokenDeletion(expectedTokType)) {\n var nextTok = this.SKIP_TOKEN();\n this.consumeToken();\n return nextTok;\n }\n throw new InRuleRecoveryException(\"sad sad panda\");\n };\n Recoverable.prototype.canPerformInRuleRecovery = function (expectedToken, follows) {\n return (this.canRecoverWithSingleTokenInsertion(expectedToken, follows) ||\n this.canRecoverWithSingleTokenDeletion(expectedToken));\n };\n Recoverable.prototype.canRecoverWithSingleTokenInsertion = function (expectedTokType, follows) {\n var _this = this;\n if (!this.canTokenTypeBeInsertedInRecovery(expectedTokType)) {\n return false;\n }\n // must know the possible following tokens to perform single token insertion\n if ((0, isEmpty_1.default)(follows)) {\n return false;\n }\n var mismatchedTok = this.LA(1);\n var isMisMatchedTokInFollows = (0, find_1.default)(follows, function (possibleFollowsTokType) {\n return _this.tokenMatcher(mismatchedTok, possibleFollowsTokType);\n }) !== undefined;\n return isMisMatchedTokInFollows;\n };\n Recoverable.prototype.canRecoverWithSingleTokenDeletion = function (expectedTokType) {\n if (!this.canTokenTypeBeDeletedInRecovery(expectedTokType)) {\n return false;\n }\n var isNextTokenWhatIsExpected = this.tokenMatcher(this.LA(2), expectedTokType);\n return isNextTokenWhatIsExpected;\n };\n Recoverable.prototype.isInCurrentRuleReSyncSet = function (tokenTypeIdx) {\n var followKey = this.getCurrFollowKey();\n var currentRuleReSyncSet = this.getFollowSetFromFollowKey(followKey);\n return (0, includes_1.default)(currentRuleReSyncSet, tokenTypeIdx);\n };\n Recoverable.prototype.findReSyncTokenType = function () {\n var allPossibleReSyncTokTypes = this.flattenFollowSet();\n // this loop will always terminate as EOF is always in the follow stack and also always (virtually) in the input\n var nextToken = this.LA(1);\n var k = 2;\n while (true) {\n var foundMatch = (0, find_1.default)(allPossibleReSyncTokTypes, function (resyncTokType) {\n var canMatch = (0, tokens_public_1.tokenMatcher)(nextToken, resyncTokType);\n return canMatch;\n });\n if (foundMatch !== undefined) {\n return foundMatch;\n }\n nextToken = this.LA(k);\n k++;\n }\n };\n Recoverable.prototype.getCurrFollowKey = function () {\n // the length is at least one as we always add the ruleName to the stack before invoking the rule.\n if (this.RULE_STACK.length === 1) {\n return exports.EOF_FOLLOW_KEY;\n }\n var currRuleShortName = this.getLastExplicitRuleShortName();\n var currRuleIdx = this.getLastExplicitRuleOccurrenceIndex();\n var prevRuleShortName = this.getPreviousExplicitRuleShortName();\n return {\n ruleName: this.shortRuleNameToFullName(currRuleShortName),\n idxInCallingRule: currRuleIdx,\n inRule: this.shortRuleNameToFullName(prevRuleShortName)\n };\n };\n Recoverable.prototype.buildFullFollowKeyStack = function () {\n var _this = this;\n var explicitRuleStack = this.RULE_STACK;\n var explicitOccurrenceStack = this.RULE_OCCURRENCE_STACK;\n return (0, map_1.default)(explicitRuleStack, function (ruleName, idx) {\n if (idx === 0) {\n return exports.EOF_FOLLOW_KEY;\n }\n return {\n ruleName: _this.shortRuleNameToFullName(ruleName),\n idxInCallingRule: explicitOccurrenceStack[idx],\n inRule: _this.shortRuleNameToFullName(explicitRuleStack[idx - 1])\n };\n });\n };\n Recoverable.prototype.flattenFollowSet = function () {\n var _this = this;\n var followStack = (0, map_1.default)(this.buildFullFollowKeyStack(), function (currKey) {\n return _this.getFollowSetFromFollowKey(currKey);\n });\n return (0, flatten_1.default)(followStack);\n };\n Recoverable.prototype.getFollowSetFromFollowKey = function (followKey) {\n if (followKey === exports.EOF_FOLLOW_KEY) {\n return [tokens_public_1.EOF];\n }\n var followName = followKey.ruleName + followKey.idxInCallingRule + constants_1.IN + followKey.inRule;\n return this.resyncFollows[followName];\n };\n // It does not make any sense to include a virtual EOF token in the list of resynced tokens\n // as EOF does not really exist and thus does not contain any useful information (line/column numbers)\n Recoverable.prototype.addToResyncTokens = function (token, resyncTokens) {\n if (!this.tokenMatcher(token, tokens_public_1.EOF)) {\n resyncTokens.push(token);\n }\n return resyncTokens;\n };\n Recoverable.prototype.reSyncTo = function (tokType) {\n var resyncedTokens = [];\n var nextTok = this.LA(1);\n while (this.tokenMatcher(nextTok, tokType) === false) {\n nextTok = this.SKIP_TOKEN();\n this.addToResyncTokens(nextTok, resyncedTokens);\n }\n // the last token is not part of the error.\n return (0, dropRight_1.default)(resyncedTokens);\n };\n Recoverable.prototype.attemptInRepetitionRecovery = function (prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) {\n // by default this is a NO-OP\n // The actual implementation is with the function(not method) below\n };\n Recoverable.prototype.getCurrentGrammarPath = function (tokType, tokIdxInRule) {\n var pathRuleStack = this.getHumanReadableRuleStack();\n var pathOccurrenceStack = (0, clone_1.default)(this.RULE_OCCURRENCE_STACK);\n var grammarPath = {\n ruleStack: pathRuleStack,\n occurrenceStack: pathOccurrenceStack,\n lastTok: tokType,\n lastTokOccurrence: tokIdxInRule\n };\n return grammarPath;\n };\n Recoverable.prototype.getHumanReadableRuleStack = function () {\n var _this = this;\n return (0, map_1.default)(this.RULE_STACK, function (currShortName) {\n return _this.shortRuleNameToFullName(currShortName);\n });\n };\n return Recoverable;\n}());\nexports.Recoverable = Recoverable;\nfunction attemptInRepetitionRecovery(prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) {\n var key = this.getKeyForAutomaticLookahead(dslMethodIdx, prodOccurrence);\n var firstAfterRepInfo = this.firstAfterRepMap[key];\n if (firstAfterRepInfo === undefined) {\n var currRuleName = this.getCurrRuleFullName();\n var ruleGrammar = this.getGAstProductions()[currRuleName];\n var walker = new nextToksWalker(ruleGrammar, prodOccurrence);\n firstAfterRepInfo = walker.startWalking();\n this.firstAfterRepMap[key] = firstAfterRepInfo;\n }\n var expectTokAfterLastMatch = firstAfterRepInfo.token;\n var nextTokIdx = firstAfterRepInfo.occurrence;\n var isEndOfRule = firstAfterRepInfo.isEndOfRule;\n // special edge case of a TOP most repetition after which the input should END.\n // this will force an attempt for inRule recovery in that scenario.\n if (this.RULE_STACK.length === 1 &&\n isEndOfRule &&\n expectTokAfterLastMatch === undefined) {\n expectTokAfterLastMatch = tokens_public_1.EOF;\n nextTokIdx = 1;\n }\n // We don't have anything to re-sync to...\n // this condition was extracted from `shouldInRepetitionRecoveryBeTried` to act as a type-guard\n if (expectTokAfterLastMatch === undefined || nextTokIdx === undefined) {\n return;\n }\n if (this.shouldInRepetitionRecoveryBeTried(expectTokAfterLastMatch, nextTokIdx, notStuck)) {\n // TODO: performance optimization: instead of passing the original args here, we modify\n // the args param (or create a new one) and make sure the lookahead func is explicitly provided\n // to avoid searching the cache for it once more.\n this.tryInRepetitionRecovery(prodFunc, args, lookaheadFunc, expectTokAfterLastMatch);\n }\n}\nexports.attemptInRepetitionRecovery = attemptInRepetitionRecovery;\n//# sourceMappingURL=recoverable.js.map","\"use strict\";\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};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LLkLookaheadStrategy = void 0;\nvar flatMap_1 = __importDefault(require(\"lodash/flatMap\"));\nvar isEmpty_1 = __importDefault(require(\"lodash/isEmpty\"));\nvar errors_public_1 = require(\"../errors_public\");\nvar parser_1 = require(\"../parser/parser\");\nvar checks_1 = require(\"./checks\");\nvar lookahead_1 = require(\"./lookahead\");\nvar LLkLookaheadStrategy = /** @class */ (function () {\n function LLkLookaheadStrategy(options) {\n var _a;\n this.maxLookahead =\n (_a = options === null || options === void 0 ? void 0 : options.maxLookahead) !== null && _a !== void 0 ? _a : parser_1.DEFAULT_PARSER_CONFIG.maxLookahead;\n }\n LLkLookaheadStrategy.prototype.validate = function (options) {\n var leftRecursionErrors = this.validateNoLeftRecursion(options.rules);\n if ((0, isEmpty_1.default)(leftRecursionErrors)) {\n var emptyAltErrors = this.validateEmptyOrAlternatives(options.rules);\n var ambiguousAltsErrors = this.validateAmbiguousAlternationAlternatives(options.rules, this.maxLookahead);\n var emptyRepetitionErrors = this.validateSomeNonEmptyLookaheadPath(options.rules, this.maxLookahead);\n var allErrors = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], leftRecursionErrors, true), emptyAltErrors, true), ambiguousAltsErrors, true), emptyRepetitionErrors, true);\n return allErrors;\n }\n return leftRecursionErrors;\n };\n LLkLookaheadStrategy.prototype.validateNoLeftRecursion = function (rules) {\n return (0, flatMap_1.default)(rules, function (currTopRule) {\n return (0, checks_1.validateNoLeftRecursion)(currTopRule, currTopRule, errors_public_1.defaultGrammarValidatorErrorProvider);\n });\n };\n LLkLookaheadStrategy.prototype.validateEmptyOrAlternatives = function (rules) {\n return (0, flatMap_1.default)(rules, function (currTopRule) {\n return (0, checks_1.validateEmptyOrAlternative)(currTopRule, errors_public_1.defaultGrammarValidatorErrorProvider);\n });\n };\n LLkLookaheadStrategy.prototype.validateAmbiguousAlternationAlternatives = function (rules, maxLookahead) {\n return (0, flatMap_1.default)(rules, function (currTopRule) {\n return (0, checks_1.validateAmbiguousAlternationAlternatives)(currTopRule, maxLookahead, errors_public_1.defaultGrammarValidatorErrorProvider);\n });\n };\n LLkLookaheadStrategy.prototype.validateSomeNonEmptyLookaheadPath = function (rules, maxLookahead) {\n return (0, checks_1.validateSomeNonEmptyLookaheadPath)(rules, maxLookahead, errors_public_1.defaultGrammarValidatorErrorProvider);\n };\n LLkLookaheadStrategy.prototype.buildLookaheadForAlternation = function (options) {\n return (0, lookahead_1.buildLookaheadFuncForOr)(options.prodOccurrence, options.rule, options.maxLookahead, options.hasPredicates, options.dynamicTokensEnabled, lookahead_1.buildAlternativesLookAheadFunc);\n };\n LLkLookaheadStrategy.prototype.buildLookaheadForOptional = function (options) {\n return (0, lookahead_1.buildLookaheadFuncForOptionalProd)(options.prodOccurrence, options.rule, options.maxLookahead, options.dynamicTokensEnabled, (0, lookahead_1.getProdType)(options.prodType), lookahead_1.buildSingleAlternativeLookaheadFunction);\n };\n return LLkLookaheadStrategy;\n}());\nexports.LLkLookaheadStrategy = LLkLookaheadStrategy;\n//# sourceMappingURL=llk_lookahead.js.map","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Direction;\n(function (Direction) {\n Direction[\"Right\"] = \"to right\";\n Direction[\"Left\"] = \"to left\";\n Direction[\"Down\"] = \"to bottom\";\n Direction[\"Up\"] = \"to top\";\n})(Direction = exports.Direction || (exports.Direction = {}));\n","var baseForOwn = require('./_baseForOwn'),\n castFunction = require('./_castFunction');\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, castFunction(iteratee));\n}\n\nmodule.exports = forOwn;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Checkboard = undefined;\n\nvar _extends = Object.assign || 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; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _checkboard = require('../../helpers/checkboard');\n\nvar checkboard = _interopRequireWildcard(_checkboard);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Checkboard = exports.Checkboard = function Checkboard(_ref) {\n var white = _ref.white,\n grey = _ref.grey,\n size = _ref.size,\n renderers = _ref.renderers,\n borderRadius = _ref.borderRadius,\n boxShadow = _ref.boxShadow,\n children = _ref.children;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n grid: {\n borderRadius: borderRadius,\n boxShadow: boxShadow,\n absolute: '0px 0px 0px 0px',\n background: 'url(' + checkboard.get(white, grey, size, renderers.canvas) + ') center left'\n }\n }\n });\n return (0, _react.isValidElement)(children) ? _react2.default.cloneElement(children, _extends({}, children.props, { style: _extends({}, children.props.style, styles.grid) })) : _react2.default.createElement('div', { style: styles.grid });\n};\n\nCheckboard.defaultProps = {\n size: 8,\n white: 'transparent',\n grey: 'rgba(0,0,0,.08)',\n renderers: {}\n};\n\nexports.default = Checkboard;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || 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; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\t_createClass(AutosizeInput, null, [{\n\t\tkey: 'getDerivedStateFromProps',\n\t\tvalue: function getDerivedStateFromProps(props, state) {\n\t\t\tvar id = props.id;\n\n\t\t\treturn id !== state.prevId ? { inputId: id || generateId(), prevId: id } : null;\n\t\t}\n\t}]);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId(),\n\t\t\tprevId: props.id\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for consistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\nVERT_IN vec2 a_uv;\\n\\nVERT_OUT vec2 vUv;\\n\\nvoid main() {\\n\\n vUv = 0.5 * a_uv + vec2(0.5);\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform sampler2D u_text_diffuse;\\n\\nFRAG_IN vec2 vUv;\\n\\nFRAG_DEF_OUT\\n\\nvoid main() {\\n\\n vec4 texel = SAMPLER2D(u_text_diffuse, vUv);\\n\\n vec3 color = texel.xyz;\\n float alpha = 1.0;\\n\\n if (texel.w == 0.0) {\\n alpha = 0.0;\\n } else {\\n color /= texel.w;\\n }\\n\\n FRAG_OUT = vec4(color, alpha);\\n\\n}\\n\"","const doNothing = () => undefined;\n/**\n * Creates a new promise and exposes its resolver function.\n * Use with care!\n */\nexport function createPromiseWithResolver() {\n let alreadyResolved = false;\n let resolvedTo;\n let resolver = doNothing;\n const promise = new Promise(resolve => {\n if (alreadyResolved) {\n resolve(resolvedTo);\n }\n else {\n resolver = resolve;\n }\n });\n const exposedResolver = (value) => {\n alreadyResolved = true;\n resolvedTo = value;\n resolver(resolvedTo);\n };\n return [promise, exposedResolver];\n}\n","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\nVERT_IN vec2 a_uv;\\n\\nVERT_OUT vec2 vUv;\\n\\nvoid main() {\\n\\n vUv = 0.5 * a_uv + vec2(0.5);\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform sampler2D u_text_diffuse;\\n\\nFRAG_IN vec2 vUv;\\n\\nFRAG_DEF_OUT\\n\\nvoid main() {\\n\\n vec4 texel = SAMPLER2D(u_text_diffuse, vUv);\\n\\n FRAG_OUT = texel;\\n\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\n\\nVERT_OUT vec2 vUv;\\n\\nvoid main() {\\n\\n vUv = 0.5 * vec2(a_position.xy) + vec2(0.5);\\n\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform sampler2D u_text_depth;\\nuniform mat4 u_from_proj_matrix_inv;\\nuniform mat4 u_to_proj_matrix;\\n\\nFRAG_IN vec2 vUv;\\n\\nFRAG_DEF_OUT\\n\\nvoid main() {\\n\\n float old_depth = SAMPLER2D(u_text_depth, vUv).r;\\n vec4 viewPoint = u_from_proj_matrix_inv * vec4(vec2(1.0) + 0.5 * vUv, 2.0 * old_depth - 1.0, 1.0);\\n viewPoint.xyz /= viewPoint.w;\\n\\n vec4 projectedPoint = u_to_proj_matrix * vec4(viewPoint.xyz, 1.0);\\n projectedPoint.xyz /= projectedPoint.w;\\n float new_depth = 0.5 * (projectedPoint.z + 1.0);\\n\\n DEPTH_OUT = old_depth == 1.0 ? 1.0 : new_depth;\\n // NOTE: Safari doesn't work properly without writing to the color buffer\\n FRAG_OUT = vec4(0.0);\\n\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\n\\nuniform mat4 u_model_matrix;\\nuniform mat4 u_view_proj_matrix;\\n\\nVERT_OUT vec2 v_uv;\\n\\nvoid main() {\\n\\n v_uv = a_position.xy;\\n\\n vec4 pos = u_model_matrix * vec4(a_position, 1.0);\\n\\n gl_Position = u_view_proj_matrix * pos;\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform vec4 u_diffuse;\\nuniform vec3 u_backface_color;\\n#if BLUR_TEXTURE\\nuniform sampler2D tDiffuse;\\nuniform vec2 u_texel_size;\\n#endif\\n\\nFRAG_IN vec2 v_uv;\\n\\nFRAG_DEF_OUT\\n\\nvoid main() {\\n vec4 color = vec4(0.0);\\n const vec2 mid = vec2(0.0);\\n const float maxR = 0.5;\\n\\n float R = distance(v_uv, mid);\\n\\n#if STANDARD_DERIVATIVES\\n float delta = fwidth(R);\\n#else\\n float delta = 0.1 * R;\\n#endif\\n\\n float factor = 1.0 - smoothstep(maxR - delta, maxR + delta, R);\\n#if BLUR_TEXTURE\\n vec2 texCoords = gl_FragCoord.xy * u_texel_size;\\n\\n color = vec4(mix(SAMPLER2D(tDiffuse, texCoords).xyz, u_diffuse.rgb, 0.8), factor);\\n#else\\n if (gl_FrontFacing) {\\n color.rgb = u_diffuse.rgb;\\n } else {\\n color.rgb = u_backface_color;\\n }\\n#endif\\n\\n color.a = u_diffuse.a * factor;\\n\\n FRAG_OUT = color;\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\n\\nVERT_OUT vec2 vUv;\\n\\nvoid main() {\\n\\n vUv = 0.5 * vec2(a_position.xy) + vec2(0.5);\\n\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform sampler2D u_text_diffuse;\\nuniform vec2 u_texel_size;\\n\\nFRAG_IN vec2 vUv;\\n\\nFRAG_DEF_OUT\\n\\nvoid main()\\n{\\n float weight[5];\\n weight[0] = 0.227027; weight[1] = 0.1945946; weight[2] = 0.1216216; weight[3] = 0.054054; weight[4] = 0.016216;\\n\\n vec4 result = SAMPLER2D(u_text_diffuse, vUv) * weight[0];\\n#if HOR_DIR\\n for(int i = 1; i < 5; ++i) {\\n result += SAMPLER2D(u_text_diffuse, vUv + vec2(u_texel_size.x * float(i), 0.0)) * weight[i];\\n result += SAMPLER2D(u_text_diffuse, vUv - vec2(u_texel_size.x * float(i), 0.0)) * weight[i];\\n }\\n#else\\n for(int i = 1; i < 5; ++i) {\\n result += SAMPLER2D(u_text_diffuse, vUv + vec2(0.0, u_texel_size.y * float(i))) * weight[i];\\n result += SAMPLER2D(u_text_diffuse, vUv - vec2(0.0, u_texel_size.y * float(i))) * weight[i];\\n }\\n#endif\\n FRAG_OUT = result;\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\n\\nVERT_OUT vec2 vUv;\\n\\nvoid main() {\\n\\n vUv = 0.5 * vec2(a_position.xy) + vec2(0.5);\\n\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform sampler2D tPrimitiveID;\\n\\nuniform vec3 u_wireframe;\\n\\nuniform vec2 u_texel_size;\\n\\nFRAG_IN vec2 vUv;\\n\\nfloat extractID(const in vec3 color) {\\n const vec3 scale = vec3(65536.0, 256.0, 1.0) / 65793.0;\\n return dot(color, scale);\\n}\\n\\nFRAG_DEF_OUT\\n\\nvoid main() {\\n\\n float texelSizeX = u_texel_size.x;\\n float texelSizeY = u_texel_size.y;\\n\\n vec4 texel = SAMPLER2D(tPrimitiveID, vUv);\\n\\n float x0y0 = extractID(texel.rgb);\\n float x1y1 = extractID(SAMPLER2D(tPrimitiveID, vUv + vec2(texelSizeX, texelSizeY)).rgb);\\n float x1y0 = extractID(SAMPLER2D(tPrimitiveID, vUv + vec2(0.0, texelSizeY)).rgb);\\n float x0y1 = extractID(SAMPLER2D(tPrimitiveID, vUv + vec2(texelSizeX, 0.0)).rgb);\\n\\n float g1 = abs(x0y0 - x1y1);\\n float g2 = abs(x1y0 - x0y1);\\n\\n float grad = g1 + g2;\\n\\n // NOTE: we use noise threshold here\\n float wireframeFactor = step(0.002, grad);\\n\\n FRAG_OUT = vec4(u_wireframe * mix(1.5, 0.8, texel.a), wireframeFactor);\\n\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\n\\nvoid main() {\\n\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform vec4 u_diffuse;\\n\\nFRAG_DEF_OUT\\n\\nvoid main() {\\n\\n FRAG_OUT = vec4(u_diffuse);\\n\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\n\\nVERT_OUT vec2 vUv;\\n\\nvoid main() {\\n\\n vUv = 0.5 * vec2(a_position.xy) + vec2(0.5);\\n\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform vec4 u_diffuse;\\n\\nuniform vec2 u_texel_size;\\nuniform sampler2D u_text_stencil;\\n\\nFRAG_IN vec2 vUv;\\n\\nFRAG_DEF_OUT\\n\\nvoid main() {\\n\\n vec4 grad = vec4(0.0);\\n\\n for (int i = -HALF_WIDTH; i <= HALF_WIDTH; ++i) {\\n vec2 offsetX = float(i) * vec2(0.0, u_texel_size.y);\\n for (int j = -HALF_WIDTH; j <= HALF_WIDTH; ++j) {\\n vec2 offsetY = float(j) * vec2(u_texel_size.x, 0.0);\\n grad += SAMPLER2D(u_text_stencil, vUv + offsetX + offsetY);\\n }\\n }\\n\\n vec4 color = max(sign(grad), 0.0);\\n\\n#if OUTLINE_ONLY\\n color -= SAMPLER2D(u_text_stencil, vUv);\\n#endif\\n\\n FRAG_OUT = vec4(u_diffuse.rgb * color.rgb, color.a * u_diffuse.a);\\n\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\nVERT_OUT vec2 v_uv;\\n\\nvoid main() {\\n v_uv = a_position.xy;\\n gl_Position = vec4(a_position, 1.0);\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nFRAG_IN vec2 v_uv;\\n\\n#if MODE == CIRCLE\\nuniform vec2 u_circle_pos;\\nuniform float u_circle_radius;\\nuniform vec4 u_outline_color;\\nuniform vec2 u_viewport;\\n#endif\\n\\n#if MODE == RECT\\nuniform vec4 u_rectangle;\\n#endif\\n\\nuniform float u_border_width;\\nuniform vec4 u_diffuse;\\n\\nFRAG_DEF_OUT\\n\\nvoid main() {\\n\\n#if MODE == CIRCLE\\n\\n vec2 halfViewport = u_viewport * 0.5; //*0.5 is a narrowing ndc space from [-1; 1] to [0; 1] length\\n vec2 circleDir = (v_uv - u_circle_pos) * halfViewport;\\n float radius = length(circleDir);\\n\\n float halfWidth = u_border_width * 0.5;\\n const float colorMixWidth = 2.0;\\n const float alphaFalloffWidth = 2.0;\\n\\n float distance = radius - u_circle_radius;\\n\\n float colorFactor = smoothstep(-colorMixWidth * 0.5, colorMixWidth * 0.5, distance);\\n vec3 color = mix(u_diffuse.rgb, u_outline_color.rgb, colorFactor);\\n float alpha = smoothstep(-halfWidth, -halfWidth + alphaFalloffWidth, distance) * (1.0 - smoothstep(halfWidth-alphaFalloffWidth, halfWidth, distance)) * u_diffuse.a;\\n\\n FRAG_OUT = vec4(color, alpha);\\n\\n#endif\\n\\n#if MODE == RECT\\n//this implementation is currently unused and should be fixed with pixel-size u_width calculations\\n/*\\n vec2 size = u_width * u_texel_size;\\n\\n vec4 factor1 = 1.0 - step(vec4(u_rectangle.xy, v_uv),\\n vec4(v_uv, u_rectangle.zw));\\n vec4 factor2 = step(vec4(u_rectangle.xy - 2.0 * size, v_uv),\\n vec4(v_uv, u_rectangle.zw + 2.0 * size));\\n float factor = (factor1.x + factor1.y + factor1.z + factor1.w) * (factor2.x * factor2.y * factor2.z * factor2.w);\\n\\n FRAG_OUT = factor * u_diffuse;\\n*/\\n#endif\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\nVERT_OUT vec2 v_uv;\\n\\nvoid main() {\\n v_uv = a_position.xy;\\n gl_Position = vec4(a_position, 1.0);\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nFRAG_IN vec2 v_uv;\\n\\n#if MODE == CIRCLE\\nuniform float u_radius;\\nuniform vec4 u_circle;\\nuniform vec2 u_viewport;\\n#endif\\n\\n#if MODE == RECT\\nuniform vec4 u_rectangle;\\n#endif\\n\\nuniform vec4 u_diffuse;\\n\\nFRAG_DEF_OUT\\n\\nvoid main() {\\n\\n#if MODE == CIRCLE\\n vec2 halfViewport = u_viewport * 0.5; //*0.5 is a narrowing ndc space from [-1; 1] to [0; 1] length\\n\\n vec2 circleDir1 = (v_uv - u_circle.xy) * halfViewport;\\n vec2 circleDir2 = (v_uv - u_circle.zw) * halfViewport;\\n\\n float radius1 = length(circleDir1);\\n float radius2 = length(circleDir2);\\n\\n // circle\\n float mask = step(radius1, u_radius) + step(radius2, u_radius);\\n\\n // rectangle\\n vec4 points = u_circle;\\n points.xy *= halfViewport;\\n points.zw *= halfViewport;\\n\\n vec2 P = v_uv * halfViewport;\\n\\n vec2 A = points.xy;\\n vec2 B = points.zw;\\n vec2 BA = B - A;\\n\\n vec2 C = 0.5 * (A + B);\\n vec2 orth = vec2(-BA.y, BA.x);\\n vec2 D = C + orth;\\n vec2 DC = D - C;\\n\\n float dist1 = abs((B.y - A.y) * P.x - (B.x - A.x) * P.y + B.x * A.y - B.y * A.x);\\n float dist2 = abs((D.y - C.y) * P.x - (D.x - C.x) * P.y + D.x * C.y - D.y * C.x);\\n\\n //Note: we need to add eps in case of equal points C and D, because step(0, 0) will be computed to 1\\n const float eps = 0.0001;\\n mask += step(dist1 + eps, u_radius * length(BA)) * step(dist2 + eps, 0.5 * length(BA) * length(DC));\\n FRAG_OUT = u_diffuse * min(mask, 1.0);\\n#endif\\n\\n#if MODE == RECT\\n\\n vec4 factor = step(vec4(u_rectangle.xy, v_uv),\\n vec4(v_uv, u_rectangle.zw));\\n\\n FRAG_OUT = factor.x * factor.y * factor.z * factor.w * u_diffuse;\\n\\n#endif\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\n\\nVERT_OUT vec2 vUv;\\n\\nvoid main() {\\n\\n vUv = 0.5 * vec2(a_position.xy) + vec2(0.5);\\n\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform sampler2D u_text_mask;\\nuniform sampler2D u_text_diffuse;\\n\\nFRAG_IN vec2 vUv;\\n\\nFRAG_DEF_OUT\\n\\nvec3 rgb2hsv(vec3 c)\\n{\\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\\n\\n float d = q.x - min(q.w, q.y);\\n float e = 1.0e-10;\\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\\n}\\n\\nvoid main() {\\n\\n vec4 texel = SAMPLER2D(u_text_diffuse, vUv);\\n vec4 mask = SAMPLER2D(u_text_mask, vUv);\\n\\n vec3 hsv = rgb2hsv(texel.rgb);\\n\\n if (0.04 < hsv.r && hsv.r < 0.79 ||\\n hsv.g < 0.25 ||\\n hsv.b < 0.4 || 0.7 < hsv.b) {\\n FRAG_OUT = vec4(mix(mask.rgb, texel.rgb, 0.6), mask.a);\\n } else {\\n FRAG_OUT = vec4(mix(mask.rgb, texel.rgb * mask.rgb, 0.6), mask.a);\\n }\\n\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\n\\nVERT_OUT vec2 vUv;\\n\\nvoid main() {\\n\\n vUv = 0.5 * vec2(a_position.xy) + vec2(0.5);\\n\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform sampler2D u_text_diffuse;\\n\\n#if MASKED_MODE\\nuniform sampler2D u_text_mask;\\n#endif\\n\\nFRAG_IN vec2 vUv;\\n\\nFRAG_DEF_OUT\\n\\nuniform vec2 resolution;\\nuniform vec2 u_texel_size;\\n\\n// FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)\\n\\n//----------------------------------------------------------------------------------\\n// File: es3-kepler\\\\FXAA\\\\assets\\\\shaders/FXAA_DefaultES.frag\\n// SDK Version: v3.00\\n// Email: gameworks@nvidia.com\\n// Site: http://developer.nvidia.com/\\n//\\n// Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.\\n//\\n// Redistribution and use in source and binary forms, with or without\\n// modification, are permitted provided that the following conditions\\n// are met:\\n// * Redistributions of source code must retain the above copyright\\n// notice, this list of conditions and the following disclaimer.\\n// * Redistributions in binary form must reproduce the above copyright\\n// notice, this list of conditions and the following disclaimer in the\\n// documentation and/or other materials provided with the distribution.\\n// * Neither the name of NVIDIA CORPORATION nor the names of its\\n// contributors may be used to endorse or promote products derived\\n// from this software without specific prior written permission.\\n//\\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY\\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\\n// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\\n// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\\n// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\\n// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\\n// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n//\\n//----------------------------------------------------------------------------------\\n\\n#define FXAA_PC 1\\n#define FXAA_GLSL_100 1\\n#define FXAA_QUALITY_PRESET 12\\n\\n#define FXAA_GREEN_AS_LUMA 1\\n\\n/*--------------------------------------------------------------------------*/\\n#ifndef FXAA_PC_CONSOLE\\n //\\n // The console algorithm for PC is included\\n // for developers targeting really low spec machines.\\n // Likely better to just run FXAA_PC, and use a really low preset.\\n //\\n #define FXAA_PC_CONSOLE 0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#ifndef FXAA_GLSL_120\\n #define FXAA_GLSL_120 0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#ifndef FXAA_GLSL_130\\n #define FXAA_GLSL_130 0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#ifndef FXAA_HLSL_3\\n #define FXAA_HLSL_3 0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#ifndef FXAA_HLSL_4\\n #define FXAA_HLSL_4 0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#ifndef FXAA_HLSL_5\\n #define FXAA_HLSL_5 0\\n#endif\\n/*==========================================================================*/\\n#ifndef FXAA_GREEN_AS_LUMA\\n //\\n // For those using non-linear color\\n // and either not able to get luma in alpha, or not wanting to\\n // this enables FXAA to run using green as a proxy for luma.\\n // So with this enabled, no need to pack luma in alpha.\\n //\\n // This will turn off AA on anything which lacks some amount of green.\\n // Pure red and blue or combination of only R and B, will get no AA.\\n //\\n // Might want to lower the settings for both\\n // fxaaConsoleEdgeThresholdMin\\n // fxaaQualityEdgeThresholdMin\\n // In order to insure AA does not get turned off on colors\\n // which contain a minor amount of green.\\n //\\n // 1 = On.\\n // 0 = Off.\\n //\\n #define FXAA_GREEN_AS_LUMA 0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#ifndef FXAA_EARLY_EXIT\\n //\\n // Controls algorithm's early exit path.\\n // On PS3 turning this ON adds 2 cycles to the shader.\\n // On 360 turning this OFF adds 10ths of a millisecond to the shader.\\n // Turning this off on console will result in a more blurry image.\\n // So this defaults to on.\\n //\\n // 1 = On.\\n // 0 = Off.\\n //\\n #define FXAA_EARLY_EXIT 1\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#ifndef FXAA_DISCARD\\n //\\n // Only valid for PC OpenGL currently.\\n // Probably will not work when FXAA_GREEN_AS_LUMA = 1.\\n //\\n // 1 = Use discard on pixels which don't need AA.\\n // For APIs which enable concurrent TEX+ROP from same surface.\\n // 0 = Return unchanged color on pixels which don't need AA.\\n //\\n #define FXAA_DISCARD 0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#ifndef FXAA_FAST_PIXEL_OFFSET\\n //\\n // Used for GLSL 120 only.\\n //\\n // 1 = GL API supports fast pixel offsets\\n // 0 = do not use fast pixel offsets\\n //\\n #ifdef GL_EXT_gpu_shader4\\n #define FXAA_FAST_PIXEL_OFFSET 1\\n #endif\\n #ifdef GL_NV_gpu_shader5\\n #define FXAA_FAST_PIXEL_OFFSET 1\\n #endif\\n #ifdef GL_ARB_gpu_shader5\\n #define FXAA_FAST_PIXEL_OFFSET 1\\n #endif\\n #ifndef FXAA_FAST_PIXEL_OFFSET\\n #define FXAA_FAST_PIXEL_OFFSET 0\\n #endif\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#ifndef FXAA_GATHER4_ALPHA\\n //\\n // 1 = API supports gather4 on alpha channel.\\n // 0 = API does not support gather4 on alpha channel.\\n //\\n #if (FXAA_HLSL_5 == 1)\\n #define FXAA_GATHER4_ALPHA 1\\n #endif\\n #ifdef GL_ARB_gpu_shader5\\n #define FXAA_GATHER4_ALPHA 1\\n #endif\\n #ifdef GL_NV_gpu_shader5\\n #define FXAA_GATHER4_ALPHA 1\\n #endif\\n #ifndef FXAA_GATHER4_ALPHA\\n #define FXAA_GATHER4_ALPHA 0\\n #endif\\n#endif\\n\\n\\n/*============================================================================\\n FXAA QUALITY - TUNING KNOBS\\n------------------------------------------------------------------------------\\nNOTE the other tuning knobs are now in the shader function inputs!\\n============================================================================*/\\n#ifndef FXAA_QUALITY_PRESET\\n //\\n // Choose the quality preset.\\n // This needs to be compiled into the shader as it effects code.\\n // Best option to include multiple presets is to\\n // in each shader define the preset, then include this file.\\n //\\n // OPTIONS\\n // -----------------------------------------------------------------------\\n // 10 to 15 - default medium dither (10=fastest, 15=highest quality)\\n // 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)\\n // 39 - no dither, very expensive\\n //\\n // NOTES\\n // -----------------------------------------------------------------------\\n // 12 = slightly faster then FXAA 3.9 and higher edge quality (default)\\n // 13 = about same speed as FXAA 3.9 and better than 12\\n // 23 = closest to FXAA 3.9 visually and performance wise\\n // _ = the lowest digit is directly related to performance\\n // _ = the highest digit is directly related to style\\n //\\n #define FXAA_QUALITY_PRESET 12\\n#endif\\n\\n\\n/*============================================================================\\n\\n FXAA QUALITY - PRESETS\\n\\n============================================================================*/\\n\\n/*============================================================================\\n FXAA QUALITY - MEDIUM DITHER PRESETS\\n============================================================================*/\\n#if (FXAA_QUALITY_PRESET == 10)\\n #define FXAA_QUALITY_PS 3\\n #define FXAA_QUALITY_P0 1.5\\n #define FXAA_QUALITY_P1 3.0\\n #define FXAA_QUALITY_P2 12.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 11)\\n #define FXAA_QUALITY_PS 4\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 3.0\\n #define FXAA_QUALITY_P3 12.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 12)\\n #define FXAA_QUALITY_PS 5\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 4.0\\n #define FXAA_QUALITY_P4 12.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 13)\\n #define FXAA_QUALITY_PS 6\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 2.0\\n #define FXAA_QUALITY_P4 4.0\\n #define FXAA_QUALITY_P5 12.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 14)\\n #define FXAA_QUALITY_PS 7\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 2.0\\n #define FXAA_QUALITY_P4 2.0\\n #define FXAA_QUALITY_P5 4.0\\n #define FXAA_QUALITY_P6 12.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 15)\\n #define FXAA_QUALITY_PS 8\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 2.0\\n #define FXAA_QUALITY_P4 2.0\\n #define FXAA_QUALITY_P5 2.0\\n #define FXAA_QUALITY_P6 4.0\\n #define FXAA_QUALITY_P7 12.0\\n#endif\\n\\n/*============================================================================\\n FXAA QUALITY - LOW DITHER PRESETS\\n============================================================================*/\\n#if (FXAA_QUALITY_PRESET == 20)\\n #define FXAA_QUALITY_PS 3\\n #define FXAA_QUALITY_P0 1.5\\n #define FXAA_QUALITY_P1 2.0\\n #define FXAA_QUALITY_P2 8.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 21)\\n #define FXAA_QUALITY_PS 4\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 8.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 22)\\n #define FXAA_QUALITY_PS 5\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 2.0\\n #define FXAA_QUALITY_P4 8.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 23)\\n #define FXAA_QUALITY_PS 6\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 2.0\\n #define FXAA_QUALITY_P4 2.0\\n #define FXAA_QUALITY_P5 8.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 24)\\n #define FXAA_QUALITY_PS 7\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 2.0\\n #define FXAA_QUALITY_P4 2.0\\n #define FXAA_QUALITY_P5 3.0\\n #define FXAA_QUALITY_P6 8.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 25)\\n #define FXAA_QUALITY_PS 8\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 2.0\\n #define FXAA_QUALITY_P4 2.0\\n #define FXAA_QUALITY_P5 2.0\\n #define FXAA_QUALITY_P6 4.0\\n #define FXAA_QUALITY_P7 8.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 26)\\n #define FXAA_QUALITY_PS 9\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 2.0\\n #define FXAA_QUALITY_P4 2.0\\n #define FXAA_QUALITY_P5 2.0\\n #define FXAA_QUALITY_P6 2.0\\n #define FXAA_QUALITY_P7 4.0\\n #define FXAA_QUALITY_P8 8.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 27)\\n #define FXAA_QUALITY_PS 10\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 2.0\\n #define FXAA_QUALITY_P4 2.0\\n #define FXAA_QUALITY_P5 2.0\\n #define FXAA_QUALITY_P6 2.0\\n #define FXAA_QUALITY_P7 2.0\\n #define FXAA_QUALITY_P8 4.0\\n #define FXAA_QUALITY_P9 8.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 28)\\n #define FXAA_QUALITY_PS 11\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 2.0\\n #define FXAA_QUALITY_P4 2.0\\n #define FXAA_QUALITY_P5 2.0\\n #define FXAA_QUALITY_P6 2.0\\n #define FXAA_QUALITY_P7 2.0\\n #define FXAA_QUALITY_P8 2.0\\n #define FXAA_QUALITY_P9 4.0\\n #define FXAA_QUALITY_P10 8.0\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_QUALITY_PRESET == 29)\\n #define FXAA_QUALITY_PS 12\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.5\\n #define FXAA_QUALITY_P2 2.0\\n #define FXAA_QUALITY_P3 2.0\\n #define FXAA_QUALITY_P4 2.0\\n #define FXAA_QUALITY_P5 2.0\\n #define FXAA_QUALITY_P6 2.0\\n #define FXAA_QUALITY_P7 2.0\\n #define FXAA_QUALITY_P8 2.0\\n #define FXAA_QUALITY_P9 2.0\\n #define FXAA_QUALITY_P10 4.0\\n #define FXAA_QUALITY_P11 8.0\\n#endif\\n\\n/*============================================================================\\n FXAA QUALITY - EXTREME QUALITY\\n============================================================================*/\\n#if (FXAA_QUALITY_PRESET == 39)\\n #define FXAA_QUALITY_PS 12\\n #define FXAA_QUALITY_P0 1.0\\n #define FXAA_QUALITY_P1 1.0\\n #define FXAA_QUALITY_P2 1.0\\n #define FXAA_QUALITY_P3 1.0\\n #define FXAA_QUALITY_P4 1.0\\n #define FXAA_QUALITY_P5 1.5\\n #define FXAA_QUALITY_P6 2.0\\n #define FXAA_QUALITY_P7 2.0\\n #define FXAA_QUALITY_P8 2.0\\n #define FXAA_QUALITY_P9 2.0\\n #define FXAA_QUALITY_P10 4.0\\n #define FXAA_QUALITY_P11 8.0\\n#endif\\n\\n\\n\\n/*============================================================================\\n\\n API PORTING\\n\\n============================================================================*/\\n#if (FXAA_GLSL_100 == 1) || (FXAA_GLSL_120 == 1) || (FXAA_GLSL_130 == 1)\\n #define FxaaBool bool\\n #define FxaaDiscard discard\\n #define FxaaFloat float\\n #define FxaaFloat2 vec2\\n #define FxaaFloat3 vec3\\n #define FxaaFloat4 vec4\\n #define FxaaHalf float\\n #define FxaaHalf2 vec2\\n #define FxaaHalf3 vec3\\n #define FxaaHalf4 vec4\\n #define FxaaInt2 ivec2\\n #define FxaaSat(x) clamp(x, 0.0, 1.0)\\n #define FxaaTex sampler2D\\n#else\\n #define FxaaBool bool\\n #define FxaaDiscard clip(-1)\\n #define FxaaFloat float\\n #define FxaaFloat2 float2\\n #define FxaaFloat3 float3\\n #define FxaaFloat4 float4\\n #define FxaaHalf half\\n #define FxaaHalf2 half2\\n #define FxaaHalf3 half3\\n #define FxaaHalf4 half4\\n #define FxaaSat(x) saturate(x)\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_GLSL_100 == 1)\\n #define FxaaTexTop(t, p) SAMPLER2D(t, p, 0.0)\\n #define FxaaTexOff(t, p, o, r) SAMPLER2D(t, p + (o * r), 0.0)\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_GLSL_120 == 1)\\n // Requires\\n // #version 120\\n // And at least\\n // #extension GL_EXT_gpu_shader4 : enable\\n // (or set FXAA_FAST_PIXEL_OFFSET 1 to work like DX9)\\n #define FxaaTexTop(t, p) SAMPLER2DLod(t, p, 0.0)\\n #if (FXAA_FAST_PIXEL_OFFSET == 1)\\n #define FxaaTexOff(t, p, o, r) SAMPLER2DLodOffset(t, p, 0.0, o)\\n #else\\n #define FxaaTexOff(t, p, o, r) SAMPLER2DLod(t, p + (o * r), 0.0)\\n #endif\\n #if (FXAA_GATHER4_ALPHA == 1)\\n // use #extension GL_ARB_gpu_shader5 : enable\\n #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)\\n #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)\\n #define FxaaTexGreen4(t, p) textureGather(t, p, 1)\\n #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)\\n #endif\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_GLSL_130 == 1)\\n // Requires \\\\\\\"#version 130\\\\\\\" or better\\n #define FxaaTexTop(t, p) textureLod(t, p, 0.0)\\n #define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)\\n #if (FXAA_GATHER4_ALPHA == 1)\\n // use #extension GL_ARB_gpu_shader5 : enable\\n #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)\\n #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)\\n #define FxaaTexGreen4(t, p) textureGather(t, p, 1)\\n #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)\\n #endif\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_HLSL_3 == 1)\\n #define FxaaInt2 float2\\n #define FxaaTex sampler2D\\n #define FxaaTexTop(t, p) tex2Dlod(t, float4(p, 0.0, 0.0))\\n #define FxaaTexOff(t, p, o, r) tex2Dlod(t, float4(p + (o * r), 0, 0))\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_HLSL_4 == 1)\\n #define FxaaInt2 int2\\n struct FxaaTex { SamplerState smpl; Texture2D tex; };\\n #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)\\n #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)\\n#endif\\n/*--------------------------------------------------------------------------*/\\n#if (FXAA_HLSL_5 == 1)\\n #define FxaaInt2 int2\\n struct FxaaTex { SamplerState smpl; Texture2D tex; };\\n #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)\\n #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)\\n #define FxaaTexAlpha4(t, p) t.tex.GatherAlpha(t.smpl, p)\\n #define FxaaTexOffAlpha4(t, p, o) t.tex.GatherAlpha(t.smpl, p, o)\\n #define FxaaTexGreen4(t, p) t.tex.GatherGreen(t.smpl, p)\\n #define FxaaTexOffGreen4(t, p, o) t.tex.GatherGreen(t.smpl, p, o)\\n#endif\\n\\n\\n/*============================================================================\\n GREEN AS LUMA OPTION SUPPORT FUNCTION\\n============================================================================*/\\n#if (FXAA_GREEN_AS_LUMA == 0)\\n FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.w; }\\n#else\\n FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }\\n#endif\\n\\n\\n\\n\\n/*============================================================================\\n\\n FXAA3 QUALITY - PC\\n\\n============================================================================*/\\n#if (FXAA_PC == 1)\\n/*--------------------------------------------------------------------------*/\\nFxaaFloat4 FxaaPixelShader(\\n //\\n // Use noperspective interpolation here (turn off perspective interpolation).\\n // {xy} = center of pixel\\n FxaaFloat2 pos,\\n //\\n // Used only for FXAA Console, and not used on the 360 version.\\n // Use noperspective interpolation here (turn off perspective interpolation).\\n // {xy_} = upper left of pixel\\n // {_zw} = lower right of pixel\\n FxaaFloat4 fxaaConsolePosPos,\\n //\\n // Input color texture.\\n // {rgb_} = color in linear or perceptual color space\\n // if (FXAA_GREEN_AS_LUMA == 0)\\n // {__a} = luma in perceptual color space (not linear)\\n FxaaTex tex,\\n //\\n // Only used on the optimized 360 version of FXAA Console.\\n // For everything but 360, just use the same input here as for \\\\\\\"tex\\\\\\\".\\n // For 360, same texture, just alias with a 2nd sampler.\\n // This sampler needs to have an exponent bias of -1.\\n FxaaTex fxaaConsole360TexExpBiasNegOne,\\n //\\n // Only used on the optimized 360 version of FXAA Console.\\n // For everything but 360, just use the same input here as for \\\\\\\"tex\\\\\\\".\\n // For 360, same texture, just alias with a 3nd sampler.\\n // This sampler needs to have an exponent bias of -2.\\n FxaaTex fxaaConsole360TexExpBiasNegTwo,\\n //\\n // Only used on FXAA Quality.\\n // This must be from a constant/uniform.\\n // {x_} = 1.0/screenWidthInPixels\\n // {_y} = 1.0/screenHeightInPixels\\n FxaaFloat2 fxaaQualityRcpFrame,\\n //\\n // Only used on FXAA Console.\\n // This must be from a constant/uniform.\\n // This effects sub-pixel AA quality and inversely sharpness.\\n // Where N ranges between\\n // N = 0.50 (default)\\n // N = 0.33 (sharper)\\n // {x__} = -N/screenWidthInPixels\\n // {_y_} = -N/screenHeightInPixels\\n // {_z_} = N/screenWidthInPixels\\n // {__w} = N/screenHeightInPixels\\n FxaaFloat4 fxaaConsoleRcpFrameOpt,\\n //\\n // Only used on FXAA Console.\\n // Not used on 360, but used on PS3 and PC.\\n // This must be from a constant/uniform.\\n // {x__} = -2.0/screenWidthInPixels\\n // {_y_} = -2.0/screenHeightInPixels\\n // {_z_} = 2.0/screenWidthInPixels\\n // {__w} = 2.0/screenHeightInPixels\\n FxaaFloat4 fxaaConsoleRcpFrameOpt2,\\n //\\n // Only used on FXAA Console.\\n // Only used on 360 in place of fxaaConsoleRcpFrameOpt2.\\n // This must be from a constant/uniform.\\n // {x__} = 8.0/screenWidthInPixels\\n // {_y_} = 8.0/screenHeightInPixels\\n // {_z_} = -4.0/screenWidthInPixels\\n // {__w} = -4.0/screenHeightInPixels\\n FxaaFloat4 fxaaConsole360RcpFrameOpt2,\\n //\\n // Only used on FXAA Quality.\\n // This used to be the FXAA_QUALITY_SUBPIX define.\\n // It is here now to allow easier tuning.\\n // Choose the amount of sub-pixel aliasing removal.\\n // This can effect sharpness.\\n // 1.00 - upper limit (softer)\\n // 0.75 - default amount of filtering\\n // 0.50 - lower limit (sharper, less sub-pixel aliasing removal)\\n // 0.25 - almost off\\n // 0.00 - completely off\\n FxaaFloat fxaaQualitySubpix,\\n //\\n // Only used on FXAA Quality.\\n // This used to be the FXAA_QUALITY_EDGE_THRESHOLD define.\\n // It is here now to allow easier tuning.\\n // The minimum amount of local contrast required to apply algorithm.\\n // 0.333 - too little (faster)\\n // 0.250 - low quality\\n // 0.166 - default\\n // 0.125 - high quality\\n // 0.063 - overkill (slower)\\n FxaaFloat fxaaQualityEdgeThreshold,\\n //\\n // Only used on FXAA Quality.\\n // This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define.\\n // It is here now to allow easier tuning.\\n // Trims the algorithm from processing darks.\\n // 0.0833 - upper limit (default, the start of visible unfiltered edges)\\n // 0.0625 - high quality (faster)\\n // 0.0312 - visible limit (slower)\\n // Special notes when using FXAA_GREEN_AS_LUMA\\n // Likely want to set this to zero.\\n // As colors that are mostly not-green\\n // will appear very dark in the green channel!\\n // Tune by looking at mostly non-green content\\n // then start at zero and increase until aliasing is a problem.\\n FxaaFloat fxaaQualityEdgeThresholdMin,\\n //\\n // Only used on FXAA Console.\\n // This used to be the FXAA_CONSOLE_EDGE_SHARPNESS define.\\n // It is here now to allow easier tuning.\\n // This does not effect PS3, as this needs to be compiled in.\\n // Use FXAA_CONSOLE_PS3_EDGE_SHARPNESS for PS3.\\n // Due to the PS3 being ALU bound\\n // there are only three safe values here: 2 and 4 and 8.\\n // These options use the shaders ability to a free *|/ by 2|4|8.\\n // For all other platforms can be a non-power of two.\\n // 8.0 is sharper (default!!!)\\n // 4.0 is softer\\n // 2.0 is really soft (good only for vector graphics inputs)\\n FxaaFloat fxaaConsoleEdgeSharpness,\\n //\\n // Only used on FXAA Console.\\n // This used to be the FXAA_CONSOLE_EDGE_THRESHOLD define.\\n // It is here now to allow easier tuning.\\n // This does not effect PS3, as this needs to be compiled in.\\n // Use FXAA_CONSOLE_PS3_EDGE_THRESHOLD for PS3.\\n // Due to the PS3 being ALU bound\\n // there are only two safe values here: 1/4 and 1/8.\\n // These options use the shaders ability to a free *|/ by 2|4|8.\\n // The console setting has a different mapping than the quality setting.\\n // Other platforms can use other values.\\n // 0.125 leaves less aliasing, but is softer (default!!!)\\n // 0.25 leaves more aliasing, and is sharper\\n FxaaFloat fxaaConsoleEdgeThreshold,\\n //\\n // Only used on FXAA Console.\\n // This used to be the FXAA_CONSOLE_EDGE_THRESHOLD_MIN define.\\n // It is here now to allow easier tuning.\\n // Trims the algorithm from processing darks.\\n // The console setting has a different mapping than the quality setting.\\n // This only applies when FXAA_EARLY_EXIT is 1.\\n // This does not apply to PS3\\n // PS3 was simplified to avoid more shader instructions.\\n // 0.06 - faster but more aliasing in darks\\n // 0.05 - default\\n // 0.04 - slower and less aliasing in darks\\n // Special notes when using FXAA_GREEN_AS_LUMA\\n // Likely want to set this to zero.\\n // As colors that are mostly not-green\\n // will appear very dark in the green channel!\\n // Tune by looking at mostly non-green content\\n // then start at zero and increase until aliasing is a problem.\\n FxaaFloat fxaaConsoleEdgeThresholdMin,\\n //\\n // Extra constants for 360 FXAA Console only.\\n // Use zeros or anything else for other platforms.\\n // These must be in physical constant registers and NOT immediates.\\n // Immediates will result in compiler un-optimizing.\\n // {xyzw} = float4(1.0, -1.0, 0.25, -0.25)\\n FxaaFloat4 fxaaConsole360ConstDir\\n) {\\n/*--------------------------------------------------------------------------*/\\n FxaaFloat2 posM;\\n posM.x = pos.x;\\n posM.y = pos.y;\\n #if (FXAA_GATHER4_ALPHA == 1)\\n #if (FXAA_DISCARD == 0)\\n FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);\\n #if (FXAA_GREEN_AS_LUMA == 0)\\n #define lumaM rgbyM.w\\n #else\\n #define lumaM rgbyM.y\\n #endif\\n #endif\\n #if (FXAA_GREEN_AS_LUMA == 0)\\n FxaaFloat4 luma4A = FxaaTexAlpha4(tex, posM);\\n FxaaFloat4 luma4B = FxaaTexOffAlpha4(tex, posM, FxaaInt2(-1, -1));\\n #else\\n FxaaFloat4 luma4A = FxaaTexGreen4(tex, posM);\\n FxaaFloat4 luma4B = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));\\n #endif\\n #if (FXAA_DISCARD == 1)\\n #define lumaM luma4A.w\\n #endif\\n #define lumaE luma4A.z\\n #define lumaS luma4A.x\\n #define lumaSE luma4A.y\\n #define lumaNW luma4B.w\\n #define lumaN luma4B.z\\n #define lumaW luma4B.x\\n #else\\n FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);\\n #if (FXAA_GREEN_AS_LUMA == 0)\\n #define lumaM rgbyM.w\\n #else\\n #define lumaM rgbyM.y\\n #endif\\n #if (FXAA_GLSL_100 == 1)\\n FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 0.0, 1.0), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0, 0.0), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 0.0,-1.0), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0, 0.0), fxaaQualityRcpFrame.xy));\\n #else\\n FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));\\n #endif\\n #endif\\n/*--------------------------------------------------------------------------*/\\n FxaaFloat maxSM = max(lumaS, lumaM);\\n FxaaFloat minSM = min(lumaS, lumaM);\\n FxaaFloat maxESM = max(lumaE, maxSM);\\n FxaaFloat minESM = min(lumaE, minSM);\\n FxaaFloat maxWN = max(lumaN, lumaW);\\n FxaaFloat minWN = min(lumaN, lumaW);\\n FxaaFloat rangeMax = max(maxWN, maxESM);\\n FxaaFloat rangeMin = min(minWN, minESM);\\n FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;\\n FxaaFloat range = rangeMax - rangeMin;\\n FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);\\n FxaaBool earlyExit = range < rangeMaxClamped;\\n/*--------------------------------------------------------------------------*/\\n if(earlyExit)\\n #if (FXAA_DISCARD == 1)\\n FxaaDiscard;\\n #else\\n return rgbyM;\\n #endif\\n/*--------------------------------------------------------------------------*/\\n #if (FXAA_GATHER4_ALPHA == 0)\\n #if (FXAA_GLSL_100 == 1)\\n FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0,-1.0), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0, 1.0), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0,-1.0), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0, 1.0), fxaaQualityRcpFrame.xy));\\n #else\\n FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));\\n #endif\\n #else\\n FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(1, -1), fxaaQualityRcpFrame.xy));\\n FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));\\n #endif\\n/*--------------------------------------------------------------------------*/\\n FxaaFloat lumaNS = lumaN + lumaS;\\n FxaaFloat lumaWE = lumaW + lumaE;\\n FxaaFloat subpixRcpRange = 1.0/range;\\n FxaaFloat subpixNSWE = lumaNS + lumaWE;\\n FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;\\n FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;\\n/*--------------------------------------------------------------------------*/\\n FxaaFloat lumaNESE = lumaNE + lumaSE;\\n FxaaFloat lumaNWNE = lumaNW + lumaNE;\\n FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;\\n FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;\\n/*--------------------------------------------------------------------------*/\\n FxaaFloat lumaNWSW = lumaNW + lumaSW;\\n FxaaFloat lumaSWSE = lumaSW + lumaSE;\\n FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);\\n FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);\\n FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;\\n FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;\\n FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;\\n FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;\\n/*--------------------------------------------------------------------------*/\\n FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;\\n FxaaFloat lengthSign = fxaaQualityRcpFrame.x;\\n FxaaBool horzSpan = edgeHorz >= edgeVert;\\n FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;\\n/*--------------------------------------------------------------------------*/\\n if(!horzSpan) lumaN = lumaW;\\n if(!horzSpan) lumaS = lumaE;\\n if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;\\n FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;\\n/*--------------------------------------------------------------------------*/\\n FxaaFloat gradientN = lumaN - lumaM;\\n FxaaFloat gradientS = lumaS - lumaM;\\n FxaaFloat lumaNN = lumaN + lumaM;\\n FxaaFloat lumaSS = lumaS + lumaM;\\n FxaaBool pairN = abs(gradientN) >= abs(gradientS);\\n FxaaFloat gradient = max(abs(gradientN), abs(gradientS));\\n if(pairN) lengthSign = -lengthSign;\\n FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);\\n/*--------------------------------------------------------------------------*/\\n FxaaFloat2 posB;\\n posB.x = posM.x;\\n posB.y = posM.y;\\n FxaaFloat2 offNP;\\n offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;\\n offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;\\n if(!horzSpan) posB.x += lengthSign * 0.5;\\n if( horzSpan) posB.y += lengthSign * 0.5;\\n/*--------------------------------------------------------------------------*/\\n FxaaFloat2 posN;\\n posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;\\n posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;\\n FxaaFloat2 posP;\\n posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;\\n posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;\\n FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;\\n FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));\\n FxaaFloat subpixE = subpixC * subpixC;\\n FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));\\n/*--------------------------------------------------------------------------*/\\n if(!pairN) lumaNN = lumaSS;\\n FxaaFloat gradientScaled = gradient * 1.0/4.0;\\n FxaaFloat lumaMM = lumaM - lumaNN * 0.5;\\n FxaaFloat subpixF = subpixD * subpixE;\\n FxaaBool lumaMLTZero = lumaMM < 0.0;\\n/*--------------------------------------------------------------------------*/\\n lumaEndN -= lumaNN * 0.5;\\n lumaEndP -= lumaNN * 0.5;\\n FxaaBool doneN = abs(lumaEndN) >= gradientScaled;\\n FxaaBool doneP = abs(lumaEndP) >= gradientScaled;\\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;\\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;\\n FxaaBool doneNP = (!doneN) || (!doneP);\\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;\\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;\\n/*--------------------------------------------------------------------------*/\\n if(doneNP) {\\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\\n doneN = abs(lumaEndN) >= gradientScaled;\\n doneP = abs(lumaEndP) >= gradientScaled;\\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;\\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;\\n doneNP = (!doneN) || (!doneP);\\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;\\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;\\n/*--------------------------------------------------------------------------*/\\n #if (FXAA_QUALITY_PS > 3)\\n if(doneNP) {\\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\\n doneN = abs(lumaEndN) >= gradientScaled;\\n doneP = abs(lumaEndP) >= gradientScaled;\\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;\\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;\\n doneNP = (!doneN) || (!doneP);\\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;\\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;\\n/*--------------------------------------------------------------------------*/\\n #if (FXAA_QUALITY_PS > 4)\\n if(doneNP) {\\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\\n doneN = abs(lumaEndN) >= gradientScaled;\\n doneP = abs(lumaEndP) >= gradientScaled;\\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;\\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;\\n doneNP = (!doneN) || (!doneP);\\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;\\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;\\n/*--------------------------------------------------------------------------*/\\n #if (FXAA_QUALITY_PS > 5)\\n if(doneNP) {\\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\\n doneN = abs(lumaEndN) >= gradientScaled;\\n doneP = abs(lumaEndP) >= gradientScaled;\\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;\\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;\\n doneNP = (!doneN) || (!doneP);\\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;\\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;\\n/*--------------------------------------------------------------------------*/\\n #if (FXAA_QUALITY_PS > 6)\\n if(doneNP) {\\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\\n doneN = abs(lumaEndN) >= gradientScaled;\\n doneP = abs(lumaEndP) >= gradientScaled;\\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;\\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;\\n doneNP = (!doneN) || (!doneP);\\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;\\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;\\n/*--------------------------------------------------------------------------*/\\n #if (FXAA_QUALITY_PS > 7)\\n if(doneNP) {\\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\\n doneN = abs(lumaEndN) >= gradientScaled;\\n doneP = abs(lumaEndP) >= gradientScaled;\\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;\\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;\\n doneNP = (!doneN) || (!doneP);\\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;\\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;\\n/*--------------------------------------------------------------------------*/\\n #if (FXAA_QUALITY_PS > 8)\\n if(doneNP) {\\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\\n doneN = abs(lumaEndN) >= gradientScaled;\\n doneP = abs(lumaEndP) >= gradientScaled;\\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;\\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;\\n doneNP = (!doneN) || (!doneP);\\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;\\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;\\n/*--------------------------------------------------------------------------*/\\n #if (FXAA_QUALITY_PS > 9)\\n if(doneNP) {\\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\\n doneN = abs(lumaEndN) >= gradientScaled;\\n doneP = abs(lumaEndP) >= gradientScaled;\\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;\\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;\\n doneNP = (!doneN) || (!doneP);\\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;\\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;\\n/*--------------------------------------------------------------------------*/\\n #if (FXAA_QUALITY_PS > 10)\\n if(doneNP) {\\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\\n doneN = abs(lumaEndN) >= gradientScaled;\\n doneP = abs(lumaEndP) >= gradientScaled;\\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;\\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;\\n doneNP = (!doneN) || (!doneP);\\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;\\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;\\n/*--------------------------------------------------------------------------*/\\n #if (FXAA_QUALITY_PS > 11)\\n if(doneNP) {\\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\\n doneN = abs(lumaEndN) >= gradientScaled;\\n doneP = abs(lumaEndP) >= gradientScaled;\\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;\\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;\\n doneNP = (!doneN) || (!doneP);\\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;\\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;\\n/*--------------------------------------------------------------------------*/\\n #if (FXAA_QUALITY_PS > 12)\\n if(doneNP) {\\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\\n doneN = abs(lumaEndN) >= gradientScaled;\\n doneP = abs(lumaEndP) >= gradientScaled;\\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;\\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;\\n doneNP = (!doneN) || (!doneP);\\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;\\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;\\n/*--------------------------------------------------------------------------*/\\n }\\n #endif\\n/*--------------------------------------------------------------------------*/\\n }\\n #endif\\n/*--------------------------------------------------------------------------*/\\n }\\n #endif\\n/*--------------------------------------------------------------------------*/\\n }\\n #endif\\n/*--------------------------------------------------------------------------*/\\n }\\n #endif\\n/*--------------------------------------------------------------------------*/\\n }\\n #endif\\n/*--------------------------------------------------------------------------*/\\n }\\n #endif\\n/*--------------------------------------------------------------------------*/\\n }\\n #endif\\n/*--------------------------------------------------------------------------*/\\n }\\n #endif\\n/*--------------------------------------------------------------------------*/\\n }\\n #endif\\n/*--------------------------------------------------------------------------*/\\n }\\n/*--------------------------------------------------------------------------*/\\n FxaaFloat dstN = posM.x - posN.x;\\n FxaaFloat dstP = posP.x - posM.x;\\n if(!horzSpan) dstN = posM.y - posN.y;\\n if(!horzSpan) dstP = posP.y - posM.y;\\n/*--------------------------------------------------------------------------*/\\n FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;\\n FxaaFloat spanLength = (dstP + dstN);\\n FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;\\n FxaaFloat spanLengthRcp = 1.0/spanLength;\\n/*--------------------------------------------------------------------------*/\\n FxaaBool directionN = dstN < dstP;\\n FxaaFloat dst = min(dstN, dstP);\\n FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;\\n FxaaFloat subpixG = subpixF * subpixF;\\n FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;\\n FxaaFloat subpixH = subpixG * fxaaQualitySubpix;\\n/*--------------------------------------------------------------------------*/\\n FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;\\n FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);\\n if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;\\n if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;\\n\\n return FxaaTexTop(tex, posM);\\n\\n // NOTE: we want to blend alpha chanel too\\n //#if (FXAA_DISCARD == 1)\\n // return FxaaTexTop(tex, posM);\\n //#else\\n // return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);\\n //#endif\\n}\\n/*==========================================================================*/\\n#endif\\n\\nvoid main() {\\n\\n#if MASKED_MODE\\n float currentPixelMask = SAMPLER2D(u_text_mask, vUv).a;\\n float neighbourPixelMask = SAMPLER2D(u_text_mask, vUv + vec2(u_texel_size.x, 0.0)).a;\\n bool skipTexel = currentPixelMask > 0.0 && currentPixelMask < 1.0 || neighbourPixelMask > 0.0 && neighbourPixelMask < 1.0;\\n\\n if (skipTexel) {\\n FRAG_OUT = SAMPLER2D(u_text_diffuse, vUv);\\n } else {\\n FRAG_OUT = FxaaPixelShader(\\n vUv,\\n vec4(0.0),\\n u_text_diffuse,\\n u_text_diffuse,\\n u_text_diffuse,\\n u_texel_size,\\n vec4(0.0),\\n vec4(0.0),\\n vec4(0.0),\\n 0.75,\\n 0.166,\\n 0.0833,\\n 0.0,\\n 0.0,\\n 0.0,\\n vec4(0.0)\\n );\\n\\n }\\n#else\\n FRAG_OUT = FxaaPixelShader(\\n vUv,\\n vec4(0.0),\\n u_text_diffuse,\\n u_text_diffuse,\\n u_text_diffuse,\\n u_texel_size,\\n vec4(0.0),\\n vec4(0.0),\\n vec4(0.0),\\n 0.75,\\n 0.166,\\n 0.0833,\\n 0.0,\\n 0.0,\\n 0.0,\\n vec4(0.0)\\n );\\n#endif\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\n\\nVERT_OUT vec2 vUv;\\n\\nvoid main() {\\n\\n vUv = 0.5 * vec2(a_position.xy) + vec2(0.5);\\n\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nFRAG_IN vec2 vUv;\\n\\nuniform float u_darkness;\\nuniform float u_hardness;\\n\\nFRAG_DEF_OUT\\n\\nvoid main() {\\n\\n float inRing = 1.0 - u_darkness;\\n float outRing = (2.0 - u_hardness) * inRing;\\n\\n float dist = distance(vec2(0.5), vUv);\\n float vignette = 1.0 - clamp((outRing - dist) / (outRing - inRing), 0.0, 1.0);\\n\\n FRAG_OUT = vec4(vec3(0.0), max(0.01, vignette));\\n\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\n\\nVERT_OUT vec2 vUv;\\n\\nvoid main() {\\n\\n vUv = 0.5 * vec2(a_position.xy) + vec2(0.5);\\n\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform sampler2D u_text_diffuse;\\n\\nFRAG_IN vec2 vUv;\\n\\nuniform vec3 u_balanceLow;\\nuniform vec3 u_balanceMid;\\nuniform vec3 u_balanceHigh;\\n\\nvec3 colorBalance(const in vec3 color) {\\n float cLen = length(color);\\n if(cLen < 1e-5) {\\n return color;\\n }\\n \\n vec3 luma = vec3(0.299, 0.587, 0.114);\\n float lightness = dot( color, luma );\\n lightness = (1.5 * lightness) / (lightness + 0.5);\\n \\n float a = 0.25;\\n float b = 0.5;\\n float scale = 0.7;\\n \\n vec3 low = u_balanceLow * clamp((lightness - b) / -a + 0.5, 0.0, 1.0);\\n vec3 mid = u_balanceMid * clamp((lightness - b) / a + 0.5, 0.0, 1.0) * clamp((lightness + b - 1.0) / -a + 0.5, 0.0, 1.0);\\n vec3 high = u_balanceHigh * clamp((lightness + b - 1.0) / a + 0.5, 0.0, 1.0);\\n vec3 newColor = max(color + (low + mid + high) * scale, vec3(0.0));\\n \\n float len = length(newColor);\\n return newColor * cLen / len;\\n}\\n\\nFRAG_DEF_OUT\\n\\nvoid main() {\\n vec4 color = SAMPLER2D(u_text_diffuse, vUv);\\n FRAG_OUT = vec4(mix(color.rgb, colorBalance(color.rgb), color.a), color.a);\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\n\\nVERT_OUT vec2 vUv;\\n\\nvoid main() {\\n\\n vUv = 0.5 * vec2(a_position.xy) + vec2(0.5);\\n\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform float u_strength;\\n\\nFRAG_IN vec2 vUv;\\n\\nFRAG_DEF_OUT\\n\\nfloat random(vec2 co) {\\n return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);\\n}\\n\\nvoid main() {\\n vec2 uv = vec2(vUv);\\n uv.x += cos(uv.y * (uv.x + 1.0) * 3.0) * 0.003;\\n uv.y += cos(uv.x * 6.0) * 0.00007;\\n vec3 grain = vec3(random(uv) - 0.5) * u_strength;\\n FRAG_OUT = vec4(grain, 0.0);\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\n\\nVERT_OUT vec2 vUv;\\n\\nvoid main() {\\n\\n vUv = 0.5 * vec2(a_position.xy) + vec2(0.5);\\n\\n gl_Position = vec4(a_position, 1.0);\\n\\n}\\n\"","module.exports = \"precision lowp float;\\n\\nuniform sampler2D tDiffuse;\\nuniform vec2 u_resolution;\\nuniform float u_sharpness;\\n\\nFRAG_IN vec2 vUv;\\n\\nFRAG_DEF_OUT\\n\\nvoid main() {\\n float pW = u_resolution.x;\\n float pH = u_resolution.y;\\n vec4 pixel = SAMPLER2D(tDiffuse, vUv);\\n vec3 diffuseSum = vec3(0.0);\\n diffuseSum = 4.0 * pixel.rgb -\\n ( SAMPLER2D(tDiffuse, vUv + vec2(-pW, -pH)).rgb\\n + SAMPLER2D(tDiffuse, vUv + vec2(-pW, pH)).rgb\\n + SAMPLER2D(tDiffuse, vUv + vec2(pW, -pH)).rgb\\n + SAMPLER2D(tDiffuse, vUv + vec2(pW, pH)).rgb);\\n FRAG_OUT = vec4(pixel.rgb + pixel.a * u_sharpness * diffuseSum, max(0.01, pixel.a));\\n}\\n\"","module.exports = \"precision highp float;\\n\\n#if COLOR_TYPE == BUFFER\\nVERT_IN vec4 a_color;\\n#elif COLOR_TYPE == TEXTURE_UV\\nVERT_IN vec2 a_uv;\\n#elif COLOR_TYPE == DISTANCE_MAP\\nVERT_IN float a_distance;\\n#endif\\n\\n#if SURFELS_MODE && SURFELS_BUFFERED_SIZE\\nVERT_IN float a_size;\\n#endif\\n\\nVERT_IN vec3 a_position;\\n\\n#if SHADING == SMOOTH_SHADING || SURFELS_MODE\\nVERT_IN vec3 a_normal;\\n#endif\\n\\n#if SELECTION\\nVERT_IN float a_selection_mask;\\n#endif\\n\\n#if WIREFRAME\\nVERT_IN float a_vertex_id;\\n#endif\\n\\n#if LOGARITHMIC_DEPTH\\nuniform vec2 u_cam_near_far;\\n#endif\\n\\n#if SURFELS_MODE\\nuniform mat4 u_proj_matrix;\\nuniform vec2 u_viewport;\\nuniform vec3 u_cam_pos;\\nuniform float u_surfels_noise_size;\\n #if SURFELS_FILTERING == BLEND\\nuniform int u_surfels_depth_prepass;\\n #endif\\n#endif\\n\\n#if COLOR_TYPE == TEXTURE_PROJECTION\\nuniform mat4 u_text_proj_matrix;\\n#elif COLOR_TYPE == DISTANCE_MAP\\nuniform vec2 u_distance_search_range;\\nuniform vec2 u_distance_gradient_range;\\nuniform vec2 u_distance_thr_range;\\n#elif COLOR_TYPE == MATCAP\\nuniform mat4 u_view_mat;\\n#endif\\n\\nuniform mat4 u_model_matrix;\\nuniform mat4 u_view_proj_matrix;\\nuniform float u_point_size;\\n\\nVERT_OUT vec3 v_pos_world;\\n\\n#if SHADING == SMOOTH_SHADING || SURFELS_MODE\\nVERT_OUT vec3 v_normal;\\n#endif\\n\\n#if SELECTION\\nVERT_OUT float v_selection_mask;\\n#endif\\n\\n#if WIREFRAME\\n# if WEBGL2\\nflat VERT_OUT float v_vertex_id_flat;\\n# endif\\nVERT_OUT float v_vertex_id_smooth;\\n#endif\\n\\n#if COLOR_CORRECTION\\nVERT_OUT vec3 v_local_pos;\\n#endif\\n\\n#if COLOR_TYPE == BUFFER\\nVERT_OUT vec4 v_color;\\n#elif COLOR_TYPE == TEXTURE_UV || COLOR_TYPE == TEXTURE_PROJECTION\\nVERT_OUT vec2 v_uv;\\n#elif COLOR_TYPE == DISTANCE_MAP\\nVERT_OUT float v_distance;\\n#elif COLOR_TYPE == MATCAP\\nVERT_OUT vec3 v_pos_model_view;\\n#endif\\n\\n#if SURFELS_MODE && SURFELS_FILTERING == CONCURRENT\\nVERT_OUT float surfel_size;\\n#endif\\n\\nvoid main() {\\n\\n vec4 pos = u_model_matrix * vec4(a_position.xyz, 1.0);\\n v_pos_world = pos.xyz;\\n\\n#if COLOR_TYPE == BUFFER\\n v_color = a_color;\\n#elif COLOR_TYPE == TEXTURE_UV\\n v_uv = a_uv;\\n#elif COLOR_TYPE == TEXTURE_PROJECTION\\n vec4 texcoord = u_text_proj_matrix * vec4(a_position, 1.0);\\n v_uv = 0.5 * (vec2(1.0) + texcoord.xy / texcoord.z);\\n#elif COLOR_TYPE == DISTANCE_MAP\\n v_distance = a_distance;\\n#elif COLOR_TYPE == MATCAP\\n v_pos_model_view = (u_view_mat * pos).xyz;\\n#endif\\n\\n#if COLOR_CORRECTION\\n v_local_pos = a_position.xyz;\\n#endif\\n\\n#if SHADING == SMOOTH_SHADING || SURFELS_MODE\\n v_normal = (u_model_matrix * vec4(a_normal, 0.0)).xyz;\\n#endif\\n\\n#if SELECTION\\n v_selection_mask = a_selection_mask;\\n#endif\\n\\n vec4 resulted_position = u_view_proj_matrix * pos;\\n#if SURFELS_MODE && SURFELS_BUFFERED_SIZE\\n float world_point_size = a_size * (step(-a_size, 0.0) - step(a_size, 0.0) * u_surfels_noise_size);\\n float scale = length(u_model_matrix[0]);\\n world_point_size *= scale;\\n float point_size = world_point_size * u_proj_matrix[1][1] * u_viewport.y / resulted_position.w;\\n\\n float angle_quotient = clamp(abs(dot(normalize(v_normal), normalize(v_pos_world - u_cam_pos))) * 2.5, 0.25, 1.0);\\n point_size *= angle_quotient;\\n\\n #if SURFELS_SIZE_CONSTRAINT\\n point_size = min(point_size, 50.0);\\n #endif\\n\\n #if SURFELS_FILTERING == CONCURRENT\\n surfel_size = world_point_size;\\n #endif\\n#else\\n float point_size = u_point_size;\\n\\n #if SURFELS_MODE && SURFELS_FILTERING == CONCURRENT\\n surfel_size = point_size;\\n #endif\\n#endif\\n\\n#if SURFELS_MODE && SURFELS_FILTERING == BLEND\\n if (u_surfels_depth_prepass == 1) {\\n float world_size = point_size / (u_proj_matrix[1][1] * u_viewport.y / resulted_position.w);\\n vec3 view_dir = normalize(pos.xyz - u_cam_pos);\\n \\tpos.xyz += view_dir * world_size;\\n \\tresulted_position = u_view_proj_matrix * pos;\\n }\\n#endif\\n\\n#if SCREEN_SPACE\\n gl_Position = vec4(a_position, 1.0);\\n#else\\n gl_Position = resulted_position;\\n#endif\\n gl_PointSize = point_size;\\n\\n#if WIREFRAME\\n v_vertex_id_smooth = a_vertex_id;\\n# if WEBGL2\\n v_vertex_id_flat = a_vertex_id;\\n# endif\\n#endif\\n\\n#if LOGARITHMIC_DEPTH\\n float near = u_cam_near_far.x;\\n float far = u_cam_near_far.y;\\n\\n gl_Position.z = 2.0 * log2(max(near, gl_Position.w + 1.0)) / log2(far + 1.0) - 1.0;\\n gl_Position.z *= gl_Position.w;\\n#endif\\n\\n}\\n\"","module.exports = \"precision highp float;\\n\\nFRAG_IN vec3 v_pos_world;\\n\\n#if SHADING == SMOOTH_SHADING || SURFELS_MODE\\nFRAG_IN vec3 v_normal;\\n#endif\\n\\n#if SELECTION\\nFRAG_IN float v_selection_mask;\\n#endif\\n\\n#if WIREFRAME\\nFRAG_IN float v_vertex_id_smooth;\\n# if WEBGL2\\nflat FRAG_IN float v_vertex_id_flat;\\n# endif\\n#endif\\n\\n#if COLOR_CORRECTION\\nFRAG_IN vec3 v_local_pos;\\n#endif\\n\\n#if COLOR_TYPE == BUFFER\\nFRAG_IN vec4 v_color;\\n#elif COLOR_TYPE == TEXTURE_UV || COLOR_TYPE == TEXTURE_PROJECTION\\nFRAG_IN vec2 v_uv;\\n#elif COLOR_TYPE == DISTANCE_MAP\\nFRAG_IN float v_distance;\\n#elif COLOR_TYPE == MATCAP\\nFRAG_IN vec3 v_pos_model_view;\\n#endif\\n\\n#if SURFELS_MODE && SURFELS_FILTERING == CONCURRENT\\nFRAG_IN float surfel_size;\\n#endif\\n\\nuniform vec4 u_diffuse;\\nuniform vec3 u_backface_color;\\nuniform vec3 u_cam_pos;\\nuniform vec3 u_reflectivity;\\nuniform int u_enable_linear_color_space;\\nuniform int u_enable_lambert_shading;\\n\\n#if COLOR_TYPE == DISTANCE_MAP\\nuniform vec2 u_distance_search_range;\\nuniform vec2 u_distance_gradient_range;\\nuniform vec2 u_distance_thr_range;\\nuniform vec3 u_undefined_color;\\nuniform vec3 u_thr_color;\\n#endif\\n\\n#if SURFELS_MODE && SURFELS_FILTERING == CONCURRENT\\nuniform mat4 u_proj_matrix;\\n#endif\\n\\n#if LIGHTING\\nuniform vec3 u_specular;\\n #if NUM_LIGHTS > 0\\nuniform vec3 u_light_positions[NUM_LIGHTS];\\nuniform vec3 u_light_colors[NUM_LIGHTS];\\n #endif\\n#endif\\n\\n#if SELECTION\\nuniform vec3 u_selection_color;\\n#endif\\n\\n#if MONOCHROMATIC_COLOR\\nuniform int u_enable_monochromatic;\\n#endif\\n\\n#if COLOR_CORRECTION\\nuniform int u_enable_color_correction;\\nuniform mat4 u_text_color_matrix;\\n#endif\\n\\n#if RGB_DEPTH\\nuniform mat4 u_view_proj_matrix;\\n#endif\\n\\n#if SURFELS_MODE || COLOR_TYPE == MATCAP || WIREFRAME\\nuniform mat4 u_view_mat;\\n#endif\\n\\n#if SURFELS_MODE && COLOR_TYPE == BUFFER\\nuniform float u_object_size;\\n#endif\\n\\n#if OBJECT_ID\\nuniform int u_object_id;\\n#endif\\n\\n#if DEBUG_CHUNKS\\nuniform vec3 u_chunk_color;\\n#endif\\n\\n#if COLOR_TYPE == TEXTURE_UV || COLOR_TYPE == TEXTURE_PROJECTION || COLOR_TYPE == MATCAP || COLOR_TYPE == DISTANCE_MAP\\nuniform sampler2D tDiffuse;\\n#endif\\n\\n#if XRAY\\nuniform float u_intensity;\\nuniform float u_edgeFalloff;\\n#endif\\n\\n#if COLOR_MIX\\nuniform vec3 u_mix_color;\\nuniform float u_color_mix_factor;\\n#endif\\n\\n#if ADJUSTMENT\\nuniform vec4 u_tex_adjustment;\\nuniform float u_tex_gamma;\\n#endif\\n\\n#if FRESNEL_ALPHA\\nuniform float u_fresnel_bias;\\nuniform float u_fresnel_power;\\nuniform float u_fresnel_scale;\\nuniform float u_fresnel_backfaceFactor;\\nuniform int u_fresnel_enabled;\\n#endif\\n\\nFRAG_DEF_OUT\\n\\n#if MULTIPLE_RENDER_TARGETS\\n\\n #if WIREFRAME\\nFRAG_DEF_OUT\\n #endif\\n\\n #if OBJECT_ID\\nFRAG_DEF_OUT\\n #endif\\n\\n #if CUSTOM_OUTPUT\\nFRAG_DEF_OUT\\n #endif\\n\\n#endif\\n\\nvoid lin_to_srgb(inout vec3 color) {\\n color = pow(color, vec3(1.0 / 2.2));\\n}\\n\\nvoid srgb_to_lin(inout vec3 color) {\\n color = pow(color, vec3(2.0));\\n}\\n\\n#if LIGHTING\\nfloat lambert_diffuse( vec3 light_dir, vec3 normal ) {\\n return max(dot(normal, light_dir), 0.0);\\n}\\n\\nfloat half_lambert_diffuse( vec3 light_dir, vec3 normal ) {\\n float l_dot_n = dot(normal, light_dir);\\n return pow(l_dot_n*0.5 + 0.5, 2.0 );\\n}\\n\\nfloat blinn_phong_spec( vec3 light_dir, vec3 view_dir,\\n vec3 norm, float shininess ) {\\n vec3 H = normalize( view_dir + light_dir );\\n return pow(max(0.0, dot( norm, H)), shininess);\\n}\\n\\nfloat phong_spec( vec3 light_dir, vec3 view_dir,\\n vec3 norm, float shininess ) {\\n vec3 R = reflect(-light_dir, norm);\\n return pow( max( dot( R, view_dir ), 0.0 ), shininess );\\n}\\n\\nvoid apply_lighting(inout vec3 color, in vec3 normal, in vec3 view_dir) {\\n\\n vec3 diffuse = vec3(0.0);\\n vec3 specular = vec3(0.0);\\n\\n#if NUM_LIGHTS > 0\\n for (int i = 0; i < NUM_LIGHTS; ++i) {\\n\\n vec3 light_dir = -normalize(v_pos_world - u_light_positions[i]);\\n\\n float diff_distrib = 0.0;\\n if (u_enable_lambert_shading != 0) {\\n diff_distrib = lambert_diffuse(light_dir, normal);\\n } else {\\n diff_distrib = half_lambert_diffuse(light_dir, normal);\\n }\\n\\n#if SPECULAR == BLINN_PHONG\\n float spec_distrib = blinn_phong_spec(light_dir, view_dir, normal, 16.0);\\n#else\\n float spec_distrib = phong_spec(light_dir, view_dir, normal, 16.0);\\n#endif\\n\\n diffuse += u_light_colors[i] * diff_distrib;\\n specular += u_specular * u_light_colors[i] * spec_distrib;\\n\\n }\\n#endif\\n\\n color *= u_reflectivity.x * color + u_reflectivity.y * diffuse + u_reflectivity.z * specular;\\n\\n}\\n\\n#endif\\n\\n#if MULTIPLE_RENDER_TARGETS\\n\\nvec3 pack(const in float value) {\\n\\n const vec3 scale = vec3(1.0, 256.0, 65536.0);\\n const vec2 ogb = vec2(65536.0, 256.0) / 16777215.0;\\n const float normal = 256.0 / 255.0;\\n\\n vec3 unit = vec3(value);\\n unit.gb -= floor(unit.gb / ogb) * ogb;\\n\\n vec3 color = unit * scale;\\n color = fract(color);\\n color *= normal;\\n color.rg -= color.gb / 256.0;\\n\\n return color;\\n\\n}\\n\\n#endif\\n\\n#if OBJECT_ID\\nvec3 pack(in int value) {\\n vec3 color;\\n\\n color.r = float(value/65536) / 255.0;\\n color.g = float((value - value/65536*65536) / 256) / 255.0;\\n color.b = float(value - (value - value/65536*65536) / 256 * 256) / 255.0;\\n\\n return color;\\n}\\n#endif\\n\\n#if ADJUSTMENT\\nvec3 rgb2hsv(in vec3 c)\\n{\\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\\n\\n vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy);\\n vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx);\\n\\n float d = q.x - min(q.w, q.y);\\n float e = 1.0e-10;\\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\\n}\\n\\nvec3 hsv2rgb(in vec3 c)\\n{\\n vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\\n vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\\n return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\\n}\\n#endif\\n\\n#if ADJUSTMENT || MONOCHROMATIC_COLOR\\nconst vec3 lum_coeff = vec3(0.2125, 0.7154, 0.0721);\\n#endif\\n\\n#if ADJUSTMENT\\nvec3 brightness_saturation_contrast(vec3 color, float brt, float sat, float con)\\n{\\n // Increase or decrease theese values to adjust r, g and b color channels seperately\\n const float avg_lum_r = 0.5;\\n const float avg_lum_g = 0.5;\\n const float avg_lum_b = 0.5;\\n\\n vec3 avg_lum_in = vec3(avg_lum_r, avg_lum_g, avg_lum_b);\\n vec3 brt_color = color * brt;\\n vec3 intensity = vec3(dot(brt_color, lum_coeff));\\n vec3 sat_color = mix(intensity, brt_color, sat);\\n vec3 con_color = mix(avg_lum_in, sat_color, con);\\n\\n return con_color;\\n}\\n\\nvec3 adjust(in vec3 c)\\n{\\n vec3 gclr = pow(c, vec3(u_tex_gamma));\\n vec3 hsv = rgb2hsv(gclr);\\n //hsv.yz *= u_tex_adjustment.yz;\\n hsv.x = fract( hsv.x + u_tex_adjustment.x * 0.5);\\n vec3 rgb = hsv2rgb(hsv);\\n\\n //return mix(vec3(0.5), rgb, u_tex_adjustment.w);\\n return brightness_saturation_contrast(rgb, u_tex_adjustment.z, u_tex_adjustment.y, u_tex_adjustment.w);\\n}\\n#endif\\n\\n#if FRESNEL_ALPHA\\nfloat fresnel(vec3 normal, vec3 view_dir) {\\n vec3 v = normalize(view_dir);\\n float ndotv = dot(normal, v);\\n float alpha = u_fresnel_bias + u_fresnel_scale * pow(1.0 + ndotv, u_fresnel_power);\\n return clamp(alpha, 0.0, 1.0);\\n}\\n#endif\\n\\nvoid main() {\\n\\n#if SURFELS_MODE && SURFELS_FILTERING == CONCURRENT\\n float distanceFromCenter = length(2.0 * gl_PointCoord - 1.0);\\n if(distanceFromCenter > 1.0){\\n discard;\\n }\\n#endif\\n\\n vec3 color;\\n\\n#if SHADING == FLAT_SHADING && DRAW_MODE == TRIANGLES_MODE || DRAW_MODE == POINTS_MODE\\n vec3 eyeRelativePos = v_pos_world - u_cam_pos;\\n#endif\\n\\n#if SHADING == FLAT_SHADING && !SURFELS_MODE\\n #if DRAW_MODE == TRIANGLES_MODE\\n vec3 dFdxPos = dFdx(eyeRelativePos);\\n vec3 dFdyPos = dFdy(eyeRelativePos);\\n\\n vec3 normal = normalize( cross(dFdxPos, dFdyPos));\\n #else\\n vec3 normal = normalize(u_cam_pos - v_pos_world);\\n #endif\\n#else\\n\\n vec3 normal = normalize(v_normal);\\n\\n#endif\\n\\n#if DRAW_MODE == POINTS_MODE\\n bool isFront = dot(normalize(eyeRelativePos), normal) <= 0.0;\\n#else //DRAW_MODE == TRIANGLES_MODE\\n #if FRONT_FACE == CCW\\n bool isFront = gl_FrontFacing;\\n #else\\n bool isFront = !gl_FrontFacing;\\n #endif\\n\\n #if INVERT_FACES\\n isFront = !isFront;\\n #endif\\n#endif\\n\\n#if BACKFACE_MODE == BM_TRANSPARENT || BACKFACE_MODE == BM_FRONTFACE\\n bool backWithFrontColor = true;\\n#else\\n bool backWithFrontColor = false;\\n#endif\\n\\n#if COLOR_TYPE == DISTANCE_MAP\\n float distance_in_search_space = (v_distance - u_distance_search_range.x) / (u_distance_search_range.y - u_distance_search_range.x);\\n#endif\\n\\n float alpha = 1.0;\\n if (isFront || backWithFrontColor) {\\n\\n if (!isFront) {\\n#if SHADING == SMOOTH_SHADING || DRAW_MODE == POINTS_MODE\\n normal = -normal;\\n#endif\\n\\n#if BACKFACE_MODE == BM_TRANSPARENT\\n if (mod(gl_FragCoord.x, 2.0) != mod(gl_FragCoord.y, 2.0)) {\\n discard;\\n }\\n#endif\\n }\\n\\n#if COLOR_TYPE == BUFFER\\n color = v_color.rgb;\\n#elif COLOR_TYPE == DISTANCE_MAP\\n float distance_in_gradient_space = (v_distance - u_distance_gradient_range.x) / (u_distance_gradient_range.y - u_distance_gradient_range.x);\\n\\n #if CONTINUOUS_DISTANCE\\n int index = int(clamp(distance_in_gradient_space * float(DISTANCE_COUNTER), 0.0, float(DISTANCE_COUNTER - 1)));\\n float distance_color_step = 1.0 / float(DISTANCE_COUNTER);\\n float next_distance_in_gradient_space = distance_in_gradient_space + distance_color_step;\\n int next_index = int(min(float(index + 1), float(DISTANCE_COUNTER - 1)));\\n float current_color_distance = float(index) * distance_color_step;\\n float color_mix_factor = clamp((distance_in_gradient_space - current_color_distance) / distance_color_step, 0.0, 1.0);\\n vec3 gradient_color = SAMPLER2D(tDiffuse, vec2(distance_in_gradient_space, 0.5)).rgb;\\n vec3 next_gradient_color = SAMPLER2D(tDiffuse, vec2(next_distance_in_gradient_space, 0.5)).rgb;\\n vec3 dist_color = mix(gradient_color, next_gradient_color, color_mix_factor);\\n color = mix(u_undefined_color, dist_color, step(0.0, distance_in_search_space) * (1.0 - step(1.0, distance_in_search_space)));\\n #else\\n vec2 thr_bounds = (u_distance_thr_range - u_distance_search_range.x) / (u_distance_search_range.y - u_distance_search_range.x);\\n vec3 gradient_color = SAMPLER2D(tDiffuse, vec2(distance_in_gradient_space, 0.5)).rgb;\\n color = mix(u_undefined_color, gradient_color, step(0.0, distance_in_search_space) * (1.0 - step(1.0, distance_in_search_space)));\\n color = mix(u_thr_color, color, step(thr_bounds.y, distance_in_search_space) + (1.0 - step(thr_bounds.x, distance_in_search_space)));\\n #endif\\n#elif COLOR_TYPE == MATCAP\\n vec3 view_normal = (u_view_mat * vec4(normal, 0.0)).xyz;\\n vec3 eyeDir = -1.0 * normalize(v_pos_model_view);\\n vec3 normalX = vec3(eyeDir.z, 0.0, -eyeDir.x);\\n vec3 normalY = cross(-normalX, eyeDir);\\n vec2 normalTexCoords = 0.5 * (vec2(1.0) + vec2(dot(view_normal.xz, normalX.xz), dot(view_normal, normalY)));\\n color = SAMPLER2D(tDiffuse, normalTexCoords).rgb;\\n#elif COLOR_TYPE == TEXTURE_UV || COLOR_TYPE == TEXTURE_PROJECTION\\n vec4 textureColor = SAMPLER2D(tDiffuse, v_uv);\\n\\n color = textureColor.rgb;\\n alpha = textureColor.a;\\n\\n//NOTE: we assume that frames textures are in linear space\\n #if COLOR_TYPE == TEXTURE_UV\\n srgb_to_lin(color);\\n #endif\\n\\n #if ADJUSTMENT\\n color = adjust(color);\\n color = clamp(color, vec3(0.0), vec3(1.0));\\n #endif\\n\\n #if COLOR_CORRECTION\\n // branch is needed for frames immitating diffuse color with a texture\\n if (u_enable_color_correction == 1) {\\n color.rgb = (u_text_color_matrix * vec4(color.rgb, 1.0)).rgb;\\n color.rgb *= dot(v_local_pos, v_local_pos);\\n }\\n #endif\\n\\n#elif COLOR_TYPE == UNIFORM\\n color = u_diffuse.rgb;\\n#endif\\n\\n } else {\\n#if BACKFACE_MODE == BM_NONE\\n //this discard is only needed with surfels. Use gl.CULL_FACE in other cases\\n discard;\\n#else //BACKFACE_MODE == BM_DIFFUSE\\n #if SHADING == SMOOTH_SHADING || DRAW_MODE == POINTS_MODE\\n normal = -normal;\\n #endif\\n\\n color = u_backface_color;\\n#endif\\n }\\n\\n#if COLOR_MIX\\n color.rgb = mix(color.rgb, u_mix_color, u_color_mix_factor);\\n#endif\\n\\n#if DEBUG_CHUNKS\\n color *= u_chunk_color;\\n#endif\\n\\n#if SURFELS_MODE && COLOR_TYPE == BUFFER\\n float d = 0.03 * u_object_size;\\n float x = floor(v_pos_world.x / d);\\n float y = floor(v_pos_world.y / d);\\n float z = floor(v_pos_world.z / d);\\n vec3 chessBoard = mix(vec3(0.32), vec3(0.13), mod(x + y + z, 2.0));\\n color = mix(chessBoard, color, v_color.a);\\n#endif\\n\\n#if SELECTION\\n if (v_selection_mask > 0.0) {\\n color = u_selection_color;\\n }\\n#endif\\n\\n alpha *= u_diffuse.a;\\n\\n vec3 view_dir = normalize(u_cam_pos - v_pos_world);\\n\\n#if FRESNEL_ALPHA\\n if (u_fresnel_enabled == 1) {\\n if (isFront) {\\n alpha *= fresnel(normal, -view_dir);\\n } else {\\n alpha *= u_fresnel_backfaceFactor;\\n }\\n }\\n#endif\\n\\n#if LIGHTING\\n apply_lighting(color, normal, view_dir);\\n#else\\n color *= (u_reflectivity.r + u_reflectivity.g);\\n#endif\\n\\n#if COLOR_TYPE == BUFFER || COLOR_TYPE == TEXTURE_UV || COLOR_TYPE == TEXTURE_PROJECTION\\n if (isFront || backWithFrontColor) {\\n if (u_enable_linear_color_space == 0) {\\n #if SELECTION\\n if (v_selection_mask == 0.0) {\\n lin_to_srgb(color);\\n }\\n #else\\n lin_to_srgb(color);\\n #endif\\n }\\n }\\n#endif\\n\\n#if XRAY\\n float NV = abs(dot(normal, view_dir));\\n color *= u_intensity * ( 1.0 - pow(NV, u_edgeFalloff) );\\n alpha = 0.0;\\n#endif\\n\\n#if MONOCHROMATIC_COLOR\\n if (u_enable_monochromatic == 1) {\\n float mono = dot(lum_coeff, color.rgb);\\n color.rgb = vec3(mono);\\n }\\n#endif\\n\\nvec4 fullColor = vec4(color, alpha);\\n#if SURFELS_MODE && SURFELS_FILTERING == BLEND\\n vec4 posView = u_view_mat * vec4(v_pos_world, 1.0);\\n\\n float distance = length(gl_PointCoord.xy - 0.5);\\n float weight = 1.0 / sqrt(2.0 * 3.14) * exp(-pow(distance * 50.0, 0.5)/2.0);\\n#if FILTERING_WEIGHT_NORMALIZATION\\n weight *= 25.0;\\n#endif\\n\\n fullColor = vec4(color.rgb * weight, weight);\\n#endif\\n\\n FRAG_OUT = fullColor;\\n\\n#if MULTIPLE_RENDER_TARGETS\\n\\n #if WIREFRAME\\n float indexFactor = fwidth(v_vertex_id_smooth);\\n # if WEBGL2\\n indexFactor = 0.5 * (v_vertex_id_flat + indexFactor);\\n # endif\\n vec3 viewNormal = (u_view_mat * vec4(normal, 0.0)).xyz;\\n FRAG_OUT = vec4(pack(indexFactor), viewNormal.z);\\n #endif\\n\\n #if OBJECT_ID\\n //no transparent objects picking\\n float validateValue = floor(alpha);\\n #if BACKFACE_MODE == BM_TRANSPARENT\\n //fxaa shader will skip pixels in (0; 1) range\\n if (validateValue == 1.0 && !isFront) {\\n validateValue = 0.5;\\n }\\n #endif\\n\\n FRAG_OUT = vec4(pack(u_object_id), validateValue);\\n #endif\\n\\n #if CUSTOM_OUTPUT\\n\\n #if RGB_DEPTH\\n vec4 posViewProj = u_view_proj_matrix * vec4(v_pos_world, 1.0);\\n float ndcZ = posViewProj.z / posViewProj.w;\\n vec4 generalOutput = vec4(pack(0.5 * (ndcZ + 1.0)), 1.0);\\n\\n #elif DM_OUTPUT\\n #if COLOR_TYPE == DISTANCE_MAP\\n bool distanceDefined = distance_in_search_space <= 1.0 && distance_in_search_space >= 0.0;\\n vec4 generalOutput = vec4(pack(distance_in_search_space), distanceDefined ? 1.0 : 0.0);\\n #else\\n vec4 generalOutput = vec4(0.0, 0.0, 0.0, 0.0);\\n #endif\\n #endif\\n\\n FRAG_OUT = generalOutput;\\n #endif\\n\\n#endif\\n\\n#if SURFELS_MODE && SURFELS_FILTERING == CONCURRENT\\n vec4 posView = u_view_mat * vec4(v_pos_world, 1.0);\\n vec2 uv = 2.0 * gl_PointCoord.xy - vec2(1.0);\\n float wi = 0.0 - dot(uv, uv);\\n posView.z += wi * surfel_size / 0.25;\\n posView = u_proj_matrix * posView;\\n posView = posView / posView.w;\\n DEPTH_OUT = (posView.z + 1.0) / 2.0;\\n#endif\\n\\n}\\n\"","module.exports = \"precision highp float;\\n\\nVERT_IN vec3 a_position;\\nVERT_IN vec2 a_uv;\\n\\n#if SHADING == SMOOTH_SHADING\\nVERT_IN vec3 a_normal;\\n#endif\\n\\n#if WIREFRAME\\nVERT_IN float a_vertex_id;\\n#endif\\n\\nuniform mat4 u_model_matrix;\\nuniform mat4 u_view_proj_matrix;\\nuniform float u_point_size;\\n\\nVERT_OUT vec3 v_pos_world;\\nVERT_OUT vec2 v_uv;\\n\\n#if SHADING == SMOOTH_SHADING\\nVERT_OUT vec3 v_normal;\\n#endif\\n\\n#if WIREFRAME\\n #if WEBGL2\\nflat VERT_OUT float v_vertex_id_flat;\\n #endif\\nVERT_OUT float v_vertex_id_smooth;\\n#endif\\n\\nvoid main() {\\n vec4 pos = u_model_matrix * vec4(a_position, 1.0);\\n v_pos_world = pos.xyz;\\n\\n#if SHADING == SMOOTH_SHADING\\n v_normal = (u_model_matrix * vec4(a_normal, 0.0)).xyz;\\n#endif\\n\\n v_uv = a_uv;\\n\\n gl_Position = u_view_proj_matrix * pos;\\n gl_PointSize = u_point_size;\\n\\n #if WIREFRAME\\n v_vertex_id_smooth = a_vertex_id;\\n #if WEBGL2\\n v_vertex_id_flat = a_vertex_id;\\n #endif\\n #endif\\n}\\n\"","module.exports = \"precision highp float;\\n\\nFRAG_IN vec3 v_pos_world;\\nFRAG_IN vec2 v_uv;\\n\\n#if SHADING == SMOOTH_SHADING\\nFRAG_IN vec3 v_normal;\\n#endif\\n\\n#if WIREFRAME\\nFRAG_IN float v_vertex_id_smooth;\\n# if WEBGL2\\nflat FRAG_IN float v_vertex_id_flat;\\n# endif\\n#endif\\n\\nuniform vec3 u_backface_color;\\nuniform vec3 u_cam_pos;\\n\\n#if LIGHT_SOURCE == SPOTS || LIGHT_SOURCE == COMBINED\\nuniform vec3 u_light_positions[NUM_LIGHTS];\\nuniform vec3 u_light_colors[NUM_LIGHTS];\\n#endif\\n\\nuniform sampler2D tDiffuse;\\nuniform sampler2D tRoughnessMetallic;\\n\\n#if LIGHT_SOURCE == ENV || LIGHT_SOURCE == COMBINED\\nuniform samplerCube tIrradianceMap;\\nuniform samplerCube tPrefilterMap;\\nuniform sampler2D tBRDF;\\n#endif\\n\\n#if WIREFRAME\\nuniform mat4 u_view_mat;\\n#endif\\n\\nFRAG_DEF_OUT\\n\\n#if MULTIPLE_RENDER_TARGETS\\n #if WIREFRAME\\nFRAG_DEF_OUT\\n #endif\\n#endif\\n\\nvoid lin_to_srgb(inout vec3 color) {\\n color = pow(color, vec3(1.0 / 2.2));\\n}\\n\\nvoid srgb_to_lin(inout vec3 color) {\\n color = pow(color, vec3(2.2));\\n}\\n\\n#if MULTIPLE_RENDER_TARGETS\\n\\nvec3 pack(const in float value) {\\n\\n const vec3 scale = vec3(1.0, 256.0, 65536.0);\\n const vec2 ogb = vec2(65536.0, 256.0) / 16777215.0;\\n const float normal = 256.0 / 255.0;\\n\\n vec3 unit = vec3(value);\\n unit.gb -= floor(unit.gb / ogb) * ogb;\\n\\n vec3 color = unit * scale;\\n color = fract(color);\\n color *= normal;\\n color.rg -= color.gb / 256.0;\\n\\n return color;\\n\\n}\\n\\n#endif\\nvoid aces(inout vec3 x) {\\n const float a = 2.51;\\n const float b = 0.03;\\n const float c = 2.43;\\n const float d = 0.59;\\n const float e = 0.14;\\n x = clamp((x * (a * x + b)) / (x * (c * x + d) + e), 0.0, 1.0);\\n}\\n\\n#define PI 3.1415926\\n\\nvec3 fresnelSchlick(float cosTheta, vec3 F0) {\\n return F0 + (1.0 - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0);\\n}\\n\\n#if LIGHT_SOURCE == ENV || LIGHT_SOURCE == COMBINED\\nvec3 fresnelSchlickRoughness(float cosTheta, vec3 F0, float roughness) {\\n return F0 + (max(vec3(1.0 - roughness), F0) - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0);\\n}\\n#endif\\n\\n#if LIGHT_SOURCE == SPOTS || LIGHT_SOURCE == COMBINED\\nfloat DistributionGGX(vec3 N, vec3 H, float roughness) {\\n float a = roughness*roughness;\\n float a2 = a*a;\\n float NdotH = max(dot(N, H), 0.0);\\n float NdotH2 = NdotH*NdotH;\\n\\n float num = a2;\\n float denom = (NdotH2 * (a2 - 1.0) + 1.0);\\n denom = PI * denom * denom;\\n\\n return num / denom;\\n}\\nfloat GeometrySchlickGGX(float NdotV, float roughness) {\\n float r = (roughness + 1.0);\\n float k = (r*r) / 8.0;\\n\\n float num = NdotV;\\n float denom = NdotV * (1.0 - k) + k;\\n\\n return num / denom;\\n}\\nfloat GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness)\\n{\\n float NdotV = max(dot(N, V), 0.0);\\n float NdotL = max(dot(N, L), 0.0);\\n float ggx2 = GeometrySchlickGGX(NdotV, roughness);\\n float ggx1 = GeometrySchlickGGX(NdotL, roughness);\\n\\n return ggx1 * ggx2;\\n}\\n#endif\\n\\nvoid main() {\\n vec3 color;\\n float alpha = 1.0;\\n vec3 view = u_cam_pos - v_pos_world;\\n\\n#if SHADING == FLAT_SHADING\\n vec3 dFdxPos = dFdx(view);\\n vec3 dFdyPos = dFdy(view);\\n\\n vec3 N = normalize( cross(dFdxPos, dFdyPos));\\n#else\\n vec3 N = normalize(v_normal);\\n#endif\\n\\n vec3 V = normalize(view);\\n float NdotV = max(dot(N, V), 0.0000001);\\n\\n#if DRAW_MODE == POINTS_MODE\\n bool isFront = NdotV >= 0.0;\\n#else //DRAW_MODE == TRIANGLES_MODE\\n #if FRONT_FACE == CCW\\n bool isFront = gl_FrontFacing;\\n #else\\n bool isFront = !gl_FrontFacing;\\n #endif\\n\\n #if INVERT_FACES\\n isFront = !isFront;\\n #endif\\n#endif\\n\\n if (isFront) {\\n\\n vec4 diffuseSampled = SAMPLER2D(tDiffuse, v_uv);\\n vec3 albedo = diffuseSampled.rgb;\\n\\n vec4 roughnessMetallicSampled = SAMPLER2D(tRoughnessMetallic, v_uv);\\n float roughness = roughnessMetallicSampled.g;\\n float metallic = roughnessMetallicSampled.b;\\n const float ao = 1.0;\\n\\n srgb_to_lin(albedo);\\n\\n vec3 F0 = vec3(0.04);\\n F0 = mix(F0, albedo, metallic);\\n\\n vec3 Lo = vec3(0.0);\\n\\n#if LIGHT_SOURCE == SPOTS || LIGHT_SOURCE == COMBINED\\n const float ATTENUATION = 1.0;\\n\\n for (int i=0; i [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Range_1 = __importDefault(require(\"./Range\"));\nexports.Range = Range_1.default;\nvar utils_1 = require(\"./utils\");\nexports.getTrackBackground = utils_1.getTrackBackground;\nexports.useThumbOverlap = utils_1.useThumbOverlap;\nexports.relativeValue = utils_1.relativeValue;\nvar types_1 = require(\"./types\");\nexports.Direction = types_1.Direction;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Alpha = require('./Alpha');\n\nObject.defineProperty(exports, 'Alpha', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Alpha).default;\n }\n});\n\nvar _Checkboard = require('./Checkboard');\n\nObject.defineProperty(exports, 'Checkboard', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Checkboard).default;\n }\n});\n\nvar _EditableInput = require('./EditableInput');\n\nObject.defineProperty(exports, 'EditableInput', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_EditableInput).default;\n }\n});\n\nvar _Hue = require('./Hue');\n\nObject.defineProperty(exports, 'Hue', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Hue).default;\n }\n});\n\nvar _Raised = require('./Raised');\n\nObject.defineProperty(exports, 'Raised', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Raised).default;\n }\n});\n\nvar _Saturation = require('./Saturation');\n\nObject.defineProperty(exports, 'Saturation', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Saturation).default;\n }\n});\n\nvar _ColorWrap = require('./ColorWrap');\n\nObject.defineProperty(exports, 'ColorWrap', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ColorWrap).default;\n }\n});\n\nvar _Swatch = require('./Swatch');\n\nObject.defineProperty(exports, 'Swatch', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Swatch).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\nexport function useTranslation(ns) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // assert we have the needed i18nInstance\n var i18nFromProps = props.i18n;\n\n var _ref = useContext(I18nContext) || {},\n i18nFromContext = _ref.i18n,\n defaultNSFromContext = _ref.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n if (!i18n) {\n warnOnce('You will need pass in an i18next instance by using initReactI18next');\n\n var notReadyT = function notReadyT(k) {\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n\n var retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n\n var i18nOptions = _objectSpread({}, getDefaults(), {}, i18n.options.react, {}, props);\n\n var useSuspense = i18nOptions.useSuspense; // prepare having a namespace\n\n var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation']; // report namespaces as used\n\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces); // are we ready? yes if all namespaces in first language are loaded already (either with data or empty object on failed load)\n\n var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n return hasLoadedNamespace(n, i18n, i18nOptions);\n }); // binding t function to namespace (acts also as rerender trigger)\n\n function getT() {\n return {\n t: i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0])\n };\n }\n\n var _useState = useState(getT()),\n _useState2 = _slicedToArray(_useState, 2),\n t = _useState2[0],\n setT = _useState2[1]; // seems we can't have functions as value -> wrap it in obj\n\n\n var isMounted = useRef(true);\n useEffect(function () {\n var bindI18n = i18nOptions.bindI18n,\n bindI18nStore = i18nOptions.bindI18nStore;\n isMounted.current = true; // if not ready and not using suspense load the namespaces\n // in side effect and do not call resetT if unmounted\n\n if (!ready && !useSuspense) {\n loadNamespaces(i18n, namespaces, function () {\n if (isMounted.current) setT(getT());\n });\n }\n\n function boundReset() {\n if (isMounted.current) setT(getT());\n } // bind events to trigger change, like languageChanged\n\n\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset); // unbinding on unmount\n\n return function () {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n return i18n.off(e, boundReset);\n });\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n return i18n.store.off(e, boundReset);\n });\n };\n }, [namespaces.join()]); // re-run effect whenever list of namespaces changes\n\n var ret = [t.t, i18n, ready];\n ret.t = t.t;\n ret.i18n = i18n;\n ret.ready = ready; // return hook stuff if ready\n\n if (ready) return ret; // not yet loaded namespaces -> load them -> and return if useSuspense option set false\n\n if (!ready && !useSuspense) return ret; // not yet loaded namespaces -> load them -> and trigger suspense\n\n throw new Promise(function (resolve) {\n loadNamespaces(i18n, namespaces, function () {\n if (isMounted.current) setT(getT());\n resolve();\n });\n });\n}","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\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, toPropertyKey(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}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","function _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++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\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}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar types_1 = require(\"./types\");\nexports.getStepDecimals = function (step) {\n var decimals = step.toString().split('.')[1];\n return decimals ? decimals.length : 0;\n};\nfunction isTouchEvent(event) {\n return ((event.touches && event.touches.length) ||\n (event.changedTouches && event.changedTouches.length));\n}\nexports.isTouchEvent = isTouchEvent;\nfunction isStepDivisible(min, max, step) {\n var res = (max - min) / step;\n return parseInt(res.toString(), 10) === res;\n}\nexports.isStepDivisible = isStepDivisible;\nfunction normalizeValue(value, index, min, max, step, allowOverlap, values) {\n var BIG_NUM = 10e10;\n value = Math.round(value * BIG_NUM) / BIG_NUM;\n if (!allowOverlap) {\n var prev = values[index - 1];\n var next = values[index + 1];\n if (prev && prev > value)\n return prev;\n if (next && next < value)\n return next;\n }\n if (value > max)\n return max;\n if (value < min)\n return min;\n // `remainder` is a difference between the given value and a full step value\n // that is closest lower to the given value and is in the range between the min value\n // and the given value\n var remainder = Math.floor(value * BIG_NUM - min * BIG_NUM) %\n Math.floor(step * BIG_NUM);\n var closestLowerNum = Math.floor(value * BIG_NUM - Math.abs(remainder));\n var rounded = remainder === 0 ? value : closestLowerNum / BIG_NUM;\n // Values with a remainder `< step/2` are rounded to the closest lower value\n // while values with a remainder `= > step/2` are rounded to the closest bigger value\n var res = Math.abs(remainder / BIG_NUM) < step / 2\n ? rounded\n : rounded + step;\n var decimalPlaces = exports.getStepDecimals(step);\n return parseFloat(res.toFixed(decimalPlaces));\n}\nexports.normalizeValue = normalizeValue;\nfunction relativeValue(value, min, max) {\n return (value - min) / (max - min);\n}\nexports.relativeValue = relativeValue;\nfunction isVertical(direction) {\n return direction === types_1.Direction.Up || direction === types_1.Direction.Down;\n}\nexports.isVertical = isVertical;\nfunction checkBoundaries(value, min, max) {\n if (min >= max) {\n throw new RangeError(\"min (\" + min + \") is equal/bigger than max (\" + max + \")\");\n }\n if (value < min) {\n throw new RangeError(\"value (\" + value + \") is smaller than min (\" + min + \")\");\n }\n if (value > max) {\n throw new RangeError(\"value (\" + value + \") is bigger than max (\" + max + \")\");\n }\n}\nexports.checkBoundaries = checkBoundaries;\nfunction checkInitialOverlap(values) {\n if (values.length < 2)\n return;\n if (!values.slice(1).every(function (item, i) { return values[i] <= item; })) {\n throw new RangeError(\"values={[\" + values + \"]} needs to be sorted when allowOverlap={false}\");\n }\n}\nexports.checkInitialOverlap = checkInitialOverlap;\nfunction getMargin(element) {\n var style = window.getComputedStyle(element);\n return {\n top: parseInt(style['margin-top'], 10),\n bottom: parseInt(style['margin-bottom'], 10),\n left: parseInt(style['margin-left'], 10),\n right: parseInt(style['margin-right'], 10)\n };\n}\nexports.getMargin = getMargin;\nfunction getPaddingAndBorder(element) {\n var style = window.getComputedStyle(element);\n return {\n top: parseInt(style['padding-top'], 10) + parseInt(style['border-top-width'], 10),\n bottom: parseInt(style['padding-bottom'], 10) + parseInt(style['border-bottom-width'], 10),\n left: parseInt(style['padding-left'], 10) + parseInt(style['border-left-width'], 10),\n right: parseInt(style['padding-right'], 10) + parseInt(style['border-right-width'], 10),\n };\n}\nexports.getPaddingAndBorder = getPaddingAndBorder;\nfunction translateThumbs(elements, offsets, rtl) {\n var inverter = rtl ? -1 : 1;\n elements.forEach(function (element, index) {\n return translate(element, inverter * offsets[index].x, offsets[index].y);\n });\n}\nexports.translateThumbs = translateThumbs;\n/**\n * Util function for calculating the index of the thumb that is closes to a given position\n * @param thumbs - array of Thumb element to calculate the distance from\n * @param clientX - target x position (mouse/touch)\n * @param clientY - target y position (mouse/touch)\n * @param direction - the direction of the track\n */\nfunction getClosestThumbIndex(thumbs, clientX, clientY, direction) {\n var thumbIndex = 0;\n var minThumbDistance = getThumbDistance(thumbs[0], clientX, clientY, direction);\n for (var i = 1; i < thumbs.length; i++) {\n var thumbDistance = getThumbDistance(thumbs[i], clientX, clientY, direction);\n if (thumbDistance < minThumbDistance) {\n minThumbDistance = thumbDistance;\n thumbIndex = i;\n }\n }\n return thumbIndex;\n}\nexports.getClosestThumbIndex = getClosestThumbIndex;\nfunction translate(element, x, y) {\n element.style.transform = \"translate(\" + x + \"px, \" + y + \"px)\";\n}\nexports.translate = translate;\n// adapted from https://github.com/alexreardon/raf-schd\nexports.schd = function (fn) {\n var lastArgs = [];\n var frameId = null;\n var wrapperFn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n lastArgs = args;\n if (frameId) {\n return;\n }\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n return wrapperFn;\n};\nfunction replaceAt(values, index, value) {\n var ret = values.slice(0);\n ret[index] = value;\n return ret;\n}\nexports.replaceAt = replaceAt;\nfunction getTrackBackground(_a) {\n var values = _a.values, colors = _a.colors, min = _a.min, max = _a.max, _b = _a.direction, direction = _b === void 0 ? types_1.Direction.Right : _b, _c = _a.rtl, rtl = _c === void 0 ? false : _c;\n if (rtl && direction === types_1.Direction.Right) {\n direction = types_1.Direction.Left;\n }\n else if (rtl && types_1.Direction.Left) {\n direction = types_1.Direction.Right;\n }\n // sort values ascending\n var progress = values.slice(0).sort(function (a, b) { return a - b; }).map(function (value) { return ((value - min) / (max - min)) * 100; });\n var middle = progress.reduce(function (acc, point, index) {\n return acc + \", \" + colors[index] + \" \" + point + \"%, \" + colors[index + 1] + \" \" + point + \"%\";\n }, '');\n return \"linear-gradient(\" + direction + \", \" + colors[0] + \" 0%\" + middle + \", \" + colors[colors.length - 1] + \" 100%)\";\n}\nexports.getTrackBackground = getTrackBackground;\nfunction voidFn() { }\nexports.voidFn = voidFn;\nfunction assertUnreachable(x) {\n throw new Error(\"Didn't expect to get here\");\n}\nexports.assertUnreachable = assertUnreachable;\n/**\n * Util function for grabbing the true largest width of a thumb\n * including the label\n * @param thumbEl - Thumb element to grab the largest width from\n * @param value - Thumb value, not label value\n * @param separator - Label separator value\n */\nvar getThumbWidth = function (thumbEl, value, separator, decimalPlaces, valueToLabel) {\n if (valueToLabel === void 0) { valueToLabel = function (value) { return value; }; }\n var width = Math.ceil(__spreadArrays([thumbEl], Array.from(thumbEl.children)).reduce(function (width, el) {\n var elWidth = Math.ceil(el.getBoundingClientRect().width);\n /**\n * If a label contains a merged label value, it won't return the true\n * label width for that Thumb. Clone the label and change the value\n * to that individual Thumb value in order to grab the true width.\n */\n if (el.innerText &&\n el.innerText.includes(separator) &&\n el.childElementCount === 0) {\n var elClone = el.cloneNode(true);\n elClone.innerHTML = valueToLabel(value.toFixed(decimalPlaces));\n elClone.style.visibility = 'hidden';\n document.body.appendChild(elClone);\n elWidth = Math.ceil(elClone.getBoundingClientRect().width);\n document.body.removeChild(elClone);\n }\n return elWidth > width ? elWidth : width;\n }, thumbEl.getBoundingClientRect().width));\n return width;\n};\n/**\n * Bulk of logic for thumb overlaps\n * Consider a scenario with 5 thumbs;\n * Thumb 1 overlaps with thumb 0 and thumb 2\n * Thumb 2 overlaps with thumb 3\n * We need an array that contains [0, 1, 2, 3]\n * The function needs to return the directly overlapping thumbs\n * and all thumbs overlapping linked to those and so on\n * @param index - Thumb index calculating overlaps for\n * @param offsets - Current Array of Thumb offsets for Range\n * @param thumbs - Array of Thumb elements\n * @param values - Array of Thumb values\n * @param separator - String separator for merged label values\n * @returns overlaps - Array of all overlapping thumbs from the index\n */\nvar getOverlaps = function (index, offsets, thumbs, values, separator, decimalPlaces, valueToLabel) {\n if (valueToLabel === void 0) { valueToLabel = function (value) { return value; }; }\n var overlaps = [];\n /**\n * Recursive function for building the overlaps Array\n * If an overlap is found, find the overlaps for that overlap\n * @param thumbIndex current Thumb index to find overlaps from\n */\n var buildOverlaps = function (thumbIndex) {\n var thumbXWidth = getThumbWidth(thumbs[thumbIndex], values[thumbIndex], separator, decimalPlaces, valueToLabel);\n var thumbX = offsets[thumbIndex].x;\n /**\n * Iterate through the Thumb offsets, if there is a match\n * add the thumbIndex and siblingIndex to the overlaps Array\n *\n * Then build overlaps from the overlapping siblingIndex\n */\n offsets.forEach(function (_a, siblingIndex) {\n var siblingX = _a.x;\n var siblingWidth = getThumbWidth(thumbs[siblingIndex], values[siblingIndex], separator, decimalPlaces, valueToLabel);\n if (thumbIndex !== siblingIndex &&\n ((thumbX >= siblingX && thumbX <= siblingX + siblingWidth) ||\n (thumbX + thumbXWidth >= siblingX &&\n thumbX + thumbXWidth <= siblingX + siblingWidth))) {\n if (!overlaps.includes(siblingIndex)) {\n overlaps.push(thumbIndex);\n overlaps.push(siblingIndex);\n overlaps = __spreadArrays(overlaps, [thumbIndex, siblingIndex]);\n buildOverlaps(siblingIndex);\n }\n }\n });\n };\n buildOverlaps(index);\n // Sort and remove duplicates from the built overlaps\n return Array.from(new Set(overlaps.sort()));\n};\n/**\n * A custom React Hook for calculating whether a thumb overlaps\n * another and whether labels could/should merge.\n * @param rangeRef - React ref value of Range component\n * @param values - current Range values Array\n * @param index - thumb index\n * @param step - step value, used to calculate the number of decimal places\n * @param separator - string to separate thumb values\n * @returns label value + styling for thumb label\n */\nexports.useThumbOverlap = function (rangeRef, values, index, step, separator, valueToLabel) {\n if (step === void 0) { step = 0.1; }\n if (separator === void 0) { separator = ' - '; }\n if (valueToLabel === void 0) { valueToLabel = function (value) { return value; }; }\n var decimalPlaces = exports.getStepDecimals(step);\n // Create initial label style and value. Label value defaults to thumb value\n var _a = react_1.useState({}), labelStyle = _a[0], setLabelStyle = _a[1];\n var _b = react_1.useState(valueToLabel(values[index].toFixed(decimalPlaces))), labelValue = _b[0], setLabelValue = _b[1];\n // When the rangeRef or values change, update the Thumb label values and styling\n react_1.useEffect(function () {\n if (rangeRef) {\n var thumbs = rangeRef.getThumbs();\n if (thumbs.length < 1)\n return;\n var newStyle = {};\n var offsets_1 = rangeRef.getOffsets();\n /**\n * Get any overlaps for the given Thumb index. This must return all linked\n * Thumbs. So if there are 4 Thumbs and Thumbs 2, 3 and 4 overlap. If we are\n * getting the overlaps for Thumb 1 and it overlaps only Thumb 2, we must get\n * 2, 3 and 4 also.\n */\n var overlaps = getOverlaps(index, offsets_1, thumbs, values, separator, decimalPlaces, valueToLabel);\n // Set a default label value of the Thumb value\n var labelValue_1 = valueToLabel(values[index].toFixed(decimalPlaces));\n /**\n * If there are overlaps for the Thumb, we need to calculate the correct\n * Label value along with the relevant styling. We only want to show a Label\n * for the left most Thumb in an overlapping set.\n * All other Thumbs will be set to display: none.\n */\n if (overlaps.length) {\n /**\n * Get an Array of the offsets for the overlapping Thumbs\n * This is so we can determine if the Thumb we are looking at\n * is the left most thumb in an overlapping set\n */\n var offsetsX = overlaps.reduce(function (a, c, i, s) {\n return a.length ? __spreadArrays(a, [offsets_1[s[i]].x]) : [offsets_1[s[i]].x];\n }, []);\n /**\n * If our Thumb is the left most Thumb, we can build a Label value\n * and set the style for that Label\n */\n if (Math.min.apply(Math, offsetsX) === offsets_1[index].x) {\n /**\n * First calculate the Label value. To do this,\n * grab all the values for the Thumbs in our overlaps.\n * Then convert that to a Set and sort it whilst removing duplicates.\n */\n var labelValues_1 = [];\n overlaps.forEach(function (thumb) {\n labelValues_1.push(values[thumb].toFixed(decimalPlaces));\n });\n /**\n * Update the labelValue with the resulting Array\n * joined by our defined separator\n */\n labelValue_1 = Array.from(new Set(labelValues_1.sort(function (a, b) { return parseFloat(a) - parseFloat(b); })))\n .map(valueToLabel)\n .join(separator);\n /**\n * Lastly, build the label styling. The label styling will\n * position the label and apply a transform so that it's centered.\n * We want the center point between the left edge of the left most Thumb\n * and the right edge of the right most Thumb.\n */\n var first = Math.min.apply(Math, offsetsX);\n var last = Math.max.apply(Math, offsetsX);\n var lastWidth = thumbs[overlaps[offsetsX.indexOf(last)]].getBoundingClientRect().width;\n newStyle.left = Math.abs(first - (last + lastWidth)) / 2 + \"px\";\n newStyle.transform = 'translate(-50%, 0)';\n }\n else {\n // If the Thumb isn't the left most Thumb, hide the Label!\n newStyle.visibility = 'hidden';\n }\n }\n // Update the label value and style\n setLabelValue(labelValue_1);\n setLabelStyle(newStyle);\n }\n }, [rangeRef, values]);\n return [labelValue, labelStyle];\n};\n/**\n * Util function for calculating the distance of the center of a thumb\n * form a given mouse/touch target's position\n * @param thumbEl - Thumb element to calculate the distance from\n * @param clientX - target x position (mouse/touch)\n * @param clientY - target y position (mouse/touch)\n * @param direction - the direction of the track\n */\nfunction getThumbDistance(thumbEl, clientX, clientY, direction) {\n var _a = thumbEl.getBoundingClientRect(), x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n return isVertical(direction) ? Math.abs(clientY - (y + height / 2)) : Math.abs(clientX - (x + width / 2));\n}\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar RequireObjectCoercible = require('es-abstract/2022/RequireObjectCoercible');\nvar callBound = require('call-bind/callBound');\n\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar $push = callBound('Array.prototype.push');\n\nmodule.exports = function values(O) {\n\tvar obj = RequireObjectCoercible(O);\n\tvar vals = [];\n\tfor (var key in obj) {\n\t\tif ($isEnumerable(obj, key)) { // checks own-ness as well\n\t\t\t$push(vals, obj[key]);\n\t\t}\n\t}\n\treturn vals;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.values === 'function' ? Object.values : implementation;\n};\n","'use strict';\n\nmodule.exports = function contains(other) {\n\tif (arguments.length < 1) {\n\t\tthrow new TypeError('1 argument is required');\n\t}\n\tif (typeof other !== 'object') {\n\t\tthrow new TypeError('Argument 1 (”other“) to Node.contains must be an instance of Node');\n\t}\n\n\tvar node = other;\n\tdo {\n\t\tif (this === node) {\n\t\t\treturn true;\n\t\t}\n\t\tif (node) {\n\t\t\tnode = node.parentNode;\n\t\t}\n\t} while (node);\n\n\treturn false;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (typeof document !== 'undefined') {\n\t\tif (document.contains) {\n\t\t\treturn document.contains;\n\t\t}\n\t\tif (document.body && document.body.contains) {\n\t\t\ttry {\n\t\t\t\tif (typeof document.body.contains.call(document, '') === 'boolean') {\n\t\t\t\t\treturn document.body.contains;\n\t\t\t\t}\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t}\n\treturn implementation;\n};\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { RGB } from '_data/types/base';\n\nconst LUM_SHIFT = 0.05;\n\n// perform math for WCAG2\nconst getLuminance = (rgb: RGB): number => {\n const normalizedRGB = rgb.map(value => (value <= 0.03928 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4));\n return 0.2126 * normalizedRGB[0] + 0.7152 * normalizedRGB[1] + 0.0722 * normalizedRGB[2];\n};\n\nexport const getContrastRation = (fg: RGB, bg: RGB = [1, 1, 1]): number => {\n const lumForeground = getLuminance(fg);\n const lumBackground = getLuminance(bg);\n\n return lumForeground >= lumBackground\n ? (lumForeground + LUM_SHIFT) / (lumBackground + LUM_SHIFT)\n : (lumBackground + LUM_SHIFT) / (lumForeground + LUM_SHIFT);\n};\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || 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; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DEFAULT_SIZE = 24;\n\nexports.default = function (_ref) {\n var _ref$fill = _ref.fill,\n fill = _ref$fill === undefined ? 'currentColor' : _ref$fill,\n _ref$width = _ref.width,\n width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height,\n _ref$style = _ref.style,\n style = _ref$style === undefined ? {} : _ref$style,\n props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']);\n\n return _react2.default.createElement(\n 'svg',\n _extends({\n viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE,\n style: _extends({ fill: fill, width: width, height: height }, style)\n }, props),\n _react2.default.createElement('path', { d: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z' })\n );\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || 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; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DEFAULT_SIZE = 24;\n\nexports.default = function (_ref) {\n var _ref$fill = _ref.fill,\n fill = _ref$fill === undefined ? 'currentColor' : _ref$fill,\n _ref$width = _ref.width,\n width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height,\n _ref$style = _ref.style,\n style = _ref$style === undefined ? {} : _ref$style,\n props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']);\n\n return _react2.default.createElement(\n 'svg',\n _extends({\n viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE,\n style: _extends({ fill: fill, width: width, height: height }, style)\n }, props),\n _react2.default.createElement('path', { d: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z' })\n );\n};","// eslint-disable-next-line import/no-unresolved\nmodule.exports = require('./build/OutsideClickHandler');\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","// extracted by mini-css-extract-plugin\nexport default {\"fadeOutContainer\":\"style-module_2vV6y\",\"hidden\":\"style-module_10ION\"};","import cl from 'classnames';\nimport style from './style.module.styl';\n\ninterface IProps {\n hidden: boolean;\n children: React.ReactNode;\n transitionDuration?: string;\n}\n\nconst FadeOutWrapper = ({ hidden = false, children, transitionDuration = '0.3s' }: IProps) => (\n \n {children}\n
\n);\n\nexport default FadeOutWrapper;\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n var operator = new CatchOperator(selector);\n var caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nvar CatchOperator = /*@__PURE__*/ (function () {\n function CatchOperator(selector) {\n this.selector = selector;\n }\n CatchOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n };\n return CatchOperator;\n}());\nvar CatchSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CatchSubscriber, _super);\n function CatchSubscriber(destination, selector, caught) {\n var _this = _super.call(this, destination) || this;\n _this.selector = selector;\n _this.caught = caught;\n return _this;\n }\n CatchSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var result = void 0;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n _super.prototype.error.call(this, err2);\n return;\n }\n this._unsubscribeAndRecycle();\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n this.add(innerSubscriber);\n subscribeToResult(this, result, undefined, undefined, innerSubscriber);\n }\n };\n return CatchSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=catchError.js.map\n","/** @license React v17.0.1\n * react-jsx-runtime.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'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v17.0.1\n * react.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'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').replace(/^.*?\\s+/, '');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n // because this line doesn't have function name\n var locationParts = this.extractLocation(location ? location[1] : sanitizedLine);\n var functionName = location && sanitizedLine || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(//, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n}(this, function(StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({functionName: RegExp.$1 || undefined, args: args}));\n } else {\n stack.push(new StackFrame({args: args}));\n }\n\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace-gps', ['source-map', 'stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('source-map/lib/source-map-consumer'), require('stackframe'));\n } else {\n root.StackTraceGPS = factory(root.SourceMap || root.sourceMap, root.StackFrame);\n }\n}(this, function(SourceMap, StackFrame) {\n 'use strict';\n\n /**\n * Make a X-Domain request to url and callback.\n *\n * @param {String} url\n * @returns {Promise} with response text if fulfilled\n */\n function _xdr(url) {\n return new Promise(function(resolve, reject) {\n var req = new XMLHttpRequest();\n req.open('get', url);\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if ((req.status >= 200 && req.status < 300) ||\n (url.substr(0, 7) === 'file://' && req.responseText)) {\n resolve(req.responseText);\n } else {\n reject(new Error('HTTP status: ' + req.status + ' retrieving ' + url));\n }\n }\n };\n req.send();\n });\n\n }\n\n /**\n * Convert a Base64-encoded string into its original representation.\n * Used for inline sourcemaps.\n *\n * @param {String} b64str Base-64 encoded string\n * @returns {String} original representation of the base64-encoded string.\n */\n function _atob(b64str) {\n if (typeof window !== 'undefined' && window.atob) {\n return window.atob(b64str);\n } else {\n throw new Error('You must supply a polyfill for window.atob in this environment');\n }\n }\n\n function _parseJson(string) {\n if (typeof JSON !== 'undefined' && JSON.parse) {\n return JSON.parse(string);\n } else {\n throw new Error('You must supply a polyfill for JSON.parse in this environment');\n }\n }\n\n function _findFunctionName(source, lineNumber/*, columnNumber*/) {\n var syntaxes = [\n // {name} = function ({args}) TODO args capture\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*function\\b/,\n // function {name}({args}) m[1]=name m[2]=args\n /function\\s+([^('\"`]*?)\\s*\\(([^)]*)\\)/,\n // {name} = eval()\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*(?:eval|new Function)\\b/,\n // fn_name() {\n /\\b(?!(?:if|for|switch|while|with|catch)\\b)(?:(?:static)\\s+)?(\\S+)\\s*\\(.*?\\)\\s*\\{/,\n // {name} = () => {\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*\\(.*?\\)\\s*=>/\n ];\n var lines = source.split('\\n');\n\n // Walk backwards in the source lines until we find the line which matches one of the patterns above\n var code = '';\n var maxLines = Math.min(lineNumber, 20);\n for (var i = 0; i < maxLines; ++i) {\n // lineNo is 1-based, source[] is 0-based\n var line = lines[lineNumber - i - 1];\n var commentPos = line.indexOf('//');\n if (commentPos >= 0) {\n line = line.substr(0, commentPos);\n }\n\n if (line) {\n code = line + code;\n var len = syntaxes.length;\n for (var index = 0; index < len; index++) {\n var m = syntaxes[index].exec(code);\n if (m && m[1]) {\n return m[1];\n }\n }\n }\n }\n return undefined;\n }\n\n function _ensureSupportedEnvironment() {\n if (typeof Object.defineProperty !== 'function' || typeof Object.create !== 'function') {\n throw new Error('Unable to consume source maps in older browsers');\n }\n }\n\n function _ensureStackFrameIsLegit(stackframe) {\n if (typeof stackframe !== 'object') {\n throw new TypeError('Given StackFrame is not an object');\n } else if (typeof stackframe.fileName !== 'string') {\n throw new TypeError('Given file name is not a String');\n } else if (typeof stackframe.lineNumber !== 'number' ||\n stackframe.lineNumber % 1 !== 0 ||\n stackframe.lineNumber < 1) {\n throw new TypeError('Given line number must be a positive integer');\n } else if (typeof stackframe.columnNumber !== 'number' ||\n stackframe.columnNumber % 1 !== 0 ||\n stackframe.columnNumber < 0) {\n throw new TypeError('Given column number must be a non-negative integer');\n }\n return true;\n }\n\n function _findSourceMappingURL(source) {\n var sourceMappingUrlRegExp = /\\/\\/[#@] ?sourceMappingURL=([^\\s'\"]+)\\s*$/mg;\n var lastSourceMappingUrl;\n var matchSourceMappingUrl;\n // eslint-disable-next-line no-cond-assign\n while (matchSourceMappingUrl = sourceMappingUrlRegExp.exec(source)) {\n lastSourceMappingUrl = matchSourceMappingUrl[1];\n }\n if (lastSourceMappingUrl) {\n return lastSourceMappingUrl;\n } else {\n throw new Error('sourceMappingURL not found');\n }\n }\n\n function _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache) {\n return new Promise(function(resolve, reject) {\n var loc = sourceMapConsumer.originalPositionFor({\n line: stackframe.lineNumber,\n column: stackframe.columnNumber\n });\n\n if (loc.source) {\n // cache mapped sources\n var mappedSource = sourceMapConsumer.sourceContentFor(loc.source);\n if (mappedSource) {\n sourceCache[loc.source] = mappedSource;\n }\n\n resolve(\n // given stackframe and source location, update stackframe\n new StackFrame({\n functionName: loc.name || stackframe.functionName,\n args: stackframe.args,\n fileName: loc.source,\n lineNumber: loc.line,\n columnNumber: loc.column\n }));\n } else {\n reject(new Error('Could not get original source for given stackframe and source map'));\n }\n });\n }\n\n /**\n * @constructor\n * @param {Object} opts\n * opts.sourceCache = {url: \"Source String\"} => preload source cache\n * opts.sourceMapConsumerCache = {/path/file.js.map: SourceMapConsumer}\n * opts.offline = True to prevent network requests.\n * Best effort without sources or source maps.\n * opts.ajax = Promise returning function to make X-Domain requests\n */\n return function StackTraceGPS(opts) {\n if (!(this instanceof StackTraceGPS)) {\n return new StackTraceGPS(opts);\n }\n opts = opts || {};\n\n this.sourceCache = opts.sourceCache || {};\n this.sourceMapConsumerCache = opts.sourceMapConsumerCache || {};\n\n this.ajax = opts.ajax || _xdr;\n\n this._atob = opts.atob || _atob;\n\n this._get = function _get(location) {\n return new Promise(function(resolve, reject) {\n var isDataUrl = location.substr(0, 5) === 'data:';\n if (this.sourceCache[location]) {\n resolve(this.sourceCache[location]);\n } else if (opts.offline && !isDataUrl) {\n reject(new Error('Cannot make network requests in offline mode'));\n } else {\n if (isDataUrl) {\n // data URLs can have parameters.\n // see http://tools.ietf.org/html/rfc2397\n var supportedEncodingRegexp =\n /^data:application\\/json;([\\w=:\"-]+;)*base64,/;\n var match = location.match(supportedEncodingRegexp);\n if (match) {\n var sourceMapStart = match[0].length;\n var encodedSource = location.substr(sourceMapStart);\n var source = this._atob(encodedSource);\n this.sourceCache[location] = source;\n resolve(source);\n } else {\n reject(new Error('The encoding of the inline sourcemap is not supported'));\n }\n } else {\n var xhrPromise = this.ajax(location, {method: 'get'});\n // Cache the Promise to prevent duplicate in-flight requests\n this.sourceCache[location] = xhrPromise;\n xhrPromise.then(resolve, reject);\n }\n }\n }.bind(this));\n };\n\n /**\n * Creating SourceMapConsumers is expensive, so this wraps the creation of a\n * SourceMapConsumer in a per-instance cache.\n *\n * @param {String} sourceMappingURL = URL to fetch source map from\n * @param {String} defaultSourceRoot = Default source root for source map if undefined\n * @returns {Promise} that resolves a SourceMapConsumer\n */\n this._getSourceMapConsumer = function _getSourceMapConsumer(sourceMappingURL, defaultSourceRoot) {\n return new Promise(function(resolve) {\n if (this.sourceMapConsumerCache[sourceMappingURL]) {\n resolve(this.sourceMapConsumerCache[sourceMappingURL]);\n } else {\n var sourceMapConsumerPromise = new Promise(function(resolve, reject) {\n return this._get(sourceMappingURL).then(function(sourceMapSource) {\n if (typeof sourceMapSource === 'string') {\n sourceMapSource = _parseJson(sourceMapSource.replace(/^\\)\\]\\}'/, ''));\n }\n if (typeof sourceMapSource.sourceRoot === 'undefined') {\n sourceMapSource.sourceRoot = defaultSourceRoot;\n }\n\n resolve(new SourceMap.SourceMapConsumer(sourceMapSource));\n }).catch(reject);\n }.bind(this));\n this.sourceMapConsumerCache[sourceMappingURL] = sourceMapConsumerPromise;\n resolve(sourceMapConsumerPromise);\n }\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, enhance function name and use source maps for a\n * better StackFrame.\n *\n * @param {StackFrame} stackframe object\n * @returns {Promise} that resolves with with source-mapped StackFrame\n */\n this.pinpoint = function StackTraceGPS$$pinpoint(stackframe) {\n return new Promise(function(resolve, reject) {\n this.getMappedLocation(stackframe).then(function(mappedStackFrame) {\n function resolveMappedStackFrame() {\n resolve(mappedStackFrame);\n }\n\n this.findFunctionName(mappedStackFrame)\n .then(resolve, resolveMappedStackFrame)\n // eslint-disable-next-line no-unexpected-multiline\n ['catch'](resolveMappedStackFrame);\n }.bind(this), reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, guess function name from location information.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.findFunctionName = function StackTraceGPS$$findFunctionName(stackframe) {\n return new Promise(function(resolve, reject) {\n _ensureStackFrameIsLegit(stackframe);\n this._get(stackframe.fileName).then(function getSourceCallback(source) {\n var lineNumber = stackframe.lineNumber;\n var columnNumber = stackframe.columnNumber;\n var guessedFunctionName = _findFunctionName(source, lineNumber, columnNumber);\n // Only replace functionName if we found something\n if (guessedFunctionName) {\n resolve(new StackFrame({\n functionName: guessedFunctionName,\n args: stackframe.args,\n fileName: stackframe.fileName,\n lineNumber: lineNumber,\n columnNumber: columnNumber\n }));\n } else {\n resolve(stackframe);\n }\n }, reject)['catch'](reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, seek source-mapped location and return new enhanced StackFrame.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.getMappedLocation = function StackTraceGPS$$getMappedLocation(stackframe) {\n return new Promise(function(resolve, reject) {\n _ensureSupportedEnvironment();\n _ensureStackFrameIsLegit(stackframe);\n\n var sourceCache = this.sourceCache;\n var fileName = stackframe.fileName;\n this._get(fileName).then(function(source) {\n var sourceMappingURL = _findSourceMappingURL(source);\n var isDataUrl = sourceMappingURL.substr(0, 5) === 'data:';\n var defaultSourceRoot = fileName.substring(0, fileName.lastIndexOf('/') + 1);\n\n if (sourceMappingURL[0] !== '/' && !isDataUrl && !(/^https?:\\/\\/|^\\/\\//i).test(sourceMappingURL)) {\n sourceMappingURL = defaultSourceRoot + sourceMappingURL;\n }\n\n return this._getSourceMapConsumer(sourceMappingURL, defaultSourceRoot)\n .then(function(sourceMapConsumer) {\n return _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache)\n .then(resolve)['catch'](function() {\n resolve(stackframe);\n });\n });\n }.bind(this), reject)['catch'](reject);\n }.bind(this));\n };\n };\n}));\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are removed from this array, by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var shiftNextLine = function() {\n var lineContents = remainingLines.shift();\n // The last line of a file might not have a newline.\n var newLine = remainingLines.shift() || \"\";\n return lineContents + newLine;\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[0];\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLines.length > 0) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","module.exports = __webpack_public_path__ + \"js/0-18790e427401645caf4c.chunk.worker.js\"","module.exports = __webpack_public_path__ + \"js/1-e8b3e149cbd1053b8f3e.chunk.worker.js\"","module.exports = __webpack_public_path__ + \"js/2-48e87895816ca82834b9.chunk.worker.js\"","module.exports = __webpack_public_path__ + \"js/3-67608e5f11885aba6d6c.chunk.worker.js\"","module.exports = __webpack_public_path__ + \"js/4-fc33abe8707b3b90e9a5.chunk.worker.js\"","module.exports = __webpack_public_path__ + \"js/5-62476b1c345865b38393.chunk.worker.js\"","module.exports = __webpack_public_path__ + \"js/6-c8d0e3f8cd88e8646a31.chunk.worker.js\"","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","var Module;if(!Module)Module=(typeof Module!==\"undefined\"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module[\"ENVIRONMENT\"]){if(Module[\"ENVIRONMENT\"]===\"WEB\"){ENVIRONMENT_IS_WEB=true}else if(Module[\"ENVIRONMENT\"]===\"WORKER\"){ENVIRONMENT_IS_WORKER=true}else if(Module[\"ENVIRONMENT\"]===\"NODE\"){ENVIRONMENT_IS_NODE=true}else if(Module[\"ENVIRONMENT\"]===\"SHELL\"){ENVIRONMENT_IS_SHELL=true}else{throw new Error(\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\")}}else{ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof require===\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module[\"print\"])Module[\"print\"]=console.log;if(!Module[\"printErr\"])Module[\"printErr\"]=console.warn;var nodeFS;var nodePath;Module[\"read\"]=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);var ret=nodeFS[\"readFileSync\"](filename);return binary?ret:ret.toString()};Module[\"readBinary\"]=function readBinary(filename){var ret=Module[\"read\"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module[\"load\"]=function load(f){globalEval(read(f))};if(!Module[\"thisProgram\"]){if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}else{Module[\"thisProgram\"]=\"unknown-program\"}}Module[\"arguments\"]=process[\"argv\"].slice(2);if(typeof module!==\"undefined\"){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module[\"inspect\"]=(function(){return\"[Emscripten Module object]\"})}else if(ENVIRONMENT_IS_SHELL){if(!Module[\"print\"])Module[\"print\"]=print;if(typeof printErr!=\"undefined\")Module[\"printErr\"]=printErr;if(typeof read!=\"undefined\"){Module[\"read\"]=read}else{Module[\"read\"]=function shell_read(){throw\"no read() available\"}}Module[\"readBinary\"]=function readBinary(f){if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}var data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof quit===\"function\"){Module[\"quit\"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module[\"read\"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module[\"readBinary\"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}Module[\"readAsync\"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof console!==\"undefined\"){if(!Module[\"print\"])Module[\"print\"]=function shell_print(x){console.log(x)};if(!Module[\"printErr\"])Module[\"printErr\"]=function shell_printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module[\"print\"])Module[\"print\"]=TRY_USE_DUMP&&typeof dump!==\"undefined\"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module[\"load\"]=importScripts}if(typeof Module[\"setWindowTitle\"]===\"undefined\"){Module[\"setWindowTitle\"]=(function(title){document.title=title})}}else{throw\"Unknown runtime environment. Where are we?\"}function globalEval(x){eval.call(null,x)}if(!Module[\"load\"]&&Module[\"read\"]){Module[\"load\"]=function load(f){globalEval(Module[\"read\"](f))}}if(!Module[\"print\"]){Module[\"print\"]=(function(){})}if(!Module[\"printErr\"]){Module[\"printErr\"]=Module[\"print\"]}if(!Module[\"arguments\"]){Module[\"arguments\"]=[]}if(!Module[\"thisProgram\"]){Module[\"thisProgram\"]=\"./this.program\"}if(!Module[\"quit\"]){Module[\"quit\"]=(function(status,toThrow){throw toThrow})}Module.print=Module[\"print\"];Module.printErr=Module[\"printErr\"];Module[\"preRun\"]=[];Module[\"postRun\"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return Runtime.QUANTUM_SIZE}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type===\"double\"||type===\"i64\"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type==\"i64\"||type==\"double\"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module[\"dynCall_\"+sig].apply(null,[ptr].concat(args))}else{return Module[\"dynCall_\"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module[\"Runtime\"]=Runtime;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];if(!func){try{func=eval(\"_\"+ident)}catch(e){}}assert(func,\"Cannot call unknown function \"+ident+\" (perhaps LLVM optimizations or closure removed it?)\");return func}var cwrap,ccall;((function(){var JSfuncs={\"stackSave\":(function(){Runtime.stackSave()}),\"stackRestore\":(function(){Runtime.stackRestore()}),\"arrayToC\":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),\"stringToC\":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={\"string\":JSfuncs[\"stringToC\"],\"array\":JSfuncs[\"arrayToC\"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}Module[\"setValue\"]=setValue;function getValue(ptr,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":return HEAP8[ptr>>0];case\"i8\":return HEAP8[ptr>>0];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":return HEAP32[ptr>>2];case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];default:abort(\"invalid type for setValue: \"+type)}return null}Module[\"getValue\"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module[\"ALLOC_NORMAL\"]=ALLOC_NORMAL;Module[\"ALLOC_STACK\"]=ALLOC_STACK;Module[\"ALLOC_STATIC\"]=ALLOC_STATIC;Module[\"ALLOC_DYNAMIC\"]=ALLOC_DYNAMIC;Module[\"ALLOC_NONE\"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab===\"number\"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types===\"string\"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc===\"function\"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType===\"i8\"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret=\"\";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module[\"UTF8ToString\"](ptr)}Module[\"Pointer_stringify\"]=Pointer_stringify;function AsciiToString(ptr){var str=\"\";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module[\"AsciiToString\"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module[\"stringToAscii\"]=stringToAscii;var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str=\"\";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}Module[\"UTF8ArrayToString\"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module[\"UTF8ToString\"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module[\"stringToUTF8Array\"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module[\"stringToUTF8\"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module[\"lengthBytesUTF8\"]=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function demangle(func){var __cxa_demangle_func=Module[\"___cxa_demangle\"]||Module[\"__cxa_demangle\"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,\"i32\")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce(\"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\");return func}function demangleAll(text){var regex=/__Z[\\w\\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+\" [\"+y+\"]\"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module[\"extraStackTrace\"])js+=\"\\n\"+Module[\"extraStackTrace\"]();return demangleAll(js)}Module[\"stackTrace\"]=stackTrace;var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;var MIN_TOTAL_MEMORY=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module[\"buffer\"]=buffer=buf}function updateGlobalBufferViews(){Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \")}if(!Module[\"reallocBuffer\"])Module[\"reallocBuffer\"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var PAGE_MULTIPLE=Module[\"usingWasm\"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;var LIMIT=2147483648-PAGE_MULTIPLE;if(HEAP32[DYNAMICTOP_PTR>>2]>LIMIT){return false}var OLD_TOTAL_MEMORY=TOTAL_MEMORY;TOTAL_MEMORY=Math.max(TOTAL_MEMORY,MIN_TOTAL_MEMORY);while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY<=536870912){TOTAL_MEMORY=alignUp(2*TOTAL_MEMORY,PAGE_MULTIPLE)}else{TOTAL_MEMORY=Math.min(alignUp((3*TOTAL_MEMORY+2147483648)/4,PAGE_MULTIPLE),LIMIT)}}var replacement=Module[\"reallocBuffer\"](TOTAL_MEMORY);if(!replacement||replacement.byteLength!=TOTAL_MEMORY){TOTAL_MEMORY=OLD_TOTAL_MEMORY;return false}updateGlobalBuffer(replacement);updateGlobalBufferViews();return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,\"byteLength\").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module[\"TOTAL_STACK\"]||5242880;var TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module[\"addOnPreRun\"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module[\"addOnInit\"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module[\"addOnPreMain\"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module[\"addOnExit\"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module[\"addOnPostRun\"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module[\"intArrayFromString\"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}Module[\"intArrayToString\"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){Runtime.warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");var lastChar,end;if(dontAddNull){end=buffer+lengthBytesUTF8(string);lastChar=HEAP8[end]}stringToUTF8(string,buffer,Infinity);if(dontAddNull)HEAP8[end]=lastChar}Module[\"writeStringToMemory\"]=writeStringToMemory;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}Module[\"writeArrayToMemory\"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module[\"writeAsciiToMemory\"]=writeAsciiToMemory;if(!Math[\"imul\"]||Math[\"imul\"](4294967295,5)!==-5)Math[\"imul\"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math[\"imul\"];if(!Math[\"clz32\"])Math[\"clz32\"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math[\"clz32\"];if(!Math[\"trunc\"])Math[\"trunc\"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math[\"trunc\"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}Module[\"addRunDependency\"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"removeRunDependency\"]=removeRunDependency;Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var ASM_CONSTS=[];STATIC_BASE=Runtime.GLOBAL_BASE;STATICTOP=STATIC_BASE+8624;__ATINIT__.push();allocate([116,2,0,0,148,2,0,0,24,0,0,0,0,0,0,0,76,2,0,0,170,2,0,0,116,2,0,0,190,2,0,0,24,0,0,0,0,0,0,0,116,2,0,0,209,26,0,0,24,0,0,0,0,0,0,0,116,2,0,0,63,27,0,0,80,0,0,0,0,0,0,0,116,2,0,0,236,26,0,0,96,0,0,0,0,0,0,0,76,2,0,0,13,27,0,0,116,2,0,0,26,27,0,0,64,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,24,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,32,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,48,0,0,0,5,0,0,0,6,0,0,0,209,2,0,0,209,8,0,0,209,2,0,0,209,14,0,0,209,20,0,0,209,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,172,29,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,1,0,0,0,0,0,0,64,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,104,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,78,54,115,113,117,105,115,104,49,48,67,108,117,115,116,101,114,70,105,116,69,0,78,54,115,113,117,105,115,104,57,67,111,108,111,117,114,70,105,116,69,0,78,54,115,113,117,105,115,104,56,82,97,110,103,101,70,105,116,69,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,2,0,1,0,0,0,3,0,1,1,0,0,4,0,2,1,1,0,3,0,2,0,1,0,2,0,2,1,1,0,1,0,3,1,1,0,0,0,3,0,1,0,1,1,2,1,1,0,2,1,2,0,1,0,3,0,4,0,1,0,4,0,5,1,2,0,3,0,5,0,2,0,2,0,5,1,2,0,1,0,6,1,2,0,0,0,6,0,2,0,1,2,3,1,2,0,2,2,3,0,2,0,3,0,7,0,2,0,4,1,6,1,3,0,3,1,6,0,3,0,2,0,8,0,3,0,1,0,9,1,3,0,0,0,9,0,3,0,1,0,9,1,3,0,2,0,10,1,3,0,3,0,10,0,3,0,4,2,7,1,4,0,4,2,7,0,4,0,3,0,11,0,4,0,2,1,10,1,4,0,1,1,10,0,4,0,0,0,12,0,4,0,1,0,13,1,4,0,2,0,13,0,4,0,3,0,13,1,4,0,4,0,14,1,5,0,3,0,14,0,5,0,2,2,11,1,5,0,1,2,11,0,5,0,0,0,15,0,5,0,1,1,14,1,5,0,2,1,14,0,5,0,3,0,16,0,5,0,4,0,17,1,6,0,3,0,17,0,6,0,2,0,17,1,6,0,1,0,18,1,6,0,0,0,18,0,6,0,1,2,15,1,6,0,2,2,15,0,6,0,3,0,19,0,6,0,4,1,18,1,7,0,3,1,18,0,7,0,2,0,20,0,7,0,1,0,21,1,7,0,0,0,21,0,7,0,1,0,21,1,7,0,2,0,22,1,7,0,3,0,22,0,7,0,4,2,19,1,8,0,4,2,19,0,8,0,3,0,23,0,8,0,2,1,22,1,8,0,1,1,22,0,8,0,0,0,24,0,8,0,1,0,25,1,8,0,2,0,25,0,8,0,3,0,25,1,8,0,4,0,26,1,9,0,3,0,26,0,9,0,2,2,23,1,9,0,1,2,23,0,9,0,0,0,27,0,9,0,1,1,26,1,9,0,2,1,26,0,9,0,3,0,28,0,9,0,4,0,29,1,10,0,3,0,29,0,10,0,2,0,29,1,10,0,1,0,30,1,10,0,0,0,30,0,10,0,1,2,27,1,10,0,2,2,27,0,10,0,3,0,31,0,10,0,4,1,30,1,11,0,3,1,30,0,11,0,2,4,24,0,11,0,1,1,31,1,11,0,0,1,31,0,11,0,1,1,31,1,11,0,2,2,30,1,11,0,3,2,30,0,11,0,4,2,31,1,12,0,4,2,31,0,12,0,3,4,27,0,12,0,2,3,30,1,12,0,1,3,30,0,12,0,0,4,28,0,12,0,1,3,31,1,12,0,2,3,31,0,12,0,3,3,31,1,12,0,4,4,30,1,13,0,3,4,30,0,13,0,2,6,27,1,13,0,1,6,27,0,13,0,0,4,31,0,13,0,1,5,30,1,13,0,2,5,30,0,13,0,3,8,24,0,13,0,4,5,31,1,14,0,3,5,31,0,14,0,2,5,31,1,14,0,1,6,30,1,14,0,0,6,30,0,14,0,1,6,31,1,14,0,2,6,31,0,14,0,3,8,27,0,14,0,4,7,30,1,15,0,3,7,30,0,15,0,2,8,28,0,15,0,1,7,31,1,15,0,0,7,31,0,15,0,1,7,31,1,15,0,2,8,30,1,15,0,3,8,30,0,15,0,4,10,27,1,16,0,4,10,27,0,16,0,3,8,31,0,16,0,2,9,30,1,16,0,1,9,30,0,16,0,0,12,24,0,16,0,1,9,31,1,16,0,2,9,31,0,16,0,3,9,31,1,16,0,4,10,30,1,17,0,3,10,30,0,17,0,2,10,31,1,17,0,1,10,31,0,17,0,0,12,27,0,17,0,1,11,30,1,17,0,2,11,30,0,17,0,3,12,28,0,17,0,4,11,31,1,18,0,3,11,31,0,18,0,2,11,31,1,18,0,1,12,30,1,18,0,0,12,30,0,18,0,1,14,27,1,18,0,2,14,27,0,18,0,3,12,31,0,18,0,4,13,30,1,19,0,3,13,30,0,19,0,2,16,24,0,19,0,1,13,31,1,19,0,0,13,31,0,19,0,1,13,31,1,19,0,2,14,30,1,19,0,3,14,30,0,19,0,4,14,31,1,20,0,4,14,31,0,20,0,3,16,27,0,20,0,2,15,30,1,20,0,1,15,30,0,20,0,0,16,28,0,20,0,1,15,31,1,20,0,2,15,31,0,20,0,3,15,31,1,20,0,4,16,30,1,21,0,3,16,30,0,21,0,2,18,27,1,21,0,1,18,27,0,21,0,0,16,31,0,21,0,1,17,30,1,21,0,2,17,30,0,21,0,3,20,24,0,21,0,4,17,31,1,22,0,3,17,31,0,22,0,2,17,31,1,22,0,1,18,30,1,22,0,0,18,30,0,22,0,1,18,31,1,22,0,2,18,31,0,22,0,3,20,27,0,22,0,4,19,30,1,23,0,3,19,30,0,23,0,2,20,28,0,23,0,1,19,31,1,23,0,0,19,31,0,23,0,1,19,31,1,23,0,2,20,30,1,23,0,3,20,30,0,23,0,4,22,27,1,24,0,4,22,27,0,24,0,3,20,31,0,24,0,2,21,30,1,24,0,1,21,30,0,24,0,0,24,24,0,24,0,1,21,31,1,24,0,2,21,31,0,24,0,3,21,31,1,24,0,4,22,30,1,25,0,3,22,30,0,25,0,2,22,31,1,25,0,1,22,31,0,25,0,0,24,27,0,25,0,1,23,30,1,25,0,2,23,30,0,25,0,3,24,28,0,25,0,4,23,31,1,26,0,3,23,31,0,26,0,2,23,31,1,26,0,1,24,30,1,26,0,0,24,30,0,26,0,1,26,27,1,26,0,2,26,27,0,26,0,3,24,31,0,26,0,4,25,30,1,27,0,3,25,30,0,27,0,2,28,24,0,27,0,1,25,31,1,27,0,0,25,31,0,27,0,1,25,31,1,27,0,2,26,30,1,27,0,3,26,30,0,27,0,4,26,31,1,28,0,4,26,31,0,28,0,3,28,27,0,28,0,2,27,30,1,28,0,1,27,30,0,28,0,0,28,28,0,28,0,1,27,31,1,28,0,2,27,31,0,28,0,3,27,31,1,28,0,4,28,30,1,29,0,3,28,30,0,29,0,2,30,27,1,29,0,1,30,27,0,29,0,0,28,31,0,29,0,1,29,30,1,29,0,2,29,30,0,29,0,3,29,30,1,29,0,4,29,31,1,30,0,3,29,31,0,30,0,2,29,31,1,30,0,1,30,30,1,30,0,0,30,30,0,30,0,1,30,31,1,30,0,2,30,31,0,30,0,3,30,31,1,30,0,4,31,30,1,31,0,3,31,30,0,31,0,2,31,30,1,31,0,1,31,31,1,31,0,0,31,31,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,2,0,2,0,1,0,1,0,3,1,1,0,0,0,3,0,1,0,1,0,4,0,1,0,2,0,5,0,2,0,1,0,6,1,2,0,0,0,6,0,2,0,1,0,7,0,2,0,2,0,8,0,3,0,1,0,9,1,3,0,0,0,9,0,3,0,1,0,10,0,3,0,2,0,11,0,4,0,1,0,12,1,4,0,0,0,12,0,4,0,1,0,13,0,4,0,2,0,14,0,5,0,1,0,15,1,5,0,0,0,15,0,5,0,1,0,16,0,5,0,2,1,15,0,6,0,1,0,17,0,6,0,0,0,18,0,6,0,1,0,19,0,6,0,2,3,14,0,7,0,1,0,20,0,7,0,0,0,21,0,7,0,1,0,22,0,7,0,2,4,15,0,8,0,1,0,23,0,8,0,0,0,24,0,8,0,1,0,25,0,8,0,2,6,14,0,9,0,1,0,26,0,9,0,0,0,27,0,9,0,1,0,28,0,9,0,2,7,15,0,10,0,1,0,29,0,10,0,0,0,30,0,10,0,1,0,31,0,10,0,2,9,14,0,11,0,1,0,32,0,11,0,0,0,33,0,11,0,1,2,30,0,11,0,2,0,34,0,12,0,1,0,35,0,12,0,0,0,36,0,12,0,1,3,31,0,12,0,2,0,37,0,13,0,1,0,38,0,13,0,0,0,39,0,13,0,1,5,30,0,13,0,2,0,40,0,14,0,1,0,41,0,14,0,0,0,42,0,14,0,1,6,31,0,14,0,2,0,43,0,15,0,1,0,44,0,15,0,0,0,45,0,15,0,1,8,30,0,15,0,2,0,46,0,16,0,2,0,47,0,16,0,1,1,46,0,16,0,0,0,48,0,16,0,1,0,49,0,16,0,2,0,50,0,17,0,1,2,47,0,17,0,0,0,51,0,17,0,1,0,52,0,17,0,2,0,53,0,18,0,1,4,46,0,18,0,0,0,54,0,18,0,1,0,55,0,18,0,2,0,56,0,19,0,1,5,47,0,19,0,0,0,57,0,19,0,1,0,58,0,19,0,2,0,59,0,20,0,1,7,46,0,20,0,0,0,60,0,20,0,1,0,61,0,20,0,2,0,62,0,21,0,1,8,47,0,21,0,0,0,63,0,21,0,1,1,62,0,21,0,2,1,63,0,22,0,1,10,46,0,22,0,0,2,62,0,22,0,1,2,63,0,22,0,2,3,62,0,23,0,1,11,47,0,23,0,0,3,63,0,23,0,1,4,62,0,23,0,2,4,63,0,24,0,1,13,46,0,24,0,0,5,62,0,24,0,1,5,63,0,24,0,2,6,62,0,25,0,1,14,47,0,25,0,0,6,63,0,25,0,1,7,62,0,25,0,2,7,63,0,26,0,1,16,45,0,26,0,0,8,62,0,26,0,1,8,63,0,26,0,2,9,62,0,27,0,1,16,48,0,27,0,0,9,63,0,27,0,1,10,62,0,27,0,2,10,63,0,28,0,1,16,51,0,28,0,0,11,62,0,28,0,1,11,63,0,28,0,2,12,62,0,29,0,1,16,54,0,29,0,0,12,63,0,29,0,1,13,62,0,29,0,2,13,63,0,30,0,1,16,57,0,30,0,0,14,62,0,30,0,1,14,63,0,30,0,2,15,62,0,31,0,1,16,60,0,31,0,0,15,63,0,31,0,1,24,46,0,31,0,2,16,62,0,32,0,2,16,63,0,32,0,1,17,62,0,32,0,0,25,47,0,32,0,1,17,63,0,32,0,2,18,62,0,33,0,1,18,63,0,33,0,0,27,46,0,33,0,1,19,62,0,33,0,2,19,63,0,34,0,1,20,62,0,34,0,0,28,47,0,34,0,1,20,63,0,34,0,2,21,62,0,35,0,1,21,63,0,35,0,0,30,46,0,35,0,1,22,62,0,35,0,2,22,63,0,36,0,1,23,62,0,36,0,0,31,47,0,36,0,1,23,63,0,36,0,2,24,62,0,37,0,1,24,63,0,37,0,0,32,47,0,37,0,1,25,62,0,37,0,2,25,63,0,38,0,1,26,62,0,38,0,0,32,50,0,38,0,1,26,63,0,38,0,2,27,62,0,39,0,1,27,63,0,39,0,0,32,53,0,39,0,1,28,62,0,39,0,2,28,63,0,40,0,1,29,62,0,40,0,0,32,56,0,40,0,1,29,63,0,40,0,2,30,62,0,41,0,1,30,63,0,41,0,0,32,59,0,41,0,1,31,62,0,41,0,2,31,63,0,42,0,1,32,61,0,42,0,0,32,62,0,42,0,1,32,63,0,42,0,2,41,46,0,43,0,1,33,62,0,43,0,0,33,63,0,43,0,1,34,62,0,43,0,2,42,47,0,44,0,1,34,63,0,44,0,0,35,62,0,44,0,1,35,63,0,44,0,2,44,46,0,45,0,1,36,62,0,45,0,0,36,63,0,45,0,1,37,62,0,45,0,2,45,47,0,46,0,1,37,63,0,46,0,0,38,62,0,46,0,1,38,63,0,46,0,2,47,46,0,47,0,1,39,62,0,47,0,0,39,63,0,47,0,1,40,62,0,47,0,2,48,46,0,48,0,2,40,63,0,48,0,1,41,62,0,48,0,0,41,63,0,48,0,1,48,49,0,48,0,2,42,62,0,49,0,1,42,63,0,49,0,0,43,62,0,49,0,1,48,52,0,49,0,2,43,63,0,50,0,1,44,62,0,50,0,0,44,63,0,50,0,1,48,55,0,50,0,2,45,62,0,51,0,1,45,63,0,51,0,0,46,62,0,51,0,1,48,58,0,51,0,2,46,63,0,52,0,1,47,62,0,52,0,0,47,63,0,52,0,1,48,61,0,52,0,2,48,62,0,53,0,1,56,47,0,53,0,0,48,63,0,53,0,1,49,62,0,53,0,2,49,63,0,54,0,1,58,46,0,54,0,0,50,62,0,54,0,1,50,63,0,54,0,2,51,62,0,55,0,1,59,47,0,55,0,0,51,63,0,55,0,1,52,62,0,55,0,2,52,63,0,56,0,1,61,46,0,56,0,0,53,62,0,56,0,1,53,63,0,56,0,2,54,62,0,57,0,1,62,47,0,57,0,0,54,63,0,57,0,1,55,62,0,57,0,2,55,63,0,58,0,1,56,62,1,58,0,0,56,62,0,58,0,1,56,63,0,58,0,2,57,62,0,59,0,1,57,63,1,59,0,0,57,63,0,59,0,1,58,62,0,59,0,2,58,63,0,60,0,1,59,62,1,60,0,0,59,62,0,60,0,1,59,63,0,60,0,2,60,62,0,61,0,1,60,63,1,61,0,0,60,63,0,61,0,1,61,62,0,61,0,2,61,63,0,62,0,1,62,62,1,62,0,0,62,62,0,62,0,1,62,63,0,62,0,2,63,62,0,63,0,1,63,63,1,63,0,0,63,63,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,2,0,0,2,0,0,3,0,1,1,0,0,4,0,1,0,1,0,3,0,1,1,1,0,2,0,1,2,1,0,1,0,2,1,1,0,0,0,2,0,1,0,1,0,2,1,1,0,2,0,2,2,1,0,3,0,3,1,1,0,4,0,3,0,2,0,3,0,3,1,2,0,2,0,3,2,2,0,1,0,4,1,2,0,0,0,4,0,2,0,1,0,4,1,2,0,2,0,4,2,2,0,3,0,5,1,2,0,4,0,5,0,3,0,3,0,5,1,3,0,2,0,5,2,3,0,1,0,6,1,3,0,0,0,6,0,3,0,1,0,6,1,3,0,2,0,6,2,3,0,3,0,7,1,3,0,4,0,7,0,4,0,4,0,7,1,4,0,3,0,7,2,4,0,2,1,7,1,4,0,1,1,7,0,4,0,0,0,8,0,4,0,1,0,8,1,4,0,2,2,7,1,4,0,3,2,7,0,4,0,4,0,9,0,5,0,3,0,9,1,5,0,2,3,7,1,5,0,1,3,7,0,5,0,0,0,10,0,5,0,1,0,10,1,5,0,2,0,10,2,5,0,3,0,11,1,5,0,4,0,11,0,6,0,3,0,11,1,6,0,2,0,11,2,6,0,1,0,12,1,6,0,0,0,12,0,6,0,1,0,12,1,6,0,2,0,12,2,6,0,3,0,13,1,6,0,4,0,13,0,7,0,3,0,13,1,7,0,2,0,13,2,7,0,1,0,14,1,7,0,0,0,14,0,7,0,1,0,14,1,7,0,2,0,14,2,7,0,3,0,15,1,7,0,4,0,15,0,8,0,4,0,15,1,8,0,3,0,15,2,8,0,2,1,15,1,8,0,1,1,15,0,8,0,0,0,16,0,8,0,1,0,16,1,8,0,2,2,15,1,8,0,3,2,15,0,8,0,4,0,17,0,9,0,3,0,17,1,9,0,2,3,15,1,9,0,1,3,15,0,9,0,0,0,18,0,9,0,1,0,18,1,9,0,2,0,18,2,9,0,3,0,19,1,9,0,4,0,19,0,10,0,3,0,19,1,10,0,2,0,19,2,10,0,1,0,20,1,10,0,0,0,20,0,10,0,1,0,20,1,10,0,2,0,20,2,10,0,3,0,21,1,10,0,4,0,21,0,11,0,3,0,21,1,11,0,2,0,21,2,11,0,1,0,22,1,11,0,0,0,22,0,11,0,1,0,22,1,11,0,2,0,22,2,11,0,3,0,23,1,11,0,4,0,23,0,12,0,4,0,23,1,12,0,3,0,23,2,12,0,2,1,23,1,12,0,1,1,23,0,12,0,0,0,24,0,12,0,1,0,24,1,12,0,2,2,23,1,12,0,3,2,23,0,12,0,4,0,25,0,13,0,3,0,25,1,13,0,2,3,23,1,13,0,1,3,23,0,13,0,0,0,26,0,13,0,1,0,26,1,13,0,2,0,26,2,13,0,3,0,27,1,13,0,4,0,27,0,14,0,3,0,27,1,14,0,2,0,27,2,14,0,1,0,28,1,14,0,0,0,28,0,14,0,1,0,28,1,14,0,2,0,28,2,14,0,3,0,29,1,14,0,4,0,29,0,15,0,3,0,29,1,15,0,2,0,29,2,15,0,1,0,30,1,15,0,0,0,30,0,15,0,1,0,30,1,15,0,2,0,30,2,15,0,3,0,31,1,15,0,4,0,31,0,16,0,4,0,31,1,16,0,3,0,31,2,16,0,2,1,31,1,16,0,1,1,31,0,16,0,0,4,28,0,16,0,1,4,28,1,16,0,2,2,31,1,16,0,3,2,31,0,16,0,4,4,29,0,17,0,3,4,29,1,17,0,2,3,31,1,17,0,1,3,31,0,17,0,0,4,30,0,17,0,1,4,30,1,17,0,2,4,30,2,17,0,3,4,31,1,17,0,4,4,31,0,18,0,3,4,31,1,18,0,2,4,31,2,18,0,1,5,31,1,18,0,0,5,31,0,18,0,1,5,31,1,18,0,2,5,31,2,18,0,3,6,31,1,18,0,4,6,31,0,19,0,3,6,31,1,19,0,2,6,31,2,19,0,1,7,31,1,19,0,0,7,31,0,19,0,1,7,31,1,19,0,2,7,31,2,19,0,3,8,31,1,19,0,4,8,31,0,20,0,4,8,31,1,20,0,3,8,31,2,20,0,2,9,31,1,20,0,1,9,31,0,20,0,0,12,28,0,20,0,1,12,28,1,20,0,2,10,31,1,20,0,3,10,31,0,20,0,4,12,29,0,21,0,3,12,29,1,21,0,2,11,31,1,21,0,1,11,31,0,21,0,0,12,30,0,21,0,1,12,30,1,21,0,2,12,30,2,21,0,3,12,31,1,21,0,4,12,31,0,22,0,3,12,31,1,22,0,2,12,31,2,22,0,1,13,31,1,22,0,0,13,31,0,22,0,1,13,31,1,22,0,2,13,31,2,22,0,3,14,31,1,22,0,4,14,31,0,23,0,3,14,31,1,23,0,2,14,31,2,23,0,1,15,31,1,23,0,0,15,31,0,23,0,1,15,31,1,23,0,2,15,31,2,23,0,3,16,31,1,23,0,4,16,31,0,24,0,4,16,31,1,24,0,3,16,31,2,24,0,2,17,31,1,24,0,1,17,31,0,24,0,0,20,28,0,24,0,1,20,28,1,24,0,2,18,31,1,24,0,3,18,31,0,24,0,4,20,29,0,25,0,3,20,29,1,25,0,2,19,31,1,25,0,1,19,31,0,25,0,0,20,30,0,25,0,1,20,30,1,25,0,2,20,30,2,25,0,3,20,31,1,25,0,4,20,31,0,26,0,3,20,31,1,26,0,2,20,31,2,26,0,1,21,31,1,26,0,0,21,31,0,26,0,1,21,31,1,26,0,2,21,31,2,26,0,3,22,31,1,26,0,4,22,31,0,27,0,3,22,31,1,27,0,2,22,31,2,27,0,1,23,31,1,27,0,0,23,31,0,27,0,1,23,31,1,27,0,2,23,31,2,27,0,3,24,31,1,27,0,4,24,31,0,28,0,4,24,31,1,28,0,3,24,31,2,28,0,2,25,31,1,28,0,1,25,31,0,28,0,0,28,28,0,28,0,1,28,28,1,28,0,2,26,31,1,28,0,3,26,31,0,28,0,4,28,29,0,29,0,3,28,29,1,29,0,2,27,31,1,29,0,1,27,31,0,29,0,0,28,30,0,29,0,1,28,30,1,29,0,2,28,30,2,29,0,3,28,31,1,29,0,4,28,31,0,30,0,3,28,31,1,30,0,2,28,31,2,30,0,1,29,31,1,30,0,0,29,31,0,30,0,1,29,31,1,30,0,2,29,31,2,30,0,3,30,31,1,30,0,4,30,31,0,31,0,3,30,31,1,31,0,2,30,31,2,31,0,1,31,31,1,31,0,0,31,31,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,2,0,1,0,1,0,1,0,2,1,1,0,0,0,2,0,1,0,1,0,3,1,1,0,2,0,3,0,2,0,1,0,4,1,2,0,0,0,4,0,2,0,1,0,5,1,2,0,2,0,5,0,3,0,1,0,6,1,3,0,0,0,6,0,3,0,1,0,7,1,3,0,2,0,7,0,4,0,1,0,8,1,4,0,0,0,8,0,4,0,1,0,9,1,4,0,2,0,9,0,5,0,1,0,10,1,5,0,0,0,10,0,5,0,1,0,11,1,5,0,2,0,11,0,6,0,1,0,12,1,6,0,0,0,12,0,6,0,1,0,13,1,6,0,2,0,13,0,7,0,1,0,14,1,7,0,0,0,14,0,7,0,1,0,15,1,7,0,2,0,15,0,8,0,1,0,16,1,8,0,0,0,16,0,8,0,1,0,17,1,8,0,2,0,17,0,9,0,1,0,18,1,9,0,0,0,18,0,9,0,1,0,19,1,9,0,2,0,19,0,10,0,1,0,20,1,10,0,0,0,20,0,10,0,1,0,21,1,10,0,2,0,21,0,11,0,1,0,22,1,11,0,0,0,22,0,11,0,1,0,23,1,11,0,2,0,23,0,12,0,1,0,24,1,12,0,0,0,24,0,12,0,1,0,25,1,12,0,2,0,25,0,13,0,1,0,26,1,13,0,0,0,26,0,13,0,1,0,27,1,13,0,2,0,27,0,14,0,1,0,28,1,14,0,0,0,28,0,14,0,1,0,29,1,14,0,2,0,29,0,15,0,1,0,30,1,15,0,0,0,30,0,15,0,1,0,31,1,15,0,2,0,31,0,16,0,2,1,31,1,16,0,1,1,31,0,16,0,0,0,32,0,16,0,1,2,31,0,16,0,2,0,33,0,17,0,1,3,31,0,17,0,0,0,34,0,17,0,1,4,31,0,17,0,2,0,35,0,18,0,1,5,31,0,18,0,0,0,36,0,18,0,1,6,31,0,18,0,2,0,37,0,19,0,1,7,31,0,19,0,0,0,38,0,19,0,1,8,31,0,19,0,2,0,39,0,20,0,1,9,31,0,20,0,0,0,40,0,20,0,1,10,31,0,20,0,2,0,41,0,21,0,1,11,31,0,21,0,0,0,42,0,21,0,1,12,31,0,21,0,2,0,43,0,22,0,1,13,31,0,22,0,0,0,44,0,22,0,1,14,31,0,22,0,2,0,45,0,23,0,1,15,31,0,23,0,0,0,46,0,23,0,1,0,47,1,23,0,2,0,47,0,24,0,1,0,48,1,24,0,0,0,48,0,24,0,1,0,49,1,24,0,2,0,49,0,25,0,1,0,50,1,25,0,0,0,50,0,25,0,1,0,51,1,25,0,2,0,51,0,26,0,1,0,52,1,26,0,0,0,52,0,26,0,1,0,53,1,26,0,2,0,53,0,27,0,1,0,54,1,27,0,0,0,54,0,27,0,1,0,55,1,27,0,2,0,55,0,28,0,1,0,56,1,28,0,0,0,56,0,28,0,1,0,57,1,28,0,2,0,57,0,29,0,1,0,58,1,29,0,0,0,58,0,29,0,1,0,59,1,29,0,2,0,59,0,30,0,1,0,60,1,30,0,0,0,60,0,30,0,1,0,61,1,30,0,2,0,61,0,31,0,1,0,62,1,31,0,0,0,62,0,31,0,1,0,63,1,31,0,2,0,63,0,32,0,2,1,63,1,32,0,1,1,63,0,32,0,0,16,48,0,32,0,1,2,63,0,32,0,2,16,49,0,33,0,1,3,63,0,33,0,0,16,50,0,33,0,1,4,63,0,33,0,2,16,51,0,34,0,1,5,63,0,34,0,0,16,52,0,34,0,1,6,63,0,34,0,2,16,53,0,35,0,1,7,63,0,35,0,0,16,54,0,35,0,1,8,63,0,35,0,2,16,55,0,36,0,1,9,63,0,36,0,0,16,56,0,36,0,1,10,63,0,36,0,2,16,57,0,37,0,1,11,63,0,37,0,0,16,58,0,37,0,1,12,63,0,37,0,2,16,59,0,38,0,1,13,63,0,38,0,0,16,60,0,38,0,1,14,63,0,38,0,2,16,61,0,39,0,1,15,63,0,39,0,0,16,62,0,39,0,1,16,63,1,39,0,2,16,63,0,40,0,1,17,63,1,40,0,0,17,63,0,40,0,1,18,63,1,40,0,2,18,63,0,41,0,1,19,63,1,41,0,0,19,63,0,41,0,1,20,63,1,41,0,2,20,63,0,42,0,1,21,63,1,42,0,0,21,63,0,42,0,1,22,63,1,42,0,2,22,63,0,43,0,1,23,63,1,43,0,0,23,63,0,43,0,1,24,63,1,43,0,2,24,63,0,44,0,1,25,63,1,44,0,0,25,63,0,44,0,1,26,63,1,44,0,2,26,63,0,45,0,1,27,63,1,45,0,0,27,63,0,45,0,1,28,63,1,45,0,2,28,63,0,46,0,1,29,63,1,46,0,0,29,63,0,46,0,1,30,63,1,46,0,2,30,63,0,47,0,1,31,63,1,47,0,0,31,63,0,47,0,1,32,63,1,47,0,2,32,63,0,48,0,2,33,63,1,48,0,1,33,63,0,48,0,0,48,48,0,48,0,1,34,63,0,48,0,2,48,49,0,49,0,1,35,63,0,49,0,0,48,50,0,49,0,1,36,63,0,49,0,2,48,51,0,50,0,1,37,63,0,50,0,0,48,52,0,50,0,1,38,63,0,50,0,2,48,53,0,51,0,1,39,63,0,51,0,0,48,54,0,51,0,1,40,63,0,51,0,2,48,55,0,52,0,1,41,63,0,52,0,0,48,56,0,52,0,1,42,63,0,52,0,2,48,57,0,53,0,1,43,63,0,53,0,0,48,58,0,53,0,1,44,63,0,53,0,2,48,59,0,54,0,1,45,63,0,54,0,0,48,60,0,54,0,1,46,63,0,54,0,2,48,61,0,55,0,1,47,63,0,55,0,0,48,62,0,55,0,1,48,63,1,55,0,2,48,63,0,56,0,1,49,63,1,56,0,0,49,63,0,56,0,1,50,63,1,56,0,2,50,63,0,57,0,1,51,63,1,57,0,0,51,63,0,57,0,1,52,63,1,57,0,2,52,63,0,58,0,1,53,63,1,58,0,0,53,63,0,58,0,1,54,63,1,58,0,2,54,63,0,59,0,1,55,63,1,59,0,0,55,63,0,59,0,1,56,63,1,59,0,2,56,63,0,60,0,1,57,63,1,60,0,0,57,63,0,60,0,1,58,63,1,60,0,2,58,63,0,61,0,1,59,63,1,61,0,0,59,63,0,61,0,1,60,63,1,61,0,2,60,63,0,62,0,1,61,63,1,62,0,0,61,63,0,62,0,1,62,63,1,62,0,2,62,63,0,63,0,1,63,63,1,63,0,0,63,63,0,78,54,115,113,117,105,115,104,49,53,83,105,110,103,108,101,67,111,108,111,117,114,70,105,116,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___cxa_pure_virtual(){ABORT=true;throw\"Pure virtual function called!\"}function ___setErrNo(value){if(Module[\"___errno_location\"])HEAP32[Module[\"___errno_location\"]()>>2]=value;return value}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module[\"dynCall_vi\"](info.destructor,ptr)}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr+\" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.\"}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(Runtime.setTempRet0(0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(Runtime.setTempRet0(0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module[\"___cxa_is_pointer_type\"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(Runtime.setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(Runtime.setTempRet0(throwntype),thrown)|0}function ___gxx_personality_v0(){}function ___lock(){}var _llvm_pow_f32=Math_pow;function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module[\"print\"]:Module[\"printErr\"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=DYNAMIC_BASE;staticSealed=true;function invoke_iiii(index,a1,a2,a3){try{return Module[\"dynCall_iiii\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module[\"dynCall_viiiii\"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vi(index,a1){try{Module[\"dynCall_vi\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vii(index,a1,a2){try{Module[\"dynCall_vii\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_ii(index,a1){try{return Module[\"dynCall_ii\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_v(index){try{Module[\"dynCall_v\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module[\"dynCall_viiiiii\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module[\"dynCall_viiii\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}Module.asmGlobalArg={\"Math\":Math,\"Int8Array\":Int8Array,\"Int16Array\":Int16Array,\"Int32Array\":Int32Array,\"Uint8Array\":Uint8Array,\"Uint16Array\":Uint16Array,\"Uint32Array\":Uint32Array,\"Float32Array\":Float32Array,\"Float64Array\":Float64Array,\"NaN\":NaN,\"Infinity\":Infinity,\"byteLength\":byteLength};Module.asmLibraryArg={\"abort\":abort,\"assert\":assert,\"enlargeMemory\":enlargeMemory,\"getTotalMemory\":getTotalMemory,\"abortOnCannotGrowMemory\":abortOnCannotGrowMemory,\"invoke_iiii\":invoke_iiii,\"invoke_viiiii\":invoke_viiiii,\"invoke_vi\":invoke_vi,\"invoke_vii\":invoke_vii,\"invoke_ii\":invoke_ii,\"invoke_v\":invoke_v,\"invoke_viiiiii\":invoke_viiiiii,\"invoke_viiii\":invoke_viiii,\"___lock\":___lock,\"___syscall6\":___syscall6,\"___setErrNo\":___setErrNo,\"___syscall140\":___syscall140,\"_llvm_pow_f32\":_llvm_pow_f32,\"___gxx_personality_v0\":___gxx_personality_v0,\"_emscripten_memcpy_big\":_emscripten_memcpy_big,\"___syscall54\":___syscall54,\"___unlock\":___unlock,\"___resumeException\":___resumeException,\"__ZSt18uncaught_exceptionv\":__ZSt18uncaught_exceptionv,\"___cxa_pure_virtual\":___cxa_pure_virtual,\"___syscall146\":___syscall146,\"___cxa_find_matching_catch\":___cxa_find_matching_catch,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR,\"tempDoublePtr\":tempDoublePtr,\"ABORT\":ABORT,\"STACKTOP\":STACKTOP,\"STACK_MAX\":STACK_MAX};// EMSCRIPTEN_START_ASM\nvar asm=(function(global,env,buffer) {\n\"almost asm\";var a=global.Int8Array;var b=new a(buffer);var c=global.Int16Array;var d=new c(buffer);var e=global.Int32Array;var f=new e(buffer);var g=global.Uint8Array;var h=new g(buffer);var i=global.Uint16Array;var j=new i(buffer);var k=global.Uint32Array;var l=new k(buffer);var m=global.Float32Array;var n=new m(buffer);var o=global.Float64Array;var p=new o(buffer);var q=global.byteLength;var r=env.DYNAMICTOP_PTR|0;var s=env.tempDoublePtr|0;var t=env.ABORT|0;var u=env.STACKTOP|0;var v=env.STACK_MAX|0;var w=0;var x=0;var y=0;var z=0;var A=global.NaN,B=global.Infinity;var C=0,D=0,E=0,F=0,G=0.0;var H=0;var I=global.Math.floor;var J=global.Math.abs;var K=global.Math.sqrt;var L=global.Math.pow;var M=global.Math.cos;var N=global.Math.sin;var O=global.Math.tan;var P=global.Math.acos;var Q=global.Math.asin;var R=global.Math.atan;var S=global.Math.atan2;var T=global.Math.exp;var U=global.Math.log;var V=global.Math.ceil;var W=global.Math.imul;var X=global.Math.min;var Y=global.Math.max;var Z=global.Math.clz32;var _=env.abort;var $=env.assert;var aa=env.enlargeMemory;var ba=env.getTotalMemory;var ca=env.abortOnCannotGrowMemory;var da=env.invoke_iiii;var ea=env.invoke_viiiii;var fa=env.invoke_vi;var ga=env.invoke_vii;var ha=env.invoke_ii;var ia=env.invoke_v;var ja=env.invoke_viiiiii;var ka=env.invoke_viiii;var la=env.___lock;var ma=env.___syscall6;var na=env.___setErrNo;var oa=env.___syscall140;var pa=env._llvm_pow_f32;var qa=env.___gxx_personality_v0;var ra=env._emscripten_memcpy_big;var sa=env.___syscall54;var ta=env.___unlock;var ua=env.___resumeException;var va=env.__ZSt18uncaught_exceptionv;var wa=env.___cxa_pure_virtual;var xa=env.___syscall146;var ya=env.___cxa_find_matching_catch;var za=0.0;function Aa(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;b=new a(newBuffer);d=new c(newBuffer);f=new e(newBuffer);h=new g(newBuffer);j=new i(newBuffer);l=new k(newBuffer);n=new m(newBuffer);p=new o(newBuffer);buffer=newBuffer;return true}\n// EMSCRIPTEN_START_FUNCS\nfunction Ja(a){a=a|0;var b=0;b=u;u=u+a|0;u=u+15&-16;return b|0}function Ka(){return u|0}function La(a){a=a|0;u=a}function Ma(a,b){a=a|0;b=b|0;u=a;v=b}function Na(a,b){a=a|0;b=b|0;if(!w){w=a;x=b}}function Oa(a){a=a|0;H=a}function Pa(){return H|0}function Qa(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,i=0;e=0;do{f=e<<3;g=~~(+(h[a+(f|3)>>0]|0)*.05882352963089943+.5);i=~~(+(h[a+(f|7)>>0]|0)*.05882352963089943+.5);f=e<<1;b[d+e>>0]=((1<<(f|1)&c|0)==0|(i|0)<0?0:((i|0)<15?i:15)<<4)|((1<>0]|0;b[a+3>>0]=d&15|d<<4;b[a+7>>0]=d&240|d>>>4;d=h[c+1>>0]|0;b[a+11>>0]=d&15|d<<4;b[a+15>>0]=d&240|d>>>4;d=h[c+2>>0]|0;b[a+19>>0]=d&15|d<<4;b[a+23>>0]=d&240|d>>>4;d=h[c+3>>0]|0;b[a+27>>0]=d&15|d<<4;b[a+31>>0]=d&240|d>>>4;d=h[c+4>>0]|0;b[a+35>>0]=d&15|d<<4;b[a+39>>0]=d&240|d>>>4;d=h[c+5>>0]|0;b[a+43>>0]=d&15|d<<4;b[a+47>>0]=d&240|d>>>4;d=h[c+6>>0]|0;b[a+51>>0]=d&15|d<<4;b[a+55>>0]=d&240|d>>>4;d=h[c+7>>0]|0;b[a+59>>0]=d&15|d<<4;b[a+63>>0]=d&240|d>>>4;return}function Sa(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;e=u;u=u+64|0;f=e+48|0;g=e+40|0;i=e+32|0;j=e+16|0;k=e;l=0;m=255;n=0;o=0;p=255;while(1){if(!(1<>0]|0;w=v&255;q=v<<24>>24!=-1&(w|0)>(l|0)?w:l;r=(w|0)>(o|0)?w:o;s=v<<24>>24!=0&(w|0)<(m|0)?w:m;t=(w|0)<(p|0)?w:p}n=n+1|0;if((n|0)==16)break;else{l=q;m=s;o=r;p=t}}p=(s|0)>(q|0)?q:s;s=(t|0)>(r|0)?r:t;t=p+5|0;o=(q-p|0)<5?((t|0)<255?t:255):q;q=o+-5|0;t=(o-p|0)<5?((q|0)>0?q:0):p;p=s+7|0;q=(r-s|0)<7?((p|0)<255?p:255):r;r=q+-7|0;p=t&255;b[g>>0]=p;m=o&255;b[g+1>>0]=m;b[g+2>>0]=((t<<2)+o|0)/5|0;b[g+3>>0]=((t*3|0)+(o<<1)|0)/5|0;b[g+4>>0]=((t<<1)+(o*3|0)|0)/5|0;b[g+5>>0]=(t+(o<<2)|0)/5|0;l=(q-s|0)<7?((r|0)>0?r:0):s;b[g+6>>0]=0;b[g+7>>0]=-1;s=l&255;b[i>>0]=s;r=q&255;b[i+1>>0]=r;b[i+2>>0]=((l*6|0)+q|0)/7|0;b[i+3>>0]=((l*5|0)+(q<<1)|0)/7|0;b[i+4>>0]=((l<<2)+(q*3|0)|0)/7|0;b[i+5>>0]=((l*3|0)+(q<<2)|0)/7|0;b[i+6>>0]=((l<<1)+(q*5|0)|0)/7|0;b[i+7>>0]=(l+(q*6|0)|0)/7|0;n=Ta(a,c,g,j)|0;if((n|0)<=(Ta(a,c,i,k)|0)){if((t|0)<=(o|0)){b[d>>0]=p;b[d+1>>0]=m;o=(h[j+1>>0]|0)<<3|(h[j>>0]|0)|(h[j+2>>0]|0)<<6;t=(h[j+3>>0]|0)<<9|o|(h[j+4>>0]|0)<<12|(h[j+5>>0]|0)<<15;i=(h[j+6>>0]|0)<<18|t|(h[j+7>>0]|0)<<21;b[d+2>>0]=o;b[d+3>>0]=t>>>8;b[d+4>>0]=i>>>16;i=(h[j+9>>0]|0)<<3|(h[j+8>>0]|0)|(h[j+10>>0]|0)<<6;t=(h[j+11>>0]|0)<<9|i|(h[j+12>>0]|0)<<12|(h[j+13>>0]|0)<<15;o=(h[j+14>>0]|0)<<18|t|(h[j+15>>0]|0)<<21;b[d+5>>0]=i;b[d+6>>0]=t>>>8;b[d+7>>0]=o>>>16;u=e;return}o=0;do{t=b[j+o>>0]|0;switch(t<<24>>24){case 0:{x=1;break}case 1:{x=0;break}default:if((t&255)<6)x=7-(t&255)&255;else x=t}b[f+o>>0]=x;o=o+1|0}while((o|0)!=16);b[d>>0]=m;b[d+1>>0]=p;p=(h[f+1>>0]|0)<<3|(h[f>>0]|0)|(h[f+2>>0]|0)<<6;m=(h[f+3>>0]|0)<<9|p|(h[f+4>>0]|0)<<12|(h[f+5>>0]|0)<<15;o=(h[f+6>>0]|0)<<18|m|(h[f+7>>0]|0)<<21;b[d+2>>0]=p;b[d+3>>0]=m>>>8;b[d+4>>0]=o>>>16;o=(h[f+9>>0]|0)<<3|(h[f+8>>0]|0)|(h[f+10>>0]|0)<<6;m=(h[f+11>>0]|0)<<9|o|(h[f+12>>0]|0)<<12|(h[f+13>>0]|0)<<15;p=(h[f+14>>0]|0)<<18|m|(h[f+15>>0]|0)<<21;b[d+5>>0]=o;b[d+6>>0]=m>>>8;b[d+7>>0]=p>>>16;u=e;return}if((l|0)<(q|0)){q=b[k>>0]|0;switch(q<<24>>24){case 0:{y=1;break}case 1:{y=0;break}default:y=9-(q&255)&255}q=b[k+1>>0]|0;switch(q<<24>>24){case 0:{z=8;break}case 1:{z=0;break}default:z=9-(q&255)<<3&2040}q=b[k+2>>0]|0;switch(q<<24>>24){case 0:{A=64;break}case 1:{A=0;break}default:A=9-(q&255)<<6&16320}q=b[k+3>>0]|0;switch(q<<24>>24){case 0:{B=512;break}case 1:{B=0;break}default:B=9-(q&255)<<9&130560}q=b[k+4>>0]|0;switch(q<<24>>24){case 0:{C=4096;break}case 1:{C=0;break}default:C=9-(q&255)<<12&1044480}q=b[k+5>>0]|0;switch(q<<24>>24){case 0:{D=32768;break}case 1:{D=0;break}default:D=9-(q&255)<<15&8355840}q=b[k+6>>0]|0;switch(q<<24>>24){case 0:{E=262144;break}case 1:{E=0;break}default:E=9-(q&255)<<18&66846720}q=b[k+7>>0]|0;switch(q<<24>>24){case 0:{F=2097152;break}case 1:{F=0;break}default:F=9-(q&255)<<21&534773760}q=b[k+8>>0]|0;switch(q<<24>>24){case 0:{G=1;break}case 1:{G=0;break}default:G=9-(q&255)&255}q=b[k+9>>0]|0;switch(q<<24>>24){case 0:{H=8;break}case 1:{H=0;break}default:H=9-(q&255)<<3&2040}q=b[k+10>>0]|0;switch(q<<24>>24){case 0:{I=64;break}case 1:{I=0;break}default:I=9-(q&255)<<6&16320}q=b[k+11>>0]|0;switch(q<<24>>24){case 0:{J=512;break}case 1:{J=0;break}default:J=9-(q&255)<<9&130560}q=b[k+12>>0]|0;switch(q<<24>>24){case 0:{K=4096;break}case 1:{K=0;break}default:K=9-(q&255)<<12&1044480}q=b[k+13>>0]|0;switch(q<<24>>24){case 0:{L=32768;break}case 1:{L=0;break}default:L=9-(q&255)<<15&8355840}q=b[k+14>>0]|0;switch(q<<24>>24){case 0:{M=262144;break}case 1:{M=0;break}default:M=9-(q&255)<<18&66846720}q=b[k+15>>0]|0;switch(q<<24>>24){case 0:{N=2097152;break}case 1:{N=0;break}default:N=9-(q&255)<<21&534773760}b[d>>0]=r;b[d+1>>0]=s;q=z|y|A;A=B|q|C|D;b[d+2>>0]=q;b[d+3>>0]=A>>>8;b[d+4>>0]=(E|A|F)>>>16;F=H|G|I;I=J|F|K|L;O=M|I|N;P=I;Q=F}else{b[d>>0]=s;b[d+1>>0]=r;r=(h[k+1>>0]|0)<<3|(h[k>>0]|0)|(h[k+2>>0]|0)<<6;s=(h[k+3>>0]|0)<<9|r|(h[k+4>>0]|0)<<12|(h[k+5>>0]|0)<<15;F=(h[k+6>>0]|0)<<18|s|(h[k+7>>0]|0)<<21;b[d+2>>0]=r;b[d+3>>0]=s>>>8;b[d+4>>0]=F>>>16;F=(h[k+9>>0]|0)<<3|(h[k+8>>0]|0)|(h[k+10>>0]|0)<<6;s=(h[k+11>>0]|0)<<9|F|(h[k+12>>0]|0)<<12|(h[k+13>>0]|0)<<15;O=(h[k+14>>0]|0)<<18|s|(h[k+15>>0]|0)<<21;P=s;Q=F}b[d+5>>0]=Q;b[d+6>>0]=P>>>8;b[d+7>>0]=O>>>16;u=e;return}function Ta(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;f=d+1|0;g=d+2|0;i=d+3|0;j=d+4|0;k=d+5|0;l=d+6|0;m=d+7|0;n=0;o=0;while(1){if(!(1<>0]=0;p=n}else{q=h[a+(o<<2|3)>>0]|0;r=q-(h[d>>0]|0)|0;s=W(r,r)|0;r=q-(h[f>>0]|0)|0;t=W(r,r)|0;r=t>>>0>>0;u=r?t:s;s=q-(h[g>>0]|0)|0;t=W(s,s)|0;s=(t|0)<(u|0);v=s?t:u;u=q-(h[i>>0]|0)|0;t=W(u,u)|0;u=(t|0)<(v|0);w=u?t:v;v=q-(h[j>>0]|0)|0;t=W(v,v)|0;v=(t|0)<(w|0);x=v?t:w;w=q-(h[k>>0]|0)|0;t=W(w,w)|0;w=(t|0)<(x|0);y=w?t:x;x=q-(h[l>>0]|0)|0;t=W(x,x)|0;x=(t|0)<(y|0);z=x?t:y;y=q-(h[m>>0]|0)|0;q=W(y,y)|0;y=(q|0)<(z|0);b[e+o>>0]=y?7:x?6:w?5:v?4:u?3:s?2:r&1;p=(y?q:z)+n|0}o=o+1|0;if((o|0)==16)break;else n=p}return p|0}function Ua(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;d=u;u=u+32|0;e=d+16|0;f=d;g=b[c>>0]|0;i=g&255;j=b[c+1>>0]|0;k=j&255;b[e>>0]=g;b[e+1>>0]=j;if((g&255)>(j&255)){b[e+2>>0]=(((i*6|0)+k|0)>>>0)/7|0;b[e+3>>0]=(((i*5|0)+(k<<1)|0)>>>0)/7|0;b[e+4>>0]=(((i<<2)+(k*3|0)|0)>>>0)/7|0;b[e+5>>0]=(((i*3|0)+(k<<2)|0)>>>0)/7|0;b[e+6>>0]=(((i<<1)+(k*5|0)|0)>>>0)/7|0;l=(((i+(k*6|0)|0)>>>0)/7|0)&255}else{b[e+2>>0]=(((i<<2)+k|0)>>>0)/5|0;b[e+3>>0]=(((i*3|0)+(k<<1)|0)>>>0)/5|0;b[e+4>>0]=(((i<<1)+(k*3|0)|0)>>>0)/5|0;b[e+5>>0]=((i+(k<<2)|0)>>>0)/5|0;b[e+6>>0]=0;l=-1}b[e+7>>0]=l;l=h[c+2>>0]|0;k=h[c+3>>0]|0;i=k<<8;j=b[c+4>>0]|0;g=j&255;b[f>>0]=l&7;b[f+1>>0]=l>>>3&7;b[f+2>>0]=(i|l)>>>6&7;b[f+3>>0]=k>>>1&7;b[f+4>>0]=k>>>4&7;b[f+5>>0]=(g<<16|i)>>>15&7;b[f+6>>0]=g>>>2&7;b[f+7>>0]=(j&255)>>>5;j=h[c+5>>0]|0;g=h[c+6>>0]|0;i=g<<8;k=b[c+7>>0]|0;c=k&255;b[f+8>>0]=j&7;b[f+9>>0]=j>>>3&7;b[f+10>>0]=(i|j)>>>6&7;b[f+11>>0]=g>>>1&7;b[f+12>>0]=g>>>4&7;b[f+13>>0]=(c<<16|i)>>>15&7;b[f+14>>0]=c>>>2&7;b[f+15>>0]=(k&255)>>>5;b[a+3>>0]=b[e+(h[f>>0]|0)>>0]|0;b[a+7>>0]=b[e+(h[f+1>>0]|0)>>0]|0;b[a+11>>0]=b[e+(h[f+2>>0]|0)>>0]|0;b[a+15>>0]=b[e+(h[f+3>>0]|0)>>0]|0;b[a+19>>0]=b[e+(h[f+4>>0]|0)>>0]|0;b[a+23>>0]=b[e+(h[f+5>>0]|0)>>0]|0;b[a+27>>0]=b[e+(h[f+6>>0]|0)>>0]|0;b[a+31>>0]=b[e+(h[f+7>>0]|0)>>0]|0;b[a+35>>0]=b[e+(h[f+8>>0]|0)>>0]|0;b[a+39>>0]=b[e+(h[f+9>>0]|0)>>0]|0;b[a+43>>0]=b[e+(h[f+10>>0]|0)>>0]|0;b[a+47>>0]=b[e+(h[f+11>>0]|0)>>0]|0;b[a+51>>0]=b[e+(h[f+12>>0]|0)>>0]|0;b[a+55>>0]=b[e+(h[f+13>>0]|0)>>0]|0;b[a+59>>0]=b[e+(h[f+14>>0]|0)>>0]|0;b[a+63>>0]=b[e+(h[f+15>>0]|0)>>0]|0;u=d;return}function Va(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ba=0.0,ca=0,da=0,ea=0,fa=0,ga=0.0,ha=0.0,ia=0.0,ja=0.0,ka=0.0,la=0.0,ma=0.0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0,va=0.0,wa=0.0,xa=0.0,ya=0.0,za=0,Aa=0,Ba=0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0,Ka=0.0,La=0.0,Ma=0.0,Na=0.0,Oa=0.0,Pa=0.0,Qa=0.0,Ra=0.0,Sa=0.0,Ta=0.0,Ua=0.0,Va=0.0,Wa=0.0,Ya=0.0,_a=0.0,$a=0.0,ab=0.0,bb=0.0,cb=0.0,eb=0.0,fb=0.0,gb=0.0,hb=0.0,ib=0.0,jb=0.0,kb=0.0,lb=0.0,mb=0.0,nb=0,ob=0,pb=0,qb=0.0,rb=0.0,sb=0.0,tb=0.0,ub=0.0,vb=0.0,wb=0.0,xb=0.0,yb=0.0,zb=0.0,Ab=0,Bb=0,Cb=0,Db=0.0,Eb=0.0,Fb=0.0,Gb=0.0,Hb=0.0,Ib=0.0,Jb=0.0,Kb=0.0,Lb=0.0,Mb=0.0,Nb=0;d=u;u=u+64|0;e=d+40|0;g=d+24|0;i=d+12|0;j=d;k=a+4|0;l=f[f[k>>2]>>2]|0;Xa(a,a+16|0,0)|0;m=a+444|0;o=a+448|0;p=a+452|0;q=a+456|0;r=(l|0)>0;s=a+12|0;t=g+4|0;v=g+8|0;w=a+156|0;x=a+160|0;y=a+164|0;z=a+168|0;A=a+412|0;B=a+416|0;C=a+420|0;D=a+424|0;E=a+428|0;F=a+432|0;G=a+436|0;H=0;J=0;K=0;L=0;M=+n[m>>2];N=+n[p>>2];O=+n[q>>2];P=+n[o>>2];Q=0.0;R=0.0;S=0.0;T=0.0;U=0.0;W=0.0;while(1){if(r){X=+n[A>>2];Y=+n[B>>2];Z=+n[C>>2];_=+n[D>>2];$=+n[E>>2];aa=+n[F>>2];ba=+n[G>>2];ca=0;da=H;ea=J;fa=L;ga=0.0;ha=M;ia=N;ja=0.0;ka=O;la=0.0;ma=0.0;na=P;oa=W;pa=U;qa=T;ra=S;sa=R;ta=Q;while(1){ua=(ca|0)==0;if(ua){va=+n[w>>2];wa=+n[x>>2];xa=+n[y>>2];ya=+n[z>>2]}else{va=0.0;wa=0.0;xa=0.0;ya=0.0}za=ua?1:ca;ua=da;Aa=ea;Ba=fa;Ca=va;Da=ha;Ea=wa;Fa=ia;Ga=ka;Ha=xa;Ia=ya;Ja=na;Ka=ta;La=sa;Ma=ra;Na=qa;Oa=pa;Pa=oa;while(1){Qa=Ca*.5;Ra=Ea*.5;Sa=Ha*.5;Ta=Ia*.25;Ua=ga+Qa;Va=ma+Ra;Wa=ja+Sa;Ya=la+Ta;_a=Qa+(X-Ca-ga);Qa=Ra+(Y-Ea-ma);Ra=Sa+(Z-Ha-ja);Sa=Ta+(_-Ia-la);$a=1.0/(Ya*Sa-Ta*Ta);ab=(Ua*Sa-Ta*_a)*$a;bb=(Va*Sa-Ta*Qa)*$a;cb=(Wa*Sa-Ta*Ra)*$a;eb=(Ya*_a-Ua*Ta)*$a;fb=(Ya*Qa-Va*Ta)*$a;gb=(Ya*Ra-Wa*Ta)*$a;$a=ab>0.0?ab:0.0;ab=bb>0.0?bb:0.0;bb=cb>0.0?cb:0.0;cb=eb>0.0?eb:0.0;eb=fb>0.0?fb:0.0;fb=gb>0.0?gb:0.0;gb=($a<1.0?$a:1.0)*31.0+.5;$a=(ab<1.0?ab:1.0)*63.0+.5;ab=(bb<1.0?bb:1.0)*31.0+.5;if(gb>0.0)hb=+I(+gb);else hb=+V(+gb);if($a>0.0)ib=+I(+$a);else ib=+V(+$a);if(ab>0.0)jb=+I(+ab);else jb=+V(+ab);ab=hb*.032258063554763794;$a=ib*.01587301678955555;gb=jb*.032258063554763794;bb=(cb<1.0?cb:1.0)*31.0+.5;cb=(eb<1.0?eb:1.0)*63.0+.5;eb=(fb<1.0?fb:1.0)*31.0+.5;if(bb>0.0)kb=+I(+bb);else kb=+V(+bb);if(cb>0.0)lb=+I(+cb);else lb=+V(+cb);if(eb>0.0)mb=+I(+eb);else mb=+V(+eb);eb=kb*.032258063554763794;cb=lb*.01587301678955555;bb=mb*.032258063554763794;fb=$*(Ya*(ab*ab)+Sa*(eb*eb)+(Ta*(ab*eb)-Ua*ab-_a*eb)*2.0)+aa*(Ya*($a*$a)+Sa*(cb*cb)+(Ta*($a*cb)-Va*$a-Qa*cb)*2.0)+ba*(Ya*(gb*gb)+Sa*(bb*bb)+(Ta*(gb*bb)-Wa*gb-Ra*bb)*2.0);if(!(fb>2];$a=Ea+ +n[a+156+(za<<4)+4>>2];ab=Ha+ +n[a+156+(za<<4)+8>>2];bb=Ia+ +n[a+156+(za<<4)+12>>2];za=za+1|0;ua=nb;Aa=ob;Ba=pb;Ca=gb;Da=qb;Ea=$a;Fa=rb;Ga=sb;Ha=ab;Ia=bb;Ja=tb;Ka=ub;La=vb;Ma=wb;Na=xb;Oa=yb;Pa=zb}ga=ga+ +n[a+156+(ca<<4)>>2];ma=ma+ +n[a+156+(ca<<4)+4>>2];ja=ja+ +n[a+156+(ca<<4)+8>>2];la=la+ +n[a+156+(ca<<4)+12>>2];ca=ca+1|0;if((ca|0)==(l|0)){Ab=nb;Bb=ob;Cb=pb;Db=zb;Eb=yb;Fb=xb;Gb=wb;Hb=vb;Ib=ub;Jb=qb;Kb=rb;Lb=sb;Mb=tb;break}else{da=nb;ea=ob;fa=pb;ha=qb;ia=rb;ka=sb;na=tb;oa=zb;pa=yb;qa=xb;ra=wb;sa=vb;ta=ub}}}else{Ab=H;Bb=J;Cb=L;Db=W;Eb=U;Fb=T;Gb=S;Hb=R;Ib=Q;Jb=M;Kb=N;Lb=O;Mb=P}if((Ab|0)!=(K|0)){Nb=Ab;break}fa=K+1|0;if((fa|0)==(f[s>>2]|0)){Nb=K;break}n[g>>2]=Ib-Fb;n[t>>2]=Hb-Eb;n[v>>2]=Gb-Db;if(Xa(a,g,fa)|0){ea=K;J=Bb;K=fa;L=Cb;M=Jb;N=Kb;O=Lb;P=Mb;Q=Ib;R=Hb;S=Gb;T=Fb;U=Eb;W=Db;H=ea}else{Nb=K;break}}if(((!(Jb<+n[m>>2])?!(Mb<+n[o>>2]):0)?!(Kb<+n[p>>2]):0)?!(Lb<+n[q>>2]):0){u=d;return}K=(Nb<<4)+(a+28)|0;if((Bb|0)>0){a=0;do{b[g+(h[K+a>>0]|0)>>0]=0;a=a+1|0}while((a|0)!=(Bb|0))}if((Bb|0)<(Cb|0)){a=Bb;do{b[g+(h[K+a>>0]|0)>>0]=2;a=a+1|0}while((a|0)!=(Cb|0))}if((Cb|0)<(l|0)){a=Cb;do{b[g+(h[K+a>>0]|0)>>0]=1;a=a+1|0}while((a|0)!=(l|0))}db(f[k>>2]|0,g,e);n[i>>2]=Fb;n[i+4>>2]=Eb;n[i+8>>2]=Db;n[j>>2]=Ib;n[j+4>>2]=Hb;n[j+8>>2]=Gb;Za(i,j,e,c);n[m>>2]=Jb;n[o>>2]=Mb;n[p>>2]=Kb;n[q>>2]=Lb;u=d;return}function Wa(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ba=0.0,ca=0.0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0.0,ja=0.0,ka=0.0,la=0.0,ma=0.0,na=0.0,oa=0.0,pa=0.0,qa=0.0,ra=0.0,sa=0.0,ta=0.0,ua=0.0,va=0.0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0,Ka=0.0,La=0.0,Ma=0.0,Na=0.0,Oa=0.0,Pa=0,Qa=0.0,Ra=0.0,Sa=0.0,Ta=0.0,Ua=0.0,Va=0.0,Wa=0.0,Ya=0.0,Za=0.0,$a=0.0,ab=0.0,bb=0.0,cb=0,eb=0,fb=0,gb=0,hb=0.0,ib=0.0,jb=0.0,kb=0.0,lb=0.0,mb=0.0,nb=0.0,ob=0.0,pb=0.0,qb=0.0,rb=0.0,sb=0.0,tb=0.0,ub=0.0,vb=0.0,wb=0.0,xb=0.0,yb=0.0,zb=0.0,Ab=0.0,Bb=0.0,Cb=0.0,Db=0.0,Eb=0.0,Fb=0.0,Gb=0.0,Hb=0.0,Ib=0.0,Jb=0.0,Kb=0.0,Lb=0.0,Mb=0.0,Nb=0.0,Ob=0.0,Pb=0.0,Qb=0.0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0.0,Wb=0.0,Xb=0.0,Yb=0.0,Zb=0.0,_b=0.0,$b=0.0,ac=0.0,bc=0.0,cc=0.0,dc=0,ec=0,fc=0,gc=0,hc=0.0,ic=0.0,jc=0.0,kc=0.0,lc=0.0,mc=0.0,nc=0.0,oc=0.0,pc=0.0,qc=0.0,rc=0;d=u;u=u+64|0;e=d+40|0;g=d+24|0;i=d+12|0;j=d;k=a+4|0;l=f[f[k>>2]>>2]|0;Xa(a,a+16|0,0)|0;m=a+444|0;o=a+448|0;p=a+452|0;q=a+456|0;r=(l|0)>0;s=a+12|0;t=g+4|0;v=g+8|0;w=a+156|0;x=a+160|0;y=a+164|0;z=a+168|0;A=a+412|0;B=a+416|0;C=a+420|0;D=a+424|0;E=a+428|0;F=a+432|0;G=a+436|0;H=0;J=0;K=0;L=0;M=0;N=+n[m>>2];O=+n[p>>2];P=+n[q>>2];Q=+n[o>>2];R=0.0;S=0.0;T=0.0;U=0.0;W=0.0;X=0.0;while(1){if(r){Y=+n[A>>2];Z=+n[B>>2];_=+n[C>>2];$=+n[D>>2];aa=+n[E>>2];ba=+n[F>>2];ca=+n[G>>2];da=0;ea=J;fa=K;ga=L;ha=M;ia=0.0;ja=N;ka=O;la=0.0;ma=P;na=0.0;oa=0.0;pa=Q;qa=X;ra=W;sa=U;ta=T;ua=S;va=R;while(1){wa=da;xa=ga;ya=ea;za=fa;Aa=ha;Ba=0.0;Ca=ja;Da=ka;Ea=ma;Fa=0.0;Ga=0.0;Ha=pa;Ia=0.0;Ja=va;Ka=ua;La=ta;Ma=sa;Na=ra;Oa=qa;while(1){Pa=(wa|0)==0;if(Pa){Qa=+n[w>>2];Ra=+n[x>>2];Sa=+n[y>>2];Ta=+n[z>>2]}else{Qa=0.0;Ra=0.0;Sa=0.0;Ta=0.0}Ua=ia+Ba*.6666666865348816;Va=oa+Ia*.6666666865348816;Wa=la+Fa*.6666666865348816;Ya=na+Ga*.4444444477558136;Za=Ba*.3333333432674408;$a=Ia*.3333333432674408;ab=Fa*.3333333432674408;bb=Ga*.1111111119389534;cb=Pa?1:wa;Pa=xa;eb=ya;fb=za;gb=Aa;hb=Qa;ib=Ca;jb=Ra;kb=Da;lb=Ea;mb=Sa;nb=Ta;ob=Ha;pb=Ja;qb=Ka;rb=La;sb=Ma;tb=Na;ub=Oa;while(1){vb=Ua+hb*.3333333432674408;wb=Va+jb*.3333333432674408;xb=Wa+mb*.3333333432674408;yb=Ya+nb*.1111111119389534;zb=Za+(hb*.6666666865348816+(Y-hb-Ba-ia));Ab=$a+(jb*.6666666865348816+(Z-jb-Ia-oa));Bb=ab+(mb*.6666666865348816+(_-mb-Fa-la));Cb=bb+(nb*.4444444477558136+($-nb-Ga-na));Db=(Ga+nb)*.2222222238779068;Eb=1.0/(yb*Cb-Db*Db);Fb=(vb*Cb-Db*zb)*Eb;Gb=(wb*Cb-Db*Ab)*Eb;Hb=(xb*Cb-Db*Bb)*Eb;Ib=(yb*zb-vb*Db)*Eb;Jb=(yb*Ab-wb*Db)*Eb;Kb=(yb*Bb-xb*Db)*Eb;Eb=Fb>0.0?Fb:0.0;Fb=Gb>0.0?Gb:0.0;Gb=Hb>0.0?Hb:0.0;Hb=Ib>0.0?Ib:0.0;Ib=Jb>0.0?Jb:0.0;Jb=Kb>0.0?Kb:0.0;Kb=(Eb<1.0?Eb:1.0)*31.0+.5;Eb=(Fb<1.0?Fb:1.0)*63.0+.5;Fb=(Gb<1.0?Gb:1.0)*31.0+.5;if(Kb>0.0)Lb=+I(+Kb);else Lb=+V(+Kb);if(Eb>0.0)Mb=+I(+Eb);else Mb=+V(+Eb);if(Fb>0.0)Nb=+I(+Fb);else Nb=+V(+Fb);Fb=Lb*.032258063554763794;Eb=Mb*.01587301678955555;Kb=Nb*.032258063554763794;Gb=(Hb<1.0?Hb:1.0)*31.0+.5;Hb=(Ib<1.0?Ib:1.0)*63.0+.5;Ib=(Jb<1.0?Jb:1.0)*31.0+.5;if(Gb>0.0)Ob=+I(+Gb);else Ob=+V(+Gb);if(Hb>0.0)Pb=+I(+Hb);else Pb=+V(+Hb);if(Ib>0.0)Qb=+I(+Ib);else Qb=+V(+Ib);Ib=Ob*.032258063554763794;Hb=Pb*.01587301678955555;Gb=Qb*.032258063554763794;Jb=aa*(yb*(Fb*Fb)+Cb*(Ib*Ib)+(Db*(Fb*Ib)-vb*Fb-zb*Ib)*2.0)+ba*(yb*(Eb*Eb)+Cb*(Hb*Hb)+(Db*(Eb*Hb)-wb*Eb-Ab*Hb)*2.0)+ca*(yb*(Kb*Kb)+Cb*(Gb*Gb)+(Db*(Kb*Gb)-xb*Kb-Bb*Gb)*2.0);if(!(Jb>2];Eb=jb+ +n[a+156+(cb<<4)+4>>2];Fb=mb+ +n[a+156+(cb<<4)+8>>2];Gb=nb+ +n[a+156+(cb<<4)+12>>2];cb=cb+1|0;Pa=Rb;eb=Sb;fb=Tb;gb=Ub;hb=Kb;ib=Vb;jb=Eb;kb=Wb;lb=Xb;mb=Fb;nb=Gb;ob=Yb;pb=Zb;qb=_b;rb=$b;sb=ac;tb=bc;ub=cc}if((wa|0)==(l|0))break;ub=Ba+ +n[a+156+(wa<<4)>>2];tb=Ia+ +n[a+156+(wa<<4)+4>>2];sb=Fa+ +n[a+156+(wa<<4)+8>>2];rb=Ga+ +n[a+156+(wa<<4)+12>>2];wa=wa+1|0;xa=Rb;ya=Sb;za=Tb;Aa=Ub;Ba=ub;Ca=Vb;Da=Wb;Ea=Xb;Fa=sb;Ga=rb;Ha=Yb;Ia=tb;Ja=Zb;Ka=_b;La=$b;Ma=ac;Na=bc;Oa=cc}ia=ia+ +n[a+156+(da<<4)>>2];oa=oa+ +n[a+156+(da<<4)+4>>2];la=la+ +n[a+156+(da<<4)+8>>2];na=na+ +n[a+156+(da<<4)+12>>2];da=da+1|0;if((da|0)==(l|0)){dc=Rb;ec=Sb;fc=Tb;gc=Ub;hc=cc;ic=bc;jc=ac;kc=$b;lc=_b;mc=Zb;nc=Vb;oc=Wb;pc=Xb;qc=Yb;break}else{ea=Sb;fa=Tb;ga=Rb;ha=Ub;ja=Vb;ka=Wb;ma=Xb;pa=Yb;qa=cc;ra=bc;sa=ac;ta=$b;ua=_b;va=Zb}}}else{dc=L;ec=J;fc=K;gc=M;hc=X;ic=W;jc=U;kc=T;lc=S;mc=R;nc=N;oc=O;pc=P;qc=Q}if((dc|0)!=(H|0)){rc=dc;break}ha=H+1|0;if((ha|0)==(f[s>>2]|0)){rc=H;break}n[g>>2]=mc-jc;n[t>>2]=lc-ic;n[v>>2]=kc-hc;if(Xa(a,g,ha)|0){ga=H;H=ha;J=ec;K=fc;M=gc;N=nc;O=oc;P=pc;Q=qc;R=mc;S=lc;T=kc;U=jc;W=ic;X=hc;L=ga}else{rc=H;break}}if(((!(nc<+n[m>>2])?!(qc<+n[o>>2]):0)?!(oc<+n[p>>2]):0)?!(pc<+n[q>>2]):0){u=d;return}H=(rc<<4)+(a+28)|0;if((gc|0)>0){a=0;do{b[g+(h[H+a>>0]|0)>>0]=0;a=a+1|0}while((a|0)!=(gc|0))}if((gc|0)<(fc|0)){a=gc;do{b[g+(h[H+a>>0]|0)>>0]=2;a=a+1|0}while((a|0)!=(fc|0))}if((fc|0)<(ec|0)){a=fc;do{b[g+(h[H+a>>0]|0)>>0]=3;a=a+1|0}while((a|0)!=(ec|0))}if((ec|0)<(l|0)){a=ec;do{b[g+(h[H+a>>0]|0)>>0]=1;a=a+1|0}while((a|0)!=(l|0))}db(f[k>>2]|0,g,e);n[i>>2]=jc;n[i+4>>2]=ic;n[i+8>>2]=hc;n[j>>2]=mc;n[j+4>>2]=lc;n[j+8>>2]=kc;_a(i,j,e,c);n[m>>2]=nc;n[o>>2]=qc;n[p>>2]=oc;n[q>>2]=pc;u=d;return}function Xa(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0.0,t=0.0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;e=u;u=u+64|0;g=e;i=a+4|0;j=f[i>>2]|0;k=f[j>>2]|0;l=(d<<4)+(a+28)|0;m=(k|0)>0;if(m){o=c+4|0;p=c+8|0;q=0;do{n[g+(q<<2)>>2]=+n[j+4+(q*12|0)>>2]*+n[c>>2]+ +n[j+4+(q*12|0)+4>>2]*+n[o>>2]+ +n[j+4+(q*12|0)+8>>2]*+n[p>>2];b[l+q>>0]=q;q=q+1|0}while((q|0)!=(k|0));if(m){q=0;do{a:do if((q|0)>0){p=q;r=+n[g+(q<<2)>>2];while(1){j=p;p=p+-1|0;o=g+(p<<2)|0;t=+n[o>>2];if(!(r>2]|0;n[c>>2]=t;f[o>>2]=v;o=l+j|0;c=l+p|0;w=b[o>>0]|0;b[o>>0]=b[c>>0]|0;b[c>>0]=w;if((j|0)<=1)break;else r=(f[s>>2]=v,+n[s>>2])}}while(0);q=q+1|0}while((q|0)!=(k|0))}}b:do if((d|0)>0){if(m)x=0;else{y=0;u=e;return y|0}c:while(1){q=(x<<4)+(a+28)|0;g=0;while(1){if((b[l+g>>0]|0)!=(b[q+g>>0]|0))break;g=g+1|0;if((g|0)>=(k|0)){y=0;break c}}x=x+1|0;if((x|0)>=(d|0))break b}u=e;return y|0}while(0);d=f[i>>2]|0;i=a+412|0;x=a+416|0;g=a+420|0;q=a+424|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;if(m)z=0;else{y=1;u=e;return y|0}do{m=h[l+z>>0]|0;r=+n[d+196+(m<<2)>>2];t=+n[d+4+(m*12|0)>>2]*r;A=+n[d+4+(m*12|0)+4>>2]*r;B=+n[d+4+(m*12|0)+8>>2]*r;n[a+156+(z<<4)>>2]=t;n[a+156+(z<<4)+4>>2]=A;n[a+156+(z<<4)+8>>2]=B;n[a+156+(z<<4)+12>>2]=r;n[i>>2]=t+ +n[i>>2];n[x>>2]=A+ +n[x>>2];n[g>>2]=B+ +n[g>>2];n[q>>2]=r+ +n[q>>2];z=z+1|0}while((z|0)!=(k|0));y=1;u=e;return y|0}function Ya(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;d=u;u=u+48|0;e=d+16|0;g=d;ab(a,b,c);f[a>>2]=128;c=a+16|0;b=f[a+8>>2]|0;f[a+12>>2]=b&256|0?8:1;n[a+444>>2]=3402823466385288598117041.0e14;n[a+448>>2]=3402823466385288598117041.0e14;n[a+452>>2]=3402823466385288598117041.0e14;n[a+456>>2]=3402823466385288598117041.0e14;h=(b&32|0)==0;n[a+428>>2]=h?1.0:.2125999927520752;n[a+432>>2]=h?1.0:.7152000069618225;n[a+436>>2]=h?1.0:.0722000002861023;n[a+440>>2]=h?1.0:0.0;h=f[a+4>>2]|0;eb(e,f[h>>2]|0,h+4|0,h+196|0);fb(g,e);f[c>>2]=f[g>>2];f[c+4>>2]=f[g+4>>2];f[c+8>>2]=f[g+8>>2];u=d;return}function Za(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;f=u;u=u+16|0;g=f;h=~~(+n[a>>2]*31.0+.5);i=~~(+n[a+4>>2]*63.0+.5);j=~~(+n[a+8>>2]*31.0+.5);a=((i|0)<0?0:((i|0)<63?i:63)<<5)|((h|0)<0?0:((h|0)<31?h:31)<<11)|((j|0)<0?0:(j|0)<31?j:31);j=~~(+n[c>>2]*31.0+.5);h=~~(+n[c+4>>2]*63.0+.5);i=~~(+n[c+8>>2]*31.0+.5);c=((h|0)<0?0:((h|0)<63?h:63)<<5)|((j|0)<0?0:((j|0)<31?j:31)<<11)|((i|0)<0?0:(i|0)<31?i:31);if((a|0)>(c|0)){i=b[d>>0]|0;switch(i<<24>>24){case 0:{k=1;break}case 1:{k=0;break}default:k=i}b[g>>0]=k;i=b[d+1>>0]|0;switch(i<<24>>24){case 0:{l=1;break}case 1:{l=0;break}default:l=i}b[g+1>>0]=l;i=b[d+2>>0]|0;switch(i<<24>>24){case 0:{m=1;break}case 1:{m=0;break}default:m=i}b[g+2>>0]=m;i=b[d+3>>0]|0;switch(i<<24>>24){case 0:{o=1;break}case 1:{o=0;break}default:o=i}b[g+3>>0]=o;i=b[d+4>>0]|0;switch(i<<24>>24){case 0:{p=1;break}case 1:{p=0;break}default:p=i}b[g+4>>0]=p;i=b[d+5>>0]|0;switch(i<<24>>24){case 0:{q=1;break}case 1:{q=0;break}default:q=i}b[g+5>>0]=q;i=b[d+6>>0]|0;switch(i<<24>>24){case 0:{r=1;break}case 1:{r=0;break}default:r=i}b[g+6>>0]=r;i=b[d+7>>0]|0;switch(i<<24>>24){case 0:{s=1;break}case 1:{s=0;break}default:s=i}b[g+7>>0]=s;i=b[d+8>>0]|0;switch(i<<24>>24){case 0:{t=1;break}case 1:{t=0;break}default:t=i}b[g+8>>0]=t;i=b[d+9>>0]|0;switch(i<<24>>24){case 0:{v=1;break}case 1:{v=0;break}default:v=i}b[g+9>>0]=v;i=b[d+10>>0]|0;switch(i<<24>>24){case 0:{w=1;break}case 1:{w=0;break}default:w=i}b[g+10>>0]=w;i=b[d+11>>0]|0;switch(i<<24>>24){case 0:{x=1;break}case 1:{x=0;break}default:x=i}b[g+11>>0]=x;i=b[d+12>>0]|0;switch(i<<24>>24){case 0:{y=1;break}case 1:{y=0;break}default:y=i}b[g+12>>0]=y;i=b[d+13>>0]|0;switch(i<<24>>24){case 0:{z=1;break}case 1:{z=0;break}default:z=i}b[g+13>>0]=z;i=b[d+14>>0]|0;switch(i<<24>>24){case 0:{A=1;break}case 1:{A=0;break}default:A=i}b[g+14>>0]=A;i=b[d+15>>0]|0;switch(i<<24>>24){case 0:{B=1;break}case 1:{B=0;break}default:B=i}b[g+15>>0]=B;C=a;D=c;E=y;F=z;G=A;H=B;I=k;J=l;K=m;L=o;M=p;N=q;O=r;P=s;Q=t;R=v;S=w;T=x}else{x=g;w=d;d=x+16|0;do{b[x>>0]=b[w>>0]|0;x=x+1|0;w=w+1|0}while((x|0)<(d|0));C=c;D=a;E=b[g+12>>0]|0;F=b[g+13>>0]|0;G=b[g+14>>0]|0;H=b[g+15>>0]|0;I=b[g>>0]|0;J=b[g+1>>0]|0;K=b[g+2>>0]|0;L=b[g+3>>0]|0;M=b[g+4>>0]|0;N=b[g+5>>0]|0;O=b[g+6>>0]|0;P=b[g+7>>0]|0;Q=b[g+8>>0]|0;R=b[g+9>>0]|0;S=b[g+10>>0]|0;T=b[g+11>>0]|0}b[e>>0]=D;b[e+1>>0]=D>>>8;b[e+2>>0]=C;b[e+3>>0]=C>>>8;b[e+4>>0]=(J&255)<<2|I&255|(K&255)<<4|(L&255)<<6;b[e+5>>0]=(N&255)<<2|M&255|(O&255)<<4|(P&255)<<6;b[e+6>>0]=(R&255)<<2|Q&255|(S&255)<<4|(T&255)<<6;b[e+7>>0]=(F&255)<<2|E&255|(G&255)<<4|(H&255)<<6;u=f;return}function _a(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;f=u;u=u+16|0;g=f;h=~~(+n[a>>2]*31.0+.5);i=~~(+n[a+4>>2]*63.0+.5);j=~~(+n[a+8>>2]*31.0+.5);a=((i|0)<0?0:((i|0)<63?i:63)<<5)|((h|0)<0?0:((h|0)<31?h:31)<<11)|((j|0)<0?0:(j|0)<31?j:31);j=~~(+n[c>>2]*31.0+.5);h=~~(+n[c+4>>2]*63.0+.5);i=~~(+n[c+8>>2]*31.0+.5);c=((h|0)<0?0:((h|0)<63?h:63)<<5)|((j|0)<0?0:((j|0)<31?j:31)<<11)|((i|0)<0?0:(i|0)<31?i:31);do if((a|0)>=(c|0))if((a|0)==(c|0)){k=g;l=k+16|0;do{b[k>>0]=0;k=k+1|0}while((k|0)<(l|0));m=a;o=a;p=0;q=0;r=0;s=0;t=0;v=0;w=0;x=0;y=0;z=0;A=0;B=0;C=0;D=0;E=0;F=0;break}else{k=g;i=d;l=k+16|0;do{b[k>>0]=b[i>>0]|0;k=k+1|0;i=i+1|0}while((k|0)<(l|0));m=c;o=a;p=b[g>>0]|0;q=b[g+1>>0]|0;r=b[g+2>>0]|0;s=b[g+3>>0]|0;t=b[g+4>>0]|0;v=b[g+5>>0]|0;w=b[g+6>>0]|0;x=b[g+7>>0]|0;y=b[g+8>>0]|0;z=b[g+9>>0]|0;A=b[g+10>>0]|0;B=b[g+11>>0]|0;C=b[g+12>>0]|0;D=b[g+13>>0]|0;E=b[g+14>>0]|0;F=b[g+15>>0]|0;break}else{i=b[d>>0]&3^1;b[g>>0]=i;j=b[d+1>>0]&3^1;b[g+1>>0]=j;h=b[d+2>>0]&3^1;b[g+2>>0]=h;G=b[d+3>>0]&3^1;b[g+3>>0]=G;H=b[d+4>>0]&3^1;b[g+4>>0]=H;I=b[d+5>>0]&3^1;b[g+5>>0]=I;J=b[d+6>>0]&3^1;b[g+6>>0]=J;K=b[d+7>>0]&3^1;b[g+7>>0]=K;L=b[d+8>>0]&3^1;b[g+8>>0]=L;M=b[d+9>>0]&3^1;b[g+9>>0]=M;N=b[d+10>>0]&3^1;b[g+10>>0]=N;O=b[d+11>>0]&3^1;b[g+11>>0]=O;P=b[d+12>>0]&3^1;b[g+12>>0]=P;Q=b[d+13>>0]&3^1;b[g+13>>0]=Q;R=b[d+14>>0]&3^1;b[g+14>>0]=R;S=b[d+15>>0]&3^1;b[g+15>>0]=S;m=a;o=c;p=i;q=j;r=h;s=G;t=H;v=I;w=J;x=K;y=L;z=M;A=N;B=O;C=P;D=Q;E=R;F=S}while(0);b[e>>0]=o;b[e+1>>0]=o>>>8;b[e+2>>0]=m;b[e+3>>0]=m>>>8;b[e+4>>0]=(q&255)<<2|p&255|(r&255)<<4|(s&255)<<6;b[e+5>>0]=(v&255)<<2|t&255|(w&255)<<4|(x&255)<<6;b[e+6>>0]=(z&255)<<2|y&255|(A&255)<<4|(B&255)<<6;b[e+7>>0]=(D&255)<<2|C&255|(E&255)<<4|(F&255)<<6;u=f;return}function $a(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;e=u;u=u+32|0;f=e+16|0;g=e;i=b[c+1>>0]|0;j=h[c>>0]|0;k=i&255;l=k<<8|j;m=(i&255)>>>3;i=m<<3&255|(m&255)>>>2;b[f>>0]=i;m=l>>>5<<2|k>>>1&3;b[f+1>>0]=m;k=j>>>2&7|j<<3;b[f+2>>0]=k;b[f+3>>0]=-1;j=b[c+3>>0]|0;n=h[c+2>>0]|0;o=j&255;p=o<<8|n;q=(j&255)>>>3;j=q<<3&255|(q&255)>>>2;b[f+4>>0]=j;q=p>>>5<<2|o>>>1&3;b[f+5>>0]=q;o=n>>>2&7|n<<3;b[f+6>>0]=o;b[f+7>>0]=-1;n=l>>>0>p>>>0|d^1;if(n){b[f+8>>0]=(((i<<1)+j|0)>>>0)/3|0;b[f+12>>0]=(((j<<1)+i|0)>>>0)/3|0;d=m&255;p=q&255;b[f+9>>0]=(((d<<1)+p|0)>>>0)/3|0;b[f+13>>0]=(((p<<1)+d|0)>>>0)/3|0;d=k&255;p=o&255;b[f+10>>0]=(((d<<1)+p|0)>>>0)/3|0;r=((((p<<1)+d|0)>>>0)/3|0)&255}else{b[f+8>>0]=(j+i|0)>>>1;b[f+12>>0]=0;b[f+9>>0]=((q&255)+(m&255)|0)>>>1;b[f+13>>0]=0;b[f+10>>0]=((o&255)+(k&255)|0)>>>1;r=0}b[f+14>>0]=r;b[f+11>>0]=-1;b[f+15>>0]=n<<31>>31;n=b[c+4>>0]|0;r=n&255;k=r&3;b[g>>0]=k;o=r>>>2&3;b[g+1>>0]=o;m=r>>>4&3;b[g+2>>0]=m;r=(n&255)>>>6;b[g+3>>0]=r;n=b[c+5>>0]|0;q=n&255;i=q&3;b[g+4>>0]=i;j=q>>>2&3;b[g+5>>0]=j;d=q>>>4&3;b[g+6>>0]=d;q=(n&255)>>>6;b[g+7>>0]=q;n=b[c+6>>0]|0;p=n&255;l=p&3;b[g+8>>0]=l;s=p>>>2&3;b[g+9>>0]=s;t=p>>>4&3;b[g+10>>0]=t;p=(n&255)>>>6;b[g+11>>0]=p;n=b[c+7>>0]|0;c=n&255;v=c&3;b[g+12>>0]=v;w=c>>>2&3;b[g+13>>0]=w;x=c>>>4&3;b[g+14>>0]=x;b[g+15>>0]=(n&255)>>>6;n=f+(k<<2)|0;k=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24;b[a>>0]=k;b[a+1>>0]=k>>8;b[a+2>>0]=k>>16;b[a+3>>0]=k>>24;k=a+4|0;n=f+(o<<2)|0;o=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24;b[k>>0]=o;b[k+1>>0]=o>>8;b[k+2>>0]=o>>16;b[k+3>>0]=o>>24;o=a+8|0;k=f+(m<<2)|0;m=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;b[o>>0]=m;b[o+1>>0]=m>>8;b[o+2>>0]=m>>16;b[o+3>>0]=m>>24;m=a+12|0;o=f+(r<<2&255)|0;r=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24;b[m>>0]=r;b[m+1>>0]=r>>8;b[m+2>>0]=r>>16;b[m+3>>0]=r>>24;r=a+16|0;m=f+(i<<2)|0;i=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;b[r>>0]=i;b[r+1>>0]=i>>8;b[r+2>>0]=i>>16;b[r+3>>0]=i>>24;i=a+20|0;r=f+(j<<2)|0;j=h[r>>0]|h[r+1>>0]<<8|h[r+2>>0]<<16|h[r+3>>0]<<24;b[i>>0]=j;b[i+1>>0]=j>>8;b[i+2>>0]=j>>16;b[i+3>>0]=j>>24;j=a+24|0;i=f+(d<<2)|0;d=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;b[j>>0]=d;b[j+1>>0]=d>>8;b[j+2>>0]=d>>16;b[j+3>>0]=d>>24;d=a+28|0;j=f+(q<<2&255)|0;q=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;b[d>>0]=q;b[d+1>>0]=q>>8;b[d+2>>0]=q>>16;b[d+3>>0]=q>>24;q=a+32|0;d=f+(l<<2)|0;l=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[q>>0]=l;b[q+1>>0]=l>>8;b[q+2>>0]=l>>16;b[q+3>>0]=l>>24;l=a+36|0;q=f+(s<<2)|0;s=h[q>>0]|h[q+1>>0]<<8|h[q+2>>0]<<16|h[q+3>>0]<<24;b[l>>0]=s;b[l+1>>0]=s>>8;b[l+2>>0]=s>>16;b[l+3>>0]=s>>24;s=a+40|0;l=f+(t<<2)|0;t=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;b[s>>0]=t;b[s+1>>0]=t>>8;b[s+2>>0]=t>>16;b[s+3>>0]=t>>24;t=a+44|0;s=f+(p<<2&255)|0;p=h[s>>0]|h[s+1>>0]<<8|h[s+2>>0]<<16|h[s+3>>0]<<24;b[t>>0]=p;b[t+1>>0]=p>>8;b[t+2>>0]=p>>16;b[t+3>>0]=p>>24;p=a+48|0;t=f+(v<<2)|0;v=h[t>>0]|h[t+1>>0]<<8|h[t+2>>0]<<16|h[t+3>>0]<<24;b[p>>0]=v;b[p+1>>0]=v>>8;b[p+2>>0]=v>>16;b[p+3>>0]=v>>24;v=a+52|0;p=f+(w<<2)|0;w=h[p>>0]|h[p+1>>0]<<8|h[p+2>>0]<<16|h[p+3>>0]<<24;b[v>>0]=w;b[v+1>>0]=w>>8;b[v+2>>0]=w>>16;b[v+3>>0]=w>>24;w=a+56|0;v=f+(x<<2)|0;x=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;b[w>>0]=x;b[w+1>>0]=x>>8;b[w+2>>0]=x>>16;b[w+3>>0]=x>>24;x=a+60|0;a=f+((h[g+15>>0]|0)<<2&252)|0;g=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;b[x>>0]=g;b[x+1>>0]=g>>8;b[x+2>>0]=g>>16;b[x+3>>0]=g>>24;u=e;return}function ab(a,b,c){a=a|0;b=b|0;c=c|0;f[a>>2]=144;f[a+4>>2]=b;f[a+8>>2]=c;return}function bb(a,c){a=a|0;c=c|0;var d=0;d=f[a>>2]|0;if(!(f[a+8>>2]&1)){Ea[f[d+4>>2]&7](a,c);return}Ea[f[d>>2]&7](a,c);if(b[(f[a+4>>2]|0)+324>>0]|0)return;Ea[f[(f[a>>2]|0)+4>>2]&7](a,c);return}function cb(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0;f[a>>2]=0;g=a+324|0;b[g>>0]=0;i=(e&1|0)!=0;j=(e&128|0)!=0;e=0;do{a:do if(!(1<>2]=-1;else{if(i?(b[c+(e<<2|3)>>0]|0)>-1:0){f[a+260+(e<<2)>>2]=-1;b[g>>0]=1;break}k=e<<2;l=c+k|0;m=c+(k|1)|0;o=c+(k|2)|0;b:do if(!e)p=0;else{c:do if(i){q=0;while(1){if((((1<>0]|0)==(b[c+r>>0]|0)):0)?(b[m>>0]|0)==(b[c+(r|1)>>0]|0):0)?(b[o>>0]|0)==(b[c+(r|2)>>0]|0):0)?(b[c+(r|3)>>0]|0)<0:0){s=q;break c}q=q+1|0;if((q|0)==(e|0)){p=k;break b}}}else{q=0;while(1){if(((1<>0]|0)==(b[c+r>>0]|0)):0)?(b[m>>0]|0)==(b[c+(r|1)>>0]|0):0)?(b[o>>0]|0)==(b[c+(r|2)>>0]|0):0){s=q;break c}q=q+1|0;if((q|0)==(e|0)){p=k;break b}}}while(0);q=f[a+260+(s<<2)>>2]|0;r=a+196+(q<<2)|0;n[r>>2]=+n[r>>2]+(j?+((h[c+(k|3)>>0]|0)+1|0)*.00390625:1.0);f[a+260+(e<<2)>>2]=q;break a}while(0);t=+(h[m>>0]|0)/255.0;u=+(h[o>>0]|0)/255.0;v=+((h[c+(p|3)>>0]|0)+1|0)*.00390625;k=f[a>>2]|0;n[a+4+(k*12|0)>>2]=+(h[l>>0]|0)/255.0;n[a+4+(k*12|0)+4>>2]=t;n[a+4+(k*12|0)+8>>2]=u;n[a+196+(f[a>>2]<<2)>>2]=j?v:1.0;f[a+260+(e<<2)>>2]=f[a>>2];f[a>>2]=(f[a>>2]|0)+1}while(0);e=e+1|0}while((e|0)!=16);if((f[a>>2]|0)>0)w=0;else return;do{e=a+196+(w<<2)|0;v=+K(+(+n[e>>2]));n[e>>2]=v;w=w+1|0}while((w|0)<(f[a>>2]|0));return}function db(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;e=f[a+260>>2]|0;if((e|0)==-1)g=3;else g=b[c+e>>0]|0;b[d>>0]=g;g=f[a+264>>2]|0;if((g|0)==-1)h=3;else h=b[c+g>>0]|0;b[d+1>>0]=h;h=f[a+268>>2]|0;if((h|0)==-1)i=3;else i=b[c+h>>0]|0;b[d+2>>0]=i;i=f[a+272>>2]|0;if((i|0)==-1)j=3;else j=b[c+i>>0]|0;b[d+3>>0]=j;j=f[a+276>>2]|0;if((j|0)==-1)k=3;else k=b[c+j>>0]|0;b[d+4>>0]=k;k=f[a+280>>2]|0;if((k|0)==-1)l=3;else l=b[c+k>>0]|0;b[d+5>>0]=l;l=f[a+284>>2]|0;if((l|0)==-1)m=3;else m=b[c+l>>0]|0;b[d+6>>0]=m;m=f[a+288>>2]|0;if((m|0)==-1)n=3;else n=b[c+m>>0]|0;b[d+7>>0]=n;n=f[a+292>>2]|0;if((n|0)==-1)o=3;else o=b[c+n>>0]|0;b[d+8>>0]=o;o=f[a+296>>2]|0;if((o|0)==-1)p=3;else p=b[c+o>>0]|0;b[d+9>>0]=p;p=f[a+300>>2]|0;if((p|0)==-1)q=3;else q=b[c+p>>0]|0;b[d+10>>0]=q;q=f[a+304>>2]|0;if((q|0)==-1)r=3;else r=b[c+q>>0]|0;b[d+11>>0]=r;r=f[a+308>>2]|0;if((r|0)==-1)s=3;else s=b[c+r>>0]|0;b[d+12>>0]=s;s=f[a+312>>2]|0;if((s|0)==-1)t=3;else t=b[c+s>>0]|0;b[d+13>>0]=t;t=f[a+316>>2]|0;if((t|0)==-1)u=3;else u=b[c+t>>0]|0;b[d+14>>0]=u;u=f[a+320>>2]|0;if((u|0)==-1){v=3;w=d+15|0;b[w>>0]=v;return}v=b[c+u>>0]|0;w=d+15|0;b[w>>0]=v;return}function eb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0;e=(b|0)>0;if(e){g=0;h=0.0;i=0.0;j=0.0;k=0.0;while(1){l=+n[d+(g<<2)>>2];m=h+l;o=i+l*+n[c+(g*12|0)>>2];p=k+l*+n[c+(g*12|0)+4>>2];q=j+l*+n[c+(g*12|0)+8>>2];g=g+1|0;if((g|0)==(b|0)){r=m;s=o;t=q;u=p;break}else{h=m;i=o;j=q;k=p}}}else{r=0.0;s=0.0;t=0.0;u=0.0}k=1.0/r;r=s*k;s=u*k;u=t*k;g=a+4|0;v=a+8|0;w=a+12|0;x=a+16|0;y=a+20|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;if(e){z=0;A=0.0;B=0.0;C=0.0;D=0.0;E=0.0;F=0.0}else return;do{k=+n[c+(z*12|0)>>2]-r;t=+n[c+(z*12|0)+4>>2]-s;j=+n[c+(z*12|0)+8>>2]-u;i=+n[d+(z<<2)>>2];h=t*i;p=j*i;A=A+k*(k*i);B=k*h+B;C=k*p+C;D=t*h+D;E=t*p+E;F=j*p+F;z=z+1|0}while((z|0)!=(b|0));n[a>>2]=A;n[g>>2]=B;n[v>>2]=C;n[w>>2]=D;n[x>>2]=E;n[y>>2]=F;return}function fb(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0;c=+n[b>>2];d=+n[b+12>>2];e=c*d;f=+n[b+20>>2];g=+n[b+4>>2];h=+n[b+8>>2];i=+n[b+16>>2];j=d*f+(e+c*f)-g*g-h*h-i*i;k=c+d+f;l=k*.3333333432674408;m=j-k*l;o=k*(k*(k*-.07407407462596893))+k*(j*.3333333432674408)-(e*f+g*2.0*h*i-i*(c*i)-h*(d*h)-g*(f*g));e=o*(o*.25);j=m*(m*(m*.03703703731298447))+e;if(j>1.1920928955078125e-07){n[a>>2]=1.0;n[a+4>>2]=1.0;n[a+8>>2]=1.0;return}if(j<-1.1920928955078125e-07){m=+L(+(+K(+(e-j))),.3333333432674408);e=+S(+(+K(+-j)),+(o*-.5))/3.0;j=+M(+e);k=l+m*2.0*j;p=+N(+e)*1.7320507764816284;e=l-m*(j+p);q=l-m*(j-p);r=+J(+e)>+J(+k);p=r?e:k;r=+J(+q)>+J(+p);gb(a,b,r?q:p);return}if(o<0.0)s=-+L(+(o*-.5),.3333333432674408);else s=+L(+(o*.5),.3333333432674408);o=l+s;p=l-s*2.0;if(!(+J(+o)>+J(+p))){gb(a,b,p);return}p=c-o;c=d-o;d=f-o;o=+J(+p);f=+J(+g);b=f>o;s=b?f:o;o=+J(+h);r=o>s;f=r?o:s;s=+J(+c);t=s>f;o=t?s:f;f=+J(+i);u=f>o;v=+J(+d)>(u?f:o);switch((v?5:u?4:t?3:r?2:b&1)&7){case 1:case 0:{w=0.0;x=p;y=-g;break}case 2:{w=-p;x=0.0;y=h;break}case 4:case 3:{w=c;x=-i;y=0.0;break}default:{w=i;x=-d;y=0.0}}n[a>>2]=y;n[a+4>>2]=x;n[a+8>>2]=w;return}function gb(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,o=0.0,p=0,q=0.0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;d=u;u=u+32|0;e=d;g=+n[b>>2]-c;h=+n[b+4>>2];i=+n[b+8>>2];j=+n[b+12>>2]-c;k=+n[b+16>>2];l=+n[b+20>>2]-c;c=j*l-k*k;n[e>>2]=c;m=i*k-h*l;b=e+4|0;n[b>>2]=m;o=h*k-i*j;p=e+8|0;n[p>>2]=o;q=g*l-i*i;r=e+12|0;n[r>>2]=q;l=h*i-g*k;s=e+16|0;n[s>>2]=l;k=g*j-h*h;t=e+20|0;n[t>>2]=k;h=+J(+c);c=+J(+m);v=c>h;m=v?c:h;h=+J(+o);w=h>m;o=w?h:m;m=+J(+q);x=m>o;q=x?m:o;o=+J(+l);y=o>q;z=+J(+k)>(y?o:q);switch((z?5:y?4:x?3:w?2:v&1)&7){case 0:{A=b;B=p;C=e;break}case 3:case 1:{A=r;B=s;C=b;break}default:{A=s;B=t;C=p}}p=f[A>>2]|0;A=f[B>>2]|0;f[a>>2]=f[C>>2];f[a+4>>2]=p;f[a+8>>2]=A;u=d;return}function hb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0.0;d=u;u=u+80|0;e=d;g=d+56|0;h=d+40|0;i=f[a+4>>2]|0;j=f[i>>2]|0;k=a+24|0;f[e>>2]=f[k>>2];f[e+4>>2]=f[k+4>>2];f[e+8>>2]=f[k+8>>2];l=a+36|0;m=e+12|0;f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];f[m+8>>2]=f[l+8>>2];o=+n[k>>2]*.5+ +n[l>>2]*.5;p=+n[a+28>>2]*.5+ +n[a+40>>2]*.5;q=+n[a+32>>2]*.5+ +n[a+44>>2]*.5;n[e+24>>2]=o;n[e+28>>2]=p;n[e+32>>2]=q;if((j|0)>0){r=+n[a+12>>2];s=+n[a+16>>2];t=+n[a+20>>2];v=+n[e>>2];w=+n[e+4>>2];x=+n[e+8>>2];y=+n[e+12>>2];z=+n[e+16>>2];A=+n[e+20>>2];B=0.0;e=0;while(1){C=+n[i+4+(e*12|0)>>2];D=+n[i+4+(e*12|0)+4>>2];E=+n[i+4+(e*12|0)+8>>2];F=(C-v)*r;G=(D-w)*s;H=(E-x)*t;I=F*F+G*G+H*H;H=I<3402823466385288598117041.0e14?I:3402823466385288598117041.0e14;I=(C-y)*r;G=(D-z)*s;F=(E-A)*t;J=I*I+G*G+F*F;m=J>0]=K?2:m&1;D=B+(K?E:F);e=e+1|0;if((e|0)==(j|0)){L=D;break}else B=D}}else L=0.0;j=a+48|0;if(!(L<+n[j>>2])){u=d;return}db(i,g,h);Za(k,l,h,c);n[j>>2]=L;u=d;return}function ib(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0,O=0,P=0.0;d=u;u=u+80|0;e=d;g=d+64|0;h=d+48|0;i=f[a+4>>2]|0;j=f[i>>2]|0;k=a+24|0;f[e>>2]=f[k>>2];f[e+4>>2]=f[k+4>>2];f[e+8>>2]=f[k+8>>2];l=a+36|0;m=e+12|0;f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];f[m+8>>2]=f[l+8>>2];o=+n[k>>2];p=+n[a+28>>2];q=+n[a+32>>2];r=+n[l>>2];s=+n[a+40>>2];t=+n[a+44>>2];v=o*.6666666865348816+r*.3333333432674408;w=p*.6666666865348816+s*.3333333432674408;x=q*.6666666865348816+t*.3333333432674408;n[e+24>>2]=v;n[e+28>>2]=w;n[e+32>>2]=x;y=o*.3333333432674408+r*.6666666865348816;r=p*.3333333432674408+s*.6666666865348816;s=q*.3333333432674408+t*.6666666865348816;n[e+36>>2]=y;n[e+40>>2]=r;n[e+44>>2]=s;if((j|0)>0){t=+n[a+12>>2];q=+n[a+16>>2];p=+n[a+20>>2];o=+n[e>>2];z=+n[e+4>>2];A=+n[e+8>>2];B=+n[e+12>>2];C=+n[e+16>>2];D=+n[e+20>>2];E=0.0;e=0;while(1){F=+n[i+4+(e*12|0)>>2];G=+n[i+4+(e*12|0)+4>>2];H=+n[i+4+(e*12|0)+8>>2];I=(F-o)*t;J=(G-z)*q;K=(H-A)*p;L=I*I+J*J+K*K;K=L<3402823466385288598117041.0e14?L:3402823466385288598117041.0e14;L=(F-B)*t;J=(G-C)*q;I=(H-D)*p;M=L*L+J*J+I*I;m=M>0]=O?3:N?2:m&1;G=E+(O?H:J);e=e+1|0;if((e|0)==(j|0)){P=G;break}else E=G}}else P=0.0;j=a+48|0;if(!(P<+n[j>>2])){u=d;return}db(i,g,h);_a(k,l,h,c);n[j>>2]=P;u=d;return}function jb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,o=0.0,p=0.0,q=0.0,r=0.0,t=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0,G=0,H=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0,$=0,aa=0;d=u;u=u+48|0;e=d+16|0;g=d;ab(a,b,c);f[a>>2]=160;c=(f[a+8>>2]&32|0)==0;n[a+12>>2]=c?1.0:.2125999927520752;n[a+16>>2]=c?1.0:.7152000069618225;n[a+20>>2]=c?1.0:.0722000002861023;n[a+48>>2]=3402823466385288598117041.0e14;c=f[a+4>>2]|0;b=f[c>>2]|0;eb(e,b,c+4|0,c+196|0);fb(g,e);if((b|0)>0){e=f[c+4>>2]|0;h=f[c+8>>2]|0;i=f[c+12>>2]|0;j=(f[s>>2]=e,+n[s>>2]);k=+n[g>>2];l=(f[s>>2]=h,+n[s>>2]);m=+n[g+4>>2];o=(f[s>>2]=i,+n[s>>2]);p=+n[g+8>>2];q=j*k+l*m+o*p;if((b|0)==1){r=j;t=j;v=l;w=o;x=o;y=l}else{l=q;g=1;o=q;z=e;A=e;e=h;B=i;C=i;i=h;while(1){q=+n[c+4+(g*12|0)>>2];j=+n[c+4+(g*12|0)+4>>2];D=+n[c+4+(g*12|0)+8>>2];E=q*k+j*m+D*p;h=(n[s>>2]=q,f[s>>2]|0);F=(n[s>>2]=j,f[s>>2]|0);G=(n[s>>2]=D,f[s>>2]|0);if(!(Eo){H=l;J=E;K=h;L=A;M=F;N=G;O=C;P=i}else{H=l;J=o;K=z;L=A;M=e;N=B;O=C;P=i}else{H=E;J=o;K=z;L=h;M=e;N=B;O=G;P=F}g=g+1|0;if((g|0)>=(b|0))break;else{l=H;o=J;z=K;A=L;e=M;B=N;C=O;i=P}}J=(f[s>>2]=L,+n[s>>2]);o=(f[s>>2]=P,+n[s>>2]);H=(f[s>>2]=O,+n[s>>2]);l=(f[s>>2]=K,+n[s>>2]);p=(f[s>>2]=M,+n[s>>2]);r=l;t=J;v=p;w=(f[s>>2]=N,+n[s>>2]);x=H;y=o}}else{r=0.0;t=0.0;v=0.0;w=0.0;x=0.0;y=0.0}o=t>0.0?t:0.0;t=y>0.0?y:0.0;y=x>0.0?x:0.0;x=r>0.0?r:0.0;r=v>0.0?v:0.0;v=w>0.0?w:0.0;w=(o<1.0?o:1.0)*31.0+.5;o=(t<1.0?t:1.0)*63.0+.5;t=(y<1.0?y:1.0)*31.0+.5;if(w>0.0)Q=+I(+w);else Q=+V(+w);if(o>0.0)R=+I(+o);else R=+V(+o);if(t>0.0)S=+I(+t);else S=+V(+t);n[a+24>>2]=Q*.032258063554763794;n[a+28>>2]=R*.01587301678955555;n[a+32>>2]=S*.032258063554763794;S=(x<1.0?x:1.0)*31.0+.5;x=(r<1.0?r:1.0)*63.0+.5;r=(v<1.0?v:1.0)*31.0+.5;if(S>0.0)T=+I(+S);else T=+V(+S);if(x>0.0)U=+I(+x);else U=+V(+x);if(r>0.0){W=+I(+r);X=T*.032258063554763794;Y=U*.01587301678955555;Z=W*.032258063554763794;_=a+36|0;n[_>>2]=X;$=a+40|0;n[$>>2]=Y;aa=a+44|0;n[aa>>2]=Z;u=d;return}else{W=+V(+r);X=T*.032258063554763794;Y=U*.01587301678955555;Z=W*.032258063554763794;_=a+36|0;n[_>>2]=X;$=a+40|0;n[$>>2]=Y;aa=a+44|0;n[aa>>2]=Z;u=d;return}}function kb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;c=u;u=u+16|0;d=c;mb(a,196);e=a+44|0;g=a+48|0;if((f[e>>2]|0)>=(f[g>>2]|0)){u=c;return}db(f[a+4>>2]|0,a+40|0,d);Za(a+16|0,a+28|0,d,b);f[g>>2]=f[e>>2];u=c;return}function lb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;c=u;u=u+16|0;d=c;mb(a,184);e=a+44|0;g=a+48|0;if((f[e>>2]|0)>=(f[g>>2]|0)){u=c;return}db(f[a+4>>2]|0,a+40|0,d);_a(a+16|0,a+28|0,d,b);f[g>>2]=f[e>>2];u=c;return}function mb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;d=a+44|0;f[d>>2]=2147483647;e=a+16|0;g=a+20|0;i=a+24|0;j=a+28|0;k=a+32|0;l=a+36|0;m=a+40|0;o=h[a+12>>0]|0;p=c+4|0;q=h[a+13>>0]|0;r=c+8|0;s=h[a+14>>0]|0;a=f[c>>2]|0;t=h[a+(o*6|0)+2>>0]|0;u=W(t,t)|0;t=f[p>>2]|0;v=h[t+(q*6|0)+2>>0]|0;w=(W(v,v)|0)+u|0;u=f[r>>2]|0;v=h[u+(s*6|0)+2>>0]|0;x=(W(v,v)|0)+w|0;y=+(h[t+(q*6|0)>>0]|0)/63.0;z=+(h[u+(s*6|0)>>0]|0)/31.0;n[e>>2]=+(h[a+(o*6|0)>>0]|0)/31.0;n[g>>2]=y;n[i>>2]=z;z=+(h[t+(q*6|0)+1>>0]|0)/63.0;y=+(h[u+(s*6|0)+1>>0]|0)/31.0;n[j>>2]=+(h[a+(o*6|0)+1>>0]|0)/31.0;n[k>>2]=z;n[l>>2]=y;b[m>>0]=0;f[d>>2]=x;a=f[c>>2]|0;c=h[a+(o*6|0)+5>>0]|0;u=W(c,c)|0;c=f[p>>2]|0;p=h[c+(q*6|0)+5>>0]|0;t=(W(p,p)|0)+u|0;u=f[r>>2]|0;r=h[u+(s*6|0)+5>>0]|0;p=(W(r,r)|0)+t|0;if((p|0)>=(x|0))return;y=+(h[c+(q*6|0)+3>>0]|0)/63.0;z=+(h[u+(s*6|0)+3>>0]|0)/31.0;n[e>>2]=+(h[a+(o*6|0)+3>>0]|0)/31.0;n[g>>2]=y;n[i>>2]=z;z=+(h[c+(q*6|0)+4>>0]|0)/63.0;y=+(h[u+(s*6|0)+4>>0]|0)/31.0;n[j>>2]=+(h[a+(o*6|0)+4>>0]|0)/31.0;n[k>>2]=z;n[l>>2]=y;b[m>>0]=2;f[d>>2]=p;return}function nb(a,c,d){a=a|0;c=c|0;d=d|0;ab(a,c,d);f[a>>2]=176;d=f[a+4>>2]|0;c=~~(+n[d+4>>2]*255.0+.5);b[a+12>>0]=(c|0)<0?0:((c|0)<255?c:255)&255;c=~~(+n[d+8>>2]*255.0+.5);b[a+13>>0]=(c|0)<0?0:((c|0)<255?c:255)&255;c=~~(+n[d+12>>2]*255.0+.5);b[a+14>>0]=(c|0)<0?0:((c|0)<255?c:255)&255;f[a+48>>2]=2147483647;return}function ob(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;e=u;u=u+800|0;g=e+464|0;h=e;i=d&7;j=(i|0)==4?4:(i|0)==2?2:1;i=(d&280|0)==16?16:8;k=i|d&128|((d&96|0)==64?64:32)|j;d=(j&6|0)==0?c:c+8|0;cb(g,a,b,k);l=f[g>>2]|0;do if((l|0)!=1)if((i&16|0)!=0|(l|0)==0){jb(h,g,k);bb(h,d);break}else{Ya(h,g,k);bb(h,d);break}else{nb(h,g,k);bb(h,d)}while(0);if(j&2|0){Qa(a,b,c);u=e;return}if(!(j&4)){u=e;return}Sa(a,b,c);u=e;return}function pb(a,c,d,e,f){a=a|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;g=u;u=u+64|0;h=g;i=f&7;j=(i|0)==4?4:(i|0)==2?2:1;i=((f&280|0)==16?16:8)|f&128|((f&96|0)==64?64:32)|j;f=(j<<3&8^8)+8|0;if((d|0)<=0){u=g;return}if((c|0)>0){k=e;l=0}else{u=g;return}while(1){e=0;j=k;do{m=e|1;n=(m|0)<(c|0);o=e|2;p=(o|0)<(c|0);q=e|3;r=(q|0)<(c|0);s=0;t=0;v=h;while(1){w=s+l|0;x=W(w,c)|0;y=s<<2;if((w|0)<(d|0)){w=a+(e+x<<2)|0;z=w+1|0;b[v>>0]=b[w>>0]|0;w=z+1|0;b[v+1>>0]=b[z>>0]|0;b[v+2>>0]=b[w>>0]|0;b[v+3>>0]=b[w+1>>0]|0;w=1<>0]=b[z>>0]|0;z=A+1|0;b[v+5>>0]=b[A>>0]|0;b[v+6>>0]=b[z>>0]|0;b[v+7>>0]=b[z+1>>0]|0;B=1<<(y|1)|w}else B=w;if(p){w=a+(o+x<<2)|0;z=w+1|0;b[v+8>>0]=b[w>>0]|0;w=z+1|0;b[v+9>>0]=b[z>>0]|0;b[v+10>>0]=b[w>>0]|0;b[v+11>>0]=b[w+1>>0]|0;C=1<<(y|2)|B}else C=B;if(r){w=a+(q+x<<2)|0;x=w+1|0;b[v+12>>0]=b[w>>0]|0;w=x+1|0;b[v+13>>0]=b[x>>0]|0;b[v+14>>0]=b[w>>0]|0;b[v+15>>0]=b[w+1>>0]|0;D=1<<(y|3)|C}else D=C}else D=t;s=s+1|0;if((s|0)==4)break;else{t=D;v=v+16|0}}ob(h,D,j,i);j=j+f|0;e=e+4|0}while((e|0)<(c|0));l=l+4|0;if((l|0)>=(d|0))break;else k=j}u=g;return}function qb(a,c,d,e,f){a=a|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=u;u=u+64|0;h=g;i=f&7;f=(i|0)==4;j=f?4:(i|0)==2?2:1;i=(j<<3&8^8)+8|0;if((d|0)<=0){u=g;return}k=(c|0)>0;l=f?4:(j|0)==2?2:1;j=(l&6|0)==0;f=(l&1|0)!=0;m=(l&2|0)==0;n=(l&4|0)==0;l=e;e=0;while(1){a:do if(k){if(m){o=0;p=l}else{q=0;r=l;while(1){$a(h,j?r:r+8|0,f);Ra(h,r);s=q|1;t=(s|0)<(c|0);v=q|2;w=(v|0)<(c|0);x=q|3;y=(x|0)<(c|0);z=0;A=h;while(1){B=z+e|0;C=W(B,c)|0;if((B|0)<(d|0)){B=a+(q+C<<2)|0;D=B+1|0;b[B>>0]=b[A>>0]|0;B=D+1|0;b[D>>0]=b[A+1>>0]|0;b[B>>0]=b[A+2>>0]|0;b[B+1>>0]=b[A+3>>0]|0;if(t){B=a+(s+C<<2)|0;D=B+1|0;b[B>>0]=b[A+4>>0]|0;B=D+1|0;b[D>>0]=b[A+5>>0]|0;b[B>>0]=b[A+6>>0]|0;b[B+1>>0]=b[A+7>>0]|0}if(w){B=a+(v+C<<2)|0;D=B+1|0;b[B>>0]=b[A+8>>0]|0;B=D+1|0;b[D>>0]=b[A+9>>0]|0;b[B>>0]=b[A+10>>0]|0;b[B+1>>0]=b[A+11>>0]|0}if(y){B=a+(x+C<<2)|0;C=B+1|0;b[B>>0]=b[A+12>>0]|0;B=C+1|0;b[C>>0]=b[A+13>>0]|0;b[B>>0]=b[A+14>>0]|0;b[B+1>>0]=b[A+15>>0]|0}}z=z+1|0;if((z|0)==4)break;else A=A+16|0}A=r+i|0;q=q+4|0;if((q|0)>=(c|0)){E=A;break a}else r=A}}while(1){$a(h,j?p:p+8|0,f);if(!n)Ua(h,p);r=o|1;q=(r|0)<(c|0);A=o|2;z=(A|0)<(c|0);x=o|3;y=(x|0)<(c|0);v=0;w=h;while(1){s=v+e|0;t=W(s,c)|0;if((s|0)<(d|0)){s=a+(o+t<<2)|0;B=s+1|0;b[s>>0]=b[w>>0]|0;s=B+1|0;b[B>>0]=b[w+1>>0]|0;b[s>>0]=b[w+2>>0]|0;b[s+1>>0]=b[w+3>>0]|0;if(q){s=a+(r+t<<2)|0;B=s+1|0;b[s>>0]=b[w+4>>0]|0;s=B+1|0;b[B>>0]=b[w+5>>0]|0;b[s>>0]=b[w+6>>0]|0;b[s+1>>0]=b[w+7>>0]|0}if(z){s=a+(A+t<<2)|0;B=s+1|0;b[s>>0]=b[w+8>>0]|0;s=B+1|0;b[B>>0]=b[w+9>>0]|0;b[s>>0]=b[w+10>>0]|0;b[s+1>>0]=b[w+11>>0]|0}if(y){s=a+(x+t<<2)|0;t=s+1|0;b[s>>0]=b[w+12>>0]|0;s=t+1|0;b[t>>0]=b[w+13>>0]|0;b[s>>0]=b[w+14>>0]|0;b[s+1>>0]=b[w+15>>0]|0}}v=v+1|0;if((v|0)==4)break;else w=w+16|0}w=p+i|0;o=o+4|0;if((o|0)>=(c|0)){E=w;break}else p=w}}else E=l;while(0);e=e+4|0;if((e|0)>=(d|0))break;else l=E}u=g;return}function rb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=c&7;return W(W((b+3|0)/4|0,(a+3|0)/4|0)|0,(((d|0)!=2&(d|0)!=4&1)<<3^8)+8|0)|0}function sb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;pb(a,b,c,d,e);return}function tb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;qb(a,b,c,d,e);return}function ub(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;b=u;u=u+16|0;c=b;do if(a>>>0<245){d=a>>>0<11?16:a+11&-8;e=d>>>3;g=f[1754]|0;h=g>>>e;if(h&3|0){i=(h&1^1)+e|0;j=7056+(i<<1<<2)|0;k=j+8|0;l=f[k>>2]|0;m=l+8|0;n=f[m>>2]|0;if((j|0)==(n|0))f[1754]=g&~(1<>2]=j;f[k>>2]=n}n=i<<3;f[l+4>>2]=n|3;i=l+n+4|0;f[i>>2]=f[i>>2]|1;o=m;u=b;return o|0}m=f[1756]|0;if(d>>>0>m>>>0){if(h|0){i=2<>>12&16;e=i>>>n;i=e>>>5&8;h=e>>>i;e=h>>>2&4;l=h>>>e;h=l>>>1&2;k=l>>>h;l=k>>>1&1;j=(i|n|e|h|l)+(k>>>l)|0;l=7056+(j<<1<<2)|0;k=l+8|0;h=f[k>>2]|0;e=h+8|0;n=f[e>>2]|0;if((l|0)==(n|0)){i=g&~(1<>2]=l;f[k>>2]=n;p=g}n=(j<<3)-d|0;f[h+4>>2]=d|3;j=h+d|0;f[j+4>>2]=n|1;f[j+n>>2]=n;if(m|0){h=f[1759]|0;k=m>>>3;l=7056+(k<<1<<2)|0;i=1<>2]|0;r=i}f[r>>2]=h;f[q+12>>2]=h;f[h+8>>2]=q;f[h+12>>2]=l}f[1756]=n;f[1759]=j;o=e;u=b;return o|0}e=f[1755]|0;if(e){j=(e&0-e)+-1|0;n=j>>>12&16;l=j>>>n;j=l>>>5&8;h=l>>>j;l=h>>>2&4;i=h>>>l;h=i>>>1&2;k=i>>>h;i=k>>>1&1;s=f[7320+((j|n|l|h|i)+(k>>>i)<<2)>>2]|0;i=(f[s+4>>2]&-8)-d|0;k=f[s+16+(((f[s+16>>2]|0)==0&1)<<2)>>2]|0;if(!k){t=s;v=i}else{h=s;s=i;i=k;while(1){k=(f[i+4>>2]&-8)-d|0;l=k>>>0>>0;n=l?k:s;k=l?i:h;i=f[i+16+(((f[i+16>>2]|0)==0&1)<<2)>>2]|0;if(!i){t=k;v=n;break}else{h=k;s=n}}}s=t+d|0;if(t>>>0>>0){h=f[t+24>>2]|0;i=f[t+12>>2]|0;do if((i|0)==(t|0)){n=t+20|0;k=f[n>>2]|0;if(!k){l=t+16|0;j=f[l>>2]|0;if(!j){w=0;break}else{x=j;y=l}}else{x=k;y=n}while(1){n=x+20|0;k=f[n>>2]|0;if(k|0){x=k;y=n;continue}n=x+16|0;k=f[n>>2]|0;if(!k)break;else{x=k;y=n}}f[y>>2]=0;w=x}else{n=f[t+8>>2]|0;f[n+12>>2]=i;f[i+8>>2]=n;w=i}while(0);do if(h|0){i=f[t+28>>2]|0;n=7320+(i<<2)|0;if((t|0)==(f[n>>2]|0)){f[n>>2]=w;if(!w){f[1755]=e&~(1<>2]|0)!=(t|0)&1)<<2)>>2]=w;if(!w)break}f[w+24>>2]=h;i=f[t+16>>2]|0;if(i|0){f[w+16>>2]=i;f[i+24>>2]=w}i=f[t+20>>2]|0;if(i|0){f[w+20>>2]=i;f[i+24>>2]=w}}while(0);if(v>>>0<16){h=v+d|0;f[t+4>>2]=h|3;e=t+h+4|0;f[e>>2]=f[e>>2]|1}else{f[t+4>>2]=d|3;f[s+4>>2]=v|1;f[s+v>>2]=v;if(m|0){e=f[1759]|0;h=m>>>3;i=7056+(h<<1<<2)|0;n=1<>2]|0;A=n}f[A>>2]=e;f[z+12>>2]=e;f[e+8>>2]=z;f[e+12>>2]=i}f[1756]=v;f[1759]=s}o=t+8|0;u=b;return o|0}else B=d}else B=d}else B=d}else if(a>>>0<=4294967231){i=a+11|0;e=i&-8;n=f[1755]|0;if(n){h=0-e|0;k=i>>>8;if(k)if(e>>>0>16777215)C=31;else{i=(k+1048320|0)>>>16&8;l=k<>>16&4;j=l<>>16&2;D=14-(k|i|l)+(j<>>15)|0;C=e>>>(D+7|0)&1|D<<1}else C=0;D=f[7320+(C<<2)>>2]|0;a:do if(!D){E=0;F=0;G=h;H=57}else{l=0;j=h;i=D;k=e<<((C|0)==31?0:25-(C>>>1)|0);I=0;while(1){J=(f[i+4>>2]&-8)-e|0;if(J>>>0>>0)if(!J){K=i;L=0;M=i;H=61;break a}else{N=i;O=J}else{N=l;O=j}J=f[i+20>>2]|0;i=f[i+16+(k>>>31<<2)>>2]|0;P=(J|0)==0|(J|0)==(i|0)?I:J;J=(i|0)==0;if(J){E=P;F=N;G=O;H=57;break}else{l=N;j=O;k=k<<((J^1)&1);I=P}}}while(0);if((H|0)==57){if((E|0)==0&(F|0)==0){D=2<>>12&16;d=D>>>h;D=d>>>5&8;s=d>>>D;d=s>>>2&4;g=s>>>d;s=g>>>1&2;m=g>>>s;g=m>>>1&1;Q=0;R=f[7320+((D|h|d|s|g)+(m>>>g)<<2)>>2]|0}else{Q=F;R=E}if(!R){S=Q;T=G}else{K=Q;L=G;M=R;H=61}}if((H|0)==61)while(1){H=0;g=(f[M+4>>2]&-8)-e|0;m=g>>>0>>0;s=m?g:L;g=m?M:K;M=f[M+16+(((f[M+16>>2]|0)==0&1)<<2)>>2]|0;if(!M){S=g;T=s;break}else{K=g;L=s;H=61}}if((S|0)!=0?T>>>0<((f[1756]|0)-e|0)>>>0:0){s=S+e|0;if(S>>>0>=s>>>0){o=0;u=b;return o|0}g=f[S+24>>2]|0;m=f[S+12>>2]|0;do if((m|0)==(S|0)){d=S+20|0;h=f[d>>2]|0;if(!h){D=S+16|0;I=f[D>>2]|0;if(!I){U=0;break}else{V=I;W=D}}else{V=h;W=d}while(1){d=V+20|0;h=f[d>>2]|0;if(h|0){V=h;W=d;continue}d=V+16|0;h=f[d>>2]|0;if(!h)break;else{V=h;W=d}}f[W>>2]=0;U=V}else{d=f[S+8>>2]|0;f[d+12>>2]=m;f[m+8>>2]=d;U=m}while(0);do if(g){m=f[S+28>>2]|0;d=7320+(m<<2)|0;if((S|0)==(f[d>>2]|0)){f[d>>2]=U;if(!U){d=n&~(1<>2]|0)!=(S|0)&1)<<2)>>2]=U;if(!U){X=n;break}}f[U+24>>2]=g;d=f[S+16>>2]|0;if(d|0){f[U+16>>2]=d;f[d+24>>2]=U}d=f[S+20>>2]|0;if(d){f[U+20>>2]=d;f[d+24>>2]=U;X=n}else X=n}else X=n;while(0);do if(T>>>0>=16){f[S+4>>2]=e|3;f[s+4>>2]=T|1;f[s+T>>2]=T;n=T>>>3;if(T>>>0<256){g=7056+(n<<1<<2)|0;d=f[1754]|0;m=1<>2]|0;Z=m}f[Z>>2]=s;f[Y+12>>2]=s;f[s+8>>2]=Y;f[s+12>>2]=g;break}g=T>>>8;if(g)if(T>>>0>16777215)_=31;else{m=(g+1048320|0)>>>16&8;d=g<>>16&4;n=d<>>16&2;h=14-(g|m|d)+(n<>>15)|0;_=T>>>(h+7|0)&1|h<<1}else _=0;h=7320+(_<<2)|0;f[s+28>>2]=_;d=s+16|0;f[d+4>>2]=0;f[d>>2]=0;d=1<<_;if(!(X&d)){f[1755]=X|d;f[h>>2]=s;f[s+24>>2]=h;f[s+12>>2]=s;f[s+8>>2]=s;break}d=T<<((_|0)==31?0:25-(_>>>1)|0);n=f[h>>2]|0;while(1){if((f[n+4>>2]&-8|0)==(T|0)){H=97;break}$=n+16+(d>>>31<<2)|0;h=f[$>>2]|0;if(!h){H=96;break}else{d=d<<1;n=h}}if((H|0)==96){f[$>>2]=s;f[s+24>>2]=n;f[s+12>>2]=s;f[s+8>>2]=s;break}else if((H|0)==97){d=n+8|0;h=f[d>>2]|0;f[h+12>>2]=s;f[d>>2]=s;f[s+8>>2]=h;f[s+12>>2]=n;f[s+24>>2]=0;break}}else{h=T+e|0;f[S+4>>2]=h|3;d=S+h+4|0;f[d>>2]=f[d>>2]|1}while(0);o=S+8|0;u=b;return o|0}else B=e}else B=e}else B=-1;while(0);S=f[1756]|0;if(S>>>0>=B>>>0){T=S-B|0;$=f[1759]|0;if(T>>>0>15){_=$+B|0;f[1759]=_;f[1756]=T;f[_+4>>2]=T|1;f[_+T>>2]=T;f[$+4>>2]=B|3}else{f[1756]=0;f[1759]=0;f[$+4>>2]=S|3;T=$+S+4|0;f[T>>2]=f[T>>2]|1}o=$+8|0;u=b;return o|0}$=f[1757]|0;if($>>>0>B>>>0){T=$-B|0;f[1757]=T;S=f[1760]|0;_=S+B|0;f[1760]=_;f[_+4>>2]=T|1;f[S+4>>2]=B|3;o=S+8|0;u=b;return o|0}if(!(f[1872]|0)){f[1874]=4096;f[1873]=4096;f[1875]=-1;f[1876]=-1;f[1877]=0;f[1865]=0;S=c&-16^1431655768;f[c>>2]=S;f[1872]=S;aa=4096}else aa=f[1874]|0;S=B+48|0;c=B+47|0;T=aa+c|0;_=0-aa|0;aa=T&_;if(aa>>>0<=B>>>0){o=0;u=b;return o|0}X=f[1864]|0;if(X|0?(Y=f[1862]|0,Z=Y+aa|0,Z>>>0<=Y>>>0|Z>>>0>X>>>0):0){o=0;u=b;return o|0}b:do if(!(f[1865]&4)){X=f[1760]|0;c:do if(X){Z=7464;while(1){Y=f[Z>>2]|0;if(Y>>>0<=X>>>0?(ba=Z+4|0,(Y+(f[ba>>2]|0)|0)>>>0>X>>>0):0)break;Y=f[Z+8>>2]|0;if(!Y){H=118;break c}else Z=Y}n=T-$&_;if(n>>>0<2147483647){Y=ec(n|0)|0;if((Y|0)==((f[Z>>2]|0)+(f[ba>>2]|0)|0))if((Y|0)==(-1|0))ca=n;else{da=n;ea=Y;H=135;break b}else{fa=Y;ga=n;H=126}}else ca=0}else H=118;while(0);do if((H|0)==118){X=ec(0)|0;if((X|0)!=(-1|0)?(e=X,n=f[1873]|0,Y=n+-1|0,U=((Y&e|0)==0?0:(Y+e&0-n)-e|0)+aa|0,e=f[1862]|0,n=U+e|0,U>>>0>B>>>0&U>>>0<2147483647):0){Y=f[1864]|0;if(Y|0?n>>>0<=e>>>0|n>>>0>Y>>>0:0){ca=0;break}Y=ec(U|0)|0;if((Y|0)==(X|0)){da=U;ea=X;H=135;break b}else{fa=Y;ga=U;H=126}}else ca=0}while(0);do if((H|0)==126){U=0-ga|0;if(!(S>>>0>ga>>>0&(ga>>>0<2147483647&(fa|0)!=(-1|0))))if((fa|0)==(-1|0)){ca=0;break}else{da=ga;ea=fa;H=135;break b}Y=f[1874]|0;X=c-ga+Y&0-Y;if(X>>>0>=2147483647){da=ga;ea=fa;H=135;break b}if((ec(X|0)|0)==(-1|0)){ec(U|0)|0;ca=0;break}else{da=X+ga|0;ea=fa;H=135;break b}}while(0);f[1865]=f[1865]|4;ha=ca;H=133}else{ha=0;H=133}while(0);if(((H|0)==133?aa>>>0<2147483647:0)?(ca=ec(aa|0)|0,aa=ec(0)|0,fa=aa-ca|0,ga=fa>>>0>(B+40|0)>>>0,!((ca|0)==(-1|0)|ga^1|ca>>>0>>0&((ca|0)!=(-1|0)&(aa|0)!=(-1|0))^1)):0){da=ga?fa:ha;ea=ca;H=135}if((H|0)==135){ca=(f[1862]|0)+da|0;f[1862]=ca;if(ca>>>0>(f[1863]|0)>>>0)f[1863]=ca;ca=f[1760]|0;do if(ca){ha=7464;while(1){ia=f[ha>>2]|0;ja=ha+4|0;ka=f[ja>>2]|0;if((ea|0)==(ia+ka|0)){H=145;break}fa=f[ha+8>>2]|0;if(!fa)break;else ha=fa}if(((H|0)==145?(f[ha+12>>2]&8|0)==0:0)?ca>>>0>>0&ca>>>0>=ia>>>0:0){f[ja>>2]=ka+da;fa=ca+8|0;ga=(fa&7|0)==0?0:0-fa&7;fa=ca+ga|0;aa=(f[1757]|0)+(da-ga)|0;f[1760]=fa;f[1757]=aa;f[fa+4>>2]=aa|1;f[fa+aa+4>>2]=40;f[1761]=f[1876];break}if(ea>>>0<(f[1758]|0)>>>0)f[1758]=ea;aa=ea+da|0;fa=7464;while(1){if((f[fa>>2]|0)==(aa|0)){H=153;break}ga=f[fa+8>>2]|0;if(!ga)break;else fa=ga}if((H|0)==153?(f[fa+12>>2]&8|0)==0:0){f[fa>>2]=ea;ha=fa+4|0;f[ha>>2]=(f[ha>>2]|0)+da;ha=ea+8|0;ga=ea+((ha&7|0)==0?0:0-ha&7)|0;ha=aa+8|0;c=aa+((ha&7|0)==0?0:0-ha&7)|0;ha=ga+B|0;S=c-ga-B|0;f[ga+4>>2]=B|3;do if((c|0)!=(ca|0)){if((c|0)==(f[1759]|0)){ba=(f[1756]|0)+S|0;f[1756]=ba;f[1759]=ha;f[ha+4>>2]=ba|1;f[ha+ba>>2]=ba;break}ba=f[c+4>>2]|0;if((ba&3|0)==1){_=ba&-8;$=ba>>>3;d:do if(ba>>>0<256){T=f[c+8>>2]|0;X=f[c+12>>2]|0;if((X|0)==(T|0)){f[1754]=f[1754]&~(1<<$);break}else{f[T+12>>2]=X;f[X+8>>2]=T;break}}else{T=f[c+24>>2]|0;X=f[c+12>>2]|0;do if((X|0)==(c|0)){U=c+16|0;Y=U+4|0;n=f[Y>>2]|0;if(!n){e=f[U>>2]|0;if(!e){la=0;break}else{ma=e;na=U}}else{ma=n;na=Y}while(1){Y=ma+20|0;n=f[Y>>2]|0;if(n|0){ma=n;na=Y;continue}Y=ma+16|0;n=f[Y>>2]|0;if(!n)break;else{ma=n;na=Y}}f[na>>2]=0;la=ma}else{Y=f[c+8>>2]|0;f[Y+12>>2]=X;f[X+8>>2]=Y;la=X}while(0);if(!T)break;X=f[c+28>>2]|0;Y=7320+(X<<2)|0;do if((c|0)!=(f[Y>>2]|0)){f[T+16+(((f[T+16>>2]|0)!=(c|0)&1)<<2)>>2]=la;if(!la)break d}else{f[Y>>2]=la;if(la|0)break;f[1755]=f[1755]&~(1<>2]=T;X=c+16|0;Y=f[X>>2]|0;if(Y|0){f[la+16>>2]=Y;f[Y+24>>2]=la}Y=f[X+4>>2]|0;if(!Y)break;f[la+20>>2]=Y;f[Y+24>>2]=la}while(0);oa=c+_|0;pa=_+S|0}else{oa=c;pa=S}$=oa+4|0;f[$>>2]=f[$>>2]&-2;f[ha+4>>2]=pa|1;f[ha+pa>>2]=pa;$=pa>>>3;if(pa>>>0<256){ba=7056+($<<1<<2)|0;Z=f[1754]|0;Y=1<<$;if(!(Z&Y)){f[1754]=Z|Y;qa=ba;ra=ba+8|0}else{Y=ba+8|0;qa=f[Y>>2]|0;ra=Y}f[ra>>2]=ha;f[qa+12>>2]=ha;f[ha+8>>2]=qa;f[ha+12>>2]=ba;break}ba=pa>>>8;do if(!ba)sa=0;else{if(pa>>>0>16777215){sa=31;break}Y=(ba+1048320|0)>>>16&8;Z=ba<>>16&4;X=Z<<$;Z=(X+245760|0)>>>16&2;n=14-($|Y|Z)+(X<>>15)|0;sa=pa>>>(n+7|0)&1|n<<1}while(0);ba=7320+(sa<<2)|0;f[ha+28>>2]=sa;_=ha+16|0;f[_+4>>2]=0;f[_>>2]=0;_=f[1755]|0;n=1<>2]=ha;f[ha+24>>2]=ba;f[ha+12>>2]=ha;f[ha+8>>2]=ha;break}n=pa<<((sa|0)==31?0:25-(sa>>>1)|0);_=f[ba>>2]|0;while(1){if((f[_+4>>2]&-8|0)==(pa|0)){H=194;break}ta=_+16+(n>>>31<<2)|0;ba=f[ta>>2]|0;if(!ba){H=193;break}else{n=n<<1;_=ba}}if((H|0)==193){f[ta>>2]=ha;f[ha+24>>2]=_;f[ha+12>>2]=ha;f[ha+8>>2]=ha;break}else if((H|0)==194){n=_+8|0;ba=f[n>>2]|0;f[ba+12>>2]=ha;f[n>>2]=ha;f[ha+8>>2]=ba;f[ha+12>>2]=_;f[ha+24>>2]=0;break}}else{ba=(f[1757]|0)+S|0;f[1757]=ba;f[1760]=ha;f[ha+4>>2]=ba|1}while(0);o=ga+8|0;u=b;return o|0}ha=7464;while(1){S=f[ha>>2]|0;if(S>>>0<=ca>>>0?(ua=S+(f[ha+4>>2]|0)|0,ua>>>0>ca>>>0):0)break;ha=f[ha+8>>2]|0}ha=ua+-47|0;ga=ha+8|0;S=ha+((ga&7|0)==0?0:0-ga&7)|0;ga=ca+16|0;ha=S>>>0>>0?ca:S;S=ha+8|0;c=ea+8|0;aa=(c&7|0)==0?0:0-c&7;c=ea+aa|0;fa=da+-40-aa|0;f[1760]=c;f[1757]=fa;f[c+4>>2]=fa|1;f[c+fa+4>>2]=40;f[1761]=f[1876];fa=ha+4|0;f[fa>>2]=27;f[S>>2]=f[1866];f[S+4>>2]=f[1867];f[S+8>>2]=f[1868];f[S+12>>2]=f[1869];f[1866]=ea;f[1867]=da;f[1869]=0;f[1868]=S;S=ha+24|0;do{c=S;S=S+4|0;f[S>>2]=7}while((c+8|0)>>>0>>0);if((ha|0)!=(ca|0)){S=ha-ca|0;f[fa>>2]=f[fa>>2]&-2;f[ca+4>>2]=S|1;f[ha>>2]=S;c=S>>>3;if(S>>>0<256){aa=7056+(c<<1<<2)|0;ba=f[1754]|0;n=1<>2]|0;wa=n}f[wa>>2]=ca;f[va+12>>2]=ca;f[ca+8>>2]=va;f[ca+12>>2]=aa;break}aa=S>>>8;if(aa)if(S>>>0>16777215)xa=31;else{n=(aa+1048320|0)>>>16&8;ba=aa<>>16&4;c=ba<>>16&2;Z=14-(aa|n|ba)+(c<>>15)|0;xa=S>>>(Z+7|0)&1|Z<<1}else xa=0;Z=7320+(xa<<2)|0;f[ca+28>>2]=xa;f[ca+20>>2]=0;f[ga>>2]=0;ba=f[1755]|0;c=1<>2]=ca;f[ca+24>>2]=Z;f[ca+12>>2]=ca;f[ca+8>>2]=ca;break}c=S<<((xa|0)==31?0:25-(xa>>>1)|0);ba=f[Z>>2]|0;while(1){if((f[ba+4>>2]&-8|0)==(S|0)){H=216;break}ya=ba+16+(c>>>31<<2)|0;Z=f[ya>>2]|0;if(!Z){H=215;break}else{c=c<<1;ba=Z}}if((H|0)==215){f[ya>>2]=ca;f[ca+24>>2]=ba;f[ca+12>>2]=ca;f[ca+8>>2]=ca;break}else if((H|0)==216){c=ba+8|0;S=f[c>>2]|0;f[S+12>>2]=ca;f[c>>2]=ca;f[ca+8>>2]=S;f[ca+12>>2]=ba;f[ca+24>>2]=0;break}}}else{S=f[1758]|0;if((S|0)==0|ea>>>0>>0)f[1758]=ea;f[1866]=ea;f[1867]=da;f[1869]=0;f[1763]=f[1872];f[1762]=-1;S=0;do{c=7056+(S<<1<<2)|0;f[c+12>>2]=c;f[c+8>>2]=c;S=S+1|0}while((S|0)!=32);S=ea+8|0;ba=(S&7|0)==0?0:0-S&7;S=ea+ba|0;c=da+-40-ba|0;f[1760]=S;f[1757]=c;f[S+4>>2]=c|1;f[S+c+4>>2]=40;f[1761]=f[1876]}while(0);da=f[1757]|0;if(da>>>0>B>>>0){ea=da-B|0;f[1757]=ea;da=f[1760]|0;ca=da+B|0;f[1760]=ca;f[ca+4>>2]=ea|1;f[da+4>>2]=B|3;o=da+8|0;u=b;return o|0}}da=Ab()|0;f[da>>2]=12;o=0;u=b;return o|0}function vb(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;if(!a)return;b=a+-8|0;c=f[1758]|0;d=f[a+-4>>2]|0;a=d&-8;e=b+a|0;do if(!(d&1)){g=f[b>>2]|0;if(!(d&3))return;h=b+(0-g)|0;i=g+a|0;if(h>>>0>>0)return;if((h|0)==(f[1759]|0)){j=e+4|0;k=f[j>>2]|0;if((k&3|0)!=3){l=h;m=i;n=h;break}f[1756]=i;f[j>>2]=k&-2;f[h+4>>2]=i|1;f[h+i>>2]=i;return}k=g>>>3;if(g>>>0<256){g=f[h+8>>2]|0;j=f[h+12>>2]|0;if((j|0)==(g|0)){f[1754]=f[1754]&~(1<>2]=j;f[j+8>>2]=g;l=h;m=i;n=h;break}}g=f[h+24>>2]|0;j=f[h+12>>2]|0;do if((j|0)==(h|0)){k=h+16|0;o=k+4|0;p=f[o>>2]|0;if(!p){q=f[k>>2]|0;if(!q){r=0;break}else{s=q;t=k}}else{s=p;t=o}while(1){o=s+20|0;p=f[o>>2]|0;if(p|0){s=p;t=o;continue}o=s+16|0;p=f[o>>2]|0;if(!p)break;else{s=p;t=o}}f[t>>2]=0;r=s}else{o=f[h+8>>2]|0;f[o+12>>2]=j;f[j+8>>2]=o;r=j}while(0);if(g){j=f[h+28>>2]|0;o=7320+(j<<2)|0;if((h|0)==(f[o>>2]|0)){f[o>>2]=r;if(!r){f[1755]=f[1755]&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=r;if(!r){l=h;m=i;n=h;break}}f[r+24>>2]=g;j=h+16|0;o=f[j>>2]|0;if(o|0){f[r+16>>2]=o;f[o+24>>2]=r}o=f[j+4>>2]|0;if(o){f[r+20>>2]=o;f[o+24>>2]=r;l=h;m=i;n=h}else{l=h;m=i;n=h}}else{l=h;m=i;n=h}}else{l=b;m=a;n=b}while(0);if(n>>>0>=e>>>0)return;b=e+4|0;a=f[b>>2]|0;if(!(a&1))return;if(!(a&2)){r=f[1759]|0;if((e|0)==(f[1760]|0)){s=(f[1757]|0)+m|0;f[1757]=s;f[1760]=l;f[l+4>>2]=s|1;if((l|0)!=(r|0))return;f[1759]=0;f[1756]=0;return}if((e|0)==(r|0)){r=(f[1756]|0)+m|0;f[1756]=r;f[1759]=n;f[l+4>>2]=r|1;f[n+r>>2]=r;return}r=(a&-8)+m|0;s=a>>>3;do if(a>>>0<256){t=f[e+8>>2]|0;c=f[e+12>>2]|0;if((c|0)==(t|0)){f[1754]=f[1754]&~(1<>2]=c;f[c+8>>2]=t;break}}else{t=f[e+24>>2]|0;c=f[e+12>>2]|0;do if((c|0)==(e|0)){d=e+16|0;o=d+4|0;j=f[o>>2]|0;if(!j){p=f[d>>2]|0;if(!p){u=0;break}else{v=p;w=d}}else{v=j;w=o}while(1){o=v+20|0;j=f[o>>2]|0;if(j|0){v=j;w=o;continue}o=v+16|0;j=f[o>>2]|0;if(!j)break;else{v=j;w=o}}f[w>>2]=0;u=v}else{o=f[e+8>>2]|0;f[o+12>>2]=c;f[c+8>>2]=o;u=c}while(0);if(t|0){c=f[e+28>>2]|0;h=7320+(c<<2)|0;if((e|0)==(f[h>>2]|0)){f[h>>2]=u;if(!u){f[1755]=f[1755]&~(1<>2]|0)!=(e|0)&1)<<2)>>2]=u;if(!u)break}f[u+24>>2]=t;c=e+16|0;h=f[c>>2]|0;if(h|0){f[u+16>>2]=h;f[h+24>>2]=u}h=f[c+4>>2]|0;if(h|0){f[u+20>>2]=h;f[h+24>>2]=u}}}while(0);f[l+4>>2]=r|1;f[n+r>>2]=r;if((l|0)==(f[1759]|0)){f[1756]=r;return}else x=r}else{f[b>>2]=a&-2;f[l+4>>2]=m|1;f[n+m>>2]=m;x=m}m=x>>>3;if(x>>>0<256){n=7056+(m<<1<<2)|0;a=f[1754]|0;b=1<>2]|0;z=b}f[z>>2]=l;f[y+12>>2]=l;f[l+8>>2]=y;f[l+12>>2]=n;return}n=x>>>8;if(n)if(x>>>0>16777215)A=31;else{y=(n+1048320|0)>>>16&8;z=n<>>16&4;b=z<>>16&2;a=14-(n|y|z)+(b<>>15)|0;A=x>>>(a+7|0)&1|a<<1}else A=0;a=7320+(A<<2)|0;f[l+28>>2]=A;f[l+20>>2]=0;f[l+16>>2]=0;z=f[1755]|0;b=1<>>1)|0);n=f[a>>2]|0;while(1){if((f[n+4>>2]&-8|0)==(x|0)){B=73;break}C=n+16+(y>>>31<<2)|0;m=f[C>>2]|0;if(!m){B=72;break}else{y=y<<1;n=m}}if((B|0)==72){f[C>>2]=l;f[l+24>>2]=n;f[l+12>>2]=l;f[l+8>>2]=l;break}else if((B|0)==73){y=n+8|0;t=f[y>>2]|0;f[t+12>>2]=l;f[y>>2]=l;f[l+8>>2]=t;f[l+12>>2]=n;f[l+24>>2]=0;break}}else{f[1755]=z|b;f[a>>2]=l;f[l+24>>2]=a;f[l+12>>2]=l;f[l+8>>2]=l}while(0);l=(f[1762]|0)+-1|0;f[1762]=l;if(!l)D=7472;else return;while(1){l=f[D>>2]|0;if(!l)break;else D=l+8|0}f[1762]=-1;return}function wb(){return 7512}function xb(a){a=a|0;var b=0,c=0,d=0;b=u;u=u+16|0;c=b;d=Db(f[a+60>>2]|0)|0;f[c>>2]=d;d=zb(ma(6,c|0)|0)|0;u=b;return d|0}function yb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;d=u;u=u+32|0;e=d;g=d+20|0;f[e>>2]=f[a+60>>2];f[e+4>>2]=0;f[e+8>>2]=b;f[e+12>>2]=g;f[e+16>>2]=c;if((zb(oa(140,e|0)|0)|0)<0){f[g>>2]=-1;h=-1}else h=f[g>>2]|0;u=d;return h|0}function zb(a){a=a|0;var b=0,c=0;if(a>>>0>4294963200){b=Ab()|0;f[b>>2]=0-a;c=-1}else c=a;return c|0}function Ab(){return (Bb()|0)+64|0}function Bb(){return Cb()|0}function Cb(){return 208}function Db(a){a=a|0;return a|0}function Eb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;d=u;u=u+48|0;e=d+16|0;g=d;h=d+32|0;i=a+28|0;j=f[i>>2]|0;f[h>>2]=j;k=a+20|0;l=(f[k>>2]|0)-j|0;f[h+4>>2]=l;f[h+8>>2]=b;f[h+12>>2]=c;b=l+c|0;l=a+60|0;f[g>>2]=f[l>>2];f[g+4>>2]=h;f[g+8>>2]=2;j=zb(xa(146,g|0)|0)|0;a:do if((b|0)!=(j|0)){g=2;m=b;n=h;o=j;while(1){if((o|0)<0)break;m=m-o|0;p=f[n+4>>2]|0;q=o>>>0>p>>>0;r=q?n+8|0:n;s=(q<<31>>31)+g|0;t=o-(q?p:0)|0;f[r>>2]=(f[r>>2]|0)+t;p=r+4|0;f[p>>2]=(f[p>>2]|0)-t;f[e>>2]=f[l>>2];f[e+4>>2]=r;f[e+8>>2]=s;o=zb(xa(146,e|0)|0)|0;if((m|0)==(o|0)){v=3;break a}else{g=s;n=r}}f[a+16>>2]=0;f[i>>2]=0;f[k>>2]=0;f[a>>2]=f[a>>2]|32;if((g|0)==2)w=0;else w=c-(f[n+4>>2]|0)|0}else v=3;while(0);if((v|0)==3){v=f[a+44>>2]|0;f[a+16>>2]=v+(f[a+48>>2]|0);f[i>>2]=v;f[k>>2]=v;w=c}u=d;return w|0}function Fb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+32|0;g=e;f[a+36>>2]=4;if((f[a>>2]&64|0)==0?(f[g>>2]=f[a+60>>2],f[g+4>>2]=21523,f[g+8>>2]=e+16,sa(54,g|0)|0):0)b[a+75>>0]=-1;g=Eb(a,c,d)|0;u=e;return g|0}function Gb(a){a=a|0;return 0}function Hb(a){a=a|0;return}function Ib(){la(7576);return 7584}function Jb(){ta(7576);return}function Kb(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;do if(a){if((f[a+76>>2]|0)<=-1){b=Lb(a)|0;break}c=(Gb(a)|0)==0;d=Lb(a)|0;if(c)b=d;else{Hb(a);b=d}}else{if(!(f[144]|0))e=0;else e=Kb(f[144]|0)|0;d=Ib()|0;c=f[d>>2]|0;if(!c)g=e;else{d=c;c=e;while(1){if((f[d+76>>2]|0)>-1)h=Gb(d)|0;else h=0;if((f[d+20>>2]|0)>>>0>(f[d+28>>2]|0)>>>0)i=Lb(d)|0|c;else i=c;if(h|0)Hb(d);d=f[d+56>>2]|0;if(!d){g=i;break}else c=i}}Jb();b=g}while(0);return b|0}function Lb(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;b=a+20|0;c=a+28|0;if((f[b>>2]|0)>>>0>(f[c>>2]|0)>>>0?(Ba[f[a+36>>2]&7](a,0,0)|0,(f[b>>2]|0)==0):0)d=-1;else{e=a+4|0;g=f[e>>2]|0;h=a+8|0;i=f[h>>2]|0;if(g>>>0>>0)Ba[f[a+40>>2]&7](a,g-i|0,1)|0;f[a+16>>2]=0;f[c>>2]=0;f[b>>2]=0;f[h>>2]=0;f[e>>2]=0;d=0}return d|0}function Mb(a){a=a|0;return}function Nb(a){a=a|0;Mb(a);bc(a);return}function Ob(a){a=a|0;return}function Pb(a){a=a|0;return}function Qb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+64|0;e=d;if(!(Ub(a,b,0)|0))if((b|0)!=0?(g=Yb(b,80,64,0)|0,(g|0)!=0):0){b=e+4|0;h=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(h|0));f[e>>2]=g;f[e+8>>2]=a;f[e+12>>2]=-1;f[e+48>>2]=1;Ia[f[(f[g>>2]|0)+28>>2]&3](g,e,f[c>>2]|0,1);if((f[e+24>>2]|0)==1){f[c>>2]=f[e+16>>2];i=1}else i=0;j=i}else j=0;else j=1;u=d;return j|0}function Rb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(Ub(a,f[b+8>>2]|0,g)|0)Xb(0,b,c,d,e);return}function Sb(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0;do if(!(Ub(a,f[c+8>>2]|0,g)|0)){if(Ub(a,f[c>>2]|0,g)|0){h=c+32|0;if((f[c+16>>2]|0)!=(d|0)?(i=c+20|0,(f[i>>2]|0)!=(d|0)):0){f[h>>2]=e;f[i>>2]=d;i=c+40|0;f[i>>2]=(f[i>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1;f[c+44>>2]=4;break}if((e|0)==1)f[h>>2]=1}}else Wb(0,c,d,e);while(0);return}function Tb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(Ub(a,f[b+8>>2]|0,0)|0)Vb(0,b,c,d);return}function Ub(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function Vb(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0;a=c+16|0;g=f[a>>2]|0;h=c+36|0;i=c+24|0;do if(g){if((g|0)!=(d|0)){f[h>>2]=(f[h>>2]|0)+1;f[i>>2]=2;b[c+54>>0]=1;break}if((f[i>>2]|0)==2)f[i>>2]=e}else{f[a>>2]=d;f[i>>2]=e;f[h>>2]=1}while(0);return}function Wb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((f[b+4>>2]|0)==(c|0)?(c=b+28|0,(f[c>>2]|0)!=1):0)f[c>>2]=d;return}function Xb(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;b[c+53>>0]=1;do if((f[c+4>>2]|0)==(e|0)){b[c+52>>0]=1;a=c+16|0;h=f[a>>2]|0;i=c+54|0;j=c+48|0;k=c+24|0;l=c+36|0;if(!h){f[a>>2]=d;f[k>>2]=g;f[l>>2]=1;if(!((f[j>>2]|0)==1&(g|0)==1))break;b[i>>0]=1;break}if((h|0)!=(d|0)){f[l>>2]=(f[l>>2]|0)+1;b[i>>0]=1;break}l=f[k>>2]|0;if((l|0)==2){f[k>>2]=g;m=g}else m=l;if((f[j>>2]|0)==1&(m|0)==1)b[i>>0]=1}while(0);return}function Yb(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=u;u=u+64|0;i=h;j=f[a>>2]|0;k=a+(f[j+-8>>2]|0)|0;l=f[j+-4>>2]|0;f[i>>2]=e;f[i+4>>2]=a;f[i+8>>2]=c;f[i+12>>2]=g;g=i+16|0;c=i+20|0;a=i+24|0;j=i+28|0;m=i+32|0;n=i+40|0;o=g;p=o+36|0;do{f[o>>2]=0;o=o+4|0}while((o|0)<(p|0));d[g+36>>1]=0;b[g+38>>0]=0;a:do if(Ub(l,e,0)|0){f[i+48>>2]=1;Ha[f[(f[l>>2]|0)+20>>2]&3](l,i,k,k,1,0);q=(f[a>>2]|0)==1?k:0}else{Ca[f[(f[l>>2]|0)+24>>2]&3](l,i,k,1,0);switch(f[i+36>>2]|0){case 0:{q=(f[n>>2]|0)==1&(f[j>>2]|0)==1&(f[m>>2]|0)==1?f[c>>2]|0:0;break a;break}case 1:break;default:{q=0;break a}}if((f[a>>2]|0)!=1?!((f[n>>2]|0)==0&(f[j>>2]|0)==1&(f[m>>2]|0)==1):0){q=0;break}q=f[g>>2]|0}while(0);u=h;return q|0}function Zb(a){a=a|0;Mb(a);bc(a);return}function _b(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0;if(Ub(a,f[b+8>>2]|0,g)|0)Xb(0,b,c,d,e);else{h=f[a+8>>2]|0;Ha[f[(f[h>>2]|0)+20>>2]&3](h,b,c,d,e,g)}return}function $b(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;do if(!(Ub(a,f[c+8>>2]|0,g)|0)){h=a+8|0;if(!(Ub(a,f[c>>2]|0,g)|0)){i=f[h>>2]|0;Ca[f[(f[i>>2]|0)+24>>2]&3](i,c,d,e,g);break}i=c+32|0;if((f[c+16>>2]|0)!=(d|0)?(j=c+20|0,(f[j>>2]|0)!=(d|0)):0){f[i>>2]=e;k=c+44|0;if((f[k>>2]|0)==4)break;l=c+52|0;b[l>>0]=0;m=c+53|0;b[m>>0]=0;n=f[h>>2]|0;Ha[f[(f[n>>2]|0)+20>>2]&3](n,c,d,d,1,g);if(b[m>>0]|0)if(!(b[l>>0]|0)){o=3;p=11}else q=3;else{o=4;p=11}if((p|0)==11){f[j>>2]=d;j=c+40|0;f[j>>2]=(f[j>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0){b[c+54>>0]=1;q=o}else q=o}f[k>>2]=q;break}if((e|0)==1)f[i>>2]=1}else Wb(0,c,d,e);while(0);return}function ac(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(Ub(a,f[b+8>>2]|0,0)|0)Vb(0,b,c,d);else{e=f[a+8>>2]|0;Ia[f[(f[e>>2]|0)+28>>2]&3](e,b,c,d)}return}function bc(a){a=a|0;vb(a);return}function cc(a){a=a|0;return}function dc(){}function ec(a){a=a|0;var b=0,c=0;a=a+15&-16|0;b=f[r>>2]|0;c=b+a|0;if((a|0)>0&(c|0)<(b|0)|(c|0)<0){ca()|0;na(12);return -1}f[r>>2]=c;if((c|0)>(ba()|0)?(aa()|0)==0:0){f[r>>2]=b;na(12);return -1}return b|0}function fc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;e=a+d|0;c=c&255;if((d|0)>=67){while(a&3){b[a>>0]=c;a=a+1|0}g=e&-4|0;h=g-64|0;i=c|c<<8|c<<16|c<<24;while((a|0)<=(h|0)){f[a>>2]=i;f[a+4>>2]=i;f[a+8>>2]=i;f[a+12>>2]=i;f[a+16>>2]=i;f[a+20>>2]=i;f[a+24>>2]=i;f[a+28>>2]=i;f[a+32>>2]=i;f[a+36>>2]=i;f[a+40>>2]=i;f[a+44>>2]=i;f[a+48>>2]=i;f[a+52>>2]=i;f[a+56>>2]=i;f[a+60>>2]=i;a=a+64|0}while((a|0)<(g|0)){f[a>>2]=i;a=a+4|0}}while((a|0)<(e|0)){b[a>>0]=c;a=a+1|0}return e-d|0}function gc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)>=8192)return ra(a|0,c|0,d|0)|0;e=a|0;g=a+d|0;if((a&3)==(c&3)){while(a&3){if(!d)return e|0;b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0;d=d-1|0}h=g&-4|0;d=h-64|0;while((a|0)<=(d|0)){f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];f[a+12>>2]=f[c+12>>2];f[a+16>>2]=f[c+16>>2];f[a+20>>2]=f[c+20>>2];f[a+24>>2]=f[c+24>>2];f[a+28>>2]=f[c+28>>2];f[a+32>>2]=f[c+32>>2];f[a+36>>2]=f[c+36>>2];f[a+40>>2]=f[c+40>>2];f[a+44>>2]=f[c+44>>2];f[a+48>>2]=f[c+48>>2];f[a+52>>2]=f[c+52>>2];f[a+56>>2]=f[c+56>>2];f[a+60>>2]=f[c+60>>2];a=a+64|0;c=c+64|0}while((a|0)<(h|0)){f[a>>2]=f[c>>2];a=a+4|0;c=c+4|0}}else{h=g-4|0;while((a|0)<(h|0)){b[a>>0]=b[c>>0]|0;b[a+1>>0]=b[c+1>>0]|0;b[a+2>>0]=b[c+2>>0]|0;b[a+3>>0]=b[c+3>>0]|0;a=a+4|0;c=c+4|0}}while((a|0)<(g|0)){b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0}return e|0}function hc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ba[a&7](b|0,c|0,d|0)|0}function ic(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Ca[a&3](b|0,c|0,d|0,e|0,f|0)}function jc(a,b){a=a|0;b=b|0;Da[a&7](b|0)}function kc(a,b,c){a=a|0;b=b|0;c=c|0;Ea[a&7](b|0,c|0)}function lc(a,b){a=a|0;b=b|0;return Fa[a&1](b|0)|0}function mc(a){a=a|0;Ga[a&1]()}function nc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Ha[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function oc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Ia[a&3](b|0,c|0,d|0,e|0)}function pc(a,b,c){a=a|0;b=b|0;c=c|0;_(0);return 0}function qc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;_(1)}function rc(a){a=a|0;_(2)}function sc(a,b){a=a|0;b=b|0;_(3)}function tc(a){a=a|0;_(4);return 0}function uc(){_(5)}function vc(){wa()}function wc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;_(6)}function xc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;_(7)}\n\n// EMSCRIPTEN_END_FUNCS\nvar Ba=[pc,Fb,yb,Qb,Eb,pc,pc,pc];var Ca=[qc,Sb,$b,qc];var Da=[rc,Mb,Nb,Ob,Pb,Zb,rc,rc];var Ea=[sc,Va,Wa,hb,ib,kb,lb,sc];var Fa=[tc,xb];var Ga=[uc,vc];var Ha=[wc,Rb,_b,wc];var Ia=[xc,Tb,ac,xc];return{stackSave:Ka,setThrew:Na,dynCall_vii:kc,_fflush:Kb,_DecompressImage:tb,_memset:fc,_sbrk:ec,_memcpy:gc,stackAlloc:Ja,dynCall_vi:jc,getTempRet0:Pa,setTempRet0:Oa,dynCall_iiii:hc,stackRestore:La,dynCall_ii:lc,dynCall_viiii:oc,___errno_location:Ab,runPostSets:dc,_CompressImage:sb,dynCall_v:mc,_free:vb,dynCall_viiiii:ic,dynCall_viiiiii:nc,establishStackSpace:Ma,_emscripten_get_global_libc:wb,_malloc:ub,_emscripten_replace_memory:Aa,_GetStorageRequirements:rb}})\n\n\n// EMSCRIPTEN_END_ASM\n(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _CompressImage=Module[\"_CompressImage\"]=asm[\"_CompressImage\"];var _malloc=Module[\"_malloc\"]=asm[\"_malloc\"];var getTempRet0=Module[\"getTempRet0\"]=asm[\"getTempRet0\"];var _free=Module[\"_free\"]=asm[\"_free\"];var _DecompressImage=Module[\"_DecompressImage\"]=asm[\"_DecompressImage\"];var setTempRet0=Module[\"setTempRet0\"]=asm[\"setTempRet0\"];var establishStackSpace=Module[\"establishStackSpace\"]=asm[\"establishStackSpace\"];var stackRestore=Module[\"stackRestore\"]=asm[\"stackRestore\"];var stackSave=Module[\"stackSave\"]=asm[\"stackSave\"];var _memset=Module[\"_memset\"]=asm[\"_memset\"];var _sbrk=Module[\"_sbrk\"]=asm[\"_sbrk\"];var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=asm[\"_emscripten_get_global_libc\"];var _memcpy=Module[\"_memcpy\"]=asm[\"_memcpy\"];var _emscripten_replace_memory=Module[\"_emscripten_replace_memory\"]=asm[\"_emscripten_replace_memory\"];var stackAlloc=Module[\"stackAlloc\"]=asm[\"stackAlloc\"];var setThrew=Module[\"setThrew\"]=asm[\"setThrew\"];var _fflush=Module[\"_fflush\"]=asm[\"_fflush\"];var _GetStorageRequirements=Module[\"_GetStorageRequirements\"]=asm[\"_GetStorageRequirements\"];var ___errno_location=Module[\"___errno_location\"]=asm[\"___errno_location\"];var runPostSets=Module[\"runPostSets\"]=asm[\"runPostSets\"];var dynCall_iiii=Module[\"dynCall_iiii\"]=asm[\"dynCall_iiii\"];var dynCall_viiiii=Module[\"dynCall_viiiii\"]=asm[\"dynCall_viiiii\"];var dynCall_vi=Module[\"dynCall_vi\"]=asm[\"dynCall_vi\"];var dynCall_vii=Module[\"dynCall_vii\"]=asm[\"dynCall_vii\"];var dynCall_ii=Module[\"dynCall_ii\"]=asm[\"dynCall_ii\"];var dynCall_v=Module[\"dynCall_v\"]=asm[\"dynCall_v\"];var dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=asm[\"dynCall_viiiiii\"];var dynCall_viiii=Module[\"dynCall_viiii\"]=asm[\"dynCall_viiii\"];Runtime.stackAlloc=Module[\"stackAlloc\"];Runtime.stackSave=Module[\"stackSave\"];Runtime.stackRestore=Module[\"stackRestore\"];Runtime.establishStackSpace=Module[\"establishStackSpace\"];Runtime.setTempRet0=Module[\"setTempRet0\"];Runtime.getTempRet0=Module[\"getTempRet0\"];Module[\"asm\"]=asm;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};Module[\"callMain\"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module[\"thisProgram\"]),\"i8\",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(Module[\"_main\"]&&shouldRunNow)Module[\"callMain\"](args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout((function(){setTimeout((function(){Module[\"setStatus\"](\"\")}),1);doRun()}),1)}else{doRun()}}Module[\"run\"]=Module.run=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}if(ENVIRONMENT_IS_NODE){process[\"exit\"](status)}Module[\"quit\"](status,new ExitStatus(status))}Module[\"exit\"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=\"\"}ABORT=true;EXITSTATUS=1;var extra=\"\\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.\";var output=\"abort(\"+what+\") at \"+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module[\"abort\"]=Module.abort=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"]){shouldRunNow=false}run()\n\n\n\n\nif(typeof module!==\"undefined\"){module[\"exports\"] = Module;}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../../Observable\");\nfunction fromFetch(input, init) {\n return new Observable_1.Observable(function (subscriber) {\n var controller = new AbortController();\n var signal = controller.signal;\n var outerSignalHandler;\n var abortable = true;\n var unsubscribed = false;\n if (init) {\n if (init.signal) {\n outerSignalHandler = function () {\n if (!signal.aborted) {\n controller.abort();\n }\n };\n init.signal.addEventListener('abort', outerSignalHandler);\n }\n init.signal = signal;\n }\n else {\n init = { signal: signal };\n }\n fetch(input, init).then(function (response) {\n abortable = false;\n subscriber.next(response);\n subscriber.complete();\n }).catch(function (err) {\n abortable = false;\n if (!unsubscribed) {\n subscriber.error(err);\n }\n });\n return function () {\n unsubscribed = true;\n if (abortable) {\n controller.abort();\n }\n };\n });\n}\nexports.fromFetch = fromFetch;\n//# sourceMappingURL=fetch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar canReportError_1 = require(\"./util/canReportError\");\nvar toSubscriber_1 = require(\"./util/toSubscriber\");\nvar observable_1 = require(\"./symbol/observable\");\nvar pipe_1 = require(\"./util/pipe\");\nvar config_1 = require(\"./config\");\nvar Observable = (function () {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber_1.toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config_1.config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError_1.canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n Observable.prototype[observable_1.observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipe_1.pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexports.Observable = Observable;\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config_1.config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction canReportError(observer) {\n while (observer) {\n var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;\n if (closed_1 || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber_1.Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\nexports.canReportError = canReportError;\n//# sourceMappingURL=canReportError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isArray_1 = require(\"./util/isArray\");\nvar isObject_1 = require(\"./util/isObject\");\nvar isFunction_1 = require(\"./util/isFunction\");\nvar UnsubscriptionError_1 = require(\"./util/UnsubscriptionError\");\nvar Subscription = (function () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function () {\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parentOrParents = _a._parentOrParents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n if (isFunction_1.isFunction(_unsubscribe)) {\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError_1.UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray_1.isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject_1.isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError_1.UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError_1.UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n var _parentOrParents = subscription._parentOrParents;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n };\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexports.Subscription = Subscription;\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError_1.UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArray = (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })();\n//# sourceMappingURL=isArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isObject(x) {\n return x !== null && typeof x === 'object';\n}\nexports.isObject = isObject;\n//# sourceMappingURL=isObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar UnsubscriptionErrorImpl = (function () {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexports.UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar rxSubscriber_1 = require(\"../symbol/rxSubscriber\");\nvar Observer_1 = require(\"../Observer\");\nfunction toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber_1.Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriber_1.rxSubscriber]) {\n return nextOrObserver[rxSubscriber_1.rxSubscriber]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber_1.Subscriber(Observer_1.empty);\n }\n return new Subscriber_1.Subscriber(nextOrObserver, error, complete);\n}\nexports.toSubscriber = toSubscriber;\n//# sourceMappingURL=toSubscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observable = (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar noop_1 = require(\"./noop\");\nfunction pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexports.pipe = pipe;\nfunction pipeFromArray(fns) {\n if (!fns) {\n return noop_1.noop;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\nexports.pipeFromArray = pipeFromArray;\n//# sourceMappingURL=pipe.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction noop() { }\nexports.noop = noop;\n//# sourceMappingURL=noop.js.map","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PRINT_WARNING = exports.PRINT_ERROR = void 0;\nfunction PRINT_ERROR(msg) {\n /* istanbul ignore else - can't override global.console in node.js */\n if (console && console.error) {\n console.error(\"Error: \".concat(msg));\n }\n}\nexports.PRINT_ERROR = PRINT_ERROR;\nfunction PRINT_WARNING(msg) {\n /* istanbul ignore else - can't override global.console in node.js*/\n if (console && console.warn) {\n // TODO: modify docs accordingly\n console.warn(\"Warning: \".concat(msg));\n }\n}\nexports.PRINT_WARNING = PRINT_WARNING;\n//# sourceMappingURL=print.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timer = void 0;\nfunction timer(func) {\n var start = new Date().getTime();\n var val = func();\n var end = new Date().getTime();\n var total = end - start;\n return { time: total, value: val };\n}\nexports.timer = timer;\n//# sourceMappingURL=timer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toFastProperties = void 0;\n// based on: https://github.com/petkaantonov/bluebird/blob/b97c0d2d487e8c5076e8bd897e0dcd4622d31846/src/util.js#L201-L216\nfunction toFastProperties(toBecomeFast) {\n function FakeConstructor() { }\n // If our object is used as a constructor it would receive\n FakeConstructor.prototype = toBecomeFast;\n var fakeInstance = new FakeConstructor();\n function fakeAccess() {\n return typeof fakeInstance.bar;\n }\n // help V8 understand this is a \"real\" prototype by actually using\n // the fake instance.\n fakeAccess();\n fakeAccess();\n // Always true condition to suppress the Firefox warning of unreachable\n // code after a return statement.\n if (1)\n return toBecomeFast;\n // Eval prevents optimization of this method (even though this is dead code)\n /* istanbul ignore next */\n // tslint:disable-next-line\n eval(toBecomeFast);\n}\nexports.toFastProperties = toFastProperties;\n//# sourceMappingURL=to-fast-properties.js.map","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildInProdFollowPrefix = exports.buildBetweenProdsFollowPrefix = exports.computeAllProdsFollows = exports.ResyncFollowsWalker = void 0;\nvar rest_1 = require(\"./rest\");\nvar first_1 = require(\"./first\");\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar assign_1 = __importDefault(require(\"lodash/assign\"));\nvar constants_1 = require(\"../constants\");\nvar gast_1 = require(\"@chevrotain/gast\");\n// This ResyncFollowsWalker computes all of the follows required for RESYNC\n// (skipping reference production).\nvar ResyncFollowsWalker = /** @class */ (function (_super) {\n __extends(ResyncFollowsWalker, _super);\n function ResyncFollowsWalker(topProd) {\n var _this = _super.call(this) || this;\n _this.topProd = topProd;\n _this.follows = {};\n return _this;\n }\n ResyncFollowsWalker.prototype.startWalking = function () {\n this.walk(this.topProd);\n return this.follows;\n };\n ResyncFollowsWalker.prototype.walkTerminal = function (terminal, currRest, prevRest) {\n // do nothing! just like in the public sector after 13:00\n };\n ResyncFollowsWalker.prototype.walkProdRef = function (refProd, currRest, prevRest) {\n var followName = buildBetweenProdsFollowPrefix(refProd.referencedRule, refProd.idx) +\n this.topProd.name;\n var fullRest = currRest.concat(prevRest);\n var restProd = new gast_1.Alternative({ definition: fullRest });\n var t_in_topProd_follows = (0, first_1.first)(restProd);\n this.follows[followName] = t_in_topProd_follows;\n };\n return ResyncFollowsWalker;\n}(rest_1.RestWalker));\nexports.ResyncFollowsWalker = ResyncFollowsWalker;\nfunction computeAllProdsFollows(topProductions) {\n var reSyncFollows = {};\n (0, forEach_1.default)(topProductions, function (topProd) {\n var currRefsFollow = new ResyncFollowsWalker(topProd).startWalking();\n (0, assign_1.default)(reSyncFollows, currRefsFollow);\n });\n return reSyncFollows;\n}\nexports.computeAllProdsFollows = computeAllProdsFollows;\nfunction buildBetweenProdsFollowPrefix(inner, occurenceInParent) {\n return inner.name + occurenceInParent + constants_1.IN;\n}\nexports.buildBetweenProdsFollowPrefix = buildBetweenProdsFollowPrefix;\nfunction buildInProdFollowPrefix(terminal) {\n var terminalName = terminal.terminalType.name;\n return terminalName + terminal.idx + constants_1.IN;\n}\nexports.buildInProdFollowPrefix = buildInProdFollowPrefix;\n//# sourceMappingURL=follow.js.map","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GAstVisitor = void 0;\nvar model_1 = require(\"./model\");\nvar GAstVisitor = /** @class */ (function () {\n function GAstVisitor() {\n }\n GAstVisitor.prototype.visit = function (node) {\n var nodeAny = node;\n switch (nodeAny.constructor) {\n case model_1.NonTerminal:\n return this.visitNonTerminal(nodeAny);\n case model_1.Alternative:\n return this.visitAlternative(nodeAny);\n case model_1.Option:\n return this.visitOption(nodeAny);\n case model_1.RepetitionMandatory:\n return this.visitRepetitionMandatory(nodeAny);\n case model_1.RepetitionMandatoryWithSeparator:\n return this.visitRepetitionMandatoryWithSeparator(nodeAny);\n case model_1.RepetitionWithSeparator:\n return this.visitRepetitionWithSeparator(nodeAny);\n case model_1.Repetition:\n return this.visitRepetition(nodeAny);\n case model_1.Alternation:\n return this.visitAlternation(nodeAny);\n case model_1.Terminal:\n return this.visitTerminal(nodeAny);\n case model_1.Rule:\n return this.visitRule(nodeAny);\n /* istanbul ignore next */\n default:\n throw Error(\"non exhaustive match\");\n }\n };\n /* istanbul ignore next - testing the fact a NOOP function exists is non-trivial */\n GAstVisitor.prototype.visitNonTerminal = function (node) { };\n /* istanbul ignore next - testing the fact a NOOP function exists is non-trivial */\n GAstVisitor.prototype.visitAlternative = function (node) { };\n /* istanbul ignore next - testing the fact a NOOP function exists is non-trivial */\n GAstVisitor.prototype.visitOption = function (node) { };\n /* istanbul ignore next - testing the fact a NOOP function exists is non-trivial */\n GAstVisitor.prototype.visitRepetition = function (node) { };\n /* istanbul ignore next - testing the fact a NOOP function exists is non-trivial */\n GAstVisitor.prototype.visitRepetitionMandatory = function (node) { };\n /* istanbul ignore next - testing the fact a NOOP function exists is non-trivial */\n GAstVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (node) { };\n /* istanbul ignore next - testing the fact a NOOP function exists is non-trivial */\n GAstVisitor.prototype.visitRepetitionWithSeparator = function (node) { };\n /* istanbul ignore next - testing the fact a NOOP function exists is non-trivial */\n GAstVisitor.prototype.visitAlternation = function (node) { };\n /* istanbul ignore next - testing the fact a NOOP function exists is non-trivial */\n GAstVisitor.prototype.visitTerminal = function (node) { };\n /* istanbul ignore next - testing the fact a NOOP function exists is non-trivial */\n GAstVisitor.prototype.visitRule = function (node) { };\n return GAstVisitor;\n}());\nexports.GAstVisitor = GAstVisitor;\n//# sourceMappingURL=visitor.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getProductionDslName = exports.isBranchingProd = exports.isOptionalProd = exports.isSequenceProd = void 0;\nvar some_1 = __importDefault(require(\"lodash/some\"));\nvar every_1 = __importDefault(require(\"lodash/every\"));\nvar includes_1 = __importDefault(require(\"lodash/includes\"));\nvar model_1 = require(\"./model\");\nfunction isSequenceProd(prod) {\n return (prod instanceof model_1.Alternative ||\n prod instanceof model_1.Option ||\n prod instanceof model_1.Repetition ||\n prod instanceof model_1.RepetitionMandatory ||\n prod instanceof model_1.RepetitionMandatoryWithSeparator ||\n prod instanceof model_1.RepetitionWithSeparator ||\n prod instanceof model_1.Terminal ||\n prod instanceof model_1.Rule);\n}\nexports.isSequenceProd = isSequenceProd;\nfunction isOptionalProd(prod, alreadyVisited) {\n if (alreadyVisited === void 0) { alreadyVisited = []; }\n var isDirectlyOptional = prod instanceof model_1.Option ||\n prod instanceof model_1.Repetition ||\n prod instanceof model_1.RepetitionWithSeparator;\n if (isDirectlyOptional) {\n return true;\n }\n // note that this can cause infinite loop if one optional empty TOP production has a cyclic dependency with another\n // empty optional top rule\n // may be indirectly optional ((A?B?C?) | (D?E?F?))\n if (prod instanceof model_1.Alternation) {\n // for OR its enough for just one of the alternatives to be optional\n return (0, some_1.default)(prod.definition, function (subProd) {\n return isOptionalProd(subProd, alreadyVisited);\n });\n }\n else if (prod instanceof model_1.NonTerminal && (0, includes_1.default)(alreadyVisited, prod)) {\n // avoiding stack overflow due to infinite recursion\n return false;\n }\n else if (prod instanceof model_1.AbstractProduction) {\n if (prod instanceof model_1.NonTerminal) {\n alreadyVisited.push(prod);\n }\n return (0, every_1.default)(prod.definition, function (subProd) {\n return isOptionalProd(subProd, alreadyVisited);\n });\n }\n else {\n return false;\n }\n}\nexports.isOptionalProd = isOptionalProd;\nfunction isBranchingProd(prod) {\n return prod instanceof model_1.Alternation;\n}\nexports.isBranchingProd = isBranchingProd;\nfunction getProductionDslName(prod) {\n /* istanbul ignore else */\n if (prod instanceof model_1.NonTerminal) {\n return \"SUBRULE\";\n }\n else if (prod instanceof model_1.Option) {\n return \"OPTION\";\n }\n else if (prod instanceof model_1.Alternation) {\n return \"OR\";\n }\n else if (prod instanceof model_1.RepetitionMandatory) {\n return \"AT_LEAST_ONE\";\n }\n else if (prod instanceof model_1.RepetitionMandatoryWithSeparator) {\n return \"AT_LEAST_ONE_SEP\";\n }\n else if (prod instanceof model_1.RepetitionWithSeparator) {\n return \"MANY_SEP\";\n }\n else if (prod instanceof model_1.Repetition) {\n return \"MANY\";\n }\n else if (prod instanceof model_1.Terminal) {\n return \"CONSUME\";\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexports.getProductionDslName = getProductionDslName;\n//# sourceMappingURL=helpers.js.map","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n","/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\nfunction arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = arrayEvery;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n}\n\nmodule.exports = baseEvery;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nmodule.exports = negate;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\n","var baseIndexOf = require('./_baseIndexOf'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\nfunction indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n}\n\nmodule.exports = indexOf;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.canMatchCharCode = exports.firstCharOptimizedIndices = exports.getOptimizedStartCodesIndices = exports.failedOptimizationPrefixMsg = void 0;\nvar regexp_to_ast_1 = require(\"regexp-to-ast\");\nvar isArray_1 = __importDefault(require(\"lodash/isArray\"));\nvar every_1 = __importDefault(require(\"lodash/every\"));\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar find_1 = __importDefault(require(\"lodash/find\"));\nvar values_1 = __importDefault(require(\"lodash/values\"));\nvar includes_1 = __importDefault(require(\"lodash/includes\"));\nvar utils_1 = require(\"@chevrotain/utils\");\nvar reg_exp_parser_1 = require(\"./reg_exp_parser\");\nvar lexer_1 = require(\"./lexer\");\nvar complementErrorMessage = \"Complement Sets are not supported for first char optimization\";\nexports.failedOptimizationPrefixMsg = 'Unable to use \"first char\" lexer optimizations:\\n';\nfunction getOptimizedStartCodesIndices(regExp, ensureOptimizations) {\n if (ensureOptimizations === void 0) { ensureOptimizations = false; }\n try {\n var ast = (0, reg_exp_parser_1.getRegExpAst)(regExp);\n var firstChars = firstCharOptimizedIndices(ast.value, {}, ast.flags.ignoreCase);\n return firstChars;\n }\n catch (e) {\n /* istanbul ignore next */\n // Testing this relies on the regexp-to-ast library having a bug... */\n // TODO: only the else branch needs to be ignored, try to fix with newer prettier / tsc\n if (e.message === complementErrorMessage) {\n if (ensureOptimizations) {\n (0, utils_1.PRINT_WARNING)(\"\".concat(exports.failedOptimizationPrefixMsg) +\n \"\\tUnable to optimize: < \".concat(regExp.toString(), \" >\\n\") +\n \"\\tComplement Sets cannot be automatically optimized.\\n\" +\n \"\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.\");\n }\n }\n else {\n var msgSuffix = \"\";\n if (ensureOptimizations) {\n msgSuffix =\n \"\\n\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.\";\n }\n (0, utils_1.PRINT_ERROR)(\"\".concat(exports.failedOptimizationPrefixMsg, \"\\n\") +\n \"\\tFailed parsing: < \".concat(regExp.toString(), \" >\\n\") +\n \"\\tUsing the regexp-to-ast library version: \".concat(regexp_to_ast_1.VERSION, \"\\n\") +\n \"\\tPlease open an issue at: https://github.com/bd82/regexp-to-ast/issues\" +\n msgSuffix);\n }\n }\n return [];\n}\nexports.getOptimizedStartCodesIndices = getOptimizedStartCodesIndices;\nfunction firstCharOptimizedIndices(ast, result, ignoreCase) {\n switch (ast.type) {\n case \"Disjunction\":\n for (var i = 0; i < ast.value.length; i++) {\n firstCharOptimizedIndices(ast.value[i], result, ignoreCase);\n }\n break;\n case \"Alternative\":\n var terms = ast.value;\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i];\n // skip terms that cannot effect the first char results\n switch (term.type) {\n case \"EndAnchor\":\n // A group back reference cannot affect potential starting char.\n // because if a back reference is the first production than automatically\n // the group being referenced has had to come BEFORE so its codes have already been added\n case \"GroupBackReference\":\n // assertions do not affect potential starting codes\n case \"Lookahead\":\n case \"NegativeLookahead\":\n case \"StartAnchor\":\n case \"WordBoundary\":\n case \"NonWordBoundary\":\n continue;\n }\n var atom = term;\n switch (atom.type) {\n case \"Character\":\n addOptimizedIdxToResult(atom.value, result, ignoreCase);\n break;\n case \"Set\":\n if (atom.complement === true) {\n throw Error(complementErrorMessage);\n }\n (0, forEach_1.default)(atom.value, function (code) {\n if (typeof code === \"number\") {\n addOptimizedIdxToResult(code, result, ignoreCase);\n }\n else {\n // range\n var range = code;\n // cannot optimize when ignoreCase is\n if (ignoreCase === true) {\n for (var rangeCode = range.from; rangeCode <= range.to; rangeCode++) {\n addOptimizedIdxToResult(rangeCode, result, ignoreCase);\n }\n }\n // Optimization (2 orders of magnitude less work for very large ranges)\n else {\n // handle unoptimized values\n for (var rangeCode = range.from; rangeCode <= range.to && rangeCode < lexer_1.minOptimizationVal; rangeCode++) {\n addOptimizedIdxToResult(rangeCode, result, ignoreCase);\n }\n // Less common charCode where we optimize for faster init time, by using larger \"buckets\"\n if (range.to >= lexer_1.minOptimizationVal) {\n var minUnOptVal = range.from >= lexer_1.minOptimizationVal\n ? range.from\n : lexer_1.minOptimizationVal;\n var maxUnOptVal = range.to;\n var minOptIdx = (0, lexer_1.charCodeToOptimizedIndex)(minUnOptVal);\n var maxOptIdx = (0, lexer_1.charCodeToOptimizedIndex)(maxUnOptVal);\n for (var currOptIdx = minOptIdx; currOptIdx <= maxOptIdx; currOptIdx++) {\n result[currOptIdx] = currOptIdx;\n }\n }\n }\n }\n });\n break;\n case \"Group\":\n firstCharOptimizedIndices(atom.value, result, ignoreCase);\n break;\n /* istanbul ignore next */\n default:\n throw Error(\"Non Exhaustive Match\");\n }\n // reached a mandatory production, no more **start** codes can be found on this alternative\n var isOptionalQuantifier = atom.quantifier !== undefined && atom.quantifier.atLeast === 0;\n if (\n // A group may be optional due to empty contents /(?:)/\n // or if everything inside it is optional /((a)?)/\n (atom.type === \"Group\" && isWholeOptional(atom) === false) ||\n // If this term is not a group it may only be optional if it has an optional quantifier\n (atom.type !== \"Group\" && isOptionalQuantifier === false)) {\n break;\n }\n }\n break;\n /* istanbul ignore next */\n default:\n throw Error(\"non exhaustive match!\");\n }\n // console.log(Object.keys(result).length)\n return (0, values_1.default)(result);\n}\nexports.firstCharOptimizedIndices = firstCharOptimizedIndices;\nfunction addOptimizedIdxToResult(code, result, ignoreCase) {\n var optimizedCharIdx = (0, lexer_1.charCodeToOptimizedIndex)(code);\n result[optimizedCharIdx] = optimizedCharIdx;\n if (ignoreCase === true) {\n handleIgnoreCase(code, result);\n }\n}\nfunction handleIgnoreCase(code, result) {\n var char = String.fromCharCode(code);\n var upperChar = char.toUpperCase();\n /* istanbul ignore else */\n if (upperChar !== char) {\n var optimizedCharIdx = (0, lexer_1.charCodeToOptimizedIndex)(upperChar.charCodeAt(0));\n result[optimizedCharIdx] = optimizedCharIdx;\n }\n else {\n var lowerChar = char.toLowerCase();\n if (lowerChar !== char) {\n var optimizedCharIdx = (0, lexer_1.charCodeToOptimizedIndex)(lowerChar.charCodeAt(0));\n result[optimizedCharIdx] = optimizedCharIdx;\n }\n }\n}\nfunction findCode(setNode, targetCharCodes) {\n return (0, find_1.default)(setNode.value, function (codeOrRange) {\n if (typeof codeOrRange === \"number\") {\n return (0, includes_1.default)(targetCharCodes, codeOrRange);\n }\n else {\n // range\n var range_1 = codeOrRange;\n return ((0, find_1.default)(targetCharCodes, function (targetCode) { return range_1.from <= targetCode && targetCode <= range_1.to; }) !== undefined);\n }\n });\n}\nfunction isWholeOptional(ast) {\n var quantifier = ast.quantifier;\n if (quantifier && quantifier.atLeast === 0) {\n return true;\n }\n if (!ast.value) {\n return false;\n }\n return (0, isArray_1.default)(ast.value)\n ? (0, every_1.default)(ast.value, isWholeOptional)\n : isWholeOptional(ast.value);\n}\nvar CharCodeFinder = /** @class */ (function (_super) {\n __extends(CharCodeFinder, _super);\n function CharCodeFinder(targetCharCodes) {\n var _this = _super.call(this) || this;\n _this.targetCharCodes = targetCharCodes;\n _this.found = false;\n return _this;\n }\n CharCodeFinder.prototype.visitChildren = function (node) {\n // No need to keep looking...\n if (this.found === true) {\n return;\n }\n // switch lookaheads as they do not actually consume any characters thus\n // finding a charCode at lookahead context does not mean that regexp can actually contain it in a match.\n switch (node.type) {\n case \"Lookahead\":\n this.visitLookahead(node);\n return;\n case \"NegativeLookahead\":\n this.visitNegativeLookahead(node);\n return;\n }\n _super.prototype.visitChildren.call(this, node);\n };\n CharCodeFinder.prototype.visitCharacter = function (node) {\n if ((0, includes_1.default)(this.targetCharCodes, node.value)) {\n this.found = true;\n }\n };\n CharCodeFinder.prototype.visitSet = function (node) {\n if (node.complement) {\n if (findCode(node, this.targetCharCodes) === undefined) {\n this.found = true;\n }\n }\n else {\n if (findCode(node, this.targetCharCodes) !== undefined) {\n this.found = true;\n }\n }\n };\n return CharCodeFinder;\n}(regexp_to_ast_1.BaseRegExpVisitor));\nfunction canMatchCharCode(charCodes, pattern) {\n if (pattern instanceof RegExp) {\n var ast = (0, reg_exp_parser_1.getRegExpAst)(pattern);\n var charCodeFinder = new CharCodeFinder(charCodes);\n charCodeFinder.visit(ast);\n return charCodeFinder.found;\n }\n else {\n return ((0, find_1.default)(pattern, function (char) {\n return (0, includes_1.default)(charCodes, char.charCodeAt(0));\n }) !== undefined);\n }\n}\nexports.canMatchCharCode = canMatchCharCode;\n//# sourceMappingURL=reg_exp.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateGrammar = exports.resolveGrammar = void 0;\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar defaults_1 = __importDefault(require(\"lodash/defaults\"));\nvar resolver_1 = require(\"../resolver\");\nvar checks_1 = require(\"../checks\");\nvar errors_public_1 = require(\"../../errors_public\");\nfunction resolveGrammar(options) {\n var actualOptions = (0, defaults_1.default)(options, {\n errMsgProvider: errors_public_1.defaultGrammarResolverErrorProvider\n });\n var topRulesTable = {};\n (0, forEach_1.default)(options.rules, function (rule) {\n topRulesTable[rule.name] = rule;\n });\n return (0, resolver_1.resolveGrammar)(topRulesTable, actualOptions.errMsgProvider);\n}\nexports.resolveGrammar = resolveGrammar;\nfunction validateGrammar(options) {\n options = (0, defaults_1.default)(options, {\n errMsgProvider: errors_public_1.defaultGrammarValidatorErrorProvider\n });\n return (0, checks_1.validateGrammar)(options.rules, options.tokenTypes, options.errMsgProvider, options.grammarName);\n}\nexports.validateGrammar = validateGrammar;\n//# sourceMappingURL=gast_resolver_public.js.map","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GastRefResolverVisitor = exports.resolveGrammar = void 0;\nvar parser_1 = require(\"../parser/parser\");\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar values_1 = __importDefault(require(\"lodash/values\"));\nvar gast_1 = require(\"@chevrotain/gast\");\nfunction resolveGrammar(topLevels, errMsgProvider) {\n var refResolver = new GastRefResolverVisitor(topLevels, errMsgProvider);\n refResolver.resolveRefs();\n return refResolver.errors;\n}\nexports.resolveGrammar = resolveGrammar;\nvar GastRefResolverVisitor = /** @class */ (function (_super) {\n __extends(GastRefResolverVisitor, _super);\n function GastRefResolverVisitor(nameToTopRule, errMsgProvider) {\n var _this = _super.call(this) || this;\n _this.nameToTopRule = nameToTopRule;\n _this.errMsgProvider = errMsgProvider;\n _this.errors = [];\n return _this;\n }\n GastRefResolverVisitor.prototype.resolveRefs = function () {\n var _this = this;\n (0, forEach_1.default)((0, values_1.default)(this.nameToTopRule), function (prod) {\n _this.currTopLevel = prod;\n prod.accept(_this);\n });\n };\n GastRefResolverVisitor.prototype.visitNonTerminal = function (node) {\n var ref = this.nameToTopRule[node.nonTerminalName];\n if (!ref) {\n var msg = this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel, node);\n this.errors.push({\n message: msg,\n type: parser_1.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,\n ruleName: this.currTopLevel.name,\n unresolvedRefName: node.nonTerminalName\n });\n }\n else {\n node.referencedRule = ref;\n }\n };\n return GastRefResolverVisitor;\n}(gast_1.GAstVisitor));\nexports.GastRefResolverVisitor = GastRefResolverVisitor;\n//# sourceMappingURL=resolver.js.map","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.collectMethods = exports.LooksAhead = void 0;\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar has_1 = __importDefault(require(\"lodash/has\"));\nvar parser_1 = require(\"../parser\");\nvar keys_1 = require(\"../../grammar/keys\");\nvar gast_1 = require(\"@chevrotain/gast\");\nvar gast_2 = require(\"@chevrotain/gast\");\nvar llk_lookahead_1 = require(\"../../grammar/llk_lookahead\");\n/**\n * Trait responsible for the lookahead related utilities and optimizations.\n */\nvar LooksAhead = /** @class */ (function () {\n function LooksAhead() {\n }\n LooksAhead.prototype.initLooksAhead = function (config) {\n this.dynamicTokensEnabled = (0, has_1.default)(config, \"dynamicTokensEnabled\")\n ? config.dynamicTokensEnabled // assumes end user provides the correct config value/type\n : parser_1.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled;\n this.maxLookahead = (0, has_1.default)(config, \"maxLookahead\")\n ? config.maxLookahead // assumes end user provides the correct config value/type\n : parser_1.DEFAULT_PARSER_CONFIG.maxLookahead;\n this.lookaheadStrategy = (0, has_1.default)(config, \"lookaheadStrategy\")\n ? config.lookaheadStrategy // assumes end user provides the correct config value/type\n : new llk_lookahead_1.LLkLookaheadStrategy({ maxLookahead: this.maxLookahead });\n this.lookAheadFuncsCache = new Map();\n };\n LooksAhead.prototype.preComputeLookaheadFunctions = function (rules) {\n var _this = this;\n (0, forEach_1.default)(rules, function (currRule) {\n _this.TRACE_INIT(\"\".concat(currRule.name, \" Rule Lookahead\"), function () {\n var _a = collectMethods(currRule), alternation = _a.alternation, repetition = _a.repetition, option = _a.option, repetitionMandatory = _a.repetitionMandatory, repetitionMandatoryWithSeparator = _a.repetitionMandatoryWithSeparator, repetitionWithSeparator = _a.repetitionWithSeparator;\n (0, forEach_1.default)(alternation, function (currProd) {\n var prodIdx = currProd.idx === 0 ? \"\" : currProd.idx;\n _this.TRACE_INIT(\"\".concat((0, gast_2.getProductionDslName)(currProd)).concat(prodIdx), function () {\n var laFunc = _this.lookaheadStrategy.buildLookaheadForAlternation({\n prodOccurrence: currProd.idx,\n rule: currRule,\n maxLookahead: currProd.maxLookahead || _this.maxLookahead,\n hasPredicates: currProd.hasPredicates,\n dynamicTokensEnabled: _this.dynamicTokensEnabled\n });\n var key = (0, keys_1.getKeyForAutomaticLookahead)(_this.fullRuleNameToShort[currRule.name], keys_1.OR_IDX, currProd.idx);\n _this.setLaFuncCache(key, laFunc);\n });\n });\n (0, forEach_1.default)(repetition, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, keys_1.MANY_IDX, \"Repetition\", currProd.maxLookahead, (0, gast_2.getProductionDslName)(currProd));\n });\n (0, forEach_1.default)(option, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, keys_1.OPTION_IDX, \"Option\", currProd.maxLookahead, (0, gast_2.getProductionDslName)(currProd));\n });\n (0, forEach_1.default)(repetitionMandatory, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, keys_1.AT_LEAST_ONE_IDX, \"RepetitionMandatory\", currProd.maxLookahead, (0, gast_2.getProductionDslName)(currProd));\n });\n (0, forEach_1.default)(repetitionMandatoryWithSeparator, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, keys_1.AT_LEAST_ONE_SEP_IDX, \"RepetitionMandatoryWithSeparator\", currProd.maxLookahead, (0, gast_2.getProductionDslName)(currProd));\n });\n (0, forEach_1.default)(repetitionWithSeparator, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, keys_1.MANY_SEP_IDX, \"RepetitionWithSeparator\", currProd.maxLookahead, (0, gast_2.getProductionDslName)(currProd));\n });\n });\n });\n };\n LooksAhead.prototype.computeLookaheadFunc = function (rule, prodOccurrence, prodKey, prodType, prodMaxLookahead, dslMethodName) {\n var _this = this;\n this.TRACE_INIT(\"\".concat(dslMethodName).concat(prodOccurrence === 0 ? \"\" : prodOccurrence), function () {\n var laFunc = _this.lookaheadStrategy.buildLookaheadForOptional({\n prodOccurrence: prodOccurrence,\n rule: rule,\n maxLookahead: prodMaxLookahead || _this.maxLookahead,\n dynamicTokensEnabled: _this.dynamicTokensEnabled,\n prodType: prodType\n });\n var key = (0, keys_1.getKeyForAutomaticLookahead)(_this.fullRuleNameToShort[rule.name], prodKey, prodOccurrence);\n _this.setLaFuncCache(key, laFunc);\n });\n };\n // this actually returns a number, but it is always used as a string (object prop key)\n LooksAhead.prototype.getKeyForAutomaticLookahead = function (dslMethodIdx, occurrence) {\n var currRuleShortName = this.getLastExplicitRuleShortName();\n return (0, keys_1.getKeyForAutomaticLookahead)(currRuleShortName, dslMethodIdx, occurrence);\n };\n LooksAhead.prototype.getLaFuncFromCache = function (key) {\n return this.lookAheadFuncsCache.get(key);\n };\n /* istanbul ignore next */\n LooksAhead.prototype.setLaFuncCache = function (key, value) {\n this.lookAheadFuncsCache.set(key, value);\n };\n return LooksAhead;\n}());\nexports.LooksAhead = LooksAhead;\nvar DslMethodsCollectorVisitor = /** @class */ (function (_super) {\n __extends(DslMethodsCollectorVisitor, _super);\n function DslMethodsCollectorVisitor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dslMethods = {\n option: [],\n alternation: [],\n repetition: [],\n repetitionWithSeparator: [],\n repetitionMandatory: [],\n repetitionMandatoryWithSeparator: []\n };\n return _this;\n }\n DslMethodsCollectorVisitor.prototype.reset = function () {\n this.dslMethods = {\n option: [],\n alternation: [],\n repetition: [],\n repetitionWithSeparator: [],\n repetitionMandatory: [],\n repetitionMandatoryWithSeparator: []\n };\n };\n DslMethodsCollectorVisitor.prototype.visitOption = function (option) {\n this.dslMethods.option.push(option);\n };\n DslMethodsCollectorVisitor.prototype.visitRepetitionWithSeparator = function (manySep) {\n this.dslMethods.repetitionWithSeparator.push(manySep);\n };\n DslMethodsCollectorVisitor.prototype.visitRepetitionMandatory = function (atLeastOne) {\n this.dslMethods.repetitionMandatory.push(atLeastOne);\n };\n DslMethodsCollectorVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (atLeastOneSep) {\n this.dslMethods.repetitionMandatoryWithSeparator.push(atLeastOneSep);\n };\n DslMethodsCollectorVisitor.prototype.visitRepetition = function (many) {\n this.dslMethods.repetition.push(many);\n };\n DslMethodsCollectorVisitor.prototype.visitAlternation = function (or) {\n this.dslMethods.alternation.push(or);\n };\n return DslMethodsCollectorVisitor;\n}(gast_1.GAstVisitor));\nvar collectorVisitor = new DslMethodsCollectorVisitor();\nfunction collectMethods(rule) {\n collectorVisitor.reset();\n rule.accept(collectorVisitor);\n var dslMethods = collectorVisitor.dslMethods;\n // avoid uncleaned references\n collectorVisitor.reset();\n return dslMethods;\n}\nexports.collectMethods = collectMethods;\n//# sourceMappingURL=looksahead.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TreeBuilder = void 0;\nvar cst_1 = require(\"../../cst/cst\");\nvar noop_1 = __importDefault(require(\"lodash/noop\"));\nvar has_1 = __importDefault(require(\"lodash/has\"));\nvar keys_1 = __importDefault(require(\"lodash/keys\"));\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\nvar cst_visitor_1 = require(\"../../cst/cst_visitor\");\nvar parser_1 = require(\"../parser\");\n/**\n * This trait is responsible for the CST building logic.\n */\nvar TreeBuilder = /** @class */ (function () {\n function TreeBuilder() {\n }\n TreeBuilder.prototype.initTreeBuilder = function (config) {\n this.CST_STACK = [];\n // outputCst is no longer exposed/defined in the pubic API\n this.outputCst = config.outputCst;\n this.nodeLocationTracking = (0, has_1.default)(config, \"nodeLocationTracking\")\n ? config.nodeLocationTracking // assumes end user provides the correct config value/type\n : parser_1.DEFAULT_PARSER_CONFIG.nodeLocationTracking;\n if (!this.outputCst) {\n this.cstInvocationStateUpdate = noop_1.default;\n this.cstFinallyStateUpdate = noop_1.default;\n this.cstPostTerminal = noop_1.default;\n this.cstPostNonTerminal = noop_1.default;\n this.cstPostRule = noop_1.default;\n }\n else {\n if (/full/i.test(this.nodeLocationTracking)) {\n if (this.recoveryEnabled) {\n this.setNodeLocationFromToken = cst_1.setNodeLocationFull;\n this.setNodeLocationFromNode = cst_1.setNodeLocationFull;\n this.cstPostRule = noop_1.default;\n this.setInitialNodeLocation = this.setInitialNodeLocationFullRecovery;\n }\n else {\n this.setNodeLocationFromToken = noop_1.default;\n this.setNodeLocationFromNode = noop_1.default;\n this.cstPostRule = this.cstPostRuleFull;\n this.setInitialNodeLocation = this.setInitialNodeLocationFullRegular;\n }\n }\n else if (/onlyOffset/i.test(this.nodeLocationTracking)) {\n if (this.recoveryEnabled) {\n this.setNodeLocationFromToken = cst_1.setNodeLocationOnlyOffset;\n this.setNodeLocationFromNode = cst_1.setNodeLocationOnlyOffset;\n this.cstPostRule = noop_1.default;\n this.setInitialNodeLocation =\n this.setInitialNodeLocationOnlyOffsetRecovery;\n }\n else {\n this.setNodeLocationFromToken = noop_1.default;\n this.setNodeLocationFromNode = noop_1.default;\n this.cstPostRule = this.cstPostRuleOnlyOffset;\n this.setInitialNodeLocation =\n this.setInitialNodeLocationOnlyOffsetRegular;\n }\n }\n else if (/none/i.test(this.nodeLocationTracking)) {\n this.setNodeLocationFromToken = noop_1.default;\n this.setNodeLocationFromNode = noop_1.default;\n this.cstPostRule = noop_1.default;\n this.setInitialNodeLocation = noop_1.default;\n }\n else {\n throw Error(\"Invalid config option: \\\"\".concat(config.nodeLocationTracking, \"\\\"\"));\n }\n }\n };\n TreeBuilder.prototype.setInitialNodeLocationOnlyOffsetRecovery = function (cstNode) {\n cstNode.location = {\n startOffset: NaN,\n endOffset: NaN\n };\n };\n TreeBuilder.prototype.setInitialNodeLocationOnlyOffsetRegular = function (cstNode) {\n cstNode.location = {\n // without error recovery the starting Location of a new CstNode is guaranteed\n // To be the next Token's startOffset (for valid inputs).\n // For invalid inputs there won't be any CSTOutput so this potential\n // inaccuracy does not matter\n startOffset: this.LA(1).startOffset,\n endOffset: NaN\n };\n };\n TreeBuilder.prototype.setInitialNodeLocationFullRecovery = function (cstNode) {\n cstNode.location = {\n startOffset: NaN,\n startLine: NaN,\n startColumn: NaN,\n endOffset: NaN,\n endLine: NaN,\n endColumn: NaN\n };\n };\n /**\n * @see setInitialNodeLocationOnlyOffsetRegular for explanation why this work\n \n * @param cstNode\n */\n TreeBuilder.prototype.setInitialNodeLocationFullRegular = function (cstNode) {\n var nextToken = this.LA(1);\n cstNode.location = {\n startOffset: nextToken.startOffset,\n startLine: nextToken.startLine,\n startColumn: nextToken.startColumn,\n endOffset: NaN,\n endLine: NaN,\n endColumn: NaN\n };\n };\n TreeBuilder.prototype.cstInvocationStateUpdate = function (fullRuleName) {\n var cstNode = {\n name: fullRuleName,\n children: Object.create(null)\n };\n this.setInitialNodeLocation(cstNode);\n this.CST_STACK.push(cstNode);\n };\n TreeBuilder.prototype.cstFinallyStateUpdate = function () {\n this.CST_STACK.pop();\n };\n TreeBuilder.prototype.cstPostRuleFull = function (ruleCstNode) {\n // casts to `required` are safe because `cstPostRuleFull` should only be invoked when full location is enabled\n var prevToken = this.LA(0);\n var loc = ruleCstNode.location;\n // If this condition is true it means we consumed at least one Token\n // In this CstNode.\n if (loc.startOffset <= prevToken.startOffset === true) {\n loc.endOffset = prevToken.endOffset;\n loc.endLine = prevToken.endLine;\n loc.endColumn = prevToken.endColumn;\n }\n // \"empty\" CstNode edge case\n else {\n loc.startOffset = NaN;\n loc.startLine = NaN;\n loc.startColumn = NaN;\n }\n };\n TreeBuilder.prototype.cstPostRuleOnlyOffset = function (ruleCstNode) {\n var prevToken = this.LA(0);\n // `location' is not null because `cstPostRuleOnlyOffset` will only be invoked when location tracking is enabled.\n var loc = ruleCstNode.location;\n // If this condition is true it means we consumed at least one Token\n // In this CstNode.\n if (loc.startOffset <= prevToken.startOffset === true) {\n loc.endOffset = prevToken.endOffset;\n }\n // \"empty\" CstNode edge case\n else {\n loc.startOffset = NaN;\n }\n };\n TreeBuilder.prototype.cstPostTerminal = function (key, consumedToken) {\n var rootCst = this.CST_STACK[this.CST_STACK.length - 1];\n (0, cst_1.addTerminalToCst)(rootCst, consumedToken, key);\n // This is only used when **both** error recovery and CST Output are enabled.\n this.setNodeLocationFromToken(rootCst.location, consumedToken);\n };\n TreeBuilder.prototype.cstPostNonTerminal = function (ruleCstResult, ruleName) {\n var preCstNode = this.CST_STACK[this.CST_STACK.length - 1];\n (0, cst_1.addNoneTerminalToCst)(preCstNode, ruleName, ruleCstResult);\n // This is only used when **both** error recovery and CST Output are enabled.\n this.setNodeLocationFromNode(preCstNode.location, ruleCstResult.location);\n };\n TreeBuilder.prototype.getBaseCstVisitorConstructor = function () {\n if ((0, isUndefined_1.default)(this.baseCstVisitorConstructor)) {\n var newBaseCstVisitorConstructor = (0, cst_visitor_1.createBaseSemanticVisitorConstructor)(this.className, (0, keys_1.default)(this.gastProductionsCache));\n this.baseCstVisitorConstructor = newBaseCstVisitorConstructor;\n return newBaseCstVisitorConstructor;\n }\n return this.baseCstVisitorConstructor;\n };\n TreeBuilder.prototype.getBaseCstVisitorConstructorWithDefaults = function () {\n if ((0, isUndefined_1.default)(this.baseCstVisitorWithDefaultsConstructor)) {\n var newConstructor = (0, cst_visitor_1.createBaseVisitorConstructorWithDefaults)(this.className, (0, keys_1.default)(this.gastProductionsCache), this.getBaseCstVisitorConstructor());\n this.baseCstVisitorWithDefaultsConstructor = newConstructor;\n return newConstructor;\n }\n return this.baseCstVisitorWithDefaultsConstructor;\n };\n TreeBuilder.prototype.getLastExplicitRuleShortName = function () {\n var ruleStack = this.RULE_STACK;\n return ruleStack[ruleStack.length - 1];\n };\n TreeBuilder.prototype.getPreviousExplicitRuleShortName = function () {\n var ruleStack = this.RULE_STACK;\n return ruleStack[ruleStack.length - 2];\n };\n TreeBuilder.prototype.getLastExplicitRuleOccurrenceIndex = function () {\n var occurrenceStack = this.RULE_OCCURRENCE_STACK;\n return occurrenceStack[occurrenceStack.length - 1];\n };\n return TreeBuilder;\n}());\nexports.TreeBuilder = TreeBuilder;\n//# sourceMappingURL=tree_builder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addNoneTerminalToCst = exports.addTerminalToCst = exports.setNodeLocationFull = exports.setNodeLocationOnlyOffset = void 0;\n/**\n * This nodeLocation tracking is not efficient and should only be used\n * when error recovery is enabled or the Token Vector contains virtual Tokens\n * (e.g, Python Indent/Outdent)\n * As it executes the calculation for every single terminal/nonTerminal\n * and does not rely on the fact the token vector is **sorted**\n */\nfunction setNodeLocationOnlyOffset(currNodeLocation, newLocationInfo) {\n // First (valid) update for this cst node\n if (isNaN(currNodeLocation.startOffset) === true) {\n // assumption1: Token location information is either NaN or a valid number\n // assumption2: Token location information is fully valid if it exist\n // (both start/end offsets exist and are numbers).\n currNodeLocation.startOffset = newLocationInfo.startOffset;\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n }\n // Once the startOffset has been updated with a valid number it should never receive\n // any farther updates as the Token vector is sorted.\n // We still have to check this this condition for every new possible location info\n // because with error recovery enabled we may encounter invalid tokens (NaN location props)\n else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) {\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n }\n}\nexports.setNodeLocationOnlyOffset = setNodeLocationOnlyOffset;\n/**\n * This nodeLocation tracking is not efficient and should only be used\n * when error recovery is enabled or the Token Vector contains virtual Tokens\n * (e.g, Python Indent/Outdent)\n * As it executes the calculation for every single terminal/nonTerminal\n * and does not rely on the fact the token vector is **sorted**\n */\nfunction setNodeLocationFull(currNodeLocation, newLocationInfo) {\n // First (valid) update for this cst node\n if (isNaN(currNodeLocation.startOffset) === true) {\n // assumption1: Token location information is either NaN or a valid number\n // assumption2: Token location information is fully valid if it exist\n // (all start/end props exist and are numbers).\n currNodeLocation.startOffset = newLocationInfo.startOffset;\n currNodeLocation.startColumn = newLocationInfo.startColumn;\n currNodeLocation.startLine = newLocationInfo.startLine;\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n currNodeLocation.endColumn = newLocationInfo.endColumn;\n currNodeLocation.endLine = newLocationInfo.endLine;\n }\n // Once the start props has been updated with a valid number it should never receive\n // any farther updates as the Token vector is sorted.\n // We still have to check this this condition for every new possible location info\n // because with error recovery enabled we may encounter invalid tokens (NaN location props)\n else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) {\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n currNodeLocation.endColumn = newLocationInfo.endColumn;\n currNodeLocation.endLine = newLocationInfo.endLine;\n }\n}\nexports.setNodeLocationFull = setNodeLocationFull;\nfunction addTerminalToCst(node, token, tokenTypeName) {\n if (node.children[tokenTypeName] === undefined) {\n node.children[tokenTypeName] = [token];\n }\n else {\n node.children[tokenTypeName].push(token);\n }\n}\nexports.addTerminalToCst = addTerminalToCst;\nfunction addNoneTerminalToCst(node, ruleName, ruleResult) {\n if (node.children[ruleName] === undefined) {\n node.children[ruleName] = [ruleResult];\n }\n else {\n node.children[ruleName].push(ruleResult);\n }\n}\nexports.addNoneTerminalToCst = addNoneTerminalToCst;\n//# sourceMappingURL=cst.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateMissingCstMethods = exports.validateVisitor = exports.CstVisitorDefinitionError = exports.createBaseVisitorConstructorWithDefaults = exports.createBaseSemanticVisitorConstructor = exports.defaultVisit = void 0;\nvar isEmpty_1 = __importDefault(require(\"lodash/isEmpty\"));\nvar compact_1 = __importDefault(require(\"lodash/compact\"));\nvar isArray_1 = __importDefault(require(\"lodash/isArray\"));\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar filter_1 = __importDefault(require(\"lodash/filter\"));\nvar keys_1 = __importDefault(require(\"lodash/keys\"));\nvar isFunction_1 = __importDefault(require(\"lodash/isFunction\"));\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\nvar lang_extensions_1 = require(\"../../lang/lang_extensions\");\nfunction defaultVisit(ctx, param) {\n var childrenNames = (0, keys_1.default)(ctx);\n var childrenNamesLength = childrenNames.length;\n for (var i = 0; i < childrenNamesLength; i++) {\n var currChildName = childrenNames[i];\n var currChildArray = ctx[currChildName];\n var currChildArrayLength = currChildArray.length;\n for (var j = 0; j < currChildArrayLength; j++) {\n var currChild = currChildArray[j];\n // distinction between Tokens Children and CstNode children\n if (currChild.tokenTypeIdx === undefined) {\n this[currChild.name](currChild.children, param);\n }\n }\n }\n // defaultVisit does not support generic out param\n}\nexports.defaultVisit = defaultVisit;\nfunction createBaseSemanticVisitorConstructor(grammarName, ruleNames) {\n var derivedConstructor = function () { };\n // can be overwritten according to:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/\n // name?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FFunction%2Fname\n (0, lang_extensions_1.defineNameProp)(derivedConstructor, grammarName + \"BaseSemantics\");\n var semanticProto = {\n visit: function (cstNode, param) {\n // enables writing more concise visitor methods when CstNode has only a single child\n if ((0, isArray_1.default)(cstNode)) {\n // A CST Node's children dictionary can never have empty arrays as values\n // If a key is defined there will be at least one element in the corresponding value array.\n cstNode = cstNode[0];\n }\n // enables passing optional CstNodes concisely.\n if ((0, isUndefined_1.default)(cstNode)) {\n return undefined;\n }\n return this[cstNode.name](cstNode.children, param);\n },\n validateVisitor: function () {\n var semanticDefinitionErrors = validateVisitor(this, ruleNames);\n if (!(0, isEmpty_1.default)(semanticDefinitionErrors)) {\n var errorMessages = (0, map_1.default)(semanticDefinitionErrors, function (currDefError) { return currDefError.msg; });\n throw Error(\"Errors Detected in CST Visitor <\".concat(this.constructor.name, \">:\\n\\t\") +\n \"\".concat(errorMessages.join(\"\\n\\n\").replace(/\\n/g, \"\\n\\t\")));\n }\n }\n };\n derivedConstructor.prototype = semanticProto;\n derivedConstructor.prototype.constructor = derivedConstructor;\n derivedConstructor._RULE_NAMES = ruleNames;\n return derivedConstructor;\n}\nexports.createBaseSemanticVisitorConstructor = createBaseSemanticVisitorConstructor;\nfunction createBaseVisitorConstructorWithDefaults(grammarName, ruleNames, baseConstructor) {\n var derivedConstructor = function () { };\n // can be overwritten according to:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/\n // name?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FFunction%2Fname\n (0, lang_extensions_1.defineNameProp)(derivedConstructor, grammarName + \"BaseSemanticsWithDefaults\");\n var withDefaultsProto = Object.create(baseConstructor.prototype);\n (0, forEach_1.default)(ruleNames, function (ruleName) {\n withDefaultsProto[ruleName] = defaultVisit;\n });\n derivedConstructor.prototype = withDefaultsProto;\n derivedConstructor.prototype.constructor = derivedConstructor;\n return derivedConstructor;\n}\nexports.createBaseVisitorConstructorWithDefaults = createBaseVisitorConstructorWithDefaults;\nvar CstVisitorDefinitionError;\n(function (CstVisitorDefinitionError) {\n CstVisitorDefinitionError[CstVisitorDefinitionError[\"REDUNDANT_METHOD\"] = 0] = \"REDUNDANT_METHOD\";\n CstVisitorDefinitionError[CstVisitorDefinitionError[\"MISSING_METHOD\"] = 1] = \"MISSING_METHOD\";\n})(CstVisitorDefinitionError = exports.CstVisitorDefinitionError || (exports.CstVisitorDefinitionError = {}));\nfunction validateVisitor(visitorInstance, ruleNames) {\n var missingErrors = validateMissingCstMethods(visitorInstance, ruleNames);\n return missingErrors;\n}\nexports.validateVisitor = validateVisitor;\nfunction validateMissingCstMethods(visitorInstance, ruleNames) {\n var missingRuleNames = (0, filter_1.default)(ruleNames, function (currRuleName) {\n return (0, isFunction_1.default)(visitorInstance[currRuleName]) === false;\n });\n var errors = (0, map_1.default)(missingRuleNames, function (currRuleName) {\n return {\n msg: \"Missing visitor method: <\".concat(currRuleName, \"> on \").concat((visitorInstance.constructor.name), \" CST Visitor.\"),\n type: CstVisitorDefinitionError.MISSING_METHOD,\n methodName: currRuleName\n };\n });\n return (0, compact_1.default)(errors);\n}\nexports.validateMissingCstMethods = validateMissingCstMethods;\n//# sourceMappingURL=cst_visitor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defineNameProp = void 0;\nvar NAME = \"name\";\nfunction defineNameProp(obj, nameValue) {\n Object.defineProperty(obj, NAME, {\n enumerable: false,\n configurable: true,\n writable: false,\n value: nameValue\n });\n}\nexports.defineNameProp = defineNameProp;\n//# sourceMappingURL=lang_extensions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LexerAdapter = void 0;\nvar parser_1 = require(\"../parser\");\n/**\n * Trait responsible abstracting over the interaction with Lexer output (Token vector).\n *\n * This could be generalized to support other kinds of lexers, e.g.\n * - Just in Time Lexing / Lexer-Less parsing.\n * - Streaming Lexer.\n */\nvar LexerAdapter = /** @class */ (function () {\n function LexerAdapter() {\n }\n LexerAdapter.prototype.initLexerAdapter = function () {\n this.tokVector = [];\n this.tokVectorLength = 0;\n this.currIdx = -1;\n };\n Object.defineProperty(LexerAdapter.prototype, \"input\", {\n get: function () {\n return this.tokVector;\n },\n set: function (newInput) {\n // @ts-ignore - `this parameter` not supported in setters/getters\n // - https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters\n if (this.selfAnalysisDone !== true) {\n throw Error(\"Missing invocation at the end of the Parser's constructor.\");\n }\n // @ts-ignore - `this parameter` not supported in setters/getters\n // - https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters\n this.reset();\n this.tokVector = newInput;\n this.tokVectorLength = newInput.length;\n },\n enumerable: false,\n configurable: true\n });\n // skips a token and returns the next token\n LexerAdapter.prototype.SKIP_TOKEN = function () {\n if (this.currIdx <= this.tokVector.length - 2) {\n this.consumeToken();\n return this.LA(1);\n }\n else {\n return parser_1.END_OF_FILE;\n }\n };\n // Lexer (accessing Token vector) related methods which can be overridden to implement lazy lexers\n // or lexers dependent on parser context.\n LexerAdapter.prototype.LA = function (howMuch) {\n var soughtIdx = this.currIdx + howMuch;\n if (soughtIdx < 0 || this.tokVectorLength <= soughtIdx) {\n return parser_1.END_OF_FILE;\n }\n else {\n return this.tokVector[soughtIdx];\n }\n };\n LexerAdapter.prototype.consumeToken = function () {\n this.currIdx++;\n };\n LexerAdapter.prototype.exportLexerState = function () {\n return this.currIdx;\n };\n LexerAdapter.prototype.importLexerState = function (newState) {\n this.currIdx = newState;\n };\n LexerAdapter.prototype.resetLexerState = function () {\n this.currIdx = -1;\n };\n LexerAdapter.prototype.moveToTerminatedState = function () {\n this.currIdx = this.tokVector.length - 1;\n };\n LexerAdapter.prototype.getLexerPosition = function () {\n return this.exportLexerState();\n };\n return LexerAdapter;\n}());\nexports.LexerAdapter = LexerAdapter;\n//# sourceMappingURL=lexer_adapter.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RecognizerApi = void 0;\nvar values_1 = __importDefault(require(\"lodash/values\"));\nvar includes_1 = __importDefault(require(\"lodash/includes\"));\nvar exceptions_public_1 = require(\"../../exceptions_public\");\nvar parser_1 = require(\"../parser\");\nvar errors_public_1 = require(\"../../errors_public\");\nvar checks_1 = require(\"../../grammar/checks\");\nvar gast_1 = require(\"@chevrotain/gast\");\n/**\n * This trait is responsible for implementing the public API\n * for defining Chevrotain parsers, i.e:\n * - CONSUME\n * - RULE\n * - OPTION\n * - ...\n */\nvar RecognizerApi = /** @class */ (function () {\n function RecognizerApi() {\n }\n RecognizerApi.prototype.ACTION = function (impl) {\n return impl.call(this);\n };\n RecognizerApi.prototype.consume = function (idx, tokType, options) {\n return this.consumeInternal(tokType, idx, options);\n };\n RecognizerApi.prototype.subrule = function (idx, ruleToCall, options) {\n return this.subruleInternal(ruleToCall, idx, options);\n };\n RecognizerApi.prototype.option = function (idx, actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, idx);\n };\n RecognizerApi.prototype.or = function (idx, altsOrOpts) {\n return this.orInternal(altsOrOpts, idx);\n };\n RecognizerApi.prototype.many = function (idx, actionORMethodDef) {\n return this.manyInternal(idx, actionORMethodDef);\n };\n RecognizerApi.prototype.atLeastOne = function (idx, actionORMethodDef) {\n return this.atLeastOneInternal(idx, actionORMethodDef);\n };\n RecognizerApi.prototype.CONSUME = function (tokType, options) {\n return this.consumeInternal(tokType, 0, options);\n };\n RecognizerApi.prototype.CONSUME1 = function (tokType, options) {\n return this.consumeInternal(tokType, 1, options);\n };\n RecognizerApi.prototype.CONSUME2 = function (tokType, options) {\n return this.consumeInternal(tokType, 2, options);\n };\n RecognizerApi.prototype.CONSUME3 = function (tokType, options) {\n return this.consumeInternal(tokType, 3, options);\n };\n RecognizerApi.prototype.CONSUME4 = function (tokType, options) {\n return this.consumeInternal(tokType, 4, options);\n };\n RecognizerApi.prototype.CONSUME5 = function (tokType, options) {\n return this.consumeInternal(tokType, 5, options);\n };\n RecognizerApi.prototype.CONSUME6 = function (tokType, options) {\n return this.consumeInternal(tokType, 6, options);\n };\n RecognizerApi.prototype.CONSUME7 = function (tokType, options) {\n return this.consumeInternal(tokType, 7, options);\n };\n RecognizerApi.prototype.CONSUME8 = function (tokType, options) {\n return this.consumeInternal(tokType, 8, options);\n };\n RecognizerApi.prototype.CONSUME9 = function (tokType, options) {\n return this.consumeInternal(tokType, 9, options);\n };\n RecognizerApi.prototype.SUBRULE = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 0, options);\n };\n RecognizerApi.prototype.SUBRULE1 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 1, options);\n };\n RecognizerApi.prototype.SUBRULE2 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 2, options);\n };\n RecognizerApi.prototype.SUBRULE3 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 3, options);\n };\n RecognizerApi.prototype.SUBRULE4 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 4, options);\n };\n RecognizerApi.prototype.SUBRULE5 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 5, options);\n };\n RecognizerApi.prototype.SUBRULE6 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 6, options);\n };\n RecognizerApi.prototype.SUBRULE7 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 7, options);\n };\n RecognizerApi.prototype.SUBRULE8 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 8, options);\n };\n RecognizerApi.prototype.SUBRULE9 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 9, options);\n };\n RecognizerApi.prototype.OPTION = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 0);\n };\n RecognizerApi.prototype.OPTION1 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 1);\n };\n RecognizerApi.prototype.OPTION2 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 2);\n };\n RecognizerApi.prototype.OPTION3 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 3);\n };\n RecognizerApi.prototype.OPTION4 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 4);\n };\n RecognizerApi.prototype.OPTION5 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 5);\n };\n RecognizerApi.prototype.OPTION6 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 6);\n };\n RecognizerApi.prototype.OPTION7 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 7);\n };\n RecognizerApi.prototype.OPTION8 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 8);\n };\n RecognizerApi.prototype.OPTION9 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 9);\n };\n RecognizerApi.prototype.OR = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 0);\n };\n RecognizerApi.prototype.OR1 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 1);\n };\n RecognizerApi.prototype.OR2 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 2);\n };\n RecognizerApi.prototype.OR3 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 3);\n };\n RecognizerApi.prototype.OR4 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 4);\n };\n RecognizerApi.prototype.OR5 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 5);\n };\n RecognizerApi.prototype.OR6 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 6);\n };\n RecognizerApi.prototype.OR7 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 7);\n };\n RecognizerApi.prototype.OR8 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 8);\n };\n RecognizerApi.prototype.OR9 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 9);\n };\n RecognizerApi.prototype.MANY = function (actionORMethodDef) {\n this.manyInternal(0, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY1 = function (actionORMethodDef) {\n this.manyInternal(1, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY2 = function (actionORMethodDef) {\n this.manyInternal(2, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY3 = function (actionORMethodDef) {\n this.manyInternal(3, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY4 = function (actionORMethodDef) {\n this.manyInternal(4, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY5 = function (actionORMethodDef) {\n this.manyInternal(5, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY6 = function (actionORMethodDef) {\n this.manyInternal(6, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY7 = function (actionORMethodDef) {\n this.manyInternal(7, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY8 = function (actionORMethodDef) {\n this.manyInternal(8, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY9 = function (actionORMethodDef) {\n this.manyInternal(9, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY_SEP = function (options) {\n this.manySepFirstInternal(0, options);\n };\n RecognizerApi.prototype.MANY_SEP1 = function (options) {\n this.manySepFirstInternal(1, options);\n };\n RecognizerApi.prototype.MANY_SEP2 = function (options) {\n this.manySepFirstInternal(2, options);\n };\n RecognizerApi.prototype.MANY_SEP3 = function (options) {\n this.manySepFirstInternal(3, options);\n };\n RecognizerApi.prototype.MANY_SEP4 = function (options) {\n this.manySepFirstInternal(4, options);\n };\n RecognizerApi.prototype.MANY_SEP5 = function (options) {\n this.manySepFirstInternal(5, options);\n };\n RecognizerApi.prototype.MANY_SEP6 = function (options) {\n this.manySepFirstInternal(6, options);\n };\n RecognizerApi.prototype.MANY_SEP7 = function (options) {\n this.manySepFirstInternal(7, options);\n };\n RecognizerApi.prototype.MANY_SEP8 = function (options) {\n this.manySepFirstInternal(8, options);\n };\n RecognizerApi.prototype.MANY_SEP9 = function (options) {\n this.manySepFirstInternal(9, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE = function (actionORMethodDef) {\n this.atLeastOneInternal(0, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE1 = function (actionORMethodDef) {\n return this.atLeastOneInternal(1, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE2 = function (actionORMethodDef) {\n this.atLeastOneInternal(2, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE3 = function (actionORMethodDef) {\n this.atLeastOneInternal(3, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE4 = function (actionORMethodDef) {\n this.atLeastOneInternal(4, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE5 = function (actionORMethodDef) {\n this.atLeastOneInternal(5, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE6 = function (actionORMethodDef) {\n this.atLeastOneInternal(6, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE7 = function (actionORMethodDef) {\n this.atLeastOneInternal(7, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE8 = function (actionORMethodDef) {\n this.atLeastOneInternal(8, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE9 = function (actionORMethodDef) {\n this.atLeastOneInternal(9, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP = function (options) {\n this.atLeastOneSepFirstInternal(0, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP1 = function (options) {\n this.atLeastOneSepFirstInternal(1, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP2 = function (options) {\n this.atLeastOneSepFirstInternal(2, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP3 = function (options) {\n this.atLeastOneSepFirstInternal(3, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP4 = function (options) {\n this.atLeastOneSepFirstInternal(4, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP5 = function (options) {\n this.atLeastOneSepFirstInternal(5, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP6 = function (options) {\n this.atLeastOneSepFirstInternal(6, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP7 = function (options) {\n this.atLeastOneSepFirstInternal(7, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP8 = function (options) {\n this.atLeastOneSepFirstInternal(8, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP9 = function (options) {\n this.atLeastOneSepFirstInternal(9, options);\n };\n RecognizerApi.prototype.RULE = function (name, implementation, config) {\n if (config === void 0) { config = parser_1.DEFAULT_RULE_CONFIG; }\n if ((0, includes_1.default)(this.definedRulesNames, name)) {\n var errMsg = errors_public_1.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({\n topLevelRule: name,\n grammarName: this.className\n });\n var error = {\n message: errMsg,\n type: parser_1.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,\n ruleName: name\n };\n this.definitionErrors.push(error);\n }\n this.definedRulesNames.push(name);\n var ruleImplementation = this.defineRule(name, implementation, config);\n this[name] = ruleImplementation;\n return ruleImplementation;\n };\n RecognizerApi.prototype.OVERRIDE_RULE = function (name, impl, config) {\n if (config === void 0) { config = parser_1.DEFAULT_RULE_CONFIG; }\n var ruleErrors = (0, checks_1.validateRuleIsOverridden)(name, this.definedRulesNames, this.className);\n this.definitionErrors = this.definitionErrors.concat(ruleErrors);\n var ruleImplementation = this.defineRule(name, impl, config);\n this[name] = ruleImplementation;\n return ruleImplementation;\n };\n RecognizerApi.prototype.BACKTRACK = function (grammarRule, args) {\n return function () {\n // save org state\n this.isBackTrackingStack.push(1);\n var orgState = this.saveRecogState();\n try {\n grammarRule.apply(this, args);\n // if no exception was thrown we have succeed parsing the rule.\n return true;\n }\n catch (e) {\n if ((0, exceptions_public_1.isRecognitionException)(e)) {\n return false;\n }\n else {\n throw e;\n }\n }\n finally {\n this.reloadRecogState(orgState);\n this.isBackTrackingStack.pop();\n }\n };\n };\n // GAST export APIs\n RecognizerApi.prototype.getGAstProductions = function () {\n return this.gastProductionsCache;\n };\n RecognizerApi.prototype.getSerializedGastProductions = function () {\n return (0, gast_1.serializeGrammar)((0, values_1.default)(this.gastProductionsCache));\n };\n return RecognizerApi;\n}());\nexports.RecognizerApi = RecognizerApi;\n//# sourceMappingURL=recognizer_api.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RecognizerEngine = void 0;\nvar isEmpty_1 = __importDefault(require(\"lodash/isEmpty\"));\nvar isArray_1 = __importDefault(require(\"lodash/isArray\"));\nvar flatten_1 = __importDefault(require(\"lodash/flatten\"));\nvar every_1 = __importDefault(require(\"lodash/every\"));\nvar uniq_1 = __importDefault(require(\"lodash/uniq\"));\nvar isObject_1 = __importDefault(require(\"lodash/isObject\"));\nvar has_1 = __importDefault(require(\"lodash/has\"));\nvar values_1 = __importDefault(require(\"lodash/values\"));\nvar reduce_1 = __importDefault(require(\"lodash/reduce\"));\nvar clone_1 = __importDefault(require(\"lodash/clone\"));\nvar keys_1 = require(\"../../grammar/keys\");\nvar exceptions_public_1 = require(\"../../exceptions_public\");\nvar lookahead_1 = require(\"../../grammar/lookahead\");\nvar interpreter_1 = require(\"../../grammar/interpreter\");\nvar parser_1 = require(\"../parser\");\nvar recoverable_1 = require(\"./recoverable\");\nvar tokens_public_1 = require(\"../../../scan/tokens_public\");\nvar tokens_1 = require(\"../../../scan/tokens\");\n/**\n * This trait is responsible for the runtime parsing engine\n * Used by the official API (recognizer_api.ts)\n */\nvar RecognizerEngine = /** @class */ (function () {\n function RecognizerEngine() {\n }\n RecognizerEngine.prototype.initRecognizerEngine = function (tokenVocabulary, config) {\n this.className = this.constructor.name;\n // TODO: would using an ES6 Map or plain object be faster (CST building scenario)\n this.shortRuleNameToFull = {};\n this.fullRuleNameToShort = {};\n this.ruleShortNameIdx = 256;\n this.tokenMatcher = tokens_1.tokenStructuredMatcherNoCategories;\n this.subruleIdx = 0;\n this.definedRulesNames = [];\n this.tokensMap = {};\n this.isBackTrackingStack = [];\n this.RULE_STACK = [];\n this.RULE_OCCURRENCE_STACK = [];\n this.gastProductionsCache = {};\n if ((0, has_1.default)(config, \"serializedGrammar\")) {\n throw Error(\"The Parser's configuration can no longer contain a property.\\n\" +\n \"\\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\\n\" +\n \"\\tFor Further details.\");\n }\n if ((0, isArray_1.default)(tokenVocabulary)) {\n // This only checks for Token vocabularies provided as arrays.\n // That is good enough because the main objective is to detect users of pre-V4.0 APIs\n // rather than all edge cases of empty Token vocabularies.\n if ((0, isEmpty_1.default)(tokenVocabulary)) {\n throw Error(\"A Token Vocabulary cannot be empty.\\n\" +\n \"\\tNote that the first argument for the parser constructor\\n\" +\n \"\\tis no longer a Token vector (since v4.0).\");\n }\n if (typeof tokenVocabulary[0].startOffset === \"number\") {\n throw Error(\"The Parser constructor no longer accepts a token vector as the first argument.\\n\" +\n \"\\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\\n\" +\n \"\\tFor Further details.\");\n }\n }\n if ((0, isArray_1.default)(tokenVocabulary)) {\n this.tokensMap = (0, reduce_1.default)(tokenVocabulary, function (acc, tokType) {\n acc[tokType.name] = tokType;\n return acc;\n }, {});\n }\n else if ((0, has_1.default)(tokenVocabulary, \"modes\") &&\n (0, every_1.default)((0, flatten_1.default)((0, values_1.default)(tokenVocabulary.modes)), tokens_1.isTokenType)) {\n var allTokenTypes_1 = (0, flatten_1.default)((0, values_1.default)(tokenVocabulary.modes));\n var uniqueTokens = (0, uniq_1.default)(allTokenTypes_1);\n this.tokensMap = (0, reduce_1.default)(uniqueTokens, function (acc, tokType) {\n acc[tokType.name] = tokType;\n return acc;\n }, {});\n }\n else if ((0, isObject_1.default)(tokenVocabulary)) {\n this.tokensMap = (0, clone_1.default)(tokenVocabulary);\n }\n else {\n throw new Error(\" argument must be An Array of Token constructors,\" +\n \" A dictionary of Token constructors or an IMultiModeLexerDefinition\");\n }\n // always add EOF to the tokenNames -> constructors map. it is useful to assure all the input has been\n // parsed with a clear error message (\"expecting EOF but found ...\")\n this.tokensMap[\"EOF\"] = tokens_public_1.EOF;\n var allTokenTypes = (0, has_1.default)(tokenVocabulary, \"modes\")\n ? (0, flatten_1.default)((0, values_1.default)(tokenVocabulary.modes))\n : (0, values_1.default)(tokenVocabulary);\n var noTokenCategoriesUsed = (0, every_1.default)(allTokenTypes, function (tokenConstructor) {\n return (0, isEmpty_1.default)(tokenConstructor.categoryMatches);\n });\n this.tokenMatcher = noTokenCategoriesUsed\n ? tokens_1.tokenStructuredMatcherNoCategories\n : tokens_1.tokenStructuredMatcher;\n // Because ES2015+ syntax should be supported for creating Token classes\n // We cannot assume that the Token classes were created using the \"extendToken\" utilities\n // Therefore we must augment the Token classes both on Lexer initialization and on Parser initialization\n (0, tokens_1.augmentTokenTypes)((0, values_1.default)(this.tokensMap));\n };\n RecognizerEngine.prototype.defineRule = function (ruleName, impl, config) {\n if (this.selfAnalysisDone) {\n throw Error(\"Grammar rule <\".concat(ruleName, \"> may not be defined after the 'performSelfAnalysis' method has been called'\\n\") +\n \"Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.\");\n }\n var resyncEnabled = (0, has_1.default)(config, \"resyncEnabled\")\n ? config.resyncEnabled // assumes end user provides the correct config value/type\n : parser_1.DEFAULT_RULE_CONFIG.resyncEnabled;\n var recoveryValueFunc = (0, has_1.default)(config, \"recoveryValueFunc\")\n ? config.recoveryValueFunc // assumes end user provides the correct config value/type\n : parser_1.DEFAULT_RULE_CONFIG.recoveryValueFunc;\n // performance optimization: Use small integers as keys for the longer human readable \"full\" rule names.\n // this greatly improves Map access time (as much as 8% for some performance benchmarks).\n var shortName = this.ruleShortNameIdx << (keys_1.BITS_FOR_METHOD_TYPE + keys_1.BITS_FOR_OCCURRENCE_IDX);\n this.ruleShortNameIdx++;\n this.shortRuleNameToFull[shortName] = ruleName;\n this.fullRuleNameToShort[ruleName] = shortName;\n var invokeRuleWithTry;\n // Micro optimization, only check the condition **once** on rule definition\n // instead of **every single** rule invocation.\n if (this.outputCst === true) {\n invokeRuleWithTry = function invokeRuleWithTry() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n try {\n this.ruleInvocationStateUpdate(shortName, ruleName, this.subruleIdx);\n impl.apply(this, args);\n var cst = this.CST_STACK[this.CST_STACK.length - 1];\n this.cstPostRule(cst);\n return cst;\n }\n catch (e) {\n return this.invokeRuleCatch(e, resyncEnabled, recoveryValueFunc);\n }\n finally {\n this.ruleFinallyStateUpdate();\n }\n };\n }\n else {\n invokeRuleWithTry = function invokeRuleWithTryCst() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n try {\n this.ruleInvocationStateUpdate(shortName, ruleName, this.subruleIdx);\n return impl.apply(this, args);\n }\n catch (e) {\n return this.invokeRuleCatch(e, resyncEnabled, recoveryValueFunc);\n }\n finally {\n this.ruleFinallyStateUpdate();\n }\n };\n }\n var wrappedGrammarRule = Object.assign(invokeRuleWithTry, { ruleName: ruleName, originalGrammarAction: impl });\n return wrappedGrammarRule;\n };\n RecognizerEngine.prototype.invokeRuleCatch = function (e, resyncEnabledConfig, recoveryValueFunc) {\n var isFirstInvokedRule = this.RULE_STACK.length === 1;\n // note the reSync is always enabled for the first rule invocation, because we must always be able to\n // reSync with EOF and just output some INVALID ParseTree\n // during backtracking reSync recovery is disabled, otherwise we can't be certain the backtracking\n // path is really the most valid one\n var reSyncEnabled = resyncEnabledConfig && !this.isBackTracking() && this.recoveryEnabled;\n if ((0, exceptions_public_1.isRecognitionException)(e)) {\n var recogError = e;\n if (reSyncEnabled) {\n var reSyncTokType = this.findReSyncTokenType();\n if (this.isInCurrentRuleReSyncSet(reSyncTokType)) {\n recogError.resyncedTokens = this.reSyncTo(reSyncTokType);\n if (this.outputCst) {\n var partialCstResult = this.CST_STACK[this.CST_STACK.length - 1];\n partialCstResult.recoveredNode = true;\n return partialCstResult;\n }\n else {\n return recoveryValueFunc(e);\n }\n }\n else {\n if (this.outputCst) {\n var partialCstResult = this.CST_STACK[this.CST_STACK.length - 1];\n partialCstResult.recoveredNode = true;\n recogError.partialCstResult = partialCstResult;\n }\n // to be handled Further up the call stack\n throw recogError;\n }\n }\n else if (isFirstInvokedRule) {\n // otherwise a Redundant input error will be created as well and we cannot guarantee that this is indeed the case\n this.moveToTerminatedState();\n // the parser should never throw one of its own errors outside its flow.\n // even if error recovery is disabled\n return recoveryValueFunc(e);\n }\n else {\n // to be recovered Further up the call stack\n throw recogError;\n }\n }\n else {\n // some other Error type which we don't know how to handle (for example a built in JavaScript Error)\n throw e;\n }\n };\n // Implementation of parsing DSL\n RecognizerEngine.prototype.optionInternal = function (actionORMethodDef, occurrence) {\n var key = this.getKeyForAutomaticLookahead(keys_1.OPTION_IDX, occurrence);\n return this.optionInternalLogic(actionORMethodDef, occurrence, key);\n };\n RecognizerEngine.prototype.optionInternalLogic = function (actionORMethodDef, occurrence, key) {\n var _this = this;\n var lookAheadFunc = this.getLaFuncFromCache(key);\n var action;\n if (typeof actionORMethodDef !== \"function\") {\n action = actionORMethodDef.DEF;\n var predicate_1 = actionORMethodDef.GATE;\n // predicate present\n if (predicate_1 !== undefined) {\n var orgLookaheadFunction_1 = lookAheadFunc;\n lookAheadFunc = function () {\n return predicate_1.call(_this) && orgLookaheadFunction_1.call(_this);\n };\n }\n }\n else {\n action = actionORMethodDef;\n }\n if (lookAheadFunc.call(this) === true) {\n return action.call(this);\n }\n return undefined;\n };\n RecognizerEngine.prototype.atLeastOneInternal = function (prodOccurrence, actionORMethodDef) {\n var laKey = this.getKeyForAutomaticLookahead(keys_1.AT_LEAST_ONE_IDX, prodOccurrence);\n return this.atLeastOneInternalLogic(prodOccurrence, actionORMethodDef, laKey);\n };\n RecognizerEngine.prototype.atLeastOneInternalLogic = function (prodOccurrence, actionORMethodDef, key) {\n var _this = this;\n var lookAheadFunc = this.getLaFuncFromCache(key);\n var action;\n if (typeof actionORMethodDef !== \"function\") {\n action = actionORMethodDef.DEF;\n var predicate_2 = actionORMethodDef.GATE;\n // predicate present\n if (predicate_2 !== undefined) {\n var orgLookaheadFunction_2 = lookAheadFunc;\n lookAheadFunc = function () {\n return predicate_2.call(_this) && orgLookaheadFunction_2.call(_this);\n };\n }\n }\n else {\n action = actionORMethodDef;\n }\n if (lookAheadFunc.call(this) === true) {\n var notStuck = this.doSingleRepetition(action);\n while (lookAheadFunc.call(this) === true &&\n notStuck === true) {\n notStuck = this.doSingleRepetition(action);\n }\n }\n else {\n throw this.raiseEarlyExitException(prodOccurrence, lookahead_1.PROD_TYPE.REPETITION_MANDATORY, actionORMethodDef.ERR_MSG);\n }\n // note that while it may seem that this can cause an error because by using a recursive call to\n // AT_LEAST_ONE we change the grammar to AT_LEAST_TWO, AT_LEAST_THREE ... , the possible recursive call\n // from the tryInRepetitionRecovery(...) will only happen IFF there really are TWO/THREE/.... items.\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(this.atLeastOneInternal, [prodOccurrence, actionORMethodDef], lookAheadFunc, keys_1.AT_LEAST_ONE_IDX, prodOccurrence, interpreter_1.NextTerminalAfterAtLeastOneWalker);\n };\n RecognizerEngine.prototype.atLeastOneSepFirstInternal = function (prodOccurrence, options) {\n var laKey = this.getKeyForAutomaticLookahead(keys_1.AT_LEAST_ONE_SEP_IDX, prodOccurrence);\n this.atLeastOneSepFirstInternalLogic(prodOccurrence, options, laKey);\n };\n RecognizerEngine.prototype.atLeastOneSepFirstInternalLogic = function (prodOccurrence, options, key) {\n var _this = this;\n var action = options.DEF;\n var separator = options.SEP;\n var firstIterationLookaheadFunc = this.getLaFuncFromCache(key);\n // 1st iteration\n if (firstIterationLookaheadFunc.call(this) === true) {\n ;\n action.call(this);\n // TODO: Optimization can move this function construction into \"attemptInRepetitionRecovery\"\n // because it is only needed in error recovery scenarios.\n var separatorLookAheadFunc = function () {\n return _this.tokenMatcher(_this.LA(1), separator);\n };\n // 2nd..nth iterations\n while (this.tokenMatcher(this.LA(1), separator) === true) {\n // note that this CONSUME will never enter recovery because\n // the separatorLookAheadFunc checks that the separator really does exist.\n this.CONSUME(separator);\n action.call(this);\n }\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n interpreter_1.NextTerminalAfterAtLeastOneSepWalker\n ], separatorLookAheadFunc, keys_1.AT_LEAST_ONE_SEP_IDX, prodOccurrence, interpreter_1.NextTerminalAfterAtLeastOneSepWalker);\n }\n else {\n throw this.raiseEarlyExitException(prodOccurrence, lookahead_1.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, options.ERR_MSG);\n }\n };\n RecognizerEngine.prototype.manyInternal = function (prodOccurrence, actionORMethodDef) {\n var laKey = this.getKeyForAutomaticLookahead(keys_1.MANY_IDX, prodOccurrence);\n return this.manyInternalLogic(prodOccurrence, actionORMethodDef, laKey);\n };\n RecognizerEngine.prototype.manyInternalLogic = function (prodOccurrence, actionORMethodDef, key) {\n var _this = this;\n var lookaheadFunction = this.getLaFuncFromCache(key);\n var action;\n if (typeof actionORMethodDef !== \"function\") {\n action = actionORMethodDef.DEF;\n var predicate_3 = actionORMethodDef.GATE;\n // predicate present\n if (predicate_3 !== undefined) {\n var orgLookaheadFunction_3 = lookaheadFunction;\n lookaheadFunction = function () {\n return predicate_3.call(_this) && orgLookaheadFunction_3.call(_this);\n };\n }\n }\n else {\n action = actionORMethodDef;\n }\n var notStuck = true;\n while (lookaheadFunction.call(this) === true && notStuck === true) {\n notStuck = this.doSingleRepetition(action);\n }\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(this.manyInternal, [prodOccurrence, actionORMethodDef], lookaheadFunction, keys_1.MANY_IDX, prodOccurrence, interpreter_1.NextTerminalAfterManyWalker, \n // The notStuck parameter is only relevant when \"attemptInRepetitionRecovery\"\n // is invoked from manyInternal, in the MANY_SEP case and AT_LEAST_ONE[_SEP]\n // An infinite loop cannot occur as:\n // - Either the lookahead is guaranteed to consume something (Single Token Separator)\n // - AT_LEAST_ONE by definition is guaranteed to consume something (or error out).\n notStuck);\n };\n RecognizerEngine.prototype.manySepFirstInternal = function (prodOccurrence, options) {\n var laKey = this.getKeyForAutomaticLookahead(keys_1.MANY_SEP_IDX, prodOccurrence);\n this.manySepFirstInternalLogic(prodOccurrence, options, laKey);\n };\n RecognizerEngine.prototype.manySepFirstInternalLogic = function (prodOccurrence, options, key) {\n var _this = this;\n var action = options.DEF;\n var separator = options.SEP;\n var firstIterationLaFunc = this.getLaFuncFromCache(key);\n // 1st iteration\n if (firstIterationLaFunc.call(this) === true) {\n action.call(this);\n var separatorLookAheadFunc = function () {\n return _this.tokenMatcher(_this.LA(1), separator);\n };\n // 2nd..nth iterations\n while (this.tokenMatcher(this.LA(1), separator) === true) {\n // note that this CONSUME will never enter recovery because\n // the separatorLookAheadFunc checks that the separator really does exist.\n this.CONSUME(separator);\n // No need for checking infinite loop here due to consuming the separator.\n action.call(this);\n }\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n interpreter_1.NextTerminalAfterManySepWalker\n ], separatorLookAheadFunc, keys_1.MANY_SEP_IDX, prodOccurrence, interpreter_1.NextTerminalAfterManySepWalker);\n }\n };\n RecognizerEngine.prototype.repetitionSepSecondInternal = function (prodOccurrence, separator, separatorLookAheadFunc, action, nextTerminalAfterWalker) {\n while (separatorLookAheadFunc()) {\n // note that this CONSUME will never enter recovery because\n // the separatorLookAheadFunc checks that the separator really does exist.\n this.CONSUME(separator);\n action.call(this);\n }\n // we can only arrive to this function after an error\n // has occurred (hence the name 'second') so the following\n // IF will always be entered, its possible to remove it...\n // however it is kept to avoid confusion and be consistent.\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n /* istanbul ignore else */\n this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n nextTerminalAfterWalker\n ], separatorLookAheadFunc, keys_1.AT_LEAST_ONE_SEP_IDX, prodOccurrence, nextTerminalAfterWalker);\n };\n RecognizerEngine.prototype.doSingleRepetition = function (action) {\n var beforeIteration = this.getLexerPosition();\n action.call(this);\n var afterIteration = this.getLexerPosition();\n // This boolean will indicate if this repetition progressed\n // or if we are \"stuck\" (potential infinite loop in the repetition).\n return afterIteration > beforeIteration;\n };\n RecognizerEngine.prototype.orInternal = function (altsOrOpts, occurrence) {\n var laKey = this.getKeyForAutomaticLookahead(keys_1.OR_IDX, occurrence);\n var alts = (0, isArray_1.default)(altsOrOpts) ? altsOrOpts : altsOrOpts.DEF;\n var laFunc = this.getLaFuncFromCache(laKey);\n var altIdxToTake = laFunc.call(this, alts);\n if (altIdxToTake !== undefined) {\n var chosenAlternative = alts[altIdxToTake];\n return chosenAlternative.ALT.call(this);\n }\n this.raiseNoAltException(occurrence, altsOrOpts.ERR_MSG);\n };\n RecognizerEngine.prototype.ruleFinallyStateUpdate = function () {\n this.RULE_STACK.pop();\n this.RULE_OCCURRENCE_STACK.pop();\n // NOOP when cst is disabled\n this.cstFinallyStateUpdate();\n if (this.RULE_STACK.length === 0 && this.isAtEndOfInput() === false) {\n var firstRedundantTok = this.LA(1);\n var errMsg = this.errorMessageProvider.buildNotAllInputParsedMessage({\n firstRedundant: firstRedundantTok,\n ruleName: this.getCurrRuleFullName()\n });\n this.SAVE_ERROR(new exceptions_public_1.NotAllInputParsedException(errMsg, firstRedundantTok));\n }\n };\n RecognizerEngine.prototype.subruleInternal = function (ruleToCall, idx, options) {\n var ruleResult;\n try {\n var args = options !== undefined ? options.ARGS : undefined;\n this.subruleIdx = idx;\n ruleResult = ruleToCall.apply(this, args);\n this.cstPostNonTerminal(ruleResult, options !== undefined && options.LABEL !== undefined\n ? options.LABEL\n : ruleToCall.ruleName);\n return ruleResult;\n }\n catch (e) {\n throw this.subruleInternalError(e, options, ruleToCall.ruleName);\n }\n };\n RecognizerEngine.prototype.subruleInternalError = function (e, options, ruleName) {\n if ((0, exceptions_public_1.isRecognitionException)(e) && e.partialCstResult !== undefined) {\n this.cstPostNonTerminal(e.partialCstResult, options !== undefined && options.LABEL !== undefined\n ? options.LABEL\n : ruleName);\n delete e.partialCstResult;\n }\n throw e;\n };\n RecognizerEngine.prototype.consumeInternal = function (tokType, idx, options) {\n var consumedToken;\n try {\n var nextToken = this.LA(1);\n if (this.tokenMatcher(nextToken, tokType) === true) {\n this.consumeToken();\n consumedToken = nextToken;\n }\n else {\n this.consumeInternalError(tokType, nextToken, options);\n }\n }\n catch (eFromConsumption) {\n consumedToken = this.consumeInternalRecovery(tokType, idx, eFromConsumption);\n }\n this.cstPostTerminal(options !== undefined && options.LABEL !== undefined\n ? options.LABEL\n : tokType.name, consumedToken);\n return consumedToken;\n };\n RecognizerEngine.prototype.consumeInternalError = function (tokType, nextToken, options) {\n var msg;\n var previousToken = this.LA(0);\n if (options !== undefined && options.ERR_MSG) {\n msg = options.ERR_MSG;\n }\n else {\n msg = this.errorMessageProvider.buildMismatchTokenMessage({\n expected: tokType,\n actual: nextToken,\n previous: previousToken,\n ruleName: this.getCurrRuleFullName()\n });\n }\n throw this.SAVE_ERROR(new exceptions_public_1.MismatchedTokenException(msg, nextToken, previousToken));\n };\n RecognizerEngine.prototype.consumeInternalRecovery = function (tokType, idx, eFromConsumption) {\n // no recovery allowed during backtracking, otherwise backtracking may recover invalid syntax and accept it\n // but the original syntax could have been parsed successfully without any backtracking + recovery\n if (this.recoveryEnabled &&\n // TODO: more robust checking of the exception type. Perhaps Typescript extending expressions?\n eFromConsumption.name === \"MismatchedTokenException\" &&\n !this.isBackTracking()) {\n var follows = this.getFollowsForInRuleRecovery(tokType, idx);\n try {\n return this.tryInRuleRecovery(tokType, follows);\n }\n catch (eFromInRuleRecovery) {\n if (eFromInRuleRecovery.name === recoverable_1.IN_RULE_RECOVERY_EXCEPTION) {\n // failed in RuleRecovery.\n // throw the original error in order to trigger reSync error recovery\n throw eFromConsumption;\n }\n else {\n throw eFromInRuleRecovery;\n }\n }\n }\n else {\n throw eFromConsumption;\n }\n };\n RecognizerEngine.prototype.saveRecogState = function () {\n // errors is a getter which will clone the errors array\n var savedErrors = this.errors;\n var savedRuleStack = (0, clone_1.default)(this.RULE_STACK);\n return {\n errors: savedErrors,\n lexerState: this.exportLexerState(),\n RULE_STACK: savedRuleStack,\n CST_STACK: this.CST_STACK\n };\n };\n RecognizerEngine.prototype.reloadRecogState = function (newState) {\n this.errors = newState.errors;\n this.importLexerState(newState.lexerState);\n this.RULE_STACK = newState.RULE_STACK;\n };\n RecognizerEngine.prototype.ruleInvocationStateUpdate = function (shortName, fullName, idxInCallingRule) {\n this.RULE_OCCURRENCE_STACK.push(idxInCallingRule);\n this.RULE_STACK.push(shortName);\n // NOOP when cst is disabled\n this.cstInvocationStateUpdate(fullName);\n };\n RecognizerEngine.prototype.isBackTracking = function () {\n return this.isBackTrackingStack.length !== 0;\n };\n RecognizerEngine.prototype.getCurrRuleFullName = function () {\n var shortName = this.getLastExplicitRuleShortName();\n return this.shortRuleNameToFull[shortName];\n };\n RecognizerEngine.prototype.shortRuleNameToFullName = function (shortName) {\n return this.shortRuleNameToFull[shortName];\n };\n RecognizerEngine.prototype.isAtEndOfInput = function () {\n return this.tokenMatcher(this.LA(1), tokens_public_1.EOF);\n };\n RecognizerEngine.prototype.reset = function () {\n this.resetLexerState();\n this.subruleIdx = 0;\n this.isBackTrackingStack = [];\n this.errors = [];\n this.RULE_STACK = [];\n // TODO: extract a specific reset for TreeBuilder trait\n this.CST_STACK = [];\n this.RULE_OCCURRENCE_STACK = [];\n };\n return RecognizerEngine;\n}());\nexports.RecognizerEngine = RecognizerEngine;\n//# sourceMappingURL=recognizer_engine.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorHandler = void 0;\nvar exceptions_public_1 = require(\"../../exceptions_public\");\nvar has_1 = __importDefault(require(\"lodash/has\"));\nvar clone_1 = __importDefault(require(\"lodash/clone\"));\nvar lookahead_1 = require(\"../../grammar/lookahead\");\nvar parser_1 = require(\"../parser\");\n/**\n * Trait responsible for runtime parsing errors.\n */\nvar ErrorHandler = /** @class */ (function () {\n function ErrorHandler() {\n }\n ErrorHandler.prototype.initErrorHandler = function (config) {\n this._errors = [];\n this.errorMessageProvider = (0, has_1.default)(config, \"errorMessageProvider\")\n ? config.errorMessageProvider // assumes end user provides the correct config value/type\n : parser_1.DEFAULT_PARSER_CONFIG.errorMessageProvider;\n };\n ErrorHandler.prototype.SAVE_ERROR = function (error) {\n if ((0, exceptions_public_1.isRecognitionException)(error)) {\n error.context = {\n ruleStack: this.getHumanReadableRuleStack(),\n ruleOccurrenceStack: (0, clone_1.default)(this.RULE_OCCURRENCE_STACK)\n };\n this._errors.push(error);\n return error;\n }\n else {\n throw Error(\"Trying to save an Error which is not a RecognitionException\");\n }\n };\n Object.defineProperty(ErrorHandler.prototype, \"errors\", {\n get: function () {\n return (0, clone_1.default)(this._errors);\n },\n set: function (newErrors) {\n this._errors = newErrors;\n },\n enumerable: false,\n configurable: true\n });\n // TODO: consider caching the error message computed information\n ErrorHandler.prototype.raiseEarlyExitException = function (occurrence, prodType, userDefinedErrMsg) {\n var ruleName = this.getCurrRuleFullName();\n var ruleGrammar = this.getGAstProductions()[ruleName];\n var lookAheadPathsPerAlternative = (0, lookahead_1.getLookaheadPathsForOptionalProd)(occurrence, ruleGrammar, prodType, this.maxLookahead);\n var insideProdPaths = lookAheadPathsPerAlternative[0];\n var actualTokens = [];\n for (var i = 1; i <= this.maxLookahead; i++) {\n actualTokens.push(this.LA(i));\n }\n var msg = this.errorMessageProvider.buildEarlyExitMessage({\n expectedIterationPaths: insideProdPaths,\n actual: actualTokens,\n previous: this.LA(0),\n customUserDescription: userDefinedErrMsg,\n ruleName: ruleName\n });\n throw this.SAVE_ERROR(new exceptions_public_1.EarlyExitException(msg, this.LA(1), this.LA(0)));\n };\n // TODO: consider caching the error message computed information\n ErrorHandler.prototype.raiseNoAltException = function (occurrence, errMsgTypes) {\n var ruleName = this.getCurrRuleFullName();\n var ruleGrammar = this.getGAstProductions()[ruleName];\n // TODO: getLookaheadPathsForOr can be slow for large enough maxLookahead and certain grammars, consider caching ?\n var lookAheadPathsPerAlternative = (0, lookahead_1.getLookaheadPathsForOr)(occurrence, ruleGrammar, this.maxLookahead);\n var actualTokens = [];\n for (var i = 1; i <= this.maxLookahead; i++) {\n actualTokens.push(this.LA(i));\n }\n var previousToken = this.LA(0);\n var errMsg = this.errorMessageProvider.buildNoViableAltMessage({\n expectedPathsPerAlt: lookAheadPathsPerAlternative,\n actual: actualTokens,\n previous: previousToken,\n customUserDescription: errMsgTypes,\n ruleName: this.getCurrRuleFullName()\n });\n throw this.SAVE_ERROR(new exceptions_public_1.NoViableAltException(errMsg, this.LA(1), previousToken));\n };\n return ErrorHandler;\n}());\nexports.ErrorHandler = ErrorHandler;\n//# sourceMappingURL=error_handler.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContentAssist = void 0;\nvar interpreter_1 = require(\"../../grammar/interpreter\");\nvar first_1 = __importDefault(require(\"lodash/first\"));\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\nvar ContentAssist = /** @class */ (function () {\n function ContentAssist() {\n }\n ContentAssist.prototype.initContentAssist = function () { };\n ContentAssist.prototype.computeContentAssist = function (startRuleName, precedingInput) {\n var startRuleGast = this.gastProductionsCache[startRuleName];\n if ((0, isUndefined_1.default)(startRuleGast)) {\n throw Error(\"Rule ->\".concat(startRuleName, \"<- does not exist in this grammar.\"));\n }\n return (0, interpreter_1.nextPossibleTokensAfter)([startRuleGast], precedingInput, this.tokenMatcher, this.maxLookahead);\n };\n // TODO: should this be a member method or a utility? it does not have any state or usage of 'this'...\n // TODO: should this be more explicitly part of the public API?\n ContentAssist.prototype.getNextPossibleTokenTypes = function (grammarPath) {\n var topRuleName = (0, first_1.default)(grammarPath.ruleStack);\n var gastProductions = this.getGAstProductions();\n var topProduction = gastProductions[topRuleName];\n var nextPossibleTokenTypes = new interpreter_1.NextAfterTokenWalker(topProduction, grammarPath).startWalking();\n return nextPossibleTokenTypes;\n };\n return ContentAssist;\n}());\nexports.ContentAssist = ContentAssist;\n//# sourceMappingURL=context_assist.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GastRecorder = void 0;\nvar last_1 = __importDefault(require(\"lodash/last\"));\nvar isArray_1 = __importDefault(require(\"lodash/isArray\"));\nvar some_1 = __importDefault(require(\"lodash/some\"));\nvar forEach_1 = __importDefault(require(\"lodash/forEach\"));\nvar isFunction_1 = __importDefault(require(\"lodash/isFunction\"));\nvar has_1 = __importDefault(require(\"lodash/has\"));\nvar gast_1 = require(\"@chevrotain/gast\");\nvar lexer_public_1 = require(\"../../../scan/lexer_public\");\nvar tokens_1 = require(\"../../../scan/tokens\");\nvar tokens_public_1 = require(\"../../../scan/tokens_public\");\nvar parser_1 = require(\"../parser\");\nvar keys_1 = require(\"../../grammar/keys\");\nvar RECORDING_NULL_OBJECT = {\n description: \"This Object indicates the Parser is during Recording Phase\"\n};\nObject.freeze(RECORDING_NULL_OBJECT);\nvar HANDLE_SEPARATOR = true;\nvar MAX_METHOD_IDX = Math.pow(2, keys_1.BITS_FOR_OCCURRENCE_IDX) - 1;\nvar RFT = (0, tokens_public_1.createToken)({ name: \"RECORDING_PHASE_TOKEN\", pattern: lexer_public_1.Lexer.NA });\n(0, tokens_1.augmentTokenTypes)([RFT]);\nvar RECORDING_PHASE_TOKEN = (0, tokens_public_1.createTokenInstance)(RFT, \"This IToken indicates the Parser is in Recording Phase\\n\\t\" +\n \"\" +\n \"See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details\", \n// Using \"-1\" instead of NaN (as in EOF) because an actual number is less likely to\n// cause errors if the output of LA or CONSUME would be (incorrectly) used during the recording phase.\n-1, -1, -1, -1, -1, -1);\nObject.freeze(RECORDING_PHASE_TOKEN);\nvar RECORDING_PHASE_CSTNODE = {\n name: \"This CSTNode indicates the Parser is in Recording Phase\\n\\t\" +\n \"See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details\",\n children: {}\n};\n/**\n * This trait handles the creation of the GAST structure for Chevrotain Grammars\n */\nvar GastRecorder = /** @class */ (function () {\n function GastRecorder() {\n }\n GastRecorder.prototype.initGastRecorder = function (config) {\n this.recordingProdStack = [];\n this.RECORDING_PHASE = false;\n };\n GastRecorder.prototype.enableRecording = function () {\n var _this = this;\n this.RECORDING_PHASE = true;\n this.TRACE_INIT(\"Enable Recording\", function () {\n var _loop_1 = function (i) {\n var idx = i > 0 ? i : \"\";\n _this[\"CONSUME\".concat(idx)] = function (arg1, arg2) {\n return this.consumeInternalRecord(arg1, i, arg2);\n };\n _this[\"SUBRULE\".concat(idx)] = function (arg1, arg2) {\n return this.subruleInternalRecord(arg1, i, arg2);\n };\n _this[\"OPTION\".concat(idx)] = function (arg1) {\n return this.optionInternalRecord(arg1, i);\n };\n _this[\"OR\".concat(idx)] = function (arg1) {\n return this.orInternalRecord(arg1, i);\n };\n _this[\"MANY\".concat(idx)] = function (arg1) {\n this.manyInternalRecord(i, arg1);\n };\n _this[\"MANY_SEP\".concat(idx)] = function (arg1) {\n this.manySepFirstInternalRecord(i, arg1);\n };\n _this[\"AT_LEAST_ONE\".concat(idx)] = function (arg1) {\n this.atLeastOneInternalRecord(i, arg1);\n };\n _this[\"AT_LEAST_ONE_SEP\".concat(idx)] = function (arg1) {\n this.atLeastOneSepFirstInternalRecord(i, arg1);\n };\n };\n /**\n * Warning Dark Voodoo Magic upcoming!\n * We are \"replacing\" the public parsing DSL methods API\n * With **new** alternative implementations on the Parser **instance**\n *\n * So far this is the only way I've found to avoid performance regressions during parsing time.\n * - Approx 30% performance regression was measured on Chrome 75 Canary when attempting to replace the \"internal\"\n * implementations directly instead.\n */\n for (var i = 0; i < 10; i++) {\n _loop_1(i);\n }\n // DSL methods with the idx(suffix) as an argument\n _this[\"consume\"] = function (idx, arg1, arg2) {\n return this.consumeInternalRecord(arg1, idx, arg2);\n };\n _this[\"subrule\"] = function (idx, arg1, arg2) {\n return this.subruleInternalRecord(arg1, idx, arg2);\n };\n _this[\"option\"] = function (idx, arg1) {\n return this.optionInternalRecord(arg1, idx);\n };\n _this[\"or\"] = function (idx, arg1) {\n return this.orInternalRecord(arg1, idx);\n };\n _this[\"many\"] = function (idx, arg1) {\n this.manyInternalRecord(idx, arg1);\n };\n _this[\"atLeastOne\"] = function (idx, arg1) {\n this.atLeastOneInternalRecord(idx, arg1);\n };\n _this.ACTION = _this.ACTION_RECORD;\n _this.BACKTRACK = _this.BACKTRACK_RECORD;\n _this.LA = _this.LA_RECORD;\n });\n };\n GastRecorder.prototype.disableRecording = function () {\n var _this = this;\n this.RECORDING_PHASE = false;\n // By deleting these **instance** properties, any future invocation\n // will be deferred to the original methods on the **prototype** object\n // This seems to get rid of any incorrect optimizations that V8 may\n // do during the recording phase.\n this.TRACE_INIT(\"Deleting Recording methods\", function () {\n var that = _this;\n for (var i = 0; i < 10; i++) {\n var idx = i > 0 ? i : \"\";\n delete that[\"CONSUME\".concat(idx)];\n delete that[\"SUBRULE\".concat(idx)];\n delete that[\"OPTION\".concat(idx)];\n delete that[\"OR\".concat(idx)];\n delete that[\"MANY\".concat(idx)];\n delete that[\"MANY_SEP\".concat(idx)];\n delete that[\"AT_LEAST_ONE\".concat(idx)];\n delete that[\"AT_LEAST_ONE_SEP\".concat(idx)];\n }\n delete that[\"consume\"];\n delete that[\"subrule\"];\n delete that[\"option\"];\n delete that[\"or\"];\n delete that[\"many\"];\n delete that[\"atLeastOne\"];\n delete that.ACTION;\n delete that.BACKTRACK;\n delete that.LA;\n });\n };\n // Parser methods are called inside an ACTION?\n // Maybe try/catch/finally on ACTIONS while disabling the recorders state changes?\n // @ts-expect-error -- noop place holder\n GastRecorder.prototype.ACTION_RECORD = function (impl) {\n // NO-OP during recording\n };\n // Executing backtracking logic will break our recording logic assumptions\n GastRecorder.prototype.BACKTRACK_RECORD = function (grammarRule, args) {\n return function () { return true; };\n };\n // LA is part of the official API and may be used for custom lookahead logic\n // by end users who may forget to wrap it in ACTION or inside a GATE\n GastRecorder.prototype.LA_RECORD = function (howMuch) {\n // We cannot use the RECORD_PHASE_TOKEN here because someone may depend\n // On LA return EOF at the end of the input so an infinite loop may occur.\n return parser_1.END_OF_FILE;\n };\n GastRecorder.prototype.topLevelRuleRecord = function (name, def) {\n try {\n var newTopLevelRule = new gast_1.Rule({ definition: [], name: name });\n newTopLevelRule.name = name;\n this.recordingProdStack.push(newTopLevelRule);\n def.call(this);\n this.recordingProdStack.pop();\n return newTopLevelRule;\n }\n catch (originalError) {\n if (originalError.KNOWN_RECORDER_ERROR !== true) {\n try {\n originalError.message =\n originalError.message +\n '\\n\\t This error was thrown during the \"grammar recording phase\" For more info see:\\n\\t' +\n \"https://chevrotain.io/docs/guide/internals.html#grammar-recording\";\n }\n catch (mutabilityError) {\n // We may not be able to modify the original error object\n throw originalError;\n }\n }\n throw originalError;\n }\n };\n // Implementation of parsing DSL\n GastRecorder.prototype.optionInternalRecord = function (actionORMethodDef, occurrence) {\n return recordProd.call(this, gast_1.Option, actionORMethodDef, occurrence);\n };\n GastRecorder.prototype.atLeastOneInternalRecord = function (occurrence, actionORMethodDef) {\n recordProd.call(this, gast_1.RepetitionMandatory, actionORMethodDef, occurrence);\n };\n GastRecorder.prototype.atLeastOneSepFirstInternalRecord = function (occurrence, options) {\n recordProd.call(this, gast_1.RepetitionMandatoryWithSeparator, options, occurrence, HANDLE_SEPARATOR);\n };\n GastRecorder.prototype.manyInternalRecord = function (occurrence, actionORMethodDef) {\n recordProd.call(this, gast_1.Repetition, actionORMethodDef, occurrence);\n };\n GastRecorder.prototype.manySepFirstInternalRecord = function (occurrence, options) {\n recordProd.call(this, gast_1.RepetitionWithSeparator, options, occurrence, HANDLE_SEPARATOR);\n };\n GastRecorder.prototype.orInternalRecord = function (altsOrOpts, occurrence) {\n return recordOrProd.call(this, altsOrOpts, occurrence);\n };\n GastRecorder.prototype.subruleInternalRecord = function (ruleToCall, occurrence, options) {\n assertMethodIdxIsValid(occurrence);\n if (!ruleToCall || (0, has_1.default)(ruleToCall, \"ruleName\") === false) {\n var error = new Error(\" argument is invalid\") +\n \" expecting a Parser method reference but got: <\".concat(JSON.stringify(ruleToCall), \">\") +\n \"\\n inside top level rule: <\".concat(this.recordingProdStack[0].name, \">\"));\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n var prevProd = (0, last_1.default)(this.recordingProdStack);\n var ruleName = ruleToCall.ruleName;\n var newNoneTerminal = new gast_1.NonTerminal({\n idx: occurrence,\n nonTerminalName: ruleName,\n label: options === null || options === void 0 ? void 0 : options.LABEL,\n // The resolving of the `referencedRule` property will be done once all the Rule's GASTs have been created\n referencedRule: undefined\n });\n prevProd.definition.push(newNoneTerminal);\n return this.outputCst ? RECORDING_PHASE_CSTNODE : RECORDING_NULL_OBJECT;\n };\n GastRecorder.prototype.consumeInternalRecord = function (tokType, occurrence, options) {\n assertMethodIdxIsValid(occurrence);\n if (!(0, tokens_1.hasShortKeyProperty)(tokType)) {\n var error = new Error(\" argument is invalid\") +\n \" expecting a TokenType reference but got: <\".concat(JSON.stringify(tokType), \">\") +\n \"\\n inside top level rule: <\".concat(this.recordingProdStack[0].name, \">\"));\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n var prevProd = (0, last_1.default)(this.recordingProdStack);\n var newNoneTerminal = new gast_1.Terminal({\n idx: occurrence,\n terminalType: tokType,\n label: options === null || options === void 0 ? void 0 : options.LABEL\n });\n prevProd.definition.push(newNoneTerminal);\n return RECORDING_PHASE_TOKEN;\n };\n return GastRecorder;\n}());\nexports.GastRecorder = GastRecorder;\nfunction recordProd(prodConstructor, mainProdArg, occurrence, handleSep) {\n if (handleSep === void 0) { handleSep = false; }\n assertMethodIdxIsValid(occurrence);\n var prevProd = (0, last_1.default)(this.recordingProdStack);\n var grammarAction = (0, isFunction_1.default)(mainProdArg) ? mainProdArg : mainProdArg.DEF;\n var newProd = new prodConstructor({ definition: [], idx: occurrence });\n if (handleSep) {\n newProd.separator = mainProdArg.SEP;\n }\n if ((0, has_1.default)(mainProdArg, \"MAX_LOOKAHEAD\")) {\n newProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD;\n }\n this.recordingProdStack.push(newProd);\n grammarAction.call(this);\n prevProd.definition.push(newProd);\n this.recordingProdStack.pop();\n return RECORDING_NULL_OBJECT;\n}\nfunction recordOrProd(mainProdArg, occurrence) {\n var _this = this;\n assertMethodIdxIsValid(occurrence);\n var prevProd = (0, last_1.default)(this.recordingProdStack);\n // Only an array of alternatives\n var hasOptions = (0, isArray_1.default)(mainProdArg) === false;\n var alts = hasOptions === false ? mainProdArg : mainProdArg.DEF;\n var newOrProd = new gast_1.Alternation({\n definition: [],\n idx: occurrence,\n ignoreAmbiguities: hasOptions && mainProdArg.IGNORE_AMBIGUITIES === true\n });\n if ((0, has_1.default)(mainProdArg, \"MAX_LOOKAHEAD\")) {\n newOrProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD;\n }\n var hasPredicates = (0, some_1.default)(alts, function (currAlt) { return (0, isFunction_1.default)(currAlt.GATE); });\n newOrProd.hasPredicates = hasPredicates;\n prevProd.definition.push(newOrProd);\n (0, forEach_1.default)(alts, function (currAlt) {\n var currAltFlat = new gast_1.Alternative({ definition: [] });\n newOrProd.definition.push(currAltFlat);\n if ((0, has_1.default)(currAlt, \"IGNORE_AMBIGUITIES\")) {\n currAltFlat.ignoreAmbiguities = currAlt.IGNORE_AMBIGUITIES; // assumes end user provides the correct config value/type\n }\n // **implicit** ignoreAmbiguities due to usage of gate\n else if ((0, has_1.default)(currAlt, \"GATE\")) {\n currAltFlat.ignoreAmbiguities = true;\n }\n _this.recordingProdStack.push(currAltFlat);\n currAlt.ALT.call(_this);\n _this.recordingProdStack.pop();\n });\n return RECORDING_NULL_OBJECT;\n}\nfunction getIdxSuffix(idx) {\n return idx === 0 ? \"\" : \"\".concat(idx);\n}\nfunction assertMethodIdxIsValid(idx) {\n if (idx < 0 || idx > MAX_METHOD_IDX) {\n var error = new Error(\n // The stack trace will contain all the needed details\n \"Invalid DSL Method idx value: <\".concat(idx, \">\\n\\t\") +\n \"Idx value must be a none negative value smaller than \".concat(MAX_METHOD_IDX + 1));\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n}\n//# sourceMappingURL=gast_recorder.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PerformanceTracer = void 0;\nvar has_1 = __importDefault(require(\"lodash/has\"));\nvar utils_1 = require(\"@chevrotain/utils\");\nvar parser_1 = require(\"../parser\");\n/**\n * Trait responsible for runtime parsing errors.\n */\nvar PerformanceTracer = /** @class */ (function () {\n function PerformanceTracer() {\n }\n PerformanceTracer.prototype.initPerformanceTracer = function (config) {\n if ((0, has_1.default)(config, \"traceInitPerf\")) {\n var userTraceInitPerf = config.traceInitPerf;\n var traceIsNumber = typeof userTraceInitPerf === \"number\";\n this.traceInitMaxIdent = traceIsNumber\n ? userTraceInitPerf\n : Infinity;\n this.traceInitPerf = traceIsNumber\n ? userTraceInitPerf > 0\n : userTraceInitPerf; // assumes end user provides the correct config value/type\n }\n else {\n this.traceInitMaxIdent = 0;\n this.traceInitPerf = parser_1.DEFAULT_PARSER_CONFIG.traceInitPerf;\n }\n this.traceInitIndent = -1;\n };\n PerformanceTracer.prototype.TRACE_INIT = function (phaseDesc, phaseImpl) {\n // No need to optimize this using NOOP pattern because\n // It is not called in a hot spot...\n if (this.traceInitPerf === true) {\n this.traceInitIndent++;\n var indent = new Array(this.traceInitIndent + 1).join(\"\\t\");\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n console.log(\"\".concat(indent, \"--> <\").concat(phaseDesc, \">\"));\n }\n var _a = (0, utils_1.timer)(phaseImpl), time = _a.time, value = _a.value;\n /* istanbul ignore next - Difficult to reproduce specific performance behavior (>10ms) in tests */\n var traceMethod = time > 10 ? console.warn : console.log;\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n traceMethod(\"\".concat(indent, \"<-- <\").concat(phaseDesc, \"> time: \").concat(time, \"ms\"));\n }\n this.traceInitIndent--;\n return value;\n }\n else {\n return phaseImpl();\n }\n };\n return PerformanceTracer;\n}());\nexports.PerformanceTracer = PerformanceTracer;\n//# sourceMappingURL=perf_tracer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.applyMixins = void 0;\nfunction applyMixins(derivedCtor, baseCtors) {\n baseCtors.forEach(function (baseCtor) {\n var baseProto = baseCtor.prototype;\n Object.getOwnPropertyNames(baseProto).forEach(function (propName) {\n if (propName === \"constructor\") {\n return;\n }\n var basePropDescriptor = Object.getOwnPropertyDescriptor(baseProto, propName);\n // Handle Accessors\n if (basePropDescriptor &&\n (basePropDescriptor.get || basePropDescriptor.set)) {\n Object.defineProperty(derivedCtor.prototype, propName, basePropDescriptor);\n }\n else {\n derivedCtor.prototype[propName] = baseCtor.prototype[propName];\n }\n });\n });\n}\nexports.applyMixins = applyMixins;\n//# sourceMappingURL=apply_mixins.js.map","\"use strict\";\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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateCstDts = void 0;\nvar model_1 = require(\"./model\");\nvar generate_1 = require(\"./generate\");\nvar defaultOptions = {\n includeVisitorInterface: true,\n visitorInterfaceName: \"ICstNodeVisitor\"\n};\nfunction generateCstDts(productions, options) {\n var effectiveOptions = __assign(__assign({}, defaultOptions), options);\n var model = (0, model_1.buildModel)(productions);\n return (0, generate_1.genDts)(model, effectiveOptions);\n}\nexports.generateCstDts = generateCstDts;\n//# sourceMappingURL=api.js.map","\"use strict\";\nvar __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 if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildModel = void 0;\nvar gast_1 = require(\"@chevrotain/gast\");\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar flatten_1 = __importDefault(require(\"lodash/flatten\"));\nvar values_1 = __importDefault(require(\"lodash/values\"));\nvar some_1 = __importDefault(require(\"lodash/some\"));\nvar groupBy_1 = __importDefault(require(\"lodash/groupBy\"));\nvar assign_1 = __importDefault(require(\"lodash/assign\"));\nfunction buildModel(productions) {\n var generator = new CstNodeDefinitionGenerator();\n var allRules = (0, values_1.default)(productions);\n return (0, map_1.default)(allRules, function (rule) { return generator.visitRule(rule); });\n}\nexports.buildModel = buildModel;\nvar CstNodeDefinitionGenerator = /** @class */ (function (_super) {\n __extends(CstNodeDefinitionGenerator, _super);\n function CstNodeDefinitionGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CstNodeDefinitionGenerator.prototype.visitRule = function (node) {\n var rawElements = this.visitEach(node.definition);\n var grouped = (0, groupBy_1.default)(rawElements, function (el) { return el.propertyName; });\n var properties = (0, map_1.default)(grouped, function (group, propertyName) {\n var allNullable = !(0, some_1.default)(group, function (el) { return !el.canBeNull; });\n // In an alternation with a label a property name can have\n // multiple types.\n var propertyType = group[0].type;\n if (group.length > 1) {\n propertyType = (0, map_1.default)(group, function (g) { return g.type; });\n }\n return {\n name: propertyName,\n type: propertyType,\n optional: allNullable\n };\n });\n return {\n name: node.name,\n properties: properties\n };\n };\n CstNodeDefinitionGenerator.prototype.visitAlternative = function (node) {\n return this.visitEachAndOverrideWith(node.definition, { canBeNull: true });\n };\n CstNodeDefinitionGenerator.prototype.visitOption = function (node) {\n return this.visitEachAndOverrideWith(node.definition, { canBeNull: true });\n };\n CstNodeDefinitionGenerator.prototype.visitRepetition = function (node) {\n return this.visitEachAndOverrideWith(node.definition, { canBeNull: true });\n };\n CstNodeDefinitionGenerator.prototype.visitRepetitionMandatory = function (node) {\n return this.visitEach(node.definition);\n };\n CstNodeDefinitionGenerator.prototype.visitRepetitionMandatoryWithSeparator = function (node) {\n return this.visitEach(node.definition).concat({\n propertyName: node.separator.name,\n canBeNull: true,\n type: getType(node.separator)\n });\n };\n CstNodeDefinitionGenerator.prototype.visitRepetitionWithSeparator = function (node) {\n return this.visitEachAndOverrideWith(node.definition, {\n canBeNull: true\n }).concat({\n propertyName: node.separator.name,\n canBeNull: true,\n type: getType(node.separator)\n });\n };\n CstNodeDefinitionGenerator.prototype.visitAlternation = function (node) {\n return this.visitEachAndOverrideWith(node.definition, { canBeNull: true });\n };\n CstNodeDefinitionGenerator.prototype.visitTerminal = function (node) {\n return [\n {\n propertyName: node.label || node.terminalType.name,\n canBeNull: false,\n type: getType(node)\n }\n ];\n };\n CstNodeDefinitionGenerator.prototype.visitNonTerminal = function (node) {\n return [\n {\n propertyName: node.label || node.nonTerminalName,\n canBeNull: false,\n type: getType(node)\n }\n ];\n };\n CstNodeDefinitionGenerator.prototype.visitEachAndOverrideWith = function (definition, override) {\n return (0, map_1.default)(this.visitEach(definition), function (definition) { return (0, assign_1.default)({}, definition, override); });\n };\n CstNodeDefinitionGenerator.prototype.visitEach = function (definition) {\n var _this = this;\n return (0, flatten_1.default)((0, map_1.default)(definition, function (definition) { return _this.visit(definition); }));\n };\n return CstNodeDefinitionGenerator;\n}(gast_1.GAstVisitor));\nfunction getType(production) {\n if (production instanceof gast_1.NonTerminal) {\n return {\n kind: \"rule\",\n name: production.referencedRule.name\n };\n }\n return { kind: \"token\" };\n}\n//# sourceMappingURL=model.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.genDts = void 0;\nvar flatten_1 = __importDefault(require(\"lodash/flatten\"));\nvar isArray_1 = __importDefault(require(\"lodash/isArray\"));\nvar map_1 = __importDefault(require(\"lodash/map\"));\nvar reduce_1 = __importDefault(require(\"lodash/reduce\"));\nvar uniq_1 = __importDefault(require(\"lodash/uniq\"));\nvar upperFirst_1 = __importDefault(require(\"lodash/upperFirst\"));\nfunction genDts(model, options) {\n var contentParts = [];\n contentParts = contentParts.concat(\"import type { CstNode, ICstVisitor, IToken } from \\\"chevrotain\\\";\");\n contentParts = contentParts.concat((0, flatten_1.default)((0, map_1.default)(model, function (node) { return genCstNodeTypes(node); })));\n if (options.includeVisitorInterface) {\n contentParts = contentParts.concat(genVisitor(options.visitorInterfaceName, model));\n }\n return contentParts.join(\"\\n\\n\") + \"\\n\";\n}\nexports.genDts = genDts;\nfunction genCstNodeTypes(node) {\n var nodeCstInterface = genNodeInterface(node);\n var nodeChildrenInterface = genNodeChildrenType(node);\n return [nodeCstInterface, nodeChildrenInterface];\n}\nfunction genNodeInterface(node) {\n var nodeInterfaceName = getNodeInterfaceName(node.name);\n var childrenTypeName = getNodeChildrenTypeName(node.name);\n return \"export interface \".concat(nodeInterfaceName, \" extends CstNode {\\n name: \\\"\").concat(node.name, \"\\\";\\n children: \").concat(childrenTypeName, \";\\n}\");\n}\nfunction genNodeChildrenType(node) {\n var typeName = getNodeChildrenTypeName(node.name);\n return \"export type \".concat(typeName, \" = {\\n \").concat((0, map_1.default)(node.properties, function (property) { return genChildProperty(property); }).join(\"\\n \"), \"\\n};\");\n}\nfunction genChildProperty(prop) {\n var typeName = buildTypeString(prop.type);\n return \"\".concat(prop.name).concat(prop.optional ? \"?\" : \"\", \": \").concat(typeName, \"[];\");\n}\nfunction genVisitor(name, nodes) {\n return \"export interface \".concat(name, \" extends ICstVisitor {\\n \").concat((0, map_1.default)(nodes, function (node) { return genVisitorFunction(node); }).join(\"\\n \"), \"\\n}\");\n}\nfunction genVisitorFunction(node) {\n var childrenTypeName = getNodeChildrenTypeName(node.name);\n return \"\".concat(node.name, \"(children: \").concat(childrenTypeName, \", param?: IN): OUT;\");\n}\nfunction buildTypeString(type) {\n if ((0, isArray_1.default)(type)) {\n var typeNames = (0, uniq_1.default)((0, map_1.default)(type, function (t) { return getTypeString(t); }));\n var typeString = (0, reduce_1.default)(typeNames, function (sum, t) { return sum + \" | \" + t; });\n return \"(\" + typeString + \")\";\n }\n else {\n return getTypeString(type);\n }\n}\nfunction getTypeString(type) {\n if (type.kind === \"token\") {\n return \"IToken\";\n }\n return getNodeInterfaceName(type.name);\n}\nfunction getNodeInterfaceName(ruleName) {\n return (0, upperFirst_1.default)(ruleName) + \"CstNode\";\n}\nfunction getNodeChildrenTypeName(ruleName) {\n return (0, upperFirst_1.default)(ruleName) + \"CstChildren\";\n}\n//# sourceMappingURL=generate.js.map","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createSyntaxDiagramsCode = void 0;\nvar version_1 = require(\"../version\");\nfunction createSyntaxDiagramsCode(grammar, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.resourceBase, resourceBase = _c === void 0 ? \"https://unpkg.com/chevrotain@\".concat(version_1.VERSION, \"/diagrams/\") : _c, _d = _b.css, css = _d === void 0 ? \"https://unpkg.com/chevrotain@\".concat(version_1.VERSION, \"/diagrams/diagrams.css\") : _d;\n var header = \"\\n\\n\\n\\n\\n\\n\";\n var cssHtml = \"\\n\\n\");\n var scripts = \"\\n\\n\\n\\n\\n\");\n var diagramsDiv = \"\\n
\\n\";\n var serializedGrammar = \"\\n\\n\");\n var initLogic = \"\\n\\n\";\n return (header + cssHtml + scripts + diagramsDiv + serializedGrammar + initLogic);\n}\nexports.createSyntaxDiagramsCode = createSyntaxDiagramsCode;\n//# sourceMappingURL=render_public.js.map","module.exports = __webpack_public_path__ + \"envMaps/irradiance_posx.png\";","module.exports = __webpack_public_path__ + \"envMaps/irradiance_negx.png\";","module.exports = __webpack_public_path__ + \"envMaps/irradiance_posy.png\";","module.exports = __webpack_public_path__ + \"envMaps/irradiance_negy.png\";","module.exports = __webpack_public_path__ + \"envMaps/irradiance_posz.png\";","module.exports = __webpack_public_path__ + \"envMaps/irradiance_negz.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posx_0.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posx_1.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posx_2.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posx_3.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posx_4.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posx_5.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posx_6.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posx_7.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posx_8.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posx_9.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negx_0.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negx_1.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negx_2.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negx_3.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negx_4.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negx_5.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negx_6.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negx_7.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negx_8.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negx_9.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posy_0.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posy_1.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posy_2.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posy_3.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posy_4.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posy_5.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posy_6.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posy_7.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posy_8.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posy_9.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negy_0.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negy_1.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negy_2.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negy_3.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negy_4.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negy_5.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negy_6.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negy_7.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negy_8.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negy_9.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posz_0.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posz_1.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posz_2.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posz_3.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posz_4.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posz_5.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posz_6.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posz_7.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posz_8.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_posz_9.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negz_0.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negz_1.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negz_2.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negz_3.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negz_4.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negz_5.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negz_6.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negz_7.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negz_8.png\";","module.exports = __webpack_public_path__ + \"envMaps/radiance_negz_9.png\";","module.exports = __webpack_public_path__ + \"envMaps/brdf.png\";","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function retryWhen(notifier) {\n return function (source) { return source.lift(new RetryWhenOperator(notifier, source)); };\n}\nvar RetryWhenOperator = /*@__PURE__*/ (function () {\n function RetryWhenOperator(notifier, source) {\n this.notifier = notifier;\n this.source = source;\n }\n RetryWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));\n };\n return RetryWhenOperator;\n}());\nvar RetryWhenSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RetryWhenSubscriber, _super);\n function RetryWhenSubscriber(destination, notifier, source) {\n var _this = _super.call(this, destination) || this;\n _this.notifier = notifier;\n _this.source = source;\n return _this;\n }\n RetryWhenSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var errors = this.errors;\n var retries = this.retries;\n var retriesSubscription = this.retriesSubscription;\n if (!retries) {\n errors = new Subject();\n try {\n var notifier = this.notifier;\n retries = notifier(errors);\n }\n catch (e) {\n return _super.prototype.error.call(this, e);\n }\n retriesSubscription = subscribeToResult(this, retries);\n }\n else {\n this.errors = null;\n this.retriesSubscription = null;\n }\n this._unsubscribeAndRecycle();\n this.errors = errors;\n this.retries = retries;\n this.retriesSubscription = retriesSubscription;\n errors.next(err);\n }\n };\n RetryWhenSubscriber.prototype._unsubscribe = function () {\n var _a = this, errors = _a.errors, retriesSubscription = _a.retriesSubscription;\n if (errors) {\n errors.unsubscribe();\n this.errors = null;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = null;\n }\n this.retries = null;\n };\n RetryWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var _unsubscribe = this._unsubscribe;\n this._unsubscribe = null;\n this._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n this.source.subscribe(this);\n };\n return RetryWhenSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=retryWhen.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar TimeoutErrorImpl = /*@__PURE__*/ (function () {\n function TimeoutErrorImpl() {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n TimeoutErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return TimeoutErrorImpl;\n})();\nexport var TimeoutError = TimeoutErrorImpl;\n//# sourceMappingURL=TimeoutError.js.map\n","/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function timeoutWith(due, withObservable, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return function (source) {\n var absoluteTimeout = isDate(due);\n var waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\nvar TimeoutWithOperator = /*@__PURE__*/ (function () {\n function TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler) {\n this.waitFor = waitFor;\n this.absoluteTimeout = absoluteTimeout;\n this.withObservable = withObservable;\n this.scheduler = scheduler;\n }\n TimeoutWithOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler));\n };\n return TimeoutWithOperator;\n}());\nvar TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TimeoutWithSubscriber, _super);\n function TimeoutWithSubscriber(destination, absoluteTimeout, waitFor, withObservable, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.absoluteTimeout = absoluteTimeout;\n _this.waitFor = waitFor;\n _this.withObservable = withObservable;\n _this.scheduler = scheduler;\n _this.action = null;\n _this.scheduleTimeout();\n return _this;\n }\n TimeoutWithSubscriber.dispatchTimeout = function (subscriber) {\n var withObservable = subscriber.withObservable;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(subscribeToResult(subscriber, withObservable));\n };\n TimeoutWithSubscriber.prototype.scheduleTimeout = function () {\n var action = this.action;\n if (action) {\n this.action = action.schedule(this, this.waitFor);\n }\n else {\n this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this));\n }\n };\n TimeoutWithSubscriber.prototype._next = function (value) {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n _super.prototype._next.call(this, value);\n };\n TimeoutWithSubscriber.prototype._unsubscribe = function () {\n this.action = null;\n this.scheduler = null;\n this.withObservable = null;\n };\n return TimeoutWithSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=timeoutWith.js.map\n","/** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */\nimport { async } from '../scheduler/async';\nimport { TimeoutError } from '../util/TimeoutError';\nimport { timeoutWith } from './timeoutWith';\nimport { throwError } from '../observable/throwError';\nexport function timeout(due, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return timeoutWith(due, throwError(new TimeoutError()), scheduler);\n}\n//# sourceMappingURL=timeout.js.map\n","module.exports = process.env.NODE_ENV === 'production' ? require('./build/mocks') : require('./build');\n\n//# sourceMappingURL=index.js.map","var CAN_USE_DOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n// Adapted from Modernizr\n// https://github.com/Modernizr/Modernizr/blob/acb3f0d9/feature-detects/dom/passiveeventlisteners.js#L26-L37\nfunction testPassiveEventListeners() {\n if (!CAN_USE_DOM) {\n return false;\n }\n\n if (!window.addEventListener || !window.removeEventListener || !Object.defineProperty) {\n return false;\n }\n\n var supportsPassiveOption = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line getter-return\n get: function () {\n function get() {\n supportsPassiveOption = true;\n }\n\n return get;\n }()\n });\n var noop = function noop() {};\n window.addEventListener('testPassiveEventSupport', noop, opts);\n window.removeEventListener('testPassiveEventSupport', noop, opts);\n } catch (e) {\n // do nothing\n }\n\n return supportsPassiveOption;\n}\n\nvar memoized = void 0;\n\nfunction canUsePassiveEventListeners() {\n if (memoized === undefined) {\n memoized = testPassiveEventListeners();\n }\n return memoized;\n}\n\nfunction normalizeEventOptions(eventOptions) {\n if (!eventOptions) {\n return undefined;\n }\n\n if (!canUsePassiveEventListeners()) {\n // If the browser does not support the passive option, then it is expecting\n // a boolean for the options argument to specify whether it should use\n // capture or not. In more modern browsers, this is passed via the `capture`\n // option, so let's just hoist that value up.\n return !!eventOptions.capture;\n }\n\n return eventOptions;\n}\n\n/* eslint-disable no-bitwise */\n\n/**\n * Generate a unique key for any set of event options\n */\nfunction eventOptionsKey(normalizedEventOptions) {\n if (!normalizedEventOptions) {\n return 0;\n }\n\n // If the browser does not support passive event listeners, the normalized\n // event options will be a boolean.\n if (normalizedEventOptions === true) {\n return 100;\n }\n\n // At this point, the browser supports passive event listeners, so we expect\n // the event options to be an object with possible properties of capture,\n // passive, and once.\n //\n // We want to consistently return the same value, regardless of the order of\n // these properties, so let's use binary maths to assign each property to a\n // bit, and then add those together (with an offset to account for the\n // booleans at the beginning of this function).\n var capture = normalizedEventOptions.capture << 0;\n var passive = normalizedEventOptions.passive << 1;\n var once = normalizedEventOptions.once << 2;\n return capture + passive + once;\n}\n\nfunction ensureCanMutateNextEventHandlers(eventHandlers) {\n if (eventHandlers.handlers === eventHandlers.nextHandlers) {\n // eslint-disable-next-line no-param-reassign\n eventHandlers.nextHandlers = eventHandlers.handlers.slice();\n }\n}\n\nfunction TargetEventHandlers(target) {\n this.target = target;\n this.events = {};\n}\n\nTargetEventHandlers.prototype.getEventHandlers = function () {\n function getEventHandlers(eventName, options) {\n var key = String(eventName) + ' ' + String(eventOptionsKey(options));\n\n if (!this.events[key]) {\n this.events[key] = {\n handlers: [],\n handleEvent: undefined\n };\n this.events[key].nextHandlers = this.events[key].handlers;\n }\n\n return this.events[key];\n }\n\n return getEventHandlers;\n}();\n\nTargetEventHandlers.prototype.handleEvent = function () {\n function handleEvent(eventName, options, event) {\n var eventHandlers = this.getEventHandlers(eventName, options);\n eventHandlers.handlers = eventHandlers.nextHandlers;\n eventHandlers.handlers.forEach(function (handler) {\n if (handler) {\n // We need to check for presence here because a handler function may\n // cause later handlers to get removed. This can happen if you for\n // instance have a waypoint that unmounts another waypoint as part of an\n // onEnter/onLeave handler.\n handler(event);\n }\n });\n }\n\n return handleEvent;\n}();\n\nTargetEventHandlers.prototype.add = function () {\n function add(eventName, listener, options) {\n var _this = this;\n\n // options has already been normalized at this point.\n var eventHandlers = this.getEventHandlers(eventName, options);\n\n ensureCanMutateNextEventHandlers(eventHandlers);\n\n if (eventHandlers.nextHandlers.length === 0) {\n eventHandlers.handleEvent = this.handleEvent.bind(this, eventName, options);\n\n this.target.addEventListener(eventName, eventHandlers.handleEvent, options);\n }\n\n eventHandlers.nextHandlers.push(listener);\n\n var isSubscribed = true;\n var unsubscribe = function () {\n function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextEventHandlers(eventHandlers);\n var index = eventHandlers.nextHandlers.indexOf(listener);\n eventHandlers.nextHandlers.splice(index, 1);\n\n if (eventHandlers.nextHandlers.length === 0) {\n // All event handlers have been removed, so we want to remove the event\n // listener from the target node.\n\n if (_this.target) {\n // There can be a race condition where the target may no longer exist\n // when this function is called, e.g. when a React component is\n // unmounting. Guarding against this prevents the following error:\n //\n // Cannot read property 'removeEventListener' of undefined\n _this.target.removeEventListener(eventName, eventHandlers.handleEvent, options);\n }\n\n eventHandlers.handleEvent = undefined;\n }\n }\n\n return unsubscribe;\n }();\n return unsubscribe;\n }\n\n return add;\n}();\n\nvar EVENT_HANDLERS_KEY = '__consolidated_events_handlers__';\n\n// eslint-disable-next-line import/prefer-default-export\nfunction addEventListener(target, eventName, listener, options) {\n if (!target[EVENT_HANDLERS_KEY]) {\n // eslint-disable-next-line no-param-reassign\n target[EVENT_HANDLERS_KEY] = new TargetEventHandlers(target);\n }\n var normalizedEventOptions = normalizeEventOptions(options);\n return target[EVENT_HANDLERS_KEY].add(eventName, listener, normalizedEventOptions);\n}\n\nexport { addEventListener };\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar polyfill = getPolyfill();\nvar shim = require('./shim');\n\nvar boundContains = function contains(node, other) {\n\treturn polyfill.apply(node, [other]);\n};\n\ndefine(boundContains, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundContains;\n","import { useEffect, useRef } from 'react';\n\ntype IHandler = (event: MouseEvent) => void;\n\nconst useOutsideClick = (ref: React.RefObject, handler: IHandler) => {\n const handlerRef = useRef(handler);\n handlerRef.current = handler;\n\n useEffect(() => {\n const handleEvent = (event: MouseEvent) => {\n if (!ref.current || ref.current.contains(event.target as Node)) return;\n\n handlerRef.current(event);\n };\n\n document.addEventListener('mousedown', handleEvent);\n document.addEventListener('touchstart', handleEvent);\n return () => {\n document.removeEventListener('mousedown', handleEvent);\n document.removeEventListener('touchstart', handleEvent);\n };\n }, [ref]);\n};\n\nexport default useOutsideClick;\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\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","/**\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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\nmodule.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nvar __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 (b.hasOwnProperty(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 __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = __importStar(require(\"react\"));\nvar utils_1 = require(\"./utils\");\nvar types_1 = require(\"./types\");\nvar INCREASE_KEYS = ['ArrowRight', 'ArrowUp', 'k', 'PageUp'];\nvar DECREASE_KEYS = ['ArrowLeft', 'ArrowDown', 'j', 'PageDown'];\nvar Range = /** @class */ (function (_super) {\n __extends(Range, _super);\n function Range(props) {\n var _this = _super.call(this, props) || this;\n _this.trackRef = React.createRef();\n _this.thumbRefs = [];\n _this.markRefs = [];\n _this.state = {\n draggedTrackPos: [-1, -1],\n draggedThumbIndex: -1,\n thumbZIndexes: new Array(_this.props.values.length).fill(0).map(function (t, i) { return i; }),\n isChanged: false,\n markOffsets: []\n };\n _this.getOffsets = function () {\n var _a = _this.props, direction = _a.direction, values = _a.values, min = _a.min, max = _a.max;\n var trackElement = _this.trackRef.current;\n var trackRect = trackElement.getBoundingClientRect();\n var trackPadding = utils_1.getPaddingAndBorder(trackElement);\n return _this.getThumbs().map(function (thumb, index) {\n var thumbOffsets = { x: 0, y: 0 };\n var thumbRect = thumb.getBoundingClientRect();\n var thumbMargins = utils_1.getMargin(thumb);\n switch (direction) {\n case types_1.Direction.Right:\n thumbOffsets.x = (thumbMargins.left + trackPadding.left) * -1;\n thumbOffsets.y =\n ((thumbRect.height - trackRect.height) / 2 + trackPadding.top) * -1;\n thumbOffsets.x +=\n trackRect.width * utils_1.relativeValue(values[index], min, max) -\n thumbRect.width / 2;\n return thumbOffsets;\n case types_1.Direction.Left:\n thumbOffsets.x = (thumbMargins.right + trackPadding.right) * -1;\n thumbOffsets.y =\n ((thumbRect.height - trackRect.height) / 2 + trackPadding.top) * -1;\n thumbOffsets.x +=\n trackRect.width -\n trackRect.width * utils_1.relativeValue(values[index], min, max) -\n thumbRect.width / 2;\n return thumbOffsets;\n case types_1.Direction.Up:\n thumbOffsets.x =\n ((thumbRect.width - trackRect.width) / 2 +\n thumbMargins.left +\n trackPadding.left) *\n -1;\n thumbOffsets.y = -trackPadding.left;\n thumbOffsets.y +=\n trackRect.height -\n trackRect.height * utils_1.relativeValue(values[index], min, max) -\n thumbRect.height / 2;\n return thumbOffsets;\n case types_1.Direction.Down:\n thumbOffsets.x =\n ((thumbRect.width - trackRect.width) / 2 +\n thumbMargins.left +\n trackPadding.left) *\n -1;\n thumbOffsets.y = -trackPadding.left;\n thumbOffsets.y +=\n trackRect.height * utils_1.relativeValue(values[index], min, max) -\n thumbRect.height / 2;\n return thumbOffsets;\n default:\n return utils_1.assertUnreachable(direction);\n }\n });\n };\n _this.getThumbs = function () {\n if (_this.trackRef && _this.trackRef.current) {\n return Array.from(_this.trackRef.current.children).filter(function (el) {\n return el.hasAttribute('aria-valuenow');\n });\n }\n console.warn('No thumbs found in the track container. Did you forget to pass & spread the `props` param in renderTrack?');\n return [];\n };\n _this.getTargetIndex = function (e) {\n return _this.getThumbs().findIndex(function (child) { return child === e.target || child.contains(e.target); });\n };\n _this.addTouchEvents = function (e) {\n document.addEventListener('touchmove', _this.schdOnTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', _this.schdOnEnd, {\n passive: false\n });\n document.addEventListener('touchcancel', _this.schdOnEnd, {\n passive: false\n });\n };\n _this.addMouseEvents = function (e) {\n document.addEventListener('mousemove', _this.schdOnMouseMove);\n document.addEventListener('mouseup', _this.schdOnEnd);\n };\n _this.onMouseDownTrack = function (e) {\n var _a;\n if (e.button !== 0)\n return;\n e.persist();\n e.preventDefault();\n _this.addMouseEvents(e.nativeEvent);\n if (_this.props.values.length > 1 && _this.props.draggableTrack) {\n if (_this.thumbRefs.some(function (thumbRef) { var _a; return (_a = thumbRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target); }))\n return;\n // handle dragging the whole track\n _this.setState({\n draggedTrackPos: [e.clientX, e.clientY]\n }, function () { return _this.onMove(e.clientX, e.clientY); });\n }\n else {\n // get the index of the thumb that is closest to the place where the track is clicked\n var draggedThumbIndex = utils_1.getClosestThumbIndex(_this.thumbRefs.map(function (t) { return t.current; }), e.clientX, e.clientY, _this.props.direction);\n // move the thumb which is closest to the place where the track is clicked\n (_a = _this.thumbRefs[draggedThumbIndex].current) === null || _a === void 0 ? void 0 : _a.focus();\n _this.setState({\n draggedThumbIndex: draggedThumbIndex\n }, function () { return _this.onMove(e.clientX, e.clientY); });\n }\n };\n _this.onResize = function () {\n utils_1.translateThumbs(_this.getThumbs(), _this.getOffsets(), _this.props.rtl);\n _this.calculateMarkOffsets();\n };\n _this.onTouchStartTrack = function (e) {\n var _a;\n e.persist();\n _this.addTouchEvents(e.nativeEvent);\n if (_this.props.values.length > 1 && _this.props.draggableTrack) {\n if (_this.thumbRefs.some(function (thumbRef) { var _a; return (_a = thumbRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target); }))\n return;\n // handle dragging the whole track\n _this.setState({\n draggedTrackPos: [e.touches[0].clientX, e.touches[0].clientY]\n }, function () { return _this.onMove(e.touches[0].clientX, e.touches[0].clientY); });\n }\n else {\n // get the index of the thumb that is closest to the place where the track is clicked\n var draggedThumbIndex = utils_1.getClosestThumbIndex(_this.thumbRefs.map(function (t) { return t.current; }), e.touches[0].clientX, e.touches[0].clientY, _this.props.direction);\n // move the thumb which is closest to the place where the track is clicked\n (_a = _this.thumbRefs[draggedThumbIndex].current) === null || _a === void 0 ? void 0 : _a.focus();\n _this.setState({\n draggedThumbIndex: draggedThumbIndex\n }, function () { return _this.onMove(e.touches[0].clientX, e.touches[0].clientY); });\n }\n };\n _this.onMouseOrTouchStart = function (e) {\n if (_this.props.disabled)\n return;\n var isTouch = utils_1.isTouchEvent(e);\n if (!isTouch && e.button !== 0)\n return;\n var index = _this.getTargetIndex(e);\n if (index === -1)\n return;\n if (isTouch) {\n _this.addTouchEvents(e);\n }\n else {\n _this.addMouseEvents(e);\n }\n _this.setState({\n draggedThumbIndex: index,\n thumbZIndexes: _this.state.thumbZIndexes.map(function (t, i) {\n if (i === index) {\n return Math.max.apply(Math, _this.state.thumbZIndexes);\n }\n return t <= _this.state.thumbZIndexes[index] ? t : t - 1;\n })\n });\n };\n _this.onMouseMove = function (e) {\n e.preventDefault();\n _this.onMove(e.clientX, e.clientY);\n };\n _this.onTouchMove = function (e) {\n e.preventDefault();\n _this.onMove(e.touches[0].clientX, e.touches[0].clientY);\n };\n _this.onKeyDown = function (e) {\n var _a = _this.props, values = _a.values, onChange = _a.onChange, step = _a.step, rtl = _a.rtl;\n var isChanged = _this.state.isChanged;\n var index = _this.getTargetIndex(e.nativeEvent);\n var inverter = rtl ? -1 : 1;\n if (index === -1)\n return;\n if (INCREASE_KEYS.includes(e.key)) {\n e.preventDefault();\n _this.setState({\n draggedThumbIndex: index,\n isChanged: true\n });\n onChange(utils_1.replaceAt(values, index, _this.normalizeValue(values[index] + inverter * (e.key === 'PageUp' ? step * 10 : step), index)));\n }\n else if (DECREASE_KEYS.includes(e.key)) {\n e.preventDefault();\n _this.setState({\n draggedThumbIndex: index,\n isChanged: true\n });\n onChange(utils_1.replaceAt(values, index, _this.normalizeValue(values[index] -\n inverter * (e.key === 'PageDown' ? step * 10 : step), index)));\n }\n else if (e.key === 'Tab') {\n _this.setState({ draggedThumbIndex: -1 }, function () {\n // If key pressed when thumb was moving, fire onFinalChange\n if (isChanged) {\n _this.fireOnFinalChange();\n }\n });\n }\n else {\n if (isChanged) {\n _this.fireOnFinalChange();\n }\n }\n };\n _this.onKeyUp = function (e) {\n var isChanged = _this.state.isChanged;\n _this.setState({\n draggedThumbIndex: -1\n }, function () {\n if (isChanged) {\n _this.fireOnFinalChange();\n }\n });\n };\n _this.onMove = function (clientX, clientY) {\n var _a = _this.state, draggedThumbIndex = _a.draggedThumbIndex, draggedTrackPos = _a.draggedTrackPos;\n var _b = _this.props, direction = _b.direction, min = _b.min, max = _b.max, onChange = _b.onChange, values = _b.values, step = _b.step, rtl = _b.rtl;\n if (draggedThumbIndex === -1 && draggedTrackPos[0] === -1 && draggedTrackPos[1] === -1)\n return null;\n var trackElement = _this.trackRef.current;\n // If component was closed down prematurely, A last onMove could be triggered based on requestAnimationFrame()\n if (!trackElement)\n return null;\n var trackRect = trackElement.getBoundingClientRect();\n var trackLength = utils_1.isVertical(direction)\n ? trackRect.height\n : trackRect.width;\n if (draggedTrackPos[0] !== -1 && draggedTrackPos[1] !== -1) {\n // calculate how much it moved since the last update\n var dX = clientX - draggedTrackPos[0];\n var dY = clientY - draggedTrackPos[1];\n // calculate the delta of the value\n var deltaValue = 0;\n switch (direction) {\n case types_1.Direction.Right:\n case types_1.Direction.Left:\n deltaValue = (dX / trackLength) * (max - min) + min;\n break;\n case types_1.Direction.Down:\n case types_1.Direction.Up:\n deltaValue = (dY / trackLength) * (max - min) + min;\n break;\n default:\n utils_1.assertUnreachable(direction);\n }\n // invert for RTL\n if (rtl) {\n deltaValue *= -1;\n }\n if (Math.abs(deltaValue) >= step / 2) {\n // adjust delta so it fits into the range\n for (var i = 0; i < _this.thumbRefs.length; i++) {\n if ((values[i] === max && Math.sign(deltaValue) === 1) || (values[i] === min && Math.sign(deltaValue) === -1))\n return;\n var thumbValue = values[i] + deltaValue;\n if (thumbValue > max)\n deltaValue = max - values[i];\n else if (thumbValue < min)\n deltaValue = min - values[i];\n }\n // add the delta to each thumb\n var newValues = values.slice(0);\n for (var i = 0; i < _this.thumbRefs.length; i++) {\n newValues = utils_1.replaceAt(newValues, i, _this.normalizeValue(values[i] + deltaValue, i));\n }\n _this.setState({\n draggedTrackPos: [clientX, clientY],\n });\n onChange(newValues);\n }\n }\n else {\n var newValue = 0;\n switch (direction) {\n case types_1.Direction.Right:\n newValue =\n ((clientX - trackRect.left) / trackLength) * (max - min) + min;\n break;\n case types_1.Direction.Left:\n newValue =\n ((trackLength - (clientX - trackRect.left)) / trackLength) *\n (max - min) +\n min;\n break;\n case types_1.Direction.Down:\n newValue =\n ((clientY - trackRect.top) / trackLength) * (max - min) + min;\n break;\n case types_1.Direction.Up:\n newValue =\n ((trackLength - (clientY - trackRect.top)) / trackLength) *\n (max - min) +\n min;\n break;\n default:\n utils_1.assertUnreachable(direction);\n }\n // invert for RTL\n if (rtl) {\n newValue = max + min - newValue;\n }\n if (Math.abs(values[draggedThumbIndex] - newValue) >= step / 2) {\n onChange(utils_1.replaceAt(values, draggedThumbIndex, _this.normalizeValue(newValue, draggedThumbIndex)));\n }\n }\n };\n _this.normalizeValue = function (value, index) {\n var _a = _this.props, min = _a.min, max = _a.max, step = _a.step, allowOverlap = _a.allowOverlap, values = _a.values;\n return utils_1.normalizeValue(value, index, min, max, step, allowOverlap, values);\n };\n _this.onEnd = function (e) {\n e.preventDefault();\n document.removeEventListener('mousemove', _this.schdOnMouseMove);\n document.removeEventListener('touchmove', _this.schdOnTouchMove);\n document.removeEventListener('mouseup', _this.schdOnEnd);\n document.removeEventListener('touchend', _this.schdOnEnd);\n document.removeEventListener('touchcancel', _this.schdOnEnd);\n if (_this.state.draggedThumbIndex === -1 && _this.state.draggedTrackPos[0] === -1 && _this.state.draggedTrackPos[1] === -1)\n return null;\n _this.setState({ draggedThumbIndex: -1, draggedTrackPos: [-1, -1] }, function () {\n _this.fireOnFinalChange();\n });\n };\n _this.fireOnFinalChange = function () {\n _this.setState({ isChanged: false });\n var _a = _this.props, onFinalChange = _a.onFinalChange, values = _a.values;\n if (onFinalChange) {\n onFinalChange(values);\n }\n };\n _this.calculateMarkOffsets = function () {\n if (!_this.props.renderMark ||\n !_this.trackRef ||\n _this.trackRef.current === null)\n return;\n var elStyles = window.getComputedStyle(_this.trackRef.current);\n var trackWidth = parseInt(elStyles.width, 10);\n var trackHeight = parseInt(elStyles.height, 10);\n var paddingLeft = parseInt(elStyles.paddingLeft, 10);\n var paddingTop = parseInt(elStyles.paddingTop, 10);\n var res = [];\n for (var i = 0; i < _this.numOfMarks + 1; i++) {\n var markHeight = 9999;\n var markWidth = 9999;\n if (_this.markRefs[i].current) {\n var markRect = _this.markRefs[i].current.getBoundingClientRect();\n markHeight = markRect.height;\n markWidth = markRect.width;\n }\n if (_this.props.direction === types_1.Direction.Left ||\n _this.props.direction === types_1.Direction.Right) {\n res.push([\n Math.round((trackWidth / _this.numOfMarks) * i + paddingLeft - markWidth / 2),\n -Math.round((markHeight - trackHeight) / 2)\n ]);\n }\n else {\n res.push([\n Math.round((trackHeight / _this.numOfMarks) * i + paddingTop - markHeight / 2),\n -Math.round((markWidth - trackWidth) / 2)\n ]);\n }\n }\n _this.setState({ markOffsets: res });\n };\n _this.numOfMarks = (props.max - props.min) / _this.props.step;\n _this.schdOnMouseMove = utils_1.schd(_this.onMouseMove);\n _this.schdOnTouchMove = utils_1.schd(_this.onTouchMove);\n _this.schdOnEnd = utils_1.schd(_this.onEnd);\n _this.thumbRefs = props.values.map(function () { return React.createRef(); });\n for (var i = 0; i < _this.numOfMarks + 1; i++) {\n _this.markRefs[i] = React.createRef();\n }\n if (!utils_1.isStepDivisible(props.min, props.max, props.step)) {\n console.warn('The difference of `max` and `min` must be divisible by `step`');\n }\n if (props.step === 0) {\n throw new Error('\"step\" property should be a positive number');\n }\n return _this;\n }\n Range.prototype.componentDidMount = function () {\n var _this = this;\n var _a = this.props, values = _a.values, min = _a.min, step = _a.step;\n this.resizeObserver = window.ResizeObserver\n ? new window.ResizeObserver(this.onResize)\n : {\n observe: function () { return window.addEventListener('resize', _this.onResize); },\n unobserve: function () {\n return window.removeEventListener('resize', _this.onResize);\n }\n };\n document.addEventListener('touchstart', this.onMouseOrTouchStart, {\n passive: false\n });\n document.addEventListener('mousedown', this.onMouseOrTouchStart, {\n passive: false\n });\n !this.props.allowOverlap && utils_1.checkInitialOverlap(this.props.values);\n this.props.values.forEach(function (value) {\n return utils_1.checkBoundaries(value, _this.props.min, _this.props.max);\n });\n this.resizeObserver.observe(this.trackRef.current);\n utils_1.translateThumbs(this.getThumbs(), this.getOffsets(), this.props.rtl);\n this.calculateMarkOffsets();\n values.forEach(function (value) {\n if (!utils_1.isStepDivisible(min, value, step)) {\n console.warn('The `values` property is in conflict with the current `step`, `min`, and `max` properties. Please provide values that are accessible using the min, max, and step values.');\n }\n });\n };\n Range.prototype.componentDidUpdate = function (prevProps) {\n utils_1.translateThumbs(this.getThumbs(), this.getOffsets(), this.props.rtl);\n };\n Range.prototype.componentWillUnmount = function () {\n var options = {\n passive: false\n };\n document.removeEventListener('mousedown', this.onMouseOrTouchStart, options);\n // These need to be removed!!\n document.removeEventListener('mousemove', this.schdOnMouseMove);\n document.removeEventListener('touchmove', this.schdOnTouchMove);\n document.removeEventListener('touchstart', this.onMouseOrTouchStart);\n document.removeEventListener('mouseup', this.schdOnEnd);\n document.removeEventListener('touchend', this.schdOnEnd);\n this.resizeObserver.unobserve(this.trackRef.current);\n };\n Range.prototype.render = function () {\n var _this = this;\n var _a = this.props, renderTrack = _a.renderTrack, renderThumb = _a.renderThumb, _b = _a.renderMark, renderMark = _b === void 0 ? function () { return null; } : _b, values = _a.values, min = _a.min, max = _a.max, allowOverlap = _a.allowOverlap, disabled = _a.disabled;\n var _c = this.state, draggedThumbIndex = _c.draggedThumbIndex, thumbZIndexes = _c.thumbZIndexes, markOffsets = _c.markOffsets;\n return renderTrack({\n props: {\n style: {\n // creates stacking context that prevents z-index applied to thumbs\n // interfere with other elements\n transform: 'scale(1)',\n cursor: draggedThumbIndex > -1\n ? 'grabbing'\n : this.props.draggableTrack\n ? utils_1.isVertical(this.props.direction)\n ? 'ns-resize'\n : 'ew-resize'\n : values.length === 1 && !disabled\n ? 'pointer'\n : 'inherit'\n },\n onMouseDown: disabled ? utils_1.voidFn : this.onMouseDownTrack,\n onTouchStart: disabled ? utils_1.voidFn : this.onTouchStartTrack,\n ref: this.trackRef\n },\n isDragged: this.state.draggedThumbIndex > -1,\n disabled: disabled,\n children: __spreadArrays(markOffsets.map(function (offset, index) {\n return renderMark({\n props: {\n style: _this.props.direction === types_1.Direction.Left ||\n _this.props.direction === types_1.Direction.Right\n ? {\n position: 'absolute',\n left: offset[0] + \"px\",\n marginTop: offset[1] + \"px\"\n }\n : {\n position: 'absolute',\n top: offset[0] + \"px\",\n marginLeft: offset[1] + \"px\"\n },\n key: \"mark\" + index,\n ref: _this.markRefs[index]\n },\n index: index\n });\n }), values.map(function (value, index) {\n var isDragged = _this.state.draggedThumbIndex === index;\n return renderThumb({\n index: index,\n value: value,\n isDragged: isDragged,\n props: {\n style: {\n position: 'absolute',\n zIndex: thumbZIndexes[index],\n cursor: disabled ? 'inherit' : isDragged ? 'grabbing' : 'grab',\n userSelect: 'none',\n touchAction: 'none',\n WebkitUserSelect: 'none',\n MozUserSelect: 'none',\n msUserSelect: 'none'\n },\n key: index,\n tabIndex: disabled ? undefined : 0,\n 'aria-valuemax': allowOverlap ? max : values[index + 1] || max,\n 'aria-valuemin': allowOverlap ? min : values[index - 1] || min,\n 'aria-valuenow': value,\n draggable: false,\n ref: _this.thumbRefs[index],\n role: 'slider',\n onKeyDown: disabled ? utils_1.voidFn : _this.onKeyDown,\n onKeyUp: disabled ? utils_1.voidFn : _this.onKeyUp\n }\n });\n }))\n });\n };\n Range.defaultProps = {\n step: 1,\n direction: types_1.Direction.Right,\n rtl: false,\n disabled: false,\n allowOverlap: false,\n draggableTrack: false,\n min: 0,\n max: 100\n };\n return Range;\n}(React.Component));\nexports.default = Range;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flattenNames = undefined;\n\nvar _isString2 = require('lodash/isString');\n\nvar _isString3 = _interopRequireDefault(_isString2);\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _isPlainObject2 = require('lodash/isPlainObject');\n\nvar _isPlainObject3 = _interopRequireDefault(_isPlainObject2);\n\nvar _map2 = require('lodash/map');\n\nvar _map3 = _interopRequireDefault(_map2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar flattenNames = exports.flattenNames = function flattenNames() {\n var things = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var names = [];\n\n (0, _map3.default)(things, function (thing) {\n if (Array.isArray(thing)) {\n flattenNames(thing).map(function (name) {\n return names.push(name);\n });\n } else if ((0, _isPlainObject3.default)(thing)) {\n (0, _forOwn3.default)(thing, function (value, key) {\n value === true && names.push(key);\n names.push(key + '-' + value);\n });\n } else if ((0, _isString3.default)(thing)) {\n names.push(thing);\n }\n });\n\n return names;\n};\n\nexports.default = flattenNames;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mergeClasses = undefined;\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _cloneDeep2 = require('lodash/cloneDeep');\n\nvar _cloneDeep3 = _interopRequireDefault(_cloneDeep2);\n\nvar _extends = Object.assign || 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; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mergeClasses = exports.mergeClasses = function mergeClasses(classes) {\n var activeNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n var styles = classes.default && (0, _cloneDeep3.default)(classes.default) || {};\n activeNames.map(function (name) {\n var toMerge = classes[name];\n if (toMerge) {\n (0, _forOwn3.default)(toMerge, function (value, key) {\n if (!styles[key]) {\n styles[key] = {};\n }\n\n styles[key] = _extends({}, styles[key], toMerge[key]);\n });\n }\n\n return name;\n });\n return styles;\n};\n\nexports.default = mergeClasses;","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.autoprefix = undefined;\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _extends = Object.assign || 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; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar transforms = {\n borderRadius: function borderRadius(value) {\n return {\n msBorderRadius: value,\n MozBorderRadius: value,\n OBorderRadius: value,\n WebkitBorderRadius: value,\n borderRadius: value\n };\n },\n boxShadow: function boxShadow(value) {\n return {\n msBoxShadow: value,\n MozBoxShadow: value,\n OBoxShadow: value,\n WebkitBoxShadow: value,\n boxShadow: value\n };\n },\n userSelect: function userSelect(value) {\n return {\n WebkitTouchCallout: value,\n KhtmlUserSelect: value,\n MozUserSelect: value,\n msUserSelect: value,\n WebkitUserSelect: value,\n userSelect: value\n };\n },\n\n flex: function flex(value) {\n return {\n WebkitBoxFlex: value,\n MozBoxFlex: value,\n WebkitFlex: value,\n msFlex: value,\n flex: value\n };\n },\n flexBasis: function flexBasis(value) {\n return {\n WebkitFlexBasis: value,\n flexBasis: value\n };\n },\n justifyContent: function justifyContent(value) {\n return {\n WebkitJustifyContent: value,\n justifyContent: value\n };\n },\n\n transition: function transition(value) {\n return {\n msTransition: value,\n MozTransition: value,\n OTransition: value,\n WebkitTransition: value,\n transition: value\n };\n },\n\n transform: function transform(value) {\n return {\n msTransform: value,\n MozTransform: value,\n OTransform: value,\n WebkitTransform: value,\n transform: value\n };\n },\n absolute: function absolute(value) {\n var direction = value && value.split(' ');\n return {\n position: 'absolute',\n top: direction && direction[0],\n right: direction && direction[1],\n bottom: direction && direction[2],\n left: direction && direction[3]\n };\n },\n extend: function extend(name, otherElementStyles) {\n var otherStyle = otherElementStyles[name];\n if (otherStyle) {\n return otherStyle;\n }\n return {\n 'extend': name\n };\n }\n};\n\nvar autoprefix = exports.autoprefix = function autoprefix(elements) {\n var prefixed = {};\n (0, _forOwn3.default)(elements, function (styles, element) {\n var expanded = {};\n (0, _forOwn3.default)(styles, function (value, key) {\n var transform = transforms[key];\n if (transform) {\n expanded = _extends({}, expanded, transform(value));\n } else {\n expanded[key] = value;\n }\n });\n prefixed[element] = expanded;\n });\n return prefixed;\n};\n\nexports.default = autoprefix;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hover = undefined;\n\nvar _extends = Object.assign || 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; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar hover = exports.hover = function hover(Component) {\n var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n\n return function (_React$Component) {\n _inherits(Hover, _React$Component);\n\n function Hover() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Hover);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Hover.__proto__ || Object.getPrototypeOf(Hover)).call.apply(_ref, [this].concat(args))), _this), _this.state = { hover: false }, _this.handleMouseOver = function () {\n return _this.setState({ hover: true });\n }, _this.handleMouseOut = function () {\n return _this.setState({ hover: false });\n }, _this.render = function () {\n return _react2.default.createElement(\n Span,\n { onMouseOver: _this.handleMouseOver, onMouseOut: _this.handleMouseOut },\n _react2.default.createElement(Component, _extends({}, _this.props, _this.state))\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return Hover;\n }(_react2.default.Component);\n};\n\nexports.default = hover;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.active = undefined;\n\nvar _extends = Object.assign || 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; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar active = exports.active = function active(Component) {\n var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n\n return function (_React$Component) {\n _inherits(Active, _React$Component);\n\n function Active() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Active);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Active.__proto__ || Object.getPrototypeOf(Active)).call.apply(_ref, [this].concat(args))), _this), _this.state = { active: false }, _this.handleMouseDown = function () {\n return _this.setState({ active: true });\n }, _this.handleMouseUp = function () {\n return _this.setState({ active: false });\n }, _this.render = function () {\n return _react2.default.createElement(\n Span,\n { onMouseDown: _this.handleMouseDown, onMouseUp: _this.handleMouseUp },\n _react2.default.createElement(Component, _extends({}, _this.props, _this.state))\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return Active;\n }(_react2.default.Component);\n};\n\nexports.default = active;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar loopable = function loopable(i, length) {\n var props = {};\n var setProp = function setProp(name) {\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n props[name] = value;\n };\n\n i === 0 && setProp('first-child');\n i === length - 1 && setProp('last-child');\n (i === 0 || i % 2 === 0) && setProp('even');\n Math.abs(i % 2) === 1 && setProp('odd');\n setProp('nth-child', i);\n\n return props;\n};\n\nexports.default = loopable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _airbnbPropTypes = require('airbnb-prop-types');\n\nvar _consolidatedEvents = require('consolidated-events');\n\nvar _object = require('object.values');\n\nvar _object2 = _interopRequireDefault(_object);\n\nvar _document = require('document.contains');\n\nvar _document2 = _interopRequireDefault(_document);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DISPLAY = {\n BLOCK: 'block',\n FLEX: 'flex',\n INLINE: 'inline',\n INLINE_BLOCK: 'inline-block',\n CONTENTS: 'contents'\n};\n\nvar propTypes = (0, _airbnbPropTypes.forbidExtraProps)({\n children: _propTypes2['default'].node.isRequired,\n onOutsideClick: _propTypes2['default'].func.isRequired,\n disabled: _propTypes2['default'].bool,\n useCapture: _propTypes2['default'].bool,\n display: _propTypes2['default'].oneOf((0, _object2['default'])(DISPLAY))\n});\n\nvar defaultProps = {\n disabled: false,\n\n // `useCapture` is set to true by default so that a `stopPropagation` in the\n // children will not prevent all outside click handlers from firing - maja\n useCapture: true,\n display: DISPLAY.BLOCK\n};\n\nvar OutsideClickHandler = function (_React$Component) {\n _inherits(OutsideClickHandler, _React$Component);\n\n function OutsideClickHandler() {\n var _ref;\n\n _classCallCheck(this, OutsideClickHandler);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = _possibleConstructorReturn(this, (_ref = OutsideClickHandler.__proto__ || Object.getPrototypeOf(OutsideClickHandler)).call.apply(_ref, [this].concat(args)));\n\n _this.onMouseDown = _this.onMouseDown.bind(_this);\n _this.onMouseUp = _this.onMouseUp.bind(_this);\n _this.setChildNodeRef = _this.setChildNodeRef.bind(_this);\n return _this;\n }\n\n _createClass(OutsideClickHandler, [{\n key: 'componentDidMount',\n value: function () {\n function componentDidMount() {\n var _props = this.props,\n disabled = _props.disabled,\n useCapture = _props.useCapture;\n\n\n if (!disabled) this.addMouseDownEventListener(useCapture);\n }\n\n return componentDidMount;\n }()\n }, {\n key: 'componentDidUpdate',\n value: function () {\n function componentDidUpdate(_ref2) {\n var prevDisabled = _ref2.disabled;\n var _props2 = this.props,\n disabled = _props2.disabled,\n useCapture = _props2.useCapture;\n\n if (prevDisabled !== disabled) {\n if (disabled) {\n this.removeEventListeners();\n } else {\n this.addMouseDownEventListener(useCapture);\n }\n }\n }\n\n return componentDidUpdate;\n }()\n }, {\n key: 'componentWillUnmount',\n value: function () {\n function componentWillUnmount() {\n this.removeEventListeners();\n }\n\n return componentWillUnmount;\n }()\n\n // Use mousedown/mouseup to enforce that clicks remain outside the root's\n // descendant tree, even when dragged. This should also get triggered on\n // touch devices.\n\n }, {\n key: 'onMouseDown',\n value: function () {\n function onMouseDown(e) {\n var useCapture = this.props.useCapture;\n\n\n var isDescendantOfRoot = this.childNode && (0, _document2['default'])(this.childNode, e.target);\n if (!isDescendantOfRoot) {\n if (this.removeMouseUp) {\n this.removeMouseUp();\n this.removeMouseUp = null;\n }\n this.removeMouseUp = (0, _consolidatedEvents.addEventListener)(document, 'mouseup', this.onMouseUp, { capture: useCapture });\n }\n }\n\n return onMouseDown;\n }()\n\n // Use mousedown/mouseup to enforce that clicks remain outside the root's\n // descendant tree, even when dragged. This should also get triggered on\n // touch devices.\n\n }, {\n key: 'onMouseUp',\n value: function () {\n function onMouseUp(e) {\n var onOutsideClick = this.props.onOutsideClick;\n\n\n var isDescendantOfRoot = this.childNode && (0, _document2['default'])(this.childNode, e.target);\n if (this.removeMouseUp) {\n this.removeMouseUp();\n this.removeMouseUp = null;\n }\n\n if (!isDescendantOfRoot) {\n onOutsideClick(e);\n }\n }\n\n return onMouseUp;\n }()\n }, {\n key: 'setChildNodeRef',\n value: function () {\n function setChildNodeRef(ref) {\n this.childNode = ref;\n }\n\n return setChildNodeRef;\n }()\n }, {\n key: 'addMouseDownEventListener',\n value: function () {\n function addMouseDownEventListener(useCapture) {\n this.removeMouseDown = (0, _consolidatedEvents.addEventListener)(document, 'mousedown', this.onMouseDown, { capture: useCapture });\n }\n\n return addMouseDownEventListener;\n }()\n }, {\n key: 'removeEventListeners',\n value: function () {\n function removeEventListeners() {\n if (this.removeMouseDown) this.removeMouseDown();\n if (this.removeMouseUp) this.removeMouseUp();\n }\n\n return removeEventListeners;\n }()\n }, {\n key: 'render',\n value: function () {\n function render() {\n var _props3 = this.props,\n children = _props3.children,\n display = _props3.display;\n\n\n return _react2['default'].createElement(\n 'div',\n {\n ref: this.setChildNodeRef,\n style: display !== DISPLAY.BLOCK && (0, _object2['default'])(DISPLAY).includes(display) ? { display: display } : undefined\n },\n children\n );\n }\n\n return render;\n }()\n }]);\n\n return OutsideClickHandler;\n}(_react2['default'].Component);\n\nexports['default'] = OutsideClickHandler;\n\n\nOutsideClickHandler.propTypes = propTypes;\nOutsideClickHandler.defaultProps = defaultProps;","\"use strict\";\n\nfunction noop() {\n return null;\n}\n\nnoop.isRequired = noop;\n\nfunction noopThunk() {\n return noop;\n}\n\nmodule.exports = {\n and: noopThunk,\n between: noopThunk,\n booleanSome: noopThunk,\n childrenHavePropXorChildren: noopThunk,\n childrenOf: noopThunk,\n childrenOfType: noopThunk,\n childrenSequenceOf: noopThunk,\n componentWithName: noopThunk,\n disallowedIf: noopThunk,\n elementType: noopThunk,\n empty: noopThunk,\n explicitNull: noopThunk,\n forbidExtraProps: Object,\n integer: noopThunk,\n keysOf: noopThunk,\n mutuallyExclusiveProps: noopThunk,\n mutuallyExclusiveTrueProps: noopThunk,\n nChildren: noopThunk,\n nonNegativeInteger: noop,\n nonNegativeNumber: noopThunk,\n numericString: noopThunk,\n object: noopThunk,\n or: noopThunk,\n predicate: noopThunk,\n range: noopThunk,\n ref: noopThunk,\n requiredBy: noopThunk,\n restrictedProp: noopThunk,\n sequenceOf: noopThunk,\n shape: noopThunk,\n stringEndsWith: noopThunk,\n stringStartsWith: noopThunk,\n uniqueArray: noopThunk,\n uniqueArrayOf: noopThunk,\n valuesOf: noopThunk,\n withShape: noopThunk\n};\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nmodule.exports = require('../5/CheckObjectCoercible');\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// http://262.ecma-international.org/5.1/#sec-9.10\n\nmodule.exports = function CheckObjectCoercible(value, optMessage) {\n\tif (value == null) {\n\t\tthrow new $TypeError(optMessage || ('Cannot call method on ' + value));\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimValues() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { values: polyfill }, {\n\t\tvalues: function testValues() {\n\t\t\treturn Object.values !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimContains() {\n\tvar polyfill = getPolyfill();\n\tif (typeof document !== 'undefined') {\n\t\tdefine(\n\t\t\tdocument,\n\t\t\t{ contains: polyfill },\n\t\t\t{ contains: function () { return document.contains !== polyfill; } }\n\t\t);\n\t\tif (typeof Element !== 'undefined') {\n\t\t\tdefine(\n\t\t\t\tElement.prototype,\n\t\t\t\t{ contains: polyfill },\n\t\t\t\t{ contains: function () { return Element.prototype.contains !== polyfill; } }\n\t\t\t);\n\t\t}\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Alpha = undefined;\n\nvar _extends = Object.assign || 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; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _alpha = require('../../helpers/alpha');\n\nvar alpha = _interopRequireWildcard(_alpha);\n\nvar _Checkboard = require('./Checkboard');\n\nvar _Checkboard2 = _interopRequireDefault(_Checkboard);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Alpha = exports.Alpha = function (_ref) {\n _inherits(Alpha, _ref);\n\n function Alpha() {\n var _ref2;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Alpha);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Alpha.__proto__ || Object.getPrototypeOf(Alpha)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n var change = alpha.calculateChange(e, _this.props.hsl, _this.props.direction, _this.props.a, _this.container);\n change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n }, _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n window.addEventListener('mousemove', _this.handleChange);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n }, _this.unbindEventListeners = function () {\n window.removeEventListener('mousemove', _this.handleChange);\n window.removeEventListener('mouseup', _this.handleMouseUp);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Alpha, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var rgb = this.props.rgb;\n var styles = (0, _reactcss2.default)({\n 'default': {\n alpha: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius\n },\n checkboard: {\n absolute: '0px 0px 0px 0px',\n overflow: 'hidden',\n borderRadius: this.props.radius\n },\n gradient: {\n absolute: '0px 0px 0px 0px',\n background: 'linear-gradient(to right, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)',\n boxShadow: this.props.shadow,\n borderRadius: this.props.radius\n },\n container: {\n position: 'relative',\n height: '100%',\n margin: '0 3px'\n },\n pointer: {\n position: 'absolute',\n left: rgb.a * 100 + '%'\n },\n slider: {\n width: '4px',\n borderRadius: '1px',\n height: '8px',\n boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n background: '#fff',\n marginTop: '1px',\n transform: 'translateX(-2px)'\n }\n },\n 'vertical': {\n gradient: {\n background: 'linear-gradient(to bottom, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)'\n },\n pointer: {\n left: 0,\n top: rgb.a * 100 + '%'\n }\n },\n 'overwrite': _extends({}, this.props.style)\n }, {\n vertical: this.props.direction === 'vertical',\n overwrite: true\n });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.alpha },\n _react2.default.createElement(\n 'div',\n { style: styles.checkboard },\n _react2.default.createElement(_Checkboard2.default, { renderers: this.props.renderers })\n ),\n _react2.default.createElement('div', { style: styles.gradient }),\n _react2.default.createElement(\n 'div',\n {\n style: styles.container,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n _react2.default.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.slider })\n )\n )\n );\n }\n }]);\n\n return Alpha;\n}(_react.PureComponent || _react.Component);\n\nexports.default = Alpha;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar calculateChange = exports.calculateChange = function calculateChange(e, hsl, direction, initialA, container) {\n var containerWidth = container.clientWidth;\n var containerHeight = container.clientHeight;\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (direction === 'vertical') {\n var a = void 0;\n if (top < 0) {\n a = 0;\n } else if (top > containerHeight) {\n a = 1;\n } else {\n a = Math.round(top * 100 / containerHeight) / 100;\n }\n\n if (hsl.a !== a) {\n return {\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: a,\n source: 'rgb'\n };\n }\n } else {\n var _a = void 0;\n if (left < 0) {\n _a = 0;\n } else if (left > containerWidth) {\n _a = 1;\n } else {\n _a = Math.round(left * 100 / containerWidth) / 100;\n }\n\n if (initialA !== _a) {\n return {\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: _a,\n source: 'rgb'\n };\n }\n }\n return null;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar checkboardCache = {};\n\nvar render = exports.render = function render(c1, c2, size, serverCanvas) {\n if (typeof document === 'undefined' && !serverCanvas) {\n return null;\n }\n var canvas = serverCanvas ? new serverCanvas() : document.createElement('canvas');\n canvas.width = size * 2;\n canvas.height = size * 2;\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n return null;\n } // If no context can be found, return early.\n ctx.fillStyle = c1;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n ctx.fillStyle = c2;\n ctx.fillRect(0, 0, size, size);\n ctx.translate(size, size);\n ctx.fillRect(0, 0, size, size);\n return canvas.toDataURL();\n};\n\nvar get = exports.get = function get(c1, c2, size, serverCanvas) {\n var key = c1 + '-' + c2 + '-' + size + (serverCanvas ? '-server' : '');\n\n if (checkboardCache[key]) {\n return checkboardCache[key];\n }\n\n var checkboard = render(c1, c2, size, serverCanvas);\n checkboardCache[key] = checkboard;\n return checkboard;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EditableInput = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DEFAULT_ARROW_OFFSET = 1;\n\nvar UP_KEY_CODE = 38;\nvar DOWN_KEY_CODE = 40;\nvar VALID_KEY_CODES = [UP_KEY_CODE, DOWN_KEY_CODE];\nvar isValidKeyCode = function isValidKeyCode(keyCode) {\n return VALID_KEY_CODES.indexOf(keyCode) > -1;\n};\nvar getNumberValue = function getNumberValue(value) {\n return Number(String(value).replace(/%/g, ''));\n};\n\nvar idCounter = 1;\n\nvar EditableInput = exports.EditableInput = function (_ref) {\n _inherits(EditableInput, _ref);\n\n function EditableInput(props) {\n _classCallCheck(this, EditableInput);\n\n var _this = _possibleConstructorReturn(this, (EditableInput.__proto__ || Object.getPrototypeOf(EditableInput)).call(this));\n\n _this.handleBlur = function () {\n if (_this.state.blurValue) {\n _this.setState({ value: _this.state.blurValue, blurValue: null });\n }\n };\n\n _this.handleChange = function (e) {\n _this.setUpdatedValue(e.target.value, e);\n };\n\n _this.handleKeyDown = function (e) {\n // In case `e.target.value` is a percentage remove the `%` character\n // and update accordingly with a percentage\n // https://github.com/casesandberg/react-color/issues/383\n var value = getNumberValue(e.target.value);\n if (!isNaN(value) && isValidKeyCode(e.keyCode)) {\n var offset = _this.getArrowOffset();\n var updatedValue = e.keyCode === UP_KEY_CODE ? value + offset : value - offset;\n\n _this.setUpdatedValue(updatedValue, e);\n }\n };\n\n _this.handleDrag = function (e) {\n if (_this.props.dragLabel) {\n var newValue = Math.round(_this.props.value + e.movementX);\n if (newValue >= 0 && newValue <= _this.props.dragMax) {\n _this.props.onChange && _this.props.onChange(_this.getValueObjectWithLabel(newValue), e);\n }\n }\n };\n\n _this.handleMouseDown = function (e) {\n if (_this.props.dragLabel) {\n e.preventDefault();\n _this.handleDrag(e);\n window.addEventListener('mousemove', _this.handleDrag);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }\n };\n\n _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n };\n\n _this.unbindEventListeners = function () {\n window.removeEventListener('mousemove', _this.handleDrag);\n window.removeEventListener('mouseup', _this.handleMouseUp);\n };\n\n _this.state = {\n value: String(props.value).toUpperCase(),\n blurValue: String(props.value).toUpperCase()\n };\n\n _this.inputId = 'rc-editable-input-' + idCounter++;\n return _this;\n }\n\n _createClass(EditableInput, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n if (this.props.value !== this.state.value && (prevProps.value !== this.props.value || prevState.value !== this.state.value)) {\n if (this.input === document.activeElement) {\n this.setState({ blurValue: String(this.props.value).toUpperCase() });\n } else {\n this.setState({ value: String(this.props.value).toUpperCase(), blurValue: !this.state.blurValue && String(this.props.value).toUpperCase() });\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'getValueObjectWithLabel',\n value: function getValueObjectWithLabel(value) {\n return _defineProperty({}, this.props.label, value);\n }\n }, {\n key: 'getArrowOffset',\n value: function getArrowOffset() {\n return this.props.arrowOffset || DEFAULT_ARROW_OFFSET;\n }\n }, {\n key: 'setUpdatedValue',\n value: function setUpdatedValue(value, e) {\n var onChangeValue = this.props.label ? this.getValueObjectWithLabel(value) : value;\n this.props.onChange && this.props.onChange(onChangeValue, e);\n\n this.setState({ value: value });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n wrap: {\n position: 'relative'\n }\n },\n 'user-override': {\n wrap: this.props.style && this.props.style.wrap ? this.props.style.wrap : {},\n input: this.props.style && this.props.style.input ? this.props.style.input : {},\n label: this.props.style && this.props.style.label ? this.props.style.label : {}\n },\n 'dragLabel-true': {\n label: {\n cursor: 'ew-resize'\n }\n }\n }, {\n 'user-override': true\n }, this.props);\n\n return _react2.default.createElement(\n 'div',\n { style: styles.wrap },\n _react2.default.createElement('input', {\n id: this.inputId,\n style: styles.input,\n ref: function ref(input) {\n return _this2.input = input;\n },\n value: this.state.value,\n onKeyDown: this.handleKeyDown,\n onChange: this.handleChange,\n onBlur: this.handleBlur,\n placeholder: this.props.placeholder,\n spellCheck: 'false'\n }),\n this.props.label && !this.props.hideLabel ? _react2.default.createElement(\n 'label',\n {\n htmlFor: this.inputId,\n style: styles.label,\n onMouseDown: this.handleMouseDown\n },\n this.props.label\n ) : null\n );\n }\n }]);\n\n return EditableInput;\n}(_react.PureComponent || _react.Component);\n\nexports.default = EditableInput;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Hue = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _hue = require('../../helpers/hue');\n\nvar hue = _interopRequireWildcard(_hue);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Hue = exports.Hue = function (_ref) {\n _inherits(Hue, _ref);\n\n function Hue() {\n var _ref2;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Hue);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Hue.__proto__ || Object.getPrototypeOf(Hue)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n var change = hue.calculateChange(e, _this.props.direction, _this.props.hsl, _this.container);\n change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n }, _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n window.addEventListener('mousemove', _this.handleChange);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Hue, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'unbindEventListeners',\n value: function unbindEventListeners() {\n window.removeEventListener('mousemove', this.handleChange);\n window.removeEventListener('mouseup', this.handleMouseUp);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props$direction = this.props.direction,\n direction = _props$direction === undefined ? 'horizontal' : _props$direction;\n\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n hue: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius,\n boxShadow: this.props.shadow\n },\n container: {\n padding: '0 2px',\n position: 'relative',\n height: '100%',\n borderRadius: this.props.radius\n },\n pointer: {\n position: 'absolute',\n left: this.props.hsl.h * 100 / 360 + '%'\n },\n slider: {\n marginTop: '1px',\n width: '4px',\n borderRadius: '1px',\n height: '8px',\n boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n background: '#fff',\n transform: 'translateX(-2px)'\n }\n },\n 'vertical': {\n pointer: {\n left: '0px',\n top: -(this.props.hsl.h * 100 / 360) + 100 + '%'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.hue },\n _react2.default.createElement(\n 'div',\n {\n className: 'hue-' + direction,\n style: styles.container,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n _react2.default.createElement(\n 'style',\n null,\n '\\n .hue-horizontal {\\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0\\n 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n background: -webkit-linear-gradient(to right, #f00 0%, #ff0\\n 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n }\\n\\n .hue-vertical {\\n background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%,\\n #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%,\\n #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n }\\n '\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.slider })\n )\n )\n );\n }\n }]);\n\n return Hue;\n}(_react.PureComponent || _react.Component);\n\nexports.default = Hue;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar calculateChange = exports.calculateChange = function calculateChange(e, direction, hsl, container) {\n var containerWidth = container.clientWidth;\n var containerHeight = container.clientHeight;\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (direction === 'vertical') {\n var h = void 0;\n if (top < 0) {\n h = 359;\n } else if (top > containerHeight) {\n h = 0;\n } else {\n var percent = -(top * 100 / containerHeight) + 100;\n h = 360 * percent / 100;\n }\n\n if (hsl.h !== h) {\n return {\n h: h,\n s: hsl.s,\n l: hsl.l,\n a: hsl.a,\n source: 'hsl'\n };\n }\n } else {\n var _h = void 0;\n if (left < 0) {\n _h = 0;\n } else if (left > containerWidth) {\n _h = 359;\n } else {\n var _percent = left * 100 / containerWidth;\n _h = 360 * _percent / 100;\n }\n\n if (hsl.h !== _h) {\n return {\n h: _h,\n s: hsl.s,\n l: hsl.l,\n a: hsl.a,\n source: 'hsl'\n };\n }\n }\n return null;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Raised = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Raised = exports.Raised = function Raised(_ref) {\n var zDepth = _ref.zDepth,\n radius = _ref.radius,\n background = _ref.background,\n children = _ref.children,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n wrap: {\n position: 'relative',\n display: 'inline-block'\n },\n content: {\n position: 'relative'\n },\n bg: {\n absolute: '0px 0px 0px 0px',\n boxShadow: '0 ' + zDepth + 'px ' + zDepth * 4 + 'px rgba(0,0,0,.24)',\n borderRadius: radius,\n background: background\n }\n },\n 'zDepth-0': {\n bg: {\n boxShadow: 'none'\n }\n },\n\n 'zDepth-1': {\n bg: {\n boxShadow: '0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16)'\n }\n },\n 'zDepth-2': {\n bg: {\n boxShadow: '0 6px 20px rgba(0,0,0,.19), 0 8px 17px rgba(0,0,0,.2)'\n }\n },\n 'zDepth-3': {\n bg: {\n boxShadow: '0 17px 50px rgba(0,0,0,.19), 0 12px 15px rgba(0,0,0,.24)'\n }\n },\n 'zDepth-4': {\n bg: {\n boxShadow: '0 25px 55px rgba(0,0,0,.21), 0 16px 28px rgba(0,0,0,.22)'\n }\n },\n 'zDepth-5': {\n bg: {\n boxShadow: '0 40px 77px rgba(0,0,0,.22), 0 27px 24px rgba(0,0,0,.2)'\n }\n },\n 'square': {\n bg: {\n borderRadius: '0'\n }\n },\n 'circle': {\n bg: {\n borderRadius: '50%'\n }\n }\n }, passedStyles), { 'zDepth-1': zDepth === 1 });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.wrap },\n _react2.default.createElement('div', { style: styles.bg }),\n _react2.default.createElement(\n 'div',\n { style: styles.content },\n children\n )\n );\n};\n\nRaised.propTypes = {\n background: _propTypes2.default.string,\n zDepth: _propTypes2.default.oneOf([0, 1, 2, 3, 4, 5]),\n radius: _propTypes2.default.number,\n styles: _propTypes2.default.object\n};\n\nRaised.defaultProps = {\n background: '#fff',\n zDepth: 1,\n radius: 2,\n styles: {}\n};\n\nexports.default = Raised;","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Saturation = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _throttle = require('lodash/throttle');\n\nvar _throttle2 = _interopRequireDefault(_throttle);\n\nvar _saturation = require('../../helpers/saturation');\n\nvar saturation = _interopRequireWildcard(_saturation);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Saturation = exports.Saturation = function (_ref) {\n _inherits(Saturation, _ref);\n\n function Saturation(props) {\n _classCallCheck(this, Saturation);\n\n var _this = _possibleConstructorReturn(this, (Saturation.__proto__ || Object.getPrototypeOf(Saturation)).call(this, props));\n\n _this.handleChange = function (e) {\n typeof _this.props.onChange === 'function' && _this.throttle(_this.props.onChange, saturation.calculateChange(e, _this.props.hsl, _this.container), e);\n };\n\n _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n var renderWindow = _this.getContainerRenderWindow();\n renderWindow.addEventListener('mousemove', _this.handleChange);\n renderWindow.addEventListener('mouseup', _this.handleMouseUp);\n };\n\n _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n };\n\n _this.throttle = (0, _throttle2.default)(function (fn, data, e) {\n fn(data, e);\n }, 50);\n return _this;\n }\n\n _createClass(Saturation, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.throttle.cancel();\n this.unbindEventListeners();\n }\n }, {\n key: 'getContainerRenderWindow',\n value: function getContainerRenderWindow() {\n var container = this.container;\n\n var renderWindow = window;\n while (!renderWindow.document.contains(container) && renderWindow.parent !== renderWindow) {\n renderWindow = renderWindow.parent;\n }\n return renderWindow;\n }\n }, {\n key: 'unbindEventListeners',\n value: function unbindEventListeners() {\n var renderWindow = this.getContainerRenderWindow();\n renderWindow.removeEventListener('mousemove', this.handleChange);\n renderWindow.removeEventListener('mouseup', this.handleMouseUp);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _ref2 = this.props.style || {},\n color = _ref2.color,\n white = _ref2.white,\n black = _ref2.black,\n pointer = _ref2.pointer,\n circle = _ref2.circle;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n color: {\n absolute: '0px 0px 0px 0px',\n background: 'hsl(' + this.props.hsl.h + ',100%, 50%)',\n borderRadius: this.props.radius\n },\n white: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius\n },\n black: {\n absolute: '0px 0px 0px 0px',\n boxShadow: this.props.shadow,\n borderRadius: this.props.radius\n },\n pointer: {\n position: 'absolute',\n top: -(this.props.hsv.v * 100) + 100 + '%',\n left: this.props.hsv.s * 100 + '%',\n cursor: 'default'\n },\n circle: {\n width: '4px',\n height: '4px',\n boxShadow: '0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3),\\n 0 0 1px 2px rgba(0,0,0,.4)',\n borderRadius: '50%',\n cursor: 'hand',\n transform: 'translate(-2px, -2px)'\n }\n },\n 'custom': {\n color: color,\n white: white,\n black: black,\n pointer: pointer,\n circle: circle\n }\n }, { 'custom': !!this.props.style });\n\n return _react2.default.createElement(\n 'div',\n {\n style: styles.color,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n _react2.default.createElement(\n 'style',\n null,\n '\\n .saturation-white {\\n background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));\\n background: linear-gradient(to right, #fff, rgba(255,255,255,0));\\n }\\n .saturation-black {\\n background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));\\n background: linear-gradient(to top, #000, rgba(0,0,0,0));\\n }\\n '\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.white, className: 'saturation-white' },\n _react2.default.createElement('div', { style: styles.black, className: 'saturation-black' }),\n _react2.default.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.circle })\n )\n )\n );\n }\n }]);\n\n return Saturation;\n}(_react.PureComponent || _react.Component);\n\nexports.default = Saturation;","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar calculateChange = exports.calculateChange = function calculateChange(e, hsl, container) {\n var _container$getBoundin = container.getBoundingClientRect(),\n containerWidth = _container$getBoundin.width,\n containerHeight = _container$getBoundin.height;\n\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (left < 0) {\n left = 0;\n } else if (left > containerWidth) {\n left = containerWidth;\n }\n\n if (top < 0) {\n top = 0;\n } else if (top > containerHeight) {\n top = containerHeight;\n }\n\n var saturation = left / containerWidth;\n var bright = 1 - top / containerHeight;\n\n return {\n h: hsl.h,\n s: saturation,\n v: bright,\n a: hsl.a,\n source: 'hsv'\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorWrap = undefined;\n\nvar _extends = Object.assign || 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; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _debounce = require('lodash/debounce');\n\nvar _debounce2 = _interopRequireDefault(_debounce);\n\nvar _color = require('../../helpers/color');\n\nvar color = _interopRequireWildcard(_color);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorWrap = exports.ColorWrap = function ColorWrap(Picker) {\n var ColorPicker = function (_ref) {\n _inherits(ColorPicker, _ref);\n\n function ColorPicker(props) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this));\n\n _this.handleChange = function (data, event) {\n var isValidColor = color.simpleCheckForValidColor(data);\n if (isValidColor) {\n var colors = color.toState(data, data.h || _this.state.oldHue);\n _this.setState(colors);\n _this.props.onChangeComplete && _this.debounce(_this.props.onChangeComplete, colors, event);\n _this.props.onChange && _this.props.onChange(colors, event);\n }\n };\n\n _this.handleSwatchHover = function (data, event) {\n var isValidColor = color.simpleCheckForValidColor(data);\n if (isValidColor) {\n var colors = color.toState(data, data.h || _this.state.oldHue);\n _this.props.onSwatchHover && _this.props.onSwatchHover(colors, event);\n }\n };\n\n _this.state = _extends({}, color.toState(props.color, 0));\n\n _this.debounce = (0, _debounce2.default)(function (fn, data, event) {\n fn(data, event);\n }, 100);\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'render',\n value: function render() {\n var optionalEvents = {};\n if (this.props.onSwatchHover) {\n optionalEvents.onSwatchHover = this.handleSwatchHover;\n }\n\n return _react2.default.createElement(Picker, _extends({}, this.props, this.state, {\n onChange: this.handleChange\n }, optionalEvents));\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, state) {\n return _extends({}, color.toState(nextProps.color, state.oldHue));\n }\n }]);\n\n return ColorPicker;\n }(_react.PureComponent || _react.Component);\n\n ColorPicker.propTypes = _extends({}, Picker.propTypes);\n\n ColorPicker.defaultProps = _extends({}, Picker.defaultProps, {\n color: {\n h: 250,\n s: 0.50,\n l: 0.20,\n a: 1\n }\n });\n\n return ColorPicker;\n};\n\nexports.default = ColorWrap;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isvalidColorString = exports.red = exports.getContrastingColor = exports.isValidHex = exports.toState = exports.simpleCheckForValidColor = undefined;\n\nvar _each = require('lodash/each');\n\nvar _each2 = _interopRequireDefault(_each);\n\nvar _tinycolor = require('tinycolor2');\n\nvar _tinycolor2 = _interopRequireDefault(_tinycolor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar simpleCheckForValidColor = exports.simpleCheckForValidColor = function simpleCheckForValidColor(data) {\n var keysToCheck = ['r', 'g', 'b', 'a', 'h', 's', 'l', 'v'];\n var checked = 0;\n var passed = 0;\n (0, _each2.default)(keysToCheck, function (letter) {\n if (data[letter]) {\n checked += 1;\n if (!isNaN(data[letter])) {\n passed += 1;\n }\n if (letter === 's' || letter === 'l') {\n var percentPatt = /^\\d+%$/;\n if (percentPatt.test(data[letter])) {\n passed += 1;\n }\n }\n }\n });\n return checked === passed ? data : false;\n};\n\nvar toState = exports.toState = function toState(data, oldHue) {\n var color = data.hex ? (0, _tinycolor2.default)(data.hex) : (0, _tinycolor2.default)(data);\n var hsl = color.toHsl();\n var hsv = color.toHsv();\n var rgb = color.toRgb();\n var hex = color.toHex();\n if (hsl.s === 0) {\n hsl.h = oldHue || 0;\n hsv.h = oldHue || 0;\n }\n var transparent = hex === '000000' && rgb.a === 0;\n\n return {\n hsl: hsl,\n hex: transparent ? 'transparent' : '#' + hex,\n rgb: rgb,\n hsv: hsv,\n oldHue: data.h || oldHue || hsl.h,\n source: data.source\n };\n};\n\nvar isValidHex = exports.isValidHex = function isValidHex(hex) {\n if (hex === 'transparent') {\n return true;\n }\n // disable hex4 and hex8\n var lh = String(hex).charAt(0) === '#' ? 1 : 0;\n return hex.length !== 4 + lh && hex.length < 7 + lh && (0, _tinycolor2.default)(hex).isValid();\n};\n\nvar getContrastingColor = exports.getContrastingColor = function getContrastingColor(data) {\n if (!data) {\n return '#fff';\n }\n var col = toState(data);\n if (col.hex === 'transparent') {\n return 'rgba(0,0,0,0.4)';\n }\n var yiq = (col.rgb.r * 299 + col.rgb.g * 587 + col.rgb.b * 114) / 1000;\n return yiq >= 128 ? '#000' : '#fff';\n};\n\nvar red = exports.red = {\n hsl: { a: 1, h: 0, l: 0.5, s: 1 },\n hex: '#ff0000',\n rgb: { r: 255, g: 0, b: 0, a: 1 },\n hsv: { h: 0, s: 1, v: 1, a: 1 }\n};\n\nvar isvalidColorString = exports.isvalidColorString = function isvalidColorString(string, type) {\n var stringWithoutDegree = string.replace('°', '');\n return (0, _tinycolor2.default)(type + ' (' + stringWithoutDegree + ')')._ok;\n};","module.exports = require('./forEach');\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Swatch = undefined;\n\nvar _extends = Object.assign || 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; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _interaction = require('../../helpers/interaction');\n\nvar _Checkboard = require('./Checkboard');\n\nvar _Checkboard2 = _interopRequireDefault(_Checkboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ENTER = 13;\n\nvar Swatch = exports.Swatch = function Swatch(_ref) {\n var color = _ref.color,\n style = _ref.style,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onHover = _ref.onHover,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? color : _ref$title,\n children = _ref.children,\n focus = _ref.focus,\n _ref$focusStyle = _ref.focusStyle,\n focusStyle = _ref$focusStyle === undefined ? {} : _ref$focusStyle;\n\n var transparent = color === 'transparent';\n var styles = (0, _reactcss2.default)({\n default: {\n swatch: _extends({\n background: color,\n height: '100%',\n width: '100%',\n cursor: 'pointer',\n position: 'relative',\n outline: 'none'\n }, style, focus ? focusStyle : {})\n }\n });\n\n var handleClick = function handleClick(e) {\n return onClick(color, e);\n };\n var handleKeyDown = function handleKeyDown(e) {\n return e.keyCode === ENTER && onClick(color, e);\n };\n var handleHover = function handleHover(e) {\n return onHover(color, e);\n };\n\n var optionalEvents = {};\n if (onHover) {\n optionalEvents.onMouseOver = handleHover;\n }\n\n return _react2.default.createElement(\n 'div',\n _extends({\n style: styles.swatch,\n onClick: handleClick,\n title: title,\n tabIndex: 0,\n onKeyDown: handleKeyDown\n }, optionalEvents),\n children,\n transparent && _react2.default.createElement(_Checkboard2.default, {\n borderRadius: styles.swatch.borderRadius,\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,0.1)'\n })\n );\n};\n\nexports.default = (0, _interaction.handleFocus)(Swatch);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.handleFocus = undefined;\n\nvar _extends = Object.assign || 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; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable no-invalid-this */\n\n\nvar handleFocus = exports.handleFocus = function handleFocus(Component) {\n var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n return function (_React$Component) {\n _inherits(Focus, _React$Component);\n\n function Focus() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Focus);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Focus.__proto__ || Object.getPrototypeOf(Focus)).call.apply(_ref, [this].concat(args))), _this), _this.state = { focus: false }, _this.handleFocus = function () {\n return _this.setState({ focus: true });\n }, _this.handleBlur = function () {\n return _this.setState({ focus: false });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Focus, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n Span,\n { onFocus: this.handleFocus, onBlur: this.handleBlur },\n _react2.default.createElement(Component, _extends({}, this.props, this.state))\n );\n }\n }]);\n\n return Focus;\n }(_react2.default.Component);\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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\n ;\n }\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// extracted by mini-css-extract-plugin\nexport default {\"splitContainer\":\"style-module_m8sRe\",\"split\":\"style-module_1hv7R\",\"leftArrow\":\"style-module_-kKIg\",\"rightArrow\":\"style-module_3Wo1u\",\"shadow\":\"style-module_2gMeY\",\"blink\":\"style-module_3snxB\",\"commonSkeletonAnimation\":\"style-module_1vZ5P\"};","import cl from 'classnames';\nimport { useEffect, useMemo, useRef } from 'react';\nimport { Pixel } from '_data/types/base';\nimport style from './style.module.styl';\n\ninterface IProps {\n position: Pixel;\n color: '#fff' | '#3A3B3D';\n isTransparent?: boolean;\n onPress(): void;\n onRelease(): void;\n onMove(position: Pixel): void;\n onMount(width: Pixel): void;\n}\n\nconst CompareSplit = ({ position, color, onPress, onMove, onRelease, onMount, isTransparent }: IProps) => {\n const splitRef = useRef(null);\n const touchActiveRef = useRef(false);\n\n const pointerEvents = useMemo(() => {\n const handlePointerRelease = (event: React.PointerEvent) => {\n if (!splitRef.current || touchActiveRef.current) return;\n\n splitRef.current.releasePointerCapture(event.pointerId);\n onRelease();\n };\n\n return {\n onPointerDown: event => {\n if (!splitRef.current || touchActiveRef.current) return;\n\n splitRef.current.setPointerCapture(event.pointerId);\n onPress();\n },\n onPointerMove: event => {\n if (touchActiveRef.current || !splitRef.current) return;\n\n onMove(event.clientX);\n },\n onPointerUp: handlePointerRelease,\n onPointerCancel: handlePointerRelease,\n };\n }, [onMove, onPress, onRelease]);\n\n const touchEvents = useMemo(\n () => ({\n onTouchStartCapture: () => {\n touchActiveRef.current = true;\n },\n onTouchStart: event => {\n if (event.touches.length > 1) return;\n\n onPress();\n },\n onTouchMove: event => {\n if (!splitRef.current) return;\n\n onMove(event.touches[0].clientX);\n },\n onTouchEnd: () => {\n onRelease();\n },\n }),\n [onMove, onPress, onRelease]\n );\n\n useEffect(() => {\n if (!splitRef.current) return;\n\n onMount(splitRef.current.clientWidth);\n }, [onMount]);\n\n return (\n \n \n \n \n \n \n \n \n
\n \n );\n};\n\nexport default CompareSplit;\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"style-module_3mGDU\",\"transparent\":\"style-module_211g5\",\"header\":\"style-module_2o27y\",\"firstHeader\":\"style-module_2yMoB\",\"secondHeader\":\"style-module_2d0QK\",\"secondHeaderWithLoader\":\"style-module_1yvjk\",\"blink\":\"style-module_2GwPO\",\"commonSkeletonAnimation\":\"style-module_3pMGc\"};","import cl from 'classnames';\nimport FadeOutWrapper from '_components/shared/FadeOutWrapper';\nimport style from './style.module.styl';\n\ninterface IProps {\n color: '#fff' | '#3A3B3D';\n isTransparent?: boolean;\n firstObjectHeader: string;\n secondObjectHeader: string;\n secondHeaderWithLoader: boolean;\n hidden: boolean;\n}\n\nconst CompareHeaders = ({\n color,\n isTransparent,\n secondHeaderWithLoader,\n firstObjectHeader,\n secondObjectHeader,\n hidden,\n}: IProps) => (\n \n);\n\nexport default CompareHeaders;\n","import { useCallback, useState } from 'react';\nimport { getCookie, setCookie } from '_helpers/methods';\n\ntype IUpdateCookie = (value: string, options?: Record) => void;\n\nexport const useCookie = (key: string): [cookieValue: string | undefined, updateCookie: IUpdateCookie] => {\n const [cookieValue, setCookieValue] = useState(() => getCookie(key));\n\n const updateCookie: IUpdateCookie = useCallback(\n (value: string, options?: Object) => {\n setCookieValue(value);\n setCookie(key, value, options);\n },\n [key]\n );\n\n return [cookieValue, updateCookie];\n};\n","/* eslint-disable promise/prefer-await-to-then */\n\nconst methodMap = [\n\t[\n\t\t'requestFullscreen',\n\t\t'exitFullscreen',\n\t\t'fullscreenElement',\n\t\t'fullscreenEnabled',\n\t\t'fullscreenchange',\n\t\t'fullscreenerror',\n\t],\n\t// New WebKit\n\t[\n\t\t'webkitRequestFullscreen',\n\t\t'webkitExitFullscreen',\n\t\t'webkitFullscreenElement',\n\t\t'webkitFullscreenEnabled',\n\t\t'webkitfullscreenchange',\n\t\t'webkitfullscreenerror',\n\n\t],\n\t// Old WebKit\n\t[\n\t\t'webkitRequestFullScreen',\n\t\t'webkitCancelFullScreen',\n\t\t'webkitCurrentFullScreenElement',\n\t\t'webkitCancelFullScreen',\n\t\t'webkitfullscreenchange',\n\t\t'webkitfullscreenerror',\n\n\t],\n\t[\n\t\t'mozRequestFullScreen',\n\t\t'mozCancelFullScreen',\n\t\t'mozFullScreenElement',\n\t\t'mozFullScreenEnabled',\n\t\t'mozfullscreenchange',\n\t\t'mozfullscreenerror',\n\t],\n\t[\n\t\t'msRequestFullscreen',\n\t\t'msExitFullscreen',\n\t\t'msFullscreenElement',\n\t\t'msFullscreenEnabled',\n\t\t'MSFullscreenChange',\n\t\t'MSFullscreenError',\n\t],\n];\n\nconst nativeAPI = (() => {\n\tif (typeof document === 'undefined') {\n\t\treturn false;\n\t}\n\n\tconst unprefixedMethods = methodMap[0];\n\tconst returnValue = {};\n\n\tfor (const methodList of methodMap) {\n\t\tconst exitFullscreenMethod = methodList?.[1];\n\t\tif (exitFullscreenMethod in document) {\n\t\t\tfor (const [index, method] of methodList.entries()) {\n\t\t\t\treturnValue[unprefixedMethods[index]] = method;\n\t\t\t}\n\n\t\t\treturn returnValue;\n\t\t}\n\t}\n\n\treturn false;\n})();\n\nconst eventNameMap = {\n\tchange: nativeAPI.fullscreenchange,\n\terror: nativeAPI.fullscreenerror,\n};\n\n// eslint-disable-next-line import/no-mutable-exports\nlet screenfull = {\n\t// eslint-disable-next-line default-param-last\n\trequest(element = document.documentElement, options) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst onFullScreenEntered = () => {\n\t\t\t\tscreenfull.off('change', onFullScreenEntered);\n\t\t\t\tresolve();\n\t\t\t};\n\n\t\t\tscreenfull.on('change', onFullScreenEntered);\n\n\t\t\tconst returnPromise = element[nativeAPI.requestFullscreen](options);\n\n\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t}\n\t\t});\n\t},\n\texit() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!screenfull.isFullscreen) {\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst onFullScreenExit = () => {\n\t\t\t\tscreenfull.off('change', onFullScreenExit);\n\t\t\t\tresolve();\n\t\t\t};\n\n\t\t\tscreenfull.on('change', onFullScreenExit);\n\n\t\t\tconst returnPromise = document[nativeAPI.exitFullscreen]();\n\n\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t}\n\t\t});\n\t},\n\ttoggle(element, options) {\n\t\treturn screenfull.isFullscreen ? screenfull.exit() : screenfull.request(element, options);\n\t},\n\tonchange(callback) {\n\t\tscreenfull.on('change', callback);\n\t},\n\tonerror(callback) {\n\t\tscreenfull.on('error', callback);\n\t},\n\ton(event, callback) {\n\t\tconst eventName = eventNameMap[event];\n\t\tif (eventName) {\n\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t}\n\t},\n\toff(event, callback) {\n\t\tconst eventName = eventNameMap[event];\n\t\tif (eventName) {\n\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t}\n\t},\n\traw: nativeAPI,\n};\n\nObject.defineProperties(screenfull, {\n\tisFullscreen: {\n\t\tget: () => Boolean(document[nativeAPI.fullscreenElement]),\n\t},\n\telement: {\n\t\tenumerable: true,\n\t\tget: () => document[nativeAPI.fullscreenElement] ?? undefined,\n\t},\n\tisEnabled: {\n\t\tenumerable: true,\n\t\t// Coerce to boolean in case of old WebKit.\n\t\tget: () => Boolean(document[nativeAPI.fullscreenEnabled]),\n\t},\n});\n\nif (!nativeAPI) {\n\tscreenfull = {isEnabled: false};\n}\n\nexport default screenfull;\n","import { useState, useEffect, useRef } from 'react';\nimport screenfull from 'screenfull';\n\ninterface IReturn {\n nodeToFullscreenRef: React.RefObject;\n isFullScreenAvailable: boolean;\n isInFullScreen: boolean;\n toggleFullScreen(): Promise;\n}\n\nconst useFullScreen = (): IReturn => {\n const [isInFullScreen, setIsInFullScreen] = useState(false);\n\n const nodeToFullscreenRef = useRef(null);\n\n useEffect(() => {\n if (!screenfull || !screenfull.isEnabled) return;\n\n const onFullScreenChange = () => {\n setIsInFullScreen(Boolean(screenfull?.isFullscreen));\n };\n screenfull?.on('change', onFullScreenChange);\n\n return () => {\n screenfull?.off('change', onFullScreenChange);\n };\n }, []);\n\n const toggleFullScreen = (): Promise => {\n if (!screenfull || !screenfull.isEnabled) {\n return Promise.reject();\n }\n\n if (screenfull.isFullscreen) {\n return screenfull.exit();\n } else if (nodeToFullscreenRef.current) {\n return screenfull.request(nodeToFullscreenRef.current);\n }\n\n return Promise.resolve();\n };\n\n return {\n nodeToFullscreenRef,\n isFullScreenAvailable: screenfull && screenfull.isEnabled,\n isInFullScreen,\n toggleFullScreen,\n };\n};\n\nexport default useFullScreen;\n","import input from 'webstudio/src/input';\nimport { GestureEvent } from '_data/types/base';\nimport { CAM_MOUSE_PAN_MULT, CAM_MOUSE_ZOOM_MULT, CAM_ROT_VELOCITY } from '../constants';\nimport { isLeftButtonPressed, isRightButtonPressed } from '../helpers';\n\nconst isMobile = window.matchMedia('(any-pointer:coarse)').matches;\n\nlet prevX = -1;\nlet prevY = -1;\nlet prevX1 = -1;\nlet prevY1 = -1;\nlet prevDistance = 0;\n\nlet scale = 1;\nlet lastGestureScale = 1;\nlet gestureOn = false;\n\nfunction onContextMenu(e: UIEvent): void {\n e.preventDefault();\n e.stopPropagation();\n}\n\nfunction mouseDownHandler(e: MouseEvent) {\n input.onMouseDown(e.clientX, e.clientY, e.button, e.buttons);\n if (isMobile) {\n return;\n }\n input.controlStart(e.clientX, e.clientY);\n}\n\nfunction mouseMoveHandler(e: MouseEvent): void {\n if (input.onMouseMove) {\n input.onMouseMove(e.clientX, e.clientY, e.button, e.buttons);\n }\n\n if (isMobile) {\n return;\n }\n\n if (isRightButtonPressed(e)) {\n input.controlPan(CAM_MOUSE_PAN_MULT * e.movementX, CAM_MOUSE_PAN_MULT * e.movementY);\n } else {\n input.controlMove(CAM_ROT_VELOCITY * e.movementX, CAM_ROT_VELOCITY * e.movementY);\n }\n}\n\nfunction mouseUpHandler(e: MouseEvent): void {\n input.onMouseUp(e.clientX, e.clientY, e.button, e.buttons);\n\n if (isMobile) {\n return;\n }\n\n input.controlEnd();\n}\n\nfunction mouseWheelHandler(e: WheelEvent): void {\n if (isMobile) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n if (isLeftButtonPressed(e) || isRightButtonPressed(e)) {\n return;\n }\n\n const delta = (e.deltaY > 0 ? 1.0 : -1.0) * CAM_MOUSE_ZOOM_MULT;\n input.controlZoom(e.clientX, e.clientY, delta * 1.5);\n}\n\nconst touchDownHandler = (e: TouchEvent): void => {\n if (e.touches.length === 0) {\n return;\n }\n\n const touch = e.targetTouches && e.targetTouches.length ? e.targetTouches[0] : null;\n if (!touch) {\n return;\n }\n\n if (e.touches.length === 1) {\n const clientX = Math.floor(touch.clientX);\n const clientY = Math.floor(touch.clientY);\n prevX = clientX;\n prevY = clientY;\n input.controlStart(clientX, clientY);\n } else {\n const { clientX: x1, clientY: y1 } = e.touches[0];\n const { clientX: x2, clientY: y2 } = e.touches[1];\n const centerX = (x1 + x2) / 2;\n const centerY = (y1 + y2) / 2;\n input.controlStart(centerX, centerY);\n }\n};\n\nconst touchMoveHandler = (e: TouchEvent): void => {\n const touch = e.targetTouches?.length ? e.targetTouches[0] : null;\n if (!touch) {\n return;\n }\n\n if (e.touches.length === 3) {\n // todo: maybe change light position\n } else if (e.touches.length === 2) {\n const { clientX: x1, clientY: y1 } = e.touches[0];\n const { clientX: x2, clientY: y2 } = e.touches[1];\n const centerX = (x1 + x2) / 2;\n const centerY = (y1 + y2) / 2;\n\n if (prevX1 < 0) {\n prevX1 = centerX;\n }\n if (prevY1 < 0) {\n prevY1 = centerY;\n }\n\n const a = x1 - x2;\n const b = y1 - y2;\n\n const distance = Math.sqrt(a * a + b * b);\n\n if (prevDistance !== 0 && !gestureOn) {\n input.controlZoom(centerX, centerY, (distance - prevDistance) / -200);\n }\n\n const movementX1 = centerX - prevX1;\n const movementY1 = centerY - prevY1;\n\n if (Math.abs(movementX1) > 50 || Math.abs(movementY1) > 50) {\n return;\n }\n\n input.controlStart(centerX, centerY);\n input.controlPan(CAM_MOUSE_PAN_MULT * movementX1, CAM_MOUSE_PAN_MULT * movementY1);\n\n prevX1 = centerX;\n prevY1 = centerY;\n prevDistance = distance;\n } else if (e.touches.length === 1) {\n const clientX = Math.floor(touch.clientX);\n const clientY = Math.floor(touch.clientY);\n\n if (prevX < 0) {\n prevX = clientX;\n }\n if (prevY < 0) {\n prevY = clientY;\n }\n\n const movementX = clientX - prevX;\n const movementY = clientY - prevY;\n\n input.controlMove(CAM_ROT_VELOCITY * movementX, CAM_ROT_VELOCITY * movementY);\n\n prevX = clientX;\n prevY = clientY;\n }\n};\n\nconst touchUpHandler = (e: TouchEvent): void => {\n if (e.touches?.length === 0) {\n prevX = -1;\n prevY = -1;\n prevX1 = -1;\n prevY1 = -1;\n prevDistance = 0;\n }\n};\n\nconst onGestureChange = (e: GestureEvent) => {\n if (isMobile) {\n return;\n }\n e.preventDefault();\n gestureOn = true;\n\n if (e.type === 'gesturestart') {\n lastGestureScale = e.scale;\n }\n\n scale = e.scale - lastGestureScale;\n input.controlZoom(e.clientX, e.clientY, -scale);\n lastGestureScale = e.scale;\n};\n\nexport const addPointerEventsForEmbedPlayer = (canvas: HTMLCanvasElement, callback?: Function) => {\n const wrappedHandler = (fn: (e: UIEvent) => void) =>\n typeof callback === 'function'\n ? (e: UIEvent) => {\n callback();\n fn(e);\n }\n : fn;\n\n canvas.addEventListener('contextmenu', onContextMenu, false);\n canvas.addEventListener('wheel', wrappedHandler(mouseWheelHandler), false);\n canvas.addEventListener('touchstart', touchDownHandler, false);\n canvas.addEventListener('touchend', touchUpHandler, false);\n canvas.addEventListener('touchcancel', touchUpHandler, false);\n canvas.addEventListener('touchmove', wrappedHandler(touchMoveHandler), false);\n canvas.addEventListener('mousedown', wrappedHandler(mouseDownHandler), false);\n canvas.addEventListener('mousemove', mouseMoveHandler, false);\n canvas.addEventListener('mouseup', mouseUpHandler, false);\n canvas.addEventListener('gesturestart', onGestureChange);\n canvas.addEventListener('gesturechange', wrappedHandler(onGestureChange));\n canvas.addEventListener('gestureend', onGestureChange);\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"play\":\"style-module_2M9X5\",\"playBtn\":\"style-module_1Sndm\",\"playText\":\"style-module_1naHG\",\"playBtnContainer\":\"style-module_QKJo_\",\"shadow\":\"style-module_OWEGG\"};","import cl from 'classnames';\nimport style from './style.module.styl';\n\ninterface IProps {\n onPlay(): void;\n color: '#fff' | '#3A3B3D';\n isPlayerTransparent: boolean;\n}\nconst PlayButton = ({ onPlay, color, isPlayerTransparent }: IProps) => (\n
\n
\n \n \n Load 3D model\n \n
\n
\n);\n\nexport default PlayButton;\n","// extracted by mini-css-extract-plugin\nexport default {\"shadow\":\"style-module_3SP6m\"};","import cl from 'classnames';\nimport style from './style.module.styl';\n\ninterface IProps {\n isPlayerTransparent: boolean;\n color: string;\n isOpen: boolean;\n}\n\nconst FullscreenIcon = ({ isOpen, color, isPlayerTransparent }: IProps) => (\n \n {isOpen ? (\n \n ) : (\n \n )}\n \n);\n\nexport default FullscreenIcon;\n","// extracted by mini-css-extract-plugin\nexport default {\"shadow\":\"style-module_3TRax\"};","import cl from 'classnames';\nimport style from './style.module.styl';\n\ninterface IProps {\n color: string;\n isPlayerTransparent: boolean;\n}\n\nconst SettingsIcon = ({ color, isPlayerTransparent }: IProps) => (\n \n \n \n);\n\nexport default SettingsIcon;\n","// extracted by mini-css-extract-plugin\nexport default {\"shadow\":\"style-module_30PSX\"};","import cl from 'classnames';\nimport style from './style.module.styl';\n\ninterface IProps {\n color: string;\n isPlayerTransparent: boolean;\n}\n\nconst HelpIcon = ({ color, isPlayerTransparent }: IProps) => (\n \n \n \n \n);\n\nexport default HelpIcon;\n","function makeTypeChecker(tabsRole) {\n return function (element) {\n return !!element.type && element.type.tabsRole === tabsRole;\n };\n}\n\nexport var isTab = makeTypeChecker('Tab');\nexport var isTabList = makeTypeChecker('TabList');\nexport var isTabPanel = makeTypeChecker('TabPanel');","function _extends() { _extends = Object.assign || 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); }\n\nimport { Children, cloneElement } from 'react';\nimport { isTabPanel, isTab, isTabList } from './elementTypes';\n\nfunction isTabChild(child) {\n return isTab(child) || isTabList(child) || isTabPanel(child);\n}\n\nexport function deepMap(children, callback) {\n return Children.map(children, function (child) {\n // null happens when conditionally rendering TabPanel/Tab\n // see https://github.com/reactjs/react-tabs/issues/37\n if (child === null) return null;\n\n if (isTabChild(child)) {\n return callback(child);\n }\n\n if (child.props && child.props.children && typeof child.props.children === 'object') {\n // Clone the child that has children and map them too\n return /*#__PURE__*/cloneElement(child, _extends({}, child.props, {\n children: deepMap(child.props.children, callback)\n }));\n }\n\n return child;\n });\n}\nexport function deepForEach(children, callback) {\n return Children.forEach(children, function (child) {\n // null happens when conditionally rendering TabPanel/Tab\n // see https://github.com/reactjs/react-tabs/issues/37\n if (child === null) return;\n\n if (isTab(child) || isTabPanel(child)) {\n callback(child);\n } else if (child.props && child.props.children && typeof child.props.children === 'object') {\n if (isTabList(child)) callback(child);\n deepForEach(child.props.children, callback);\n }\n });\n}","import { deepForEach } from './childrenDeepMap';\nimport { isTab, isTabList, isTabPanel } from './elementTypes';\nexport function childrenPropType(props, propName, componentName) {\n var error;\n var tabsCount = 0;\n var panelsCount = 0;\n var tabListFound = false;\n var listTabs = [];\n var children = props[propName];\n deepForEach(children, function (child) {\n if (isTabList(child)) {\n if (child.props && child.props.children && typeof child.props.children === 'object') {\n deepForEach(child.props.children, function (listChild) {\n return listTabs.push(listChild);\n });\n }\n\n if (tabListFound) {\n error = new Error(\"Found multiple 'TabList' components inside 'Tabs'. Only one is allowed.\");\n }\n\n tabListFound = true;\n }\n\n if (isTab(child)) {\n if (!tabListFound || listTabs.indexOf(child) === -1) {\n error = new Error(\"Found a 'Tab' component outside of the 'TabList' component. 'Tab' components \" + \"have to be inside the 'TabList' component.\");\n }\n\n tabsCount++;\n } else if (isTabPanel(child)) {\n panelsCount++;\n }\n });\n\n if (!error && tabsCount !== panelsCount) {\n error = new Error(\"There should be an equal number of 'Tab' and 'TabPanel' in `\" + componentName + \"`. \" + (\"Received \" + tabsCount + \" 'Tab' and \" + panelsCount + \" 'TabPanel'.\"));\n }\n\n return error;\n}\nexport function onSelectPropType(props, propName, componentName, location, propFullName) {\n var prop = props[propName];\n var name = propFullName || propName;\n var error = null;\n\n if (prop && typeof prop !== 'function') {\n error = new Error(\"Invalid \" + location + \" `\" + name + \"` of type `\" + typeof prop + \"` supplied \" + (\"to `\" + componentName + \"`, expected `function`.\"));\n } else if (props.selectedIndex != null && prop == null) {\n error = new Error(\"The \" + location + \" `\" + name + \"` is marked as required in `\" + componentName + \"`, but \" + \"its value is `undefined` or `null`.\\n\" + \"`onSelect` is required when `selectedIndex` is also set. Not doing so will \" + \"make the tabs not do anything, as `selectedIndex` indicates that you want to \" + \"handle the selected tab yourself.\\n\" + \"If you only want to set the inital tab replace `selectedIndex` with `defaultIndex`.\");\n }\n\n return error;\n}\nexport function selectedIndexPropType(props, propName, componentName, location, propFullName) {\n var prop = props[propName];\n var name = propFullName || propName;\n var error = null;\n\n if (prop != null && typeof prop !== 'number') {\n error = new Error(\"Invalid \" + location + \" `\" + name + \"` of type `\" + typeof prop + \"` supplied to \" + (\"`\" + componentName + \"`, expected `number`.\"));\n } else if (props.defaultIndex != null && prop != null) {\n return new Error(\"The \" + location + \" `\" + name + \"` cannot be used together with `defaultIndex` \" + (\"in `\" + componentName + \"`.\\n\") + (\"Either remove `\" + name + \"` to let `\" + componentName + \"` handle the selected \") + \"tab internally or remove `defaultIndex` to handle it yourself.\");\n }\n\n return error;\n}","// Get a universally unique identifier\nvar count = 0;\nexport default function uuid() {\n return \"react-tabs-\" + count++;\n}\nexport function reset() {\n count = 0;\n}","import { deepForEach } from './childrenDeepMap';\nimport { isTab, isTabPanel } from './elementTypes';\nexport function getTabsCount(children) {\n var tabCount = 0;\n deepForEach(children, function (child) {\n if (isTab(child)) tabCount++;\n });\n return tabCount;\n}\nexport function getPanelsCount(children) {\n var panelCount = 0;\n deepForEach(children, function (child) {\n if (isTabPanel(child)) panelCount++;\n });\n return panelCount;\n}","function _extends() { _extends = Object.assign || 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); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport PropTypes from 'prop-types';\nimport React, { cloneElement, Component } from 'react';\nimport cx from 'clsx';\nimport uuid from '../helpers/uuid';\nimport { childrenPropType } from '../helpers/propTypes';\nimport { getPanelsCount as _getPanelsCount, getTabsCount as _getTabsCount } from '../helpers/count';\nimport { deepMap } from '../helpers/childrenDeepMap';\nimport { isTabList, isTabPanel, isTab } from '../helpers/elementTypes';\n\nfunction isNode(node) {\n return node && 'getAttribute' in node;\n} // Determine if a node from event.target is a Tab element\n\n\nfunction isTabNode(node) {\n return isNode(node) && node.getAttribute('role') === 'tab';\n} // Determine if a tab node is disabled\n\n\nfunction isTabDisabled(node) {\n return isNode(node) && node.getAttribute('aria-disabled') === 'true';\n}\n\nvar canUseActiveElement;\n\nfunction determineCanUseActiveElement(environment) {\n var env = environment || (typeof window !== 'undefined' ? window : undefined);\n\n try {\n canUseActiveElement = !!(typeof env !== 'undefined' && env.document && env.document.activeElement);\n } catch (e) {\n // Work around for IE bug when accessing document.activeElement in an iframe\n // Refer to the following resources:\n // http://stackoverflow.com/a/10982960/369687\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12733599\n canUseActiveElement = false;\n }\n}\n\nvar UncontrolledTabs = /*#__PURE__*/function (_Component) {\n _inheritsLoose(UncontrolledTabs, _Component);\n\n function UncontrolledTabs() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.tabNodes = [];\n\n _this.handleKeyDown = function (e) {\n var _this$props = _this.props,\n direction = _this$props.direction,\n disableUpDownKeys = _this$props.disableUpDownKeys;\n\n if (_this.isTabFromContainer(e.target)) {\n var index = _this.props.selectedIndex;\n var preventDefault = false;\n var useSelectedIndex = false;\n\n if (e.keyCode === 32 || e.keyCode === 13) {\n preventDefault = true;\n useSelectedIndex = false;\n\n _this.handleClick(e);\n }\n\n if (e.keyCode === 37 || !disableUpDownKeys && e.keyCode === 38) {\n // Select next tab to the left, validate if up arrow is not disabled\n if (direction === 'rtl') {\n index = _this.getNextTab(index);\n } else {\n index = _this.getPrevTab(index);\n }\n\n preventDefault = true;\n useSelectedIndex = true;\n } else if (e.keyCode === 39 || !disableUpDownKeys && e.keyCode === 40) {\n // Select next tab to the right, validate if down arrow is not disabled\n if (direction === 'rtl') {\n index = _this.getPrevTab(index);\n } else {\n index = _this.getNextTab(index);\n }\n\n preventDefault = true;\n useSelectedIndex = true;\n } else if (e.keyCode === 35) {\n // Select last tab (End key)\n index = _this.getLastTab();\n preventDefault = true;\n useSelectedIndex = true;\n } else if (e.keyCode === 36) {\n // Select first tab (Home key)\n index = _this.getFirstTab();\n preventDefault = true;\n useSelectedIndex = true;\n } // This prevents scrollbars from moving around\n\n\n if (preventDefault) {\n e.preventDefault();\n } // Only use the selected index in the state if we're not using the tabbed index\n\n\n if (useSelectedIndex) {\n _this.setSelected(index, e);\n }\n }\n };\n\n _this.handleClick = function (e) {\n var node = e.target;\n\n do {\n if (_this.isTabFromContainer(node)) {\n if (isTabDisabled(node)) {\n return;\n }\n\n var index = [].slice.call(node.parentNode.children).filter(isTabNode).indexOf(node);\n\n _this.setSelected(index, e);\n\n return;\n }\n } while ((node = node.parentNode) != null);\n };\n\n return _this;\n }\n\n var _proto = UncontrolledTabs.prototype;\n\n _proto.setSelected = function setSelected(index, event) {\n // Check index boundary\n if (index < 0 || index >= this.getTabsCount()) return;\n var _this$props2 = this.props,\n onSelect = _this$props2.onSelect,\n selectedIndex = _this$props2.selectedIndex; // Call change event handler\n\n onSelect(index, selectedIndex, event);\n };\n\n _proto.getNextTab = function getNextTab(index) {\n var count = this.getTabsCount(); // Look for non-disabled tab from index to the last tab on the right\n\n for (var i = index + 1; i < count; i++) {\n if (!isTabDisabled(this.getTab(i))) {\n return i;\n }\n } // If no tab found, continue searching from first on left to index\n\n\n for (var _i = 0; _i < index; _i++) {\n if (!isTabDisabled(this.getTab(_i))) {\n return _i;\n }\n } // No tabs are disabled, return index\n\n\n return index;\n };\n\n _proto.getPrevTab = function getPrevTab(index) {\n var i = index; // Look for non-disabled tab from index to first tab on the left\n\n while (i--) {\n if (!isTabDisabled(this.getTab(i))) {\n return i;\n }\n } // If no tab found, continue searching from last tab on right to index\n\n\n i = this.getTabsCount();\n\n while (i-- > index) {\n if (!isTabDisabled(this.getTab(i))) {\n return i;\n }\n } // No tabs are disabled, return index\n\n\n return index;\n };\n\n _proto.getFirstTab = function getFirstTab() {\n var count = this.getTabsCount(); // Look for non disabled tab from the first tab\n\n for (var i = 0; i < count; i++) {\n if (!isTabDisabled(this.getTab(i))) {\n return i;\n }\n }\n\n return null;\n };\n\n _proto.getLastTab = function getLastTab() {\n var i = this.getTabsCount(); // Look for non disabled tab from the last tab\n\n while (i--) {\n if (!isTabDisabled(this.getTab(i))) {\n return i;\n }\n }\n\n return null;\n };\n\n _proto.getTabsCount = function getTabsCount() {\n var children = this.props.children;\n return _getTabsCount(children);\n };\n\n _proto.getPanelsCount = function getPanelsCount() {\n var children = this.props.children;\n return _getPanelsCount(children);\n };\n\n _proto.getTab = function getTab(index) {\n return this.tabNodes[\"tabs-\" + index];\n };\n\n _proto.getChildren = function getChildren() {\n var _this2 = this;\n\n var index = 0;\n var _this$props3 = this.props,\n children = _this$props3.children,\n disabledTabClassName = _this$props3.disabledTabClassName,\n focus = _this$props3.focus,\n forceRenderTabPanel = _this$props3.forceRenderTabPanel,\n selectedIndex = _this$props3.selectedIndex,\n selectedTabClassName = _this$props3.selectedTabClassName,\n selectedTabPanelClassName = _this$props3.selectedTabPanelClassName,\n environment = _this$props3.environment;\n this.tabIds = this.tabIds || [];\n this.panelIds = this.panelIds || [];\n var diff = this.tabIds.length - this.getTabsCount(); // Add ids if new tabs have been added\n // Don't bother removing ids, just keep them in case they are added again\n // This is more efficient, and keeps the uuid counter under control\n\n while (diff++ < 0) {\n this.tabIds.push(uuid());\n this.panelIds.push(uuid());\n } // Map children to dynamically setup refs\n\n\n return deepMap(children, function (child) {\n var result = child; // Clone TabList and Tab components to have refs\n\n if (isTabList(child)) {\n var listIndex = 0; // Figure out if the current focus in the DOM is set on a Tab\n // If it is we should keep the focus on the next selected tab\n\n var wasTabFocused = false;\n\n if (canUseActiveElement == null) {\n determineCanUseActiveElement(environment);\n }\n\n if (canUseActiveElement) {\n wasTabFocused = React.Children.toArray(child.props.children).filter(isTab).some(function (tab, i) {\n var env = environment || (typeof window !== 'undefined' ? window : undefined);\n return env && env.document.activeElement === _this2.getTab(i);\n });\n }\n\n result = /*#__PURE__*/cloneElement(child, {\n children: deepMap(child.props.children, function (tab) {\n var key = \"tabs-\" + listIndex;\n var selected = selectedIndex === listIndex;\n var props = {\n tabRef: function tabRef(node) {\n _this2.tabNodes[key] = node;\n },\n id: _this2.tabIds[listIndex],\n panelId: _this2.panelIds[listIndex],\n selected: selected,\n focus: selected && (focus || wasTabFocused)\n };\n if (selectedTabClassName) props.selectedClassName = selectedTabClassName;\n if (disabledTabClassName) props.disabledClassName = disabledTabClassName;\n listIndex++;\n return /*#__PURE__*/cloneElement(tab, props);\n })\n });\n } else if (isTabPanel(child)) {\n var props = {\n id: _this2.panelIds[index],\n tabId: _this2.tabIds[index],\n selected: selectedIndex === index\n };\n if (forceRenderTabPanel) props.forceRender = forceRenderTabPanel;\n if (selectedTabPanelClassName) props.selectedClassName = selectedTabPanelClassName;\n index++;\n result = /*#__PURE__*/cloneElement(child, props);\n }\n\n return result;\n });\n };\n\n /**\n * Determine if a node from event.target is a Tab element for the current Tabs container.\n * If the clicked element is not a Tab, it returns false.\n * If it finds another Tabs container between the Tab and `this`, it returns false.\n */\n _proto.isTabFromContainer = function isTabFromContainer(node) {\n // return immediately if the clicked element is not a Tab.\n if (!isTabNode(node)) {\n return false;\n } // Check if the first occurrence of a Tabs container is `this` one.\n\n\n var nodeAncestor = node.parentElement;\n\n do {\n if (nodeAncestor === this.node) return true;\n if (nodeAncestor.getAttribute('data-tabs')) break;\n nodeAncestor = nodeAncestor.parentElement;\n } while (nodeAncestor);\n\n return false;\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n // Delete all known props, so they don't get added to DOM\n var _this$props4 = this.props,\n children = _this$props4.children,\n className = _this$props4.className,\n disabledTabClassName = _this$props4.disabledTabClassName,\n domRef = _this$props4.domRef,\n focus = _this$props4.focus,\n forceRenderTabPanel = _this$props4.forceRenderTabPanel,\n onSelect = _this$props4.onSelect,\n selectedIndex = _this$props4.selectedIndex,\n selectedTabClassName = _this$props4.selectedTabClassName,\n selectedTabPanelClassName = _this$props4.selectedTabPanelClassName,\n environment = _this$props4.environment,\n disableUpDownKeys = _this$props4.disableUpDownKeys,\n attributes = _objectWithoutPropertiesLoose(_this$props4, [\"children\", \"className\", \"disabledTabClassName\", \"domRef\", \"focus\", \"forceRenderTabPanel\", \"onSelect\", \"selectedIndex\", \"selectedTabClassName\", \"selectedTabPanelClassName\", \"environment\", \"disableUpDownKeys\"]);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n className: cx(className),\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown,\n ref: function ref(node) {\n _this3.node = node;\n if (domRef) domRef(node);\n },\n \"data-tabs\": true\n }), this.getChildren());\n };\n\n return UncontrolledTabs;\n}(Component);\n\nUncontrolledTabs.defaultProps = {\n className: 'react-tabs',\n focus: false\n};\nexport { UncontrolledTabs as default };\nUncontrolledTabs.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: childrenPropType,\n direction: PropTypes.oneOf(['rtl', 'ltr']),\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]),\n disabledTabClassName: PropTypes.string,\n disableUpDownKeys: PropTypes.bool,\n domRef: PropTypes.func,\n focus: PropTypes.bool,\n forceRenderTabPanel: PropTypes.bool,\n onSelect: PropTypes.func.isRequired,\n selectedIndex: PropTypes.number.isRequired,\n selectedTabClassName: PropTypes.string,\n selectedTabPanelClassName: PropTypes.string,\n environment: PropTypes.object\n} : {};","function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { childrenPropType, onSelectPropType, selectedIndexPropType } from '../helpers/propTypes';\nimport UncontrolledTabs from './UncontrolledTabs';\nimport { getTabsCount } from '../helpers/count';\nvar MODE_CONTROLLED = 0;\nvar MODE_UNCONTROLLED = 1;\n\nvar Tabs = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Tabs, _Component);\n\n function Tabs(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.handleSelected = function (index, last, event) {\n var onSelect = _this.props.onSelect;\n var mode = _this.state.mode; // Call change event handler\n\n if (typeof onSelect === 'function') {\n // Check if the change event handler cancels the tab change\n if (onSelect(index, last, event) === false) return;\n }\n\n var state = {\n // Set focus if the change was triggered from the keyboard\n focus: event.type === 'keydown'\n };\n\n if (mode === MODE_UNCONTROLLED) {\n // Update selected index\n state.selectedIndex = index;\n }\n\n _this.setState(state);\n };\n\n _this.state = Tabs.copyPropsToState(_this.props, {}, props.defaultFocus);\n return _this;\n }\n\n Tabs.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n return Tabs.copyPropsToState(props, state);\n };\n\n Tabs.getModeFromProps = function getModeFromProps(props) {\n return props.selectedIndex === null ? MODE_UNCONTROLLED : MODE_CONTROLLED;\n };\n\n // preserve the existing selectedIndex from state.\n // If the state has not selectedIndex, default to the defaultIndex or 0\n Tabs.copyPropsToState = function copyPropsToState(props, state, focus) {\n if (focus === void 0) {\n focus = false;\n }\n\n if (process.env.NODE_ENV !== 'production' && state.mode !== undefined && state.mode !== Tabs.getModeFromProps(props)) {\n throw new Error(\"Switching between controlled mode (by using `selectedIndex`) and uncontrolled mode is not supported in `Tabs`.\\nFor more information about controlled and uncontrolled mode of react-tabs see https://github.com/reactjs/react-tabs#controlled-vs-uncontrolled-mode.\");\n }\n\n var newState = {\n focus: focus,\n mode: Tabs.getModeFromProps(props)\n };\n\n if (newState.mode === MODE_UNCONTROLLED) {\n var maxTabIndex = Math.max(0, getTabsCount(props.children) - 1);\n var selectedIndex = null;\n\n if (state.selectedIndex != null) {\n selectedIndex = Math.min(state.selectedIndex, maxTabIndex);\n } else {\n selectedIndex = props.defaultIndex || 0;\n }\n\n newState.selectedIndex = selectedIndex;\n }\n\n return newState;\n };\n\n var _proto = Tabs.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n defaultIndex = _this$props.defaultIndex,\n defaultFocus = _this$props.defaultFocus,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"defaultIndex\", \"defaultFocus\"]);\n\n var _this$state = this.state,\n focus = _this$state.focus,\n selectedIndex = _this$state.selectedIndex;\n props.focus = focus;\n props.onSelect = this.handleSelected;\n\n if (selectedIndex != null) {\n props.selectedIndex = selectedIndex;\n }\n\n return /*#__PURE__*/React.createElement(UncontrolledTabs, props, children);\n };\n\n return Tabs;\n}(Component);\n\nTabs.defaultProps = {\n defaultFocus: false,\n forceRenderTabPanel: false,\n selectedIndex: null,\n defaultIndex: null,\n environment: null,\n disableUpDownKeys: false\n};\nexport { Tabs as default };\nTabs.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: childrenPropType,\n direction: PropTypes.oneOf(['rtl', 'ltr']),\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]),\n defaultFocus: PropTypes.bool,\n defaultIndex: PropTypes.number,\n disabledTabClassName: PropTypes.string,\n disableUpDownKeys: PropTypes.bool,\n domRef: PropTypes.func,\n forceRenderTabPanel: PropTypes.bool,\n onSelect: onSelectPropType,\n selectedIndex: selectedIndexPropType,\n selectedTabClassName: PropTypes.string,\n selectedTabPanelClassName: PropTypes.string,\n environment: PropTypes.object\n} : {};\nTabs.tabsRole = 'Tabs';","function _extends() { _extends = Object.assign || 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); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport cx from 'clsx';\n\nvar TabList = /*#__PURE__*/function (_Component) {\n _inheritsLoose(TabList, _Component);\n\n function TabList() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = TabList.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n attributes = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"className\"]);\n\n return /*#__PURE__*/React.createElement(\"ul\", _extends({}, attributes, {\n className: cx(className),\n role: \"tablist\"\n }), children);\n };\n\n return TabList;\n}(Component);\n\nTabList.defaultProps = {\n className: 'react-tabs__tab-list'\n};\nexport { TabList as default };\nTabList.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object])\n} : {};\nTabList.tabsRole = 'TabList';","function _extends() { _extends = Object.assign || 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); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport cx from 'clsx';\nvar DEFAULT_CLASS = 'react-tabs__tab';\n\nvar Tab = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Tab, _Component);\n\n function Tab() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = Tab.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.checkFocus();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.checkFocus();\n };\n\n _proto.checkFocus = function checkFocus() {\n var _this$props = this.props,\n selected = _this$props.selected,\n focus = _this$props.focus;\n\n if (selected && focus) {\n this.node.focus();\n }\n };\n\n _proto.render = function render() {\n var _cx,\n _this = this;\n\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n disabled = _this$props2.disabled,\n disabledClassName = _this$props2.disabledClassName,\n focus = _this$props2.focus,\n id = _this$props2.id,\n panelId = _this$props2.panelId,\n selected = _this$props2.selected,\n selectedClassName = _this$props2.selectedClassName,\n tabIndex = _this$props2.tabIndex,\n tabRef = _this$props2.tabRef,\n attributes = _objectWithoutPropertiesLoose(_this$props2, [\"children\", \"className\", \"disabled\", \"disabledClassName\", \"focus\", \"id\", \"panelId\", \"selected\", \"selectedClassName\", \"tabIndex\", \"tabRef\"]);\n\n return /*#__PURE__*/React.createElement(\"li\", _extends({}, attributes, {\n className: cx(className, (_cx = {}, _cx[selectedClassName] = selected, _cx[disabledClassName] = disabled, _cx)),\n ref: function ref(node) {\n _this.node = node;\n if (tabRef) tabRef(node);\n },\n role: \"tab\",\n id: id,\n \"aria-selected\": selected ? 'true' : 'false',\n \"aria-disabled\": disabled ? 'true' : 'false',\n \"aria-controls\": panelId,\n tabIndex: tabIndex || (selected ? '0' : null)\n }), children);\n };\n\n return Tab;\n}(Component);\n\nTab.defaultProps = {\n className: DEFAULT_CLASS,\n disabledClassName: DEFAULT_CLASS + \"--disabled\",\n focus: false,\n id: null,\n panelId: null,\n selected: false,\n selectedClassName: DEFAULT_CLASS + \"--selected\"\n};\nexport { Tab as default };\nTab.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.oneOfType([PropTypes.array, PropTypes.object, PropTypes.string]),\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]),\n disabled: PropTypes.bool,\n tabIndex: PropTypes.string,\n disabledClassName: PropTypes.string,\n focus: PropTypes.bool,\n // private\n id: PropTypes.string,\n // private\n panelId: PropTypes.string,\n // private\n selected: PropTypes.bool,\n // private\n selectedClassName: PropTypes.string,\n tabRef: PropTypes.func // private\n\n} : {};\nTab.tabsRole = 'Tab';","function _extends() { _extends = Object.assign || 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); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport cx from 'clsx';\nvar DEFAULT_CLASS = 'react-tabs__tab-panel';\n\nvar TabPanel = /*#__PURE__*/function (_Component) {\n _inheritsLoose(TabPanel, _Component);\n\n function TabPanel() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = TabPanel.prototype;\n\n _proto.render = function render() {\n var _cx;\n\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n forceRender = _this$props.forceRender,\n id = _this$props.id,\n selected = _this$props.selected,\n selectedClassName = _this$props.selectedClassName,\n tabId = _this$props.tabId,\n attributes = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"className\", \"forceRender\", \"id\", \"selected\", \"selectedClassName\", \"tabId\"]);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n className: cx(className, (_cx = {}, _cx[selectedClassName] = selected, _cx)),\n role: \"tabpanel\",\n id: id,\n \"aria-labelledby\": tabId\n }), forceRender || selected ? children : null);\n };\n\n return TabPanel;\n}(Component);\n\nTabPanel.defaultProps = {\n className: DEFAULT_CLASS,\n forceRender: false,\n selectedClassName: DEFAULT_CLASS + \"--selected\"\n};\nexport { TabPanel as default };\nTabPanel.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]),\n forceRender: PropTypes.bool,\n id: PropTypes.string,\n // private\n selected: PropTypes.bool,\n // private\n selectedClassName: PropTypes.string,\n tabId: PropTypes.string // private\n\n} : {};\nTabPanel.tabsRole = 'TabPanel';","// extracted by mini-css-extract-plugin\nexport default {\"tablist\":\"style-module_2AgNS\",\"blink\":\"style-module_2ZC32\",\"commonSkeletonAnimation\":\"style-module_3YjRo\"};","import cl from 'classnames';\nimport { TabList as TabListComponent } from 'react-tabs';\nimport style from './style.module.styl';\n\nexport { Tab, Tabs, TabPanel } from 'react-tabs';\n\ninterface IProps {\n children: JSX.Element[];\n className?: string;\n}\n\nconst TabList = ({ children, className }: IProps) => (\n {children}\n);\n\nTabList.tabsRole = 'TabList';\n\nexport default TabList;\n","interface IMakeRequestParams {\n url: string;\n method: 'GET';\n}\n\nexport const BASE_EMBED_PLAYER_API_URL = '/api/embedded_player/v1';\n\nexport const makeRequest = async (requestParams: IMakeRequestParams): Promise => {\n try {\n const response = await fetch(`${BASE_EMBED_PLAYER_API_URL}/${requestParams.url}`, {\n method: requestParams.method,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (response.ok) {\n return await response.json();\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n throw new Error('An error occurred', { cause: response });\n } catch (e) {\n return Promise.reject(e);\n }\n};\n","import { BASE_EMBED_PLAYER_API_URL } from '_components/EmbedPlayer/Player/api/base';\n\nexport const isMobile = window.matchMedia('(any-pointer:coarse)').matches;\n\nexport const createEmbedPlayerAssetsFullPath = (assetsPath: string, projectBase: string) =>\n `${BASE_EMBED_PLAYER_API_URL}${assetsPath}${projectBase}`;\n","export const mouseRotate = (\n \n \n \n \n);\n\nexport const mouseZoom = (\n \n \n \n \n \n);\n\nexport const mouseMove = (\n \n \n \n \n);\n\nexport const touchRotate = (\n \n \n \n \n);\n\nexport const toucnZoom = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport const touchMove = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","// extracted by mini-css-extract-plugin\nexport default {\"actions\":\"style-module_3GIbt\",\"tablist\":\"style-module_1979j\",\"selected\":\"style-module_3lk3N\",\"tab\":\"style-module_2S_rg\",\"actionsItems\":\"style-module_3hy38\",\"card\":\"style-module_2qr61\",\"img\":\"style-module_iy3a9\",\"name\":\"style-module_1XKOY\",\"text\":\"style-module_w0oXH\",\"close\":\"style-module_FtYaT\"};","import { Button } from 'artec-ui';\nimport { useTranslation } from 'react-i18next';\nimport { Tab, Tabs, TabPanel } from 'react-tabs';\nimport TabList from '_shared/Tabs';\nimport { isMobile } from '../../helpers';\nimport { mouseZoom, mouseRotate, mouseMove, toucnZoom, touchRotate, touchMove } from './navigationImages';\nimport style from './style.module.styl';\n\ninterface IHelpData {\n pic: {\n mouse: JSX.Element;\n touch: JSX.Element;\n };\n name: string;\n mouseText: string;\n touchScreen: string;\n}\n\nconst ACTIONS: IHelpData[] = [\n {\n pic: {\n mouse: mouseRotate,\n touch: touchRotate,\n },\n name: 'Rotate',\n mouseText: 'Left click + drag',\n touchScreen: 'One finger drag',\n },\n {\n pic: {\n mouse: mouseZoom,\n touch: toucnZoom,\n },\n name: 'Zoom',\n mouseText: 'Scroll anywhere',\n touchScreen: 'Pinch with two fingers',\n },\n {\n pic: {\n mouse: mouseMove,\n touch: touchMove,\n },\n name: 'Move',\n mouseText: 'Right click + drag',\n touchScreen: 'Two fingers drag',\n },\n];\n\nconst tabName = ['Mouse', 'Touch'];\n\nconst defaultIndex = isMobile ? 1 : 0;\n\ninterface IProps {\n onClose(): void;\n}\n\nconst NavigationModal = ({ onClose }: IProps) => {\n const { t } = useTranslation();\n\n return (\n
\n
\n \n \n {tabName.map(name => (\n \n {name}\n \n ))}\n \n \n
\n {ACTIONS.map(item => (\n
\n
{item.pic.mouse}
\n {item.name}\n
{t(item.mouseText)}
\n
\n ))}\n
\n
\n \n
\n {ACTIONS.map(item => (\n
\n
{item.pic.touch}
\n {item.name}\n
{t(item.touchScreen)}
\n
\n ))}\n
\n
\n
\n
\n \n
\n );\n};\n\nexport default NavigationModal;\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"style-module_2qqol\",\"rightControls\":\"style-module_2XjjA\",\"leftControls\":\"style-module_3YWAN\",\"control\":\"style-module_1ogOF\",\"controlTooltip\":\"style-module_3qkCB\",\"fullscreenTooltip\":\"style-module_38sDs\",\"helpTooltipContainer\":\"style-module_Pn_rT\",\"helpTooltip\":\"style-module_H1VNq\",\"helpTooltipAlone\":\"style-module_1_d_f\",\"settingsLastControl\":\"style-module_nmmp5\",\"lineWrapper\":\"style-module_3KMDM\",\"line\":\"style-module_2IyIr\",\"settingsDropdown\":\"style-module_1in2z\",\"menuOption\":\"style-module_P0wh4\",\"textureOption\":\"style-module_39V5i\",\"textureCheckbox\":\"style-module_2yH5F\",\"downloadLink\":\"style-module_29j6X\",\"downloadExt\":\"style-module_38E7W\"};","import { Tooltip, ContextMenu, Checkbox } from 'artec-ui';\nimport cl from 'classnames';\nimport { useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport FullscreenIcon from '_components/EmbedPlayer/Player/PlayerControls/FullscreenIcon';\nimport SettingsIcon from '_components/EmbedPlayer/Player/PlayerControls/SettingsIcon';\nimport { Pixel } from '_data/types/base';\nimport useOutsideClick from '_helpers/hooks/useOutsideClick';\nimport HelpIcon from './HelpIcon';\nimport NavigationHelpPanel from './NavigationHelpPanel';\nimport style from './style.module.styl';\n\ninterface IProps {\n color: string;\n downloadLink?: string;\n openLink: string;\n initialTextureState?: boolean;\n textureSwitchAvailable: boolean;\n openInCloudLinkAvailable: boolean;\n isDownloadAllowed: boolean;\n isFullScreenAvailable: boolean;\n isInFullScreen: boolean;\n isPlayerTransparent: boolean;\n toggleFullScreen(): void;\n toggleTexture(checked: boolean): void;\n}\n\nconst SETTINGS_NO_CLOSE_ATTR = 'no-close';\nconst COMMON_OPTION_HEIGHT: Pixel = 35;\nconst DIVIDER_HEIGHT: Pixel = 21;\nconst MENU_TOP_MARGIN: Pixel = 10;\nconst MENU_TOP_PADDING: Pixel = 20;\n\nconst calcContextMenuBottomPosition = ({\n textureSwitchAvailable,\n downloadOptionVisible,\n openInCloudLinkAvailable,\n}: {\n textureSwitchAvailable: boolean;\n downloadOptionVisible: boolean;\n openInCloudLinkAvailable: boolean;\n}): number => {\n const optionsCombinedHeights = [\n textureSwitchAvailable,\n openInCloudLinkAvailable,\n downloadOptionVisible,\n ].reduce((acc, flag) => {\n if (flag) {\n // eslint-disable-next-line no-param-reassign\n acc += COMMON_OPTION_HEIGHT;\n }\n\n return acc;\n }, 0);\n\n return -(\n optionsCombinedHeights +\n MENU_TOP_MARGIN +\n MENU_TOP_PADDING +\n ((openInCloudLinkAvailable || downloadOptionVisible) && textureSwitchAvailable ? DIVIDER_HEIGHT : 0)\n );\n};\n\nconst PlayerControls = ({\n color,\n isDownloadAllowed,\n textureSwitchAvailable,\n openInCloudLinkAvailable,\n initialTextureState,\n downloadLink,\n openLink,\n isFullScreenAvailable,\n isPlayerTransparent,\n isInFullScreen,\n toggleFullScreen,\n toggleTexture,\n}: IProps) => {\n const { t } = useTranslation();\n const [isSettingsMenuOpen, setIsSettingsMenuOpen] = useState(false);\n const [isNavigationHelpOpen, setIsNavigationHelpOpen] = useState(false);\n const [textureChecked, setTextureChecked] = useState(initialTextureState ?? false);\n\n const settingsContextMenuWrapperRef = useRef(null);\n const navigationHelpRef = useRef(null);\n\n const downloadOptionVisible = Boolean(isDownloadAllowed && downloadLink);\n const settingsControlShown = textureSwitchAvailable || openInCloudLinkAvailable || downloadOptionVisible;\n\n useOutsideClick(settingsContextMenuWrapperRef, event => {\n const target = event.target as Element;\n if (target.closest(`[data-noclose=${SETTINGS_NO_CLOSE_ATTR}]`)) {\n return;\n }\n\n setIsSettingsMenuOpen(false);\n });\n\n useOutsideClick(navigationHelpRef, () => {\n setIsNavigationHelpOpen(false);\n });\n\n const handleOpenOptionClick = () => {\n window.open(openLink, '__blank');\n setIsSettingsMenuOpen(false);\n };\n\n return (\n
\n );\n};\n\nexport default PlayerInteractionHelp;\n","// extracted by mini-css-extract-plugin\nexport default {\"loaderWrapper\":\"style-module_3Asdz\",\"backgroundCircle\":\"style-module_2WGNC\",\"progressText\":\"style-module_mnDth\"};","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { Millisecond, Second } from '_data/types/base';\nimport ProgressCircular from '_shared/ProgressCircular';\nimport style from './style.module.styl';\n\ninterface IProps {\n modelLoadingProgress: number;\n initLoadingProgress: number;\n isLodUnavailable: boolean;\n onProgressPeakReach(): void;\n}\n\nconst INTERVAL_DELAY: Millisecond = 500;\nconst FAST_INTERVAL_DELAY: Millisecond = 15;\n\nconst PlayerLoader = ({ isLodUnavailable, initLoadingProgress, modelLoadingProgress, onProgressPeakReach }: IProps) => {\n const timeoutIdRef = useRef(null);\n const [artificialProgress, setArtificialProgress] = useState(1);\n const mainProgressValue = isLodUnavailable ? modelLoadingProgress : initLoadingProgress;\n\n const stopArtificialProgress = useCallback(() => {\n if (timeoutIdRef.current) {\n clearInterval(timeoutIdRef.current);\n }\n }, []);\n\n useEffect(() => {\n if (artificialProgress >= 100) {\n if (mainProgressValue === 100) {\n onProgressPeakReach();\n }\n\n stopArtificialProgress();\n }\n }, [artificialProgress, mainProgressValue, onProgressPeakReach, stopArtificialProgress]);\n\n useEffect(() => {\n if (mainProgressValue === 100) {\n stopArtificialProgress();\n\n timeoutIdRef.current = window.setInterval(() => {\n setArtificialProgress(prevArtificialProgress => prevArtificialProgress + 1);\n }, FAST_INTERVAL_DELAY);\n }\n }, [mainProgressValue, stopArtificialProgress]);\n\n useEffect(() => {\n timeoutIdRef.current = window.setInterval(() => {\n setArtificialProgress(prevArtificialProgress => prevArtificialProgress + 1);\n }, INTERVAL_DELAY);\n\n return () => {\n stopArtificialProgress();\n };\n }, [stopArtificialProgress]);\n\n return (\n
\n
\n \n
{artificialProgress}%
\n
\n
\n );\n};\n\nexport default PlayerLoader;\n","// extracted by mini-css-extract-plugin\nexport default {\"link\":\"style-module_3eQVZ\",\"shadow\":\"style-module_WxG3o\"};","import cl from 'classnames';\nimport style from './style.module.styl';\n\ninterface IProps {\n color: string;\n isPlayerTransparent: boolean;\n}\n\nconst PlayerLogo = ({ color, isPlayerTransparent }: IProps) => (\n \n \n \n \n \n);\n\nexport default PlayerLogo;\n","import { Hex } from '_data/types/base';\n\ninterface IProps {\n color: Hex;\n}\n\nconst PlaceholderPreviewIcon = ({ color }: IProps) => (\n \n \n \n \n \n \n);\n\nexport default PlaceholderPreviewIcon;\n","// extracted by mini-css-extract-plugin\nexport default {\"preview\":\"style-module_2KSaM\",\"scalingHeight\":\"style-module_f5NNd\",\"scalingWidth\":\"style-module_10DjC\"};","import cl from 'classnames';\nimport { useLayoutEffect, useRef, useState } from 'react';\nimport { Hex, URL } from '_data/types/base';\nimport PlaceholderPreviewIcon from '../PlaceholderPreviewIcon';\nimport style from './style.module.styl';\n\ninterface IProps {\n previewUrl?: URL;\n modelName: string;\n backgroundColor: Hex | 'transparent';\n placeholderIconColor: Hex;\n}\n\nenum ScalingSide {\n Width,\n Height,\n}\n\nexport const PlayerPreview = ({ previewUrl, modelName, backgroundColor, placeholderIconColor }: IProps) => {\n const wrapperRef = useRef(null);\n\n const [scaling, setScaling] = useState(null);\n\n useLayoutEffect(() => {\n if (!wrapperRef.current || !previewUrl) return;\n const width = wrapperRef.current.clientWidth;\n const height = wrapperRef.current.clientHeight;\n\n if (width && height) {\n if (height > width) {\n setScaling(ScalingSide.Width);\n } else {\n setScaling(ScalingSide.Height);\n }\n }\n }, [previewUrl]);\n\n return (\n \n {previewUrl ? (\n \n ) : (\n \n )}\n \n );\n};\n\nexport default PlayerPreview;\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"style-module_KIZmb\",\"title\":\"style-module_2XFhk\",\"goToCloudButton\":\"style-module_3cCF4\",\"logo\":\"style-module_3x6sy\"};","import { useTranslation } from 'react-i18next';\nimport PlayerLogo from '../PlayerLogo';\nimport style from './style.module.styl';\n\nconst PlayerUnpublished = () => {\n const { t } = useTranslation();\n\n return (\n
\n
\n \n
\n

{t('Missing object')}

\n \n {t('Go to Artec Cloud')}\n \n
\n );\n};\n\nexport default PlayerUnpublished;\n","import { makeRequest } from '_components/EmbedPlayer/Player/api/base';\nimport { IEmbedSharingData } from '_data/api/embedPlayerSettings';\n\nexport const getEmbeddedModelData = (token: string): Promise =>\n makeRequest<{ embedded_sharing: IEmbedSharingData }>({\n url: `embedded_sharings/${token}`,\n method: 'GET',\n }).then(({ embedded_sharing }) => embedded_sharing);\n","// extracted by mini-css-extract-plugin\nexport default {\"embedPlayerWrapper\":\"style-module_1V-M9\",\"transparentPlayerFullscreen\":\"style-module_2vNDM\",\"scene\":\"style-module_YZEMX\",\"playerLogo\":\"style-module_36ONz\",\"controls\":\"style-module_1vCa3\",\"modelProgressLoader\":\"style-module_1KY68\"};","import cl from 'classnames';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport WP from 'webstudio/src/player/facade';\nimport CompareModeHeaders from '_components/EmbedPlayer/CompareHeaders';\nimport CompareSplit from '_components/EmbedPlayer/CompareSplit';\nimport { getContrastRation } from '_components/EmbedPlayer/helpers';\nimport FadeOutWrapper from '_components/shared/FadeOutWrapper';\nimport { IEmbedSharingData } from '_data/api/embedPlayerSettings';\nimport { Pixel, RGB } from '_data/types/base';\nimport { EShareProjectRole } from '_data/types/share';\nimport { useCookie } from '_helpers/hooks/useCookie';\nimport useFullScreen from '_helpers/hooks/useFullScreen';\nimport { hexToRgb } from '_helpers/methods';\nimport { isNonNullable, isNullable } from '_helpers/nullable';\nimport { addPointerEventsForEmbedPlayer } from '_helpers/pointerEvents/embedPlayer';\nimport ProgressCircular from '_shared/ProgressCircular';\nimport { IEmbeddedObjectsSettings, IProgress } from '../PlayerCongifurationPanel/types';\nimport PlayButton from './PlayButton';\nimport PlayerControls from './PlayerControls';\nimport PlayerInteractionHelp from './PlayerInteractionHelp';\nimport MainPlayerLoader from './PlayerLoader';\nimport PlayerLogo from './PlayerLogo';\nimport PlayerPreview from './PlayerPreview';\nimport PlayerUnpublished from './PlayerUnpublished';\nimport { getEmbeddedModelData } from './api';\nimport { createEmbedPlayerAssetsFullPath } from './helpers';\nimport style from './style.module.styl';\n\nenum UIStep {\n SETTINGS_LOADING,\n PREVIEW,\n SCENE_INIT,\n PLAYER_READY,\n MODEL_UNPUBLISHED,\n}\n\nconst getTokenFromLocation = (): string | null => {\n const searchParams = new URLSearchParams(window.location.search);\n\n return searchParams.get('uuid');\n};\n\nconst setObjectsSettings = (objectsSettings: IEmbeddedObjectsSettings): void => {\n const [firstObjectSettings, secondObjectSettings] = objectsSettings;\n\n WP.setRenderMode({ mode: firstObjectSettings.renderMode, anotherMode: secondObjectSettings?.renderMode });\n WP.setColorMode({\n mode: firstObjectSettings.texture ? WP.CM_TEXTURE : WP.CM_SCAN_COLOR,\n anotherMode: isNonNullable(secondObjectSettings)\n ? secondObjectSettings.texture\n ? WP.CM_TEXTURE\n : WP.CM_SCAN_COLOR\n : undefined,\n });\n};\n\nconst EmbedPlayer = () => {\n const [playerData, setPlayerData] = useState(null);\n const [uiState, setUiState] = useState(UIStep.SETTINGS_LOADING);\n const [initLoadingProgress, setInitLoadingProgress] = useState(0);\n const [modelLoadingProgress, setModelLoadingProgress] = useState(0);\n const [showPreviewBackground, setShowPreviewBackground] = useState(false);\n const [showMainLoader, setShowMainLoader] = useState(false);\n const [splitPosition, setSplitPosition] = useState(null);\n const [isSplitDragging, setIsSplitDragging] = useState(false);\n\n const [hideInteractionHelp, updateHideInteractionHelp] = useCookie('wp_inter');\n const { nodeToFullscreenRef, isFullScreenAvailable, isInFullScreen, toggleFullScreen } = useFullScreen();\n\n const canvasRef = useRef(null);\n const interactionPerformedRef = useRef(false);\n const splitElementWidthRef = useRef(null);\n const afterFullScreenToggleRef = useRef(false);\n\n const isPlayerTransparent = playerData?.scene_settings.background === 'transparent';\n const modelIsLoading = Boolean(modelLoadingProgress && uiState === UIStep.SCENE_INIT);\n const isLodUnavailable = initLoadingProgress !== 100 && modelLoadingProgress > 0;\n const showGeometryLoader =\n !isLodUnavailable && modelLoadingProgress > 0 && modelLoadingProgress < 100 && !showMainLoader;\n const showPlayButton = uiState === UIStep.PREVIEW;\n const showInteractionHelp = !hideInteractionHelp && uiState === UIStep.PLAYER_READY;\n const showControls = uiState !== UIStep.PREVIEW;\n const compareModeEnabled = playerData?.objects_settings.length === 2;\n\n const onUserInteraction = useCallback(() => {\n if (!interactionPerformedRef.current) {\n updateHideInteractionHelp('true');\n interactionPerformedRef.current = true;\n }\n }, [updateHideInteractionHelp]);\n\n const addWPEvents = (): void => {\n if (!playerData) return;\n\n WP.on({\n event: 'loadingProgress',\n callback: (loadingProgressState: { [object_id: string]: IProgress }) => {\n const { initProgresses, geometryProgresses } = playerData.shared_objects.reduce<{\n initProgresses: number[];\n geometryProgresses: number[];\n }>(\n (acc, object) => {\n const loadingProgressObject = loadingProgressState[object.id];\n\n if (loadingProgressObject) {\n const initProgress = loadingProgressObject['1'];\n const geometryProgress = loadingProgressObject['0'];\n\n if (isNonNullable(initProgress)) {\n acc.initProgresses.push(initProgress);\n }\n\n if (isNonNullable(geometryProgress)) {\n acc.geometryProgresses.push(geometryProgress);\n }\n }\n\n return acc;\n },\n {\n initProgresses: [],\n geometryProgresses: [],\n }\n );\n\n if (geometryProgresses.length > 0) {\n setModelLoadingProgress(Math.min(...geometryProgresses));\n } else if (initProgresses.length > 0) {\n setInitLoadingProgress(Math.min(...initProgresses));\n }\n },\n });\n };\n\n const setSplitElementWidth = useCallback((width: Pixel): void => {\n splitElementWidthRef.current = width;\n }, []);\n\n const setCompareSplitPosition = useCallback((position: Pixel) => {\n if (isNullable(splitElementWidthRef.current) || !canvasRef.current) return;\n\n const splitHalfWidth = splitElementWidthRef.current / 2;\n\n if (splitHalfWidth > position || canvasRef.current.clientWidth - splitHalfWidth < position) return;\n\n WP.setCompareSplitPosition({ x: position });\n setSplitPosition(position);\n }, []);\n\n const resetCompareSplitPosition = useCallback(() => {\n if (!canvasRef.current) return;\n\n setCompareSplitPosition(Math.round(canvasRef.current.clientWidth / 2));\n }, [setCompareSplitPosition]);\n\n const initScene = useCallback(\n (canvas: HTMLCanvasElement, sjsonPath: string): void => {\n if (!playerData) return;\n\n const { objects_settings, scene_settings, shared_objects } = playerData;\n\n const isBackgroundTransparent = scene_settings.background === 'transparent';\n const [firstSharedObject, secondSharedObject] = shared_objects;\n\n WP.init({\n canvas,\n transparentCanvas: isBackgroundTransparent,\n })\n .then(() => {\n if (!isBackgroundTransparent) {\n const [r, g, b] = hexToRgb(scene_settings.background);\n WP.setBackgroundColor({ color: { r, g, b } });\n }\n\n setObjectsSettings(objects_settings);\n\n if (compareModeEnabled) {\n const position = canvas.clientWidth / 2;\n\n WP.setCompareSplitPosition({ x: position });\n setSplitPosition(position);\n }\n\n const getAnotherObjectId = (): string | undefined => {\n if (!compareModeEnabled) {\n return undefined;\n }\n\n // fallback here because it can be the same object\n return secondSharedObject?.id ?? firstSharedObject.id;\n };\n\n return WP.updateProject({\n path: sjsonPath,\n objectID: firstSharedObject.id,\n anotherObjectID: getAnotherObjectId(),\n cameraState: scene_settings.cameraState,\n });\n })\n .catch(e => {\n console.error(`init interrupted: ${e.message}`);\n });\n },\n [compareModeEnabled, playerData]\n );\n\n const initPlayer = () => {\n if (!canvasRef.current || !playerData) return;\n\n addWPEvents();\n addPointerEventsForEmbedPlayer(canvasRef.current, onUserInteraction);\n\n setUiState(UIStep.SCENE_INIT);\n setShowMainLoader(true);\n\n initScene(canvasRef.current, createEmbedPlayerAssetsFullPath(playerData.assets_path, playerData.project_base));\n };\n\n const handleLoadingFinish = useCallback(() => {\n setUiState(UIStep.PLAYER_READY);\n setShowMainLoader(false);\n setShowPreviewBackground(false);\n WP.cameraDefaultAnimation();\n }, []);\n\n const toggleTexture = (checked: boolean): void => {\n if (!playerData) return;\n\n const [firstObjectSettings, secondObjectSettings] = playerData.objects_settings;\n\n if (checked) {\n WP.setColorMode({\n mode: WP.CM_SCAN_COLOR,\n anotherMode: isNonNullable(secondObjectSettings) ? WP.CM_SCAN_COLOR : undefined,\n });\n } else {\n WP.setColorMode({\n mode: isNonNullable(firstObjectSettings.texture) ? WP.CM_TEXTURE : WP.CM_SCAN_COLOR,\n anotherMode: isNonNullable(secondObjectSettings)\n ? secondObjectSettings.texture\n ? WP.CM_TEXTURE\n : WP.CM_SCAN_COLOR\n : undefined,\n });\n }\n };\n\n useEffect(() => {\n if (uiState === UIStep.PREVIEW) {\n setShowPreviewBackground(true);\n }\n }, [uiState]);\n\n useEffect(() => {\n const token = getTokenFromLocation();\n\n if (!token) return;\n\n getEmbeddedModelData(token)\n .then(data => {\n setPlayerData(data);\n setUiState(UIStep.PREVIEW);\n })\n .catch((error: { message: Error['message']; stack: Error['stack']; cause: Response }) => {\n if (error?.cause?.status === 404) {\n setUiState(UIStep.MODEL_UNPUBLISHED);\n }\n });\n }, []);\n\n useEffect(() => {\n if (!isFullScreenAvailable || !afterFullScreenToggleRef.current) return;\n\n afterFullScreenToggleRef.current = false;\n\n resetCompareSplitPosition();\n }, [isFullScreenAvailable, isInFullScreen, resetCompareSplitPosition]);\n\n if (uiState === UIStep.MODEL_UNPUBLISHED) {\n return ;\n }\n\n if (uiState === UIStep.SETTINGS_LOADING || !playerData) {\n return null;\n }\n\n const shouldUseLightTheme =\n isPlayerTransparent || getContrastRation(hexToRgb(playerData.scene_settings.background) as RGB) > 2;\n const themeMainColor = shouldUseLightTheme ? '#fff' : '#3A3B3D';\n const textureSwitchAvailable =\n (uiState === UIStep.PLAYER_READY || modelIsLoading) &&\n playerData.objects_settings.some(settings => isNonNullable(settings.texture)) &&\n playerData.display_settings.textureSwitch;\n const showHeaders =\n (uiState === UIStep.PLAYER_READY || modelIsLoading) &&\n compareModeEnabled &&\n playerData.objects_settings.some(settings => settings.header);\n\n return (\n \n \n {showGeometryLoader && (\n \n )}\n {showMainLoader && (\n \n )}\n {showPreviewBackground && (\n \n )}\n {showPlayButton && (\n \n )}\n {showInteractionHelp && (\n \n )}\n {showControls && (\n
\n \n
\n )}\n {showHeaders && (\n
\n
\n
\n \n {\n setIsNavigationHelpOpen(prevIsNavigationHelpOpen => !prevIsNavigationHelpOpen);\n }}\n className={style.control}\n type='button'\n >\n \n \n \n {isNavigationHelpOpen && (\n {\n setIsNavigationHelpOpen(false);\n }}\n />\n )}\n
\n {settingsControlShown && (\n
\n
\n );\n};\n\nexport default PlayerControls;\n","// extracted by mini-css-extract-plugin\nexport default {\"helpWrapper\":\"style-module_Ws7hu\",\"help\":\"style-module_3Khw6\",\"pointerHelp\":\"style-module_2BOYC\",\"icon\":\"style-module_nqnjN\",\"iconShadow\":\"style-module_MM5E6\",\"up\":\"style-module_1hckp\",\"cursorMouse\":\"style-module_UHEcT\",\"cursorHand\":\"style-module_332w-\",\"left\":\"style-module_1yckz\",\"right\":\"style-module_3ds2i\",\"text\":\"style-module_320d8\",\"textShadow\":\"style-module_JLw8w\"};","import cl from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport { isMobile } from '../helpers';\nimport style from './style.module.styl';\n\nconst MOUSE_TEXT = 'Click and drag to rotate';\nconst FINGER_TEXT = 'Touch and drag to rotate';\n\ninterface IProps {\n color: '#fff' | '#3A3B3D';\n isPlayerTransparent: boolean;\n}\n\nconst PlayerInteractionHelp = ({ color, isPlayerTransparent }: IProps) => {\n const { t } = useTranslation();\n\n return (\n
\n
\n \n \n \n \n \n \n \n {isMobile ? (\n \n \n \n ) : (\n \n \n \n )}\n \n \n \n
\n \n {t(isMobile ? FINGER_TEXT : MOUSE_TEXT)}\n \n
\n